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
|
Binary file
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta http-equiv="content-type" content="text/html;charset=gbk">
|
|
5
|
+
<link rel="stylesheet" href="./pgpool-ja.css" type="text/css">
|
|
6
|
+
<title>���Ź��ֲ�</title>
|
|
7
|
+
</head>
|
|
8
|
+
<body>
|
|
9
|
+
<h1>ʲô�ǿ��Ź�</h1>
|
|
10
|
+
<p>
|
|
11
|
+
�����Ź�����һ�� pgpool-II ���ӽ��̣�����Ϊ pgpool-II ���Ӹ߿����Թ��ܡ����Ź����ӵĹ��ܰ�����
|
|
12
|
+
|
|
13
|
+
<ul>
|
|
14
|
+
<li>pgpool ����Ĵ����</li>
|
|
15
|
+
<p>
|
|
16
|
+
���Ź���� pgpool ��<i>����</i>�����ǽ��̡���ͨ�������Ź���ص� pgpool ���Ͳ�ѯ�� PostgreSQL �������Ӧ��
|
|
17
|
+
���ҿ��Ź���ش� pgpool �����η�������Ӧ�÷������ȣ�����·��
|
|
18
|
+
�����η������� pgpool ֮������ӱ��� pgpool �ķ���ķ�ʽ���м�ء�
|
|
19
|
+
</p>
|
|
20
|
+
|
|
21
|
+
<li>���Ź����̼�����</li>
|
|
22
|
+
<p>
|
|
23
|
+
���Ź����̽�������ط������ϵ���Ϣ��Ϣ�Ա�֤��Ϣ�����µģ����������Ź��������ضԷ���
|
|
24
|
+
</p>
|
|
25
|
+
|
|
26
|
+
<li>��ijЩ���ϱ���������¸ı��Ծ/����״̬</li>
|
|
27
|
+
<p>
|
|
28
|
+
�� pgpool ������̽����ϣ����Ź�����������֪ͨ���������Ź���
|
|
29
|
+
���Ź���ȷ�ϾɵĻ�Ծ�� pgpool ���ṩ����ʱ��ͨ��ͶƱȷ���µ� pgpool ��Ծ�ڵ㣬���ı��Ծ/����״̬��
|
|
30
|
+
</p>
|
|
31
|
+
|
|
32
|
+
<li>�ڷ����л���ʱ��ͬ��ʵ������ IP ��ַ����</li>
|
|
33
|
+
<p>
|
|
34
|
+
��һ�����õ� pgpool ��������Ϊ��Ծ״̬���µĻ�Ծ�������������� IP �ӿڡ�
|
|
35
|
+
Ҳ���ǣ�֮ǰ��Ծ�ķ�����ͣ������ IP �ӿڡ�
|
|
36
|
+
���û�Ծ�� pgpool ʹ����ͬ�� IP ��ַ����ʹ���ڷ����������л���ʱ��
|
|
37
|
+
</p>
|
|
38
|
+
|
|
39
|
+
<li>�ڻָ����Զ�ע�����Ϊ����״̬</li>
|
|
40
|
+
<p>
|
|
41
|
+
�����ϵķ������ָ����µķ����������룬���Ź�����ͬʱ��֪ͨ�����Ŀ��Ź����̹����·���������Ϣ��
|
|
42
|
+
���ڻ�Ծ�������Լ������������ϵĿ��Ź����̻������Щ��Ϣ��Ȼ���¼���ķ������ᱻע��Ϊ���ýڵ㡣
|
|
43
|
+
</p>
|
|
44
|
+
</ul>
|
|
45
|
+
</p>
|
|
46
|
+
<h2>�������ṹͼ</h2>
|
|
47
|
+
|
|
48
|
+
<p>
|
|
49
|
+
��ͼ������ pgpool-II �Ϳ��Ź����̵����������
|
|
50
|
+
</p>
|
|
51
|
+
<table align=center width=800>
|
|
52
|
+
<tr><td>
|
|
53
|
+
<img src="wd-en.jpg" alt="watchdog server composition" hight=70% width=70%>
|
|
54
|
+
</td></tr>
|
|
55
|
+
</table>
|
|
56
|
+
<h2>����/ֹͣ���Ź�</h2>
|
|
57
|
+
<p>
|
|
58
|
+
���Ź������� pgpool-II һ����ͣ��Ҳ����˵��û�е�����������ͣ����
|
|
59
|
+
Ȼ����pgpool-II ������ <font color="red">root Ȩ��</font>��������Ϊ���Ź�������Ҫ�������� IP �ӿڡ�
|
|
60
|
+
</p>
|
|
61
|
+
<h2>���ÿ��Ź� (pgpool.conf)</h2>
|
|
62
|
+
<p>
|
|
63
|
+
���Ź������ò���Ҳ�� pgpool.conf �С��� pgpool.conf.sample �ļ��е� WATCHDOG С����ʾ�����á�
|
|
64
|
+
�������е�ѡ������ÿ��Ź���������Ҫ�ġ�
|
|
65
|
+
</p>
|
|
66
|
+
|
|
67
|
+
<h3>��������</h3>
|
|
68
|
+
<dl>
|
|
69
|
+
|
|
70
|
+
<dt><a name="USE_WATCHDOG"></a>use_watchdog</dt>
|
|
71
|
+
<dd>
|
|
72
|
+
<p>
|
|
73
|
+
���Ϊ on����Ź���Ĭ��Ϊ off��
|
|
74
|
+
</p>
|
|
75
|
+
</dd>
|
|
76
|
+
|
|
77
|
+
<dt><a name="TRUSTED_SERVERS"></a>trusted_servers</dt>
|
|
78
|
+
<dd>
|
|
79
|
+
<p>
|
|
80
|
+
���ڼ���������ӵĿ��ŷ������б���ÿ̨����������������Ӧ ping��
|
|
81
|
+
ָ��һϵ���ö��ŷָ��ķ������б������� "hostA,hostB,hostC"��
|
|
82
|
+
</p>
|
|
83
|
+
</dd>
|
|
84
|
+
|
|
85
|
+
<dt><a name="DELEGATE_IP"></a>delegate_IP</dt>
|
|
86
|
+
<dd>
|
|
87
|
+
<p>
|
|
88
|
+
ָ���ͻ��˷�������Ӧ�÷������ȣ����ӵ��� pgpool-II ������ IP ��ַ(VIP)��
|
|
89
|
+
��һ�� pgpool �ӱ��ýڵ��л�����Ծ״̬��pgpool ��ʹ����� VIP��
|
|
90
|
+
</p>
|
|
91
|
+
</dd>
|
|
92
|
+
|
|
93
|
+
<dt><a name="WD_HOSTNAME"></a>wd_hostname</dt>
|
|
94
|
+
<dd>
|
|
95
|
+
<p>
|
|
96
|
+
ָ�����ڻ����صĿ��Ź����̵��������� IP ��ַ��
|
|
97
|
+
</p>
|
|
98
|
+
</dd>
|
|
99
|
+
|
|
100
|
+
<dt><a name="WD_PORT"></a>wd_port</dt>
|
|
101
|
+
<dd>
|
|
102
|
+
<p>
|
|
103
|
+
ָ�����ڻ����صĿ��Ź����̵Ķ˿ںš�
|
|
104
|
+
</p>
|
|
105
|
+
</dd>
|
|
106
|
+
|
|
107
|
+
<dt><a name="WD_INTERVAL"></a>wd_interval</dt>
|
|
108
|
+
<dd>
|
|
109
|
+
<p>
|
|
110
|
+
������ָ�� pgpoll-II ���ڴ����ļ������λΪ�루���ڻ���� 1 �����֣���
|
|
111
|
+
</p>
|
|
112
|
+
</dd>
|
|
113
|
+
|
|
114
|
+
<dt><a name="PING_PATH"></a>ping_path</dt>
|
|
115
|
+
<dd>
|
|
116
|
+
<p>
|
|
117
|
+
������ָ�����ڼ�����η������� ping �����·����ֻ��Ҫ����·������ "/bin" ��
|
|
118
|
+
</p>
|
|
119
|
+
</dd>
|
|
120
|
+
|
|
121
|
+
<dt><a name="IFCONFIG_PATH"></a>ifconfig_path</dt>
|
|
122
|
+
<dd>
|
|
123
|
+
<p>
|
|
124
|
+
T������ָ�������л� IP ��ַ�����������·���� ֻ����·�������� "/sbin"��
|
|
125
|
+
</p>
|
|
126
|
+
</dd>
|
|
127
|
+
|
|
128
|
+
<dt><a name="IF_UP_CMD"></a>if_up_cmd</dt>
|
|
129
|
+
<dd>
|
|
130
|
+
<p>
|
|
131
|
+
������ָ��һ������������������ IP����������Ͳ��������� "ifconfig eth0:0 inet $_IP_$ netmask 255.255.255.0"��
|
|
132
|
+
���� $_IP_$ �ᱻ delegate_IP ���õ�ֵ�滻��
|
|
133
|
+
</p>
|
|
134
|
+
</dd>
|
|
135
|
+
|
|
136
|
+
<dt><a name="IF_DOWN_CMD"></a>if_down_cmd</dt>
|
|
137
|
+
<dd>
|
|
138
|
+
<p>
|
|
139
|
+
������ָ��һ����������ͣ������ IP����������Ͳ��������� "ifconfig eth0:0 down"��
|
|
140
|
+
</p>
|
|
141
|
+
</dd>
|
|
142
|
+
|
|
143
|
+
<dt><a name="ARPING_PATH"></a>arping_path</dt>
|
|
144
|
+
<dd>
|
|
145
|
+
<p>
|
|
146
|
+
������ָ���ڷ������� IP �л������ڷ���һ�� ARP ��������������·����ֻ����·�������� "/usr/sbin"��
|
|
147
|
+
</p>
|
|
148
|
+
</dd>
|
|
149
|
+
|
|
150
|
+
<dt><a name="ARPING_CMD"></a>arping_cmd</dt>
|
|
151
|
+
<dd>
|
|
152
|
+
<p>
|
|
153
|
+
������ָ��һ�����������ڷ������� IP �л������ڷ���һ�� ARP ��������
|
|
154
|
+
��������Ͳ��������� "arping -U $_IP_$ -w 1"������ $_IP_$ �ᱻ delegate_IP ���õ�ֵ�滻��
|
|
155
|
+
</p>
|
|
156
|
+
</dd>
|
|
157
|
+
|
|
158
|
+
<dt><a name="WD_LIFE_POINT"></a>wd_life_point</dt>
|
|
159
|
+
<dd>
|
|
160
|
+
<p>
|
|
161
|
+
��ȷ�� pgpool-II ʧЧʱ�����Դ�����һ�����ڻ���� 1 �����֣���
|
|
162
|
+
</p>
|
|
163
|
+
</dd>
|
|
164
|
+
|
|
165
|
+
<dt><a name="WD_LIFECHECK_QUERY"></a>wd_lifecheck_query</dt>
|
|
166
|
+
<dd>
|
|
167
|
+
<p>
|
|
168
|
+
���ڼ�� pgpool-II �IJ�ѯ��Ĭ��Ϊ "SELECT 1"��
|
|
169
|
+
</p>
|
|
170
|
+
</dd>
|
|
171
|
+
|
|
172
|
+
</dl>
|
|
173
|
+
|
|
174
|
+
<h3>����صķ�����</h3>
|
|
175
|
+
<dl>
|
|
176
|
+
<dt><a name="OTHER_PGPOOL_HOSTNAME"></a>other_pgpool_hostname<font color="red">0</font></dt>
|
|
177
|
+
<dd>
|
|
178
|
+
<p>
|
|
179
|
+
ָ����Ҫ��ص� pgpool-II �����������������ڷ���/���ղ�ѯ�����ݰ���ͬʱҲ�ǿ��Ź��ı�ʶ��
|
|
180
|
+
����������������ֱ�ʾ��������š����� 0 ��ʼ��
|
|
181
|
+
</p>
|
|
182
|
+
</dd>
|
|
183
|
+
|
|
184
|
+
<dt><a name="OTHER_PGPOOL_PORT"></a>other_pgpool_port<font color="red">0</font></dt>
|
|
185
|
+
<dd>
|
|
186
|
+
<p>
|
|
187
|
+
ָ����Ҫ��ص� pgpool-II �������� pgpool ����Ķ˿ڡ����ڲ�ѯģʽ��wd_lifecheck_query ָ���IJ�ѯ��佫�����͵�����˿ڡ�
|
|
188
|
+
����������������ֱ�ʾ��������š����� 0 ��ʼ��
|
|
189
|
+
</p>
|
|
190
|
+
</dd>
|
|
191
|
+
|
|
192
|
+
<dt><a name="OTHER_WD_PORT"></a>other_wd_port<font color="red">0</font></dt>
|
|
193
|
+
<dd>
|
|
194
|
+
<p>
|
|
195
|
+
ָ����Ҫ��ص� pgpool-II �������Ŀ��Ź��Ķ˿ڡ�
|
|
196
|
+
����������������ֱ�ʾ��������š����� 0 ��ʼ��
|
|
197
|
+
</p>
|
|
198
|
+
</dd>
|
|
199
|
+
</dl>
|
|
200
|
+
</body>
|
|
201
|
+
</html>
|
|
Binary file
|
|
Binary file
|
data/pgpool2/general.m4
ADDED
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# $PostgreSQL: pgsql/config/general.m4,v 1.10 2008/10/29 09:27:24 petere Exp $
|
|
2
|
+
|
|
3
|
+
# This file defines new macros to process configure command line
|
|
4
|
+
# arguments, to replace the brain-dead AC_ARG_WITH and AC_ARG_ENABLE.
|
|
5
|
+
# The flaw in these is particularly that they only differentiate
|
|
6
|
+
# between "given" and "not given" and do not provide enough help to
|
|
7
|
+
# process arguments that only accept "yes/no", that require an
|
|
8
|
+
# argument (other than "yes/no"), etc.
|
|
9
|
+
#
|
|
10
|
+
# The point of this implementation is to reduce code size and
|
|
11
|
+
# redundancy in configure.in and to improve robustness and consistency
|
|
12
|
+
# in the option evaluation code.
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
# Convert type and name to shell variable name (e.g., "enable_long_strings")
|
|
16
|
+
m4_define([pgac_arg_to_variable],
|
|
17
|
+
[$1[]_[]patsubst($2, -, _)])
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
# PGAC_ARG(TYPE, NAME, HELP-STRING-LHS-EXTRA, HELP-STRING-RHS,
|
|
21
|
+
# [ACTION-IF-YES], [ACTION-IF-NO], [ACTION-IF-ARG],
|
|
22
|
+
# [ACTION-IF-OMITTED])
|
|
23
|
+
# ------------------------------------------------------------
|
|
24
|
+
# This is the base layer. TYPE is either "with" or "enable", depending
|
|
25
|
+
# on what you like. NAME is the rest of the option name.
|
|
26
|
+
# HELP-STRING-LHS-EXTRA is a string to append to the option name on
|
|
27
|
+
# the left-hand side of the help output, e.g., an argument name. If
|
|
28
|
+
# set to "-", append nothing, but let the option appear in the
|
|
29
|
+
# negative form (disable/without). HELP-STRING-RHS is the option
|
|
30
|
+
# description, for the right-hand side of the help output.
|
|
31
|
+
# ACTION-IF-YES is executed if the option is given without an argument
|
|
32
|
+
# (or "yes", which is the same); similar for ACTION-IF-NO.
|
|
33
|
+
|
|
34
|
+
AC_DEFUN([PGAC_ARG],
|
|
35
|
+
[
|
|
36
|
+
pgac_args="$pgac_args pgac_arg_to_variable([$1],[$2])"
|
|
37
|
+
m4_case([$1],
|
|
38
|
+
|
|
39
|
+
enable, [
|
|
40
|
+
AC_ARG_ENABLE([$2], [AS_HELP_STRING([--]m4_if($3, -, disable, enable)[-$2]m4_if($3, -, , $3), [$4])], [
|
|
41
|
+
case [$]enableval in
|
|
42
|
+
yes)
|
|
43
|
+
m4_default([$5], :)
|
|
44
|
+
;;
|
|
45
|
+
no)
|
|
46
|
+
m4_default([$6], :)
|
|
47
|
+
;;
|
|
48
|
+
*)
|
|
49
|
+
$7
|
|
50
|
+
;;
|
|
51
|
+
esac
|
|
52
|
+
],
|
|
53
|
+
[$8])[]dnl AC_ARG_ENABLE
|
|
54
|
+
],
|
|
55
|
+
|
|
56
|
+
with, [
|
|
57
|
+
AC_ARG_WITH([$2], [AS_HELP_STRING([--]m4_if($3, -, without, with)[-$2]m4_if($3, -, , $3), [$4])], [
|
|
58
|
+
case [$]withval in
|
|
59
|
+
yes)
|
|
60
|
+
m4_default([$5], :)
|
|
61
|
+
;;
|
|
62
|
+
no)
|
|
63
|
+
m4_default([$6], :)
|
|
64
|
+
;;
|
|
65
|
+
*)
|
|
66
|
+
$7
|
|
67
|
+
;;
|
|
68
|
+
esac
|
|
69
|
+
],
|
|
70
|
+
[$8])[]dnl AC_ARG_WITH
|
|
71
|
+
],
|
|
72
|
+
|
|
73
|
+
[m4_fatal([first argument of $0 must be 'enable' or 'with', not '$1'])]
|
|
74
|
+
)
|
|
75
|
+
])# PGAC_ARG
|
|
76
|
+
|
|
77
|
+
# PGAC_ARG_CHECK()
|
|
78
|
+
# ----------------
|
|
79
|
+
# Checks if the user passed any --with/without/enable/disable
|
|
80
|
+
# arguments that were not defined. Just prints out a warning message,
|
|
81
|
+
# so this should be called near the end, so the user will see it.
|
|
82
|
+
|
|
83
|
+
AC_DEFUN([PGAC_ARG_CHECK],
|
|
84
|
+
[for pgac_var in `set | sed 's/=.*//' | $EGREP 'with_|enable_'`; do
|
|
85
|
+
for pgac_arg in $pgac_args with_gnu_ld; do
|
|
86
|
+
if test "$pgac_var" = "$pgac_arg"; then
|
|
87
|
+
continue 2
|
|
88
|
+
fi
|
|
89
|
+
done
|
|
90
|
+
pgac_txt=`echo $pgac_var | sed 's/_/-/g'`
|
|
91
|
+
AC_MSG_WARN([option ignored: --$pgac_txt])
|
|
92
|
+
done])# PGAC_ARG_CHECK
|
|
93
|
+
|
|
94
|
+
# PGAC_ARG_BOOL(TYPE, NAME, DEFAULT, HELP-STRING-RHS,
|
|
95
|
+
# [ACTION-IF-YES], [ACTION-IF-NO])
|
|
96
|
+
# ---------------------------------------------------
|
|
97
|
+
# Accept a boolean option, that is, one that only takes yes or no.
|
|
98
|
+
# ("no" is equivalent to "disable" or "without"). DEFAULT is what
|
|
99
|
+
# should be done if the option is omitted; it should be "yes" or "no".
|
|
100
|
+
# (Consequently, one of ACTION-IF-YES and ACTION-IF-NO will always
|
|
101
|
+
# execute.)
|
|
102
|
+
|
|
103
|
+
AC_DEFUN([PGAC_ARG_BOOL],
|
|
104
|
+
[dnl The following hack is necessary because in a few instances this
|
|
105
|
+
dnl macro is called twice for the same option with different default
|
|
106
|
+
dnl values. But we only want it to appear once in the help. We achieve
|
|
107
|
+
dnl that by making the help string look the same, which is why we need to
|
|
108
|
+
dnl save the default that was passed in previously.
|
|
109
|
+
m4_define([_pgac_helpdefault], m4_ifdef([pgac_defined_$1_$2_bool], [m4_defn([pgac_defined_$1_$2_bool])], [$3]))dnl
|
|
110
|
+
PGAC_ARG([$1], [$2], [m4_if(_pgac_helpdefault, yes, -)], [$4], [$5], [$6],
|
|
111
|
+
[AC_MSG_ERROR([no argument expected for --$1-$2 option])],
|
|
112
|
+
[m4_case([$3],
|
|
113
|
+
yes, [pgac_arg_to_variable([$1], [$2])=yes
|
|
114
|
+
$5],
|
|
115
|
+
no, [pgac_arg_to_variable([$1], [$2])=no
|
|
116
|
+
$6],
|
|
117
|
+
[m4_fatal([third argument of $0 must be 'yes' or 'no', not '$3'])])])[]dnl
|
|
118
|
+
m4_define([pgac_defined_$1_$2_bool], [$3])dnl
|
|
119
|
+
])# PGAC_ARG_BOOL
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
# PGAC_ARG_REQ(TYPE, NAME, HELP-ARGNAME, HELP-STRING-RHS,
|
|
123
|
+
# [ACTION-IF-GIVEN], [ACTION-IF-NOT-GIVEN])
|
|
124
|
+
# -------------------------------------------------------
|
|
125
|
+
# This option will require an argument; "yes" or "no" will not be
|
|
126
|
+
# accepted. HELP-ARGNAME is a name for the argument for the help output.
|
|
127
|
+
|
|
128
|
+
AC_DEFUN([PGAC_ARG_REQ],
|
|
129
|
+
[PGAC_ARG([$1], [$2], [=$3], [$4],
|
|
130
|
+
[AC_MSG_ERROR([argument required for --$1-$2 option])],
|
|
131
|
+
[AC_MSG_ERROR([argument required for --$1-$2 option])],
|
|
132
|
+
[$5],
|
|
133
|
+
[$6])])# PGAC_ARG_REQ
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
# PGAC_ARG_OPTARG(TYPE, NAME, HELP-ARGNAME, HELP-STRING-RHS,
|
|
137
|
+
# [DEFAULT-ACTION], [ARG-ACTION],
|
|
138
|
+
# [ACTION-ENABLED], [ACTION-DISABLED])
|
|
139
|
+
# ----------------------------------------------------------
|
|
140
|
+
# This will create an option that behaves as follows: If omitted, or
|
|
141
|
+
# called with "no", then set the enable_variable to "no" and do
|
|
142
|
+
# nothing else. If called with "yes", then execute DEFAULT-ACTION. If
|
|
143
|
+
# called with argument, set enable_variable to "yes" and execute
|
|
144
|
+
# ARG-ACTION. Additionally, execute ACTION-ENABLED if we ended up with
|
|
145
|
+
# "yes" either way, else ACTION-DISABLED.
|
|
146
|
+
#
|
|
147
|
+
# The intent is to allow enabling a feature, and optionally pass an
|
|
148
|
+
# additional piece of information.
|
|
149
|
+
|
|
150
|
+
AC_DEFUN([PGAC_ARG_OPTARG],
|
|
151
|
+
[PGAC_ARG([$1], [$2], [@<:@=$3@:>@], [$4], [$5], [],
|
|
152
|
+
[pgac_arg_to_variable([$1], [$2])=yes
|
|
153
|
+
$6],
|
|
154
|
+
[pgac_arg_to_variable([$1], [$2])=no])
|
|
155
|
+
dnl Add this code only if there's a ACTION-ENABLED or ACTION-DISABLED.
|
|
156
|
+
m4_ifval([$7[]$8],
|
|
157
|
+
[
|
|
158
|
+
if test "[$]pgac_arg_to_variable([$1], [$2])" = yes; then
|
|
159
|
+
m4_default([$7], :)
|
|
160
|
+
m4_ifval([$8],
|
|
161
|
+
[else
|
|
162
|
+
$8
|
|
163
|
+
])[]dnl
|
|
164
|
+
fi
|
|
165
|
+
])[]dnl
|
|
166
|
+
])# PGAC_ARG_OPTARG
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* getopt_long() -- long options parser
|
|
3
|
+
*
|
|
4
|
+
* Portions Copyright (c) 1987, 1993, 1994
|
|
5
|
+
* The Regents of the University of California. All rights reserved.
|
|
6
|
+
*
|
|
7
|
+
* Portions Copyright (c) 2003
|
|
8
|
+
* PostgreSQL Global Development Group
|
|
9
|
+
*
|
|
10
|
+
* Redistribution and use in source and binary forms, with or without
|
|
11
|
+
* modification, are permitted provided that the following conditions
|
|
12
|
+
* are met:
|
|
13
|
+
* 1. Redistributions of source code must retain the above copyright
|
|
14
|
+
* notice, this list of conditions and the following disclaimer.
|
|
15
|
+
* 2. Redistributions in binary form must reproduce the above copyright
|
|
16
|
+
* notice, this list of conditions and the following disclaimer in the
|
|
17
|
+
* documentation and/or other materials provided with the distribution.
|
|
18
|
+
* 3. Neither the name of the University nor the names of its contributors
|
|
19
|
+
* may be used to endorse or promote products derived from this software
|
|
20
|
+
* without specific prior written permission.
|
|
21
|
+
*
|
|
22
|
+
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
23
|
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
24
|
+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
25
|
+
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
26
|
+
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
27
|
+
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
28
|
+
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
29
|
+
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
30
|
+
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
31
|
+
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
32
|
+
* SUCH DAMAGE.
|
|
33
|
+
*
|
|
34
|
+
* $PostgreSQL: pgsql/src/port/getopt_long.c,v 1.8 2009-06-11 14:49:15 momjian Exp $
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
#include <stdio.h>
|
|
38
|
+
#include <string.h>
|
|
39
|
+
#include "getopt_long.h"
|
|
40
|
+
|
|
41
|
+
#ifndef HAVE_INT_OPTRESET
|
|
42
|
+
int optreset;
|
|
43
|
+
|
|
44
|
+
/* else the "extern" was provided by getopt_long.h */
|
|
45
|
+
#endif
|
|
46
|
+
|
|
47
|
+
#define BADCH '?'
|
|
48
|
+
#define BADARG ':'
|
|
49
|
+
#define EMSG ""
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
int
|
|
53
|
+
getopt_long(int argc, char *const argv[],
|
|
54
|
+
const char *optstring,
|
|
55
|
+
const struct option * longopts, int *longindex)
|
|
56
|
+
{
|
|
57
|
+
static char *place = EMSG; /* option letter processing */
|
|
58
|
+
char *oli; /* option letter list index */
|
|
59
|
+
|
|
60
|
+
if (optreset || !*place)
|
|
61
|
+
{ /* update scanning pointer */
|
|
62
|
+
optreset = 0;
|
|
63
|
+
|
|
64
|
+
if (optind >= argc)
|
|
65
|
+
{
|
|
66
|
+
place = EMSG;
|
|
67
|
+
return -1;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
place = argv[optind];
|
|
71
|
+
|
|
72
|
+
if (place[0] != '-')
|
|
73
|
+
{
|
|
74
|
+
place = EMSG;
|
|
75
|
+
return -1;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
place++;
|
|
79
|
+
|
|
80
|
+
if (place[0] && place[0] == '-' && place[1] == '\0')
|
|
81
|
+
{ /* found "--" */
|
|
82
|
+
++optind;
|
|
83
|
+
place = EMSG;
|
|
84
|
+
return -1;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
if (place[0] && place[0] == '-' && place[1])
|
|
88
|
+
{
|
|
89
|
+
/* long option */
|
|
90
|
+
size_t namelen;
|
|
91
|
+
int i;
|
|
92
|
+
|
|
93
|
+
place++;
|
|
94
|
+
|
|
95
|
+
namelen = strcspn(place, "=");
|
|
96
|
+
for (i = 0; longopts[i].name != NULL; i++)
|
|
97
|
+
{
|
|
98
|
+
if (strlen(longopts[i].name) == namelen
|
|
99
|
+
&& strncmp(place, longopts[i].name, namelen) == 0)
|
|
100
|
+
{
|
|
101
|
+
if (longopts[i].has_arg)
|
|
102
|
+
{
|
|
103
|
+
if (place[namelen] == '=')
|
|
104
|
+
optarg = place + namelen + 1;
|
|
105
|
+
else if (optind < argc - 1)
|
|
106
|
+
{
|
|
107
|
+
optind++;
|
|
108
|
+
optarg = argv[optind];
|
|
109
|
+
}
|
|
110
|
+
else
|
|
111
|
+
{
|
|
112
|
+
if (optstring[0] == ':')
|
|
113
|
+
return BADARG;
|
|
114
|
+
if (opterr)
|
|
115
|
+
fprintf(stderr,
|
|
116
|
+
"%s: option requires an argument -- %s\n",
|
|
117
|
+
argv[0], place);
|
|
118
|
+
place = EMSG;
|
|
119
|
+
optind++;
|
|
120
|
+
return BADCH;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
else
|
|
124
|
+
{
|
|
125
|
+
optarg = NULL;
|
|
126
|
+
if (place[namelen] != 0)
|
|
127
|
+
{
|
|
128
|
+
/* XXX error? */
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
optind++;
|
|
133
|
+
|
|
134
|
+
if (longindex)
|
|
135
|
+
*longindex = i;
|
|
136
|
+
|
|
137
|
+
place = EMSG;
|
|
138
|
+
|
|
139
|
+
if (longopts[i].flag == NULL)
|
|
140
|
+
return longopts[i].val;
|
|
141
|
+
else
|
|
142
|
+
{
|
|
143
|
+
*longopts[i].flag = longopts[i].val;
|
|
144
|
+
return 0;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
if (opterr && optstring[0] != ':')
|
|
150
|
+
fprintf(stderr,
|
|
151
|
+
"%s: illegal option -- %s\n", argv[0], place);
|
|
152
|
+
place = EMSG;
|
|
153
|
+
optind++;
|
|
154
|
+
return BADCH;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/* short option */
|
|
159
|
+
optopt = (int) *place++;
|
|
160
|
+
|
|
161
|
+
oli = strchr(optstring, optopt);
|
|
162
|
+
if (!oli)
|
|
163
|
+
{
|
|
164
|
+
if (!*place)
|
|
165
|
+
++optind;
|
|
166
|
+
if (opterr && *optstring != ':')
|
|
167
|
+
fprintf(stderr,
|
|
168
|
+
"%s: illegal option -- %c\n", argv[0], optopt);
|
|
169
|
+
return BADCH;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
if (oli[1] != ':')
|
|
173
|
+
{ /* don't need argument */
|
|
174
|
+
optarg = NULL;
|
|
175
|
+
if (!*place)
|
|
176
|
+
++optind;
|
|
177
|
+
}
|
|
178
|
+
else
|
|
179
|
+
{ /* need an argument */
|
|
180
|
+
if (*place) /* no white space */
|
|
181
|
+
optarg = place;
|
|
182
|
+
else if (argc <= ++optind)
|
|
183
|
+
{ /* no arg */
|
|
184
|
+
place = EMSG;
|
|
185
|
+
if (*optstring == ':')
|
|
186
|
+
return BADARG;
|
|
187
|
+
if (opterr)
|
|
188
|
+
fprintf(stderr,
|
|
189
|
+
"%s: option requires an argument -- %c\n",
|
|
190
|
+
argv[0], optopt);
|
|
191
|
+
return BADCH;
|
|
192
|
+
}
|
|
193
|
+
else
|
|
194
|
+
/* white space */
|
|
195
|
+
optarg = argv[optind];
|
|
196
|
+
place = EMSG;
|
|
197
|
+
++optind;
|
|
198
|
+
}
|
|
199
|
+
return optopt;
|
|
200
|
+
}
|