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,41 @@
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_passwd.h: pool_passwd related definitions.
23
+ *
24
+ */
25
+
26
+ #ifndef POOL_PASSWD_H
27
+ #define POOL_PASSWD_H
28
+
29
+ #include "pool.h"
30
+
31
+ #define POOL_PASSWD_FILENAME "pool_passwd"
32
+ #define POOL_PASSWD_LEN 35
33
+
34
+ extern void pool_init_pool_passwd(char *pool_passwd_filename);
35
+ extern int pool_create_passwdent(char *username, char *passwd);
36
+ extern char *pool_get_passwd(char *username);
37
+ extern void pool_delete_passwdent(char *username);
38
+ extern void pool_finish_pool_passwd(void);
39
+ extern void pool_reopen_passwd_file(void);
40
+
41
+ #endif /* POOL_PASSWD_H */
@@ -0,0 +1,193 @@
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
+ * Portions Copyright (c) 2003-2008, PgPool Global Development Group
10
+ * Portions Copyright (c) 2004, PostgreSQL Global Development Group
11
+ *
12
+ * Permission to use, copy, modify, and distribute this software and
13
+ * its documentation for any purpose and without fee is hereby
14
+ * granted, provided that the above copyright notice appear in all
15
+ * copies and that both that copyright notice and this permission
16
+ * notice appear in supporting documentation, and that the name of the
17
+ * author not be used in advertising or publicity pertaining to
18
+ * distribution of the software without specific, written prior
19
+ * permission. The author makes no representations about the
20
+ * suitability of this software for any purpose. It is provided "as
21
+ * is" without express or implied warranty.
22
+ *
23
+ * pool_path.c.: small functions to manipulate paths
24
+ *
25
+ */
26
+
27
+ #include "pool_type.h"
28
+ #include "pool_path.h"
29
+ #include <stdio.h>
30
+ #include <string.h>
31
+
32
+ static void trim_directory(char *path);
33
+ static void trim_trailing_separator(char *path);
34
+
35
+ /*
36
+ * get_parent_directory
37
+ *
38
+ * Modify the given string in-place to name the parent directory of the
39
+ * named file.
40
+ */
41
+ void get_parent_directory(char *path)
42
+ {
43
+ trim_directory(path);
44
+ }
45
+
46
+
47
+ /*
48
+ * trim_directory
49
+ *
50
+ * Trim trailing directory from path, that is, remove any trailing slashes,
51
+ * the last pathname component, and the slash just ahead of it --- but never
52
+ * remove a leading slash.
53
+ */
54
+ static void trim_directory(char *path)
55
+ {
56
+ char *p;
57
+
58
+ if (path[0] == '\0')
59
+ return;
60
+
61
+ /* back up over trailing slash(es) */
62
+ for (p = path + strlen(path) - 1; IS_DIR_SEP(*p) && p > path; p--);
63
+
64
+ /* back up over directory name */
65
+ for (; !IS_DIR_SEP(*p) && p > path; p--);
66
+
67
+ /* if multiple slashes before directory name, remove 'em all */
68
+ for (; p > path && IS_DIR_SEP(*(p - 1)); p--);
69
+
70
+ /* don't erase a leading slash */
71
+ if (p == path && IS_DIR_SEP(*p))
72
+ p++;
73
+
74
+ *p = '\0';
75
+ }
76
+
77
+
78
+ /*
79
+ * join_path_components - join two path components, inserting a slash
80
+ *
81
+ * ret_path is the output area (must be of size MAXPGPATH)
82
+ *
83
+ * ret_path can be the same as head, but not the same as tail.
84
+ */
85
+ void join_path_components(char *ret_path, const char *head, const char *tail)
86
+ {
87
+ if (ret_path != head)
88
+ StrNCpy(ret_path, head, MAXPGPATH);
89
+
90
+ /*
91
+ * Remove any leading "." and ".." in the tail component,
92
+ * adjusting head as needed.
93
+ */
94
+ for (;;)
95
+ {
96
+ if (tail[0] == '.' && IS_DIR_SEP(tail[1]))
97
+ {
98
+ tail += 2;
99
+ }
100
+ else if (tail[0] == '.' && tail[1] == '\0')
101
+ {
102
+ tail += 1;
103
+ break;
104
+ }
105
+ else if (tail[0] == '.' && tail[1] == '.' && IS_DIR_SEP(tail[2]))
106
+ {
107
+ trim_directory(ret_path);
108
+ tail += 3;
109
+ }
110
+ else if (tail[0] == '.' && tail[1] == '.' && tail[2] == '\0')
111
+ {
112
+ trim_directory(ret_path);
113
+ tail += 2;
114
+ break;
115
+ }
116
+ else
117
+ break;
118
+ }
119
+
120
+ if (*tail)
121
+ snprintf(ret_path + strlen(ret_path), MAXPGPATH - strlen(ret_path), "/%s", tail);
122
+ }
123
+
124
+
125
+ /*
126
+ * Clean up path by:
127
+ * o remove trailing slash
128
+ * o remove duplicate adjacent separators
129
+ * o remove trailing '.'
130
+ * o process trailing '..' ourselves
131
+ */
132
+ void canonicalize_path(char *path)
133
+ {
134
+ char *p, *to_p;
135
+ bool was_sep = false;
136
+
137
+ /*
138
+ * Removing the trailing slash on a path means we never get ugly
139
+ * double trailing slashes.
140
+ */
141
+ trim_trailing_separator(path);
142
+
143
+ /*
144
+ * Remove duplicate adjacent separators
145
+ */
146
+ p = path;
147
+ to_p = p;
148
+ for (; *p; p++, to_p++)
149
+ {
150
+ /* Handle many adjacent slashes, like "/a///b" */
151
+ while (*p == '/' && was_sep)
152
+ p++;
153
+ if (to_p != p)
154
+ *to_p = *p;
155
+ was_sep = (*p == '/');
156
+ }
157
+ *to_p = '\0';
158
+
159
+ /*
160
+ * Remove any trailing uses of "." and process ".." ourselves
161
+ */
162
+ for (;;)
163
+ {
164
+ int len = strlen(path);
165
+
166
+ if (len > 2 && strcmp(path + len - 2, "/.") == 0)
167
+ trim_directory(path);
168
+ else if (len > 3 && strcmp(path + len - 3, "/..") == 0)
169
+ {
170
+ trim_directory(path);
171
+ trim_directory(path);
172
+ /* remove directory above */
173
+ }
174
+ else
175
+ break;
176
+ }
177
+ }
178
+
179
+
180
+ /*
181
+ * trim_trailing_separator
182
+ *
183
+ * trim off trailing slashes, but not a leading slash
184
+ */
185
+ static void trim_trailing_separator(char *path)
186
+ {
187
+ char *p;
188
+
189
+ p = path + strlen(path);
190
+ if (p > path)
191
+ for (p--; p > path && IS_DIR_SEP(*p); p--)
192
+ *p = '\0';
193
+ }
@@ -0,0 +1,81 @@
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
+ * Portions Copyright (c) 2003-2008, PgPool Global Development Group
10
+ * Portions Copyright (c) 2004, PostgreSQL Global Development Group
11
+ *
12
+ * Permission to use, copy, modify, and distribute this software and
13
+ * its documentation for any purpose and without fee is hereby
14
+ * granted, provided that the above copyright notice appear in all
15
+ * copies and that both that copyright notice and this permission
16
+ * notice appear in supporting documentation, and that the name of the
17
+ * author not be used in advertising or publicity pertaining to
18
+ * distribution of the software without specific, written prior
19
+ * permission. The author makes no representations about the
20
+ * suitability of this software for any purpose. It is provided "as
21
+ * is" without express or implied warranty.
22
+ *
23
+ * pool_path.h.: interface to pool_path.c
24
+ *
25
+ */
26
+
27
+ #ifndef POOL_PATH_H
28
+ #define POOL_PATH_H
29
+
30
+ /*
31
+ * MAXPGPATH: standard size of a pathname buffer in PostgreSQL (hence,
32
+ * maximum usable pathname length is one less).
33
+ *
34
+ * We'd use a standard system header symbol for this, if there weren't
35
+ * so many to choose from: MAXPATHLEN, MAX_PATH, PATH_MAX are all
36
+ * defined by different "standards", and often have different values
37
+ * on the same platform! So we just punt and use a reasonably
38
+ * generous setting here.
39
+ */
40
+ #define MAXPGPATH 1024
41
+
42
+ #define IS_DIR_SEP(ch) ((ch) == '/')
43
+ #define is_absolute_path(filename) \
44
+ ( \
45
+ ((filename)[0] == '/') \
46
+ )
47
+
48
+ /*
49
+ * StrNCpy
50
+ * Like standard library function strncpy(), except that result string
51
+ * is guaranteed to be null-terminated --- that is, at most N-1 bytes
52
+ * of the source string will be kept.
53
+ * Also, the macro returns no result (too hard to do that without
54
+ * evaluating the arguments multiple times, which seems worse).
55
+ *
56
+ * BTW: when you need to copy a non-null-terminated string (like a text
57
+ * datum) and add a null, do not do it with StrNCpy(..., len+1). That
58
+ * might seem to work, but it fetches one byte more than there is in the
59
+ * text object. One fine day you'll have a SIGSEGV because there isn't
60
+ * another byte before the end of memory. Don't laugh, we've had real
61
+ * live bug reports from real live users over exactly this mistake.
62
+ * Do it honestly with "memcpy(dst,src,len); dst[len] = '\0';", instead.
63
+ */
64
+ #define StrNCpy(dst,src,len) \
65
+ do \
66
+ { \
67
+ char * _dst = (dst); \
68
+ size_t _len = (len); \
69
+ \
70
+ if (_len > 0) \
71
+ { \
72
+ strncpy(_dst, (src), _len); \
73
+ _dst[_len-1] = '\0'; \
74
+ } \
75
+ } while (0)
76
+
77
+ extern void get_parent_directory(char *path);
78
+ extern void join_path_components(char *ret_path, const char *head, const char *tail);
79
+ extern void canonicalize_path(char *path);
80
+
81
+ #endif /* POOL_PATH_H */
@@ -0,0 +1,247 @@
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-2013 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
+ */
23
+
24
+ #include "pool.h"
25
+ #include "pool_process_context.h"
26
+ #include "pool_config.h" /* remove me afterwards */
27
+
28
+ static POOL_PROCESS_CONTEXT process_context_d;
29
+ static POOL_PROCESS_CONTEXT *process_context;
30
+
31
+ /*
32
+ * Initialize per process context
33
+ */
34
+ void pool_init_process_context(void)
35
+ {
36
+ process_context = &process_context_d;
37
+
38
+ if (!process_info)
39
+ {
40
+ pool_error("pool_init_process_context: process_info is not set");
41
+ child_exit(1);
42
+ }
43
+ process_context->process_info = process_info;
44
+
45
+ if (!pool_config->backend_desc)
46
+ {
47
+ pool_error("pool_init_process_context: backend_desc is not set");
48
+ child_exit(1);
49
+ }
50
+ process_context->backend_desc = pool_config->backend_desc;
51
+
52
+ process_context->proc_id = my_proc_id;
53
+
54
+ process_context->local_session_id = 0; /* initialize local session counter */
55
+ }
56
+
57
+ /*
58
+ * Return process context
59
+ */
60
+ POOL_PROCESS_CONTEXT *pool_get_process_context(void)
61
+ {
62
+ if (!process_context)
63
+ {
64
+ pool_error("pool_get_process_context: process context is not initialized");
65
+ }
66
+ return process_context;
67
+ }
68
+
69
+ /*
70
+ * Return my process info
71
+ */
72
+ ProcessInfo *pool_get_my_process_info(void)
73
+ {
74
+ if (!process_context)
75
+ {
76
+ pool_error("pool_get_my_process_info: process context is not initialized");
77
+ return NULL;
78
+ }
79
+
80
+ return &process_context->process_info[process_context->proc_id];
81
+ }
82
+
83
+ /*
84
+ * Increment local session id
85
+ */
86
+ void pool_incremnet_local_session_id(void)
87
+ {
88
+ POOL_PROCESS_CONTEXT *p = pool_get_process_context();
89
+
90
+ if (!p)
91
+ {
92
+ pool_error("pool_incremnet_local_session_id: cannot get process context");
93
+ return;
94
+ }
95
+ p->local_session_id++;
96
+ }
97
+
98
+ /*
99
+ * Return byte size of connection info(ConnectionInfo) on shmem.
100
+ */
101
+ int pool_coninfo_size(void)
102
+ {
103
+ int size;
104
+ size = pool_config->num_init_children *
105
+ pool_config->max_pool *
106
+ MAX_NUM_BACKENDS *
107
+ sizeof(ConnectionInfo);
108
+
109
+ return size;
110
+ }
111
+
112
+ /*
113
+ * Return number of elements of connection info(ConnectionInfo) on shmem.
114
+ */
115
+ int pool_coninfo_num(void)
116
+ {
117
+ int nelm;
118
+ nelm = pool_config->num_init_children *
119
+ pool_config->max_pool *
120
+ MAX_NUM_BACKENDS;
121
+
122
+ return nelm;
123
+ }
124
+
125
+ /*
126
+ * Return pointer to i th child, j th connection pool and k th backend
127
+ * of connection info on shmem.
128
+ */
129
+ ConnectionInfo *pool_coninfo(int child, int connection_pool, int backend)
130
+ {
131
+ if (child < 0 || child >= pool_config->num_init_children)
132
+ {
133
+ pool_error("pool_coninfo: invalid child number: %d", child);
134
+ return NULL;
135
+ }
136
+
137
+ if (connection_pool < 0 || connection_pool >= pool_config->max_pool)
138
+ {
139
+ pool_error("pool_coninfo: invalid connection_pool number: %d", connection_pool);
140
+ return NULL;
141
+ }
142
+
143
+ if (backend < 0 || backend >= MAX_NUM_BACKENDS)
144
+ {
145
+ pool_error("pool_coninfo: invalid backend number: %d", backend);
146
+ return NULL;
147
+ }
148
+
149
+ return &con_info[child*pool_config->max_pool*MAX_NUM_BACKENDS+
150
+ connection_pool*MAX_NUM_BACKENDS+
151
+ backend];
152
+ }
153
+
154
+ /*
155
+ * Return pointer to child which has OS process id pid, j th connection
156
+ * pool and k th backend of connection info on shmem.
157
+ */
158
+ ConnectionInfo *pool_coninfo_pid(int pid, int connection_pool, int backend)
159
+ {
160
+ int child = -1;
161
+ int i;
162
+
163
+ for (i = 0; i < pool_config->num_init_children; i++)
164
+ {
165
+ if (process_info[i].pid == pid)
166
+ {
167
+ child = i;
168
+ break;
169
+ }
170
+ }
171
+
172
+ if (child < 0)
173
+ {
174
+ pool_error("pool_coninfo_pid: invalid child pid: %d", pid);
175
+ return NULL;
176
+ }
177
+
178
+ if (child < 0 || child >= pool_config->num_init_children)
179
+ {
180
+ pool_error("pool_coninfo_pid: invalid child number: %d", child);
181
+ return NULL;
182
+ }
183
+
184
+ if (connection_pool < 0 || connection_pool >= pool_config->max_pool)
185
+ {
186
+ pool_error("pool_coninfo_pid: invalid connection_pool number: %d", connection_pool);
187
+ return NULL;
188
+ }
189
+
190
+ if (backend < 0 || backend >= MAX_NUM_BACKENDS)
191
+ {
192
+ pool_error("pool_coninfo: invalid backend number: %d", backend);
193
+ return NULL;
194
+ }
195
+
196
+ return &con_info[child*pool_config->max_pool*MAX_NUM_BACKENDS+
197
+ connection_pool*MAX_NUM_BACKENDS+
198
+ backend];
199
+ }
200
+
201
+ /*
202
+ * Set frontend connected flag
203
+ */
204
+ void pool_coninfo_set_frontend_connected(int proc_id, int pool_index)
205
+ {
206
+ ConnectionInfo *con;
207
+ int i;
208
+
209
+ for (i=0;i<NUM_BACKENDS;i++)
210
+ {
211
+ if (!VALID_BACKEND(i))
212
+ continue;
213
+
214
+ con = pool_coninfo(proc_id, pool_index, i);
215
+
216
+ if (con == NULL)
217
+ {
218
+ pool_error("pool_coninfo_set_frontend_connected: cannot get ConnectionInfo");
219
+ return;
220
+ }
221
+ con->connected = true;
222
+ }
223
+ }
224
+
225
+ /*
226
+ * Unset frontend connected flag
227
+ */
228
+ void pool_coninfo_unset_frontend_connected(int proc_id, int pool_index)
229
+ {
230
+ ConnectionInfo *con;
231
+ int i;
232
+
233
+ for (i=0;i<NUM_BACKENDS;i++)
234
+ {
235
+ if (!VALID_BACKEND(i))
236
+ continue;
237
+
238
+ con = pool_coninfo(proc_id, pool_index, i);
239
+
240
+ if (con == NULL)
241
+ {
242
+ pool_error("pool_coninfo_unset_frontend_connected: cannot get ConnectionInfo");
243
+ return;
244
+ }
245
+ con->connected = false;
246
+ }
247
+ }