As discussed on several occasions previously, the new anonymous
Bruce Momjian <bruce@momjian.us>
As discussed on several occasions previously, the new anonymous
composite type capability makes it possible to create a system view
based on a table function in a way that is hopefully palatable to
everyone. The attached patch takes advantage of this, moving
show_all_settings() from contrib/tablefunc into the backend (renamed
all_settings(). It is defined as a builtin returning type RECORD. During
initdb a system view is created to expose the same information presently
available through SHOW ALL. For example:
test=# select * from pg_settings where name like '%debug%';
name | setting
-----------------------+---------
debug_assertions | on
debug_pretty_print | off
debug_print_parse | off
debug_print_plan | off
debug_print_query | off
debug_print_rewritten | off
wal_debug | 0
(7 rows)
Additionally during initdb two rules are created which make it possible
to change settings by updating the system view -- a "virtual table" as
Tom put it. Here's an example:
Joe Conway
Files
| Path | Change | +/− |
|---|---|---|
| contrib/tablefunc/README.tablefunc | modified | +98 −41 |
| contrib/tablefunc/tablefunc.c | modified | +128 −161 |
| contrib/tablefunc/tablefunc.h | modified | +0 −1 |
| contrib/tablefunc/tablefunc.sql.in | modified | +3 −9 |
| contrib/tablefunc/tablefunc-test.sql | modified | +3 −1 |
| src/backend/utils/misc/guc.c | modified | +113 −1 |
| src/bin/initdb/initdb.sh | modified | +16 −1 |
| src/include/catalog/pg_proc.h | modified | +3 −1 |
| src/include/utils/builtins.h | modified | +2 −1 |
| src/test/regress/expected/rules.out | modified | +5 −2 |