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,19 @@
|
|
|
1
|
+
CREATE OR REPLACE FUNCTION pgpool_recovery(text, text, text)
|
|
2
|
+
RETURNS bool
|
|
3
|
+
AS 'MODULE_PATHNAME', 'pgpool_recovery'
|
|
4
|
+
LANGUAGE C STRICT;
|
|
5
|
+
|
|
6
|
+
CREATE OR REPLACE FUNCTION pgpool_remote_start(text, text)
|
|
7
|
+
RETURNS bool
|
|
8
|
+
AS 'MODULE_PATHNAME', 'pgpool_remote_start'
|
|
9
|
+
LANGUAGE C STRICT;
|
|
10
|
+
|
|
11
|
+
CREATE OR REPLACE FUNCTION pgpool_pgctl(text, text)
|
|
12
|
+
RETURNS bool
|
|
13
|
+
AS '$libdir/pgpool-recovery', 'pgpool_pgctl'
|
|
14
|
+
LANGUAGE C STRICT;
|
|
15
|
+
|
|
16
|
+
CREATE OR REPLACE FUNCTION pgpool_switch_xlog(text)
|
|
17
|
+
RETURNS text
|
|
18
|
+
AS 'MODULE_PATHNAME', 'pgpool_switch_xlog'
|
|
19
|
+
LANGUAGE C STRICT;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
|
|
2
|
+
\echo Use "CREATE EXTENSION pgpool_recovery" to load this file. \quit
|
|
3
|
+
|
|
4
|
+
CREATE FUNCTION pgpool_recovery(IN script_name text,
|
|
5
|
+
IN remote_host text,
|
|
6
|
+
IN remote_data_directory text)
|
|
7
|
+
RETURNS bool
|
|
8
|
+
AS 'MODULE_PATHNAME', 'pgpool_recovery'
|
|
9
|
+
LANGUAGE C STRICT;
|
|
10
|
+
|
|
11
|
+
CREATE FUNCTION pgpool_remote_start(IN remote_host text, IN remote_data_directory text)
|
|
12
|
+
RETURNS bool
|
|
13
|
+
AS 'MODULE_PATHNAME', 'pgpool_remote_start'
|
|
14
|
+
LANGUAGE C STRICT;
|
|
15
|
+
|
|
16
|
+
CREATE OR REPLACE FUNCTION pgpool_pgctl(IN action text, IN stop_mode text)
|
|
17
|
+
RETURNS bool
|
|
18
|
+
AS '$libdir/pgpool-recovery', 'pgpool_pgctl'
|
|
19
|
+
LANGUAGE C STRICT;
|
|
20
|
+
|
|
21
|
+
CREATE OR REPLACE FUNCTION pgpool_switch_xlog(IN arcive_dir text)
|
|
22
|
+
RETURNS text
|
|
23
|
+
AS 'MODULE_PATHNAME', 'pgpool_switch_xlog'
|
|
24
|
+
LANGUAGE C STRICT;
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
/* -*-pgsql-c-*- */
|
|
2
|
+
/*
|
|
3
|
+
* $Header$
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) 2003-2012 PgPool Global Development Group
|
|
6
|
+
*
|
|
7
|
+
* Permission to use, copy, modify, and distribute this software and
|
|
8
|
+
* its documentation for any purpose and without fee is hereby
|
|
9
|
+
* granted, provided that the above copyright notice appear in all
|
|
10
|
+
* copies and that both that copyright notice and this permission
|
|
11
|
+
* notice appear in supporting documentation, and that the name of the
|
|
12
|
+
* author not be used in advertising or publicity pertaining to
|
|
13
|
+
* distribution of the software without specific, written prior
|
|
14
|
+
* permission. The author makes no representations about the
|
|
15
|
+
* suitability of this software for any purpose. It is provided "as
|
|
16
|
+
* is" without express or implied warranty.
|
|
17
|
+
*
|
|
18
|
+
* pgpool-regclass.c is similar to PostgreSQL builtin function
|
|
19
|
+
* reglcass but does not throw exceptions.
|
|
20
|
+
* If something goes wrong, it returns InvalidOid.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
#include <sys/types.h>
|
|
24
|
+
#include <sys/stat.h>
|
|
25
|
+
#include <unistd.h>
|
|
26
|
+
#include "postgres.h"
|
|
27
|
+
#include "utils/builtins.h"
|
|
28
|
+
#include "utils/syscache.h"
|
|
29
|
+
#include "utils/elog.h"
|
|
30
|
+
#include "catalog/namespace.h"
|
|
31
|
+
#include "nodes/makefuncs.h"
|
|
32
|
+
#include "commands/dbcommands.h"
|
|
33
|
+
#include "fmgr.h"
|
|
34
|
+
#include "funcapi.h"
|
|
35
|
+
|
|
36
|
+
#include <stdlib.h>
|
|
37
|
+
|
|
38
|
+
#ifdef PG_MODULE_MAGIC
|
|
39
|
+
PG_MODULE_MAGIC;
|
|
40
|
+
#endif
|
|
41
|
+
|
|
42
|
+
PG_FUNCTION_INFO_V1(pgpool_regclass);
|
|
43
|
+
|
|
44
|
+
extern Datum pgpool_regclass(PG_FUNCTION_ARGS);
|
|
45
|
+
|
|
46
|
+
static List *
|
|
47
|
+
MystringToQualifiedNameList(const char *string);
|
|
48
|
+
|
|
49
|
+
static RangeVar *
|
|
50
|
+
MymakeRangeVarFromNameList(List *names);
|
|
51
|
+
|
|
52
|
+
extern Oid MyDatabaseId;
|
|
53
|
+
|
|
54
|
+
#if !defined(PG_VERSION_NUM) || (PG_VERSION_NUM < 90100)
|
|
55
|
+
static Oid
|
|
56
|
+
get_namespace_oid(const char *nspname, bool missing_ok);
|
|
57
|
+
#endif
|
|
58
|
+
|
|
59
|
+
Datum
|
|
60
|
+
pgpool_regclass(PG_FUNCTION_ARGS)
|
|
61
|
+
{
|
|
62
|
+
char *pro_name_or_oid = PG_GETARG_CSTRING(0);
|
|
63
|
+
Oid result;
|
|
64
|
+
List *names;
|
|
65
|
+
RangeVar *rel;
|
|
66
|
+
|
|
67
|
+
names = MystringToQualifiedNameList(pro_name_or_oid);
|
|
68
|
+
if (names == NIL)
|
|
69
|
+
PG_RETURN_OID(InvalidOid);
|
|
70
|
+
|
|
71
|
+
rel = MymakeRangeVarFromNameList(names);
|
|
72
|
+
if (rel == NULL)
|
|
73
|
+
PG_RETURN_OID(InvalidOid);
|
|
74
|
+
|
|
75
|
+
/*
|
|
76
|
+
* Check to see if cross-database reference is used.
|
|
77
|
+
* This is to be done in RangeVarGetRelid(). The reason
|
|
78
|
+
* we do this here is, to avoid raising an error
|
|
79
|
+
* in RangeVarGetRelid().
|
|
80
|
+
*/
|
|
81
|
+
if (rel->catalogname)
|
|
82
|
+
{
|
|
83
|
+
if (strcmp(rel->catalogname, get_database_name(MyDatabaseId)) != 0)
|
|
84
|
+
PG_RETURN_OID(InvalidOid);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/*
|
|
88
|
+
* Check to see if schema exists.
|
|
89
|
+
* This is to be done in RangeVarGetRelid(). The reason
|
|
90
|
+
* we do this here is, to avoid raising an error
|
|
91
|
+
* in RangeVarGetRelid().
|
|
92
|
+
*/
|
|
93
|
+
if (rel->schemaname)
|
|
94
|
+
{
|
|
95
|
+
if (get_namespace_oid(rel->schemaname, true) == InvalidOid)
|
|
96
|
+
PG_RETURN_OID(InvalidOid);
|
|
97
|
+
}
|
|
98
|
+
#if !defined(PG_VERSION_NUM) || (PG_VERSION_NUM < 90200)
|
|
99
|
+
result = RangeVarGetRelid(rel, true);
|
|
100
|
+
#else
|
|
101
|
+
/* RangeVarGetRelid() of PostgreSQL 9.2 or later, has third
|
|
102
|
+
* argument "missing_ok" which suppresses ERROR exception, but
|
|
103
|
+
* returns invlaid_oid. See include/catalog/namespace.h */
|
|
104
|
+
result = RangeVarGetRelid(rel, true, true);
|
|
105
|
+
#endif
|
|
106
|
+
PG_RETURN_OID(result);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/*
|
|
110
|
+
* Given a C string, parse it into a qualified-name list.
|
|
111
|
+
* Stolen from PostgreSQL, removing elog calls.
|
|
112
|
+
*/
|
|
113
|
+
static List *
|
|
114
|
+
MystringToQualifiedNameList(const char *string)
|
|
115
|
+
{
|
|
116
|
+
char *rawname;
|
|
117
|
+
List *result = NIL;
|
|
118
|
+
List *namelist;
|
|
119
|
+
ListCell *l;
|
|
120
|
+
|
|
121
|
+
/* We need a modifiable copy of the input string. */
|
|
122
|
+
rawname = pstrdup(string);
|
|
123
|
+
|
|
124
|
+
if (!SplitIdentifierString(rawname, '.', &namelist))
|
|
125
|
+
return NIL;
|
|
126
|
+
|
|
127
|
+
if (namelist == NIL)
|
|
128
|
+
return NIL;
|
|
129
|
+
|
|
130
|
+
foreach(l, namelist)
|
|
131
|
+
{
|
|
132
|
+
char *curname = (char *) lfirst(l);
|
|
133
|
+
|
|
134
|
+
result = lappend(result, makeString(pstrdup(curname)));
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
pfree(rawname);
|
|
138
|
+
list_free(namelist);
|
|
139
|
+
|
|
140
|
+
return result;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/*
|
|
144
|
+
* makeRangeVarFromNameList
|
|
145
|
+
* Utility routine to convert a qualified-name list into RangeVar form.
|
|
146
|
+
* Stolen from PostgreSQL, removing ereport calls.
|
|
147
|
+
*/
|
|
148
|
+
static RangeVar *
|
|
149
|
+
MymakeRangeVarFromNameList(List *names)
|
|
150
|
+
{
|
|
151
|
+
/*
|
|
152
|
+
* Number of arguments of makeRangeVar() has been increased in 8.4 or
|
|
153
|
+
* later.
|
|
154
|
+
*/
|
|
155
|
+
#if PG_VERSION_NUM >= 80400
|
|
156
|
+
RangeVar *rel = makeRangeVar(NULL, NULL, -1);
|
|
157
|
+
#else
|
|
158
|
+
RangeVar *rel = makeRangeVar(NULL, NULL);
|
|
159
|
+
#endif
|
|
160
|
+
|
|
161
|
+
switch (list_length(names))
|
|
162
|
+
{
|
|
163
|
+
case 1:
|
|
164
|
+
rel->relname = strVal(linitial(names));
|
|
165
|
+
break;
|
|
166
|
+
case 2:
|
|
167
|
+
rel->schemaname = strVal(linitial(names));
|
|
168
|
+
rel->relname = strVal(lsecond(names));
|
|
169
|
+
break;
|
|
170
|
+
case 3:
|
|
171
|
+
rel->catalogname = strVal(linitial(names));
|
|
172
|
+
rel->schemaname = strVal(lsecond(names));
|
|
173
|
+
rel->relname = strVal(lthird(names));
|
|
174
|
+
break;
|
|
175
|
+
default:
|
|
176
|
+
rel = NULL;
|
|
177
|
+
break;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
return rel;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
#if !defined(PG_VERSION_NUM) || (PG_VERSION_NUM < 90100)
|
|
184
|
+
/*
|
|
185
|
+
* get_namespace_oid - given a namespace name, look up the OID
|
|
186
|
+
*
|
|
187
|
+
* If missing_ok is false, throw an error if namespace name not found. If
|
|
188
|
+
* true, just return InvalidOid.
|
|
189
|
+
*
|
|
190
|
+
* This function was stolen from PostgreSQL 9.0 and modified to not
|
|
191
|
+
* use GetSysCacheOid1. Since it is new in 9.0.
|
|
192
|
+
*/
|
|
193
|
+
static Oid
|
|
194
|
+
get_namespace_oid(const char *nspname, bool missing_ok)
|
|
195
|
+
{
|
|
196
|
+
Oid oid;
|
|
197
|
+
|
|
198
|
+
oid = GetSysCacheOid(NAMESPACENAME, CStringGetDatum(nspname), 0, 0, 0);
|
|
199
|
+
if (!OidIsValid(oid) && !missing_ok)
|
|
200
|
+
ereport(ERROR,
|
|
201
|
+
(errcode(ERRCODE_UNDEFINED_SCHEMA),
|
|
202
|
+
errmsg("schema \"%s\" does not exist", nspname)));
|
|
203
|
+
|
|
204
|
+
return oid;
|
|
205
|
+
}
|
|
206
|
+
#endif
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
|
|
2
|
+
\echo Use "CREATE EXTENSION pgpool_regclass" to load this file. \quit
|
|
3
|
+
|
|
4
|
+
CREATE FUNCTION pg_catalog.pgpool_regclass(IN expression cstring)
|
|
5
|
+
RETURNS oid
|
|
6
|
+
AS 'MODULE_PATHNAME', 'pgpool_regclass'
|
|
7
|
+
LANGUAGE C STRICT;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
DROP FUNCTION pgpool_regclass(cstring);
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
-- $Header$
|
|
2
|
+
|
|
3
|
+
DROP TABLE pgpool_catalog.dist_def;
|
|
4
|
+
DROP TABLE pgpool_catalog.replicate_def;
|
|
5
|
+
DROP TABLE pgpool_catalog.query_cache;
|
|
6
|
+
DROP SCHEMA pgpool_catalog;
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
CREATE SCHEMA pgpool_catalog;
|
|
10
|
+
|
|
11
|
+
CREATE TABLE pgpool_catalog.dist_def(
|
|
12
|
+
dbname TEXT,
|
|
13
|
+
schema_name TEXT,
|
|
14
|
+
table_name TEXT,
|
|
15
|
+
col_name TEXT NOT NULL CHECK (col_name = ANY (col_list)),
|
|
16
|
+
col_list TEXT[] NOT NULL,
|
|
17
|
+
type_list TEXT[] NOT NULL,
|
|
18
|
+
dist_def_func TEXT NOT NULL,
|
|
19
|
+
PRIMARY KEY (dbname,schema_name,table_name)
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
CREATE TABLE pgpool_catalog.replicate_def(
|
|
23
|
+
dbname TEXT,
|
|
24
|
+
schema_name TEXT,
|
|
25
|
+
table_name TEXT,
|
|
26
|
+
col_list TEXT[] NOT NULL,
|
|
27
|
+
type_list TEXT[] NOT NULL,
|
|
28
|
+
PRIMARY KEY (dbname,schema_name,table_name)
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
CREATE TABLE pgpool_catalog.query_cache (
|
|
32
|
+
hash TEXT,
|
|
33
|
+
query TEXT,
|
|
34
|
+
value bytea,
|
|
35
|
+
dbname TEXT,
|
|
36
|
+
create_time TIMESTAMP WITH TIME ZONE,
|
|
37
|
+
PRIMARY KEY(hash, dbname)
|
|
38
|
+
);
|
data/pgpool2/strlcpy.c
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/* -*-pgsql-c-*- */
|
|
2
|
+
/*
|
|
3
|
+
*
|
|
4
|
+
* $Header$
|
|
5
|
+
*
|
|
6
|
+
* This file was imported from PostgreSQL source code.
|
|
7
|
+
* See below for the copyright and description.
|
|
8
|
+
*
|
|
9
|
+
* pgpool: a language independent connection pool server for PostgreSQL
|
|
10
|
+
* written by Tatsuo Ishii
|
|
11
|
+
*
|
|
12
|
+
* Portions Copyright (c) 2003-2008 PgPool Global Development Group
|
|
13
|
+
*
|
|
14
|
+
*/
|
|
15
|
+
/*-------------------------------------------------------------------------
|
|
16
|
+
*
|
|
17
|
+
* strlcpy.c
|
|
18
|
+
* strncpy done right
|
|
19
|
+
*
|
|
20
|
+
* Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group
|
|
21
|
+
*
|
|
22
|
+
*
|
|
23
|
+
* IDENTIFICATION
|
|
24
|
+
* $PostgreSQL: pgsql/src/port/strlcpy.c,v 1.3 2006/10/04 00:30:14 momjian Exp $
|
|
25
|
+
*
|
|
26
|
+
* This file was taken from OpenBSD and is used on platforms that don't
|
|
27
|
+
* provide strlcpy(). The OpenBSD copyright terms follow.
|
|
28
|
+
*-------------------------------------------------------------------------
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
/* $OpenBSD: strlcpy.c,v 1.11 2006/05/05 15:27:38 millert Exp $ */
|
|
32
|
+
|
|
33
|
+
/*
|
|
34
|
+
* Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
|
|
35
|
+
*
|
|
36
|
+
* Permission to use, copy, modify, and distribute this software for any
|
|
37
|
+
* purpose with or without fee is hereby granted, provided that the above
|
|
38
|
+
* copyright notice and this permission notice appear in all copies.
|
|
39
|
+
*
|
|
40
|
+
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
41
|
+
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
42
|
+
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
43
|
+
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
44
|
+
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
45
|
+
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
46
|
+
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
47
|
+
*/
|
|
48
|
+
|
|
49
|
+
#include <unistd.h>
|
|
50
|
+
#include "pool.h"
|
|
51
|
+
|
|
52
|
+
/*
|
|
53
|
+
* Copy src to string dst of size siz. At most siz-1 characters
|
|
54
|
+
* will be copied. Always NUL terminates (unless siz == 0).
|
|
55
|
+
* Returns strlen(src); if retval >= siz, truncation occurred.
|
|
56
|
+
* Function creation history: http://www.gratisoft.us/todd/papers/strlcpy.html
|
|
57
|
+
*/
|
|
58
|
+
size_t
|
|
59
|
+
strlcpy(char *dst, const char *src, size_t siz)
|
|
60
|
+
{
|
|
61
|
+
char *d = dst;
|
|
62
|
+
const char *s = src;
|
|
63
|
+
size_t n = siz;
|
|
64
|
+
|
|
65
|
+
/* Copy as many bytes as will fit */
|
|
66
|
+
if (n != 0)
|
|
67
|
+
{
|
|
68
|
+
while (--n != 0)
|
|
69
|
+
{
|
|
70
|
+
if ((*d++ = *s++) == '\0')
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/* Not enough room in dst, add NUL and traverse rest of src */
|
|
76
|
+
if (n == 0)
|
|
77
|
+
{
|
|
78
|
+
if (siz != 0)
|
|
79
|
+
*d = '\0'; /* NUL-terminate dst */
|
|
80
|
+
while (*s++)
|
|
81
|
+
;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return (s - src - 1); /* count does not include NUL */
|
|
85
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/* -*-pgsql-c-*- */
|
|
2
|
+
/*
|
|
3
|
+
* $Header$
|
|
4
|
+
*
|
|
5
|
+
* pgpool: a language independent connection pool server for PostgreSQL
|
|
6
|
+
* written by Tatsuo Ishii
|
|
7
|
+
*
|
|
8
|
+
* Copyright (c) 2003-2010 PgPool Global Development Group
|
|
9
|
+
*
|
|
10
|
+
* Permission to use, copy, modify, and distribute this software and
|
|
11
|
+
* its documentation for any purpose and without fee is hereby
|
|
12
|
+
* granted, provided that the above copyright notice appear in all
|
|
13
|
+
* copies and that both that copyright notice and this permission
|
|
14
|
+
* notice appear in supporting documentation, and that the name of the
|
|
15
|
+
* author not be used in advertising or publicity pertaining to
|
|
16
|
+
* distribution of the software without specific, written prior
|
|
17
|
+
* permission. The author makes no representations about the
|
|
18
|
+
* suitability of this software for any purpose. It is provided "as
|
|
19
|
+
* is" without express or implied warranty.
|
|
20
|
+
*
|
|
21
|
+
* Extended protocol test program.
|
|
22
|
+
* Features are:
|
|
23
|
+
* libq trace on/off
|
|
24
|
+
* explicit transaction on/off
|
|
25
|
+
* multiple SQL statements
|
|
26
|
+
*/
|
|
27
|
+
#include <stdio.h>
|
|
28
|
+
#include <stdlib.h>
|
|
29
|
+
#include <string.h>
|
|
30
|
+
|
|
31
|
+
#include <sys/types.h>
|
|
32
|
+
#include <sys/stat.h>
|
|
33
|
+
#include <fcntl.h>
|
|
34
|
+
#include <unistd.h>
|
|
35
|
+
|
|
36
|
+
#include "libpq-fe.h"
|
|
37
|
+
#include "libpq/libpq-fs.h"
|
|
38
|
+
|
|
39
|
+
int main(int argc, char **argv) {
|
|
40
|
+
char *connect_string = "user=t-ishii dbname=test port=5432";
|
|
41
|
+
int doTrace = 1; /* set 1 to start libpq trace */
|
|
42
|
+
int doTransaction = 1; /* set 1 to start explicit transaction */
|
|
43
|
+
int doSleep = 0; /* set non 0 seconds to sleep after connection and beforfe starting command */
|
|
44
|
+
|
|
45
|
+
/* SQL commands to be executed */
|
|
46
|
+
static char *commands[] = {
|
|
47
|
+
"SAVEPOINT S1",
|
|
48
|
+
"UPDATE t1 SET k = 1",
|
|
49
|
+
"ROLLBACK TO S1",
|
|
50
|
+
"SELECT 1",
|
|
51
|
+
"RELEASE SAVEPOINT S1"
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
PGconn *conn;
|
|
55
|
+
PGresult *res;
|
|
56
|
+
int i;
|
|
57
|
+
|
|
58
|
+
conn = PQconnectdb(connect_string);
|
|
59
|
+
if (PQstatus(conn) == CONNECTION_BAD) {
|
|
60
|
+
printf("Unable to connect to db\n");
|
|
61
|
+
PQfinish(conn);
|
|
62
|
+
return 1;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
if (doSleep)
|
|
66
|
+
sleep(doSleep);
|
|
67
|
+
|
|
68
|
+
if(doTrace == 1)
|
|
69
|
+
PQtrace(conn, stdout);
|
|
70
|
+
|
|
71
|
+
if(doTransaction)
|
|
72
|
+
PQexec(conn,"BEGIN;");
|
|
73
|
+
|
|
74
|
+
for (i=0;i<sizeof(commands)/sizeof(char *);i++)
|
|
75
|
+
{
|
|
76
|
+
char *command = commands[i];
|
|
77
|
+
|
|
78
|
+
res = PQexecParams(conn, command, 0, NULL, NULL, NULL, NULL, 0);
|
|
79
|
+
switch(PQresultStatus(res)) {
|
|
80
|
+
case PGRES_COMMAND_OK:
|
|
81
|
+
case PGRES_TUPLES_OK:
|
|
82
|
+
fprintf(stderr, "\"%s\" : succeeded\n", command);
|
|
83
|
+
break;
|
|
84
|
+
default:
|
|
85
|
+
fprintf(stderr, "\"%s\" failed: %s\n", command, PQresultErrorMessage(res));
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
PQclear(res);
|
|
89
|
+
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if(doTransaction == 1) {
|
|
93
|
+
PQexec(conn,"COMMIT;");
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
PQfinish(conn);
|
|
97
|
+
return 0;
|
|
98
|
+
}
|