blob: 8751f8af038c680017ed7b4a4a6f3baa8fc4ca92 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*--------------------------------------------------------------------
* guc.c
*
* Support for grand unified configuration scheme, including SET
* command, configuration file, and command line options.
* See src/backend/utils/misc/README for more information.
*
*
* Portions Copyright (c) 2005-2010, Greenplum inc
* Copyright (c) 2000-2009, PostgreSQL Global Development Group
* Written by Peter Eisentraut <peter_e@gmx.net>.
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.360.2.1 2007/04/23 15:13:30 neilc Exp $
*
*--------------------------------------------------------------------
*/
#include "postgres.h"
#include <ctype.h>
#include <float.h>
#include <math.h>
#include <limits.h>
#include <unistd.h>
#include <sys/stat.h>
#ifdef HAVE_SYSLOG
#include <syslog.h>
#endif
#include <signal.h>
#include "access/appendonlywriter.h"
#include "access/gin.h"
#include "access/transam.h"
#include "access/aosegfiles.h"
#include "access/twophase.h"
#include "access/xact.h"
#include "access/transam.h"
#include "catalog/namespace.h"
#include "catalog/pg_type.h"
#include "cdb/cdbappendonlyam.h"
#include "cdb/cdbfilerep.h"
#include "cdb/cdbfilesystemcredential.h"
#include "cdb/tupchunk.h"
#include "commands/async.h"
#include "commands/vacuum.h"
#include "commands/variable.h"
#include "executor/executor.h" /* TupOutputState, TupleDesc */
#include "executor/execWorkfile.h"
#include "funcapi.h"
#include "libpq/auth.h"
#include "libpq/password_hash.h"
#include "libpq/pqformat.h"
#include "miscadmin.h"
#include "optimizer/cost.h"
#include "optimizer/paths.h"
#include "optimizer/planmain.h"
#include "parser/gramparse.h"
#include "parser/parse_expr.h"
#include "parser/parse_relation.h"
#include "parser/scansup.h"
#include "pgstat.h"
#include "postmaster/autovacuum.h"
#include "postmaster/bgwriter.h"
#include "postmaster/checkpoint.h"
#include "postmaster/postmaster.h"
#include "postmaster/syslogger.h"
#include "storage/fd.h"
#include "storage/freespace.h"
#include "storage/bfz.h"
#include "tcop/tcopprot.h"
#include "utils/builtins.h"
#include "utils/guc_tables.h"
#include "utils/inval.h"
#include "utils/memutils.h"
#include "utils/pg_locale.h"
#include "utils/ps_status.h"
#include "utils/tzparser.h"
#include "utils/resscheduler.h"
#include "pgstat.h"
#include "cdb/cdbvars.h"
#include "cdb/cdbdisp.h"
#include "cdb/dispatcher.h"
#include "cdb/cdbquerycontextdispatching.h"
#include "cdb/memquota.h"
#include "utils/vmem_tracker.h"
#include "resourcemanager/errorcode.h"
#include "resourcemanager/utils/simplestring.h"
#ifndef PG_KRB_SRVTAB
#define PG_KRB_SRVTAB ""
#endif
#ifndef PG_KRB_SRVNAM
#define PG_KRB_SRVNAM ""
#endif
#define CONFIG_FILENAME "postgresql.conf"
#define HBA_FILENAME "pg_hba.conf"
#define IDENT_FILENAME "pg_ident.conf"
#ifdef EXEC_BACKEND
#define CONFIG_EXEC_PARAMS "global/config_exec_params"
#define CONFIG_EXEC_PARAMS_NEW "global/config_exec_params.new"
#endif
/* upper limit for GUC variables measured in kilobytes of memory */
#if SIZEOF_SIZE_T > 4
#define MAX_KILOBYTES INT_MAX
#else
#define MAX_KILOBYTES (INT_MAX / 1024)
#endif
#define KB_PER_MB (1024)
#define KB_PER_GB (1024*1024)
#define MS_PER_S 1000
#define S_PER_MIN 60
#define MS_PER_MIN (1000 * 60)
#define MIN_PER_H 60
#define S_PER_H (60 * 60)
#define MS_PER_H (1000 * 60 * 60)
#define MIN_PER_D (60 * 24)
#define S_PER_D (60 * 60 * 24)
#define MS_PER_D (1000 * 60 * 60 * 24)
/* XXX these should appear in other modules' header files */
extern bool Log_disconnections;
extern int CommitDelay;
extern int CommitSiblings;
extern char *default_tablespace;
extern bool fullPageWrites;
extern bool enable_partition_rules;
extern bool gp_hash_index;
/* GUC lists for gp_guc_list_show(). (List of struct config_generic) */
List *gp_guc_list_for_explain;
List *gp_guc_list_for_no_plan;
#ifdef USE_SSL
extern char *SSLCipherSuites;
#endif
/*
* Assign/Show hook functions defined in this module
*/
static const char *assign_hashagg_compress_spill_files(const char *newval, bool doit, GucSource source);
static const char *assign_gp_workfile_compress_algorithm(const char *newval, bool doit, GucSource source);
static const char *assign_gp_workfile_type_hashjoin(const char *newval, bool doit, GucSource source);
static const char *assign_log_destination(const char *value,
bool doit, GucSource source);
#ifdef HAVE_SYSLOG
static int syslog_facility = LOG_LOCAL0;
static const char *assign_syslog_facility(const char *facility,
bool doit, GucSource source);
static const char *assign_syslog_ident(const char *ident,
bool doit, GucSource source);
#endif
static const char *assign_defaultxactisolevel(const char *newval, bool doit,
GucSource source);
static const char *assign_debug_persistent_print_level(const char *newval,
bool doit, GucSource source);
static const char *assign_debug_persistent_recovery_print_level(const char *newval,
bool doit, GucSource source);
static const char *assign_debug_persistent_store_print_level(const char *newval,
bool doit, GucSource source);
static const char *assign_debug_database_command_print_level(const char *newval,
bool doit, GucSource source);
static const char *assign_log_min_messages(const char *newval, bool doit,
GucSource source);
static const char *assign_client_min_messages(const char *newval,
bool doit, GucSource source);
static const char *assign_optimizer_log_failure(const char *newval,
bool doit, GucSource source);
static const char *assign_optimizer_minidump(const char *newval,
bool doit, GucSource source);
static bool assign_optimizer(bool newval, bool doit, GucSource source);
static const char *assign_optimizer_cost_model(const char *newval,
bool doit, GucSource source);
static const char *assign_min_error_statement(const char *newval, bool doit,
GucSource source);
static const char *assign_gp_workfile_caching_loglevel(const char *newval,
bool doit, GucSource source);
static const char *assign_gp_mdversioning_loglevel(const char *newval,
bool doit, GucSource source);
static const char *assign_gp_sessionstate_loglevel(const char *newval,
bool doit, GucSource source);
static const char *assign_time_slice_report_level(const char *newval, bool doit,
GucSource source);
static const char *assign_deadlock_hazard_report_level(const char *newval, bool doit,
GucSource source);
static const char *assign_system_cache_flush_force(const char *newval, bool doit,
GucSource source);
static const char *assign_gp_idf_deduplicate(const char *newval, bool doit,
GucSource source);
static const char *assign_msglvl(int *var, const char *newval, bool doit,
GucSource source);
static const char *assign_IntervalStyle(const char *newval, bool doit,
GucSource source);
static const char *assign_log_error_verbosity(const char *newval, bool doit,
GucSource source);
static const char *assign_log_statement(const char *newval, bool doit,
GucSource source);
static const char *show_num_temp_buffers(void);
static bool assign_phony_autocommit(bool newval, bool doit, GucSource source);
static const char *assign_custom_variable_classes(const char *newval, bool doit,
GucSource source);
static const char *assign_explain_memory_verbosity(const char *newval, bool doit, GucSource source);
static bool assign_debug_assertions(bool newval, bool doit, GucSource source);
static bool assign_ssl(bool newval, bool doit, GucSource source);
static bool assign_stage_log_stats(bool newval, bool doit, GucSource source);
static bool assign_log_stats(bool newval, bool doit, GucSource source);
static bool assign_dispatch_log_stats(bool newval, bool doit, GucSource source);
static bool assign_transaction_read_only(bool newval, bool doit, GucSource source);
static bool assign_optimizer_release_mdcache(bool newval, bool doit, GucSource source);
static bool assign_gp_metadata_versioning(bool newval, bool doit, GucSource source);
static const char *assign_canonical_path(const char *newval, bool doit, GucSource source);
static const char *assign_backslash_quote(const char *newval, bool doit, GucSource source);
static const char *assign_timezone_abbreviations(const char *newval, bool doit, GucSource source);
static bool assign_tcp_keepalives_idle(int newval, bool doit, GucSource source);
static bool assign_tcp_keepalives_interval(int newval, bool doit, GucSource source);
static bool assign_tcp_keepalives_count(int newval, bool doit, GucSource source);
static const char *show_IntervalStyle(void);
static const char *show_tcp_keepalives_idle(void);
static const char *show_tcp_keepalives_interval(void);
static const char *show_tcp_keepalives_count(void);
static const char *assign_pgstat_temp_directory(const char *newval, bool doit, GucSource source);
static const char *assign_application_name(const char *newval, bool doit, GucSource source);
static const char *assign_debug_dtm_action(const char *newval,
bool doit, GucSource source);
static const char *assign_debug_dtm_action_target(const char *newval,
bool doit, GucSource source);
static const char *assign_gp_log_format(const char *value, bool doit,
GucSource source);
static bool dummy_autovac=false;
static bool assign_autovacuum_warning(bool newval, bool doit, GucSource source);
/* Helper function for guc setter */
static const char *assign_password_hash_algorithm(const char *newval,
bool doit, GucSource source);
static bool assign_gp_temporary_directory_mark_error(int newval, bool doit, GucSource source);
static const char * assign_hawq_rm_stmt_vseg_memory(const char *newval, bool doit, GucSource source);
/*
* GUC option variables that are exported from this module
*/
#ifdef USE_ASSERT_CHECKING
bool assert_enabled = true;
#else
bool assert_enabled = false;
#endif
bool log_duration = false;
bool Debug_print_plan = false;
bool Debug_udf_plan = false;
bool Debug_print_parse = false;
bool Debug_print_rewritten = false;
bool Debug_pretty_print = false;
bool Explain_pretty_print = true;
bool Debug_print_full_dtm = false;
bool Debug_print_snapshot_dtm = false;
bool Debug_print_qd_mirroring = false;
bool Debug_permit_same_host_standby = false;
bool Debug_print_semaphore_detail = false;
bool Debug_disable_distributed_snapshot = false;
bool Debug_abort_after_distributed_prepared = false;
bool Debug_abort_after_segment_prepared = false;
bool Debug_print_tablespace = false;
bool Debug_print_server_processes = false;
bool Debug_print_control_checkpoints = false;
bool Debug_print_execution_detail = false;
bool Debug_appendonly_print_insert = false;
bool Debug_appendonly_print_insert_tuple = false;
bool Debug_appendonly_print_scan = false;
bool Debug_appendonly_print_scan_tuple = false;
bool Debug_appendonly_print_storage_headers = false;
bool Debug_appendonly_print_verify_write_block = false;
bool Debug_appendonly_use_no_toast = true;
bool Debug_appendonly_print_blockdirectory = false;
bool Debug_appendonly_print_read_block = false;
bool Debug_appendonly_print_append_block = false;
bool Debug_appendonly_print_segfile_choice = false;
int Debug_appendonly_bad_header_print_level = ERROR;
bool Debug_appendonly_print_datumstream = false;
bool Debug_querycontext_print_tuple = false;
bool Debug_querycontext_print = false;
bool Debug_gp_relation_node_fetch_wait_for_debugging = false;
bool gp_crash_recovery_abort_suppress_fatal = false;
bool gp_persistent_statechange_suppress_error = false;
bool Debug_bitmap_print_insert = false;
bool Test_appendonly_override = false;
bool Gohdb_appendonly_override = true;
bool Test_print_direct_dispatch_info = false;
bool gp_permit_persistent_metadata_update = false;
bool gp_permit_relation_node_change = false;
bool Test_checksum_override = false;
int Test_compresslevel_override = 0;
int Test_blocksize_override = 0;
int Test_safefswritesize_override = 0;
bool Master_mirroring_administrator_disable = false;
bool gp_appendonly_verify_block_checksums = false;
bool gp_appendonly_verify_write_block = false;
bool gp_heap_require_relhasoids_match = true;
bool gp_local_distributed_cache_stats = false;
bool Debug_xlog_insert_print = false;
bool Debug_persistent_print = false;
int Debug_persistent_print_level = LOG;
bool Debug_persistent_recovery_print = true;
int Debug_persistent_recovery_print_level = LOG;
bool Debug_persistent_store_print = false;
int Debug_persistent_store_print_level = LOG;
bool Debug_persistent_bootstrap_print = false;
bool Debug_bulk_load_bypass_wal = true;
bool Debug_persistent_appendonly_commit_count_print = false;
bool Debug_cancel_print = false;
bool Debug_datumstream_write_print_small_varlena_info = false;
bool Debug_datumstream_write_print_large_varlena_info = false;
bool Debug_datumstream_read_check_large_varlena_integrity = false;
bool Debug_datumstream_block_read_check_integrity = false;
bool Debug_datumstream_block_write_check_integrity = false;
bool Debug_datumstream_read_print_varlena_info = false;
bool Debug_datumstream_write_use_small_initial_buffers = false;
bool gp_temporary_files_filespace_repair = false;
bool filesystem_support_truncate = true;
bool gp_allow_non_uniform_partitioning_ddl = true;
int explain_memory_verbosity = 0;
char* memory_profiler_run_id = "none";
char* memory_profiler_dataset_id = "none";
char* memory_profiler_query_id = "none";
int memory_profiler_dataset_size = 0;
bool gp_dump_memory_usage = FALSE;
#define VERIFY_CHECKPOINT_INTERVAL_DEFAULT 180
int verify_checkpoint_interval =
VERIFY_CHECKPOINT_INTERVAL_DEFAULT;
bool Debug_rle_type_compression = false;
bool rle_type_compression_stats = false;
bool Debug_database_command_print = false;
int Debug_database_command_print_level = LOG;
#define GP_MAX_RELATIONS_DEFAULT 65536
int gp_max_relations = GP_MAX_RELATIONS_DEFAULT;
#define GP_MAX_DATABASES_DEFAULT 16
int gp_max_databases = GP_MAX_DATABASES_DEFAULT;
#define GP_MAX_TABLESPACES_DEFAULT 16
int gp_max_tablespaces = GP_MAX_TABLESPACES_DEFAULT;
#define GP_MAX_FILESPACES_DEFAULT 8
int gp_max_filespaces = GP_MAX_FILESPACES_DEFAULT;
bool gp_initdb_mirrored = false;
bool gp_before_persistence_work = false;
bool gp_before_filespace_setup = false;
bool gp_startup_integrity_checks = true;
bool gp_change_tracking = true;
bool gp_persistent_skip_free_list = false;
bool gp_persistent_repair_global_sequence = false;
bool Debug_print_xlog_relation_change_info = false;
bool Debug_print_xlog_relation_change_info_skip_issues_only = false;
bool Debug_print_xlog_relation_change_info_backtrace_skip_issues = false;
bool Debug_check_for_invalid_persistent_tid = false;
bool Debug_filerep_crc_on = true;
bool Debug_filerep_print = false;
bool Debug_filerep_gcov = false;
bool Debug_filerep_config_print = false;
bool Debug_filerep_verify_performance_print = false;
bool Debug_filerep_memory_log_flush = false;
bool filerep_inject_listener_fault = false;
bool filerep_inject_db_startup_fault = false;
bool filerep_inject_change_tracking_recovery_fault = false;
bool gp_crash_recovery_suppress_ao_eof = false;
bool gp_keep_all_xlog = false;
#define DEBUG_DTM_ACTION_PRIMARY_DEFAULT true
bool Debug_dtm_action_primary = DEBUG_DTM_ACTION_PRIMARY_DEFAULT;
bool gp_log_optimization_time = false;
bool log_parser_stats = false;
bool log_planner_stats = false;
bool log_executor_stats = false;
bool log_statement_stats = false; /* this is sort of all three
* above together */
bool log_dispatch_stats = false;
bool log_btree_build_stats = false;
bool check_function_bodies = true;
bool default_with_oids = false;
bool SQL_inheritance = true;
bool Password_encryption = true;
int log_min_error_statement = ERROR;
int log_min_messages = WARNING;
int client_min_messages = NOTICE;
int log_min_duration_statement = -1;
int num_temp_buffers = 1000;
int Debug_delay_prepare_broadcast_ms = 0;
int Debug_delay_commit_broadcast_ms = 0;
int Debug_delay_abort_broadcast_ms = 0;
int Debug_dtm_action = DEBUG_DTM_ACTION_NONE;
#define DEBUG_DTM_ACTION_TARGET_DEFAULT DEBUG_DTM_ACTION_TARGET_NONE
int Debug_dtm_action_target = DEBUG_DTM_ACTION_TARGET_DEFAULT;
#define DEBUG_DTM_ACTION_DELAY_MS_DEFAULT 5000
#define DEBUG_DTM_ACTION_SEGMENT_DEFAULT 1
int Debug_dtm_action_delay_ms = DEBUG_DTM_ACTION_DELAY_MS_DEFAULT;
int Debug_dtm_action_segment = DEBUG_DTM_ACTION_SEGMENT_DEFAULT;
char *ConfigFileName;
char *HbaFileName;
char *IdentFileName;
char *external_pid_file;
char *Debug_dtm_action_sql_command_tag;
char *Debug_dtm_action_str;
char *Debug_dtm_action_target_str;
char *Debug_dtm_action_protocol_str;
/* Enable check for compatibility of encoding and locale in createdb */
bool gp_encoding_check_locale_compatibility;
bool allow_file_count_bucket_num_mismatch;
char *pgstat_temp_directory;
char *application_name;
int tcp_keepalives_idle;
int tcp_keepalives_interval;
int tcp_keepalives_count;
int gp_filerep_tcp_keepalives_idle;
int gp_filerep_tcp_keepalives_interval;
int gp_filerep_tcp_keepalives_count;
int WalSendClientTimeout = 30000; // 30 seconds.
char *data_directory;
int defunct_int = 0;
bool defunct_bool = 0;
double defunct_double = 0;
#if USE_EMAIL
char *gp_email_smtp_server;
char *gp_email_smtp_userid;
char *gp_email_smtp_password;
char *gp_email_from;
char *gp_email_to;
int gp_email_connect_timeout;
int gp_email_connect_failures;
int gp_email_connect_avoid_duration;
#endif
#if USE_SNMP
char *gp_snmp_community;
char *gp_snmp_monitor_address;
char *gp_snmp_use_inform_or_trap;
char *gp_snmp_debug_log;
#endif
/* The following GUC holds the default version for append-only tables */
int test_appendonly_version_default = AORelationVersion_GetLatest();
/*
* These variables are all dummies that don't do anything, except in some
* cases provide the value for SHOW to display. The real state is elsewhere
* and is kept in sync by assign_hooks.
*/
static char *gp_hashagg_compress_spill_files_str;
static char *gp_workfile_compress_algorithm_str;
static char *gp_workfile_type_hashjoin_str;
static char *client_min_messages_str;
static char *optimizer_log_failure_str;
static char *optimizer_minidump_str;
static char *optimizer_cost_model_str;
static char *Debug_persistent_print_level_str;
static char *Debug_persistent_recovery_print_level_str;
static char *Debug_persistent_store_print_level_str;
static char *Debug_database_command_print_level_str;
static char *log_min_messages_str;
static char *log_error_verbosity_str;
static char *log_statement_str;
static char *log_min_error_statement_str;
static char *log_destination_string;
static char *gp_log_format_string;
static char *gp_workfile_caching_loglevel_str;
static char *gp_sessionstate_loglevel_str;
static char *explain_memory_verbosity_str;
#ifdef HAVE_SYSLOG
static char *syslog_facility_str;
static char *syslog_ident_str;
#endif
static bool phony_autocommit;
static bool session_auth_is_superuser;
static double phony_random_seed;
static char *backslash_quote_string;
static char *client_encoding_string;
static char *IntervalStyle_string;
static char *datestyle_string;
static char *default_iso_level_string;
static char *locale_ctype;
static char *regex_flavor_string;
static char *server_encoding_string;
static char *server_version_string;
static int server_version_num;
static char *timezone_string;
static char *log_timezone_string;
static char *timezone_abbreviations_string;
static char *XactIsoLevel_string;
static char *custom_variable_classes;
static int max_function_args;
static int max_index_keys;
static int max_identifier_length;
static int block_size;
static bool integer_datetimes;
//static bool standard_conforming_strings;
static char *gp_log_gang_str;
static char *gp_log_interconnect_str;
static char *gp_interconnect_type_str;
static char *gp_interconnect_fc_method_str;
/* should be static, but commands/variable.c needs to get at these */
char *role_string;
char *session_authorization_string;
/* Perfmon segment GUCs */
int gp_perfmon_segment_interval;
/* Perfmon debug GUC */
bool gp_perfmon_print_packet_info;
/* Simulator of Exceptions (SimEx) GUCs */
bool gp_simex_init;
bool gp_simex_run;
int gp_simex_class;
double gp_simex_rand;
/* time slice enforcement */
bool gp_test_time_slice;
int gp_test_time_slice_interval;
int gp_test_time_slice_report_level = ERROR;
static char *gp_test_time_slice_report_level_str;
/* database-lightweight lock hazard detection */
bool gp_test_deadlock_hazard;
int gp_test_deadlock_hazard_report_level = ERROR;
static char *gp_test_deadlock_hazard_report_level_str;
/* query cancellation GUC */
bool gp_cancel_query_print_log;
int gp_cancel_query_delay_time;
/* partitioning GUC */
bool gp_partitioning_dynamic_selection_log;
int gp_max_partition_level;
/* Enable the SEGV/BUS/ILL signal handler that are async safe. */
bool gp_crash_handler_async = false;
/* Upgrade & maintenance GUCs */
bool gp_upgrade_mode;
bool gp_maintenance_mode;
bool gp_maintenance_conn;
bool allow_segment_DML;
static char *allow_system_table_mods_str;
/* ignore EXCLUDE clauses in window spec for backwards compatibility */
bool gp_ignore_window_exclude = false;
const char *
assign_allow_system_table_mods(const char *newval,
bool doit,
GucSource source __attribute__((unused)) );
const char *
show_allow_system_table_mods(void);
/* Extension Framework GUCs */
bool pxf_enable_filter_pushdown = true;
bool pxf_enable_stat_collection = true;
int pxf_stat_max_fragments = 100;
bool pxf_enable_locality_optimizations = true;
bool pxf_isilon = false; /* temporary GUC */
int pxf_service_port = 51200; /* temporary GUC */
char *pxf_service_address = "localhost:51200"; /* temporary GUC */
bool pxf_service_singlecluster = false;
char *pxf_remote_service_login = NULL;
char *pxf_remote_service_secret = NULL;
/* Time based authentication GUC */
char *gp_auth_time_override_str = NULL;
/* Password hashing */
char *password_hash_algorithm_str = "MD5";
PasswdHashAlg password_hash_algorithm = PASSWORD_HASH_MD5;
/* system cache invalidation mode*/
int gp_test_system_cache_flush_force = SysCacheFlushForce_Off;
static char *gp_test_system_cache_flush_force_str;
/* include file/line information to stack traces */
bool gp_log_stack_trace_lines;
/* Planner gucs */
bool enable_seqscan = true;
bool enable_indexscan = true;
bool enable_bitmapscan = true;
bool force_bitmap_table_scan = false;
bool enable_tidscan = true;
bool enable_sort = true;
bool enable_hashagg = true;
bool enable_groupagg = true;
bool enable_nestloop = false;
bool enable_mergejoin = false;
bool enable_hashjoin = true;
bool gp_enable_hashjoin_size_heuristic = false;
bool gp_enable_fallback_plan = true;
bool gp_enable_predicate_propagation = false;
bool constraint_exclusion = false;
bool gp_enable_multiphase_agg = true;
bool gp_enable_preunique = TRUE;
bool gp_eager_preunique = FALSE;
bool gp_enable_sequential_window_plans = FALSE;
bool gp_hashagg_streambottom = true;
bool gp_enable_agg_distinct = true;
bool gp_enable_dqa_pruning = true;
bool gp_eager_dqa_pruning = FALSE;
bool gp_eager_one_phase_agg = FALSE;
bool gp_eager_two_phase_agg = FALSE;
bool gp_enable_groupext_distinct_pruning = true;
bool gp_enable_groupext_distinct_gather = true;
bool gp_dynamic_partition_pruning = true;
bool gp_log_dynamic_partition_pruning = false;
bool gp_cte_sharing = false;
char *gp_idf_deduplicate_str;
int share_input_scan_wait_lockfile_timeout;
/* gp_disable_catalog_access_on_segment */
bool gp_disable_catalog_access_on_segment = false;
/* ORCA related gucs */
bool optimizer;
bool optimizer_log;
bool optimizer_partition_selection_log;
bool optimizer_minidump;
int optimizer_cost_model;
bool optimizer_print_query;
bool optimizer_print_plan;
bool optimizer_print_xform;
bool optimizer_release_mdcache = true; /* Make sure we release MDCache between queries by default */
bool optimizer_disable_xform_result_printing;
bool optimizer_print_memo_after_exploration;
bool optimizer_print_memo_after_implementation;
bool optimizer_print_memo_after_optimization;
bool optimizer_print_job_scheduler;
bool optimizer_print_expression_properties;
bool optimizer_print_group_properties;
bool optimizer_print_optimization_context;
bool optimizer_print_optimization_stats;
bool optimizer_local;
int optimizer_retries;
bool optimizer_xforms[OPTIMIZER_XFORMS_COUNT] = {[0 ... OPTIMIZER_XFORMS_COUNT - 1] = false}; /* array of xforms disable flags */
char *optimizer_search_strategy_path = NULL;
char *gp_idf_deduplicate_str;
bool optimizer_extract_dxl_stats;
bool optimizer_extract_dxl_stats_all_nodes;
bool optimizer_disable_missing_stats_collection;
bool optimizer_dpe_stats;
bool optimizer_enable_indexjoin;
bool optimizer_enable_motions_masteronly_queries;
bool optimizer_enable_motions;
bool optimizer_enable_motion_broadcast;
bool optimizer_enable_motion_gather;
bool optimizer_enable_motion_redistribute;
bool optimizer_enable_sort;
bool optimizer_enable_materialize;
bool optimizer_enable_partition_propagation;
bool optimizer_enable_partition_selection;
bool optimizer_enable_outerjoin_rewrite;
bool optimizer_enable_space_pruning;
bool optimizer_prefer_multistage_agg;
bool optimizer_enable_multiple_distinct_aggs;
bool optimizer_prefer_expanded_distinct_aggs;
bool optimizer_prune_computed_columns;
bool optimizer_push_requirements_from_consumer_to_producer;
bool optimizer_direct_dispatch;
bool optimizer_enable_hashjoin_redistribute_broadcast_children;
bool optimizer_enable_broadcast_nestloop_outer_child;
bool optimizer_enforce_subplans;
bool optimizer_enable_assert_maxonerow;
bool optimizer_enumerate_plans;
bool optimizer_sample_plans;
int optimizer_plan_id;
int optimizer_samples_number;
int optimizer_log_failure;
int default_hash_table_bucket_number;
int hawq_rm_nvseg_for_copy_from_perquery;
int hawq_rm_nvseg_for_analyze_nopart_perquery_perseg_limit;
int hawq_rm_nvseg_for_analyze_part_perquery_perseg_limit;
int hawq_rm_nvseg_for_analyze_nopart_perquery_limit;
int hawq_rm_nvseg_for_analyze_part_perquery_limit;
double optimizer_cost_threshold;
double optimizer_nestloop_factor;
double locality_upper_bound;
double net_disk_ratio;
double hawq_hashjoin_bloomfilter_ratio;
int hawq_hashjoin_bloomfilter_sampling_number;
bool optimizer_cte_inlining;
int optimizer_cte_inlining_bound;
double optimizer_damping_factor_filter;
double optimizer_damping_factor_join;
double optimizer_damping_factor_groupby;
int optimizer_segments;
int optimizer_parts_to_force_sort_on_insert;
int optimizer_join_arity_for_associativity_commutativity;
int optimizer_array_expansion_threshold;
int optimizer_join_order_threshold;
bool optimizer_analyze_root_partition;
bool optimizer_analyze_midlevel_partition;
bool optimizer_enable_constant_expression_evaluation;
bool optimizer_use_external_constant_expression_evaluation_for_ints;
bool optimizer_enable_bitmapscan;
bool optimizer_enable_outerjoin_to_unionall_rewrite;
bool optimizer_apply_left_outer_to_union_all_disregarding_stats;
bool optimizer_enable_ctas;
bool optimizer_remove_order_below_dml;
bool optimizer_static_partition_selection;
bool optimizer_enable_partial_index;
bool optimizer_dml_triggers;
bool optimizer_dml_constraints;
bool optimizer_enable_master_only_queries;
bool sort_segments_enable;
bool optimizer_multilevel_partitioning;
bool optimizer_enable_derive_stats_all_groups;
bool optimizer_explain_show_status;
bool optimizer_prefer_scalar_dqa_multistage_agg;
bool optimizer_parallel_union;
bool optimizer_array_constraints;
/* fallback in ranger ACL check */
int information_schema_namespace_oid;
int hawq_toolkit_schema_namespace_oid;
/* Security */
bool gp_reject_internal_tcp_conn = true;
/* plpgsql plancache GUC */
bool gp_plpgsql_clear_cache_always = false;
/* indicate whether called by gpdump, if yes, processutility will open some limitations */
bool gp_called_by_pgdump = false;
char *acl_type;
int rps_addr_port;
int rps_check_local_interval;
char *rps_addr_host;
char *rps_addr_suffix;
int rps_addr_port;
char *pg_cloud_clustername = NULL;
/*auto-switch service*/
bool enable_master_auto_ha = false;
/*
* zookeeper_server hostlist
* "host1:port1,host2:port2,...,hostx:postx"
*/
char *ha_zookeeper_quorum = "localhost:2181";
/*
* Displayable names for context types (enum GucContext)
*
* Note: these strings are deliberately not localized.
*/
const char *const GucContext_Names[] =
{
/* PGC_INTERNAL */ "internal",
/* PGC_POSTMASTER */ "postmaster",
/* PGC_SIGHUP */ "sighup",
/* PGC_BACKEND */ "backend",
/* PGC_SUSET */ "superuser",
/* PGC_USERSET */ "user"
};
/*
* Displayable names for source types (enum GucSource)
*
* Note: these strings are deliberately not localized.
*/
const char *const GucSource_Names[] =
{
/* PGC_S_DEFAULT */ "default",
/* PGC_S_ENV_VAR */ "environment variable",
/* PGC_S_FILE */ "configuration file",
/* PGC_S_ARGV */ "command line",
/* PGC_S_DATABASE */ "database",
/* PGC_S_USER */ "user",
/* PGC_S_CLIENT */ "client",
/* PGC_S_OVERRIDE */ "override",
/* PGC_S_INTERACTIVE */ "interactive",
/* PGC_S_TEST */ "test",
/* PGC_S_SESSION */ "session"
};
/*
* Displayable names for the groupings defined in enum config_group
*/
const char *const config_group_names[] =
{
/* UNGROUPED */
gettext_noop("Ungrouped"),
/* FILE_LOCATIONS */
gettext_noop("File Locations"),
/* CONN_AUTH */
gettext_noop("Connections and Authentication"),
/* CONN_AUTH_SETTINGS */
gettext_noop("Connections and Authentication / Connection Settings"),
/* CONN_AUTH_SECURITY */
gettext_noop("Connections and Authentication / Security and Authentication"),
/* EXTERNAL_TABLES */
gettext_noop("External Tables"),
/* APPENDONLY_TABLES */
gettext_noop("Append-Only Tables"),
/* RESOURCES */
gettext_noop("Resource Usage"),
/* RESOURCES_MEM */
gettext_noop("Resource Usage / Memory"),
/* RESOURCES_FSM */
gettext_noop("Resource Usage / Free Space Map"),
/* RESOURCES_KERNEL */
gettext_noop("Resource Usage / Kernel Resources"),
/* RESOURCES_MGM */
gettext_noop("Resource Usage / Resources Management"),
/* WAL */
gettext_noop("Write-Ahead Log"),
/* WAL_SETTINGS */
gettext_noop("Write-Ahead Log / Settings"),
/* WAL_CHECKPOINTS */
gettext_noop("Write-Ahead Log / Checkpoints"),
/* QUERY_TUNING */
gettext_noop("Query Tuning"),
/* QUERY_TUNING_METHOD */
gettext_noop("Query Tuning / Planner Method Configuration"),
/* QUERY_TUNING_COST */
gettext_noop("Query Tuning / Planner Cost Constants"),
/* QUERY_TUNING_OTHER */
gettext_noop("Query Tuning / Other Planner Options"),
/* LOGGING */
gettext_noop("Reporting and Logging"),
/* LOGGING_WHERE */
gettext_noop("Reporting and Logging / Where to Log"),
/* LOGGING_WHEN */
gettext_noop("Reporting and Logging / When to Log"),
/* LOGGING_WHAT */
gettext_noop("Reporting and Logging / What to Log"),
/* STATS */
gettext_noop("Statistics"),
/* STATS_ANALYZE */
gettext_noop("Statistics / ANALYZE Database Contents"),
/* STATS_MONITORING */
gettext_noop("Statistics / Monitoring"),
/* STATS_COLLECTOR */
gettext_noop("Statistics / Query and Index Statistics Collector"),
/* AUTOVACUUM */
gettext_noop("Autovacuum"),
/* CLIENT_CONN */
gettext_noop("Client Connection Defaults"),
/* CLIENT_CONN_STATEMENT */
gettext_noop("Client Connection Defaults / Statement Behavior"),
/* CLIENT_CONN_LOCALE */
gettext_noop("Client Connection Defaults / Locale and Formatting"),
/* CLIENT_CONN_OTHER */
gettext_noop("Client Connection Defaults / Other Defaults"),
/* LOCK_MANAGEMENT */
gettext_noop("Lock Management"),
/* COMPAT_OPTIONS */
gettext_noop("Version and Platform Compatibility"),
/* COMPAT_OPTIONS_PREVIOUS */
gettext_noop("Version and Platform Compatibility / Previous PostgreSQL Versions"),
/* COMPAT_OPTIONS_CLIENT */
gettext_noop("Version and Platform Compatibility / Other Platforms and Clients"),
/* COMPAT_OPTIONS_IGNORED */
gettext_noop("Version and Platform Compatibility / Ignored"),
/* GP_ARRAY_CONFIGURATION */
gettext_noop(PACKAGE_NAME " / Array Configuration"),
/* GP_ARRAY_TUNING */
gettext_noop(PACKAGE_NAME " / Array Tuning"),
/* GP_WORKER_IDENTITY */
gettext_noop(PACKAGE_NAME " / Worker Process Identity"),
/* GP_ERROR_HANDLING */
gettext_noop("GPDB Error Handling"),
/* PRESET_OPTIONS */
gettext_noop("Preset Options"),
/* CUSTOM_OPTIONS */
gettext_noop("Customized Options"),
/* DEVELOPER_OPTIONS */
gettext_noop("Developer Options"),
/* DEPRECATED_OPTIONS */
gettext_noop("Deprecated Options"),
/* DEFUNCT_OPTIONS */
gettext_noop("Defunct Options"),
/* help_config wants this array to be null-terminated */
NULL
};
/*
* Displayable names for GUC variable types (enum config_type)
*
* Note: these strings are deliberately not localized.
*/
const char *const config_type_names[] =
{
/* PGC_BOOL */ "bool",
/* PGC_INT */ "integer",
/* PGC_REAL */ "real",
/* PGC_STRING */ "string"
};
/*
* Contents of GUC tables
*
* See src/backend/utils/misc/README for design notes.
*
* TO ADD AN OPTION:
*
* 1. Declare a global variable of type bool, int, double, or char*
* and make use of it.
*
* 2. Decide at what times it's safe to set the option. See guc.h for
* details.
*
* 3. Decide on a name, a default value, upper and lower bounds (if
* applicable), etc.
*
* 4. Add a record below.
*
* 5. Add it to src/backend/utils/misc/postgresql.conf.sample, if
* appropriate.
*
* 6. Add it to src/bin/psql/tab-complete.c, if it's a USERSET option.
*
* 7. Don't forget to document the option.
*
* 8. If it's a new GUC_LIST option you must edit pg_dumpall.c to ensure
* it is not single quoted at dump time.
*/
/******** option records follow ********/
static struct config_bool ConfigureNamesBool[] =
{
{
{"upgrade_mode", PGC_POSTMASTER, CUSTOM_OPTIONS,
gettext_noop("Upgrade Mode"),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&gp_upgrade_mode,
false, NULL, NULL
},
{
{"maintenance_mode", PGC_POSTMASTER, CUSTOM_OPTIONS,
gettext_noop("Maintenance Mode"),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&gp_maintenance_mode,
false, NULL, NULL
},
{
{"gp_maintenance_conn", PGC_BACKEND, CUSTOM_OPTIONS,
gettext_noop("Maintenance Connection"),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&gp_maintenance_conn,
false, NULL, NULL
},
{
{"allow_segment_DML", PGC_USERSET, CUSTOM_OPTIONS,
gettext_noop("Allow DML on segments"),
NULL,
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&allow_segment_DML,
false, NULL, NULL
},
{
{"enable_seqscan", PGC_USERSET, QUERY_TUNING_METHOD,
gettext_noop("Enables the planner's use of sequential-scan plans."),
NULL
},
&enable_seqscan,
true, NULL, NULL
},
{
{"enable_indexscan", PGC_USERSET, QUERY_TUNING_METHOD,
gettext_noop("Enables the planner's use of index-scan plans."),
NULL
},
&enable_indexscan,
true, NULL, NULL
},
{
{"enable_bitmapscan", PGC_USERSET, QUERY_TUNING_METHOD,
gettext_noop("Enables the planner's use of bitmap-scan plans."),
NULL
},
&enable_bitmapscan,
true, NULL, NULL
},
{
{"enable_tidscan", PGC_USERSET, QUERY_TUNING_METHOD,
gettext_noop("Enables the planner's use of TID scan plans."),
NULL
},
&enable_tidscan,
true, NULL, NULL
},
{
{"enable_sort", PGC_USERSET, QUERY_TUNING_METHOD,
gettext_noop("Enables the planner's use of explicit sort steps."),
NULL
},
&enable_sort,
true, NULL, NULL
},
{
{"enable_hashagg", PGC_USERSET, QUERY_TUNING_METHOD,
gettext_noop("Enables the planner's use of hashed aggregation plans."),
NULL
},
&enable_hashagg,
true, NULL, NULL
},
{
{"enable_groupagg", PGC_USERSET, QUERY_TUNING_METHOD,
gettext_noop("Enables the planner's use of grouping aggregation plans."),
NULL
},
&enable_groupagg,
true, NULL, NULL
},
{
{"enable_nestloop", PGC_USERSET, QUERY_TUNING_METHOD,
gettext_noop("Enables the planner's use of nested-loop join plans."),
NULL
},
&enable_nestloop,
false, NULL, NULL
},
{
{"enable_mergejoin", PGC_USERSET, QUERY_TUNING_METHOD,
gettext_noop("Enables the planner's use of merge join plans."),
NULL
},
&enable_mergejoin,
false, NULL, NULL
},
{
{"enable_hashjoin", PGC_USERSET, QUERY_TUNING_METHOD,
gettext_noop("Enables the planner's use of hash join plans."),
NULL
},
&enable_hashjoin,
true, NULL, NULL
},
{
{"gp_enable_hashjoin_size_heuristic", PGC_USERSET, QUERY_TUNING_METHOD,
gettext_noop("In hash join plans, the smaller of the two inputs "
"(as estimated) is used to build the hash table."),
gettext_noop("If false, either input could be used to build the "
"hash table; the choice depends on the estimated hash "
"join cost, which the planner computes for both "
"alternatives. Has no effect on outer or adaptive "
"joins."),
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&gp_enable_hashjoin_size_heuristic,
false, NULL, NULL
},
{
{"gp_enable_fallback_plan", PGC_USERSET, QUERY_TUNING_METHOD,
gettext_noop("Plan types which are not enabled may be used when a "
"query would be infeasible without them."),
gettext_noop("If false, planner rejects queries that cannot be "
"satisfied using only the enabled plan types.")
},
&gp_enable_fallback_plan,
true, NULL, NULL
},
{
{"gp_enable_direct_dispatch", PGC_USERSET, QUERY_TUNING_METHOD,
gettext_noop("Enable dispatch for single-row-insert targetted mirror-pairs."),
gettext_noop("Don't involve the whole cluster if it isn't needed.")
},
&gp_enable_direct_dispatch,
true, NULL, NULL
},
{
{"gp_enable_predicate_propagation", PGC_USERSET, QUERY_TUNING_OTHER,
gettext_noop("When two expressions are equivalent (such as with "
"equijoined keys) then the planner applies predicates "
"on one expression to the other expression."),
gettext_noop("If false, planner does not copy predicates.")
},
&gp_enable_predicate_propagation,
true, NULL, NULL
},
{
{"gp_workfile_checksumming", PGC_USERSET, QUERY_TUNING_OTHER,
gettext_noop("Enable checksumming on the executor work files in order to "
"catch possible faulty writes caused by your disk drivers."),
NULL,
GUC_GPDB_ADDOPT
},
&gp_workfile_checksumming,
true, NULL, NULL
},
{
{"gp_workfile_caching", PGC_SUSET, QUERY_TUNING_OTHER,
gettext_noop("Enable work file caching"),
gettext_noop("When enabled, work files are persistent "
"and their contents can be reused."),
GUC_GPDB_ADDOPT | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&gp_workfile_caching,
false, NULL, NULL
},
{
{"force_bitmap_table_scan", PGC_USERSET, DEVELOPER_OPTIONS,
gettext_noop("Forces bitmap table scan instead of bitmap heap/ao/aoco scan."),
NULL,
GUC_GPDB_ADDOPT | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&force_bitmap_table_scan,
false, NULL, NULL
},
{
{"gp_workfile_faultinject", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Fault inject a torn page to an executor workfile."),
gettext_noop("Used to simulate a failure and test workfile checksumming."),
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE | GUC_GPDB_ADDOPT
},
&gp_workfile_faultinject,
false, NULL, NULL
},
{
{"constraint_exclusion", PGC_USERSET, QUERY_TUNING_OTHER,
gettext_noop("Enables the planner to use constraints to optimize queries."),
gettext_noop("Child table scans will be skipped if their "
"constraints guarantee that no rows match the query."),
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&constraint_exclusion,
true, NULL, NULL
},
{
{"geqo", PGC_USERSET, DEFUNCT_OPTIONS,
gettext_noop("Unused. Syntax check only for PostgreSQL compatibility."),
NULL,
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&defunct_bool,
false, NULL, NULL
},
{
/* Not for general use --- used by SET SESSION AUTHORIZATION */
{"is_superuser", PGC_INTERNAL, UNGROUPED,
gettext_noop("Shows whether the current user is a superuser."),
NULL,
GUC_REPORT | GUC_NO_SHOW_ALL | GUC_NO_RESET_ALL | GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
},
&session_auth_is_superuser,
false, NULL, NULL
},
{
{"ssl", PGC_POSTMASTER, CONN_AUTH_SECURITY,
gettext_noop("Enables SSL connections."),
NULL
},
&EnableSSL,
false, assign_ssl, NULL
},
{
{"fsync", PGC_SIGHUP, WAL_SETTINGS,
gettext_noop("Forces synchronization of updates to disk."),
gettext_noop("The server will use the fsync() system call in several places to make "
"sure that updates are physically written to disk. This insures "
"that a database cluster will recover to a consistent state after "
"an operating system or hardware crash."),
GUC_NOT_IN_SAMPLE | GUC_NO_SHOW_ALL | GUC_DISALLOW_USER_SET
},
&enableFsync,
true, NULL, NULL
},
{
{"zero_damaged_pages", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Continues processing past damaged page headers."),
gettext_noop("Detection of a damaged page header normally causes PostgreSQL to "
"report an error, aborting the current transaction. Setting "
"zero_damaged_pages to true causes the system to instead report a "
"warning, zero out the damaged page, and continue processing. This "
"behavior will destroy data, namely all the rows on the damaged page."),
GUC_NOT_IN_SAMPLE | GUC_NO_SHOW_ALL
},
&zero_damaged_pages,
false, NULL, NULL
},
{
{"memory_protect_buffer_pool", PGC_POSTMASTER, DEVELOPER_OPTIONS,
gettext_noop("Enables memory protection of the buffer pool"),
gettext_noop("Turn on memory protection of the buffer pool "
"to detect invalid accesses to the buffer pool memory."),
GUC_NOT_IN_SAMPLE | GUC_NO_SHOW_ALL
},
&memory_protect_buffer_pool, false, NULL, NULL
},
{
{"gp_flush_buffer_pages_when_evicted", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Always flushes buffer pages, regardless of dirty status"),
gettext_noop("When buffer pool pages are evicted, flush them to disk regardless of their dirty status."),
GUC_NOT_IN_SAMPLE | GUC_NO_SHOW_ALL
},
&flush_buffer_pages_when_evicted,
false, NULL, NULL
},
{
{"full_page_writes", PGC_SIGHUP, WAL_SETTINGS,
gettext_noop("Writes full pages to WAL when first modified after a checkpoint."),
gettext_noop("A page write in process during an operating system crash might be "
"only partially written to disk. During recovery, the row changes "
"stored in WAL are not enough to recover. This option writes "
"pages when first modified after a checkpoint to WAL so full recovery "
"is possible."),
GUC_NOT_IN_SAMPLE | GUC_NO_SHOW_ALL
},
&fullPageWrites,
true, NULL, NULL
},
{
{"silent_mode", PGC_POSTMASTER, LOGGING_WHEN,
gettext_noop("Runs the server silently."),
gettext_noop("If this parameter is set, the server will automatically run in the "
"background and any controlling terminals are dissociated."),
GUC_NOT_IN_SAMPLE | GUC_NO_SHOW_ALL
},
&SilentMode,
false, NULL, NULL
},
{
{"log_connections", PGC_BACKEND, LOGGING_WHAT,
gettext_noop("Logs each successful connection."),
NULL
},
&Log_connections,
false, NULL, NULL
},
{
{"log_disconnections", PGC_BACKEND, LOGGING_WHAT,
gettext_noop("Logs end of a session, including duration."),
NULL
},
&Log_disconnections,
false, NULL, NULL
},
{
{"debug_assertions", PGC_USERSET, DEVELOPER_OPTIONS,
gettext_noop("Turns on various assertion checks."),
gettext_noop("This is a debugging aid."),
GUC_NOT_IN_SAMPLE
},
&assert_enabled,
#ifdef USE_ASSERT_CHECKING
true,
#else
false,
#endif
assign_debug_assertions, NULL
},
{
/* currently undocumented, so don't show in SHOW ALL */
{"exit_on_error", PGC_USERSET, UNGROUPED,
gettext_noop("no description available"),
NULL,
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&ExitOnAnyError,
false, NULL, NULL
},
{
{"log_duration", PGC_SUSET, LOGGING_WHAT,
gettext_noop("Logs the duration of each completed SQL statement."),
NULL,
GUC_GPDB_ADDOPT
},
&log_duration,
false, NULL, NULL
},
{
{"debug_print_parse", PGC_USERSET, LOGGING_WHAT,
gettext_noop("Prints the parse tree to the server log."),
NULL
},
&Debug_print_parse,
false, NULL, NULL
},
{
{"debug_print_rewritten", PGC_USERSET, LOGGING_WHAT,
gettext_noop("Prints the parse tree after rewriting to server log."),
NULL
},
&Debug_print_rewritten,
false, NULL, NULL
},
{
{"debug_print_prelim_plan", PGC_USERSET, LOGGING_WHAT,
gettext_noop("Prints the preliminary execution plan to server log."),
NULL
},
&Debug_print_prelim_plan,
false, NULL, NULL
},
{
{"debug_print_slice_table", PGC_USERSET, LOGGING_WHAT,
gettext_noop("Prints the slice table to server log."),
NULL
},
&Debug_print_slice_table,
false, NULL, NULL
},
{
{"debug_print_plan", PGC_USERSET, LOGGING_WHAT,
gettext_noop("Prints the execution plan to server log."),
NULL
},
&Debug_print_plan,
false, NULL, NULL
},
{
{"debug_pretty_print", PGC_USERSET, LOGGING_WHAT,
gettext_noop("Indents parse and plan tree displays."),
NULL
},
&Debug_pretty_print,
false, NULL, NULL
},
{
{"log_parser_stats", PGC_SUSET, STATS_MONITORING,
gettext_noop("Writes parser performance statistics to the server log."),
NULL
},
&log_parser_stats,
false, assign_stage_log_stats, NULL
},
{
{"log_planner_stats", PGC_SUSET, STATS_MONITORING,
gettext_noop("Writes planner performance statistics to the server log."),
NULL
},
&log_planner_stats,
false, assign_stage_log_stats, NULL
},
{
{"log_executor_stats", PGC_SUSET, STATS_MONITORING,
gettext_noop("Writes executor performance statistics to the server log."),
NULL,
GUC_GPDB_ADDOPT
},
&log_executor_stats,
false, assign_stage_log_stats, NULL
},
{
{"log_statement_stats", PGC_SUSET, STATS_MONITORING,
gettext_noop("Writes cumulative performance statistics to the server log."),
NULL,
GUC_GPDB_ADDOPT
},
&log_statement_stats,
false, assign_log_stats, NULL
},
{
{"debug_udf_plan", PGC_USERSET, LOGGING_WHAT,
gettext_noop("Prints the execution plan of udf to server log."),
NULL
},
&Debug_udf_plan,
false, NULL, NULL
},
{
{"log_dispatch_stats", PGC_SUSET, STATS_MONITORING,
gettext_noop("Writes dispatcher performance statistics to the server log."),
NULL,
GUC_GPDB_ADDOPT
},
&log_dispatch_stats,
false, assign_dispatch_log_stats, NULL
},
#ifdef BTREE_BUILD_STATS
{
{"log_btree_build_stats", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("no description available"),
NULL,
GUC_NOT_IN_SAMPLE
},
&log_btree_build_stats,
false, NULL, NULL
},
#endif
{
{"explain_pretty_print", PGC_USERSET, CLIENT_CONN_OTHER,
gettext_noop("Uses the indented output format for EXPLAIN VERBOSE."),
NULL
},
&Explain_pretty_print,
true, NULL, NULL
},
{
{"track_activities", PGC_SUSET, STATS_COLLECTOR,
gettext_noop("Collects information about executing commands."),
gettext_noop("Enables the collection of information on the currently "
"executing command of each session, along with "
"the time at which that command began execution.")
},
&pgstat_track_activities,
true, NULL, NULL
},
{
{"track_counts", PGC_SUSET, STATS_COLLECTOR,
gettext_noop("Collects statistics on database activity."),
NULL
},
&pgstat_track_counts,
false, NULL, NULL
},
{
{"update_process_title", PGC_SUSET, CLIENT_CONN_OTHER,
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.")
},
&update_process_title,
true, NULL, NULL
},
{
{"autovacuum", PGC_SIGHUP, AUTOVACUUM,
gettext_noop("Starts the autovacuum subprocess."),
NULL,
GUC_NOT_IN_SAMPLE | GUC_NO_SHOW_ALL
},
&dummy_autovac,
false, assign_autovacuum_warning, NULL
},
{
{"trace_notify", PGC_USERSET, DEVELOPER_OPTIONS,
gettext_noop("Generates debugging output for LISTEN and NOTIFY."),
NULL,
GUC_NOT_IN_SAMPLE | GUC_NO_SHOW_ALL
},
&Trace_notify,
false, NULL, NULL
},
#ifdef LOCK_DEBUG
{
{"trace_locks", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("no description available"),
NULL,
GUC_NOT_IN_SAMPLE
},
&Trace_locks,
false, NULL, NULL
},
{
{"trace_userlocks", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("no description available"),
NULL,
GUC_NOT_IN_SAMPLE
},
&Trace_userlocks,
false, NULL, NULL
},
{
{"trace_lwlocks", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("no description available"),
NULL,
GUC_NOT_IN_SAMPLE
},
&Trace_lwlocks,
false, NULL, NULL
},
{
{"debug_deadlocks", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("no description available"),
NULL,
GUC_NOT_IN_SAMPLE
},
&Debug_deadlocks,
false, NULL, NULL
},
#endif
{
{"log_hostname", PGC_SIGHUP, LOGGING_WHAT,
gettext_noop("Logs the host name in the connection logs."),
gettext_noop("By default, connection logs only show the IP address "
"of the connecting host. If you want them to show the host name you "
"can turn this on, but depending on your host name resolution "
"setup it might impose a non-negligible performance penalty.")
},
&log_hostname,
false, NULL, NULL
},
{
{"sql_inheritance", PGC_USERSET, COMPAT_OPTIONS_PREVIOUS,
gettext_noop("Causes subtables to be included by default in various commands."),
NULL,
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&SQL_inheritance,
true, NULL, NULL
},
{
{"password_encryption", PGC_USERSET, CONN_AUTH_SECURITY,
gettext_noop("Encrypt passwords."),
gettext_noop("When a password is specified in CREATE USER or "
"ALTER USER without writing either ENCRYPTED or UNENCRYPTED, "
"this parameter determines whether the password is to be encrypted.")
},
&Password_encryption,
true, NULL, NULL
},
{
{"transform_null_equals", PGC_USERSET, COMPAT_OPTIONS_CLIENT,
gettext_noop("Treats \"expr=NULL\" as \"expr IS NULL\"."),
gettext_noop("When turned on, expressions of the form expr = NULL "
"(or NULL = expr) are treated as expr IS NULL, that is, they "
"return true if expr evaluates to the null value, and false "
"otherwise. The correct behavior of expr = NULL is to always "
"return null (unknown).")
},
&Transform_null_equals,
false, NULL, NULL
},
{
{"db_user_namespace", PGC_SIGHUP, CONN_AUTH_SECURITY,
gettext_noop("Enables per-database user names."),
NULL
},
&Db_user_namespace,
false, NULL, NULL
},
{
/* only here for backwards compatibility */
{"autocommit", PGC_USERSET, COMPAT_OPTIONS_IGNORED,
gettext_noop("This parameter doesn't do anything."),
gettext_noop("It's just here so that we won't choke on SET AUTOCOMMIT TO ON from 7.3-vintage clients."),
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&phony_autocommit,
true, assign_phony_autocommit, NULL
},
{
{"default_transaction_read_only", PGC_USERSET, CLIENT_CONN_STATEMENT,
gettext_noop("Sets the default read-only status of new transactions."),
NULL
},
&DefaultXactReadOnly,
false, NULL, NULL
},
{
{"transaction_read_only", PGC_USERSET, CLIENT_CONN_STATEMENT,
gettext_noop("Sets the current transaction's read-only status."),
NULL,
GUC_NO_RESET_ALL | GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
},
&XactReadOnly,
false, assign_transaction_read_only, NULL
},
{
{"add_missing_from", PGC_USERSET, COMPAT_OPTIONS_PREVIOUS,
gettext_noop("Automatically adds missing table references to FROM clauses."),
NULL
},
&add_missing_from,
false, NULL, NULL
},
{
{"check_function_bodies", PGC_USERSET, CLIENT_CONN_STATEMENT,
gettext_noop("Check function bodies during CREATE FUNCTION."),
NULL
},
&check_function_bodies,
true, NULL, NULL
},
{
{"array_nulls", PGC_USERSET, COMPAT_OPTIONS_PREVIOUS,
gettext_noop("Enable input of NULL elements in arrays."),
gettext_noop("When turned on, unquoted NULL in an array input "
"value means a null value; "
"otherwise it is taken literally.")
},
&Array_nulls,
true, NULL, NULL
},
{
{"default_with_oids", PGC_USERSET, COMPAT_OPTIONS_PREVIOUS,
gettext_noop("Create new tables with OIDs by default."),
NULL,
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&default_with_oids,
false, NULL, NULL
},
{
{"redirect_stderr", PGC_POSTMASTER, DEFUNCT_OPTIONS,
gettext_noop("Defunct: start a subprocess to capture stderr output into log files."),
NULL,
GUC_NO_SHOW_ALL
},
&Redirect_stderr,
true, NULL, NULL
},
{
{"log_truncate_on_rotation", PGC_SIGHUP, LOGGING_WHERE,
gettext_noop("Truncate existing log files of same name during log rotation."),
NULL
},
&Log_truncate_on_rotation,
false, NULL, NULL
},
{
{"trace_sort", PGC_USERSET, DEVELOPER_OPTIONS,
gettext_noop("Emit information about resource usage in sorting."),
NULL,
GUC_NOT_IN_SAMPLE | GUC_NO_SHOW_ALL
},
&trace_sort,
false, NULL, NULL
},
#ifdef WAL_DEBUG
{
{"wal_debug", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Emit WAL-related debugging output."),
NULL,
GUC_NOT_IN_SAMPLE
},
&XLOG_DEBUG,
false, NULL, NULL
},
#endif
{
{"integer_datetimes", PGC_INTERNAL, PRESET_OPTIONS,
gettext_noop("Datetimes are integer based."),
NULL,
GUC_REPORT | GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
},
&integer_datetimes,
#ifdef HAVE_INT64_TIMESTAMP
true, NULL, NULL
#else
false, NULL, NULL
#endif
},
{
{"krb_caseins_users", PGC_POSTMASTER, CONN_AUTH_SECURITY,
gettext_noop("Sets whether Kerberos user names should be treated as case-insensitive."),
NULL
},
&pg_krb_caseins_users,
false, NULL, NULL
},
{
{"escape_string_warning", PGC_USERSET, COMPAT_OPTIONS_PREVIOUS,
gettext_noop("Warn about backslash escapes in ordinary string literals."),
NULL
},
&escape_string_warning,
true, NULL, NULL
},
{
{"standard_conforming_strings", PGC_USERSET, COMPAT_OPTIONS_PREVIOUS,
gettext_noop("'...' strings treat backslashes literally."),
NULL,
GUC_REPORT
},
&standard_conforming_strings,
false, NULL, NULL
},
{
/* MPP-9772, MPP-9773: remove support for CREATE INDEX CONCURRENTLY */
{"gp_create_index_concurrently", PGC_USERSET, DEVELOPER_OPTIONS,
gettext_noop("Allow concurrent index creation."),
NULL,
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&gp_create_index_concurrently,
false, NULL, NULL
},
{
{"gp_enable_multiphase_agg", PGC_USERSET, QUERY_TUNING_METHOD,
gettext_noop("Enables the planner's use of two- or three-stage parallel aggregation plans."),
gettext_noop("Allows partial aggregation before motion.")
},
&gp_enable_multiphase_agg,
true, NULL, NULL
},
{
{"gp_enable_hash_partitioned_tables", PGC_USERSET, DEVELOPER_OPTIONS,
gettext_noop("Enable hash partitioned tables."),
NULL,
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&gp_enable_hash_partitioned_tables,
false, NULL, NULL
},
{
{"gp_foreign_data_access", PGC_USERSET, DEVELOPER_OPTIONS,
gettext_noop("Enable SQL/MED operation."),
NULL,
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&gp_foreign_data_access,
false, NULL, NULL
},
{
{"gp_setwith_alter_storage", PGC_USERSET, DEVELOPER_OPTIONS,
gettext_noop("Let SET WITH alter the storage options."),
NULL,
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&gp_setwith_alter_storage,
false, NULL, NULL
},
{
{"gp_enable_tablespace_auto_mkdir", PGC_USERSET, DEVELOPER_OPTIONS,
gettext_noop("Enable tablespace code to create empty directory if necessary"),
NULL,
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&gp_enable_tablespace_auto_mkdir,
false, NULL, NULL
},
{
{"gp_enable_preunique", PGC_USERSET, QUERY_TUNING_METHOD,
gettext_noop("Enable 2-phase duplicate removal."),
gettext_noop("If true, planner may choose to remove duplicates in "
"two phases--before and after redistribution.")
},
&gp_enable_preunique,
true, NULL, NULL
},
{
{"gp_eager_preunique", PGC_USERSET, QUERY_TUNING_METHOD,
gettext_noop("Experimental feature: 2-phase duplicate removal - cost override."),
NULL,
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&gp_eager_preunique,
false, NULL, NULL
},
{
{"gp_enable_sequential_window_plans", PGC_USERSET, QUERY_TUNING_METHOD,
gettext_noop("Experimental feature: Enable non-parallel window plans."),
gettext_noop("The planner will evaluate window functions associated with separate "
"window specifications sequentially rather that in parallel.")
},
&gp_enable_sequential_window_plans,
true, NULL, NULL
},
{
{"gp_hashagg_recalc_density", PGC_USERSET, QUERY_TUNING_METHOD,
gettext_noop("(Obsolete) Executor can recalculate grouping density based on pre-spill real density."),
NULL,
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&defunct_bool,
true, NULL, NULL
},
{
{"gp_enable_agg_distinct", PGC_USERSET, QUERY_TUNING_METHOD,
gettext_noop("Enable 2-phase aggregation to compute a single distinct-qualified aggregate."),
NULL,
},
&gp_enable_agg_distinct,
true, NULL, NULL
},
{
{"gp_enable_agg_distinct_pruning", PGC_USERSET, QUERY_TUNING_METHOD,
gettext_noop("Enable 3-phase aggregation and join to compute distinct-qualified aggregates."),
NULL,
},
&gp_enable_dqa_pruning,
true, NULL, NULL
},
{
{"gp_enable_groupext_distinct_pruning", PGC_USERSET, QUERY_TUNING_METHOD,
gettext_noop("Enable 3-phase aggregation and join to compute distinct-qualified aggregates"
" on grouping extention queries."),
NULL,
},
&gp_enable_groupext_distinct_pruning,
true, NULL, NULL
},
{
{"gp_enable_groupext_distinct_gather", PGC_USERSET, QUERY_TUNING_METHOD,
gettext_noop("Enable gathering data to a single node to compute distinct-qualified aggregates"
" on grouping extention queries."),
NULL,
},
&gp_enable_groupext_distinct_gather,
true, NULL, NULL
},
{
{"gp_eager_agg_distinct_pruning", PGC_USERSET, DEVELOPER_OPTIONS,
gettext_noop("Prefer 3-phase aggregation [and join] to compute distinct-qualified aggregates."),
gettext_noop("The planner will prefer to use 3-phase aggregation and join to compute "
"distinct-qualified aggregates whenever enabled and possible"
"regardless of cost estimates."),
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&gp_eager_dqa_pruning,
false, NULL, NULL
},
{
{"gp_eager_one_phase_agg", PGC_USERSET, DEVELOPER_OPTIONS,
gettext_noop("Prefer 1-phase aggregation."),
gettext_noop("The planner will prefer to use 1-phase aggregation whenever possible"
"regardless of cost estimates."),
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&gp_eager_one_phase_agg,
false, NULL, NULL
},
{
{"gp_eager_two_phase_agg", PGC_USERSET, DEVELOPER_OPTIONS,
gettext_noop("Prefer 2-phase aggregation."),
gettext_noop("The planner will prefer to use 2-phase aggregation whenever"
"enabled and possible regardless of cost estimates."),
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&gp_eager_two_phase_agg,
false, NULL, NULL
},
{
{"gp_dev_notice_agg_cost", PGC_USERSET, DEVELOPER_OPTIONS,
gettext_noop("Trace aggregate costing decisions as NOTICEs."),
NULL,
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&gp_dev_notice_agg_cost,
false, NULL, NULL
},
{
{"gp_enable_explain_allstat", PGC_USERSET, CLIENT_CONN_OTHER,
gettext_noop("Experimental feature: dump stats for all segments in EXPLAIN ANALYZE."),
NULL,
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&gp_enable_explain_allstat,
false, NULL, NULL
},
{
{"gp_dump_memory_usage", PGC_USERSET, CLIENT_CONN_OTHER,
gettext_noop("Save memory usage in each segment."),
NULL,
GUC_GPDB_ADDOPT | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&gp_dump_memory_usage,
false, NULL, NULL
},
{
{"gp_enable_sort_limit", PGC_USERSET, QUERY_TUNING_METHOD,
gettext_noop("Enable LIMIT operation to be performed while sorting."),
gettext_noop("Sort more efficiently when plan requires the first <n> rows at most.")
},
&gp_enable_sort_limit,
true, NULL, NULL
},
{
{"gp_enable_sort_distinct", PGC_USERSET, QUERY_TUNING_METHOD,
gettext_noop("Enable duplicate removal to be performed while sorting."),
gettext_noop("Reduces data handling when plan calls for removing duplicates from sorted rows.")
},
&gp_enable_sort_distinct,
true, NULL, NULL
},
{
{"gp_parquet_insert_sort", PGC_USERSET, RESOURCES_MEM,
gettext_noop("Enable sorting of tuples during insertion in parquet partitioned tables."),
gettext_noop("Reduces memory usage required for insertion by keeping on part open at a time"),
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE | GUC_GPDB_ADDOPT
},
&gp_parquet_insert_sort,
true, NULL, NULL
},
{
{"gp_enable_mk_sort", PGC_USERSET, QUERY_TUNING_METHOD,
gettext_noop("Enable multi-key sort."),
gettext_noop("A faster sort."),
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE | GUC_GPDB_ADDOPT
},
&gp_enable_mk_sort,
true, NULL, NULL
},
{
{"gp_enable_motion_mk_sort", PGC_USERSET, QUERY_TUNING_METHOD,
gettext_noop("Enable multi-key sort in sorted motion recv."),
gettext_noop("A faster sort for recv motion"),
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE | GUC_GPDB_ADDOPT
},
&gp_enable_motion_mk_sort,
true, NULL, NULL
},
#ifdef USE_ASSERT_CHECKING
{
{"gp_mk_sort_check", PGC_USERSET, QUERY_TUNING_METHOD,
gettext_noop("Extensive check mk_sort"),
gettext_noop("Expensive debug checking"),
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE | GUC_GPDB_ADDOPT
},
&gp_mk_sort_check,
false, NULL, NULL
},
#endif
{
{"gp_hashagg_streambottom", PGC_USERSET, QUERY_TUNING_METHOD,
gettext_noop("Stream the bottom stage of two stage hashagg"),
gettext_noop("Avoid spilling at the bottom stage of two stage hashagg"),
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&gp_hashagg_streambottom,
true, NULL, NULL
},
{
{"gp_enable_motion_deadlock_sanity", PGC_USERSET, DEVELOPER_OPTIONS,
gettext_noop("Enable verbose check at planning time."),
NULL,
GUC_NO_RESET_ALL | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&gp_enable_motion_deadlock_sanity,
false, NULL, NULL
},
{
{"gp_adjust_selectivity_for_outerjoins", PGC_USERSET, QUERY_TUNING_METHOD,
gettext_noop("Adjust selectivity of null tests over outer joins."),
NULL,
GUC_NOT_IN_SAMPLE
},
&gp_adjust_selectivity_for_outerjoins,
true, NULL, NULL
},
{
{"gp_selectivity_damping_for_scans", PGC_USERSET, QUERY_TUNING_METHOD,
gettext_noop("Damping of selectivities for clauses over the same base relation."),
NULL,
GUC_NOT_IN_SAMPLE | GUC_NO_SHOW_ALL
},
&gp_selectivity_damping_for_scans,
true, NULL, NULL
},
{
{"gp_selectivity_damping_for_joins", PGC_USERSET, QUERY_TUNING_METHOD,
gettext_noop("Damping of selectivities in join clauses."),
NULL,
GUC_NOT_IN_SAMPLE | GUC_NO_SHOW_ALL
},
&gp_selectivity_damping_for_joins,
false, NULL, NULL
},
{
{"gp_selectivity_damping_sigsort", PGC_USERSET, QUERY_TUNING_METHOD,
gettext_noop("Sort selectivities by ascending significance, i.e. smallest first"),
NULL,
GUC_NOT_IN_SAMPLE | GUC_NO_SHOW_ALL
},
&gp_selectivity_damping_sigsort,
true, NULL, NULL
},
{
{"gp_enable_interconnect_aggressive_retry", PGC_USERSET, DEVELOPER_OPTIONS,
gettext_noop("Enable application-level fast-track interconnect retries"),
NULL,
GUC_NO_RESET_ALL | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&gp_interconnect_aggressive_retry,
true, NULL, NULL
},
{
{"gp_crash_recovery_abort_suppress_fatal", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Warning about crash recovery abort transaction issue"),
NULL,
GUC_NOT_IN_SAMPLE | GUC_NO_SHOW_ALL
},
&gp_crash_recovery_abort_suppress_fatal,
false, NULL, NULL
},
{
{"gp_persistent_statechange_suppress_error", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Warning about persistent state-change issue"),
NULL,
GUC_NOT_IN_SAMPLE | GUC_NO_SHOW_ALL
},
&gp_persistent_statechange_suppress_error,
false, NULL, NULL
},
{
{"gp_select_invisible", PGC_USERSET, DEVELOPER_OPTIONS,
gettext_noop("Use dummy snapshot for MVCC visibility calculation."),
NULL,
GUC_NOT_IN_SAMPLE | GUC_NO_SHOW_ALL | GUC_GPDB_ADDOPT
},
&gp_select_invisible,
false, NULL, NULL
},
{
{"gp_fts_probe_pause", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Stop active probes."),
NULL,
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&gp_fts_probe_pause,
false, gpvars_assign_gp_fts_probe_pause, NULL
},
{
{"gp_debug_pgproc", PGC_POSTMASTER, DEVELOPER_OPTIONS,
gettext_noop("Print debug info relevant to PGPROC."),
NULL /* long description */,
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&gp_debug_pgproc,
false, NULL, NULL
},
{
{"Debug_print_combocid_detail", PGC_USERSET, DEVELOPER_OPTIONS,
gettext_noop("When running into combocid limit, emit detailed snapshot information."),
NULL,
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_print_combocid_detail,
false, NULL, NULL
},
{
{"gp_appendonly_verify_block_checksums", PGC_USERSET, DEVELOPER_OPTIONS,
gettext_noop("Verify the append-only block checksum when reading."),
NULL,
GUC_NOT_IN_SAMPLE | GUC_NO_SHOW_ALL
},
&gp_appendonly_verify_block_checksums,
false, NULL, NULL
},
{
{"gp_appendonly_verify_write_block", PGC_USERSET, DEVELOPER_OPTIONS,
gettext_noop("Verify the append-only block as it is being written."),
NULL,
GUC_NOT_IN_SAMPLE | GUC_NO_SHOW_ALL
},
&gp_appendonly_verify_write_block,
false, NULL, NULL
},
{
{"gp_heap_require_relhasoids_match", PGC_USERSET, DEVELOPER_OPTIONS,
gettext_noop("Issue an error on discovery of a mismatch between relhasoids and a tuple header."),
NULL,
GUC_NOT_IN_SAMPLE | GUC_NO_SHOW_ALL
},
&gp_heap_require_relhasoids_match,
true, NULL, NULL
},
{
{"gp_cost_hashjoin_chainwalk", PGC_USERSET, QUERY_TUNING_COST,
gettext_noop("Enable the cost for walking the chain in the hash join"),
NULL,
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&gp_cost_hashjoin_chainwalk,
false, NULL, NULL
},
{
{"gp_set_read_only", PGC_SUSET, GP_ARRAY_CONFIGURATION,
gettext_noop("Sets the system read only"),
NULL,
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&gp_set_read_only,
false, NULL, NULL
},
{
{"gp_set_proc_affinity", PGC_POSTMASTER, RESOURCES_KERNEL,
gettext_noop("On postmaster startup, attempt to bind postmaster to a processor"),
NULL
},
&gp_set_proc_affinity,
false, NULL, NULL
},
{
{"gp_is_writer", PGC_BACKEND, GP_WORKER_IDENTITY,
gettext_noop("True in a worker process which can directly update its local database segment."),
NULL,
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
},
&Gp_is_writer,
false, NULL, NULL
},
{
{"gp_enable_functions", PGC_USERSET, DEFUNCT_OPTIONS,
gettext_noop("Enable functions that must use the callback from the QE to QD."),
NULL,
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&defunct_bool,
false, NULL, NULL
},
{
{"gp_reraise_signal", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Do we attempt to dump core when a serious problem occurs."),
NULL,
GUC_NO_RESET_ALL
},
&gp_reraise_signal,
true, NULL, NULL
},
{
{"gp_backup_directIO", PGC_USERSET, DEVELOPER_OPTIONS,
gettext_noop("Enable direct IO dump"),
NULL
},
&gp_backup_directIO,
false, NULL, NULL
},
{
{"gp_external_enable_exec", PGC_POSTMASTER, EXTERNAL_TABLES,
gettext_noop("Enable selecting from an external table with an EXECUTE clause."),
NULL
},
&gp_external_enable_exec,
true, NULL, NULL
},
{
{"gp_enable_fast_sri", PGC_USERSET, QUERY_TUNING_OTHER,
gettext_noop("Enable single-slice single-row inserts."),
NULL
},
&gp_enable_fast_sri,
true, NULL, NULL
},
{
{"gp_interconnect_full_crc", PGC_USERSET, QUERY_TUNING_OTHER,
gettext_noop("Sanity check incoming data stream."),
NULL,
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE | GUC_GPDB_ADDOPT
},
&gp_interconnect_full_crc,
false, NULL, NULL
},
{
{"gp_interconnect_elide_setup", PGC_USERSET, QUERY_TUNING_OTHER,
gettext_noop("Avoid performing full startup handshake for every statement."),
NULL,
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE | GUC_GPDB_ADDOPT
},
&gp_interconnect_elide_setup,
true, NULL, NULL
},
{
{"gp_interconnect_log_stats", PGC_USERSET, QUERY_TUNING_OTHER,
gettext_noop("Emit statistics from the UDP-IC at the end of every statement."),
NULL,
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE | GUC_GPDB_ADDOPT
},
&gp_interconnect_log_stats,
false, NULL, NULL
},
{
{"gp_interconnect_cache_future_packets", PGC_USERSET, GP_ARRAY_TUNING,
gettext_noop("Control whether future packets are cached."),
NULL,
},
&gp_interconnect_cache_future_packets,
true, NULL, NULL
},
{
{"gp_version_mismatch_error", PGC_USERSET, QUERY_TUNING_OTHER,
gettext_noop("QD/QE version string mismatches reported as an error"),
NULL,
GUC_NOT_IN_SAMPLE | GUC_NO_SHOW_ALL
},
&gp_version_mismatch_error,
true, NULL, NULL
},
{
{"gp_external_grant_privileges", PGC_POSTMASTER, EXTERNAL_TABLES,
gettext_noop("Enable non superusers to create http or gpfdist external tables."),
NULL
},
&gp_external_grant_privileges,
false, NULL, NULL
},
{
{"ignore_system_indexes", PGC_BACKEND, DEVELOPER_OPTIONS,
gettext_noop("Disables reading from system indexes."),
gettext_noop("It does not prevent updating the indexes, so it is safe "
"to use. The worst consequence is slowness."),
GUC_NOT_IN_SAMPLE | GUC_NO_SHOW_ALL
},
&IgnoreSystemIndexes,
false, NULL, NULL
},
{
{"debug_print_full_dtm", PGC_SUSET, LOGGING_WHAT,
gettext_noop("Prints full DTM information to server log."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_print_full_dtm,
false, NULL, NULL
},
{
{"debug_print_snapshot_dtm", PGC_SUSET, LOGGING_WHAT,
gettext_noop("Prints snapshot DTM information to server log."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_print_snapshot_dtm,
false, NULL, NULL
},
{
{"debug_print_qd_mirroring", PGC_SUSET, LOGGING_WHAT,
gettext_noop("Prints QD mirroring information to server log."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_print_qd_mirroring,
false, NULL, NULL
},
{
{"debug_permit_same_host_standby", PGC_SUSET, LOGGING_WHAT,
gettext_noop("Permits QD mirroring standby to exist on same host as primary."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_permit_same_host_standby,
false, NULL, NULL
},
{
{"Debug_print_semaphore_detail", PGC_SUSET, LOGGING_WHAT,
gettext_noop("Print semaphore detailed information."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_print_semaphore_detail,
false, NULL, NULL
},
{
{"debug_disable_distributed_snapshot", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Disables distributed snapshots."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_disable_distributed_snapshot,
false, NULL, NULL
},
{
{"debug_abort_after_distributed_prepared", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Cause an abort after all segments are prepared but before the distributed commit is written."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_abort_after_distributed_prepared,
false, NULL, NULL
},
{
{"debug_abort_after_segment_prepared", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Cause an abort after segment has written prepared XLOG record."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_abort_after_segment_prepared,
false, NULL, NULL
},
{
{"debug_print_tablespace", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Print TABLESPACE debugging information."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_print_tablespace,
false, NULL, NULL
},
{
{"debug_appendonly_print_blockdirectory", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Print log messages for append-only block directory."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_appendonly_print_blockdirectory,
false, NULL, NULL
},
{
{"Debug_appendonly_print_read_block", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Print log messages for append-only reads."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_appendonly_print_read_block,
false, NULL, NULL
},
{
{"Debug_appendonly_print_append_block", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Print log messages for append-only writes."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_appendonly_print_append_block,
false, NULL, NULL
},
{
{"debug_appendonly_print_insert", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Print log messages for append-only insert."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_appendonly_print_insert,
false, NULL, NULL
},
{
{"debug_appendonly_print_insert_tuple", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Print log messages for append-only insert tuples (caution -- generates a lot of log!)."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_appendonly_print_insert_tuple,
false, NULL, NULL
},
{
{"debug_appendonly_print_scan", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Print log messages for append-only scan."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_appendonly_print_scan,
false, NULL, NULL
},
{
{"debug_appendonly_print_scan_tuple", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Print log messages for append-only scan tuples (caution -- generates a lot of log!)."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_appendonly_print_scan_tuple,
false, NULL, NULL
},
{
{"debug_appendonly_print_storage_headers", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Print log messages for append-only storage headers."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_appendonly_print_storage_headers,
false, NULL, NULL
},
{
{"debug_appendonly_print_verify_write_block", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Print log messages for append-only verify block during write."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_appendonly_print_verify_write_block,
false, NULL, NULL
},
{
{"debug_appendonly_use_no_toast", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Use no toast for an append-only table. Store the large row inline."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_appendonly_use_no_toast,
true, NULL, NULL
},
{
{"debug_appendonly_print_segfile_choice", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Print log messages for append-only writers about their choice for AO segment file."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_appendonly_print_segfile_choice,
false, NULL, NULL
},
{
{"debug_appendonly_print_datumstream", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Print log messages for append-only datum stream content."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_appendonly_print_datumstream,
false, NULL, NULL
},
{
{"Debug_querycontext_print_tuple", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Print log messages for query context dispatching of a catalog tuple."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_querycontext_print_tuple,
false, NULL, NULL
},
{
{"Debug_querycontext_print", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Print query context content message for debug."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_querycontext_print,
false, NULL, NULL
},
{
{"debug_gp_relation_node_fetch_wait_for_debugging", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Wait for debugger attach for MPP-16395 RelationFetchGpRelationNodeForXLog issue."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_gp_relation_node_fetch_wait_for_debugging,
false, NULL, NULL
},
{
{"debug_xlog_insert_print", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Print XLOG Insert record debugging information."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_xlog_insert_print,
false, NULL, NULL
},
{
{"debug_persistent_print", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Print persistent file-system object debugging information."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_persistent_print,
false, NULL, NULL
},
{
{"debug_persistent_recovery_print", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Print persistent recovery debugging information."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_persistent_recovery_print,
false, NULL, NULL
},
{
{"debug_persistent_store_print", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Print persistent file-system object store debugging information."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_persistent_store_print,
false, NULL, NULL
},
{
{"debug_persistent_bootstrap_print", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Print persistent store debugging information during bootstrap."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_persistent_bootstrap_print,
false, NULL, NULL
},
{
{"Debug_bulk_load_bypass_wal", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Use new bulk load bypass WAL logic."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_bulk_load_bypass_wal,
true, NULL, NULL
},
{
{"debug_persistent_appendonly_commit_count_print", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Print persistent Append-Only resync commit count information."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_persistent_appendonly_commit_count_print,
true, NULL, NULL
},
{
{"debug_cancel_print", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Print cancel detail information."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_cancel_print,
false, NULL, NULL
},
{
{"debug_datumstream_write_print_small_varlena_info", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Print datum stream write small varlena information."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_datumstream_write_print_small_varlena_info,
false, NULL, NULL
},
{
{"debug_datumstream_write_print_large_varlena_info", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Print datum stream write large varlena information."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_datumstream_write_print_large_varlena_info,
false, NULL, NULL
},
{
{"debug_datumstream_read_check_large_varlena_integrity", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Check datum stream large object integrity."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_datumstream_read_check_large_varlena_integrity,
false, NULL, NULL
},
{
{"debug_datumstream_block_read_check_integrity", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Check datum stream block read integrity."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_datumstream_block_read_check_integrity,
false, NULL, NULL
},
{
{"debug_datumstream_block_write_check_integrity", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Check datum stream block write integrity."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_datumstream_block_write_check_integrity,
false, NULL, NULL
},
{
{"debug_datumstream_read_print_varlena_info", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Print datum stream read varlena information."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_datumstream_read_print_varlena_info,
false, NULL, NULL
},
{
{"debug_datumstream_write_use_small_initial_buffers", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Use small datum stream write buffers to stress growing logic."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_datumstream_write_use_small_initial_buffers,
false, NULL, NULL
},
{
{"debug_database_command_print", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Print database command debugging information."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_database_command_print,
false, NULL, NULL
},
{
{"gp_initdb_mirrored", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Indicate we are initializing a mirrored cluster during initdb."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&gp_initdb_mirrored,
false, NULL, NULL
},
{
{"gp_before_persistence_work", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Indicate we are initializing / upgrading and do not want to do persistence work yet."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&gp_before_persistence_work,
false, NULL, NULL
},
{
{"gp_before_filespace_setup", PGC_POSTMASTER, DEVELOPER_OPTIONS,
gettext_noop("Indicates that the gp_persistent_filespace_node table is not setup and should not be used for lookups."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&gp_before_filespace_setup,
false, NULL, NULL
},
{
{"gp_startup_integrity_checks", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Perform integrity checks after performing startup but before allowing connections in."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&gp_startup_integrity_checks,
true, NULL, NULL
},
{
{"debug_print_xlog_relation_change_info", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Print relation change information"),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_print_xlog_relation_change_info,
false, NULL, NULL
},
{
{"debug_print_xlog_relation_change_info_skip_issues_only", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Print relation change information only when there is a skip issue"),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_print_xlog_relation_change_info_skip_issues_only,
false, NULL, NULL
},
{
{"debug_print_xlog_relation_change_info_backtrace_skip_issues", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Print relation change information backtrace when there is a skip issue"),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_print_xlog_relation_change_info_backtrace_skip_issues,
false, NULL, NULL
},
{
{"debug_check_for_invalid_persistent_tid", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Check for invalid persistent TID"),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_check_for_invalid_persistent_tid,
false, NULL, NULL
},
{
{"test_appendonly_override", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("For testing purposes, change the default of the appendonly create table option."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Test_appendonly_override,
false, NULL, NULL
},
{
{"gohdb_appendonly_override", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("For testing purposes, change the default of the appendonly create table option. This setting only affect the heap relation created in shared database with default tablespace."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Gohdb_appendonly_override,
true, NULL, NULL
},
{
{"test_print_direct_dispatch_info", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("For testing purposes, print information about direct dispatch decisions."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Test_print_direct_dispatch_info,
false, NULL, NULL
},
{
{"debug_bitmap_print_insert", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Print log messages for bitmap index insert routines (caution-- generate a lot of logs!)"),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_bitmap_print_insert,
false, NULL, NULL
},
{
{"gp_permit_persistent_metadata_update", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Permit updates to persistent metadata tables."),
gettext_noop("For system repair by experts."),
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE | GUC_GPDB_ADDOPT
},
&gp_permit_persistent_metadata_update,
false, NULL, NULL
},
{
{"gp_permit_relation_node_change", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Permit updates to gp_relation_node tables."),
gettext_noop("For system repair by experts."),
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE | GUC_GPDB_ADDOPT
},
&gp_permit_relation_node_change,
false, NULL, NULL
},
{
{"test_checksum_override", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("For testing purposes, change the default of the checksum create table option."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Test_checksum_override,
false, NULL, NULL
},
{
{"master_mirroring_administrator_disable", PGC_POSTMASTER, GP_ARRAY_CONFIGURATION,
gettext_noop("Used by gpstart to indicate the standby master was not started by the administrator."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Master_mirroring_administrator_disable,
false, NULL, NULL
},
{
{"debug_dtm_action_primary", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Specify if the primary or mirror segment is the target of the debug DTM action."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_dtm_action_primary,
DEBUG_DTM_ACTION_PRIMARY_DEFAULT, NULL, NULL
},
{
{"gp_disable_tuple_hints", PGC_USERSET, DEVELOPER_OPTIONS,
gettext_noop("Specify if reader should set hint bits on tuples."),
NULL,
GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE | GUC_GPDB_ADDOPT
},
&gp_disable_tuple_hints,
true, NULL, NULL
},
{
{"debug_print_server_processes", PGC_SUSET, LOGGING_WHAT,
gettext_noop("Prints server process management to server log."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_print_server_processes,
false, NULL, NULL
},
{
{"debug_print_control_checkpoints", PGC_SUSET, LOGGING_WHAT,
gettext_noop("Prints pg_control file checkpoint changes to server log."),
NULL,
GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_print_control_checkpoints,
false, NULL, NULL
},
{
{"debug_print_execution_detail", PGC_SUSET, LOGGING_WHAT,
gettext_noop("Prints query execution details for debug to server log."),
NULL,
GUC_GPDB_ADDOPT | GUC_SUPERUSER_ONLY | GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
},
&Debug_print_execution_detail,
false, NULL, NULL
},