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,203 @@
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-2011 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_SESSION_CONTEXT_H
27
+ #define POOL_SESSION_CONTEXT_H
28
+ #define INIT_LIST_SIZE 8
29
+
30
+ #include "pool.h"
31
+ #include "pool_process_context.h"
32
+ #include "pool_session_context.h"
33
+ #include "pool_query_context.h"
34
+ #include "parser/pool_memory.h"
35
+ #include "pool_memqcache.h"
36
+
37
+ /*
38
+ * Transaction isolation mode
39
+ */
40
+ typedef enum {
41
+ POOL_UNKNOWN, /* Unknown. Need to ask backend */
42
+ POOL_READ_UNCOMMITTED, /* Read uncommitted */
43
+ POOL_READ_COMMITTED, /* Read committed */
44
+ POOL_REPEATABLE_READ, /* Rpeatable read */
45
+ POOL_SERIALIZABLE /* Serializable */
46
+ } POOL_TRANSACTION_ISOLATION;
47
+
48
+ /*
49
+ * Message content of extended query
50
+ */
51
+ typedef struct {
52
+ char kind; /* one of 'P':Parse, 'B':Bind or 'Q':Query(PREPARE) */
53
+ int len; /* in host byte order */
54
+ char *contents;
55
+ int num_tsparams;
56
+ char *name; /* object name of prepared statement or portal */
57
+ POOL_QUERY_CONTEXT *query_context;
58
+ /*
59
+ * Following members are only used when memcache is enabled.
60
+ */
61
+ bool is_cache_safe; /* true if the query can be cached */
62
+ int param_offset; /* Offset from contents where actual bind
63
+ * parameters are stored.
64
+ * This is meaningful only when is_cache_safe is true.
65
+ */
66
+ } POOL_SENT_MESSAGE;
67
+
68
+ /*
69
+ * List of POOL_SENT_MESSAGE
70
+ */
71
+ typedef struct {
72
+ int capacity; /* capacity of list */
73
+ int size; /* number of elements */
74
+ POOL_SENT_MESSAGE **sent_messages;
75
+ } POOL_SENT_MESSAGE_LIST;
76
+
77
+ /*
78
+ * Per session context:
79
+ */
80
+ typedef struct {
81
+ POOL_PROCESS_CONTEXT *process_context; /* belonging process */
82
+ POOL_CONNECTION *frontend; /* connection to frontend */
83
+ POOL_CONNECTION_POOL *backend; /* connection to backends */
84
+
85
+ /* If true, we are waiting for backend response. For SELECT this
86
+ * flags should be kept until all responses are returned from
87
+ * backend. i.e. until "Read for Query" packet.
88
+ */
89
+ bool in_progress;
90
+
91
+ /* If true, we are doing extended query message */
92
+ bool doing_extended_query_message;
93
+
94
+ /* If true, the command in progress has finished successfully. */
95
+ bool command_success;
96
+
97
+ /* If true, write query has been appeared in this transaction */
98
+ bool writing_transaction;
99
+
100
+ /* If true, error occurred in this transaction */
101
+ bool failed_transaction;
102
+
103
+ /* If true, we skip reading from backends */
104
+ bool skip_reading_from_backends;
105
+
106
+ /* ignore any command until Sync message */
107
+ bool ignore_till_sync;
108
+
109
+ /*
110
+ * Transaction isolation mode.
111
+ */
112
+ POOL_TRANSACTION_ISOLATION transaction_isolation;
113
+
114
+ /*
115
+ * Associated query context, only used for non-extended
116
+ * protocol. In extended protocol, the query context resides in
117
+ * "PreparedStatementList *pstmt_list" (see below).
118
+ */
119
+ POOL_QUERY_CONTEXT *query_context;
120
+ #ifdef NOT_USED
121
+ /* where to send map for PREPARE/EXECUTE/DEALLOCATE */
122
+ POOL_PREPARED_SEND_MAP prep_where;
123
+ #endif /* NOT_USED */
124
+ POOL_MEMORY_POOL *memory_context; /* memory context for session */
125
+
126
+ /* message which doesn't receive complete message */
127
+ POOL_SENT_MESSAGE *uncompleted_message;
128
+
129
+ POOL_SENT_MESSAGE_LIST message_list;
130
+
131
+ int load_balance_node_id; /* selected load balance node id */
132
+
133
+ /*
134
+ * If true, UPDATE/DELETE caused difference in number of affected
135
+ * tuples in backends.
136
+ */
137
+ bool mismatch_ntuples;
138
+
139
+ /*
140
+ * If mismatch_ntuples true, this array holds the number of
141
+ * affected tuples of each node.
142
+ * -1 for down nodes.
143
+ */
144
+ int ntuples[MAX_NUM_BACKENDS];
145
+
146
+ /*
147
+ * If true, we are executing reset query list.
148
+ */
149
+ bool reset_context;
150
+
151
+ /*
152
+ * Query cache management area
153
+ */
154
+ POOL_QUERY_CACHE_ARRAY *query_cache_array; /* pending SELECT results */
155
+ long long int num_selects; /* number of successful SELECTs in this transaction */
156
+ } POOL_SESSION_CONTEXT;
157
+
158
+ extern void pool_init_session_context(POOL_CONNECTION *frontend, POOL_CONNECTION_POOL *backend);
159
+ extern void pool_session_context_destroy(void);
160
+ extern POOL_SESSION_CONTEXT *pool_get_session_context(void);
161
+ extern int pool_get_local_session_id(void);
162
+ extern bool pool_is_query_in_progress(void);
163
+ extern void pool_set_query_in_progress(void);
164
+ extern void pool_unset_query_in_progress(void);
165
+ extern bool pool_is_skip_reading_from_backends(void);
166
+ extern void pool_set_skip_reading_from_backends(void);
167
+ extern void pool_unset_skip_reading_from_backends(void);
168
+ extern bool pool_is_doing_extended_query_message(void);
169
+ extern void pool_set_doing_extended_query_message(void);
170
+ extern void pool_unset_doing_extended_query_message(void);
171
+ extern bool pool_is_ignore_till_sync(void);
172
+ extern void pool_set_ignore_till_sync(void);
173
+ extern void pool_unset_ignore_till_sync(void);
174
+ extern POOL_SENT_MESSAGE *pool_create_sent_message(char kind, int len, char *contents,
175
+ int num_tsparams, const char *name,
176
+ POOL_QUERY_CONTEXT *query_context);
177
+ extern void pool_add_sent_message(POOL_SENT_MESSAGE *message);
178
+ extern bool pool_remove_sent_message(char kind, const char *name);
179
+ extern void pool_remove_sent_messages(char kind);
180
+ extern void pool_clear_sent_message_list(void);
181
+ extern void pool_sent_message_destroy(POOL_SENT_MESSAGE *message);
182
+ extern POOL_SENT_MESSAGE *pool_get_sent_message(char kind, const char *name);
183
+ extern void pool_unset_writing_transaction(void);
184
+ extern void pool_set_writing_transaction(void);
185
+ extern bool pool_is_writing_transaction(void);
186
+ extern void pool_unset_failed_transaction(void);
187
+ extern void pool_set_failed_transaction(void);
188
+ extern bool pool_is_failed_transaction(void);
189
+ extern void pool_unset_transaction_isolation(void);
190
+ extern void pool_set_transaction_isolation(POOL_TRANSACTION_ISOLATION isolation_level);
191
+ extern POOL_TRANSACTION_ISOLATION pool_get_transaction_isolation(void);
192
+ extern void pool_unset_command_success(void);
193
+ extern void pool_set_command_success(void);
194
+ extern bool pool_is_command_success(void);
195
+ extern void pool_copy_prep_where(bool *src, bool *dest);
196
+ extern bool can_query_context_destroy(POOL_QUERY_CONTEXT *qc);
197
+
198
+ #ifdef NOT_USED
199
+ extern void pool_add_prep_where(char *name, bool *map);
200
+ extern bool *pool_get_prep_where(char *name);
201
+ extern void pool_delete_prep_where(char *name);
202
+ #endif /* NOT_USED */
203
+ #endif /* POOL_SESSION_CONTEXT_H */
@@ -0,0 +1,185 @@
1
+ /* -*-pgsql-c-*- */
2
+ /*
3
+ * $Header$
4
+ *
5
+ * pgpool: a language independent connection pool server for PostgreSQL
6
+ * written by Tatsuo Ishii
7
+ *
8
+ * Portions Copyright (c) 2003-2013, PgPool Global Development Group
9
+ * Portions Copyright (c) 2003-2004, PostgreSQL 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
+ */
23
+ #include "pool.h"
24
+
25
+ #include <errno.h>
26
+ #include <string.h>
27
+ #include <sys/shm.h>
28
+
29
+ #include "pool_ipc.h"
30
+
31
+
32
+ #ifdef SHM_SHARE_MMU /* use intimate shared memory on Solaris */
33
+ #define PG_SHMAT_FLAGS SHM_SHARE_MMU
34
+ #else
35
+ #define PG_SHMAT_FLAGS 0
36
+ #endif
37
+
38
+
39
+ #define MAX_ON_EXITS 64
40
+
41
+ static struct ONEXIT
42
+ {
43
+ void (*function) (int code, Datum arg);
44
+ Datum arg;
45
+ } on_shmem_exit_list[MAX_ON_EXITS];
46
+
47
+ static int on_shmem_exit_index;
48
+
49
+
50
+ static void IpcMemoryDetach(int status, Datum shmaddr);
51
+ static void IpcMemoryDelete(int status, Datum shmId);
52
+
53
+
54
+ /*
55
+ * Create a shared memory segment of the given size and initialize. Also,
56
+ * register an on_shmem_exit callback to release the storage.
57
+ */
58
+ void *
59
+ pool_shared_memory_create(size_t size)
60
+ {
61
+ int shmid;
62
+ void *memAddress;
63
+
64
+ /* Try to create new segment */
65
+ shmid = shmget(IPC_PRIVATE, size, IPC_CREAT | IPC_EXCL | IPCProtection);
66
+
67
+ if (shmid < 0)
68
+ {
69
+ pool_error("could not create shared memory segment: %s",
70
+ strerror(errno));
71
+ return NULL;
72
+ }
73
+
74
+ /* Register on-exit routine to delete the new segment */
75
+ on_shmem_exit(IpcMemoryDelete, shmid);
76
+
77
+ /* OK, should be able to attach to the segment */
78
+ memAddress = shmat(shmid, NULL, PG_SHMAT_FLAGS);
79
+
80
+ if (memAddress == (void *) -1)
81
+ {
82
+ pool_error("shmat(id=%d) failed: %s", shmid, strerror(errno));
83
+ return NULL;
84
+ }
85
+
86
+ /* Register on-exit routine to detach new segment before deleting */
87
+ on_shmem_exit(IpcMemoryDetach, (Datum) memAddress);
88
+
89
+ return memAddress;
90
+ }
91
+
92
+ /*
93
+ * Removes a shared memory segment from process' address spaceq (called as
94
+ * an on_shmem_exit callback, hence funny argument list)
95
+ */
96
+ static void
97
+ IpcMemoryDetach(int status, Datum shmaddr)
98
+ {
99
+ if (shmdt((void *) shmaddr) < 0)
100
+ pool_log("shmdt(%p) failed: %s", (void *) shmaddr, strerror(errno));
101
+ }
102
+
103
+ /*
104
+ * Deletes a shared memory segment (called as an on_shmem_exit callback,
105
+ * hence funny argument list)
106
+ */
107
+ static void
108
+ IpcMemoryDelete(int status, Datum shmId)
109
+ {
110
+ struct shmid_ds shmStat;
111
+
112
+ /*
113
+ * Is a previously-existing shmem segment still existing and in use?
114
+ */
115
+ if (shmctl(shmId, IPC_STAT, &shmStat) < 0
116
+ && (errno == EINVAL || errno == EACCES))
117
+ return;
118
+ else if (shmStat.shm_nattch != 0)
119
+ return;
120
+
121
+ if (shmctl(shmId, IPC_RMID, NULL) < 0)
122
+ pool_log("shmctl(%lu, %d, 0) failed: %s",
123
+ shmId, IPC_RMID, strerror(errno));
124
+ }
125
+
126
+ void
127
+ pool_shmem_exit(int code)
128
+ {
129
+ shmem_exit(code);
130
+ /* Close syslog connection here as this function is always called on exit */
131
+ closelog();
132
+ }
133
+
134
+ /*
135
+ * Run all of the on_shmem_exit routines --- but don't actually exit. This
136
+ * is used by the postmaster to re-initialize shared memory and semaphores
137
+ * after a backend dies horribly.
138
+ */
139
+ void
140
+ shmem_exit(int code)
141
+ {
142
+ pool_debug("shmem_exit(%d)", code);
143
+
144
+ /*
145
+ * Call all the registered callbacks.
146
+ *
147
+ * As with proc_exit(), we remove each callback from the list before
148
+ * calling it, to avoid infinite loop in case of error.
149
+ */
150
+ while (--on_shmem_exit_index >= 0)
151
+ (*on_shmem_exit_list[on_shmem_exit_index].function) (code,
152
+ on_shmem_exit_list[on_shmem_exit_index].arg);
153
+
154
+ on_shmem_exit_index = 0;
155
+ }
156
+
157
+ /*
158
+ * This function adds a callback function to the list of functions invoked
159
+ * by shmem_exit().
160
+ */
161
+ void
162
+ on_shmem_exit(void (*function) (int code, Datum arg), Datum arg)
163
+ {
164
+ if (on_shmem_exit_index >= MAX_ON_EXITS)
165
+ pool_error("out of on_shmem_exit slots");
166
+ else
167
+ {
168
+ on_shmem_exit_list[on_shmem_exit_index].function = function;
169
+ on_shmem_exit_list[on_shmem_exit_index].arg = arg;
170
+
171
+ ++on_shmem_exit_index;
172
+ }
173
+ }
174
+
175
+ /*
176
+ * This function clears all on_proc_exit() and on_shmem_exit() registered
177
+ * functions. This is used just after forking a backend, so that the
178
+ * backend doesn't believe it should call the postmaster's on-exit routines
179
+ * when it exits...
180
+ */
181
+ void
182
+ on_exit_reset(void)
183
+ {
184
+ on_shmem_exit_index = 0;
185
+ }
@@ -0,0 +1,158 @@
1
+ /* -*-pgsql-c-*- */
2
+ /*
3
+ * $Header$
4
+ *
5
+ * pgpool: a language independent connection pool server for PostgreSQL
6
+ * written by Tatsuo Ishii
7
+ *
8
+ * Portions Copyright (c) 2003-2008, PgPool Global Development Group
9
+ * Portions Copyright (c) 2003-2004, PostgreSQL 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
+
23
+ /*
24
+ * Signal stuff. Stolen from PostgreSQL source code.
25
+ */
26
+
27
+ #include "config.h"
28
+ #include "pool_signal.h"
29
+ #include <signal.h>
30
+
31
+ #ifdef HAVE_SIGPROCMASK
32
+ sigset_t UnBlockSig,
33
+ BlockSig,
34
+ AuthBlockSig;
35
+
36
+ #else
37
+ int UnBlockSig,
38
+ BlockSig,
39
+ AuthBlockSig;
40
+ #endif
41
+
42
+ /*
43
+ * Initialize BlockSig, UnBlockSig, and AuthBlockSig.
44
+ *
45
+ * BlockSig is the set of signals to block when we are trying to block
46
+ * signals. This includes all signals we normally expect to get, but NOT
47
+ * signals that should never be turned off.
48
+ *
49
+ * AuthBlockSig is the set of signals to block during authentication;
50
+ * it's essentially BlockSig minus SIGTERM, SIGQUIT, SIGALRM.
51
+ *
52
+ * UnBlockSig is the set of signals to block when we don't want to block
53
+ * signals (is this ever nonzero??)
54
+ */
55
+ void
56
+ poolinitmask(void)
57
+ {
58
+ #ifdef HAVE_SIGPROCMASK
59
+ sigemptyset(&UnBlockSig);
60
+ sigfillset(&BlockSig);
61
+ sigfillset(&AuthBlockSig);
62
+
63
+ /*
64
+ * Unmark those signals that should never be blocked. Some of these
65
+ * signal names don't exist on all platforms. Most do, but might as
66
+ * well ifdef them all for consistency...
67
+ */
68
+ #ifdef SIGTRAP
69
+ sigdelset(&BlockSig, SIGTRAP);
70
+ sigdelset(&AuthBlockSig, SIGTRAP);
71
+ #endif
72
+ #ifdef SIGABRT
73
+ sigdelset(&BlockSig, SIGABRT);
74
+ sigdelset(&AuthBlockSig, SIGABRT);
75
+ #endif
76
+ #ifdef SIGILL
77
+ sigdelset(&BlockSig, SIGILL);
78
+ sigdelset(&AuthBlockSig, SIGILL);
79
+ #endif
80
+ #ifdef SIGFPE
81
+ sigdelset(&BlockSig, SIGFPE);
82
+ sigdelset(&AuthBlockSig, SIGFPE);
83
+ #endif
84
+ #ifdef SIGSEGV
85
+ sigdelset(&BlockSig, SIGSEGV);
86
+ sigdelset(&AuthBlockSig, SIGSEGV);
87
+ #endif
88
+ #ifdef SIGBUS
89
+ sigdelset(&BlockSig, SIGBUS);
90
+ sigdelset(&AuthBlockSig, SIGBUS);
91
+ #endif
92
+ #ifdef SIGSYS
93
+ sigdelset(&BlockSig, SIGSYS);
94
+ sigdelset(&AuthBlockSig, SIGSYS);
95
+ #endif
96
+ #ifdef SIGCONT
97
+ sigdelset(&BlockSig, SIGCONT);
98
+ sigdelset(&AuthBlockSig, SIGCONT);
99
+ #endif
100
+ #ifdef SIGTERM
101
+ sigdelset(&AuthBlockSig, SIGTERM);
102
+ #endif
103
+ #ifdef SIGQUIT
104
+ sigdelset(&AuthBlockSig, SIGQUIT);
105
+ #endif
106
+ #ifdef SIGALRM
107
+ sigdelset(&AuthBlockSig, SIGALRM);
108
+ #endif
109
+ #else
110
+ UnBlockSig = 0;
111
+ BlockSig = sigmask(SIGHUP) | sigmask(SIGQUIT) |
112
+ sigmask(SIGTERM) | sigmask(SIGALRM) |
113
+ sigmask(SIGINT) | sigmask(SIGUSR1) |
114
+ sigmask(SIGUSR2) | sigmask(SIGCHLD) |
115
+ sigmask(SIGWINCH) | sigmask(SIGFPE);
116
+ AuthBlockSig = sigmask(SIGHUP) |
117
+ sigmask(SIGINT) | sigmask(SIGUSR1) |
118
+ sigmask(SIGUSR2) | sigmask(SIGCHLD) |
119
+ sigmask(SIGWINCH) | sigmask(SIGFPE);
120
+ #endif
121
+ }
122
+
123
+
124
+ /* Win32 signal handling is in backend/port/win32/signal.c */
125
+ #ifndef WIN32
126
+
127
+ /*
128
+ * We need to check actually the system has the posix signals or not, but...
129
+ */
130
+ #define HAVE_POSIX_SIGNALS
131
+ /*
132
+ * Set up a signal handler
133
+ */
134
+ pool_sighandler_t
135
+ pool_signal(int signo, pool_sighandler_t func)
136
+ {
137
+ #if !defined(HAVE_POSIX_SIGNALS)
138
+ return signal(signo, func);
139
+ #else
140
+ struct sigaction act,
141
+ oact;
142
+
143
+ act.sa_handler = func;
144
+ sigemptyset(&act.sa_mask);
145
+ act.sa_flags = 0;
146
+ if (signo != SIGALRM)
147
+ act.sa_flags |= SA_RESTART;
148
+ #ifdef SA_NOCLDSTOP
149
+ if (signo == SIGCHLD)
150
+ act.sa_flags |= SA_NOCLDSTOP;
151
+ #endif
152
+ if (sigaction(signo, &act, &oact) < 0)
153
+ return SIG_ERR;
154
+ return oact.sa_handler;
155
+ #endif /* !HAVE_POSIX_SIGNALS */
156
+ }
157
+
158
+ #endif /* WIN32 */