File system_parameter.h¶
File List > base > system_parameter.h
Go to the documentation of this file
/*
* Copyright 2008 Search Solution Corporation
* Copyright 2016 CUBRID Corporation
*
* Licensed 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.
*
*/
/*
* system_parameter.h - system parameters
*/
#ifndef _SYSTEM_PARAMETER_H_
#define _SYSTEM_PARAMETER_H_
#ident "$Id$"
#include "config.h"
#include <stdio.h>
#include "error_manager.h"
#include "error_code.h"
#include "porting.h"
#include "porting_inline.hpp"
#include "chartype.h"
typedef enum
{
PRM_ERR_NO_ERROR = NO_ERROR,
PRM_ERR_NOT_DIRECTORY = 2,
PRM_ERR_INIT_FILE_NOT_CREATED = 3,
PRM_ERR_CANT_WRITE = 4,
PRM_ERR_CANT_ACCESS = 6,
PRM_ERR_NO_HOME = 7,
PRM_ERR_NO_VALUE = 8,
PRM_ERR_CANT_OPEN_INIT = 9,
PRM_ERR_BAD_LINE = 10,
PRM_ERR_BAD_ENV_VAR = 11,
PRM_ERR_UNKNOWN_PARAM = 12,
PRM_ERR_BAD_VALUE = 13,
PRM_ERR_NO_MEM_FOR_PRM = 14,
PRM_ERR_BAD_STRING = 15,
PRM_ERR_BAD_RANGE = 16,
PRM_ERR_UNIX_ERROR = 17,
PRM_ERR_NO_MSG = 18,
PRM_ERR_RESET_BAD_RANGE = 19,
PRM_ERR_KEYWROD_INFO_INT = 20,
PRM_ERR_KEYWORK_INFO_FLOAT = 21,
PRM_ERR_DEPRICATED = 22,
PRM_ERR_NOT_BOTH = 23,
PRM_ERR_CANNOT_CHANGE = 24,
PRM_ERR_NOT_FOR_CLIENT = 25,
PRM_ERR_NOT_FOR_SERVER = 26,
PRM_ERR_NOT_SOLE_TRAN = 27,
PRM_ERR_COMM_ERR = 28,
PRM_ERR_FILE_ERR = 29,
PRM_ERR_NOT_FOR_CLIENT_NO_AUTH = 30,
PRM_ERR_BAD_PARAM = 31,
PRM_ERR_INVALID_HOSTNAME = 32,
PRM_ERR_EMPTY_HOSTS_CONF = 33,
PRM_ERR_FILE_NOT_FOUND = 34
} SYSPRM_ERR;
enum compat_mode
{
COMPAT_CUBRID,
COMPAT_MYSQL,
COMPAT_ORACLE
/*
* COMPAT_ANSI, COMPAT_DB2, COMPAT_MAXDB, COMPAT_MSSQL, COMPAT_POSTGRESQL */
};
typedef enum compat_mode COMPAT_MODE;
enum query_trace_format
{
QUERY_TRACE_TEXT = 1,
QUERY_TRACE_JSON
};
typedef enum query_trace_format QUERY_TRACE_FORMAT;
/* NOTE:
* System parameter ids must respect the order in prm_Def array
* When adding a new system paramter, insert it before PRM_LAST_ID and change PRM_LAST_ID to it
*/
enum param_id
{
PRM_FIRST_ID = 0,
PRM_ID_ER_LOG_DEBUG = 0,
PRM_ID_ER_BTREE_DEBUG,
PRM_ID_ER_LOG_LEVEL,
PRM_ID_ER_LOG_WARNING,
PRM_ID_ER_EXIT_ASK,
PRM_ID_ER_LOG_SIZE,
PRM_ID_ER_LOG_FILE,
PRM_ID_ACCESS_IP_CONTROL,
PRM_ID_ACCESS_IP_CONTROL_FILE,
PRM_ID_IO_LOCKF_ENABLE,
PRM_ID_SR_NBUFFERS,
PRM_ID_SORT_BUFFER_SIZE,
PRM_ID_PB_BUFFER_FLUSH_RATIO,
PRM_ID_PB_NBUFFERS,
PRM_ID_PAGE_BUFFER_SIZE,
PRM_ID_HF_UNFILL_FACTOR,
PRM_ID_HF_MAX_BESTSPACE_ENTRIES,
PRM_ID_BT_UNFILL_FACTOR,
PRM_ID_BT_OID_NBUFFERS,
PRM_ID_BT_OID_BUFFER_SIZE,
PRM_ID_BT_INDEX_SCAN_OID_ORDER,
PRM_ID_BOSR_MAXTMP_PAGES,
PRM_ID_LK_TIMEOUT_MESSAGE_DUMP_LEVEL,
PRM_ID_LK_ESCALATION_AT,
PRM_ID_LK_ROLLBACK_ON_LOCK_ESCALATION,
PRM_ID_LK_TIMEOUT_SECS,
PRM_ID_LK_TIMEOUT,
PRM_ID_LK_RUN_DEADLOCK_INTERVAL,
PRM_ID_LOG_NBUFFERS,
PRM_ID_LOG_BUFFER_SIZE,
PRM_ID_LOG_CHECKPOINT_NPAGES,
PRM_ID_LOG_CHECKPOINT_SIZE,
PRM_ID_LOG_CHECKPOINT_INTERVAL_SECS,
PRM_ID_LOG_CHECKPOINT_INTERVAL,
PRM_ID_LOG_CHECKPOINT_SLEEP_MSECS,
PRM_ID_LOG_BACKGROUND_ARCHIVING,
PRM_ID_LOG_ISOLATION_LEVEL,
PRM_ID_LOG_MEDIA_FAILURE_SUPPORT,
PRM_ID_COMMIT_ON_SHUTDOWN,
PRM_ID_SHUTDOWN_WAIT_TIME_IN_SECS,
PRM_ID_CSQL_AUTO_COMMIT,
PRM_ID_LOG_SWEEP_CLEAN,
PRM_ID_WS_HASHTABLE_SIZE,
PRM_ID_WS_MEMORY_REPORT,
PRM_ID_GC_ENABLE,
PRM_ID_TCP_PORT_ID,
PRM_ID_TCP_CONNECTION_TIMEOUT,
PRM_ID_OPTIMIZATION_LEVEL,
PRM_ID_QO_DUMP,
PRM_ID_CSS_MAX_CLIENTS,
PRM_ID_THREAD_STACKSIZE,
PRM_ID_CFG_DB_HOSTS,
PRM_ID_RESET_TR_PARSER,
PRM_ID_IO_BACKUP_NBUFFERS,
PRM_ID_IO_BACKUP_MAX_VOLUME_SIZE,
PRM_ID_IO_BACKUP_SLEEP_MSECS,
PRM_ID_MAX_PAGES_IN_TEMP_FILE_CACHE,
PRM_ID_MAX_ENTRIES_IN_TEMP_FILE_CACHE,
PRM_ID_PTHREAD_SCOPE_PROCESS, /* AIX only */
PRM_ID_TEMP_MEM_BUFFER_PAGES,
PRM_ID_INDEX_SCAN_KEY_BUFFER_PAGES,
PRM_ID_INDEX_SCAN_KEY_BUFFER_SIZE,
PRM_ID_DONT_REUSE_HEAP_FILE,
PRM_ID_INSERT_MODE,
PRM_ID_LK_MAX_SCANID_BIT,
PRM_ID_HOSTVAR_LATE_BINDING,
PRM_ID_ENABLE_HISTO,
PRM_ID_MUTEX_BUSY_WAITING_CNT,
PRM_ID_PB_NUM_LRU_CHAINS,
PRM_ID_PAGE_BG_FLUSH_INTERVAL_MSECS,
PRM_ID_PAGE_BG_FLUSH_INTERVAL,
PRM_ID_ADAPTIVE_FLUSH_CONTROL,
PRM_ID_MAX_FLUSH_PAGES_PER_SECOND,
PRM_ID_MAX_FLUSH_SIZE_PER_SECOND,
PRM_ID_PB_SYNC_ON_NFLUSH,
PRM_ID_PB_SYNC_ON_FLUSH_SIZE,
PRM_ID_PB_DEBUG_PAGE_VALIDATION_LEVEL,
PRM_ID_ORACLE_STYLE_OUTERJOIN,
PRM_ID_ANSI_QUOTES,
PRM_ID_DEFAULT_WEEK_FORMAT,
PRM_ID_TEST_MODE,
PRM_ID_ONLY_FULL_GROUP_BY,
PRM_ID_PIPES_AS_CONCAT,
PRM_ID_MYSQL_TRIGGER_CORRELATION_NAMES,
PRM_ID_REQUIRE_LIKE_ESCAPE_CHARACTER,
PRM_ID_NO_BACKSLASH_ESCAPES,
PRM_ID_GROUP_CONCAT_MAX_LEN,
PRM_ID_STRING_MAX_SIZE_BYTES,
PRM_ID_ADD_COLUMN_UPDATE_HARD_DEFAULT,
PRM_ID_RETURN_NULL_ON_FUNCTION_ERRORS,
PRM_ID_ALTER_TABLE_CHANGE_TYPE_STRICT,
PRM_ID_COMPACTDB_PAGE_RECLAIM_ONLY,
PRM_ID_PLUS_AS_CONCAT,
PRM_ID_LIKE_TERM_SELECTIVITY,
PRM_ID_MAX_OUTER_CARD_OF_IDXJOIN,
PRM_ID_ORACLE_STYLE_EMPTY_STRING,
PRM_ID_SUPPRESS_FSYNC,
PRM_ID_CALL_STACK_DUMP_ON_ERROR,
PRM_ID_CALL_STACK_DUMP_ACTIVATION,
PRM_ID_CALL_STACK_DUMP_DEACTIVATION,
PRM_ID_COMPAT_NUMERIC_DIVISION_SCALE,
PRM_ID_DBFILES_PROTECT,
PRM_ID_AUTO_RESTART_SERVER,
PRM_ID_XASL_CACHE_MAX_ENTRIES,
PRM_ID_XASL_CACHE_MAX_CLONES,
PRM_ID_XASL_CACHE_TIMEOUT,
PRM_ID_XASL_CACHE_LOGGING,
PRM_ID_FILTER_PRED_MAX_CACHE_ENTRIES,
PRM_ID_FILTER_PRED_MAX_CACHE_CLONES,
PRM_ID_LIST_QUERY_CACHE_MODE,
PRM_ID_LIST_MAX_QUERY_CACHE_ENTRIES,
PRM_ID_LIST_MAX_QUERY_CACHE_PAGES,
PRM_ID_USE_ORDERBY_SORT_LIMIT,
PRM_ID_REPLICATION_MODE,
PRM_ID_HA_MODE,
PRM_ID_HA_MODE_FOR_SA_UTILS_ONLY,
PRM_ID_HA_SERVER_STATE,
PRM_ID_HA_LOG_APPLIER_STATE,
PRM_ID_HA_NODE_LIST,
PRM_ID_HA_REPLICA_LIST,
PRM_ID_HA_DB_LIST,
PRM_ID_HA_COPY_LOG_BASE,
PRM_ID_HA_COPY_SYNC_MODE,
PRM_ID_HA_APPLY_MAX_MEM_SIZE,
PRM_ID_HA_PORT_ID,
PRM_ID_HA_INIT_TIMER_IN_MSECS,
PRM_ID_HA_HEARTBEAT_INTERVAL_IN_MSECS,
PRM_ID_HA_CALC_SCORE_INTERVAL_IN_MSECS,
PRM_ID_HA_FAILOVER_WAIT_TIME_IN_MSECS,
PRM_ID_HA_PROCESS_START_CONFIRM_INTERVAL_IN_MSECS,
PRM_ID_HA_PROCESS_DEREG_CONFIRM_INTERVAL_IN_MSECS,
PRM_ID_HA_MAX_PROCESS_START_CONFIRM,
PRM_ID_HA_MAX_PROCESS_DEREG_CONFIRM,
PRM_ID_HA_UNACCEPTABLE_PROC_RESTART_TIMEDIFF_IN_MSECS,
PRM_ID_HA_CHANGEMODE_INTERVAL_IN_MSECS,
PRM_ID_HA_MAX_HEARTBEAT_GAP,
PRM_ID_HA_PING_HOSTS,
PRM_ID_HA_APPLYLOGDB_RETRY_ERROR_LIST,
PRM_ID_HA_APPLYLOGDB_IGNORE_ERROR_LIST,
PRM_ID_HA_APPLYLOGDB_LOG_WAIT_TIME_IN_SECS,
PRM_ID_HA_SQL_LOGGING,
PRM_ID_HA_SQL_LOG_MAX_SIZE_IN_MB,
PRM_ID_HA_COPY_LOG_MAX_ARCHIVES,
PRM_ID_HA_COPY_LOG_TIMEOUT,
PRM_ID_HA_REPLICA_DELAY_IN_SECS,
PRM_ID_HA_REPLICA_TIME_BOUND,
PRM_ID_HA_DELAY_LIMIT_IN_SECS,
PRM_ID_HA_DELAY_LIMIT_DELTA_IN_SECS,
PRM_ID_HA_APPLYLOGDB_MAX_COMMIT_INTERVAL_IN_MSECS,
PRM_ID_HA_APPLYLOGDB_MAX_COMMIT_INTERVAL,
PRM_ID_HA_CHECK_DISK_FAILURE_INTERVAL_IN_SECS,
PRM_ID_GENERAL_RESERVE_01,
PRM_ID_COMPAT_PRIMARY_KEY,
PRM_ID_LOG_HEADER_FLUSH_INTERVAL,
PRM_ID_LOG_ASYNC_COMMIT,
PRM_ID_LOG_GROUP_COMMIT_INTERVAL_MSECS,
PRM_ID_LOG_BG_FLUSH_INTERVAL_MSECS,
PRM_ID_LOG_BG_FLUSH_NUM_PAGES,
PRM_ID_INTL_MBS_SUPPORT,
PRM_ID_LOG_COMPRESS,
PRM_ID_BLOCK_NOWHERE_STATEMENT,
PRM_ID_BLOCK_DDL_STATEMENT,
#if defined (ENABLE_UNUSED_FUNCTION)
PRM_ID_SINGLE_BYTE_COMPARE,
#endif
PRM_ID_CSQL_HISTORY_NUM,
PRM_ID_LOG_TRACE_DEBUG,
PRM_ID_DL_FORK,
PRM_ID_ER_PRODUCTION_MODE,
PRM_ID_ER_STOP_ON_ERROR,
PRM_ID_TCP_RCVBUF_SIZE,
PRM_ID_TCP_SNDBUF_SIZE,
PRM_ID_TCP_NODELAY,
PRM_ID_TCP_KEEPALIVE,
PRM_ID_CSQL_SINGLE_LINE_MODE,
PRM_ID_XASL_DEBUG_DUMP,
PRM_ID_LOG_MAX_ARCHIVES,
PRM_ID_FORCE_REMOVE_LOG_ARCHIVES,
PRM_ID_REMOVE_LOG_ARCHIVES_INTERVAL,
PRM_ID_LOG_NO_LOGGING,
PRM_ID_UNLOADDB_IGNORE_ERROR,
PRM_ID_UNLOADDB_LOCK_TIMEOUT,
PRM_ID_LOADDB_FLUSH_INTERVAL,
PRM_ID_IO_TEMP_VOLUME_PATH,
PRM_ID_IO_VOLUME_EXT_PATH,
PRM_ID_UNIQUE_ERROR_KEY_VALUE,
PRM_ID_USE_SYSTEM_MALLOC,
PRM_ID_EVENT_HANDLER,
PRM_ID_EVENT_ACTIVATION,
PRM_ID_READ_ONLY_MODE,
PRM_ID_MNT_WAITING_THREAD,
PRM_ID_MNT_STATS_THRESHOLD,
PRM_ID_SERVICE_SERVICE_LIST,
PRM_ID_SERVICE_SERVER_LIST,
PRM_ID_SESSION_STATE_TIMEOUT,
PRM_ID_MULTI_RANGE_OPT_LIMIT,
PRM_ID_INTL_NUMBER_LANG,
PRM_ID_INTL_DATE_LANG,
/* All the compound parameters *must* be at the end of the array so that the changes they cause are not overridden by
* other parameters (for example in sysprm_load_and_init the parameters are set to their default in the order they
* are found in this array). */
PRM_ID_COMPAT_MODE,
PRM_ID_DB_VOLUME_SIZE,
PRM_ID_LOG_VOLUME_SIZE,
PRM_ID_UNICODE_INPUT_NORMALIZATION,
PRM_ID_UNICODE_OUTPUT_NORMALIZATION,
PRM_ID_INTL_CHECK_INPUT_STRING,
PRM_ID_CHECK_PEER_ALIVE,
PRM_ID_SQL_TRACE_SLOW_MSECS,
PRM_ID_SQL_TRACE_SLOW,
PRM_ID_SQL_TRACE_EXECUTION_PLAN,
PRM_ID_LOG_TRACE_FLUSH_TIME_MSECS,
PRM_ID_INTL_COLLATION,
PRM_ID_GENERIC_VOL_PREALLOC_SIZE,
PRM_ID_SORT_LIMIT_MAX_COUNT,
PRM_ID_SQL_TRACE_IOREADS,
PRM_ID_QUERY_TRACE,
PRM_ID_QUERY_TRACE_FORMAT,
PRM_ID_MAX_RECURSION_SQL_DEPTH,
PRM_ID_UPDATE_USE_ATTRIBUTE_REFERENCES,
PRM_ID_PB_AOUT_RATIO,
PRM_ID_MAX_AGG_HASH_SIZE,
PRM_ID_AGG_HASH_RESPECT_ORDER,
PRM_ID_USE_BTREE_FENCE_KEY,
PRM_ID_OPTIMIZER_ENABLE_MERGE_JOIN,
PRM_ID_MAX_HASH_LIST_SCAN_SIZE,
PRM_ID_OPTIMIZER_RESERVE_02,
PRM_ID_OPTIMIZER_RESERVE_03,
PRM_ID_OPTIMIZER_RESERVE_04,
PRM_ID_OPTIMIZER_RESERVE_05,
PRM_ID_OPTIMIZER_RESERVE_06,
PRM_ID_OPTIMIZER_RESERVE_07,
PRM_ID_OPTIMIZER_RESERVE_08,
PRM_ID_OPTIMIZER_RESERVE_09,
PRM_ID_OPTIMIZER_RESERVE_10,
PRM_ID_OPTIMIZER_RESERVE_11,
PRM_ID_OPTIMIZER_RESERVE_12,
PRM_ID_OPTIMIZER_RESERVE_13,
PRM_ID_OPTIMIZER_RESERVE_14,
PRM_ID_OPTIMIZER_RESERVE_15,
PRM_ID_OPTIMIZER_RESERVE_16,
PRM_ID_OPTIMIZER_RESERVE_17,
PRM_ID_OPTIMIZER_RESERVE_18,
PRM_ID_OPTIMIZER_RESERVE_19,
PRM_ID_OPTIMIZER_RESERVE_20,
PRM_ID_HA_REPL_ENABLE_SERVER_SIDE_UPDATE,
PRM_ID_PB_LRU_HOT_RATIO,
PRM_ID_PB_LRU_BUFFER_RATIO,
PRM_ID_VACUUM_MASTER_WAKEUP_INTERVAL,
PRM_ID_VACUUM_LOG_BLOCK_PAGES,
PRM_ID_VACUUM_WORKER_COUNT,
PRM_ID_ER_LOG_VACUUM,
PRM_ID_DISABLE_VACUUM,
/* Debugging system parameter */
PRM_ID_LOG_BTREE_OPS,
PRM_ID_OBJECT_PRINT_FORMAT_OID,
PRM_ID_TIMEZONE,
PRM_ID_SERVER_TIMEZONE,
PRM_ID_TZ_LEAP_SECOND_SUPPORT,
PRM_ID_OPTIMIZER_ENABLE_AGGREGATE_OPTIMIZATION,
PRM_ID_VACUUM_PREFETCH_LOG_NBUFFERS, // Obsolete
PRM_ID_VACUUM_PREFETCH_LOG_BUFFER_SIZE, // Obsolete
PRM_ID_VACUUM_PREFETCH_LOG_MODE, // Obsolete
PRM_ID_PB_NEIGHBOR_FLUSH_NONDIRTY,
PRM_ID_PB_NEIGHBOR_FLUSH_PAGES,
PRM_ID_FAULT_INJECTION_IDS,
PRM_ID_FAULT_INJECTION_TEST,
PRM_ID_FAULT_INJECTION_ACTION_PREFER_ABORT_TO_EXIT,
PRM_ID_HA_REPL_FILTER_TYPE,
PRM_ID_HA_REPL_FILTER_FILE,
PRM_ID_COMPENSATE_DEBUG,
PRM_ID_POSTPONE_DEBUG,
PRM_ID_CLIENT_CLASS_CACHE_DEBUG,
PRM_ID_EXAMINE_CLIENT_CACHED_LOCKS,
PRM_ID_PB_SEQUENTIAL_VICTIM_FLUSH,
PRM_ID_LOG_UNIQUE_STATS,
PRM_ID_LOGPB_LOGGING_DEBUG,
PRM_ID_FORCE_RESTART_TO_SKIP_RECOVERY,
PRM_ID_EXTENDED_STATISTICS_ACTIVATION,
PRM_ID_ENABLE_STRING_COMPRESSION,
PRM_ID_XASL_CACHE_TIME_THRESHOLD_IN_MINUTES,
PRM_ID_DISK_LOGGING,
PRM_ID_FILE_LOGGING,
PRM_ID_PB_NUM_PRIVATE_CHAINS,
PRM_ID_PB_MONITOR_LOCKS,
PRM_ID_CTE_MAX_RECURSIONS,
PRM_ID_JSON_LOG_ALLOCATIONS,
PRM_ID_JSON_MAX_ARRAY_IDX,
PRM_ID_CONNECTION_LOGGING,
PRM_ID_THREAD_LOGGING_FLAG,
PRM_ID_LOG_QUERY_LISTS,
PRM_ID_THREAD_CONNECTION_POOLING,
PRM_ID_THREAD_CONNECTION_TIMEOUT_SECONDS,
PRM_ID_THREAD_WORKER_POOLING,
PRM_ID_THREAD_WORKER_TIMEOUT_SECONDS,
PRM_ID_DWB_SIZE,
PRM_ID_DWB_BLOCKS,
PRM_ID_ENABLE_DWB_FLUSH_THREAD,
PRM_ID_DWB_LOGGING,
PRM_ID_DATA_FILE_ADVISE,
PRM_ID_DEBUG_LOG_ARCHIVES,
PRM_ID_DEBUG_ES,
PRM_ID_DEBUG_BESTSPACE,
PRM_ID_DEBUG_LOGWR,
PRM_ID_DEBUG_AUTOCOMMIT,
PRM_ID_DEBUG_REPLICATION_DATA,
PRM_ID_TRACK_REQUESTS,
PRM_ID_LOG_PGBUF_VICTIM_FLUSH,
PRM_ID_LOG_CHKPT_DETAILED,
PRM_ID_IB_TASK_MEMSIZE,
PRM_ID_STATS_ON,
PRM_ID_LOADDB_WORKER_COUNT,
PRM_ID_PERF_TEST_MODE,
PRM_ID_REPR_CACHE_LOG,
PRM_ID_ENABLE_NEW_LFHASH,
PRM_ID_HEAP_INFO_CACHE_LOGGING,
PRM_ID_TDE_KEYS_FILE_PATH,
PRM_ID_TDE_DEFAULT_ALGORITHM,
PRM_ID_ER_LOG_TDE,
PRM_ID_JAVA_STORED_PROCEDURE,
PRM_ID_JAVA_STORED_PROCEDURE_PORT,
PRM_ID_JAVA_STORED_PROCEDURE_JVM_OPTIONS,
PRM_ID_JAVA_STORED_PROCEDURE_DEBUG,
PRM_ID_JAVA_STORED_PROCEDURE_UDS,
PRM_ID_ALLOW_TRUNCATED_STRING,
PRM_ID_TB_DEFAULT_REUSE_OID,
PRM_ID_USE_STAT_ESTIMATION,
PRM_ID_IGNORE_TRAILING_SPACE,
PRM_ID_DDL_AUDIT_LOG,
PRM_ID_DDL_AUDIT_LOG_SIZE,
PRM_ID_SUPPLEMENTAL_LOG,
PRM_ID_CDC_LOGGING_DEBUG,
PRM_ID_RECOVERY_PROGRESS_LOGGING_INTERVAL,
PRM_ID_FIRST_LOG_PAGEID, /* Except for QA or TEST purposes, never use it. */
PRM_ID_TASK_GROUP,
PRM_ID_FLASHBACK_TIMEOUT,
PRM_ID_FLASHBACK_MAX_TRANSACTION, /* Hidden parameter For QA test */
PRM_ID_FLASHBACK_WIN_SIZE, /* Hidden parameter For QA test */
PRM_ID_USE_USER_HOSTS,
PRM_ID_QMGR_MAX_QUERY_PER_TRAN,
PRM_ID_REGEXP_ENGINE,
PRM_ID_ORACLE_COMPAT_NUMBER_BEHAVIOR,
PRM_ID_HA_TCP_PING_HOSTS,
PRM_ID_HA_PING_TIMEOUT,
PRM_ID_STATDUMP_FORCE_ADD_INT_MAX, /* Hidden parameter for QA only */
PRM_ID_PL_TRANSACTION_CONTROL,
PRM_ID_HA_SQL_LOG_PATH,
PRM_ID_VACUUM_OVFP_CHECK_DURATION,
PRM_ID_VACUUM_OVFP_CHECK_THRESHOLD,
PRM_ID_DEDUPLICATE_KEY_LEVEL, /* support for SUPPORT_DEDUPLICATE_KEY_MODE */
PRM_ID_PRINT_INDEX_DETAIL, /* support for SUPPORT_DEDUPLICATE_KEY_MODE */
PRM_ID_HA_SQL_LOG_MAX_COUNT,
PRM_ID_RECOVERY_REDO_MINIMUM_JOB_COUNT,
PRM_ID_RECOVERY_REDO_JOB_PERIOD_IN_SECS,
PRM_ID_ENABLE_MEMORY_MONITORING,
PRM_ID_MAX_SUBQUERY_CACHE_SIZE,
PRM_ID_STORED_PROCEDURE,
PRM_ID_STORED_PROCEDURE_PORT,
PRM_ID_STORED_PROCEDURE_JVM_OPTIONS,
PRM_ID_STORED_PROCEDURE_DEBUG,
PRM_ID_STORED_PROCEDURE_UDS,
PRM_ID_STORED_PROCEDURE_DUMP_ICODE,
PRM_ID_STORED_PROCEDURE_RETURN_NUMERIC_SIZE,
PRM_ID_DBLINK_AUTO_COMMIT,
PRM_ID_ENABLE_JVM_HEAP_DUMP,
PRM_ID_PARALLELISM,
PRM_ID_MAX_PARALLEL_WORKERS,
PRM_ID_PARALLEL_HEAP_SCAN_PAGE_THRESHOLD,
PRM_ID_PARALLEL_HASH_JOIN_PAGE_THRESHOLD,
PRM_ID_PARALLEL_SORT_PAGE_THRESHOLD,
PRM_ID_TCP_KEEPALIVE_IDLE,
PRM_ID_TCP_KEEPALIVE_INTERVAL,
PRM_ID_TCP_KEEPALIVE_COUNT,
PRM_ID_TASK_WORKER,
PRM_ID_CSS_MAX_CONNECTION_WORKER,
PRM_ID_CSS_MIN_CONNECTION_WORKER,
PRM_ID_CSS_AUTO_SCALING_WINDOW_SIZE,
PRM_ID_CSS_RECV_BUDGET_PER_CONNECTION,
PRM_ID_CSS_SEND_BUDGET_PER_CONNECTION,
PRM_ID_PAGE_LATCH_TIMEOUT,
PRM_ID_MEMOIZE_MEMORY_LIMIT,
PRM_ID_HOSTVAR_PEEKING,
PRM_ID_LOG_POSTPONE_CACHE_SIZE,
/* change PRM_LAST_ID when adding new system parameters */
PRM_LAST_ID = PRM_ID_LOG_POSTPONE_CACHE_SIZE
};
typedef enum param_id PARAM_ID;
/*
* System parameter data types
*/
typedef enum
{
PRM_INTEGER = 0,
PRM_FLOAT,
PRM_BOOLEAN,
PRM_KEYWORD,
PRM_BIGINT,
PRM_STRING,
PRM_INTEGER_LIST,
PRM_NO_TYPE
} SYSPRM_DATATYPE;
typedef union sysprm_value SYSPRM_VALUE;
union sysprm_value
{
int i;
bool b;
float f;
char *str;
int *integer_list;
UINT64 bi;
};
typedef struct session_param SESSION_PARAM;
struct session_param
{
PARAM_ID prm_id;
unsigned int flag;
int datatype;
SYSPRM_VALUE value;
};
typedef struct sysprm_assign_value SYSPRM_ASSIGN_VALUE;
struct sysprm_assign_value
{
PARAM_ID prm_id;
SYSPRM_VALUE value;
SYSPRM_ASSIGN_VALUE *next;
};
enum sysprm_load_flag
{
SYSPRM_LOAD_ALL = 0x0,
SYSPRM_IGNORE_HA = 0x1,
SYSPRM_IGNORE_INTL_PARAMS = 0x2
};
typedef enum sysprm_load_flag SYSPRM_LOAD_FLAG;
typedef enum
{
PRM_OR_CONDITION = 1,
PRM_AND_CONDITION
} SYSPRM_DUMP_CONDITION;
#define SYSPRM_LOAD_IS_IGNORE_HA(flags) ((flags) & SYSPRM_IGNORE_HA)
#define SYSPRM_LOAD_IS_IGNORE_INTL(flags) ((flags) & SYSPRM_IGNORE_INTL_PARAMS)
#ifdef __cplusplus
extern "C"
{
#endif
/*
* Static flags
*/
#define PRM_EMPTY_FLAG 0x00000000 /* empty flag */
#define PRM_USER_CHANGE 0x00000001 /* user can change, not implemented */
#define PRM_FOR_CLIENT 0x00000002 /* is for client parameter */
#define PRM_FOR_SERVER 0x00000004 /* is for server parameter */
#define PRM_HIDDEN 0x00000008 /* is hidden */
#define PRM_RELOADABLE 0x00000010 /* is reloadable */
#define PRM_COMPOUND 0x00000020 /* sets the value of several others */
#define PRM_TEST_CHANGE 0x00000040 /* can only be changed in the test mode */
#define PRM_FOR_HA 0x00000080 /* is for heartbeat */
#define PRM_FOR_SESSION 0x00000100 /* is a session parameter - all client or client/server parameters that can be
* changed on-line */
#define PRM_FORCE_SERVER 0x00000200 /* client should get value from server */
#define PRM_FOR_QRY_STRING 0x00000400 /* if a parameter can affect the plan generation it should be included in the
* query string */
#define PRM_CLIENT_SESSION 0x00000800 /* mark those client/server session parameters that should not affect the
* server */
#define PRM_SIZE_UNIT 0x00001000 /* has size unit interface */
#define PRM_TIME_UNIT 0x00002000 /* has time unit interface */
#define PRM_DIFFER_UNIT 0x00004000 /* parameter unit need to be changed */
#define PRM_FOR_HA_CONTEXT 0x00008000 /* should be replicated into HA log applier */
#define PRM_GET_SERVER 0x00010000 /* return the value of server parameter from client/server parameter. Note that
* this flag only can be set if the parameter has PRM_FOR_CLIENT,
* PRM_FOR_SERVER, and PRM_USER_CHANGE flags. */
#define PRM_FOR_PL_CONTEXT 0x00020000 /* is for PL parameter */
#define PRM_DEPRECATED 0x40000000 /* is deprecated */
#define PRM_OBSOLETED 0x80000000 /* is obsoleted */
#define PRM_ALL_FLAGS 0xFFFFFFFF /* all flags */
/*
* Dynamic flags
*/
#define PRM_CLEAR_DYNAMIC_FLAG 0x00000000
#define PRM_SET 0x00000001 /* has been set */
#define PRM_ALLOCATED 0x00000002 /* storage has been malloc'd */
#define PRM_DEFAULT_USED 0x00000004 /* Default value has been used */
#define PRM_DIFFERENT 0x00000008 /* mark those parameters that have values different than their default.
* currently used by parameters that should be printed to query string */
/*
* Macros to get values
*/
#define PRM_GET_INT(x) ((x).v.i)
#define PRM_GET_FLOAT(x) ((x).v.f)
#define PRM_GET_STRING(x) ((x).v.str)
#define PRM_GET_BOOL(x) ((x).v.b)
#define PRM_GET_INTEGER_LIST(x) ((x).v.integer_list)
#define PRM_GET_BIGINT(x) ((x).v.bi)
#define PRM_GET_INT_P(v) ((v)->i)
#define PRM_GET_FLOAT_P(v) ((v)->f)
#define PRM_GET_STRING_P(v) ((v)->str)
#define PRM_GET_BOOL_P(v) ((v)->b)
#define PRM_GET_INTEGER_LIST_P(v) ((v)->integer_list)
#define PRM_GET_BIGINT_P(v) ((v)->bi)
/*
* Macros to get data type
*/
#define PRM_IS_STRING(x) ((x)->datatype == PRM_STRING)
#define PRM_IS_INTEGER(x) ((x)->datatype == PRM_INTEGER)
#define PRM_IS_FLOAT(x) ((x)->datatype == PRM_FLOAT)
#define PRM_IS_BOOLEAN(x) ((x)->datatype == PRM_BOOLEAN)
#define PRM_IS_KEYWORD(x) ((x)->datatype == PRM_KEYWORD)
#define PRM_IS_INTEGER_LIST(x) ((x)->datatype == PRM_INTEGER_LIST)
#define PRM_IS_BIGINT(x) ((x)->datatype == PRM_BIGINT)
#define PARAM_MSG_FMT(msgid) msgcat_message (MSGCAT_CATALOG_CUBRID, MSGCAT_SET_PARAMETERS, (msgid))
#define GET_PRM(id) (&prm_Def[(id)])
#define SERVER_SESSION_MASK ((PRM_FOR_SESSION | PRM_FOR_SERVER) | PRM_CLIENT_SESSION) // 0x00000904
#define SERVER_SESSION_CHCK ((PRM_FOR_SESSION | PRM_FOR_SERVER) & ~PRM_CLIENT_SESSION) // 0x00000104
#define PRM_SERVER_SESSION(id) (((GET_PRM (id))->static_flag & SERVER_SESSION_MASK) == SERVER_SESSION_CHCK)
/*
* for PRM_STORE_PROCEDURE_RETURN_NUMERIC_SIZE
* PARAM type integer list, first is precision second is scale
*/
#define PRM_PRECISION 1
#define PRM_SCALE 2
/*
* for PRM_ID_PARALLELISM
*/
#define PRM_MAX_PARALLELISM 32 /* Limit set to 32 for flexibility; efficiency is low beyond 16. */
typedef int (*DUP_PRM_FUNC) (void *, SYSPRM_DATATYPE, void *, SYSPRM_DATATYPE);
typedef struct
{
bool is_null;
SYSPRM_VALUE v;
} SYSPRM_PARAM_VALUE;
struct sysprm_param
{
PARAM_ID id; /* parameter ID */
const char *name; /* the keyword expected */
unsigned int static_flag; /* bitmask flag representing status words */
SYSPRM_DATATYPE datatype; /* value data type */
unsigned int dynamic_flag; /* shared by both original and duplicated */
const SYSPRM_PARAM_VALUE default_value; /* default value */
SYSPRM_PARAM_VALUE value; /* current value */
const SYSPRM_PARAM_VALUE upper_limit; /* highest allowable value */
const SYSPRM_PARAM_VALUE lower_limit; /* lowest allowable value */
char *force_value; /* address of (pointer to) force value string */
DUP_PRM_FUNC set_dup; /* set duplicated value to original value */
DUP_PRM_FUNC get_dup; /* get duplicated value from original value */
};
typedef struct sysprm_param SYSPRM_PARAM;
extern SYSPRM_PARAM prm_Def[];
typedef int SYSPRM_INDIRECT_POS;
extern SYSPRM_INDIRECT_POS prm_Def_session_idx[];
#if defined (CS_MODE)
/* when system parameters are loaded, session parameters need to be cached for
* future clients that connect to broker
*/
extern SESSION_PARAM *cached_session_parameters;
#endif /* CS_MODE */
extern const char *prm_get_name (PARAM_ID prm_id);
extern SYSPRM_VALUE *prm_get_value (PARAM_ID prm_id);
extern void prm_set_integer_value (PARAM_ID prm_id, int value);
extern void prm_set_float_value (PARAM_ID prm_id, float value);
extern void prm_set_bool_value (PARAM_ID prm_id, bool value);
extern void prm_set_string_value (PARAM_ID prm_id, char *value);
extern void prm_set_integer_list_value (PARAM_ID prm_id, int *value);
extern void prm_set_bigint_value (PARAM_ID prm_id, UINT64 value);
extern bool sysprm_find_err_in_integer_list (PARAM_ID prm_id, int error_code);
extern bool sysprm_find_fi_code_in_integer_list (PARAM_ID prm_id, int fi_code);
extern int sysprm_load_and_init (const char *db_name, const char *conf_file, const int load_flags);
extern int sysprm_load_and_init_client (const char *db_name, const char *conf_file);
extern int sysprm_reload_and_init (const char *db_name, const char *conf_file);
extern void sysprm_final (void);
extern void sysprm_dump_parameters (FILE * fp, char pmarker, unsigned int in_flags, SYSPRM_DUMP_CONDITION if_cond,
unsigned int out_flags, SYSPRM_DUMP_CONDITION of_cond, bool old_style);
extern void sysprm_set_er_log_file (const char *base_db_name);
extern void sysprm_dump_server_parameters (FILE * fp, unsigned int in_flags, SYSPRM_DUMP_CONDITION if_cond,
unsigned int out_flags, SYSPRM_DUMP_CONDITION of_cond, bool old_style);
extern SYSPRM_ERR sysprm_obtain_parameters (char *data, SYSPRM_ASSIGN_VALUE ** prm_values);
extern SYSPRM_ERR sysprm_change_server_parameters (const SYSPRM_ASSIGN_VALUE * assignments);
extern SYSPRM_ERR sysprm_obtain_server_parameters (SYSPRM_ASSIGN_VALUE ** prm_values_ptr);
extern int sysprm_get_force_server_parameters (SYSPRM_ASSIGN_VALUE ** change_values);
extern void sysprm_tune_client_parameters (void);
extern void sysprm_free_session_parameters (SESSION_PARAM ** session_parameters);
#if !defined (CS_MODE)
extern void xsysprm_change_server_parameters (const SYSPRM_ASSIGN_VALUE * assignments);
extern void xsysprm_obtain_server_parameters (SYSPRM_ASSIGN_VALUE * prm_values);
extern SYSPRM_ASSIGN_VALUE *xsysprm_get_force_server_parameters (void);
extern void xsysprm_dump_server_parameters (FILE * fp, unsigned int in_flags, SYSPRM_DUMP_CONDITION if_cond,
unsigned int out_flags, SYSPRM_DUMP_CONDITION of_cond, bool old_style);
extern SYSPRM_ASSIGN_VALUE *xsysprm_get_pl_context_parameters (int flag);
#endif /* !CS_MODE */
extern int sysprm_set_force (PARAM_ID param_id, const char *pvalue);
extern int sysprm_set_to_default (PARAM_ID param_id, bool set_to_force);
extern int sysprm_check_range (PARAM_ID param_id, void *value);
extern int sysprm_get_range (PARAM_ID id, void *min, void *max);
extern int prm_get_master_port_id (void);
extern bool prm_get_commit_on_shutdown (void);
extern char *sysprm_pack_session_parameters (char *ptr, SESSION_PARAM * session_parameters);
extern int sysprm_packed_session_parameters_length (SESSION_PARAM * session_parameters, int offset);
extern char *sysprm_unpack_session_parameters (char *ptr, SESSION_PARAM ** session_parameters_ptr);
extern char *sysprm_pack_assign_values (char *ptr, const SYSPRM_ASSIGN_VALUE * assign_values);
extern int sysprm_packed_assign_values_length (const SYSPRM_ASSIGN_VALUE * assign_values, int offset);
extern char *sysprm_unpack_assign_values (char *ptr, SYSPRM_ASSIGN_VALUE ** assign_values_ptr);
extern void sysprm_free_assign_values (SYSPRM_ASSIGN_VALUE ** assign_values_ptr);
extern void sysprm_change_parameter_values (const SYSPRM_ASSIGN_VALUE * assignments, bool check, bool set_flag);
#if defined (SERVER_MODE)
extern int sysprm_session_init_session_parameters (SESSION_PARAM ** session_params, int *found_session_parameters);
#endif /* SERVER_MODE */
#if defined (CS_MODE)
extern void sysprm_update_client_session_parameters (SESSION_PARAM * session_parameters);
#endif /* CS_MODE */
#if !defined (SERVER_MODE)
extern char *sysprm_print_parameters_for_qry_string (void);
extern char *sysprm_print_parameters_for_ha_repl (void);
extern SYSPRM_ERR sysprm_validate_change_parameters (const char *data, bool check,
SYSPRM_ASSIGN_VALUE ** assignments_ptr);
extern SYSPRM_ERR sysprm_make_default_values (const char *data, char *default_val_buf, const int buf_size);
extern int sysprm_init_intl_param (void);
#endif /* !SERVER_MODE */
extern int sysprm_print_assign_values (SYSPRM_ASSIGN_VALUE * prm_values, char *buffer, int length);
extern int sysprm_set_error (SYSPRM_ERR rc, const char *data);
extern int sysprm_get_session_parameters_count (void);
#if defined (WINDOWS)
/* FIXME!!! Segmentation fault when using inline function on Window. Temporarily, disable inline functions on Window. */
extern int prm_get_integer_value (PARAM_ID prm_id);
extern bool prm_get_bool_value (PARAM_ID prm_id);
extern float prm_get_float_value (PARAM_ID prm_id);
extern char *prm_get_string_value (PARAM_ID prm_id);
extern int *prm_get_integer_list_value (PARAM_ID prm_id);
extern UINT64 prm_get_bigint_value (PARAM_ID prm_id);
#else /* window */
STATIC_INLINE int prm_get_integer_value (PARAM_ID prm_id) __attribute__ ((ALWAYS_INLINE));
STATIC_INLINE bool prm_get_bool_value (PARAM_ID prm_id) __attribute__ ((ALWAYS_INLINE));
STATIC_INLINE float prm_get_float_value (PARAM_ID prm_id) __attribute__ ((ALWAYS_INLINE));
STATIC_INLINE char *prm_get_string_value (PARAM_ID prm_id) __attribute__ ((ALWAYS_INLINE));
STATIC_INLINE int *prm_get_integer_list_value (PARAM_ID prm_id) __attribute__ ((ALWAYS_INLINE));
STATIC_INLINE UINT64 prm_get_bigint_value (PARAM_ID prm_id) __attribute__ ((ALWAYS_INLINE));
/*
* prm_get_integer_value () - get the value of a parameter of type integer
*
* return : value
* prm_id (in) : parameter id
*
* NOTE: keywords are stored as integers
*/
STATIC_INLINE int prm_get_integer_value (PARAM_ID prm_id)
{
assert (prm_id <= PRM_LAST_ID);
assert (PRM_IS_INTEGER (GET_PRM (prm_id)) || PRM_IS_KEYWORD (GET_PRM (prm_id)));
#if defined (SERVER_MODE)
if (PRM_SERVER_SESSION (prm_id))
{
return PRM_GET_INT_P (prm_get_value (prm_id));
}
#endif
return PRM_GET_INT (GET_PRM (prm_id)->value);
}
/*
* prm_get_bool_value () - get the value of a parameter of type bool
*
* return : value
* prm_id (in) : parameter id
*/
STATIC_INLINE bool prm_get_bool_value (PARAM_ID prm_id)
{
assert (prm_id <= PRM_LAST_ID);
assert (PRM_IS_BOOLEAN (GET_PRM (prm_id)));
#if defined (SERVER_MODE)
if (PRM_SERVER_SESSION (prm_id))
{
return PRM_GET_BOOL_P (prm_get_value (prm_id));
}
#endif
return PRM_GET_BOOL (GET_PRM (prm_id)->value);
}
/*
* prm_get_float_value () - get the value of a parameter of type float
*
* return : value
* prm_id (in) : parameter id
*/
STATIC_INLINE float prm_get_float_value (PARAM_ID prm_id)
{
assert (prm_id <= PRM_LAST_ID);
assert (PRM_IS_FLOAT (GET_PRM (prm_id)));
#if defined (SERVER_MODE)
if (PRM_SERVER_SESSION (prm_id))
{
return PRM_GET_FLOAT_P (prm_get_value (prm_id));
}
#endif
return PRM_GET_FLOAT (GET_PRM (prm_id)->value);
}
/*
* prm_get_string_value () - get the value of a parameter of type string
*
* return : value
* prm_id (in) : parameter id
*/
STATIC_INLINE char *prm_get_string_value (PARAM_ID prm_id)
{
assert (prm_id <= PRM_LAST_ID);
assert (PRM_IS_STRING (GET_PRM (prm_id)));
#if defined (SERVER_MODE)
if (PRM_SERVER_SESSION (prm_id))
{
return PRM_GET_STRING_P (prm_get_value (prm_id));
}
#endif
return PRM_GET_STRING (GET_PRM (prm_id)->value);
}
/*
* prm_get_integer_list_value () - get the value of a parameter of type
* integer list
*
* return : value
* prm_id (in) : parameter id
*/
STATIC_INLINE int *prm_get_integer_list_value (PARAM_ID prm_id)
{
assert (prm_id <= PRM_LAST_ID);
assert (PRM_IS_INTEGER_LIST (GET_PRM (prm_id)));
#if defined (SERVER_MODE)
if (PRM_SERVER_SESSION (prm_id))
{
return PRM_GET_INTEGER_LIST_P (prm_get_value (prm_id));
}
#endif
return PRM_GET_INTEGER_LIST (GET_PRM (prm_id)->value);
}
/*
* prm_get_bigint_value () - get the value of a parameter of type size
*
* return : value
* prm_id (in) : parameter id
*/
STATIC_INLINE UINT64 prm_get_bigint_value (PARAM_ID prm_id)
{
assert (prm_id <= PRM_LAST_ID);
assert (PRM_IS_BIGINT (GET_PRM (prm_id)));
#if defined (SERVER_MODE)
if (PRM_SERVER_SESSION (prm_id))
{
return PRM_GET_BIGINT_P (prm_get_value (prm_id));
}
#endif
return PRM_GET_BIGINT (GET_PRM (prm_id)->value);
}
#endif /* window */
#ifdef __cplusplus
}
#endif
#endif /* _SYSTEM_PARAMETER_H_ */