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,67 @@
|
|
|
1
|
+
#! /bin/sh
|
|
2
|
+
#-------------------------------------------------------------------
|
|
3
|
+
# Check to see if postgres_fdw works with pgpool-II. Since
|
|
4
|
+
# postres_fdw sets search_path to pg_catalog, pgpool_regclass() should
|
|
5
|
+
# be registered as "pg_catalog.pgpool_regclass".
|
|
6
|
+
#
|
|
7
|
+
# Requires PostgreSQL 9.3 or later and contrib/postgres_fdw be
|
|
8
|
+
# installed.
|
|
9
|
+
# Fixed in: http://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=5e65429cd325ef2cbec22d114939cf07b3bcfa2e
|
|
10
|
+
WHOAMI=`whoami`
|
|
11
|
+
source $TESTLIBS
|
|
12
|
+
TESTDIR=testdir
|
|
13
|
+
PG_CTL=$PGBIN/pg_ctl
|
|
14
|
+
PSQL=$PGBIN/psql
|
|
15
|
+
|
|
16
|
+
rm -fr $TESTDIR
|
|
17
|
+
mkdir $TESTDIR
|
|
18
|
+
cd $TESTDIR
|
|
19
|
+
|
|
20
|
+
# create test environment
|
|
21
|
+
echo -n "creating test environment..."
|
|
22
|
+
sh $PGPOOL_SETUP -m r -n 2 --no-stop|| exit 1
|
|
23
|
+
echo "done."
|
|
24
|
+
|
|
25
|
+
source ./bashrc.ports
|
|
26
|
+
|
|
27
|
+
export PGPORT=$PGPOOL_PORT
|
|
28
|
+
|
|
29
|
+
wait_for_pgpool_startup
|
|
30
|
+
|
|
31
|
+
# create foreign table
|
|
32
|
+
$PSQL -p 11001 test <<EOF
|
|
33
|
+
CREATE EXTENSION postgres_fdw;
|
|
34
|
+
CREATE SERVER pgpool FOREIGN DATA WRAPPER postgres_fdw OPTIONS (dbname 'test', port '11002');
|
|
35
|
+
CREATE USER MAPPING FOR PUBLIC SERVER pgpool;
|
|
36
|
+
CREATE FOREIGN TABLE fr1(i INTEGER) SERVER pgpool;
|
|
37
|
+
EOF
|
|
38
|
+
|
|
39
|
+
# create remote table
|
|
40
|
+
$PSQL -p 11000 test <<EOF
|
|
41
|
+
CREATE TABLE fr1(i INTEGER);
|
|
42
|
+
EOF
|
|
43
|
+
|
|
44
|
+
# detach node #1 so that pgpool does not access
|
|
45
|
+
# postgres_fdw. Otherwise it will go into an inifinite loop.
|
|
46
|
+
$PGPOOL_INSTALL_DIR/bin/pcp_detach_node 1 localhost $PCP_PORT $WHOAMI $WHOAMI 1
|
|
47
|
+
|
|
48
|
+
if [ $? != 0 ];then
|
|
49
|
+
echo "pcp_detach_node failed"
|
|
50
|
+
exit 1
|
|
51
|
+
fi
|
|
52
|
+
|
|
53
|
+
# access foreign table 11001(PostgreSQL)->11002(pgpool)->11000(PostgreSQL)
|
|
54
|
+
$PSQL -p 11001 test <<EOF
|
|
55
|
+
SELECT * FROM fr1;
|
|
56
|
+
INSERT INTO fr1 VALUES(1); -- should call pgpool_regclass
|
|
57
|
+
EOF
|
|
58
|
+
|
|
59
|
+
grep 'do_query: error message from backend: function "pgpool_regclass(cstring)" does not exist. Exit this session.' log/pgpool.log >/dev/null 2>&1
|
|
60
|
+
|
|
61
|
+
if [ $? = 0 ];then
|
|
62
|
+
./shutdownall
|
|
63
|
+
exit 1
|
|
64
|
+
fi
|
|
65
|
+
|
|
66
|
+
./shutdownall
|
|
67
|
+
exit 0
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
#! /bin/sh
|
|
2
|
+
#-------------------------------------------------------------------
|
|
3
|
+
# "pgpool -m f stop" hangs because unmanaged pgpool children remains.
|
|
4
|
+
# Starting pgpool without starting PostgreSQL servers triggers the bug.
|
|
5
|
+
#
|
|
6
|
+
# Fixed in: http://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=fa6c3aa3233fd984a8b717f59e26b2ab9b7c8383
|
|
7
|
+
WHOAMI=`whoami`
|
|
8
|
+
source $TESTLIBS
|
|
9
|
+
TESTDIR=testdir
|
|
10
|
+
|
|
11
|
+
rm -fr $TESTDIR
|
|
12
|
+
mkdir $TESTDIR
|
|
13
|
+
cd $TESTDIR
|
|
14
|
+
|
|
15
|
+
# create test environment
|
|
16
|
+
echo -n "creating test environment..."
|
|
17
|
+
sh $PGPOOL_SETUP -m s -n 2 || exit 1
|
|
18
|
+
echo "done."
|
|
19
|
+
|
|
20
|
+
source ./bashrc.ports
|
|
21
|
+
|
|
22
|
+
export PGPORT=$PGPOOL_PORT
|
|
23
|
+
|
|
24
|
+
echo "LD_LIBRARY_PATH=/usr/local/pgsql/lib" > pgpool.sh
|
|
25
|
+
echo 'dir=`pwd`' >> pgpool.sh
|
|
26
|
+
grep pgpool.conf startall >> pgpool.sh
|
|
27
|
+
|
|
28
|
+
# start pgpool only. This causes immediate failover and may leave
|
|
29
|
+
# orphan pgpool children.
|
|
30
|
+
sh pgpool.sh
|
|
31
|
+
|
|
32
|
+
while true
|
|
33
|
+
do
|
|
34
|
+
grep 'failover done. shutdown host /tmp(11001)' log/pgpool.log > /dev/null 2>&1
|
|
35
|
+
if [ $? = 0 ];then
|
|
36
|
+
break;
|
|
37
|
+
fi
|
|
38
|
+
sleep 1
|
|
39
|
+
done
|
|
40
|
+
|
|
41
|
+
# if that's the case, shutdownall will hang.
|
|
42
|
+
(./shutdownall)&
|
|
43
|
+
sleep 5
|
|
44
|
+
kill $!
|
|
45
|
+
|
|
46
|
+
if [ $? = 0 ];then
|
|
47
|
+
./shutdownall
|
|
48
|
+
exit 1
|
|
49
|
+
fi
|
|
50
|
+
|
|
51
|
+
./shutdownall
|
|
52
|
+
exit 0
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/*
|
|
2
|
+
|
|
3
|
+
# su - postgres
|
|
4
|
+
|
|
5
|
+
$ pgbench -i
|
|
6
|
+
|
|
7
|
+
$ cat jdbctest.prop
|
|
8
|
+
jdbc.url=jdbc:postgresql://localhost:9999/postgres
|
|
9
|
+
jdbc.user=postgres
|
|
10
|
+
jdbc.password=postgres
|
|
11
|
+
|
|
12
|
+
$ cat run.sh
|
|
13
|
+
java -Djdbc.drivers=org.postgresql.Driver \
|
|
14
|
+
-classpath .:./postgresql-9.0-802.jdbc4.jar \
|
|
15
|
+
"jdbctest2"
|
|
16
|
+
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
import java.sql.*;
|
|
20
|
+
import javax.sql.*;
|
|
21
|
+
import java.util.*;
|
|
22
|
+
import java.io.*;
|
|
23
|
+
|
|
24
|
+
public class jdbctest2 {
|
|
25
|
+
public static void main(String[] args) {
|
|
26
|
+
try {
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
Properties prop = new Properties();
|
|
30
|
+
prop.load(new FileInputStream("jdbctest.prop"));
|
|
31
|
+
String url = prop.getProperty("jdbc.url");
|
|
32
|
+
String user = prop.getProperty("jdbc.user");
|
|
33
|
+
String pwd = prop.getProperty("jdbc.password");
|
|
34
|
+
|
|
35
|
+
Connection conn = DriverManager.getConnection(url, user, pwd);
|
|
36
|
+
conn.setAutoCommit(false);
|
|
37
|
+
|
|
38
|
+
String sql2 = "SELECT aid, bid, abalance, filler FROM pgbench_accounts WHERE aid != ? LIMIT ?";
|
|
39
|
+
PreparedStatement pst2 = conn.prepareStatement(sql2);
|
|
40
|
+
int aid = 1, lim = 7000, c = 0;
|
|
41
|
+
ResultSet rs;
|
|
42
|
+
String tmp;
|
|
43
|
+
|
|
44
|
+
for (c = 0; c < 200; ++c) {
|
|
45
|
+
aid = (int) Math.floor(Math.random() * 50000) + 1;
|
|
46
|
+
lim = 7500 + (int) Math.floor(Math.random() * 1000) + 1;
|
|
47
|
+
System.out.println("aid:" + aid + " lim:" + lim);
|
|
48
|
+
System.out.flush();
|
|
49
|
+
pst2.setInt(1, aid);
|
|
50
|
+
pst2.setInt(2, lim);
|
|
51
|
+
rs = pst2.executeQuery();
|
|
52
|
+
while (rs.next()) {
|
|
53
|
+
tmp = rs.getString(4);
|
|
54
|
+
}
|
|
55
|
+
rs.close();
|
|
56
|
+
}
|
|
57
|
+
pst2.close();
|
|
58
|
+
conn.close();
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
} catch (Exception e) {
|
|
62
|
+
System.err.println("jdbctest: ERROR: " + e);
|
|
63
|
+
System.exit(1);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
#! /bin/sh
|
|
2
|
+
#-------------------------------------------------------------------
|
|
3
|
+
# test script for bug#63
|
|
4
|
+
# On memory query cache occasionally segfaults.
|
|
5
|
+
#
|
|
6
|
+
# Fixed in: http://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=d428c5c27600dd82161dda6a240737d88db78732
|
|
7
|
+
# requires Java PostgreSQL JDBC driver.
|
|
8
|
+
PGBENCH=$PGBENCH_PATH
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
WHOAMI=`whoami`
|
|
12
|
+
source $TESTLIBS
|
|
13
|
+
TESTDIR=testdir
|
|
14
|
+
|
|
15
|
+
rm -fr $TESTDIR
|
|
16
|
+
mkdir $TESTDIR
|
|
17
|
+
cd $TESTDIR
|
|
18
|
+
|
|
19
|
+
# create test environment
|
|
20
|
+
echo -n "creating test environment..."
|
|
21
|
+
sh $PGPOOL_SETUP -m s -n 1 || exit 1
|
|
22
|
+
echo "done."
|
|
23
|
+
|
|
24
|
+
source ./bashrc.ports
|
|
25
|
+
|
|
26
|
+
export PGPORT=$PGPOOL_PORT
|
|
27
|
+
|
|
28
|
+
echo "memory_cache_enabled = on" >> etc/pgpool.conf
|
|
29
|
+
echo "jdbc.url=jdbc:postgresql://localhost:$PGPOOL_PORT/test" > jdbctest.prop
|
|
30
|
+
echo "jdbc.user=$WHOAMI" >> jdbctest.prop
|
|
31
|
+
echo "jdbc.password=" >> jdbctest.prop
|
|
32
|
+
cp ../jdbctest2.java .
|
|
33
|
+
javac jdbctest2.java
|
|
34
|
+
export CLASSPATH=.:$JDBC_DRIVER
|
|
35
|
+
./startall
|
|
36
|
+
wait_for_pgpool_startup
|
|
37
|
+
|
|
38
|
+
$PGBENCH -i test
|
|
39
|
+
java jdbctest2
|
|
40
|
+
|
|
41
|
+
if [ $? != 0 ];then
|
|
42
|
+
./shutdownall
|
|
43
|
+
exit 1
|
|
44
|
+
fi
|
|
45
|
+
|
|
46
|
+
./shutdownall
|
|
47
|
+
exit 0
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
#! /bin/sh
|
|
2
|
+
#-------------------------------------------------------------------
|
|
3
|
+
# test script for bug#61
|
|
4
|
+
# Child process xxxx was terminated by segmentation fault
|
|
5
|
+
#
|
|
6
|
+
# Fixed in: http://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=d493dd2b7d2065fb554654b137ecd587564f0043
|
|
7
|
+
source $TESTLIBS
|
|
8
|
+
TESTDIR=testdir
|
|
9
|
+
PG_CTL=$PGBIN/pg_ctl
|
|
10
|
+
PSQL=$PGBIN/psql
|
|
11
|
+
PGBENCH=$PGBENCH_PATH
|
|
12
|
+
|
|
13
|
+
rm -fr $TESTDIR
|
|
14
|
+
mkdir $TESTDIR
|
|
15
|
+
cd $TESTDIR
|
|
16
|
+
|
|
17
|
+
# create test environment
|
|
18
|
+
echo -n "creating test environment..."
|
|
19
|
+
sh $PGPOOL_SETUP -m s -n 1 || exit 1
|
|
20
|
+
echo "done."
|
|
21
|
+
|
|
22
|
+
source ./bashrc.ports
|
|
23
|
+
|
|
24
|
+
export PGPORT=$PGPOOL_PORT
|
|
25
|
+
|
|
26
|
+
./startall
|
|
27
|
+
wait_for_pgpool_startup
|
|
28
|
+
|
|
29
|
+
$PGBENCH -i test
|
|
30
|
+
|
|
31
|
+
EXPECT='psql: FATAL: no PostgreSQL user name specified in startup packet'
|
|
32
|
+
RESULT=`$PSQL -p $PGPOOL_PORT -U '' test 2>&1`
|
|
33
|
+
|
|
34
|
+
if [ $RESULT -ne '' $EXPECT ]; then
|
|
35
|
+
./shutdownall
|
|
36
|
+
exit 1
|
|
37
|
+
fi
|
|
38
|
+
|
|
39
|
+
./shutdownall
|
|
40
|
+
exit 0
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import java.sql.*;
|
|
2
|
+
import javax.sql.*;
|
|
3
|
+
import java.util.*;
|
|
4
|
+
import java.io.*;
|
|
5
|
+
public class jdbctest3 {
|
|
6
|
+
public static void main(String[] args) {
|
|
7
|
+
try {
|
|
8
|
+
Properties prop = new Properties();
|
|
9
|
+
prop.load(new FileInputStream("jdbctest.prop"));
|
|
10
|
+
String url = prop.getProperty("jdbc.url");
|
|
11
|
+
String user = prop.getProperty("jdbc.user");
|
|
12
|
+
String pwd = prop.getProperty("jdbc.password");
|
|
13
|
+
Connection conn = DriverManager.getConnection(url, user, pwd);
|
|
14
|
+
conn.setAutoCommit(false);
|
|
15
|
+
String sql_u = "UPDATE pgbench_accounts SET filler = 'x' WHERE aid = ?";
|
|
16
|
+
String sql_s = "SELECT * FROM pgbench_accounts WHERE aid != ? LIMIT 100";
|
|
17
|
+
PreparedStatement pst_u, pst_s;
|
|
18
|
+
int aid = 1, c1 = 0, c2 = 0;
|
|
19
|
+
ResultSet rs;
|
|
20
|
+
String tmp;
|
|
21
|
+
for (c1 = 0; c1 < 10 ; ++c1) {
|
|
22
|
+
pst_u = conn.prepareStatement(sql_u);
|
|
23
|
+
pst_s = conn.prepareStatement(sql_s);
|
|
24
|
+
aid = (int) Math.floor(Math.random() * 10) + 1;
|
|
25
|
+
pst_u.setInt(1, aid);
|
|
26
|
+
pst_u.executeUpdate();
|
|
27
|
+
for (c2 = 0; c2 < 10; ++c2) {
|
|
28
|
+
aid = (int) Math.floor(Math.random() * 10) + 1;
|
|
29
|
+
pst_s.setInt(1, aid);
|
|
30
|
+
rs = pst_s.executeQuery();
|
|
31
|
+
while (rs.next()) { tmp = rs.getString(4); }
|
|
32
|
+
rs.close();
|
|
33
|
+
}
|
|
34
|
+
conn.commit();
|
|
35
|
+
pst_u.close();
|
|
36
|
+
pst_s.close();
|
|
37
|
+
}
|
|
38
|
+
conn.close();
|
|
39
|
+
} catch (Exception e) {
|
|
40
|
+
System.err.println("jdbctest: ERROR: " + e);
|
|
41
|
+
e.printStackTrace();
|
|
42
|
+
System.exit(1);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
#! /bin/sh
|
|
2
|
+
#-------------------------------------------------------------------
|
|
3
|
+
# test script for bug#68
|
|
4
|
+
# On memory query cache occasionally segfaults.
|
|
5
|
+
#
|
|
6
|
+
# Fixed in: http://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=d6592ea7a95ed48855332037bca285cc6f6a3547
|
|
7
|
+
# requires Java PostgreSQL JDBC driver.
|
|
8
|
+
PGBENCH=$PGBENCH_PATH
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
WHOAMI=`whoami`
|
|
12
|
+
source $TESTLIBS
|
|
13
|
+
TESTDIR=testdir
|
|
14
|
+
|
|
15
|
+
rm -fr $TESTDIR
|
|
16
|
+
mkdir $TESTDIR
|
|
17
|
+
cd $TESTDIR
|
|
18
|
+
|
|
19
|
+
# create test environment
|
|
20
|
+
echo -n "creating test environment..."
|
|
21
|
+
sh $PGPOOL_SETUP -m s -n 1 || exit 1
|
|
22
|
+
echo "done."
|
|
23
|
+
|
|
24
|
+
source ./bashrc.ports
|
|
25
|
+
|
|
26
|
+
export PGPORT=$PGPOOL_PORT
|
|
27
|
+
|
|
28
|
+
echo "memory_cache_enabled = on" >> etc/pgpool.conf
|
|
29
|
+
echo "jdbc.url=jdbc:postgresql://localhost:$PGPOOL_PORT/test" > jdbctest.prop
|
|
30
|
+
echo "jdbc.user=$WHOAMI" >> jdbctest.prop
|
|
31
|
+
echo "jdbc.password=" >> jdbctest.prop
|
|
32
|
+
cp ../jdbctest3.java .
|
|
33
|
+
javac jdbctest3.java
|
|
34
|
+
export CLASSPATH=.:$JDBC_DRIVER
|
|
35
|
+
./startall
|
|
36
|
+
wait_for_pgpool_startup
|
|
37
|
+
|
|
38
|
+
$PGBENCH -i test
|
|
39
|
+
java jdbctest3
|
|
40
|
+
|
|
41
|
+
if [ $? != 0 ];then
|
|
42
|
+
./shutdownall
|
|
43
|
+
exit 1
|
|
44
|
+
fi
|
|
45
|
+
|
|
46
|
+
./shutdownall
|
|
47
|
+
exit 0
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
INSERT INTO "rel1" VALUES (DEFAULT,'2009-01-01 23:59:59.123456+09',DEFAULT,'2009-01-01 23:59:59.123456+09')
|
|
2
|
+
INSERT INTO rel2 DEFAULT VALUES
|
|
3
|
+
INSERT INTO rel2(c1) VALUES(1)
|
|
4
|
+
INSERT INTO "rel1" VALUES (1,"pg_catalog"."timestamptz"('2009-01-01 23:59:59.123456+09'::text),2,'2009-01-01 23:59:59.123456+09'::text::date)
|
|
5
|
+
INSERT INTO "rel1" VALUES (3,"pg_catalog"."timestamptz"('2009-01-01 23:59:59.123456+09'::text),4,'2009-01-01 23:59:59.123456+09'::text::timetz)
|
|
6
|
+
INSERT INTO "rel1" VALUES (5,'2009-01-01 23:59:59.123456+09'::text::timestamptz(0),6,'2009-01-01 23:59:59.123456+09'::text::timetz(0))
|
|
7
|
+
INSERT INTO "rel1" VALUES (7,'2009-01-01 23:59:59.123456+09'::text::timestamp,8,'2009-01-01 23:59:59.123456+09'::text::time)
|
|
8
|
+
INSERT INTO "rel1" VALUES (9,'2009-01-01 23:59:59.123456+09'::text::timestamp(0),10,'2009-01-01 23:59:59.123456+09'::text::time(0))
|
|
9
|
+
INSERT INTO "rel1" VALUES (11,'2009-01-01 23:59:59.123456+09',DEFAULT,'2009-01-01 23:59:59.123456+09')
|
|
10
|
+
INSERT INTO "rel1"("c3", "c2", "c4") VALUES (1,'2009-01-01 23:59:59.123456+09','2009-01-01 23:59:59.123456+09')
|
|
11
|
+
INSERT INTO "rel1"("c2", "c1", "c4") VALUES ('2000-1-1',1,'2009-01-01 23:59:59.123456+09')
|
|
12
|
+
INSERT INTO "rel1"("c2", "c1", "c4") VALUES ('2009-01-01 23:59:59.123456+09',2,'2009-01-01 23:59:59.123456+09')
|
|
13
|
+
INSERT INTO "rel1"("c2", "c1", "c4") VALUES ('2009-01-01 23:59:59.123456+09',3,'2009-01-01 23:59:59.123456+09'), ('2009-01-01 23:59:59.123456+09',4,'2009-01-01 23:59:59.123456+09'), ('2009-1-1',5,'2009-01-01 23:59:59.123456+09')
|
|
14
|
+
INSERT INTO rel1(c1, c2, c4) VALUES(1, '2009-1-1', '2009-2-2')
|
|
15
|
+
PREPARE "q" (timestamptz,timestamptz) AS INSERT INTO "rel1"("c3", "c2", "c4") VALUES (1,$1,$2)
|
|
16
|
+
PREPARE "q" (int4,timestamptz,timestamptz) AS INSERT INTO "rel1"("c3", "c2", "c4") VALUES ($1,$2,$3)
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
UPDATE "rel1" SET "c1" = DEFAULT, "c2" = '2009-01-01 23:59:59.123456+09'
|
|
2
|
+
UPDATE rel2 SET c1 = DEFAULT, c2 = DEFAULT
|
|
3
|
+
UPDATE "rel1" SET "c1" = "pg_catalog"."timestamptz"('2009-01-01 23:59:59.123456+09'::text), "c2" = '2009-01-01 23:59:59.123456+09'::text::date
|
|
4
|
+
UPDATE "rel1" SET "c3" = "pg_catalog"."timestamptz"('2009-01-01 23:59:59.123456+09'::text), "c4" = '2009-01-01 23:59:59.123456+09'::text::timetz
|
|
5
|
+
UPDATE "rel1" SET "c1" = '2009-01-01 23:59:59.123456+09'::text::timestamp, "c2" = '2009-01-01 23:59:59.123456+09'::text::time
|
|
6
|
+
PREPARE "q" (int4,timestamptz) AS UPDATE "rel1" SET "c1" = $1, "c2" = $2::text::date
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
INSERT INTO rel1 DEFAULT VALUES
|
|
2
|
+
INSERT INTO rel2 DEFAULT VALUES
|
|
3
|
+
INSERT INTO rel2(c1) VALUES(1)
|
|
4
|
+
INSERT INTO rel1 VALUES(1, now(), 2, CURRENT_DATE)
|
|
5
|
+
INSERT INTO rel1 VALUES(3, CURRENT_TIMESTAMP, 4, CURRENT_TIME)
|
|
6
|
+
INSERT INTO rel1 VALUES(5, CURRENT_TIMESTAMP(0), 6, CURRENT_TIME(0))
|
|
7
|
+
INSERT INTO rel1 VALUES(7, LOCALTIMESTAMP, 8, LOCALTIME)
|
|
8
|
+
INSERT INTO rel1 VALUES(9, LOCALTIMESTAMP(0), 10, LOCALTIME(0))
|
|
9
|
+
INSERT INTO rel1 VALUES(11, DEFAULT);
|
|
10
|
+
INSERT INTO rel1(c3) VALUES(1)
|
|
11
|
+
INSERT INTO rel1(c2, c1) VALUES('2000-1-1', 1)
|
|
12
|
+
INSERT INTO rel1(c2, c1) VALUES(DEFAULT, 2)
|
|
13
|
+
INSERT INTO rel1(c2, c1) VALUES(DEFAULT, 3), (DEFAULT, 4), ('2009-1-1', 5)
|
|
14
|
+
INSERT INTO rel1(c1, c2, c4) VALUES(1, '2009-1-1', '2009-2-2')
|
|
15
|
+
PREPARE q AS INSERT INTO rel1(c3) VALUES(1)
|
|
16
|
+
PREPARE q(int) AS INSERT INTO rel1(c3) VALUES($1)
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
UPDATE rel1 SET c1 = DEFAULT, c2 = DEFAULT
|
|
2
|
+
UPDATE rel2 SET c1 = DEFAULT, c2 = DEFAULT
|
|
3
|
+
UPDATE rel1 SET c1 = now(), c2 = CURRENT_DATE
|
|
4
|
+
UPDATE rel1 SET (c3, c4) = (CURRENT_TIMESTAMP, CURRENT_TIME)
|
|
5
|
+
UPDATE rel1 SET c1 = LOCALTIMESTAMP, c2 = LOCALTIME
|
|
6
|
+
PREPARE q(int) AS UPDATE rel1 SET c1 = $1, c2 = CURRENT_DATE
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
#include <stdlib.h>
|
|
2
|
+
#include <string.h>
|
|
3
|
+
#include <stdio.h>
|
|
4
|
+
#include "pool.h"
|
|
5
|
+
#include "pool_config.h"
|
|
6
|
+
#include "pool_relcache.h"
|
|
7
|
+
#include "pool_timestamp.h"
|
|
8
|
+
#include "parser/parser.h"
|
|
9
|
+
|
|
10
|
+
/* for get_current_timestamp() (MASTER() macro) */
|
|
11
|
+
POOL_REQUEST_INFO _req_info;
|
|
12
|
+
POOL_REQUEST_INFO *Req_info = &_req_info;
|
|
13
|
+
POOL_CONFIG _pool_config;
|
|
14
|
+
POOL_CONFIG *pool_config = &_pool_config;
|
|
15
|
+
|
|
16
|
+
typedef struct {
|
|
17
|
+
char *attrname; /* attribute name */
|
|
18
|
+
char *adsrc; /* default value expression */
|
|
19
|
+
int use_timestamp;
|
|
20
|
+
} TSAttr;
|
|
21
|
+
|
|
22
|
+
typedef struct {
|
|
23
|
+
int relnatts;
|
|
24
|
+
TSAttr attr[4];
|
|
25
|
+
} TSRel;
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
TSRel rc[2] = {
|
|
29
|
+
{ 4, {
|
|
30
|
+
{ "c1", "", 0 },
|
|
31
|
+
{ "c2", "", 1 },
|
|
32
|
+
{ "c3", "", 0 },
|
|
33
|
+
{ "c4", "", 1 }
|
|
34
|
+
} },
|
|
35
|
+
{ 4, {
|
|
36
|
+
{ "c1", "", 0 },
|
|
37
|
+
{ "c2", "", 0 },
|
|
38
|
+
{ "c3", "", 0 },
|
|
39
|
+
{ "c4", "", 0 }
|
|
40
|
+
} }
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
int pool_virtual_master_db_node_id(void)
|
|
44
|
+
{
|
|
45
|
+
return 0;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
bool pool_has_pgpool_regclass(void)
|
|
49
|
+
{
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
POOL_RELCACHE *
|
|
54
|
+
pool_create_relcache(int cachesize, char *sql, func_ptr register_func, func_ptr unregister_func, bool issessionlocal)
|
|
55
|
+
{
|
|
56
|
+
return (POOL_RELCACHE *) 1;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
void *
|
|
60
|
+
pool_search_relcache(POOL_RELCACHE *relcache, POOL_CONNECTION_POOL *backend, char *table)
|
|
61
|
+
{
|
|
62
|
+
if (strcmp(table, "\"rel1\"") == 0)
|
|
63
|
+
return (void *) &(rc[0]);
|
|
64
|
+
else
|
|
65
|
+
return (void *) &(rc[1]);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
POOL_STATUS
|
|
69
|
+
do_query(POOL_CONNECTION *backend, char *query, POOL_SELECT_RESULT **result, int major) {
|
|
70
|
+
static POOL_SELECT_RESULT res;
|
|
71
|
+
static char *data[1] = {
|
|
72
|
+
"2009-01-01 23:59:59.123456+09"
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
res.numrows = 1;
|
|
76
|
+
res.data = data;
|
|
77
|
+
|
|
78
|
+
*result = &res;
|
|
79
|
+
return POOL_CONTINUE;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
int
|
|
83
|
+
main(int argc, char **argv)
|
|
84
|
+
{
|
|
85
|
+
char *query;
|
|
86
|
+
List *tree;
|
|
87
|
+
ListCell *l;
|
|
88
|
+
StartupPacket sp;
|
|
89
|
+
POOL_CONNECTION_POOL backend;
|
|
90
|
+
POOL_CONNECTION_POOL_SLOT slot;
|
|
91
|
+
POOL_SENT_MESSAGE msg;
|
|
92
|
+
backend.slots[0] = &slot;
|
|
93
|
+
slot.sp = &sp;
|
|
94
|
+
|
|
95
|
+
pool_config->replication_mode = 1;
|
|
96
|
+
|
|
97
|
+
if (argc != 2)
|
|
98
|
+
{
|
|
99
|
+
fprintf(stderr, "./timestmp-test query\n");
|
|
100
|
+
exit(1);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
tree = raw_parser(argv[1]);
|
|
104
|
+
if (tree == NULL)
|
|
105
|
+
{
|
|
106
|
+
printf("syntax error: %s\n", argv[1]);
|
|
107
|
+
}
|
|
108
|
+
else
|
|
109
|
+
{
|
|
110
|
+
foreach(l, tree)
|
|
111
|
+
{
|
|
112
|
+
msg.num_tsparams = 0;
|
|
113
|
+
Node *node = (Node *) lfirst(l);
|
|
114
|
+
query = rewrite_timestamp(&backend, node, false, &msg);
|
|
115
|
+
if (query)
|
|
116
|
+
printf("%s\n", query);
|
|
117
|
+
else
|
|
118
|
+
printf("%s\n", argv[1]);
|
|
119
|
+
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return 0;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
void child_exit(int code) { exit (code); }
|
|
126
|
+
void pool_error(const char *fmt,...) {}
|
|
127
|
+
void pool_debug(const char *fmt,...) {}
|
|
128
|
+
void pool_log(const char *fmt,...) {}
|
|
129
|
+
void free_select_result(POOL_SELECT_RESULT *result) {}
|