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,41 @@
|
|
|
1
|
+
/* -*-pgsql-c-*- */
|
|
2
|
+
/*
|
|
3
|
+
*
|
|
4
|
+
* $Header$
|
|
5
|
+
*
|
|
6
|
+
* pgpool: a language independent connection pool server for PostgreSQL
|
|
7
|
+
* written by Tatsuo Ishii
|
|
8
|
+
*
|
|
9
|
+
* Copyright (c) 2003-2010 PgPool Global Development Group
|
|
10
|
+
*
|
|
11
|
+
* Permission to use, copy, modify, and distribute this software and
|
|
12
|
+
* its documentation for any purpose and without fee is hereby
|
|
13
|
+
* granted, provided that the above copyright notice appear in all
|
|
14
|
+
* copies and that both that copyright notice and this permission
|
|
15
|
+
* notice appear in supporting documentation, and that the name of the
|
|
16
|
+
* author not be used in advertising or publicity pertaining to
|
|
17
|
+
* distribution of the software without specific, written prior
|
|
18
|
+
* permission. The author makes no representations about the
|
|
19
|
+
* suitability of this software for any purpose. It is provided "as
|
|
20
|
+
* is" without express or implied warranty.
|
|
21
|
+
*
|
|
22
|
+
* pool_passwd.h: pool_passwd related definitions.
|
|
23
|
+
*
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
#ifndef POOL_PASSWD_H
|
|
27
|
+
#define POOL_PASSWD_H
|
|
28
|
+
|
|
29
|
+
#include "pool.h"
|
|
30
|
+
|
|
31
|
+
#define POOL_PASSWD_FILENAME "pool_passwd"
|
|
32
|
+
#define POOL_PASSWD_LEN 35
|
|
33
|
+
|
|
34
|
+
extern void pool_init_pool_passwd(char *pool_passwd_filename);
|
|
35
|
+
extern int pool_create_passwdent(char *username, char *passwd);
|
|
36
|
+
extern char *pool_get_passwd(char *username);
|
|
37
|
+
extern void pool_delete_passwdent(char *username);
|
|
38
|
+
extern void pool_finish_pool_passwd(void);
|
|
39
|
+
extern void pool_reopen_passwd_file(void);
|
|
40
|
+
|
|
41
|
+
#endif /* POOL_PASSWD_H */
|
data/pgpool2/pool_path.c
ADDED
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
/* -*-pgsql-c-*- */
|
|
2
|
+
/*
|
|
3
|
+
*
|
|
4
|
+
* $Header$
|
|
5
|
+
*
|
|
6
|
+
* pgpool: a language independent connection pool server for PostgreSQL
|
|
7
|
+
* written by Tatsuo Ishii
|
|
8
|
+
*
|
|
9
|
+
* Portions Copyright (c) 2003-2008, PgPool Global Development Group
|
|
10
|
+
* Portions Copyright (c) 2004, PostgreSQL Global Development Group
|
|
11
|
+
*
|
|
12
|
+
* Permission to use, copy, modify, and distribute this software and
|
|
13
|
+
* its documentation for any purpose and without fee is hereby
|
|
14
|
+
* granted, provided that the above copyright notice appear in all
|
|
15
|
+
* copies and that both that copyright notice and this permission
|
|
16
|
+
* notice appear in supporting documentation, and that the name of the
|
|
17
|
+
* author not be used in advertising or publicity pertaining to
|
|
18
|
+
* distribution of the software without specific, written prior
|
|
19
|
+
* permission. The author makes no representations about the
|
|
20
|
+
* suitability of this software for any purpose. It is provided "as
|
|
21
|
+
* is" without express or implied warranty.
|
|
22
|
+
*
|
|
23
|
+
* pool_path.c.: small functions to manipulate paths
|
|
24
|
+
*
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
#include "pool_type.h"
|
|
28
|
+
#include "pool_path.h"
|
|
29
|
+
#include <stdio.h>
|
|
30
|
+
#include <string.h>
|
|
31
|
+
|
|
32
|
+
static void trim_directory(char *path);
|
|
33
|
+
static void trim_trailing_separator(char *path);
|
|
34
|
+
|
|
35
|
+
/*
|
|
36
|
+
* get_parent_directory
|
|
37
|
+
*
|
|
38
|
+
* Modify the given string in-place to name the parent directory of the
|
|
39
|
+
* named file.
|
|
40
|
+
*/
|
|
41
|
+
void get_parent_directory(char *path)
|
|
42
|
+
{
|
|
43
|
+
trim_directory(path);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
/*
|
|
48
|
+
* trim_directory
|
|
49
|
+
*
|
|
50
|
+
* Trim trailing directory from path, that is, remove any trailing slashes,
|
|
51
|
+
* the last pathname component, and the slash just ahead of it --- but never
|
|
52
|
+
* remove a leading slash.
|
|
53
|
+
*/
|
|
54
|
+
static void trim_directory(char *path)
|
|
55
|
+
{
|
|
56
|
+
char *p;
|
|
57
|
+
|
|
58
|
+
if (path[0] == '\0')
|
|
59
|
+
return;
|
|
60
|
+
|
|
61
|
+
/* back up over trailing slash(es) */
|
|
62
|
+
for (p = path + strlen(path) - 1; IS_DIR_SEP(*p) && p > path; p--);
|
|
63
|
+
|
|
64
|
+
/* back up over directory name */
|
|
65
|
+
for (; !IS_DIR_SEP(*p) && p > path; p--);
|
|
66
|
+
|
|
67
|
+
/* if multiple slashes before directory name, remove 'em all */
|
|
68
|
+
for (; p > path && IS_DIR_SEP(*(p - 1)); p--);
|
|
69
|
+
|
|
70
|
+
/* don't erase a leading slash */
|
|
71
|
+
if (p == path && IS_DIR_SEP(*p))
|
|
72
|
+
p++;
|
|
73
|
+
|
|
74
|
+
*p = '\0';
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
/*
|
|
79
|
+
* join_path_components - join two path components, inserting a slash
|
|
80
|
+
*
|
|
81
|
+
* ret_path is the output area (must be of size MAXPGPATH)
|
|
82
|
+
*
|
|
83
|
+
* ret_path can be the same as head, but not the same as tail.
|
|
84
|
+
*/
|
|
85
|
+
void join_path_components(char *ret_path, const char *head, const char *tail)
|
|
86
|
+
{
|
|
87
|
+
if (ret_path != head)
|
|
88
|
+
StrNCpy(ret_path, head, MAXPGPATH);
|
|
89
|
+
|
|
90
|
+
/*
|
|
91
|
+
* Remove any leading "." and ".." in the tail component,
|
|
92
|
+
* adjusting head as needed.
|
|
93
|
+
*/
|
|
94
|
+
for (;;)
|
|
95
|
+
{
|
|
96
|
+
if (tail[0] == '.' && IS_DIR_SEP(tail[1]))
|
|
97
|
+
{
|
|
98
|
+
tail += 2;
|
|
99
|
+
}
|
|
100
|
+
else if (tail[0] == '.' && tail[1] == '\0')
|
|
101
|
+
{
|
|
102
|
+
tail += 1;
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
else if (tail[0] == '.' && tail[1] == '.' && IS_DIR_SEP(tail[2]))
|
|
106
|
+
{
|
|
107
|
+
trim_directory(ret_path);
|
|
108
|
+
tail += 3;
|
|
109
|
+
}
|
|
110
|
+
else if (tail[0] == '.' && tail[1] == '.' && tail[2] == '\0')
|
|
111
|
+
{
|
|
112
|
+
trim_directory(ret_path);
|
|
113
|
+
tail += 2;
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
else
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
if (*tail)
|
|
121
|
+
snprintf(ret_path + strlen(ret_path), MAXPGPATH - strlen(ret_path), "/%s", tail);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
/*
|
|
126
|
+
* Clean up path by:
|
|
127
|
+
* o remove trailing slash
|
|
128
|
+
* o remove duplicate adjacent separators
|
|
129
|
+
* o remove trailing '.'
|
|
130
|
+
* o process trailing '..' ourselves
|
|
131
|
+
*/
|
|
132
|
+
void canonicalize_path(char *path)
|
|
133
|
+
{
|
|
134
|
+
char *p, *to_p;
|
|
135
|
+
bool was_sep = false;
|
|
136
|
+
|
|
137
|
+
/*
|
|
138
|
+
* Removing the trailing slash on a path means we never get ugly
|
|
139
|
+
* double trailing slashes.
|
|
140
|
+
*/
|
|
141
|
+
trim_trailing_separator(path);
|
|
142
|
+
|
|
143
|
+
/*
|
|
144
|
+
* Remove duplicate adjacent separators
|
|
145
|
+
*/
|
|
146
|
+
p = path;
|
|
147
|
+
to_p = p;
|
|
148
|
+
for (; *p; p++, to_p++)
|
|
149
|
+
{
|
|
150
|
+
/* Handle many adjacent slashes, like "/a///b" */
|
|
151
|
+
while (*p == '/' && was_sep)
|
|
152
|
+
p++;
|
|
153
|
+
if (to_p != p)
|
|
154
|
+
*to_p = *p;
|
|
155
|
+
was_sep = (*p == '/');
|
|
156
|
+
}
|
|
157
|
+
*to_p = '\0';
|
|
158
|
+
|
|
159
|
+
/*
|
|
160
|
+
* Remove any trailing uses of "." and process ".." ourselves
|
|
161
|
+
*/
|
|
162
|
+
for (;;)
|
|
163
|
+
{
|
|
164
|
+
int len = strlen(path);
|
|
165
|
+
|
|
166
|
+
if (len > 2 && strcmp(path + len - 2, "/.") == 0)
|
|
167
|
+
trim_directory(path);
|
|
168
|
+
else if (len > 3 && strcmp(path + len - 3, "/..") == 0)
|
|
169
|
+
{
|
|
170
|
+
trim_directory(path);
|
|
171
|
+
trim_directory(path);
|
|
172
|
+
/* remove directory above */
|
|
173
|
+
}
|
|
174
|
+
else
|
|
175
|
+
break;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
/*
|
|
181
|
+
* trim_trailing_separator
|
|
182
|
+
*
|
|
183
|
+
* trim off trailing slashes, but not a leading slash
|
|
184
|
+
*/
|
|
185
|
+
static void trim_trailing_separator(char *path)
|
|
186
|
+
{
|
|
187
|
+
char *p;
|
|
188
|
+
|
|
189
|
+
p = path + strlen(path);
|
|
190
|
+
if (p > path)
|
|
191
|
+
for (p--; p > path && IS_DIR_SEP(*p); p--)
|
|
192
|
+
*p = '\0';
|
|
193
|
+
}
|
data/pgpool2/pool_path.h
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/* -*-pgsql-c-*- */
|
|
2
|
+
/*
|
|
3
|
+
*
|
|
4
|
+
* $Header$
|
|
5
|
+
*
|
|
6
|
+
* pgpool: a language independent connection pool server for PostgreSQL
|
|
7
|
+
* written by Tatsuo Ishii
|
|
8
|
+
*
|
|
9
|
+
* Portions Copyright (c) 2003-2008, PgPool Global Development Group
|
|
10
|
+
* Portions Copyright (c) 2004, PostgreSQL Global Development Group
|
|
11
|
+
*
|
|
12
|
+
* Permission to use, copy, modify, and distribute this software and
|
|
13
|
+
* its documentation for any purpose and without fee is hereby
|
|
14
|
+
* granted, provided that the above copyright notice appear in all
|
|
15
|
+
* copies and that both that copyright notice and this permission
|
|
16
|
+
* notice appear in supporting documentation, and that the name of the
|
|
17
|
+
* author not be used in advertising or publicity pertaining to
|
|
18
|
+
* distribution of the software without specific, written prior
|
|
19
|
+
* permission. The author makes no representations about the
|
|
20
|
+
* suitability of this software for any purpose. It is provided "as
|
|
21
|
+
* is" without express or implied warranty.
|
|
22
|
+
*
|
|
23
|
+
* pool_path.h.: interface to pool_path.c
|
|
24
|
+
*
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
#ifndef POOL_PATH_H
|
|
28
|
+
#define POOL_PATH_H
|
|
29
|
+
|
|
30
|
+
/*
|
|
31
|
+
* MAXPGPATH: standard size of a pathname buffer in PostgreSQL (hence,
|
|
32
|
+
* maximum usable pathname length is one less).
|
|
33
|
+
*
|
|
34
|
+
* We'd use a standard system header symbol for this, if there weren't
|
|
35
|
+
* so many to choose from: MAXPATHLEN, MAX_PATH, PATH_MAX are all
|
|
36
|
+
* defined by different "standards", and often have different values
|
|
37
|
+
* on the same platform! So we just punt and use a reasonably
|
|
38
|
+
* generous setting here.
|
|
39
|
+
*/
|
|
40
|
+
#define MAXPGPATH 1024
|
|
41
|
+
|
|
42
|
+
#define IS_DIR_SEP(ch) ((ch) == '/')
|
|
43
|
+
#define is_absolute_path(filename) \
|
|
44
|
+
( \
|
|
45
|
+
((filename)[0] == '/') \
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
/*
|
|
49
|
+
* StrNCpy
|
|
50
|
+
* Like standard library function strncpy(), except that result string
|
|
51
|
+
* is guaranteed to be null-terminated --- that is, at most N-1 bytes
|
|
52
|
+
* of the source string will be kept.
|
|
53
|
+
* Also, the macro returns no result (too hard to do that without
|
|
54
|
+
* evaluating the arguments multiple times, which seems worse).
|
|
55
|
+
*
|
|
56
|
+
* BTW: when you need to copy a non-null-terminated string (like a text
|
|
57
|
+
* datum) and add a null, do not do it with StrNCpy(..., len+1). That
|
|
58
|
+
* might seem to work, but it fetches one byte more than there is in the
|
|
59
|
+
* text object. One fine day you'll have a SIGSEGV because there isn't
|
|
60
|
+
* another byte before the end of memory. Don't laugh, we've had real
|
|
61
|
+
* live bug reports from real live users over exactly this mistake.
|
|
62
|
+
* Do it honestly with "memcpy(dst,src,len); dst[len] = '\0';", instead.
|
|
63
|
+
*/
|
|
64
|
+
#define StrNCpy(dst,src,len) \
|
|
65
|
+
do \
|
|
66
|
+
{ \
|
|
67
|
+
char * _dst = (dst); \
|
|
68
|
+
size_t _len = (len); \
|
|
69
|
+
\
|
|
70
|
+
if (_len > 0) \
|
|
71
|
+
{ \
|
|
72
|
+
strncpy(_dst, (src), _len); \
|
|
73
|
+
_dst[_len-1] = '\0'; \
|
|
74
|
+
} \
|
|
75
|
+
} while (0)
|
|
76
|
+
|
|
77
|
+
extern void get_parent_directory(char *path);
|
|
78
|
+
extern void join_path_components(char *ret_path, const char *head, const char *tail);
|
|
79
|
+
extern void canonicalize_path(char *path);
|
|
80
|
+
|
|
81
|
+
#endif /* POOL_PATH_H */
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
/* -*-pgsql-c-*- */
|
|
2
|
+
/*
|
|
3
|
+
*
|
|
4
|
+
* $Header$
|
|
5
|
+
*
|
|
6
|
+
* pgpool: a language independent connection pool server for PostgreSQL
|
|
7
|
+
* written by Tatsuo Ishii
|
|
8
|
+
*
|
|
9
|
+
* Copyright (c) 2003-2013 PgPool Global Development Group
|
|
10
|
+
*
|
|
11
|
+
* Permission to use, copy, modify, and distribute this software and
|
|
12
|
+
* its documentation for any purpose and without fee is hereby
|
|
13
|
+
* granted, provided that the above copyright notice appear in all
|
|
14
|
+
* copies and that both that copyright notice and this permission
|
|
15
|
+
* notice appear in supporting documentation, and that the name of the
|
|
16
|
+
* author not be used in advertising or publicity pertaining to
|
|
17
|
+
* distribution of the software without specific, written prior
|
|
18
|
+
* permission. The author makes no representations about the
|
|
19
|
+
* suitability of this software for any purpose. It is provided "as
|
|
20
|
+
* is" without express or implied warranty.
|
|
21
|
+
*
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
#include "pool.h"
|
|
25
|
+
#include "pool_process_context.h"
|
|
26
|
+
#include "pool_config.h" /* remove me afterwards */
|
|
27
|
+
|
|
28
|
+
static POOL_PROCESS_CONTEXT process_context_d;
|
|
29
|
+
static POOL_PROCESS_CONTEXT *process_context;
|
|
30
|
+
|
|
31
|
+
/*
|
|
32
|
+
* Initialize per process context
|
|
33
|
+
*/
|
|
34
|
+
void pool_init_process_context(void)
|
|
35
|
+
{
|
|
36
|
+
process_context = &process_context_d;
|
|
37
|
+
|
|
38
|
+
if (!process_info)
|
|
39
|
+
{
|
|
40
|
+
pool_error("pool_init_process_context: process_info is not set");
|
|
41
|
+
child_exit(1);
|
|
42
|
+
}
|
|
43
|
+
process_context->process_info = process_info;
|
|
44
|
+
|
|
45
|
+
if (!pool_config->backend_desc)
|
|
46
|
+
{
|
|
47
|
+
pool_error("pool_init_process_context: backend_desc is not set");
|
|
48
|
+
child_exit(1);
|
|
49
|
+
}
|
|
50
|
+
process_context->backend_desc = pool_config->backend_desc;
|
|
51
|
+
|
|
52
|
+
process_context->proc_id = my_proc_id;
|
|
53
|
+
|
|
54
|
+
process_context->local_session_id = 0; /* initialize local session counter */
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/*
|
|
58
|
+
* Return process context
|
|
59
|
+
*/
|
|
60
|
+
POOL_PROCESS_CONTEXT *pool_get_process_context(void)
|
|
61
|
+
{
|
|
62
|
+
if (!process_context)
|
|
63
|
+
{
|
|
64
|
+
pool_error("pool_get_process_context: process context is not initialized");
|
|
65
|
+
}
|
|
66
|
+
return process_context;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/*
|
|
70
|
+
* Return my process info
|
|
71
|
+
*/
|
|
72
|
+
ProcessInfo *pool_get_my_process_info(void)
|
|
73
|
+
{
|
|
74
|
+
if (!process_context)
|
|
75
|
+
{
|
|
76
|
+
pool_error("pool_get_my_process_info: process context is not initialized");
|
|
77
|
+
return NULL;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
return &process_context->process_info[process_context->proc_id];
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/*
|
|
84
|
+
* Increment local session id
|
|
85
|
+
*/
|
|
86
|
+
void pool_incremnet_local_session_id(void)
|
|
87
|
+
{
|
|
88
|
+
POOL_PROCESS_CONTEXT *p = pool_get_process_context();
|
|
89
|
+
|
|
90
|
+
if (!p)
|
|
91
|
+
{
|
|
92
|
+
pool_error("pool_incremnet_local_session_id: cannot get process context");
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
p->local_session_id++;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/*
|
|
99
|
+
* Return byte size of connection info(ConnectionInfo) on shmem.
|
|
100
|
+
*/
|
|
101
|
+
int pool_coninfo_size(void)
|
|
102
|
+
{
|
|
103
|
+
int size;
|
|
104
|
+
size = pool_config->num_init_children *
|
|
105
|
+
pool_config->max_pool *
|
|
106
|
+
MAX_NUM_BACKENDS *
|
|
107
|
+
sizeof(ConnectionInfo);
|
|
108
|
+
|
|
109
|
+
return size;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/*
|
|
113
|
+
* Return number of elements of connection info(ConnectionInfo) on shmem.
|
|
114
|
+
*/
|
|
115
|
+
int pool_coninfo_num(void)
|
|
116
|
+
{
|
|
117
|
+
int nelm;
|
|
118
|
+
nelm = pool_config->num_init_children *
|
|
119
|
+
pool_config->max_pool *
|
|
120
|
+
MAX_NUM_BACKENDS;
|
|
121
|
+
|
|
122
|
+
return nelm;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/*
|
|
126
|
+
* Return pointer to i th child, j th connection pool and k th backend
|
|
127
|
+
* of connection info on shmem.
|
|
128
|
+
*/
|
|
129
|
+
ConnectionInfo *pool_coninfo(int child, int connection_pool, int backend)
|
|
130
|
+
{
|
|
131
|
+
if (child < 0 || child >= pool_config->num_init_children)
|
|
132
|
+
{
|
|
133
|
+
pool_error("pool_coninfo: invalid child number: %d", child);
|
|
134
|
+
return NULL;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
if (connection_pool < 0 || connection_pool >= pool_config->max_pool)
|
|
138
|
+
{
|
|
139
|
+
pool_error("pool_coninfo: invalid connection_pool number: %d", connection_pool);
|
|
140
|
+
return NULL;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
if (backend < 0 || backend >= MAX_NUM_BACKENDS)
|
|
144
|
+
{
|
|
145
|
+
pool_error("pool_coninfo: invalid backend number: %d", backend);
|
|
146
|
+
return NULL;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
return &con_info[child*pool_config->max_pool*MAX_NUM_BACKENDS+
|
|
150
|
+
connection_pool*MAX_NUM_BACKENDS+
|
|
151
|
+
backend];
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/*
|
|
155
|
+
* Return pointer to child which has OS process id pid, j th connection
|
|
156
|
+
* pool and k th backend of connection info on shmem.
|
|
157
|
+
*/
|
|
158
|
+
ConnectionInfo *pool_coninfo_pid(int pid, int connection_pool, int backend)
|
|
159
|
+
{
|
|
160
|
+
int child = -1;
|
|
161
|
+
int i;
|
|
162
|
+
|
|
163
|
+
for (i = 0; i < pool_config->num_init_children; i++)
|
|
164
|
+
{
|
|
165
|
+
if (process_info[i].pid == pid)
|
|
166
|
+
{
|
|
167
|
+
child = i;
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
if (child < 0)
|
|
173
|
+
{
|
|
174
|
+
pool_error("pool_coninfo_pid: invalid child pid: %d", pid);
|
|
175
|
+
return NULL;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
if (child < 0 || child >= pool_config->num_init_children)
|
|
179
|
+
{
|
|
180
|
+
pool_error("pool_coninfo_pid: invalid child number: %d", child);
|
|
181
|
+
return NULL;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
if (connection_pool < 0 || connection_pool >= pool_config->max_pool)
|
|
185
|
+
{
|
|
186
|
+
pool_error("pool_coninfo_pid: invalid connection_pool number: %d", connection_pool);
|
|
187
|
+
return NULL;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
if (backend < 0 || backend >= MAX_NUM_BACKENDS)
|
|
191
|
+
{
|
|
192
|
+
pool_error("pool_coninfo: invalid backend number: %d", backend);
|
|
193
|
+
return NULL;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
return &con_info[child*pool_config->max_pool*MAX_NUM_BACKENDS+
|
|
197
|
+
connection_pool*MAX_NUM_BACKENDS+
|
|
198
|
+
backend];
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/*
|
|
202
|
+
* Set frontend connected flag
|
|
203
|
+
*/
|
|
204
|
+
void pool_coninfo_set_frontend_connected(int proc_id, int pool_index)
|
|
205
|
+
{
|
|
206
|
+
ConnectionInfo *con;
|
|
207
|
+
int i;
|
|
208
|
+
|
|
209
|
+
for (i=0;i<NUM_BACKENDS;i++)
|
|
210
|
+
{
|
|
211
|
+
if (!VALID_BACKEND(i))
|
|
212
|
+
continue;
|
|
213
|
+
|
|
214
|
+
con = pool_coninfo(proc_id, pool_index, i);
|
|
215
|
+
|
|
216
|
+
if (con == NULL)
|
|
217
|
+
{
|
|
218
|
+
pool_error("pool_coninfo_set_frontend_connected: cannot get ConnectionInfo");
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
con->connected = true;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/*
|
|
226
|
+
* Unset frontend connected flag
|
|
227
|
+
*/
|
|
228
|
+
void pool_coninfo_unset_frontend_connected(int proc_id, int pool_index)
|
|
229
|
+
{
|
|
230
|
+
ConnectionInfo *con;
|
|
231
|
+
int i;
|
|
232
|
+
|
|
233
|
+
for (i=0;i<NUM_BACKENDS;i++)
|
|
234
|
+
{
|
|
235
|
+
if (!VALID_BACKEND(i))
|
|
236
|
+
continue;
|
|
237
|
+
|
|
238
|
+
con = pool_coninfo(proc_id, pool_index, i);
|
|
239
|
+
|
|
240
|
+
if (con == NULL)
|
|
241
|
+
{
|
|
242
|
+
pool_error("pool_coninfo_unset_frontend_connected: cannot get ConnectionInfo");
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
con->connected = false;
|
|
246
|
+
}
|
|
247
|
+
}
|