prestogres 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +4 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +20 -0
- data/LICENSE +202 -0
- data/NOTICE +22 -0
- data/README.md +217 -0
- data/Rakefile +13 -0
- data/VERSION +1 -0
- data/bin/prestogres +254 -0
- data/config/pcp.conf.sample +28 -0
- data/config/pgpool.conf +678 -0
- data/config/pool_hba.conf +84 -0
- data/config/pool_passwd +0 -0
- data/config/postgresql.conf +2 -0
- data/ext/.gitignore +6 -0
- data/ext/depend +26 -0
- data/ext/extconf.rb +4 -0
- data/ext/prestogres_config.c +12 -0
- data/pgpool2/.gitignore +36 -0
- data/pgpool2/AUTHORS +4 -0
- data/pgpool2/COPYING +12 -0
- data/pgpool2/ChangeLog +1 -0
- data/pgpool2/INSTALL +1 -0
- data/pgpool2/Makefile.am +159 -0
- data/pgpool2/Makefile.in +1187 -0
- data/pgpool2/NEWS +4960 -0
- data/pgpool2/README +1 -0
- data/pgpool2/README.euc_jp +1 -0
- data/pgpool2/README.online-recovery +62 -0
- data/pgpool2/TODO +103 -0
- data/pgpool2/ac_func_accept_argtypes.m4 +85 -0
- data/pgpool2/aclocal.m4 +1088 -0
- data/pgpool2/c-compiler.m4 +134 -0
- data/pgpool2/c-library.m4 +325 -0
- data/pgpool2/child.c +2097 -0
- data/pgpool2/config.guess +1532 -0
- data/pgpool2/config.h.in +332 -0
- data/pgpool2/config.sub +1640 -0
- data/pgpool2/configure +15752 -0
- data/pgpool2/configure.in +392 -0
- data/pgpool2/depcomp +522 -0
- data/pgpool2/doc/basebackup.sh +17 -0
- data/pgpool2/doc/pgpool-de.html +4220 -0
- data/pgpool2/doc/pgpool-en.html +5738 -0
- data/pgpool2/doc/pgpool-fr.html +4118 -0
- data/pgpool2/doc/pgpool-ja.css +198 -0
- data/pgpool2/doc/pgpool-ja.html +11279 -0
- data/pgpool2/doc/pgpool-zh_cn.html +4445 -0
- data/pgpool2/doc/pgpool.css +280 -0
- data/pgpool2/doc/pgpool_remote_start +13 -0
- data/pgpool2/doc/recovery.conf.sample +117 -0
- data/pgpool2/doc/tutorial-en.html +707 -0
- data/pgpool2/doc/tutorial-ja.html +422 -0
- data/pgpool2/doc/tutorial-memqcache-en.html +325 -0
- data/pgpool2/doc/tutorial-memqcache-ja.html +370 -0
- data/pgpool2/doc/tutorial-memqcache-zh_cn.html +322 -0
- data/pgpool2/doc/tutorial-watchdog-en.html +306 -0
- data/pgpool2/doc/tutorial-watchdog-ja.html +343 -0
- data/pgpool2/doc/tutorial-watchdog-zh_cn.html +301 -0
- data/pgpool2/doc/tutorial-zh_cn.html +537 -0
- data/pgpool2/doc/watchdog.png +0 -0
- data/pgpool2/doc/wd-en.html +236 -0
- data/pgpool2/doc/wd-en.jpg +0 -0
- data/pgpool2/doc/wd-ja.html +219 -0
- data/pgpool2/doc/wd-ja.jpg +0 -0
- data/pgpool2/doc/wd-zh_cn.html +201 -0
- data/pgpool2/doc/where_to_send_queries.odg +0 -0
- data/pgpool2/doc/where_to_send_queries.pdf +0 -0
- data/pgpool2/general.m4 +166 -0
- data/pgpool2/getopt_long.c +200 -0
- data/pgpool2/getopt_long.h +44 -0
- data/pgpool2/install-sh +251 -0
- data/pgpool2/ltmain.sh +8406 -0
- data/pgpool2/m4/libtool.m4 +7360 -0
- data/pgpool2/m4/ltoptions.m4 +368 -0
- data/pgpool2/m4/ltsugar.m4 +123 -0
- data/pgpool2/m4/ltversion.m4 +23 -0
- data/pgpool2/m4/lt~obsolete.m4 +92 -0
- data/pgpool2/main.c +2971 -0
- data/pgpool2/md5.c +444 -0
- data/pgpool2/md5.h +28 -0
- data/pgpool2/missing +360 -0
- data/pgpool2/mkinstalldirs +40 -0
- data/pgpool2/parser/Makefile.am +50 -0
- data/pgpool2/parser/Makefile.in +559 -0
- data/pgpool2/parser/copyfuncs.c +3310 -0
- data/pgpool2/parser/gram.c +39100 -0
- data/pgpool2/parser/gram.h +940 -0
- data/pgpool2/parser/gram.y +13408 -0
- data/pgpool2/parser/gramparse.h +74 -0
- data/pgpool2/parser/keywords.c +32 -0
- data/pgpool2/parser/keywords.h +39 -0
- data/pgpool2/parser/kwlist.h +425 -0
- data/pgpool2/parser/kwlookup.c +88 -0
- data/pgpool2/parser/list.c +1156 -0
- data/pgpool2/parser/makefuncs.c +518 -0
- data/pgpool2/parser/makefuncs.h +83 -0
- data/pgpool2/parser/memnodes.h +79 -0
- data/pgpool2/parser/nodes.c +29 -0
- data/pgpool2/parser/nodes.h +609 -0
- data/pgpool2/parser/outfuncs.c +5790 -0
- data/pgpool2/parser/parsenodes.h +2615 -0
- data/pgpool2/parser/parser.c +262 -0
- data/pgpool2/parser/parser.h +46 -0
- data/pgpool2/parser/pg_class.h +158 -0
- data/pgpool2/parser/pg_config_manual.h +273 -0
- data/pgpool2/parser/pg_list.h +352 -0
- data/pgpool2/parser/pg_trigger.h +147 -0
- data/pgpool2/parser/pg_wchar.h +492 -0
- data/pgpool2/parser/pool_memory.c +342 -0
- data/pgpool2/parser/pool_memory.h +77 -0
- data/pgpool2/parser/pool_parser.h +222 -0
- data/pgpool2/parser/pool_string.c +121 -0
- data/pgpool2/parser/pool_string.h +37 -0
- data/pgpool2/parser/primnodes.h +1280 -0
- data/pgpool2/parser/scan.c +4094 -0
- data/pgpool2/parser/scan.l +1451 -0
- data/pgpool2/parser/scanner.h +120 -0
- data/pgpool2/parser/scansup.c +221 -0
- data/pgpool2/parser/scansup.h +28 -0
- data/pgpool2/parser/snprintf.c +1102 -0
- data/pgpool2/parser/stringinfo.c +294 -0
- data/pgpool2/parser/stringinfo.h +178 -0
- data/pgpool2/parser/value.c +78 -0
- data/pgpool2/parser/value.h +62 -0
- data/pgpool2/parser/wchar.c +2048 -0
- data/pgpool2/pcp.conf.sample +28 -0
- data/pgpool2/pcp/Makefile.am +40 -0
- data/pgpool2/pcp/Makefile.in +771 -0
- data/pgpool2/pcp/libpcp_ext.h +250 -0
- data/pgpool2/pcp/md5.c +444 -0
- data/pgpool2/pcp/md5.h +28 -0
- data/pgpool2/pcp/pcp.c +1652 -0
- data/pgpool2/pcp/pcp.h +61 -0
- data/pgpool2/pcp/pcp_attach_node.c +172 -0
- data/pgpool2/pcp/pcp_detach_node.c +185 -0
- data/pgpool2/pcp/pcp_error.c +87 -0
- data/pgpool2/pcp/pcp_node_count.c +160 -0
- data/pgpool2/pcp/pcp_node_info.c +198 -0
- data/pgpool2/pcp/pcp_pool_status.c +166 -0
- data/pgpool2/pcp/pcp_proc_count.c +166 -0
- data/pgpool2/pcp/pcp_proc_info.c +261 -0
- data/pgpool2/pcp/pcp_promote_node.c +185 -0
- data/pgpool2/pcp/pcp_recovery_node.c +172 -0
- data/pgpool2/pcp/pcp_stop_pgpool.c +179 -0
- data/pgpool2/pcp/pcp_stream.c +385 -0
- data/pgpool2/pcp/pcp_stream.h +52 -0
- data/pgpool2/pcp/pcp_systemdb_info.c +194 -0
- data/pgpool2/pcp/pcp_watchdog_info.c +211 -0
- data/pgpool2/pcp_child.c +1493 -0
- data/pgpool2/pg_md5.c +305 -0
- data/pgpool2/pgpool.8.in +121 -0
- data/pgpool2/pgpool.conf +553 -0
- data/pgpool2/pgpool.conf.sample +666 -0
- data/pgpool2/pgpool.conf.sample-master-slave +665 -0
- data/pgpool2/pgpool.conf.sample-replication +664 -0
- data/pgpool2/pgpool.conf.sample-stream +664 -0
- data/pgpool2/pgpool.spec +264 -0
- data/pgpool2/pgpool_adm/TODO +7 -0
- data/pgpool2/pgpool_adm/pgpool_adm--1.0.sql +85 -0
- data/pgpool2/pgpool_adm/pgpool_adm.c +558 -0
- data/pgpool2/pgpool_adm/pgpool_adm.control +5 -0
- data/pgpool2/pgpool_adm/pgpool_adm.h +46 -0
- data/pgpool2/pgpool_adm/pgpool_adm.sql.in +85 -0
- data/pgpool2/pool.h +655 -0
- data/pgpool2/pool_auth.c +1390 -0
- data/pgpool2/pool_config.c +5007 -0
- data/pgpool2/pool_config.h +284 -0
- data/pgpool2/pool_config.l +3281 -0
- data/pgpool2/pool_config_md5.c +29 -0
- data/pgpool2/pool_connection_pool.c +812 -0
- data/pgpool2/pool_error.c +242 -0
- data/pgpool2/pool_globals.c +27 -0
- data/pgpool2/pool_hba.c +1723 -0
- data/pgpool2/pool_hba.conf.sample +67 -0
- data/pgpool2/pool_ip.c +567 -0
- data/pgpool2/pool_ip.h +65 -0
- data/pgpool2/pool_ipc.h +38 -0
- data/pgpool2/pool_lobj.c +242 -0
- data/pgpool2/pool_lobj.h +32 -0
- data/pgpool2/pool_memqcache.c +3818 -0
- data/pgpool2/pool_memqcache.h +268 -0
- data/pgpool2/pool_params.c +163 -0
- data/pgpool2/pool_passwd.c +249 -0
- data/pgpool2/pool_passwd.h +41 -0
- data/pgpool2/pool_path.c +193 -0
- data/pgpool2/pool_path.h +81 -0
- data/pgpool2/pool_process_context.c +247 -0
- data/pgpool2/pool_process_context.h +62 -0
- data/pgpool2/pool_process_query.c +5001 -0
- data/pgpool2/pool_process_reporting.c +1671 -0
- data/pgpool2/pool_process_reporting.h +44 -0
- data/pgpool2/pool_proto2.c +671 -0
- data/pgpool2/pool_proto_modules.c +3524 -0
- data/pgpool2/pool_proto_modules.h +185 -0
- data/pgpool2/pool_query_cache.c +1020 -0
- data/pgpool2/pool_query_context.c +1871 -0
- data/pgpool2/pool_query_context.h +105 -0
- data/pgpool2/pool_relcache.c +284 -0
- data/pgpool2/pool_relcache.h +78 -0
- data/pgpool2/pool_rewrite_outfuncs.c +9060 -0
- data/pgpool2/pool_rewrite_query.c +715 -0
- data/pgpool2/pool_rewrite_query.h +192 -0
- data/pgpool2/pool_select_walker.c +1150 -0
- data/pgpool2/pool_select_walker.h +68 -0
- data/pgpool2/pool_sema.c +161 -0
- data/pgpool2/pool_session_context.c +952 -0
- data/pgpool2/pool_session_context.h +203 -0
- data/pgpool2/pool_shmem.c +185 -0
- data/pgpool2/pool_signal.c +158 -0
- data/pgpool2/pool_signal.h +61 -0
- data/pgpool2/pool_ssl.c +339 -0
- data/pgpool2/pool_stream.c +962 -0
- data/pgpool2/pool_stream.h +61 -0
- data/pgpool2/pool_system.c +659 -0
- data/pgpool2/pool_timestamp.c +1215 -0
- data/pgpool2/pool_timestamp.h +38 -0
- data/pgpool2/pool_type.h +171 -0
- data/pgpool2/pool_worker_child.c +384 -0
- data/pgpool2/ps_status.c +404 -0
- data/pgpool2/recovery.c +435 -0
- data/pgpool2/redhat/pgpool.conf.sample.patch +52 -0
- data/pgpool2/redhat/pgpool.init +201 -0
- data/pgpool2/redhat/pgpool.sysconfig +7 -0
- data/pgpool2/redhat/rpm_installer/basebackup-replication.sh +53 -0
- data/pgpool2/redhat/rpm_installer/basebackup-stream.sh +55 -0
- data/pgpool2/redhat/rpm_installer/config_for_script +17 -0
- data/pgpool2/redhat/rpm_installer/failover.sh +64 -0
- data/pgpool2/redhat/rpm_installer/getsources.sh +141 -0
- data/pgpool2/redhat/rpm_installer/install.sh +1363 -0
- data/pgpool2/redhat/rpm_installer/pgpool_recovery_pitr +47 -0
- data/pgpool2/redhat/rpm_installer/pgpool_remote_start +15 -0
- data/pgpool2/redhat/rpm_installer/recovery.conf +4 -0
- data/pgpool2/redhat/rpm_installer/uninstall.sh +57 -0
- data/pgpool2/sample/dist_def_pgbench.sql +73 -0
- data/pgpool2/sample/pgpool.pam +3 -0
- data/pgpool2/sample/pgpool_recovery +20 -0
- data/pgpool2/sample/pgpool_recovery_pitr +19 -0
- data/pgpool2/sample/pgpool_remote_start +13 -0
- data/pgpool2/sample/replicate_def_pgbench.sql +18 -0
- data/pgpool2/sql/insert_lock.sql +15 -0
- data/pgpool2/sql/pgpool-recovery/pgpool-recovery.c +280 -0
- data/pgpool2/sql/pgpool-recovery/pgpool-recovery.sql.in +19 -0
- data/pgpool2/sql/pgpool-recovery/pgpool_recovery--1.0.sql +24 -0
- data/pgpool2/sql/pgpool-recovery/pgpool_recovery.control +5 -0
- data/pgpool2/sql/pgpool-recovery/uninstall_pgpool-recovery.sql +3 -0
- data/pgpool2/sql/pgpool-regclass/pgpool-regclass.c +206 -0
- data/pgpool2/sql/pgpool-regclass/pgpool-regclass.sql.in +4 -0
- data/pgpool2/sql/pgpool-regclass/pgpool_regclass--1.0.sql +7 -0
- data/pgpool2/sql/pgpool-regclass/pgpool_regclass.control +5 -0
- data/pgpool2/sql/pgpool-regclass/uninstall_pgpool-regclass.sql +1 -0
- data/pgpool2/sql/system_db.sql +38 -0
- data/pgpool2/strlcpy.c +85 -0
- data/pgpool2/test/C/test_extended.c +98 -0
- data/pgpool2/test/jdbc/.cvsignore +2 -0
- data/pgpool2/test/jdbc/AutoCommitTest.java +45 -0
- data/pgpool2/test/jdbc/BatchTest.java +55 -0
- data/pgpool2/test/jdbc/ColumnTest.java +60 -0
- data/pgpool2/test/jdbc/CreateTempTableTest.java +48 -0
- data/pgpool2/test/jdbc/InsertTest.java +34 -0
- data/pgpool2/test/jdbc/LockTest.java +36 -0
- data/pgpool2/test/jdbc/PgpoolTest.java +75 -0
- data/pgpool2/test/jdbc/README.euc_jp +73 -0
- data/pgpool2/test/jdbc/RunTest.java +83 -0
- data/pgpool2/test/jdbc/SelectTest.java +37 -0
- data/pgpool2/test/jdbc/UpdateTest.java +32 -0
- data/pgpool2/test/jdbc/expected/CreateTempTable +1 -0
- data/pgpool2/test/jdbc/expected/autocommit +10 -0
- data/pgpool2/test/jdbc/expected/batch +1 -0
- data/pgpool2/test/jdbc/expected/column +100 -0
- data/pgpool2/test/jdbc/expected/insert +1 -0
- data/pgpool2/test/jdbc/expected/lock +100 -0
- data/pgpool2/test/jdbc/expected/select +2 -0
- data/pgpool2/test/jdbc/expected/update +1 -0
- data/pgpool2/test/jdbc/pgpool.properties +7 -0
- data/pgpool2/test/jdbc/prepare.sql +54 -0
- data/pgpool2/test/jdbc/run.sh +6 -0
- data/pgpool2/test/parser/.cvsignore +6 -0
- data/pgpool2/test/parser/README +32 -0
- data/pgpool2/test/parser/expected/copy.out +17 -0
- data/pgpool2/test/parser/expected/create.out +64 -0
- data/pgpool2/test/parser/expected/cursor.out +37 -0
- data/pgpool2/test/parser/expected/delete.out +10 -0
- data/pgpool2/test/parser/expected/drop.out +12 -0
- data/pgpool2/test/parser/expected/insert.out +13 -0
- data/pgpool2/test/parser/expected/misc.out +28 -0
- data/pgpool2/test/parser/expected/prepare.out +4 -0
- data/pgpool2/test/parser/expected/privileges.out +31 -0
- data/pgpool2/test/parser/expected/scanner.out +30 -0
- data/pgpool2/test/parser/expected/select.out +89 -0
- data/pgpool2/test/parser/expected/transaction.out +38 -0
- data/pgpool2/test/parser/expected/update.out +11 -0
- data/pgpool2/test/parser/expected/v84.out +37 -0
- data/pgpool2/test/parser/expected/v90.out +25 -0
- data/pgpool2/test/parser/expected/var.out +22 -0
- data/pgpool2/test/parser/input/alter.sql +2 -0
- data/pgpool2/test/parser/input/copy.sql +17 -0
- data/pgpool2/test/parser/input/create.sql +64 -0
- data/pgpool2/test/parser/input/cursor.sql +37 -0
- data/pgpool2/test/parser/input/delete.sql +10 -0
- data/pgpool2/test/parser/input/drop.sql +12 -0
- data/pgpool2/test/parser/input/insert.sql +13 -0
- data/pgpool2/test/parser/input/misc.sql +28 -0
- data/pgpool2/test/parser/input/prepare.sql +4 -0
- data/pgpool2/test/parser/input/privileges.sql +31 -0
- data/pgpool2/test/parser/input/scanner.sql +34 -0
- data/pgpool2/test/parser/input/select.sql +89 -0
- data/pgpool2/test/parser/input/transaction.sql +38 -0
- data/pgpool2/test/parser/input/update.sql +11 -0
- data/pgpool2/test/parser/input/v84.sql +37 -0
- data/pgpool2/test/parser/input/v90.sql +38 -0
- data/pgpool2/test/parser/input/var.sql +22 -0
- data/pgpool2/test/parser/main.c +96 -0
- data/pgpool2/test/parser/parse_schedule +16 -0
- data/pgpool2/test/parser/pool.h +13 -0
- data/pgpool2/test/parser/run-test +62 -0
- data/pgpool2/test/pdo-test/README.euc_jp +58 -0
- data/pgpool2/test/pdo-test/SQLlist/test1.sql +3 -0
- data/pgpool2/test/pdo-test/SQLlist/test2.sql +3 -0
- data/pgpool2/test/pdo-test/collections.inc +11 -0
- data/pgpool2/test/pdo-test/def.inc +7 -0
- data/pgpool2/test/pdo-test/log.txt +0 -0
- data/pgpool2/test/pdo-test/mod/database.inc +36 -0
- data/pgpool2/test/pdo-test/mod/def.inc +0 -0
- data/pgpool2/test/pdo-test/mod/errorhandler.inc +27 -0
- data/pgpool2/test/pdo-test/pdotest.php +11 -0
- data/pgpool2/test/pdo-test/regsql.inc +56 -0
- data/pgpool2/test/pgpool_setup +898 -0
- data/pgpool2/test/regression/README +39 -0
- data/pgpool2/test/regression/clean.sh +21 -0
- data/pgpool2/test/regression/libs.sh +16 -0
- data/pgpool2/test/regression/regress.sh +166 -0
- data/pgpool2/test/regression/tests/001.load_balance/test.sh +128 -0
- data/pgpool2/test/regression/tests/002.native_replication/PgTester.java +47 -0
- data/pgpool2/test/regression/tests/002.native_replication/create.sql +6 -0
- data/pgpool2/test/regression/tests/002.native_replication/test.sh +71 -0
- data/pgpool2/test/regression/tests/003.failover/expected.r +6 -0
- data/pgpool2/test/regression/tests/003.failover/expected.s +6 -0
- data/pgpool2/test/regression/tests/003.failover/test.sh +45 -0
- data/pgpool2/test/regression/tests/004.watchdog/master.conf +12 -0
- data/pgpool2/test/regression/tests/004.watchdog/standby.conf +19 -0
- data/pgpool2/test/regression/tests/004.watchdog/test.sh +52 -0
- data/pgpool2/test/regression/tests/050.bug58/test.sh +50 -0
- data/pgpool2/test/regression/tests/051.bug60/bug.sql +12 -0
- data/pgpool2/test/regression/tests/051.bug60/database-clean.sql +6 -0
- data/pgpool2/test/regression/tests/051.bug60/database-setup.sql +28 -0
- data/pgpool2/test/regression/tests/051.bug60/test.sh +79 -0
- data/pgpool2/test/regression/tests/052.do_query/test.sh +44 -0
- data/pgpool2/test/regression/tests/053.insert_lock_hangs/test.sh +81 -0
- data/pgpool2/test/regression/tests/054.postgres_fdw/test.sh +67 -0
- data/pgpool2/test/regression/tests/055.backend_all_down/test.sh +52 -0
- data/pgpool2/test/regression/tests/056.bug63/jdbctest2.java +66 -0
- data/pgpool2/test/regression/tests/056.bug63/test.sh +47 -0
- data/pgpool2/test/regression/tests/057.bug61/test.sh +40 -0
- data/pgpool2/test/regression/tests/058.bug68/jdbctest3.java +45 -0
- data/pgpool2/test/regression/tests/058.bug68/test.sh +47 -0
- data/pgpool2/test/timestamp/expected/insert.out +16 -0
- data/pgpool2/test/timestamp/expected/misc.out +3 -0
- data/pgpool2/test/timestamp/expected/update.out +6 -0
- data/pgpool2/test/timestamp/input/insert.sql +16 -0
- data/pgpool2/test/timestamp/input/misc.sql +3 -0
- data/pgpool2/test/timestamp/input/update.sql +6 -0
- data/pgpool2/test/timestamp/main.c +129 -0
- data/pgpool2/test/timestamp/parse_schedule +3 -0
- data/pgpool2/test/timestamp/run-test +69 -0
- data/pgpool2/version.h +1 -0
- data/pgpool2/watchdog/Makefile.am +17 -0
- data/pgpool2/watchdog/Makefile.in +505 -0
- data/pgpool2/watchdog/test/stab.c +266 -0
- data/pgpool2/watchdog/test/test.c +85 -0
- data/pgpool2/watchdog/test/wd_child_t.c +87 -0
- data/pgpool2/watchdog/test/wd_lifecheck_t.c +87 -0
- data/pgpool2/watchdog/test/wd_packet_t.c +87 -0
- data/pgpool2/watchdog/test/wd_ping_t.c +20 -0
- data/pgpool2/watchdog/watchdog.c +408 -0
- data/pgpool2/watchdog/watchdog.h +209 -0
- data/pgpool2/watchdog/wd_child.c +444 -0
- data/pgpool2/watchdog/wd_ext.h +123 -0
- data/pgpool2/watchdog/wd_heartbeat.c +577 -0
- data/pgpool2/watchdog/wd_if.c +216 -0
- data/pgpool2/watchdog/wd_init.c +126 -0
- data/pgpool2/watchdog/wd_interlock.c +347 -0
- data/pgpool2/watchdog/wd_lifecheck.c +512 -0
- data/pgpool2/watchdog/wd_list.c +429 -0
- data/pgpool2/watchdog/wd_packet.c +1159 -0
- data/pgpool2/watchdog/wd_ping.c +330 -0
- data/pgpool2/ylwrap +223 -0
- data/pgsql/presto_client.py +346 -0
- data/pgsql/prestogres.py +156 -0
- data/pgsql/setup_functions.sql +21 -0
- data/pgsql/setup_language.sql +3 -0
- data/prestogres.gemspec +23 -0
- metadata +496 -0
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* $Header$
|
|
3
|
+
*
|
|
4
|
+
* pgpool: a language independent connection pool server for PostgreSQL
|
|
5
|
+
* written by Tatsuo Ishii
|
|
6
|
+
*
|
|
7
|
+
* Copyright (c) 2003-2008 PgPool Global Development Group
|
|
8
|
+
*
|
|
9
|
+
* Permission to use, copy, modify, and distribute this software and
|
|
10
|
+
* its documentation for any purpose and without fee is hereby
|
|
11
|
+
* granted, provided that the above copyright notice appear in all
|
|
12
|
+
* copies and that both that copyright notice and this permission
|
|
13
|
+
* notice appear in supporting documentation, and that the name of the
|
|
14
|
+
* author not be used in advertising or publicity pertaining to
|
|
15
|
+
* distribution of the software without specific, written prior
|
|
16
|
+
* permission. The author makes no representations about the
|
|
17
|
+
* suitability of this software for any purpose. It is provided "as
|
|
18
|
+
* is" without express or implied warranty.
|
|
19
|
+
*
|
|
20
|
+
* Client program to send "process count" command.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
#include <stdio.h>
|
|
24
|
+
#include <stdlib.h>
|
|
25
|
+
#include <string.h>
|
|
26
|
+
#include <unistd.h>
|
|
27
|
+
#ifdef HAVE_GETOPT_H
|
|
28
|
+
#include <getopt.h>
|
|
29
|
+
#else
|
|
30
|
+
#include "getopt_long.h"
|
|
31
|
+
#endif
|
|
32
|
+
|
|
33
|
+
#include "pcp.h"
|
|
34
|
+
|
|
35
|
+
static void usage(void);
|
|
36
|
+
static void myexit(ErrorCode e);
|
|
37
|
+
|
|
38
|
+
int
|
|
39
|
+
main(int argc, char **argv)
|
|
40
|
+
{
|
|
41
|
+
long timeout;
|
|
42
|
+
char host[MAX_DB_HOST_NAMELEN];
|
|
43
|
+
int port;
|
|
44
|
+
char user[MAX_USER_PASSWD_LEN];
|
|
45
|
+
char pass[MAX_USER_PASSWD_LEN];
|
|
46
|
+
int process_count;
|
|
47
|
+
int *process_list = NULL;
|
|
48
|
+
int ch;
|
|
49
|
+
int optindex;
|
|
50
|
+
|
|
51
|
+
static struct option long_options[] = {
|
|
52
|
+
{"debug", no_argument, NULL, 'd'},
|
|
53
|
+
{"help", no_argument, NULL, 'h'},
|
|
54
|
+
{NULL, 0, NULL, 0}
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
while ((ch = getopt_long(argc, argv, "hd", long_options, &optindex)) != -1) {
|
|
58
|
+
switch (ch) {
|
|
59
|
+
case 'd':
|
|
60
|
+
pcp_enable_debug();
|
|
61
|
+
break;
|
|
62
|
+
|
|
63
|
+
case 'h':
|
|
64
|
+
case '?':
|
|
65
|
+
default:
|
|
66
|
+
usage();
|
|
67
|
+
exit(0);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
argc -= optind;
|
|
71
|
+
argv += optind;
|
|
72
|
+
|
|
73
|
+
if (argc != 5) {
|
|
74
|
+
errorcode = INVALERR;
|
|
75
|
+
pcp_errorstr(errorcode);
|
|
76
|
+
myexit(errorcode);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
timeout = atol(argv[0]);
|
|
80
|
+
if (timeout < 0) {
|
|
81
|
+
errorcode = INVALERR;
|
|
82
|
+
pcp_errorstr(errorcode);
|
|
83
|
+
myexit(errorcode);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
if (strlen(argv[1]) >= MAX_DB_HOST_NAMELEN) {
|
|
87
|
+
errorcode = INVALERR;
|
|
88
|
+
pcp_errorstr(errorcode);
|
|
89
|
+
myexit(errorcode);
|
|
90
|
+
}
|
|
91
|
+
strcpy(host, argv[1]);
|
|
92
|
+
|
|
93
|
+
port = atoi(argv[2]);
|
|
94
|
+
if (port <= 1024 || port > 65535) {
|
|
95
|
+
errorcode = INVALERR;
|
|
96
|
+
pcp_errorstr(errorcode);
|
|
97
|
+
myexit(errorcode);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if (strlen(argv[3]) >= MAX_USER_PASSWD_LEN) {
|
|
101
|
+
errorcode = INVALERR;
|
|
102
|
+
pcp_errorstr(errorcode);
|
|
103
|
+
myexit(errorcode);
|
|
104
|
+
}
|
|
105
|
+
strcpy(user, argv[3]);
|
|
106
|
+
|
|
107
|
+
if (strlen(argv[4]) >= MAX_USER_PASSWD_LEN) {
|
|
108
|
+
errorcode = INVALERR;
|
|
109
|
+
pcp_errorstr(errorcode);
|
|
110
|
+
myexit(errorcode);
|
|
111
|
+
}
|
|
112
|
+
strcpy(pass, argv[4]);
|
|
113
|
+
|
|
114
|
+
pcp_set_timeout(timeout);
|
|
115
|
+
|
|
116
|
+
if (pcp_connect(host, port, user, pass))
|
|
117
|
+
{
|
|
118
|
+
pcp_errorstr(errorcode);
|
|
119
|
+
myexit(errorcode);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
if ((process_list = pcp_process_count(&process_count)) == NULL)
|
|
123
|
+
{
|
|
124
|
+
pcp_errorstr(errorcode);
|
|
125
|
+
pcp_disconnect();
|
|
126
|
+
myexit(errorcode);
|
|
127
|
+
} else {
|
|
128
|
+
int i;
|
|
129
|
+
|
|
130
|
+
for (i = 0; i < process_count; i++)
|
|
131
|
+
printf("%d ", process_list[i]);
|
|
132
|
+
printf("\n");
|
|
133
|
+
|
|
134
|
+
free(process_list);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
pcp_disconnect();
|
|
138
|
+
|
|
139
|
+
return 0;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
static void
|
|
143
|
+
usage(void)
|
|
144
|
+
{
|
|
145
|
+
fprintf(stderr, "pcp_proc_count - display the list of pgpool-II child process PIDs\n\n");
|
|
146
|
+
fprintf(stderr, "Usage: pcp_proc_count timeout hostname port# username password\n");
|
|
147
|
+
fprintf(stderr, "Usage: pcp_node_info -h\n\n");
|
|
148
|
+
fprintf(stderr, " timeout : connection timeout value in seconds. command exits on timeout\n");
|
|
149
|
+
fprintf(stderr, " hostname : pgpool-II hostname\n");
|
|
150
|
+
fprintf(stderr, " port# : PCP port number\n");
|
|
151
|
+
fprintf(stderr, " username : username for PCP authentication\n");
|
|
152
|
+
fprintf(stderr, " password : password for PCP authentication\n");
|
|
153
|
+
fprintf(stderr, " -h, --help : print this help\n");
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
static void
|
|
157
|
+
myexit(ErrorCode e)
|
|
158
|
+
{
|
|
159
|
+
if (e == INVALERR)
|
|
160
|
+
{
|
|
161
|
+
usage();
|
|
162
|
+
exit(e);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
exit(e);
|
|
166
|
+
}
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* $Header$
|
|
3
|
+
*
|
|
4
|
+
* pgpool: a language independent connection pool server for PostgreSQL
|
|
5
|
+
* written by Tatsuo Ishii
|
|
6
|
+
*
|
|
7
|
+
* Copyright (c) 2003-2008 PgPool Global Development Group
|
|
8
|
+
*
|
|
9
|
+
* Permission to use, copy, modify, and distribute this software and
|
|
10
|
+
* its documentation for any purpose and without fee is hereby
|
|
11
|
+
* granted, provided that the above copyright notice appear in all
|
|
12
|
+
* copies and that both that copyright notice and this permission
|
|
13
|
+
* notice appear in supporting documentation, and that the name of the
|
|
14
|
+
* author not be used in advertising or publicity pertaining to
|
|
15
|
+
* distribution of the software without specific, written prior
|
|
16
|
+
* permission. The author makes no representations about the
|
|
17
|
+
* suitability of this software for any purpose. It is provided "as
|
|
18
|
+
* is" without express or implied warranty.
|
|
19
|
+
*
|
|
20
|
+
* Client program to send "process info" command.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
#include <stdio.h>
|
|
24
|
+
#include <stdlib.h>
|
|
25
|
+
#include <string.h>
|
|
26
|
+
#include <unistd.h>
|
|
27
|
+
#ifdef HAVE_GETOPT_H
|
|
28
|
+
#include <getopt.h>
|
|
29
|
+
#else
|
|
30
|
+
#include "getopt_long.h"
|
|
31
|
+
#endif
|
|
32
|
+
#include <time.h>
|
|
33
|
+
|
|
34
|
+
#include "pcp.h"
|
|
35
|
+
|
|
36
|
+
static void usage(void);
|
|
37
|
+
static void myexit(ErrorCode e);
|
|
38
|
+
|
|
39
|
+
int
|
|
40
|
+
main(int argc, char **argv)
|
|
41
|
+
{
|
|
42
|
+
long timeout;
|
|
43
|
+
char host[MAX_DB_HOST_NAMELEN];
|
|
44
|
+
int port;
|
|
45
|
+
char user[MAX_USER_PASSWD_LEN];
|
|
46
|
+
char pass[MAX_USER_PASSWD_LEN];
|
|
47
|
+
int processID;
|
|
48
|
+
ProcessInfo *process_info;
|
|
49
|
+
int array_size;
|
|
50
|
+
int ch;
|
|
51
|
+
int optindex;
|
|
52
|
+
char * frmt;
|
|
53
|
+
bool verbose = false;
|
|
54
|
+
bool all = false;
|
|
55
|
+
|
|
56
|
+
static struct option long_options[] = {
|
|
57
|
+
{"debug", no_argument, NULL, 'd'},
|
|
58
|
+
{"help", no_argument, NULL, 'h'},
|
|
59
|
+
{"verbose", no_argument, NULL, 'v'},
|
|
60
|
+
{NULL, 0, NULL, 0}
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
while ((ch = getopt_long(argc, argv, "hdva", long_options, &optindex)) != -1) {
|
|
64
|
+
switch (ch) {
|
|
65
|
+
case 'd':
|
|
66
|
+
pcp_enable_debug();
|
|
67
|
+
break;
|
|
68
|
+
|
|
69
|
+
case 'v':
|
|
70
|
+
verbose = true;
|
|
71
|
+
break;
|
|
72
|
+
|
|
73
|
+
case 'a':
|
|
74
|
+
all = true;
|
|
75
|
+
break;
|
|
76
|
+
|
|
77
|
+
case 'h':
|
|
78
|
+
case '?':
|
|
79
|
+
default:
|
|
80
|
+
usage();
|
|
81
|
+
exit(0);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
argc -= optind;
|
|
85
|
+
argv += optind;
|
|
86
|
+
|
|
87
|
+
if (verbose)
|
|
88
|
+
{
|
|
89
|
+
if (all)
|
|
90
|
+
frmt = "Database : %s\n"
|
|
91
|
+
"Username : %s\n"
|
|
92
|
+
"Start time : %s\n"
|
|
93
|
+
"Creation time: %s\n"
|
|
94
|
+
"Major : %d\n"
|
|
95
|
+
"Minor : %d\n"
|
|
96
|
+
"Counter : %d\n"
|
|
97
|
+
"Backend PID : %d\n"
|
|
98
|
+
"Connected : %d\n"
|
|
99
|
+
"PID : %d\n"
|
|
100
|
+
"Backend ID : %d\n";
|
|
101
|
+
else
|
|
102
|
+
frmt = "Database : %s\n"
|
|
103
|
+
"Username : %s\n"
|
|
104
|
+
"Start time : %s\n"
|
|
105
|
+
"Creation time: %s\n"
|
|
106
|
+
"Major : %d\n"
|
|
107
|
+
"Minor : %d\n"
|
|
108
|
+
"Counter : %d\n"
|
|
109
|
+
"Backend PID : %d\n"
|
|
110
|
+
"Connected : %d\n";
|
|
111
|
+
}
|
|
112
|
+
else
|
|
113
|
+
{
|
|
114
|
+
if (all)
|
|
115
|
+
frmt = "%s %s %s %s %d %d %d %d %d %d %d\n";
|
|
116
|
+
else
|
|
117
|
+
frmt = "%s %s %s %s %d %d %d %d %d\n";
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
if (!(argc == 5 || argc == 6))
|
|
121
|
+
{
|
|
122
|
+
errorcode = INVALERR;
|
|
123
|
+
pcp_errorstr(errorcode);
|
|
124
|
+
myexit(errorcode);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
timeout = atol(argv[0]);
|
|
128
|
+
if (timeout < 0) {
|
|
129
|
+
errorcode = INVALERR;
|
|
130
|
+
pcp_errorstr(errorcode);
|
|
131
|
+
myexit(errorcode);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
if (strlen(argv[1]) >= MAX_DB_HOST_NAMELEN)
|
|
135
|
+
{
|
|
136
|
+
errorcode = INVALERR;
|
|
137
|
+
pcp_errorstr(errorcode);
|
|
138
|
+
myexit(errorcode);
|
|
139
|
+
}
|
|
140
|
+
strcpy(host, argv[1]);
|
|
141
|
+
|
|
142
|
+
port = atoi(argv[2]);
|
|
143
|
+
if (port <= 1024 || port > 65535)
|
|
144
|
+
{
|
|
145
|
+
errorcode = INVALERR;
|
|
146
|
+
pcp_errorstr(errorcode);
|
|
147
|
+
myexit(errorcode);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
if (strlen(argv[3]) >= MAX_USER_PASSWD_LEN)
|
|
151
|
+
{
|
|
152
|
+
errorcode = INVALERR;
|
|
153
|
+
pcp_errorstr(errorcode);
|
|
154
|
+
myexit(errorcode);
|
|
155
|
+
}
|
|
156
|
+
strcpy(user, argv[3]);
|
|
157
|
+
|
|
158
|
+
if (strlen(argv[4]) >= MAX_USER_PASSWD_LEN)
|
|
159
|
+
{
|
|
160
|
+
errorcode = INVALERR;
|
|
161
|
+
pcp_errorstr(errorcode);
|
|
162
|
+
myexit(errorcode);
|
|
163
|
+
}
|
|
164
|
+
strcpy(pass, argv[4]);
|
|
165
|
+
|
|
166
|
+
if (argc == 6) {
|
|
167
|
+
|
|
168
|
+
processID = atoi(argv[5]);
|
|
169
|
+
if (processID < 0)
|
|
170
|
+
{
|
|
171
|
+
errorcode = INVALERR;
|
|
172
|
+
pcp_errorstr(errorcode);
|
|
173
|
+
myexit(errorcode);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
processID = 0;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
pcp_set_timeout(timeout);
|
|
181
|
+
|
|
182
|
+
if (pcp_connect(host, port, user, pass))
|
|
183
|
+
{
|
|
184
|
+
pcp_errorstr(errorcode);
|
|
185
|
+
myexit(errorcode);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
if ((process_info = pcp_process_info(processID, &array_size)) == NULL)
|
|
189
|
+
{
|
|
190
|
+
pcp_errorstr(errorcode);
|
|
191
|
+
pcp_disconnect();
|
|
192
|
+
myexit(errorcode);
|
|
193
|
+
} else {
|
|
194
|
+
int i;
|
|
195
|
+
char strcreatetime[128];
|
|
196
|
+
char strstarttime[128];
|
|
197
|
+
|
|
198
|
+
for (i = 0; i < array_size; i++)
|
|
199
|
+
{
|
|
200
|
+
if ((!all) && (process_info[i].connection_info->database[0] == '\0'))
|
|
201
|
+
continue;
|
|
202
|
+
|
|
203
|
+
*strcreatetime = *strstarttime = '\0';
|
|
204
|
+
|
|
205
|
+
if (process_info[i].start_time)
|
|
206
|
+
strftime(strstarttime, 128, "%Y-%m-%d %H:%M:%S", localtime(&process_info[i].start_time));
|
|
207
|
+
if (process_info[i].connection_info->create_time)
|
|
208
|
+
strftime(strcreatetime, 128, "%Y-%m-%d %H:%M:%S", localtime(&process_info[i].connection_info->create_time));
|
|
209
|
+
|
|
210
|
+
printf(frmt,
|
|
211
|
+
process_info[i].connection_info->database,
|
|
212
|
+
process_info[i].connection_info->user,
|
|
213
|
+
strstarttime,
|
|
214
|
+
strcreatetime,
|
|
215
|
+
process_info[i].connection_info->major,
|
|
216
|
+
process_info[i].connection_info->minor,
|
|
217
|
+
process_info[i].connection_info->counter,
|
|
218
|
+
process_info[i].connection_info->pid,
|
|
219
|
+
process_info[i].connection_info->connected,
|
|
220
|
+
process_info[i].pid,
|
|
221
|
+
process_info[i].connection_info->backend_id);
|
|
222
|
+
}
|
|
223
|
+
free(process_info->connection_info);
|
|
224
|
+
free(process_info);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
pcp_disconnect();
|
|
228
|
+
|
|
229
|
+
return 0;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
static void
|
|
233
|
+
usage(void)
|
|
234
|
+
{
|
|
235
|
+
fprintf(stderr, "pcp_proc_info - display a pgpool-II child process' information\n\n");
|
|
236
|
+
fprintf(stderr, "Usage: pcp_proc_info [-d] timeout hostname port# username password [PID]\n");
|
|
237
|
+
fprintf(stderr, " -d, --debug : enable debug message (optional)\n");
|
|
238
|
+
fprintf(stderr, " timeout : connection timeout value in seconds. command exits on timeout\n");
|
|
239
|
+
fprintf(stderr, " hostname : pgpool-II hostname\n");
|
|
240
|
+
fprintf(stderr, " port# : PCP port number\n");
|
|
241
|
+
fprintf(stderr, " username : username for PCP authentication\n");
|
|
242
|
+
fprintf(stderr, " password : password for PCP authentication\n");
|
|
243
|
+
fprintf(stderr, " PID : if given, PID of the only child process to get information for\n\n");
|
|
244
|
+
fprintf(stderr, "Usage: pcp_proc_info [options]\n");
|
|
245
|
+
fprintf(stderr, " Options available are:\n");
|
|
246
|
+
fprintf(stderr, " -h, --help : print this help\n");
|
|
247
|
+
fprintf(stderr, " -v, --verbose : display one line per information with a header\n");
|
|
248
|
+
fprintf(stderr, " -a, --all : display all child processes and their available connection slots.\n");
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
static void
|
|
252
|
+
myexit(ErrorCode e)
|
|
253
|
+
{
|
|
254
|
+
if (e == INVALERR)
|
|
255
|
+
{
|
|
256
|
+
usage();
|
|
257
|
+
exit(e);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
exit(e);
|
|
261
|
+
}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* $Header$
|
|
3
|
+
*
|
|
4
|
+
* pgpool: a language independent connection pool server for PostgreSQL
|
|
5
|
+
* written by Tatsuo Ishii
|
|
6
|
+
*
|
|
7
|
+
* Copyright (c) 2003-2011 PgPool Global Development Group
|
|
8
|
+
*
|
|
9
|
+
* Permission to use, copy, modify, and distribute this software and
|
|
10
|
+
* its documentation for any purpose and without fee is hereby
|
|
11
|
+
* granted, provided that the above copyright notice appear in all
|
|
12
|
+
* copies and that both that copyright notice and this permission
|
|
13
|
+
* notice appear in supporting documentation, and that the name of the
|
|
14
|
+
* author not be used in advertising or publicity pertaining to
|
|
15
|
+
* distribution of the software without specific, written prior
|
|
16
|
+
* permission. The author makes no representations about the
|
|
17
|
+
* suitability of this software for any purpose. It is provided "as
|
|
18
|
+
* is" without express or implied warranty.
|
|
19
|
+
*
|
|
20
|
+
* Client program to send "promote node" command.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
#include <stdio.h>
|
|
24
|
+
#include <stdlib.h>
|
|
25
|
+
#include <string.h>
|
|
26
|
+
#include <unistd.h>
|
|
27
|
+
#ifdef HAVE_GETOPT_H
|
|
28
|
+
#include <getopt.h>
|
|
29
|
+
#else
|
|
30
|
+
#include "getopt_long.h"
|
|
31
|
+
#endif
|
|
32
|
+
|
|
33
|
+
#include "pcp.h"
|
|
34
|
+
|
|
35
|
+
static void usage(void);
|
|
36
|
+
static void myexit(ErrorCode e);
|
|
37
|
+
|
|
38
|
+
int
|
|
39
|
+
main(int argc, char **argv)
|
|
40
|
+
{
|
|
41
|
+
long timeout;
|
|
42
|
+
char host[MAX_DB_HOST_NAMELEN];
|
|
43
|
+
int port;
|
|
44
|
+
char user[MAX_USER_PASSWD_LEN];
|
|
45
|
+
char pass[MAX_USER_PASSWD_LEN];
|
|
46
|
+
int nodeID;
|
|
47
|
+
int ch;
|
|
48
|
+
int optindex;
|
|
49
|
+
bool gracefully = false;
|
|
50
|
+
int sts;
|
|
51
|
+
|
|
52
|
+
static struct option long_options[] = {
|
|
53
|
+
{"debug", no_argument, NULL, 'd'},
|
|
54
|
+
{"gracefully", no_argument, NULL, 'g'},
|
|
55
|
+
{"help", no_argument, NULL, 'h'},
|
|
56
|
+
{NULL, 0, NULL, 0}
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
while ((ch = getopt_long(argc, argv, "hdg", long_options, &optindex)) != -1) {
|
|
60
|
+
switch (ch) {
|
|
61
|
+
case 'd':
|
|
62
|
+
pcp_enable_debug();
|
|
63
|
+
break;
|
|
64
|
+
|
|
65
|
+
case 'g':
|
|
66
|
+
gracefully = true;
|
|
67
|
+
break;
|
|
68
|
+
|
|
69
|
+
case 'h':
|
|
70
|
+
case '?':
|
|
71
|
+
default:
|
|
72
|
+
usage();
|
|
73
|
+
exit(0);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
argc -= optind;
|
|
77
|
+
argv += optind;
|
|
78
|
+
|
|
79
|
+
if (argc != 6)
|
|
80
|
+
{
|
|
81
|
+
errorcode = INVALERR;
|
|
82
|
+
pcp_errorstr(errorcode);
|
|
83
|
+
myexit(errorcode);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
timeout = atol(argv[0]);
|
|
87
|
+
if (timeout < 0) {
|
|
88
|
+
errorcode = INVALERR;
|
|
89
|
+
pcp_errorstr(errorcode);
|
|
90
|
+
myexit(errorcode);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
if (strlen(argv[1]) >= MAX_DB_HOST_NAMELEN)
|
|
94
|
+
{
|
|
95
|
+
errorcode = INVALERR;
|
|
96
|
+
pcp_errorstr(errorcode);
|
|
97
|
+
myexit(errorcode);
|
|
98
|
+
}
|
|
99
|
+
strcpy(host, argv[1]);
|
|
100
|
+
|
|
101
|
+
port = atoi(argv[2]);
|
|
102
|
+
if (port <= 1024 || port > 65535)
|
|
103
|
+
{
|
|
104
|
+
errorcode = INVALERR;
|
|
105
|
+
pcp_errorstr(errorcode);
|
|
106
|
+
myexit(errorcode);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
if (strlen(argv[3]) >= MAX_USER_PASSWD_LEN)
|
|
110
|
+
{
|
|
111
|
+
errorcode = INVALERR;
|
|
112
|
+
pcp_errorstr(errorcode);
|
|
113
|
+
myexit(errorcode);
|
|
114
|
+
}
|
|
115
|
+
strcpy(user, argv[3]);
|
|
116
|
+
|
|
117
|
+
if (strlen(argv[4]) >= MAX_USER_PASSWD_LEN)
|
|
118
|
+
{
|
|
119
|
+
errorcode = INVALERR;
|
|
120
|
+
pcp_errorstr(errorcode);
|
|
121
|
+
myexit(errorcode);
|
|
122
|
+
}
|
|
123
|
+
strcpy(pass, argv[4]);
|
|
124
|
+
|
|
125
|
+
nodeID = atoi(argv[5]);
|
|
126
|
+
if (nodeID < 0 || nodeID > MAX_NUM_BACKENDS)
|
|
127
|
+
{
|
|
128
|
+
errorcode = INVALERR;
|
|
129
|
+
pcp_errorstr(errorcode);
|
|
130
|
+
myexit(errorcode);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
pcp_set_timeout(timeout);
|
|
134
|
+
|
|
135
|
+
if (pcp_connect(host, port, user, pass))
|
|
136
|
+
{
|
|
137
|
+
pcp_errorstr(errorcode);
|
|
138
|
+
myexit(errorcode);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
if (gracefully)
|
|
142
|
+
sts = pcp_promote_node_gracefully(nodeID);
|
|
143
|
+
else
|
|
144
|
+
sts = pcp_promote_node(nodeID);
|
|
145
|
+
|
|
146
|
+
if (sts)
|
|
147
|
+
{
|
|
148
|
+
pcp_errorstr(errorcode);
|
|
149
|
+
pcp_disconnect();
|
|
150
|
+
myexit(errorcode);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
pcp_disconnect();
|
|
154
|
+
|
|
155
|
+
return 0;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
static void
|
|
159
|
+
usage(void)
|
|
160
|
+
{
|
|
161
|
+
fprintf(stderr, "pcp_promote_node - promote a node as new master from pgpool-II\n\n");
|
|
162
|
+
fprintf(stderr, "Usage: pcp_promote_node [-d][-g] timeout hostname port# username password nodeID\n");
|
|
163
|
+
fprintf(stderr, "Usage: pcp_promote_node -h\n\n");
|
|
164
|
+
fprintf(stderr, " -d, --debug : enable debug message (optional)\n");
|
|
165
|
+
fprintf(stderr, " -g, --gracefully : promote gracefully(optional)\n");
|
|
166
|
+
fprintf(stderr, " timeout : connection timeout value in seconds. command exits on timeout\n");
|
|
167
|
+
fprintf(stderr, " hostname : pgpool-II hostname\n");
|
|
168
|
+
fprintf(stderr, " port# : PCP port number\n");
|
|
169
|
+
fprintf(stderr, " username : username for PCP authentication\n");
|
|
170
|
+
fprintf(stderr, " password : password for PCP authentication\n");
|
|
171
|
+
fprintf(stderr, " nodeID : ID of a node to be promoted\n");
|
|
172
|
+
fprintf(stderr, " -h, --help : print this help\n");
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
static void
|
|
176
|
+
myexit(ErrorCode e)
|
|
177
|
+
{
|
|
178
|
+
if (e == INVALERR)
|
|
179
|
+
{
|
|
180
|
+
usage();
|
|
181
|
+
exit(e);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
exit(e);
|
|
185
|
+
}
|