public inbox for [email protected]help / color / mirror / Atom feed
[PATCH 1/2] pg_settings_get_flags(): add DEFAULT_COMPILE and DEFAULT_INITDB .. 4+ messages / 2 participants [nested] [flat]
* [PATCH 1/2] pg_settings_get_flags(): add DEFAULT_COMPILE and DEFAULT_INITDB .. @ 2022-07-19 13:31 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 4+ messages in thread From: Justin Pryzby @ 2022-07-19 13:31 UTC (permalink / raw) for settings which vary by ./configure or platform or initdb Note that this is independent from PGC_S_DYNAMIC_DEFAULT. --- doc/src/sgml/func.sgml | 15 ++++++ src/backend/utils/misc/guc_funcs.c | 6 ++- src/backend/utils/misc/guc_tables.c | 76 ++++++++++++++++++----------- src/include/utils/guc.h | 2 + 4 files changed, 69 insertions(+), 30 deletions(-) diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml index e13fce6f6b1..17069d2249e 100644 --- a/doc/src/sgml/func.sgml +++ b/doc/src/sgml/func.sgml @@ -24945,6 +24945,21 @@ SELECT collation for ('foo' COLLATE "de_DE"); <row><entry>Flag</entry><entry>Description</entry></row> </thead> <tbody> + + <row> + <entry><literal>DEFAULT_COMPILE</literal></entry> + <entry>Parameters with this flag have default values which vary by + platform, or compile-time options. + </entry> + </row> + + <row> + <entry><literal>DEFAULT_INITDB</literal></entry> + <entry>Parameters with this flag have default values which are + determined dynamically during initdb. + </entry> + </row> + <row> <entry><literal>EXPLAIN</literal></entry> <entry>Parameters with this flag are included in diff --git a/src/backend/utils/misc/guc_funcs.c b/src/backend/utils/misc/guc_funcs.c index 52c361e9755..183943c1973 100644 --- a/src/backend/utils/misc/guc_funcs.c +++ b/src/backend/utils/misc/guc_funcs.c @@ -551,7 +551,7 @@ ShowAllGUCConfig(DestReceiver *dest) Datum pg_settings_get_flags(PG_FUNCTION_ARGS) { -#define MAX_GUC_FLAGS 6 +#define MAX_GUC_FLAGS 8 char *varname = TextDatumGetCString(PG_GETARG_DATUM(0)); struct config_generic *record; int cnt = 0; @@ -564,6 +564,10 @@ pg_settings_get_flags(PG_FUNCTION_ARGS) if (record == NULL) PG_RETURN_NULL(); + if (record->flags & GUC_DEFAULT_COMPILE) + flags[cnt++] = CStringGetTextDatum("DEFAULT_COMPILE"); + if (record->flags & GUC_DEFAULT_INITDB) + flags[cnt++] = CStringGetTextDatum("DEFAULT_INITDB"); if (record->flags & GUC_EXPLAIN) flags[cnt++] = CStringGetTextDatum("EXPLAIN"); if (record->flags & GUC_NO_RESET) diff --git a/src/backend/utils/misc/guc_tables.c b/src/backend/utils/misc/guc_tables.c index 2f42cebaf62..94b0aa24a98 100644 --- a/src/backend/utils/misc/guc_tables.c +++ b/src/backend/utils/misc/guc_tables.c @@ -1233,7 +1233,7 @@ struct config_bool ConfigureNamesBool[] = {"debug_assertions", PGC_INTERNAL, PRESET_OPTIONS, gettext_noop("Shows whether the running server has assertion checks enabled."), NULL, - GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE + GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE | GUC_DEFAULT_COMPILE }, &assert_enabled, DEFAULT_ASSERT_ENABLED, @@ -1425,7 +1425,8 @@ struct config_bool ConfigureNamesBool[] = { {"update_process_title", PGC_SUSET, PROCESS_TITLE, gettext_noop("Updates the process title to show the active SQL command."), - gettext_noop("Enables updating of the process title every time a new SQL command is received by the server.") + gettext_noop("Enables updating of the process title every time a new SQL command is received by the server."), + GUC_DEFAULT_COMPILE }, &update_process_title, DEFAULT_UPDATE_PROCESS_TITLE, @@ -2180,7 +2181,8 @@ struct config_int ConfigureNamesInt[] = { {"max_connections", PGC_POSTMASTER, CONN_AUTH_SETTINGS, gettext_noop("Sets the maximum number of concurrent connections."), - NULL + NULL, + GUC_DEFAULT_INITDB }, &MaxConnections, 100, 1, MAX_BACKENDS, @@ -2228,7 +2230,7 @@ struct config_int ConfigureNamesInt[] = {"shared_buffers", PGC_POSTMASTER, RESOURCES_MEM, gettext_noop("Sets the number of shared memory buffers used by the server."), NULL, - GUC_UNIT_BLOCKS + GUC_UNIT_BLOCKS | GUC_DEFAULT_INITDB }, &NBuffers, 16384, 16, INT_MAX / 2, @@ -2282,7 +2284,8 @@ struct config_int ConfigureNamesInt[] = { {"port", PGC_POSTMASTER, CONN_AUTH_SETTINGS, gettext_noop("Sets the TCP port the server listens on."), - NULL + NULL, + GUC_DEFAULT_COMPILE }, &PostPortNumber, DEF_PGPORT, 1, 65535, @@ -2311,7 +2314,8 @@ struct config_int ConfigureNamesInt[] = "to be a numeric mode specification in the form " "accepted by the chmod and umask system calls. " "(To use the customary octal format the number must " - "start with a 0 (zero).)") + "start with a 0 (zero).)"), + GUC_DEFAULT_INITDB }, &Log_file_mode, 0600, 0000, 0777, @@ -2744,7 +2748,7 @@ struct config_int ConfigureNamesInt[] = {"checkpoint_flush_after", PGC_SIGHUP, WAL_CHECKPOINTS, gettext_noop("Number of pages after which previously performed writes are flushed to disk."), NULL, - GUC_UNIT_BLOCKS + GUC_UNIT_BLOCKS | GUC_DEFAULT_COMPILE }, &checkpoint_flush_after, DEFAULT_CHECKPOINT_FLUSH_AFTER, 0, WRITEBACK_MAX_PENDING_FLUSHES, @@ -2962,7 +2966,7 @@ struct config_int ConfigureNamesInt[] = {"bgwriter_flush_after", PGC_SIGHUP, RESOURCES_BGWRITER, gettext_noop("Number of pages after which previously performed writes are flushed to disk."), NULL, - GUC_UNIT_BLOCKS + GUC_UNIT_BLOCKS | GUC_DEFAULT_COMPILE }, &bgwriter_flush_after, DEFAULT_BGWRITER_FLUSH_AFTER, 0, WRITEBACK_MAX_PENDING_FLUSHES, @@ -2975,7 +2979,7 @@ struct config_int ConfigureNamesInt[] = RESOURCES_ASYNCHRONOUS, gettext_noop("Number of simultaneous requests that can be handled efficiently by the disk subsystem."), NULL, - GUC_EXPLAIN + GUC_EXPLAIN | GUC_DEFAULT_COMPILE }, &effective_io_concurrency, DEFAULT_EFFECTIVE_IO_CONCURRENCY, @@ -2989,7 +2993,7 @@ struct config_int ConfigureNamesInt[] = RESOURCES_ASYNCHRONOUS, gettext_noop("A variant of effective_io_concurrency that is used for maintenance work."), NULL, - GUC_EXPLAIN + GUC_EXPLAIN | GUC_DEFAULT_COMPILE }, &maintenance_io_concurrency, DEFAULT_MAINTENANCE_IO_CONCURRENCY, @@ -3002,7 +3006,7 @@ struct config_int ConfigureNamesInt[] = {"backend_flush_after", PGC_USERSET, RESOURCES_ASYNCHRONOUS, gettext_noop("Number of pages after which previously performed writes are flushed to disk."), NULL, - GUC_UNIT_BLOCKS + GUC_UNIT_BLOCKS | GUC_DEFAULT_COMPILE }, &backend_flush_after, DEFAULT_BACKEND_FLUSH_AFTER, 0, WRITEBACK_MAX_PENDING_FLUSHES, @@ -3457,7 +3461,7 @@ struct config_int ConfigureNamesInt[] = {"debug_discard_caches", PGC_SUSET, DEVELOPER_OPTIONS, gettext_noop("Aggressively flush system caches for debugging purposes."), NULL, - GUC_NOT_IN_SAMPLE + GUC_NOT_IN_SAMPLE | GUC_DEFAULT_COMPILE }, &debug_discard_caches, #ifdef DISCARD_CACHES_ENABLED @@ -3951,7 +3955,8 @@ struct config_string ConfigureNamesString[] = { {"log_timezone", PGC_SIGHUP, LOGGING_WHAT, gettext_noop("Sets the time zone to use in log messages."), - NULL + NULL, + GUC_DEFAULT_INITDB }, &log_timezone_string, "GMT", @@ -3963,7 +3968,7 @@ struct config_string ConfigureNamesString[] = gettext_noop("Sets the display format for date and time values."), gettext_noop("Also controls interpretation of ambiguous " "date inputs."), - GUC_LIST_INPUT | GUC_REPORT + GUC_LIST_INPUT | GUC_REPORT | GUC_DEFAULT_INITDB }, &datestyle_string, "ISO, MDY", @@ -4077,7 +4082,8 @@ struct config_string ConfigureNamesString[] = { {"lc_messages", PGC_SUSET, CLIENT_CONN_LOCALE, gettext_noop("Sets the language in which messages are displayed."), - NULL + NULL, + GUC_DEFAULT_INITDB }, &locale_messages, "", @@ -4087,7 +4093,8 @@ struct config_string ConfigureNamesString[] = { {"lc_monetary", PGC_USERSET, CLIENT_CONN_LOCALE, gettext_noop("Sets the locale for formatting monetary amounts."), - NULL + NULL, + GUC_DEFAULT_INITDB }, &locale_monetary, "C", @@ -4097,7 +4104,8 @@ struct config_string ConfigureNamesString[] = { {"lc_numeric", PGC_USERSET, CLIENT_CONN_LOCALE, gettext_noop("Sets the locale for formatting numbers."), - NULL + NULL, + GUC_DEFAULT_INITDB }, &locale_numeric, "C", @@ -4107,7 +4115,8 @@ struct config_string ConfigureNamesString[] = { {"lc_time", PGC_USERSET, CLIENT_CONN_LOCALE, gettext_noop("Sets the locale for formatting date and time values."), - NULL + NULL, + GUC_DEFAULT_INITDB }, &locale_time, "C", @@ -4266,7 +4275,8 @@ struct config_string ConfigureNamesString[] = {"TimeZone", PGC_USERSET, CLIENT_CONN_LOCALE, gettext_noop("Sets the time zone for displaying and interpreting time stamps."), NULL, - GUC_REPORT + GUC_REPORT | GUC_DEFAULT_INITDB + }, &timezone_string, "GMT", @@ -4297,7 +4307,7 @@ struct config_string ConfigureNamesString[] = {"unix_socket_directories", PGC_POSTMASTER, CONN_AUTH_SETTINGS, gettext_noop("Sets the directories where Unix-domain sockets will be created."), NULL, - GUC_LIST_INPUT | GUC_LIST_QUOTE | GUC_SUPERUSER_ONLY + GUC_LIST_INPUT | GUC_LIST_QUOTE | GUC_SUPERUSER_ONLY | GUC_DEFAULT_COMPILE }, &Unix_socket_directories, DEFAULT_PGSOCKET_DIR, @@ -4378,7 +4388,7 @@ struct config_string ConfigureNamesString[] = {"ssl_library", PGC_INTERNAL, PRESET_OPTIONS, gettext_noop("Shows the name of the SSL library."), NULL, - GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE + GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE | GUC_DEFAULT_COMPILE }, &ssl_library, #ifdef USE_SSL @@ -4453,7 +4463,9 @@ struct config_string ConfigureNamesString[] = { {"default_text_search_config", PGC_USERSET, CLIENT_CONN_LOCALE, gettext_noop("Sets default text search configuration."), - NULL + NULL, + GUC_DEFAULT_INITDB + }, &TSCurrentConfig, "pg_catalog.simple", @@ -4464,7 +4476,7 @@ struct config_string ConfigureNamesString[] = {"ssl_ciphers", PGC_SIGHUP, CONN_AUTH_SSL, gettext_noop("Sets the list of allowed SSL ciphers."), NULL, - GUC_SUPERUSER_ONLY + GUC_SUPERUSER_ONLY | GUC_DEFAULT_COMPILE }, &SSLCipherSuites, #ifdef USE_OPENSSL @@ -4479,7 +4491,7 @@ struct config_string ConfigureNamesString[] = {"ssl_ecdh_curve", PGC_SIGHUP, CONN_AUTH_SSL, gettext_noop("Sets the curve to use for ECDH."), NULL, - GUC_SUPERUSER_ONLY + GUC_SUPERUSER_ONLY | GUC_DEFAULT_COMPILE }, &SSLECDHCurve, #ifdef USE_SSL @@ -4738,7 +4750,8 @@ struct config_enum ConfigureNamesEnum[] = { {"syslog_facility", PGC_SIGHUP, LOGGING_WHERE, gettext_noop("Sets the syslog \"facility\" to be used when syslog enabled."), - NULL + NULL, + GUC_DEFAULT_COMPILE }, &syslog_facility, DEFAULT_SYSLOG_FACILITY, @@ -4847,7 +4860,9 @@ struct config_enum ConfigureNamesEnum[] = { {"dynamic_shared_memory_type", PGC_POSTMASTER, RESOURCES_MEM, gettext_noop("Selects the dynamic shared memory implementation used."), - NULL + NULL, + /* platform-specific default, which is also overriden during initdb */ + GUC_DEFAULT_COMPILE | GUC_DEFAULT_INITDB }, &dynamic_shared_memory_type, DEFAULT_DYNAMIC_SHARED_MEMORY_TYPE, dynamic_shared_memory_options, @@ -4857,7 +4872,8 @@ struct config_enum ConfigureNamesEnum[] = { {"shared_memory_type", PGC_POSTMASTER, RESOURCES_MEM, gettext_noop("Selects the shared memory implementation used for the main shared memory region."), - NULL + NULL, + GUC_DEFAULT_COMPILE }, &shared_memory_type, DEFAULT_SHARED_MEMORY_TYPE, shared_memory_options, @@ -4867,7 +4883,8 @@ struct config_enum ConfigureNamesEnum[] = { {"wal_sync_method", PGC_SIGHUP, WAL_SETTINGS, gettext_noop("Selects the method used for forcing WAL updates to disk."), - NULL + NULL, + GUC_DEFAULT_COMPILE }, &sync_method, DEFAULT_SYNC_METHOD, sync_method_options, @@ -4931,7 +4948,8 @@ struct config_enum ConfigureNamesEnum[] = { {"password_encryption", PGC_USERSET, CONN_AUTH_AUTH, gettext_noop("Chooses the algorithm for encrypting passwords."), - NULL + NULL, + GUC_DEFAULT_INITDB }, &Password_encryption, PASSWORD_TYPE_SCRAM_SHA_256, password_encryption_options, diff --git a/src/include/utils/guc.h b/src/include/utils/guc.h index ba89d013e64..2b98595b3ea 100644 --- a/src/include/utils/guc.h +++ b/src/include/utils/guc.h @@ -221,6 +221,8 @@ typedef enum #define GUC_DISALLOW_IN_AUTO_FILE \ 0x002000 /* can't set in PG_AUTOCONF_FILENAME */ #define GUC_RUNTIME_COMPUTED 0x004000 /* delay processing in 'postgres -C' */ +#define GUC_DEFAULT_COMPILE 0x008000 /* default is determined at compile time */ +#define GUC_DEFAULT_INITDB 0x010000 /* default is determined at during initdb */ #define GUC_UNIT_KB 0x01000000 /* value is in kilobytes */ #define GUC_UNIT_BLOCKS 0x02000000 /* value is in blocks */ -- 2.34.1 --8KqcO45QTmavqrvZ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="0002-WIP-test-GUC-default-values-in-postgresql.conf.sampl.patch" ^ permalink raw reply [nested|flat] 4+ messages in thread
* [PATCH 1/2] pg_settings_get_flags(): add DEFAULT_COMPILE and DEFAULT_INITDB .. @ 2022-07-19 13:31 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 4+ messages in thread From: Justin Pryzby @ 2022-07-19 13:31 UTC (permalink / raw) for settings which vary by ./configure or platform or initdb Note that this is independent from PGC_S_DYNAMIC_DEFAULT. --- doc/src/sgml/func.sgml | 15 ++++++ src/backend/utils/misc/guc_funcs.c | 6 ++- src/backend/utils/misc/guc_tables.c | 76 ++++++++++++++++++----------- src/include/utils/guc.h | 2 + 4 files changed, 69 insertions(+), 30 deletions(-) diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml index d599b243b10..66451a6c759 100644 --- a/doc/src/sgml/func.sgml +++ b/doc/src/sgml/func.sgml @@ -24825,6 +24825,21 @@ SELECT collation for ('foo' COLLATE "de_DE"); <row><entry>Flag</entry><entry>Description</entry></row> </thead> <tbody> + + <row> + <entry><literal>DEFAULT_COMPILE</literal></entry> + <entry>Parameters with this flag have default values which vary by + platform, or compile-time options. + </entry> + </row> + + <row> + <entry><literal>DEFAULT_INITDB</literal></entry> + <entry>Parameters with this flag have default values which are + determined dynamically during initdb. + </entry> + </row> + <row> <entry><literal>EXPLAIN</literal></entry> <entry>Parameters with this flag are included in diff --git a/src/backend/utils/misc/guc_funcs.c b/src/backend/utils/misc/guc_funcs.c index 2ce1e53ec54..70fdce3868d 100644 --- a/src/backend/utils/misc/guc_funcs.c +++ b/src/backend/utils/misc/guc_funcs.c @@ -577,7 +577,7 @@ ShowAllGUCConfig(DestReceiver *dest) Datum pg_settings_get_flags(PG_FUNCTION_ARGS) { -#define MAX_GUC_FLAGS 6 +#define MAX_GUC_FLAGS 8 char *varname = TextDatumGetCString(PG_GETARG_DATUM(0)); struct config_generic *record; int cnt = 0; @@ -590,6 +590,10 @@ pg_settings_get_flags(PG_FUNCTION_ARGS) if (record == NULL) PG_RETURN_NULL(); + if (record->flags & GUC_DEFAULT_COMPILE) + flags[cnt++] = CStringGetTextDatum("DEFAULT_COMPILE"); + if (record->flags & GUC_DEFAULT_INITDB) + flags[cnt++] = CStringGetTextDatum("DEFAULT_INITDB"); if (record->flags & GUC_EXPLAIN) flags[cnt++] = CStringGetTextDatum("EXPLAIN"); if (record->flags & GUC_NO_RESET) diff --git a/src/backend/utils/misc/guc_tables.c b/src/backend/utils/misc/guc_tables.c index 2c3061b7359..0d6c782a1df 100644 --- a/src/backend/utils/misc/guc_tables.c +++ b/src/backend/utils/misc/guc_tables.c @@ -1233,7 +1233,7 @@ struct config_bool ConfigureNamesBool[] = {"debug_assertions", PGC_INTERNAL, PRESET_OPTIONS, gettext_noop("Shows whether the running server has assertion checks enabled."), NULL, - GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE + GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE | GUC_DEFAULT_COMPILE }, &assert_enabled, DEFAULT_ASSERT_ENABLED, @@ -1425,7 +1425,8 @@ struct config_bool ConfigureNamesBool[] = { {"update_process_title", PGC_SUSET, PROCESS_TITLE, gettext_noop("Updates the process title to show the active SQL command."), - gettext_noop("Enables updating of the process title every time a new SQL command is received by the server.") + gettext_noop("Enables updating of the process title every time a new SQL command is received by the server."), + GUC_DEFAULT_COMPILE }, &update_process_title, DEFAULT_UPDATE_PROCESS_TITLE, @@ -2170,7 +2171,8 @@ struct config_int ConfigureNamesInt[] = { {"max_connections", PGC_POSTMASTER, CONN_AUTH_SETTINGS, gettext_noop("Sets the maximum number of concurrent connections."), - NULL + NULL, + GUC_DEFAULT_INITDB }, &MaxConnections, 100, 1, MAX_BACKENDS, @@ -2218,7 +2220,7 @@ struct config_int ConfigureNamesInt[] = {"shared_buffers", PGC_POSTMASTER, RESOURCES_MEM, gettext_noop("Sets the number of shared memory buffers used by the server."), NULL, - GUC_UNIT_BLOCKS + GUC_UNIT_BLOCKS | GUC_DEFAULT_INITDB }, &NBuffers, 16384, 16, INT_MAX / 2, @@ -2261,7 +2263,8 @@ struct config_int ConfigureNamesInt[] = { {"port", PGC_POSTMASTER, CONN_AUTH_SETTINGS, gettext_noop("Sets the TCP port the server listens on."), - NULL + NULL, + GUC_DEFAULT_COMPILE }, &PostPortNumber, DEF_PGPORT, 1, 65535, @@ -2290,7 +2293,8 @@ struct config_int ConfigureNamesInt[] = "to be a numeric mode specification in the form " "accepted by the chmod and umask system calls. " "(To use the customary octal format the number must " - "start with a 0 (zero).)") + "start with a 0 (zero).)"), + GUC_DEFAULT_INITDB }, &Log_file_mode, 0600, 0000, 0777, @@ -2723,7 +2727,7 @@ struct config_int ConfigureNamesInt[] = {"checkpoint_flush_after", PGC_SIGHUP, WAL_CHECKPOINTS, gettext_noop("Number of pages after which previously performed writes are flushed to disk."), NULL, - GUC_UNIT_BLOCKS + GUC_UNIT_BLOCKS | GUC_DEFAULT_COMPILE }, &checkpoint_flush_after, DEFAULT_CHECKPOINT_FLUSH_AFTER, 0, WRITEBACK_MAX_PENDING_FLUSHES, @@ -2941,7 +2945,7 @@ struct config_int ConfigureNamesInt[] = {"bgwriter_flush_after", PGC_SIGHUP, RESOURCES_BGWRITER, gettext_noop("Number of pages after which previously performed writes are flushed to disk."), NULL, - GUC_UNIT_BLOCKS + GUC_UNIT_BLOCKS | GUC_DEFAULT_COMPILE }, &bgwriter_flush_after, DEFAULT_BGWRITER_FLUSH_AFTER, 0, WRITEBACK_MAX_PENDING_FLUSHES, @@ -2954,7 +2958,7 @@ struct config_int ConfigureNamesInt[] = RESOURCES_ASYNCHRONOUS, gettext_noop("Number of simultaneous requests that can be handled efficiently by the disk subsystem."), NULL, - GUC_EXPLAIN + GUC_EXPLAIN | GUC_DEFAULT_COMPILE }, &effective_io_concurrency, DEFAULT_EFFECTIVE_IO_CONCURRENCY, @@ -2968,7 +2972,7 @@ struct config_int ConfigureNamesInt[] = RESOURCES_ASYNCHRONOUS, gettext_noop("A variant of effective_io_concurrency that is used for maintenance work."), NULL, - GUC_EXPLAIN + GUC_EXPLAIN | GUC_DEFAULT_COMPILE }, &maintenance_io_concurrency, DEFAULT_MAINTENANCE_IO_CONCURRENCY, @@ -2981,7 +2985,7 @@ struct config_int ConfigureNamesInt[] = {"backend_flush_after", PGC_USERSET, RESOURCES_ASYNCHRONOUS, gettext_noop("Number of pages after which previously performed writes are flushed to disk."), NULL, - GUC_UNIT_BLOCKS + GUC_UNIT_BLOCKS | GUC_DEFAULT_COMPILE }, &backend_flush_after, DEFAULT_BACKEND_FLUSH_AFTER, 0, WRITEBACK_MAX_PENDING_FLUSHES, @@ -3436,7 +3440,7 @@ struct config_int ConfigureNamesInt[] = {"debug_discard_caches", PGC_SUSET, DEVELOPER_OPTIONS, gettext_noop("Aggressively flush system caches for debugging purposes."), NULL, - GUC_NOT_IN_SAMPLE + GUC_NOT_IN_SAMPLE | GUC_DEFAULT_COMPILE }, &debug_discard_caches, #ifdef DISCARD_CACHES_ENABLED @@ -3930,7 +3934,8 @@ struct config_string ConfigureNamesString[] = { {"log_timezone", PGC_SIGHUP, LOGGING_WHAT, gettext_noop("Sets the time zone to use in log messages."), - NULL + NULL, + GUC_DEFAULT_INITDB }, &log_timezone_string, "GMT", @@ -3942,7 +3947,7 @@ struct config_string ConfigureNamesString[] = gettext_noop("Sets the display format for date and time values."), gettext_noop("Also controls interpretation of ambiguous " "date inputs."), - GUC_LIST_INPUT | GUC_REPORT + GUC_LIST_INPUT | GUC_REPORT | GUC_DEFAULT_INITDB }, &datestyle_string, "ISO, MDY", @@ -4056,7 +4061,8 @@ struct config_string ConfigureNamesString[] = { {"lc_messages", PGC_SUSET, CLIENT_CONN_LOCALE, gettext_noop("Sets the language in which messages are displayed."), - NULL + NULL, + GUC_DEFAULT_INITDB }, &locale_messages, "", @@ -4066,7 +4072,8 @@ struct config_string ConfigureNamesString[] = { {"lc_monetary", PGC_USERSET, CLIENT_CONN_LOCALE, gettext_noop("Sets the locale for formatting monetary amounts."), - NULL + NULL, + GUC_DEFAULT_INITDB }, &locale_monetary, "C", @@ -4076,7 +4083,8 @@ struct config_string ConfigureNamesString[] = { {"lc_numeric", PGC_USERSET, CLIENT_CONN_LOCALE, gettext_noop("Sets the locale for formatting numbers."), - NULL + NULL, + GUC_DEFAULT_INITDB }, &locale_numeric, "C", @@ -4086,7 +4094,8 @@ struct config_string ConfigureNamesString[] = { {"lc_time", PGC_USERSET, CLIENT_CONN_LOCALE, gettext_noop("Sets the locale for formatting date and time values."), - NULL + NULL, + GUC_DEFAULT_INITDB }, &locale_time, "C", @@ -4245,7 +4254,8 @@ struct config_string ConfigureNamesString[] = {"TimeZone", PGC_USERSET, CLIENT_CONN_LOCALE, gettext_noop("Sets the time zone for displaying and interpreting time stamps."), NULL, - GUC_REPORT + GUC_REPORT | GUC_DEFAULT_INITDB + }, &timezone_string, "GMT", @@ -4276,7 +4286,7 @@ struct config_string ConfigureNamesString[] = {"unix_socket_directories", PGC_POSTMASTER, CONN_AUTH_SETTINGS, gettext_noop("Sets the directories where Unix-domain sockets will be created."), NULL, - GUC_LIST_INPUT | GUC_LIST_QUOTE | GUC_SUPERUSER_ONLY + GUC_LIST_INPUT | GUC_LIST_QUOTE | GUC_SUPERUSER_ONLY | GUC_DEFAULT_COMPILE }, &Unix_socket_directories, DEFAULT_PGSOCKET_DIR, @@ -4357,7 +4367,7 @@ struct config_string ConfigureNamesString[] = {"ssl_library", PGC_INTERNAL, PRESET_OPTIONS, gettext_noop("Shows the name of the SSL library."), NULL, - GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE + GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE | GUC_DEFAULT_COMPILE }, &ssl_library, #ifdef USE_SSL @@ -4432,7 +4442,9 @@ struct config_string ConfigureNamesString[] = { {"default_text_search_config", PGC_USERSET, CLIENT_CONN_LOCALE, gettext_noop("Sets default text search configuration."), - NULL + NULL, + GUC_DEFAULT_INITDB + }, &TSCurrentConfig, "pg_catalog.simple", @@ -4443,7 +4455,7 @@ struct config_string ConfigureNamesString[] = {"ssl_ciphers", PGC_SIGHUP, CONN_AUTH_SSL, gettext_noop("Sets the list of allowed SSL ciphers."), NULL, - GUC_SUPERUSER_ONLY + GUC_SUPERUSER_ONLY | GUC_DEFAULT_COMPILE }, &SSLCipherSuites, #ifdef USE_OPENSSL @@ -4458,7 +4470,7 @@ struct config_string ConfigureNamesString[] = {"ssl_ecdh_curve", PGC_SIGHUP, CONN_AUTH_SSL, gettext_noop("Sets the curve to use for ECDH."), NULL, - GUC_SUPERUSER_ONLY + GUC_SUPERUSER_ONLY | GUC_DEFAULT_COMPILE }, &SSLECDHCurve, #ifdef USE_SSL @@ -4717,7 +4729,8 @@ struct config_enum ConfigureNamesEnum[] = { {"syslog_facility", PGC_SIGHUP, LOGGING_WHERE, gettext_noop("Sets the syslog \"facility\" to be used when syslog enabled."), - NULL + NULL, + GUC_DEFAULT_COMPILE }, &syslog_facility, DEFAULT_SYSLOG_FACILITY, @@ -4826,7 +4839,9 @@ struct config_enum ConfigureNamesEnum[] = { {"dynamic_shared_memory_type", PGC_POSTMASTER, RESOURCES_MEM, gettext_noop("Selects the dynamic shared memory implementation used."), - NULL + NULL, + /* platform-specific default, which is also overriden during initdb */ + GUC_DEFAULT_COMPILE | GUC_DEFAULT_INITDB }, &dynamic_shared_memory_type, DEFAULT_DYNAMIC_SHARED_MEMORY_TYPE, dynamic_shared_memory_options, @@ -4836,7 +4851,8 @@ struct config_enum ConfigureNamesEnum[] = { {"shared_memory_type", PGC_POSTMASTER, RESOURCES_MEM, gettext_noop("Selects the shared memory implementation used for the main shared memory region."), - NULL + NULL, + GUC_DEFAULT_COMPILE }, &shared_memory_type, DEFAULT_SHARED_MEMORY_TYPE, shared_memory_options, @@ -4846,7 +4862,8 @@ struct config_enum ConfigureNamesEnum[] = { {"wal_sync_method", PGC_SIGHUP, WAL_SETTINGS, gettext_noop("Selects the method used for forcing WAL updates to disk."), - NULL + NULL, + GUC_DEFAULT_COMPILE }, &sync_method, DEFAULT_SYNC_METHOD, sync_method_options, @@ -4910,7 +4927,8 @@ struct config_enum ConfigureNamesEnum[] = { {"password_encryption", PGC_USERSET, CONN_AUTH_AUTH, gettext_noop("Chooses the algorithm for encrypting passwords."), - NULL + NULL, + GUC_DEFAULT_INITDB }, &Password_encryption, PASSWORD_TYPE_SCRAM_SHA_256, password_encryption_options, diff --git a/src/include/utils/guc.h b/src/include/utils/guc.h index 15c61992f06..2b17cd08fd9 100644 --- a/src/include/utils/guc.h +++ b/src/include/utils/guc.h @@ -222,6 +222,8 @@ typedef enum #define GUC_DISALLOW_IN_AUTO_FILE \ 0x002000 /* can't set in PG_AUTOCONF_FILENAME */ #define GUC_RUNTIME_COMPUTED 0x004000 /* delay processing in 'postgres -C' */ +#define GUC_DEFAULT_COMPILE 0x008000 /* default is determined at compile time */ +#define GUC_DEFAULT_INITDB 0x010000 /* default is determined at during initdb */ #define GUC_UNIT_KB 0x01000000 /* value is in kilobytes */ #define GUC_UNIT_BLOCKS 0x02000000 /* value is in blocks */ -- 2.34.1 --gwf9g/xA8/k5MLj4 Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="0002-test-GUC-default-values-in-postgresql.conf.sample.patch" ^ permalink raw reply [nested|flat] 4+ messages in thread
* [PATCH 1/2] pg_settings_get_flags(): add DEFAULT_COMPILE and DEFAULT_INITDB .. @ 2022-07-19 13:31 Justin Pryzby <[email protected]> 0 siblings, 0 replies; 4+ messages in thread From: Justin Pryzby @ 2022-07-19 13:31 UTC (permalink / raw) for settings which vary by ./configure or platform or initdb Note that this is independent from PGC_S_DYNAMIC_DEFAULT. --- doc/src/sgml/func.sgml | 15 ++++++ src/backend/utils/misc/guc_funcs.c | 6 ++- src/backend/utils/misc/guc_tables.c | 76 ++++++++++++++++++----------- src/include/utils/guc.h | 2 + 4 files changed, 69 insertions(+), 30 deletions(-) diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml index 82fba48d5f7..67c68fc9292 100644 --- a/doc/src/sgml/func.sgml +++ b/doc/src/sgml/func.sgml @@ -24377,6 +24377,21 @@ SELECT collation for ('foo' COLLATE "de_DE"); <row><entry>Flag</entry><entry>Description</entry></row> </thead> <tbody> + + <row> + <entry><literal>DEFAULT_COMPILE</literal></entry> + <entry>Parameters with this flag have default values which vary by + platform, or compile-time options. + </entry> + </row> + + <row> + <entry><literal>DEFAULT_INITDB</literal></entry> + <entry>Parameters with this flag have default values which are + determined dynamically during initdb. + </entry> + </row> + <row> <entry><literal>EXPLAIN</literal></entry> <entry>Parameters with this flag are included in diff --git a/src/backend/utils/misc/guc_funcs.c b/src/backend/utils/misc/guc_funcs.c index 108b3bd1290..2b666e8d014 100644 --- a/src/backend/utils/misc/guc_funcs.c +++ b/src/backend/utils/misc/guc_funcs.c @@ -538,7 +538,7 @@ ShowAllGUCConfig(DestReceiver *dest) Datum pg_settings_get_flags(PG_FUNCTION_ARGS) { -#define MAX_GUC_FLAGS 6 +#define MAX_GUC_FLAGS 8 char *varname = TextDatumGetCString(PG_GETARG_DATUM(0)); struct config_generic *record; int cnt = 0; @@ -551,6 +551,10 @@ pg_settings_get_flags(PG_FUNCTION_ARGS) if (record == NULL) PG_RETURN_NULL(); + if (record->flags & GUC_DEFAULT_COMPILE) + flags[cnt++] = CStringGetTextDatum("DEFAULT_COMPILE"); + if (record->flags & GUC_DEFAULT_INITDB) + flags[cnt++] = CStringGetTextDatum("DEFAULT_INITDB"); if (record->flags & GUC_EXPLAIN) flags[cnt++] = CStringGetTextDatum("EXPLAIN"); if (record->flags & GUC_NO_RESET) diff --git a/src/backend/utils/misc/guc_tables.c b/src/backend/utils/misc/guc_tables.c index e5cc4e3205a..6bd206c164a 100644 --- a/src/backend/utils/misc/guc_tables.c +++ b/src/backend/utils/misc/guc_tables.c @@ -1205,7 +1205,7 @@ struct config_bool ConfigureNamesBool[] = {"debug_assertions", PGC_INTERNAL, PRESET_OPTIONS, gettext_noop("Shows whether the running server has assertion checks enabled."), NULL, - GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE + GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE | GUC_DEFAULT_COMPILE }, &assert_enabled, DEFAULT_ASSERT_ENABLED, @@ -1377,7 +1377,8 @@ struct config_bool ConfigureNamesBool[] = { {"update_process_title", PGC_SUSET, PROCESS_TITLE, gettext_noop("Updates the process title to show the active SQL command."), - gettext_noop("Enables updating of the process title every time a new SQL command is received by the server.") + gettext_noop("Enables updating of the process title every time a new SQL command is received by the server."), + GUC_DEFAULT_COMPILE }, &update_process_title, DEFAULT_UPDATE_PROCESS_TITLE, @@ -2122,7 +2123,8 @@ struct config_int ConfigureNamesInt[] = { {"max_connections", PGC_POSTMASTER, CONN_AUTH_SETTINGS, gettext_noop("Sets the maximum number of concurrent connections."), - NULL + NULL, + GUC_DEFAULT_INITDB }, &MaxConnections, 100, 1, MAX_BACKENDS, @@ -2159,7 +2161,7 @@ struct config_int ConfigureNamesInt[] = {"shared_buffers", PGC_POSTMASTER, RESOURCES_MEM, gettext_noop("Sets the number of shared memory buffers used by the server."), NULL, - GUC_UNIT_BLOCKS + GUC_UNIT_BLOCKS | GUC_DEFAULT_INITDB }, &NBuffers, 16384, 16, INT_MAX / 2, @@ -2202,7 +2204,8 @@ struct config_int ConfigureNamesInt[] = { {"port", PGC_POSTMASTER, CONN_AUTH_SETTINGS, gettext_noop("Sets the TCP port the server listens on."), - NULL + NULL, + GUC_DEFAULT_COMPILE }, &PostPortNumber, DEF_PGPORT, 1, 65535, @@ -2231,7 +2234,8 @@ struct config_int ConfigureNamesInt[] = "to be a numeric mode specification in the form " "accepted by the chmod and umask system calls. " "(To use the customary octal format the number must " - "start with a 0 (zero).)") + "start with a 0 (zero).)"), + GUC_DEFAULT_INITDB }, &Log_file_mode, 0600, 0000, 0777, @@ -2673,7 +2677,7 @@ struct config_int ConfigureNamesInt[] = {"checkpoint_flush_after", PGC_SIGHUP, WAL_CHECKPOINTS, gettext_noop("Number of pages after which previously performed writes are flushed to disk."), NULL, - GUC_UNIT_BLOCKS + GUC_UNIT_BLOCKS | GUC_DEFAULT_COMPILE }, &checkpoint_flush_after, DEFAULT_CHECKPOINT_FLUSH_AFTER, 0, WRITEBACK_MAX_PENDING_FLUSHES, @@ -2891,7 +2895,7 @@ struct config_int ConfigureNamesInt[] = {"bgwriter_flush_after", PGC_SIGHUP, RESOURCES_BGWRITER, gettext_noop("Number of pages after which previously performed writes are flushed to disk."), NULL, - GUC_UNIT_BLOCKS + GUC_UNIT_BLOCKS | GUC_DEFAULT_COMPILE }, &bgwriter_flush_after, DEFAULT_BGWRITER_FLUSH_AFTER, 0, WRITEBACK_MAX_PENDING_FLUSHES, @@ -2904,7 +2908,7 @@ struct config_int ConfigureNamesInt[] = RESOURCES_ASYNCHRONOUS, gettext_noop("Number of simultaneous requests that can be handled efficiently by the disk subsystem."), NULL, - GUC_EXPLAIN + GUC_EXPLAIN | GUC_DEFAULT_COMPILE }, &effective_io_concurrency, DEFAULT_EFFECTIVE_IO_CONCURRENCY, @@ -2918,7 +2922,7 @@ struct config_int ConfigureNamesInt[] = RESOURCES_ASYNCHRONOUS, gettext_noop("A variant of effective_io_concurrency that is used for maintenance work."), NULL, - GUC_EXPLAIN + GUC_EXPLAIN | GUC_DEFAULT_COMPILE }, &maintenance_io_concurrency, DEFAULT_MAINTENANCE_IO_CONCURRENCY, @@ -2931,7 +2935,7 @@ struct config_int ConfigureNamesInt[] = {"backend_flush_after", PGC_USERSET, RESOURCES_ASYNCHRONOUS, gettext_noop("Number of pages after which previously performed writes are flushed to disk."), NULL, - GUC_UNIT_BLOCKS + GUC_UNIT_BLOCKS | GUC_DEFAULT_COMPILE }, &backend_flush_after, DEFAULT_BACKEND_FLUSH_AFTER, 0, WRITEBACK_MAX_PENDING_FLUSHES, @@ -3385,7 +3389,7 @@ struct config_int ConfigureNamesInt[] = {"debug_discard_caches", PGC_SUSET, DEVELOPER_OPTIONS, gettext_noop("Aggressively flush system caches for debugging purposes."), NULL, - GUC_NOT_IN_SAMPLE + GUC_NOT_IN_SAMPLE | GUC_DEFAULT_COMPILE }, &debug_discard_caches, #ifdef DISCARD_CACHES_ENABLED @@ -3878,7 +3882,8 @@ struct config_string ConfigureNamesString[] = { {"log_timezone", PGC_SIGHUP, LOGGING_WHAT, gettext_noop("Sets the time zone to use in log messages."), - NULL + NULL, + GUC_DEFAULT_INITDB }, &log_timezone_string, "GMT", @@ -3890,7 +3895,7 @@ struct config_string ConfigureNamesString[] = gettext_noop("Sets the display format for date and time values."), gettext_noop("Also controls interpretation of ambiguous " "date inputs."), - GUC_LIST_INPUT | GUC_REPORT + GUC_LIST_INPUT | GUC_REPORT | GUC_DEFAULT_INITDB }, &datestyle_string, "ISO, MDY", @@ -3992,7 +3997,8 @@ struct config_string ConfigureNamesString[] = { {"lc_messages", PGC_SUSET, CLIENT_CONN_LOCALE, gettext_noop("Sets the language in which messages are displayed."), - NULL + NULL, + GUC_DEFAULT_INITDB }, &locale_messages, "", @@ -4002,7 +4008,8 @@ struct config_string ConfigureNamesString[] = { {"lc_monetary", PGC_USERSET, CLIENT_CONN_LOCALE, gettext_noop("Sets the locale for formatting monetary amounts."), - NULL + NULL, + GUC_DEFAULT_INITDB }, &locale_monetary, "C", @@ -4012,7 +4019,8 @@ struct config_string ConfigureNamesString[] = { {"lc_numeric", PGC_USERSET, CLIENT_CONN_LOCALE, gettext_noop("Sets the locale for formatting numbers."), - NULL + NULL, + GUC_DEFAULT_INITDB }, &locale_numeric, "C", @@ -4022,7 +4030,8 @@ struct config_string ConfigureNamesString[] = { {"lc_time", PGC_USERSET, CLIENT_CONN_LOCALE, gettext_noop("Sets the locale for formatting date and time values."), - NULL + NULL, + GUC_DEFAULT_INITDB }, &locale_time, "C", @@ -4181,7 +4190,8 @@ struct config_string ConfigureNamesString[] = {"TimeZone", PGC_USERSET, CLIENT_CONN_LOCALE, gettext_noop("Sets the time zone for displaying and interpreting time stamps."), NULL, - GUC_REPORT + GUC_REPORT | GUC_DEFAULT_INITDB + }, &timezone_string, "GMT", @@ -4212,7 +4222,7 @@ struct config_string ConfigureNamesString[] = {"unix_socket_directories", PGC_POSTMASTER, CONN_AUTH_SETTINGS, gettext_noop("Sets the directories where Unix-domain sockets will be created."), NULL, - GUC_LIST_INPUT | GUC_LIST_QUOTE | GUC_SUPERUSER_ONLY + GUC_LIST_INPUT | GUC_LIST_QUOTE | GUC_SUPERUSER_ONLY | GUC_DEFAULT_COMPILE }, &Unix_socket_directories, DEFAULT_PGSOCKET_DIR, @@ -4293,7 +4303,7 @@ struct config_string ConfigureNamesString[] = {"ssl_library", PGC_INTERNAL, PRESET_OPTIONS, gettext_noop("Shows the name of the SSL library."), NULL, - GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE + GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE | GUC_DEFAULT_COMPILE }, &ssl_library, #ifdef USE_SSL @@ -4368,7 +4378,9 @@ struct config_string ConfigureNamesString[] = { {"default_text_search_config", PGC_USERSET, CLIENT_CONN_LOCALE, gettext_noop("Sets default text search configuration."), - NULL + NULL, + GUC_DEFAULT_INITDB + }, &TSCurrentConfig, "pg_catalog.simple", @@ -4379,7 +4391,7 @@ struct config_string ConfigureNamesString[] = {"ssl_ciphers", PGC_SIGHUP, CONN_AUTH_SSL, gettext_noop("Sets the list of allowed SSL ciphers."), NULL, - GUC_SUPERUSER_ONLY + GUC_SUPERUSER_ONLY | GUC_DEFAULT_COMPILE }, &SSLCipherSuites, #ifdef USE_OPENSSL @@ -4394,7 +4406,7 @@ struct config_string ConfigureNamesString[] = {"ssl_ecdh_curve", PGC_SIGHUP, CONN_AUTH_SSL, gettext_noop("Sets the curve to use for ECDH."), NULL, - GUC_SUPERUSER_ONLY + GUC_SUPERUSER_ONLY | GUC_DEFAULT_COMPILE }, &SSLECDHCurve, #ifdef USE_SSL @@ -4632,7 +4644,8 @@ struct config_enum ConfigureNamesEnum[] = { {"syslog_facility", PGC_SIGHUP, LOGGING_WHERE, gettext_noop("Sets the syslog \"facility\" to be used when syslog enabled."), - NULL + NULL, + GUC_DEFAULT_COMPILE }, &syslog_facility, DEFAULT_SYSLOG_FACILITY, @@ -4741,7 +4754,9 @@ struct config_enum ConfigureNamesEnum[] = { {"dynamic_shared_memory_type", PGC_POSTMASTER, RESOURCES_MEM, gettext_noop("Selects the dynamic shared memory implementation used."), - NULL + NULL, + /* platform-specific default, which is also overriden during initdb */ + GUC_DEFAULT_COMPILE | GUC_DEFAULT_INITDB }, &dynamic_shared_memory_type, DEFAULT_DYNAMIC_SHARED_MEMORY_TYPE, dynamic_shared_memory_options, @@ -4751,7 +4766,8 @@ struct config_enum ConfigureNamesEnum[] = { {"shared_memory_type", PGC_POSTMASTER, RESOURCES_MEM, gettext_noop("Selects the shared memory implementation used for the main shared memory region."), - NULL + NULL, + GUC_DEFAULT_COMPILE }, &shared_memory_type, DEFAULT_SHARED_MEMORY_TYPE, shared_memory_options, @@ -4761,7 +4777,8 @@ struct config_enum ConfigureNamesEnum[] = { {"wal_sync_method", PGC_SIGHUP, WAL_SETTINGS, gettext_noop("Selects the method used for forcing WAL updates to disk."), - NULL + NULL, + GUC_DEFAULT_COMPILE }, &sync_method, DEFAULT_SYNC_METHOD, sync_method_options, @@ -4823,7 +4840,8 @@ struct config_enum ConfigureNamesEnum[] = { {"password_encryption", PGC_USERSET, CONN_AUTH_AUTH, gettext_noop("Chooses the algorithm for encrypting passwords."), - NULL + NULL, + GUC_DEFAULT_INITDB }, &Password_encryption, PASSWORD_TYPE_SCRAM_SHA_256, password_encryption_options, diff --git a/src/include/utils/guc.h b/src/include/utils/guc.h index b3aaff9665b..79053583a03 100644 --- a/src/include/utils/guc.h +++ b/src/include/utils/guc.h @@ -221,6 +221,8 @@ typedef enum #define GUC_DISALLOW_IN_AUTO_FILE \ 0x002000 /* can't set in PG_AUTOCONF_FILENAME */ #define GUC_RUNTIME_COMPUTED 0x004000 /* delay processing in 'postgres -C' */ +#define GUC_DEFAULT_COMPILE 0x008000 /* default is determined at compile time */ +#define GUC_DEFAULT_INITDB 0x010000 /* default is determined at during initdb */ #define GUC_UNIT_KB 0x01000000 /* value is in kilobytes */ #define GUC_UNIT_BLOCKS 0x02000000 /* value is in blocks */ -- 2.25.1 --IpbVkmxF4tDyP/Kb Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="0002-WIP-test-GUC-default-values.patch" ^ permalink raw reply [nested|flat] 4+ messages in thread
* Use Postgres as meson wrap subproject @ 2025-12-23 15:21 Niyaz Hazigaleyev <[email protected]> 0 siblings, 0 replies; 4+ messages in thread From: Niyaz Hazigaleyev @ 2025-12-23 15:21 UTC (permalink / raw) To: [email protected] It is not possible to use Postgres as meson wrap subproject at least out of box. But I think it can be easily fixed. I made a small patch for libpq and it works. There were two problems, first is catalog header generator using @SOURCE_DIR@ as root for paths, which will use main root project as source dir, so I just changed it to meson.project_source_root(). Second was that libpq dependency include_directories had no dependent headers(for example postgres_ext.h) so I just used include_directories that were also used in libpq_so, libpq_st. So the patch looks like this for commit 955f5506863dce0a3416e3fae7c3297dbbaa946d: diff --git a/src/include/catalog/meson.build b/src/include/catalog/meson.build index ec1cf46..2b12e8e 100644 --- a/src/include/catalog/meson.build +++ b/src/include/catalog/meson.build @@ -136,7 +136,7 @@ generated_catalog_headers = custom_target('generated_catalog_headers', command: [ perl, files('../../backend/catalog/genbki.pl'), - '--include-path=@SOURCE_ROOT@/src/include', + '--include-path=' + (meson.project_source_root() / 'src/include'), '--set-version=' + pg_version_major.to_string(), '--output=@OUTDIR@', '@INPUT@' ], diff --git a/src/interfaces/libpq/meson.build b/src/interfaces/libpq/meson.build index b259c99..51e051f 100644 --- a/src/interfaces/libpq/meson.build +++ b/src/interfaces/libpq/meson.build @@ -82,7 +82,7 @@ libpq_so = shared_library('libpq', libpq = declare_dependency( link_with: [libpq_so], - include_directories: [include_directories('.')] + include_directories: [libpq_inc, postgres_inc] ) # Check for functions that libpq must not call. See libpq_check.pl for the Example of wrap file that applies patch: [wrap-git] url = https://git.postgresql.org/git/postgresql.git revision = 955f5506863dce0a3416e3fae7c3297dbbaa946d depth = 1 diff_files = postgres/libpq.patch [provide] libpq = libpq So to use Postgres as wrap subproject u need to change @SOURCE_DIR@ to meson.project_source_root() and check include_directories for all dependencies. Is there any plans to support it? ^ permalink raw reply [nested|flat] 4+ messages in thread
end of thread, other threads:[~2025-12-23 15:21 UTC | newest] Thread overview: 4+ messages (download: mbox mbox.gz follow: Atom feed) -- links below jump to the message on this page -- 2022-07-19 13:31 [PATCH 1/2] pg_settings_get_flags(): add DEFAULT_COMPILE and DEFAULT_INITDB .. Justin Pryzby <[email protected]> 2022-07-19 13:31 [PATCH 1/2] pg_settings_get_flags(): add DEFAULT_COMPILE and DEFAULT_INITDB .. Justin Pryzby <[email protected]> 2022-07-19 13:31 [PATCH 1/2] pg_settings_get_flags(): add DEFAULT_COMPILE and DEFAULT_INITDB .. Justin Pryzby <[email protected]> 2025-12-23 15:21 Use Postgres as meson wrap subproject Niyaz Hazigaleyev <[email protected]>
This inbox is served by agora; see mirroring instructions for how to clone and mirror all data and code used for this inbox