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,105 @@
1
+ /* -*-pgsql-c-*- */
2
+ /*
3
+ *
4
+ * $Header$
5
+ *
6
+ * pgpool: a language independent connection pool server for PostgreSQL
7
+ * written by Tatsuo Ishii
8
+ *
9
+ * Copyright (c) 2003-2012 PgPool Global Development Group
10
+ *
11
+ * Permission to use, copy, modify, and distribute this software and
12
+ * its documentation for any purpose and without fee is hereby
13
+ * granted, provided that the above copyright notice appear in all
14
+ * copies and that both that copyright notice and this permission
15
+ * notice appear in supporting documentation, and that the name of the
16
+ * author not be used in advertising or publicity pertaining to
17
+ * distribution of the software without specific, written prior
18
+ * permission. The author makes no representations about the
19
+ * suitability of this software for any purpose. It is provided "as
20
+ * is" without express or implied warranty.
21
+ *
22
+ * pool_process_context.h.: process context information
23
+ *
24
+ */
25
+
26
+ #ifndef POOL_QUERY_CONTEXT_H
27
+ #define POOL_QUERY_CONTEXT_H
28
+
29
+ #include "pool.h"
30
+ #include "pool_process_context.h"
31
+ #include "parser/nodes.h"
32
+ #include "parser/parsenodes.h"
33
+ #include "parser/pool_memory.h"
34
+ #include "pool_memqcache.h"
35
+
36
+ /*
37
+ * Parse state transition.
38
+ * transition order is:
39
+ * UNPARSED < PARSE_COMPLETE < BIND_COMPLETE < EXECUTE_COMPLETE
40
+ */
41
+ typedef enum {
42
+ POOL_UNPARSED,
43
+ POOL_PARSE_COMPLETE,
44
+ POOL_BIND_COMPLETE,
45
+ POOL_EXECUTE_COMPLETE
46
+ } POOL_QUERY_STATE;
47
+
48
+ /*
49
+ * Query context:
50
+ * Manages per query context
51
+ */
52
+ typedef struct {
53
+ char *original_query; /* original query string */
54
+ char *rewritten_query; /* rewritten query string if any */
55
+ int original_length; /* original query length which contains '\0' */
56
+ int rewritten_length; /* rewritten query length which contains '\0' if any */
57
+ Node *parse_tree; /* raw parser output if any */
58
+ Node *rewritten_parse_tree; /* rewritten raw parser output if any */
59
+ bool where_to_send[MAX_NUM_BACKENDS]; /* DB node map to send query */
60
+ int virtual_master_node_id; /* the 1st DB node to send query */
61
+ POOL_MEMORY_POOL *memory_context; /* memory context for query */
62
+ POOL_QUERY_STATE query_state[MAX_NUM_BACKENDS]; /* for extended query protocol */
63
+ bool is_cache_safe; /* true if SELECT is safe to cache */
64
+ POOL_TEMP_QUERY_CACHE *temp_cache; /* temporary cache */
65
+ bool is_multi_statement; /* true if multi statement query */
66
+ int dboid; /* DB oid which is used at DROP DATABASE */
67
+ char *query_w_hex; /* original_query with bind message hex which used for committing cache of extended query */
68
+ bool is_parse_error; /* if true, we could not parse the original
69
+ * query and parsed node is actually a dummy query.
70
+ */
71
+ } POOL_QUERY_CONTEXT;
72
+
73
+ extern POOL_QUERY_CONTEXT *pool_init_query_context(void);
74
+ extern void pool_query_context_destroy(POOL_QUERY_CONTEXT *query_context);
75
+ extern void pool_start_query(POOL_QUERY_CONTEXT *query_context, char *query, int len, Node *node);
76
+ extern void pool_set_node_to_be_sent(POOL_QUERY_CONTEXT *query_context, int node_id);
77
+ extern void pool_unset_node_to_be_sent(POOL_QUERY_CONTEXT *query_context, int node_id);
78
+ extern bool pool_is_node_to_be_sent(POOL_QUERY_CONTEXT *query_context, int node_id);
79
+ extern void pool_set_node_to_be_sent(POOL_QUERY_CONTEXT *query_context, int node_id);
80
+ extern void pool_unset_node_to_be_sent(POOL_QUERY_CONTEXT *query_context, int node_id);
81
+ extern void pool_clear_node_to_be_sent(POOL_QUERY_CONTEXT *query_context);
82
+ extern void pool_setall_node_to_be_sent(POOL_QUERY_CONTEXT *query_context);
83
+ extern bool pool_multi_node_to_be_sent(POOL_QUERY_CONTEXT *query_context);
84
+ extern void pool_where_to_send(POOL_QUERY_CONTEXT *query_context, char *query, Node *node);
85
+ extern POOL_STATUS pool_send_and_wait(POOL_QUERY_CONTEXT *query_context, int send_type, int node_id);
86
+ extern POOL_STATUS pool_extended_send_and_wait(POOL_QUERY_CONTEXT *query_context, char *kind, int len, char *contents, int send_type, int node_id);
87
+ extern Node *pool_get_parse_tree(void);
88
+ extern char *pool_get_query_string(void);
89
+ extern bool is_set_transaction_serializable(Node *node);
90
+ extern bool is_start_transaction_query(Node *node);
91
+ extern bool is_read_write(TransactionStmt *node);
92
+ extern bool is_serializable(TransactionStmt *node);
93
+ extern bool pool_need_to_treat_as_if_default_transaction(POOL_QUERY_CONTEXT *query_context);
94
+ extern bool is_savepoint_query(Node *node);
95
+ extern bool is_2pc_transaction_query(Node *node);
96
+ extern void pool_set_query_state(POOL_QUERY_CONTEXT *query_context, POOL_QUERY_STATE state);
97
+ extern int statecmp(POOL_QUERY_STATE s1, POOL_QUERY_STATE s2);
98
+ extern bool pool_is_cache_safe(void);
99
+ extern void pool_set_cache_safe(void);
100
+ extern void pool_unset_cache_safe(void);
101
+ extern bool pool_is_cache_exceeded(void);
102
+ extern void pool_set_cache_exceeded(void);
103
+ extern void pool_unset_cache_exceeded(void);
104
+
105
+ #endif /* POOL_QUERY_CONTEXT_H */
@@ -0,0 +1,284 @@
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-2012 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
+ * pool_relcache.c: Per process relation cache modules
22
+ */
23
+ #include "config.h"
24
+ #include <stdlib.h>
25
+ #include <unistd.h>
26
+ #include <string.h>
27
+
28
+ #include "pool.h"
29
+ #include "pool_relcache.h"
30
+ #include "pool_session_context.h"
31
+ #include "pool_config.h"
32
+
33
+ /*
34
+ * Create relation cache
35
+ */
36
+ POOL_RELCACHE *pool_create_relcache(int cachesize, char *sql,
37
+ func_ptr register_func, func_ptr unregister_func,
38
+ bool issessionlocal)
39
+ {
40
+ POOL_RELCACHE *p;
41
+ PoolRelCache *ip;
42
+
43
+ if (cachesize < 0)
44
+ {
45
+ pool_error("pool_create_relcache: wrong cache size: %d", cachesize);
46
+ return NULL;
47
+ }
48
+
49
+ ip = (PoolRelCache *)malloc(sizeof(PoolRelCache)*cachesize);
50
+ if (ip == NULL)
51
+ {
52
+ pool_error("pool_create_relcache: cannot allocate memory %zd", sizeof(PoolRelCache)*cachesize);
53
+ return NULL;
54
+ }
55
+ memset(ip, 0, sizeof(PoolRelCache)*cachesize);
56
+
57
+ p = (POOL_RELCACHE *)malloc(sizeof(POOL_RELCACHE));
58
+ if (p == NULL)
59
+ {
60
+ pool_error("pool_create_relcache: cannot allocate memory %zd", sizeof(POOL_RELCACHE));
61
+ free(ip);
62
+ return NULL;
63
+ }
64
+
65
+ p->num = cachesize;
66
+ strlcpy(p->sql, sql, sizeof(p->sql));
67
+ p->register_func = register_func;
68
+ p->unregister_func = unregister_func;
69
+ p->cache_is_session_local = issessionlocal;
70
+ p->no_cache_if_zero = false;
71
+ p->cache = ip;
72
+
73
+ return p;
74
+ }
75
+ /*
76
+ * Discard relation cache.
77
+ */
78
+ void pool_discard_relcache(POOL_RELCACHE *relcache)
79
+ {
80
+ int i;
81
+
82
+ for (i=0;i<relcache->num;i++)
83
+ {
84
+ (*relcache->unregister_func)(relcache->cache[i].data);
85
+ }
86
+ free(relcache->cache);
87
+ free(relcache);
88
+ }
89
+
90
+ /*
91
+ * Search relcache. If found, return user data. Otherwise return 0.
92
+ * If not found in cache, do the query and store the result into cache and return it.
93
+ */
94
+ void *pool_search_relcache(POOL_RELCACHE *relcache, POOL_CONNECTION_POOL *backend, char *table)
95
+ {
96
+ char *rel;
97
+ char *dbname;
98
+ int i;
99
+ int maxrefcnt = INT_MAX;
100
+ char query[1024];
101
+ POOL_SELECT_RESULT *res = NULL;
102
+ int index = 0;
103
+ int local_session_id;
104
+ time_t now;
105
+ void *result;
106
+
107
+ /* Eliminate double quotes */
108
+ rel = malloc(strlen(table)+1);
109
+ if (!rel)
110
+ {
111
+ pool_error("pool_search_relcache: malloc failed");
112
+ return NULL;
113
+ }
114
+
115
+ local_session_id = pool_get_local_session_id();
116
+ if (local_session_id < 0)
117
+ {
118
+ pool_error("pool_search_relcache: pool_get_local_session_id failed");
119
+ return NULL;
120
+ }
121
+
122
+ for(i=0;*table;table++)
123
+ {
124
+ if (*table != '"')
125
+ rel[i++] = *table;
126
+ }
127
+ rel[i] = '\0';
128
+
129
+ /* Obtain database name */
130
+ dbname = MASTER_CONNECTION(backend)->sp->database;
131
+
132
+ now = time(NULL);
133
+
134
+ /* Look for cache first */
135
+ for (i=0;i<relcache->num;i++)
136
+ {
137
+ /*
138
+ * If cache is session local, we need to check session id
139
+ */
140
+ if (relcache->cache_is_session_local)
141
+ {
142
+ if (relcache->cache[i].session_id != local_session_id)
143
+ continue;
144
+ }
145
+
146
+ if (strcasecmp(relcache->cache[i].dbname, dbname) == 0 &&
147
+ strcasecmp(relcache->cache[i].relname, rel) == 0)
148
+ {
149
+ if (relcache->cache[i].expire > 0)
150
+ {
151
+ if (now > relcache->cache[i].expire)
152
+ {
153
+ pool_debug("pool_search_relcache: relcache for database:%s table:%s expired. now:%ld expiration time:%ld", dbname, rel, now, relcache->cache[i].expire);
154
+ relcache->cache[i].refcnt = 0;
155
+ break;
156
+ }
157
+ }
158
+
159
+ /* Found */
160
+ if (relcache->cache[i].refcnt < INT_MAX)
161
+ relcache->cache[i].refcnt++;
162
+ free(rel);
163
+ return relcache->cache[i].data;
164
+ }
165
+ }
166
+
167
+ /* Not in cache. Check the system catalog */
168
+ snprintf(query, sizeof(query), relcache->sql, rel);
169
+
170
+ per_node_statement_log(backend, MASTER_NODE_ID, query);
171
+
172
+ if (do_query(MASTER(backend), query, &res, MAJOR(backend)) != POOL_CONTINUE)
173
+ {
174
+ pool_error("pool_search_relcache: do_query failed");
175
+ if (res)
176
+ free_select_result(res);
177
+ free(rel);
178
+ return NULL;
179
+ }
180
+
181
+ /*
182
+ * Look for replacement in cache
183
+ */
184
+ for (i=0;i<relcache->num;i++)
185
+ {
186
+ /*
187
+ * If cache is session local, we can discard old cache immediately
188
+ */
189
+ if (relcache->cache_is_session_local)
190
+ {
191
+ if (relcache->cache[i].session_id != local_session_id)
192
+ {
193
+ index = i;
194
+ relcache->cache[i].refcnt = 0;
195
+ break;
196
+ }
197
+ }
198
+
199
+ if (relcache->cache[i].refcnt == 0)
200
+ {
201
+ /* Found empty slot */
202
+ index = i;
203
+ break;
204
+ }
205
+ else if (relcache->cache[i].refcnt < maxrefcnt)
206
+ {
207
+ maxrefcnt = relcache->cache[i].refcnt;
208
+ index = i;
209
+ }
210
+ }
211
+
212
+ if (relcache->cache[index].refcnt != 0)
213
+ {
214
+ pool_log("pool_search_relcache: cache replacement happend");
215
+ }
216
+
217
+ /* Register cache */
218
+ result = (*relcache->register_func)(res);
219
+
220
+ if (!relcache->no_cache_if_zero || result)
221
+ {
222
+ strlcpy(relcache->cache[index].dbname, dbname, MAX_ITEM_LENGTH);
223
+ strlcpy(relcache->cache[index].relname, rel, MAX_ITEM_LENGTH);
224
+ relcache->cache[index].refcnt = 1;
225
+ relcache->cache[index].session_id = local_session_id;
226
+ if (pool_config->relcache_expire > 0)
227
+ {
228
+ relcache->cache[index].expire = now + pool_config->relcache_expire;
229
+ }
230
+ else
231
+ {
232
+ relcache->cache[index].expire = 0;
233
+ }
234
+ /*
235
+ * Call user defined unregister/register function.
236
+ */
237
+ (*relcache->unregister_func)(relcache->cache[index].data);
238
+ relcache->cache[index].data = result;
239
+ }
240
+ free(rel);
241
+ free_select_result(res);
242
+
243
+ return result;
244
+ }
245
+
246
+ /*
247
+ * Standard register/unregister function for "SELECT count(*)" type
248
+ * query. Returns row count.
249
+ */
250
+ void *int_register_func(POOL_SELECT_RESULT *res)
251
+ {
252
+ if (res->numrows >= 1)
253
+ return (void *)atol(res->data[0]);
254
+ return (void *)0;
255
+ }
256
+
257
+ void *int_unregister_func(void *data)
258
+ {
259
+ /* Nothing to do since no memory was allocated */
260
+ return NULL;
261
+ }
262
+
263
+ void *string_register_func(POOL_SELECT_RESULT *res)
264
+ {
265
+ char *ret = NULL;
266
+ int i;
267
+
268
+ if (res->numrows == 0)
269
+ return NULL;
270
+
271
+ for (i = 0; i < res->numrows; i++)
272
+ {
273
+ ret = strdup(res->data[i]);
274
+ break;
275
+ }
276
+
277
+ return (void *)ret;
278
+ }
279
+
280
+ void *string_unregister_func(void *data)
281
+ {
282
+ free(data);
283
+ return data;
284
+ }
@@ -0,0 +1,78 @@
1
+ /* -*-pgsql-c-*- */
2
+ /*
3
+ *
4
+ * $Header$
5
+ *
6
+ * pgpool: a language independent connection pool server for PostgreSQL
7
+ * written by Tatsuo Ishii
8
+ *
9
+ * Copyright (c) 2003-2010 PgPool Global Development Group
10
+ *
11
+ * Permission to use, copy, modify, and distribute this software and
12
+ * its documentation for any purpose and without fee is hereby
13
+ * granted, provided that the above copyright notice appear in all
14
+ * copies and that both that copyright notice and this permission
15
+ * notice appear in supporting documentation, and that the name of the
16
+ * author not be used in advertising or publicity pertaining to
17
+ * distribution of the software without specific, written prior
18
+ * permission. The author makes no representations about the
19
+ * suitability of this software for any purpose. It is provided "as
20
+ * is" without express or implied warranty.
21
+ *
22
+ * pool_relcache.h.: pool_relcache.c related header file
23
+ *
24
+ */
25
+
26
+ #ifndef POOL_RELCACHE_H
27
+ #define POOL_RELCACHE_H
28
+
29
+ /* ------------------------
30
+ * Relation cache structure
31
+ *-------------------------
32
+ */
33
+ #define MAX_ITEM_LENGTH 1024
34
+
35
+ /* Relation lookup cache structure */
36
+
37
+ typedef void *(*func_ptr) ();
38
+
39
+ typedef struct {
40
+ char dbname[MAX_ITEM_LENGTH]; /* database name */
41
+ char relname[MAX_ITEM_LENGTH]; /* table name */
42
+ void *data; /* user data */
43
+ int refcnt; /* reference count */
44
+ int session_id; /* LocalSessionId */
45
+ time_t expire; /* cache expiration absolute time in seconds */
46
+ } PoolRelCache;
47
+
48
+ typedef struct {
49
+ int num; /* number of cache items */
50
+ char sql[MAX_ITEM_LENGTH]; /* Query to relation */
51
+ /*
52
+ * User defined function to be called at data register.
53
+ * Argument is POOL_SELECT_RESULT *.
54
+ * This function must return a pointer to be
55
+ * saved in cache->data.
56
+ */
57
+ func_ptr register_func;
58
+ /*
59
+ * User defined function to be called at data unregister.
60
+ * Argument cache->data.
61
+ */
62
+ func_ptr unregister_func;
63
+ bool cache_is_session_local; /* True if cache life time is session local */
64
+ bool no_cache_if_zero; /* if register func returns 0, do not cache the data */
65
+ PoolRelCache *cache; /* cache data */
66
+ } POOL_RELCACHE;
67
+
68
+ extern POOL_RELCACHE *pool_create_relcache(int cachesize, char *sql,
69
+ func_ptr register_func, func_ptr unregister_func,
70
+ bool issessionlocal);
71
+ extern void pool_discard_relcache(POOL_RELCACHE *relcache);
72
+ extern void *pool_search_relcache(POOL_RELCACHE *relcache, POOL_CONNECTION_POOL *backend, char *table);
73
+ extern void *int_register_func(POOL_SELECT_RESULT *res);
74
+ extern void *int_unregister_func(void *data);
75
+ extern void *string_register_func(POOL_SELECT_RESULT *res);
76
+ extern void *string_unregister_func(void *data);
77
+
78
+ #endif /* POOL_RELCACHE_H */