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.
Files changed (393) hide show
  1. data/.gitignore +4 -0
  2. data/Gemfile +2 -0
  3. data/Gemfile.lock +20 -0
  4. data/LICENSE +202 -0
  5. data/NOTICE +22 -0
  6. data/README.md +217 -0
  7. data/Rakefile +13 -0
  8. data/VERSION +1 -0
  9. data/bin/prestogres +254 -0
  10. data/config/pcp.conf.sample +28 -0
  11. data/config/pgpool.conf +678 -0
  12. data/config/pool_hba.conf +84 -0
  13. data/config/pool_passwd +0 -0
  14. data/config/postgresql.conf +2 -0
  15. data/ext/.gitignore +6 -0
  16. data/ext/depend +26 -0
  17. data/ext/extconf.rb +4 -0
  18. data/ext/prestogres_config.c +12 -0
  19. data/pgpool2/.gitignore +36 -0
  20. data/pgpool2/AUTHORS +4 -0
  21. data/pgpool2/COPYING +12 -0
  22. data/pgpool2/ChangeLog +1 -0
  23. data/pgpool2/INSTALL +1 -0
  24. data/pgpool2/Makefile.am +159 -0
  25. data/pgpool2/Makefile.in +1187 -0
  26. data/pgpool2/NEWS +4960 -0
  27. data/pgpool2/README +1 -0
  28. data/pgpool2/README.euc_jp +1 -0
  29. data/pgpool2/README.online-recovery +62 -0
  30. data/pgpool2/TODO +103 -0
  31. data/pgpool2/ac_func_accept_argtypes.m4 +85 -0
  32. data/pgpool2/aclocal.m4 +1088 -0
  33. data/pgpool2/c-compiler.m4 +134 -0
  34. data/pgpool2/c-library.m4 +325 -0
  35. data/pgpool2/child.c +2097 -0
  36. data/pgpool2/config.guess +1532 -0
  37. data/pgpool2/config.h.in +332 -0
  38. data/pgpool2/config.sub +1640 -0
  39. data/pgpool2/configure +15752 -0
  40. data/pgpool2/configure.in +392 -0
  41. data/pgpool2/depcomp +522 -0
  42. data/pgpool2/doc/basebackup.sh +17 -0
  43. data/pgpool2/doc/pgpool-de.html +4220 -0
  44. data/pgpool2/doc/pgpool-en.html +5738 -0
  45. data/pgpool2/doc/pgpool-fr.html +4118 -0
  46. data/pgpool2/doc/pgpool-ja.css +198 -0
  47. data/pgpool2/doc/pgpool-ja.html +11279 -0
  48. data/pgpool2/doc/pgpool-zh_cn.html +4445 -0
  49. data/pgpool2/doc/pgpool.css +280 -0
  50. data/pgpool2/doc/pgpool_remote_start +13 -0
  51. data/pgpool2/doc/recovery.conf.sample +117 -0
  52. data/pgpool2/doc/tutorial-en.html +707 -0
  53. data/pgpool2/doc/tutorial-ja.html +422 -0
  54. data/pgpool2/doc/tutorial-memqcache-en.html +325 -0
  55. data/pgpool2/doc/tutorial-memqcache-ja.html +370 -0
  56. data/pgpool2/doc/tutorial-memqcache-zh_cn.html +322 -0
  57. data/pgpool2/doc/tutorial-watchdog-en.html +306 -0
  58. data/pgpool2/doc/tutorial-watchdog-ja.html +343 -0
  59. data/pgpool2/doc/tutorial-watchdog-zh_cn.html +301 -0
  60. data/pgpool2/doc/tutorial-zh_cn.html +537 -0
  61. data/pgpool2/doc/watchdog.png +0 -0
  62. data/pgpool2/doc/wd-en.html +236 -0
  63. data/pgpool2/doc/wd-en.jpg +0 -0
  64. data/pgpool2/doc/wd-ja.html +219 -0
  65. data/pgpool2/doc/wd-ja.jpg +0 -0
  66. data/pgpool2/doc/wd-zh_cn.html +201 -0
  67. data/pgpool2/doc/where_to_send_queries.odg +0 -0
  68. data/pgpool2/doc/where_to_send_queries.pdf +0 -0
  69. data/pgpool2/general.m4 +166 -0
  70. data/pgpool2/getopt_long.c +200 -0
  71. data/pgpool2/getopt_long.h +44 -0
  72. data/pgpool2/install-sh +251 -0
  73. data/pgpool2/ltmain.sh +8406 -0
  74. data/pgpool2/m4/libtool.m4 +7360 -0
  75. data/pgpool2/m4/ltoptions.m4 +368 -0
  76. data/pgpool2/m4/ltsugar.m4 +123 -0
  77. data/pgpool2/m4/ltversion.m4 +23 -0
  78. data/pgpool2/m4/lt~obsolete.m4 +92 -0
  79. data/pgpool2/main.c +2971 -0
  80. data/pgpool2/md5.c +444 -0
  81. data/pgpool2/md5.h +28 -0
  82. data/pgpool2/missing +360 -0
  83. data/pgpool2/mkinstalldirs +40 -0
  84. data/pgpool2/parser/Makefile.am +50 -0
  85. data/pgpool2/parser/Makefile.in +559 -0
  86. data/pgpool2/parser/copyfuncs.c +3310 -0
  87. data/pgpool2/parser/gram.c +39100 -0
  88. data/pgpool2/parser/gram.h +940 -0
  89. data/pgpool2/parser/gram.y +13408 -0
  90. data/pgpool2/parser/gramparse.h +74 -0
  91. data/pgpool2/parser/keywords.c +32 -0
  92. data/pgpool2/parser/keywords.h +39 -0
  93. data/pgpool2/parser/kwlist.h +425 -0
  94. data/pgpool2/parser/kwlookup.c +88 -0
  95. data/pgpool2/parser/list.c +1156 -0
  96. data/pgpool2/parser/makefuncs.c +518 -0
  97. data/pgpool2/parser/makefuncs.h +83 -0
  98. data/pgpool2/parser/memnodes.h +79 -0
  99. data/pgpool2/parser/nodes.c +29 -0
  100. data/pgpool2/parser/nodes.h +609 -0
  101. data/pgpool2/parser/outfuncs.c +5790 -0
  102. data/pgpool2/parser/parsenodes.h +2615 -0
  103. data/pgpool2/parser/parser.c +262 -0
  104. data/pgpool2/parser/parser.h +46 -0
  105. data/pgpool2/parser/pg_class.h +158 -0
  106. data/pgpool2/parser/pg_config_manual.h +273 -0
  107. data/pgpool2/parser/pg_list.h +352 -0
  108. data/pgpool2/parser/pg_trigger.h +147 -0
  109. data/pgpool2/parser/pg_wchar.h +492 -0
  110. data/pgpool2/parser/pool_memory.c +342 -0
  111. data/pgpool2/parser/pool_memory.h +77 -0
  112. data/pgpool2/parser/pool_parser.h +222 -0
  113. data/pgpool2/parser/pool_string.c +121 -0
  114. data/pgpool2/parser/pool_string.h +37 -0
  115. data/pgpool2/parser/primnodes.h +1280 -0
  116. data/pgpool2/parser/scan.c +4094 -0
  117. data/pgpool2/parser/scan.l +1451 -0
  118. data/pgpool2/parser/scanner.h +120 -0
  119. data/pgpool2/parser/scansup.c +221 -0
  120. data/pgpool2/parser/scansup.h +28 -0
  121. data/pgpool2/parser/snprintf.c +1102 -0
  122. data/pgpool2/parser/stringinfo.c +294 -0
  123. data/pgpool2/parser/stringinfo.h +178 -0
  124. data/pgpool2/parser/value.c +78 -0
  125. data/pgpool2/parser/value.h +62 -0
  126. data/pgpool2/parser/wchar.c +2048 -0
  127. data/pgpool2/pcp.conf.sample +28 -0
  128. data/pgpool2/pcp/Makefile.am +40 -0
  129. data/pgpool2/pcp/Makefile.in +771 -0
  130. data/pgpool2/pcp/libpcp_ext.h +250 -0
  131. data/pgpool2/pcp/md5.c +444 -0
  132. data/pgpool2/pcp/md5.h +28 -0
  133. data/pgpool2/pcp/pcp.c +1652 -0
  134. data/pgpool2/pcp/pcp.h +61 -0
  135. data/pgpool2/pcp/pcp_attach_node.c +172 -0
  136. data/pgpool2/pcp/pcp_detach_node.c +185 -0
  137. data/pgpool2/pcp/pcp_error.c +87 -0
  138. data/pgpool2/pcp/pcp_node_count.c +160 -0
  139. data/pgpool2/pcp/pcp_node_info.c +198 -0
  140. data/pgpool2/pcp/pcp_pool_status.c +166 -0
  141. data/pgpool2/pcp/pcp_proc_count.c +166 -0
  142. data/pgpool2/pcp/pcp_proc_info.c +261 -0
  143. data/pgpool2/pcp/pcp_promote_node.c +185 -0
  144. data/pgpool2/pcp/pcp_recovery_node.c +172 -0
  145. data/pgpool2/pcp/pcp_stop_pgpool.c +179 -0
  146. data/pgpool2/pcp/pcp_stream.c +385 -0
  147. data/pgpool2/pcp/pcp_stream.h +52 -0
  148. data/pgpool2/pcp/pcp_systemdb_info.c +194 -0
  149. data/pgpool2/pcp/pcp_watchdog_info.c +211 -0
  150. data/pgpool2/pcp_child.c +1493 -0
  151. data/pgpool2/pg_md5.c +305 -0
  152. data/pgpool2/pgpool.8.in +121 -0
  153. data/pgpool2/pgpool.conf +553 -0
  154. data/pgpool2/pgpool.conf.sample +666 -0
  155. data/pgpool2/pgpool.conf.sample-master-slave +665 -0
  156. data/pgpool2/pgpool.conf.sample-replication +664 -0
  157. data/pgpool2/pgpool.conf.sample-stream +664 -0
  158. data/pgpool2/pgpool.spec +264 -0
  159. data/pgpool2/pgpool_adm/TODO +7 -0
  160. data/pgpool2/pgpool_adm/pgpool_adm--1.0.sql +85 -0
  161. data/pgpool2/pgpool_adm/pgpool_adm.c +558 -0
  162. data/pgpool2/pgpool_adm/pgpool_adm.control +5 -0
  163. data/pgpool2/pgpool_adm/pgpool_adm.h +46 -0
  164. data/pgpool2/pgpool_adm/pgpool_adm.sql.in +85 -0
  165. data/pgpool2/pool.h +655 -0
  166. data/pgpool2/pool_auth.c +1390 -0
  167. data/pgpool2/pool_config.c +5007 -0
  168. data/pgpool2/pool_config.h +284 -0
  169. data/pgpool2/pool_config.l +3281 -0
  170. data/pgpool2/pool_config_md5.c +29 -0
  171. data/pgpool2/pool_connection_pool.c +812 -0
  172. data/pgpool2/pool_error.c +242 -0
  173. data/pgpool2/pool_globals.c +27 -0
  174. data/pgpool2/pool_hba.c +1723 -0
  175. data/pgpool2/pool_hba.conf.sample +67 -0
  176. data/pgpool2/pool_ip.c +567 -0
  177. data/pgpool2/pool_ip.h +65 -0
  178. data/pgpool2/pool_ipc.h +38 -0
  179. data/pgpool2/pool_lobj.c +242 -0
  180. data/pgpool2/pool_lobj.h +32 -0
  181. data/pgpool2/pool_memqcache.c +3818 -0
  182. data/pgpool2/pool_memqcache.h +268 -0
  183. data/pgpool2/pool_params.c +163 -0
  184. data/pgpool2/pool_passwd.c +249 -0
  185. data/pgpool2/pool_passwd.h +41 -0
  186. data/pgpool2/pool_path.c +193 -0
  187. data/pgpool2/pool_path.h +81 -0
  188. data/pgpool2/pool_process_context.c +247 -0
  189. data/pgpool2/pool_process_context.h +62 -0
  190. data/pgpool2/pool_process_query.c +5001 -0
  191. data/pgpool2/pool_process_reporting.c +1671 -0
  192. data/pgpool2/pool_process_reporting.h +44 -0
  193. data/pgpool2/pool_proto2.c +671 -0
  194. data/pgpool2/pool_proto_modules.c +3524 -0
  195. data/pgpool2/pool_proto_modules.h +185 -0
  196. data/pgpool2/pool_query_cache.c +1020 -0
  197. data/pgpool2/pool_query_context.c +1871 -0
  198. data/pgpool2/pool_query_context.h +105 -0
  199. data/pgpool2/pool_relcache.c +284 -0
  200. data/pgpool2/pool_relcache.h +78 -0
  201. data/pgpool2/pool_rewrite_outfuncs.c +9060 -0
  202. data/pgpool2/pool_rewrite_query.c +715 -0
  203. data/pgpool2/pool_rewrite_query.h +192 -0
  204. data/pgpool2/pool_select_walker.c +1150 -0
  205. data/pgpool2/pool_select_walker.h +68 -0
  206. data/pgpool2/pool_sema.c +161 -0
  207. data/pgpool2/pool_session_context.c +952 -0
  208. data/pgpool2/pool_session_context.h +203 -0
  209. data/pgpool2/pool_shmem.c +185 -0
  210. data/pgpool2/pool_signal.c +158 -0
  211. data/pgpool2/pool_signal.h +61 -0
  212. data/pgpool2/pool_ssl.c +339 -0
  213. data/pgpool2/pool_stream.c +962 -0
  214. data/pgpool2/pool_stream.h +61 -0
  215. data/pgpool2/pool_system.c +659 -0
  216. data/pgpool2/pool_timestamp.c +1215 -0
  217. data/pgpool2/pool_timestamp.h +38 -0
  218. data/pgpool2/pool_type.h +171 -0
  219. data/pgpool2/pool_worker_child.c +384 -0
  220. data/pgpool2/ps_status.c +404 -0
  221. data/pgpool2/recovery.c +435 -0
  222. data/pgpool2/redhat/pgpool.conf.sample.patch +52 -0
  223. data/pgpool2/redhat/pgpool.init +201 -0
  224. data/pgpool2/redhat/pgpool.sysconfig +7 -0
  225. data/pgpool2/redhat/rpm_installer/basebackup-replication.sh +53 -0
  226. data/pgpool2/redhat/rpm_installer/basebackup-stream.sh +55 -0
  227. data/pgpool2/redhat/rpm_installer/config_for_script +17 -0
  228. data/pgpool2/redhat/rpm_installer/failover.sh +64 -0
  229. data/pgpool2/redhat/rpm_installer/getsources.sh +141 -0
  230. data/pgpool2/redhat/rpm_installer/install.sh +1363 -0
  231. data/pgpool2/redhat/rpm_installer/pgpool_recovery_pitr +47 -0
  232. data/pgpool2/redhat/rpm_installer/pgpool_remote_start +15 -0
  233. data/pgpool2/redhat/rpm_installer/recovery.conf +4 -0
  234. data/pgpool2/redhat/rpm_installer/uninstall.sh +57 -0
  235. data/pgpool2/sample/dist_def_pgbench.sql +73 -0
  236. data/pgpool2/sample/pgpool.pam +3 -0
  237. data/pgpool2/sample/pgpool_recovery +20 -0
  238. data/pgpool2/sample/pgpool_recovery_pitr +19 -0
  239. data/pgpool2/sample/pgpool_remote_start +13 -0
  240. data/pgpool2/sample/replicate_def_pgbench.sql +18 -0
  241. data/pgpool2/sql/insert_lock.sql +15 -0
  242. data/pgpool2/sql/pgpool-recovery/pgpool-recovery.c +280 -0
  243. data/pgpool2/sql/pgpool-recovery/pgpool-recovery.sql.in +19 -0
  244. data/pgpool2/sql/pgpool-recovery/pgpool_recovery--1.0.sql +24 -0
  245. data/pgpool2/sql/pgpool-recovery/pgpool_recovery.control +5 -0
  246. data/pgpool2/sql/pgpool-recovery/uninstall_pgpool-recovery.sql +3 -0
  247. data/pgpool2/sql/pgpool-regclass/pgpool-regclass.c +206 -0
  248. data/pgpool2/sql/pgpool-regclass/pgpool-regclass.sql.in +4 -0
  249. data/pgpool2/sql/pgpool-regclass/pgpool_regclass--1.0.sql +7 -0
  250. data/pgpool2/sql/pgpool-regclass/pgpool_regclass.control +5 -0
  251. data/pgpool2/sql/pgpool-regclass/uninstall_pgpool-regclass.sql +1 -0
  252. data/pgpool2/sql/system_db.sql +38 -0
  253. data/pgpool2/strlcpy.c +85 -0
  254. data/pgpool2/test/C/test_extended.c +98 -0
  255. data/pgpool2/test/jdbc/.cvsignore +2 -0
  256. data/pgpool2/test/jdbc/AutoCommitTest.java +45 -0
  257. data/pgpool2/test/jdbc/BatchTest.java +55 -0
  258. data/pgpool2/test/jdbc/ColumnTest.java +60 -0
  259. data/pgpool2/test/jdbc/CreateTempTableTest.java +48 -0
  260. data/pgpool2/test/jdbc/InsertTest.java +34 -0
  261. data/pgpool2/test/jdbc/LockTest.java +36 -0
  262. data/pgpool2/test/jdbc/PgpoolTest.java +75 -0
  263. data/pgpool2/test/jdbc/README.euc_jp +73 -0
  264. data/pgpool2/test/jdbc/RunTest.java +83 -0
  265. data/pgpool2/test/jdbc/SelectTest.java +37 -0
  266. data/pgpool2/test/jdbc/UpdateTest.java +32 -0
  267. data/pgpool2/test/jdbc/expected/CreateTempTable +1 -0
  268. data/pgpool2/test/jdbc/expected/autocommit +10 -0
  269. data/pgpool2/test/jdbc/expected/batch +1 -0
  270. data/pgpool2/test/jdbc/expected/column +100 -0
  271. data/pgpool2/test/jdbc/expected/insert +1 -0
  272. data/pgpool2/test/jdbc/expected/lock +100 -0
  273. data/pgpool2/test/jdbc/expected/select +2 -0
  274. data/pgpool2/test/jdbc/expected/update +1 -0
  275. data/pgpool2/test/jdbc/pgpool.properties +7 -0
  276. data/pgpool2/test/jdbc/prepare.sql +54 -0
  277. data/pgpool2/test/jdbc/run.sh +6 -0
  278. data/pgpool2/test/parser/.cvsignore +6 -0
  279. data/pgpool2/test/parser/README +32 -0
  280. data/pgpool2/test/parser/expected/copy.out +17 -0
  281. data/pgpool2/test/parser/expected/create.out +64 -0
  282. data/pgpool2/test/parser/expected/cursor.out +37 -0
  283. data/pgpool2/test/parser/expected/delete.out +10 -0
  284. data/pgpool2/test/parser/expected/drop.out +12 -0
  285. data/pgpool2/test/parser/expected/insert.out +13 -0
  286. data/pgpool2/test/parser/expected/misc.out +28 -0
  287. data/pgpool2/test/parser/expected/prepare.out +4 -0
  288. data/pgpool2/test/parser/expected/privileges.out +31 -0
  289. data/pgpool2/test/parser/expected/scanner.out +30 -0
  290. data/pgpool2/test/parser/expected/select.out +89 -0
  291. data/pgpool2/test/parser/expected/transaction.out +38 -0
  292. data/pgpool2/test/parser/expected/update.out +11 -0
  293. data/pgpool2/test/parser/expected/v84.out +37 -0
  294. data/pgpool2/test/parser/expected/v90.out +25 -0
  295. data/pgpool2/test/parser/expected/var.out +22 -0
  296. data/pgpool2/test/parser/input/alter.sql +2 -0
  297. data/pgpool2/test/parser/input/copy.sql +17 -0
  298. data/pgpool2/test/parser/input/create.sql +64 -0
  299. data/pgpool2/test/parser/input/cursor.sql +37 -0
  300. data/pgpool2/test/parser/input/delete.sql +10 -0
  301. data/pgpool2/test/parser/input/drop.sql +12 -0
  302. data/pgpool2/test/parser/input/insert.sql +13 -0
  303. data/pgpool2/test/parser/input/misc.sql +28 -0
  304. data/pgpool2/test/parser/input/prepare.sql +4 -0
  305. data/pgpool2/test/parser/input/privileges.sql +31 -0
  306. data/pgpool2/test/parser/input/scanner.sql +34 -0
  307. data/pgpool2/test/parser/input/select.sql +89 -0
  308. data/pgpool2/test/parser/input/transaction.sql +38 -0
  309. data/pgpool2/test/parser/input/update.sql +11 -0
  310. data/pgpool2/test/parser/input/v84.sql +37 -0
  311. data/pgpool2/test/parser/input/v90.sql +38 -0
  312. data/pgpool2/test/parser/input/var.sql +22 -0
  313. data/pgpool2/test/parser/main.c +96 -0
  314. data/pgpool2/test/parser/parse_schedule +16 -0
  315. data/pgpool2/test/parser/pool.h +13 -0
  316. data/pgpool2/test/parser/run-test +62 -0
  317. data/pgpool2/test/pdo-test/README.euc_jp +58 -0
  318. data/pgpool2/test/pdo-test/SQLlist/test1.sql +3 -0
  319. data/pgpool2/test/pdo-test/SQLlist/test2.sql +3 -0
  320. data/pgpool2/test/pdo-test/collections.inc +11 -0
  321. data/pgpool2/test/pdo-test/def.inc +7 -0
  322. data/pgpool2/test/pdo-test/log.txt +0 -0
  323. data/pgpool2/test/pdo-test/mod/database.inc +36 -0
  324. data/pgpool2/test/pdo-test/mod/def.inc +0 -0
  325. data/pgpool2/test/pdo-test/mod/errorhandler.inc +27 -0
  326. data/pgpool2/test/pdo-test/pdotest.php +11 -0
  327. data/pgpool2/test/pdo-test/regsql.inc +56 -0
  328. data/pgpool2/test/pgpool_setup +898 -0
  329. data/pgpool2/test/regression/README +39 -0
  330. data/pgpool2/test/regression/clean.sh +21 -0
  331. data/pgpool2/test/regression/libs.sh +16 -0
  332. data/pgpool2/test/regression/regress.sh +166 -0
  333. data/pgpool2/test/regression/tests/001.load_balance/test.sh +128 -0
  334. data/pgpool2/test/regression/tests/002.native_replication/PgTester.java +47 -0
  335. data/pgpool2/test/regression/tests/002.native_replication/create.sql +6 -0
  336. data/pgpool2/test/regression/tests/002.native_replication/test.sh +71 -0
  337. data/pgpool2/test/regression/tests/003.failover/expected.r +6 -0
  338. data/pgpool2/test/regression/tests/003.failover/expected.s +6 -0
  339. data/pgpool2/test/regression/tests/003.failover/test.sh +45 -0
  340. data/pgpool2/test/regression/tests/004.watchdog/master.conf +12 -0
  341. data/pgpool2/test/regression/tests/004.watchdog/standby.conf +19 -0
  342. data/pgpool2/test/regression/tests/004.watchdog/test.sh +52 -0
  343. data/pgpool2/test/regression/tests/050.bug58/test.sh +50 -0
  344. data/pgpool2/test/regression/tests/051.bug60/bug.sql +12 -0
  345. data/pgpool2/test/regression/tests/051.bug60/database-clean.sql +6 -0
  346. data/pgpool2/test/regression/tests/051.bug60/database-setup.sql +28 -0
  347. data/pgpool2/test/regression/tests/051.bug60/test.sh +79 -0
  348. data/pgpool2/test/regression/tests/052.do_query/test.sh +44 -0
  349. data/pgpool2/test/regression/tests/053.insert_lock_hangs/test.sh +81 -0
  350. data/pgpool2/test/regression/tests/054.postgres_fdw/test.sh +67 -0
  351. data/pgpool2/test/regression/tests/055.backend_all_down/test.sh +52 -0
  352. data/pgpool2/test/regression/tests/056.bug63/jdbctest2.java +66 -0
  353. data/pgpool2/test/regression/tests/056.bug63/test.sh +47 -0
  354. data/pgpool2/test/regression/tests/057.bug61/test.sh +40 -0
  355. data/pgpool2/test/regression/tests/058.bug68/jdbctest3.java +45 -0
  356. data/pgpool2/test/regression/tests/058.bug68/test.sh +47 -0
  357. data/pgpool2/test/timestamp/expected/insert.out +16 -0
  358. data/pgpool2/test/timestamp/expected/misc.out +3 -0
  359. data/pgpool2/test/timestamp/expected/update.out +6 -0
  360. data/pgpool2/test/timestamp/input/insert.sql +16 -0
  361. data/pgpool2/test/timestamp/input/misc.sql +3 -0
  362. data/pgpool2/test/timestamp/input/update.sql +6 -0
  363. data/pgpool2/test/timestamp/main.c +129 -0
  364. data/pgpool2/test/timestamp/parse_schedule +3 -0
  365. data/pgpool2/test/timestamp/run-test +69 -0
  366. data/pgpool2/version.h +1 -0
  367. data/pgpool2/watchdog/Makefile.am +17 -0
  368. data/pgpool2/watchdog/Makefile.in +505 -0
  369. data/pgpool2/watchdog/test/stab.c +266 -0
  370. data/pgpool2/watchdog/test/test.c +85 -0
  371. data/pgpool2/watchdog/test/wd_child_t.c +87 -0
  372. data/pgpool2/watchdog/test/wd_lifecheck_t.c +87 -0
  373. data/pgpool2/watchdog/test/wd_packet_t.c +87 -0
  374. data/pgpool2/watchdog/test/wd_ping_t.c +20 -0
  375. data/pgpool2/watchdog/watchdog.c +408 -0
  376. data/pgpool2/watchdog/watchdog.h +209 -0
  377. data/pgpool2/watchdog/wd_child.c +444 -0
  378. data/pgpool2/watchdog/wd_ext.h +123 -0
  379. data/pgpool2/watchdog/wd_heartbeat.c +577 -0
  380. data/pgpool2/watchdog/wd_if.c +216 -0
  381. data/pgpool2/watchdog/wd_init.c +126 -0
  382. data/pgpool2/watchdog/wd_interlock.c +347 -0
  383. data/pgpool2/watchdog/wd_lifecheck.c +512 -0
  384. data/pgpool2/watchdog/wd_list.c +429 -0
  385. data/pgpool2/watchdog/wd_packet.c +1159 -0
  386. data/pgpool2/watchdog/wd_ping.c +330 -0
  387. data/pgpool2/ylwrap +223 -0
  388. data/pgsql/presto_client.py +346 -0
  389. data/pgsql/prestogres.py +156 -0
  390. data/pgsql/setup_functions.sql +21 -0
  391. data/pgsql/setup_language.sql +3 -0
  392. data/prestogres.gemspec +23 -0
  393. 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,3 @@
1
+ DELETE FROM "rel1" WHERE ("c1"='2009-01-01 23:59:59.123456+09'::text::date )
2
+ PREPARE "q" ("date",timestamptz) AS DELETE FROM "rel1" WHERE ( ("c1"=$1 ) AND ("c3"=$2::text::date ))
3
+ EXECUTE "q" ("pg_catalog"."timestamptz"('2009-01-01 23:59:59.123456+09'::text))
@@ -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,3 @@
1
+ DELETE FROM rel1 WHERE c1 = CURRENT_DATE
2
+ PREPARE q(date) AS DELETE FROM rel1 WHERE c1 = $1 AND c3 = CURRENT_DATE
3
+ EXECUTE q(now())
@@ -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) {}