Re: [PATCH] Add pretty formatting to pg_get_triggerdef
| От | Philip Alger |
|---|---|
| Тема | Re: [PATCH] Add pretty formatting to pg_get_triggerdef |
| Дата | |
| Msg-id | CAPXBC8+m3EcU2Nu6U+hEHFiS6RyvK1RNevBTuqX+EOxjs8nV5w@mail.gmail.com обсуждение исходный текст |
| Ответ на | Re: [PATCH] Add pretty formatting to pg_get_triggerdef (Chao Li <li.evan.chao@gmail.com>) |
| Список | pgsql-hackers |
Hi Chao,
+/*
+ * pg_get_triggerdef_compact
+ * Returns trigger definition in a compact, single-line format without
+ * schema qualification designed for the psql \d command.
+ */
+Datum
+pg_get_triggerdef_compact(PG_FUNCTION_ARGS)
+{
+ Oid trigid = PG_GETARG_OID(0);
+ char *res;
+
+ res = pg_get_triggerdef_worker(trigid, PRETTYFLAG_SCHEMA);
```
I think this is a mis-use of PRETTYFLAG_SCHEMA that is for printing schema-qualified names but omitting schema.
Yes, this is to omit the schema because the functions is used to print out the triggers when using \d in psql, The current practice isn't to print out a schema for the table/view/etc.
2
```
+ if (prettyFlags & PRETTYFLAG_INDENT)
+ appendStringInfoString(&buf, "\n ");
```
We should not hardcode 4 white-spaces, instead, we should use the const PRETTYINDENT_STD. Did you ever consider using appendContextKeyword()? Checking for an existing usage:
```
Thanks for pointing this out. I refactored the code using appendContextKeyword() and added a few tests as well in v2 (attached).
3 Looks like you forgot to update pg_get_triggerdef(), when it calls pg_get_triggerdef_worker(tirgid, false), the second parameter “false” should be updated to an int flag.
I fixed this to set to 0. However, false is defined as 0 in stdbool.h
#define false 0
Best,
Phil Alger
Вложения
В списке pgsql-hackers по дате отправления: