嘉兴优化网站排名,网络移动公司的网站建设,高端营销型网站制作,泉州哪里做网站开发目录
增加guc参数 initdb参数传递 pg_ctl参数传递
参数验证 新增guc参数pg_test_parameter#xff0c;支持从initdb和pg_ctl命令中传递/覆盖参数#xff0c;使用场景是TDE透明加密指定算法或者某些定制化需求。
增加guc参数 pg源码是这样描述guc参数的#xff1a;它是全局…目录
增加guc参数 initdb参数传递 pg_ctl参数传递
参数验证 新增guc参数pg_test_parameter支持从initdb和pg_ctl命令中传递/覆盖参数使用场景是TDE透明加密指定算法或者某些定制化需求。
增加guc参数 pg源码是这样描述guc参数的它是全局配置管理模式包括set命令、conf配置文件或其他方式指定参数我们postgresql.conf文件中所有参数都在这里面但它是conf文件超集还有一些配置是不能对用户提供的。 * Support for grand unified configuration scheme, including SET
* command, configuration file, and command line options.
* See src/backend/utils/misc/README for more information. 比如postgresql.conf中定义wal段大小的参数 {max_wal_size, PGC_SIGHUP, WAL_CHECKPOINTS,gettext_noop(Sets the WAL size that triggers a checkpoint.),NULL,GUC_UNIT_MB},
本次我们新增1个guc参数pg_test_parameter直接仿照src/utils/misc/guc.c文件中的data_directory参数定义这个参数指定后也是不允许修改的并且在initdb和pg_ctl都需要指定跟我们本次想实现的参数类似但是两者的GucContext和config_group类型有差异 {data_directory, PGC_POSTMASTER, FILE_LOCATIONS,gettext_noop(Sets the servers data directory.),NULL,GUC_SUPERUSER_ONLY | GUC_DISALLOW_IN_AUTO_FILE},data_directory,NULL,NULL, NULL, NULL},{{pg_test_parameter, PGC_INTERNAL, PRESET_OPTIONS,gettext_noop(Sets pg test parameter.),NULL,GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE},pg_test_parameter,NULL,NULL, NULL, NULL},
定义后就会有pg_test_parameter这个全局参数了但是定义参数要用起来。 initdb参数传递
支持initdb方式传递pg_test_parameter需要接受参数输入这里增加-p的参数读取与参数解析逻辑在/src/bin/initdb/initdb.c中
//增加-p参数printf(_( -p, --pg-test-parameter show pg_test_parameter settings\n));
//在main函数中把它定义为必须传递的参数static struct option long_options[] {// ...{pg-test-parameter, required_argument, NULL, N}// ...};
//增加参数解析while ((c getopt_long(argc, argv, A:dD:E:gkL:nNsST:U:WX:p:, long_options, option_index)) ! -1){switch (c){// ...case p:pg_test_parameter pg_strdup(optarg);break;// ...}}
// 增加日志if (pg_test_parameter){printf(_(pg_test_parameter ok. \n));}elseprintf(_(pg_test_parameter not ok..\n));
这里完成initdb的参数传递直接通过initdb -p abc方式将pg_test_parameter参数设置成abc。 pg_ctl参数传递
这里传入后根据需要读取
// 增加参数读入while ((flag getopt(argc, argv, B:p:c:d:D:Fkr:x:X:-:)) ! -1){switch (flag){// ...case p:pg_test_parameter pstrdup(optarg);break;// ...
}
}
参数验证
initdb指定-p参数 ./initdb -D ~/data -p abc
The files belonging to this database system will be owned by user postgres.
This user must also own the server process.The database cluster will be initialized with locale en_US.UTF-8.
The default database encoding has accordingly been set to UTF8.
The default text search configuration will be set to english.Data page checksums are disabled.creating directory /home/postgres/data ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... Asia/Shanghai
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok
pg_test_parameter ok.initdb: warning: enabling trust authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.Success. You can now start the database server using:./pg_ctl -D /home/postgres/data -l logfile start查看参数调试中 postgres# show pg_test_parameter;pg_test_parameter
-------------------(1 row)