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,262 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * parser.c
4
+ * Main entry point/driver for PostgreSQL grammar
5
+ *
6
+ * Note that the grammar is not allowed to perform any table access
7
+ * (since we need to be able to do basic parsing even while inside an
8
+ * aborted transaction). Therefore, the data structures returned by
9
+ * the grammar are "raw" parsetrees that still need to be analyzed by
10
+ * analyze.c and related files.
11
+ *
12
+ *
13
+ * Portions Copyright (c) 2003-2009, PgPool Global Development Group
14
+ * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
15
+ * Portions Copyright (c) 1994, Regents of the University of California
16
+ *
17
+ * IDENTIFICATION
18
+ * src/backend/parser/parser.c
19
+ *
20
+ *-------------------------------------------------------------------------
21
+ */
22
+
23
+ #include <string.h>
24
+ #include "pool_parser.h"
25
+ #include "pool_memory.h"
26
+ #include "gramparse.h" /* required before parser/gram.h! */
27
+ #include "gram.h"
28
+ #include "parser.h"
29
+ #include "pg_wchar.h"
30
+
31
+
32
+ List *parsetree; /* result of parsing is left here */
33
+ jmp_buf jmpbuffer;
34
+ int server_version_num = 0;
35
+
36
+ static pg_enc server_encoding = PG_SQL_ASCII;
37
+ static bool in_parser_context = false;
38
+
39
+ static int
40
+ parse_version(const char *versionString);
41
+
42
+ /*
43
+ * raw_parser
44
+ * Given a query in string form, do lexical and grammatical analysis.
45
+ *
46
+ * Returns a list of raw (un-analyzed) parse trees.
47
+ */
48
+ List *
49
+ raw_parser(const char *str)
50
+ {
51
+ core_yyscan_t yyscanner;
52
+ base_yy_extra_type yyextra;
53
+ int yyresult;
54
+
55
+ if (pool_memory == NULL)
56
+ pool_memory = pool_memory_create(PARSER_BLOCK_SIZE);
57
+
58
+ parsetree = NIL; /* in case grammar forgets to set it */
59
+
60
+ /* initialize the flex scanner */
61
+ yyscanner = scanner_init(str, &yyextra.core_yy_extra,
62
+ ScanKeywords, NumScanKeywords);
63
+
64
+ /* base_yylex() only needs this much initialization */
65
+ yyextra.have_lookahead = false;
66
+
67
+ /* initialize the bison parser */
68
+ parser_init(&yyextra);
69
+
70
+ in_parser_context = true;
71
+ if (setjmp(jmpbuffer) != 0)
72
+ {
73
+ scanner_finish(yyscanner);
74
+ in_parser_context = false;
75
+ return NIL; /* error */
76
+ }
77
+ else
78
+ {
79
+ yyresult = base_yyparse(yyscanner);
80
+
81
+ scanner_finish(yyscanner);
82
+
83
+ in_parser_context = false;
84
+ if (yyresult) /* error */
85
+ return NIL;
86
+ }
87
+ return yyextra.parsetree;
88
+ }
89
+
90
+ void free_parser(void)
91
+ {
92
+ pool_memory_delete(pool_memory, 1);
93
+ }
94
+
95
+ /*
96
+ * Intermediate filter between parser and base lexer (base_yylex in scan.l).
97
+ *
98
+ * The filter is needed because in some cases the standard SQL grammar
99
+ * requires more than one token lookahead. We reduce these cases to one-token
100
+ * lookahead by combining tokens here, in order to keep the grammar LALR(1).
101
+ *
102
+ * Using a filter is simpler than trying to recognize multiword tokens
103
+ * directly in scan.l, because we'd have to allow for comments between the
104
+ * words. Furthermore it's not clear how to do it without re-introducing
105
+ * scanner backtrack, which would cost more performance than this filter
106
+ * layer does.
107
+ *
108
+ * The filter also provides a convenient place to translate between
109
+ * the core_YYSTYPE and YYSTYPE representations (which are really the
110
+ * same thing anyway, but notationally they're different).
111
+ */
112
+ int
113
+ base_yylex(YYSTYPE *lvalp, YYLTYPE *llocp, core_yyscan_t yyscanner)
114
+ {
115
+ base_yy_extra_type *yyextra = pg_yyget_extra(yyscanner);
116
+ int cur_token;
117
+ int next_token;
118
+ core_YYSTYPE cur_yylval;
119
+ YYLTYPE cur_yylloc;
120
+
121
+ /* Get next token --- we might already have it */
122
+ if (yyextra->have_lookahead)
123
+ {
124
+ cur_token = yyextra->lookahead_token;
125
+ lvalp->core_yystype = yyextra->lookahead_yylval;
126
+ *llocp = yyextra->lookahead_yylloc;
127
+ yyextra->have_lookahead = false;
128
+ }
129
+ else
130
+ cur_token = core_yylex(&(lvalp->core_yystype), llocp, yyscanner);
131
+
132
+ /* Do we need to look ahead for a possible multiword token? */
133
+ switch (cur_token)
134
+ {
135
+ case NULLS_P:
136
+
137
+ /*
138
+ * NULLS FIRST and NULLS LAST must be reduced to one token
139
+ */
140
+ cur_yylval = lvalp->core_yystype;
141
+ cur_yylloc = *llocp;
142
+ next_token = core_yylex(&(lvalp->core_yystype), llocp, yyscanner);
143
+ switch (next_token)
144
+ {
145
+ case FIRST_P:
146
+ cur_token = NULLS_FIRST;
147
+ break;
148
+ case LAST_P:
149
+ cur_token = NULLS_LAST;
150
+ break;
151
+ default:
152
+ /* save the lookahead token for next time */
153
+ yyextra->lookahead_token = next_token;
154
+ yyextra->lookahead_yylval = lvalp->core_yystype;
155
+ yyextra->lookahead_yylloc = *llocp;
156
+ yyextra->have_lookahead = true;
157
+ /* and back up the output info to cur_token */
158
+ lvalp->core_yystype = cur_yylval;
159
+ *llocp = cur_yylloc;
160
+ break;
161
+ }
162
+ break;
163
+
164
+ case WITH:
165
+
166
+ /*
167
+ * WITH TIME must be reduced to one token
168
+ */
169
+ cur_yylval = lvalp->core_yystype;
170
+ cur_yylloc = *llocp;
171
+ next_token = core_yylex(&(lvalp->core_yystype), llocp, yyscanner);
172
+ switch (next_token)
173
+ {
174
+ case TIME:
175
+ cur_token = WITH_TIME;
176
+ break;
177
+ default:
178
+ /* save the lookahead token for next time */
179
+ yyextra->lookahead_token = next_token;
180
+ yyextra->lookahead_yylval = lvalp->core_yystype;
181
+ yyextra->lookahead_yylloc = *llocp;
182
+ yyextra->have_lookahead = true;
183
+ /* and back up the output info to cur_token */
184
+ lvalp->core_yystype = cur_yylval;
185
+ *llocp = cur_yylloc;
186
+ break;
187
+ }
188
+ break;
189
+
190
+ default:
191
+ break;
192
+ }
193
+
194
+ return cur_token;
195
+ }
196
+
197
+
198
+ void
199
+ pool_parser_error(int level, const char *file, int line)
200
+ {
201
+ #ifdef PARSER_DEBUG
202
+ fprintf(stderr, "error: %d %s %d\n", level, file, line);
203
+ #endif
204
+ if (level < ERROR)
205
+ return;
206
+ if (in_parser_context)
207
+ longjmp(jmpbuffer, 1);
208
+ }
209
+
210
+ static int
211
+ parse_version(const char *versionString)
212
+ {
213
+ int cnt;
214
+ int vmaj,
215
+ vmin,
216
+ vrev;
217
+
218
+ cnt = sscanf(versionString, "%d.%d.%d", &vmaj, &vmin, &vrev);
219
+
220
+ if (cnt < 2)
221
+ return -1;
222
+
223
+ if (cnt == 2)
224
+ vrev = 0;
225
+
226
+ return (100 * vmaj + vmin) * 100 + vrev;
227
+ }
228
+
229
+ void
230
+ parser_set_param(const char *name, const char *value)
231
+ {
232
+ if (strcmp(name, "server_version") == 0)
233
+ {
234
+ server_version_num = parse_version(value);
235
+ }
236
+ else if (strcmp(name, "server_encoding") == 0)
237
+ {
238
+ if (strcmp(value, "UTF8") == 0)
239
+ server_encoding = PG_UTF8;
240
+ else
241
+ server_encoding = PG_SQL_ASCII;
242
+ }
243
+ else if (strcmp(name, "standard_conforming_strings") == 0)
244
+ {
245
+ if (strcmp(value, "on") == 0)
246
+ standard_conforming_strings = true;
247
+ else
248
+ standard_conforming_strings = false;
249
+ }
250
+ }
251
+
252
+ int
253
+ GetDatabaseEncoding(void)
254
+ {
255
+ return server_encoding;
256
+ }
257
+
258
+ int
259
+ pg_mblen(const char *mbstr)
260
+ {
261
+ return pg_utf_mblen((const unsigned char *) mbstr);
262
+ }
@@ -0,0 +1,46 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * parser.h
4
+ * Definitions for the "raw" parser (flex and bison phases only)
5
+ *
6
+ * This is the external API for the raw lexing/parsing functions.
7
+ *
8
+ * Portions Copyright (c) 2003-2013, PgPool Global Development Group
9
+ * Portions Copyright (c) 1996-2012, PostgreSQL Global Development Group
10
+ * Portions Copyright (c) 1994, Regents of the University of California
11
+ *
12
+ * src/include/parser/parser.h
13
+ *
14
+ *-------------------------------------------------------------------------
15
+ */
16
+ #ifndef PARSER_H
17
+ #define PARSER_H
18
+
19
+ #include "pg_list.h"
20
+ #include "parsenodes.h"
21
+
22
+
23
+ typedef enum
24
+ {
25
+ BACKSLASH_QUOTE_OFF,
26
+ BACKSLASH_QUOTE_ON,
27
+ BACKSLASH_QUOTE_SAFE_ENCODING
28
+ } BackslashQuoteType;
29
+
30
+ /* GUC variables in scan.l (every one of these is a bad idea :-() */
31
+ extern int backslash_quote;
32
+ extern bool escape_string_warning;
33
+ extern PGDLLIMPORT bool standard_conforming_strings;
34
+
35
+
36
+ /* Primary entry point for the raw parsing functions */
37
+ extern List *raw_parser(const char *str);
38
+ extern void free_parser(void);
39
+
40
+ /* Utility functions exported by gram.y (perhaps these should be elsewhere) */
41
+ extern List *SystemFuncName(char *name);
42
+ extern TypeName *SystemTypeName(char *name);
43
+
44
+ extern void parser_set_param(const char *name, const char *value);
45
+
46
+ #endif /* PARSER_H */
@@ -0,0 +1,158 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * pg_class.h
4
+ * definition of the system "relation" relation (pg_class)
5
+ * along with the relation's initial contents.
6
+ *
7
+ *
8
+ * Portions Copyright (c) 2003-2013, PgPool Global Development Group
9
+ * Portions Copyright (c) 1996-2012, PostgreSQL Global Development Group
10
+ * Portions Copyright (c) 1994, Regents of the University of California
11
+ *
12
+ * src/include/catalog/pg_class.h
13
+ *
14
+ * NOTES
15
+ * the genbki.pl script reads this file and generates .bki
16
+ * information from the DATA() statements.
17
+ *
18
+ *-------------------------------------------------------------------------
19
+ */
20
+ #ifndef PG_CLASS_H
21
+ #define PG_CLASS_H
22
+
23
+ #if 0
24
+ #include "catalog/genbki.h"
25
+
26
+ /* ----------------
27
+ * pg_class definition. cpp turns this into
28
+ * typedef struct FormData_pg_class
29
+ * ----------------
30
+ */
31
+ #define RelationRelationId 1259
32
+ #define RelationRelation_Rowtype_Id 83
33
+
34
+ CATALOG(pg_class,1259) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83) BKI_SCHEMA_MACRO
35
+ {
36
+ NameData relname; /* class name */
37
+ Oid relnamespace; /* OID of namespace containing this class */
38
+ Oid reltype; /* OID of entry in pg_type for table's
39
+ * implicit row type */
40
+ Oid reloftype; /* OID of entry in pg_type for underlying
41
+ * composite type */
42
+ Oid relowner; /* class owner */
43
+ Oid relam; /* index access method; 0 if not an index */
44
+ Oid relfilenode; /* identifier of physical storage file */
45
+
46
+ /* relfilenode == 0 means it is a "mapped" relation, see relmapper.c */
47
+ Oid reltablespace; /* identifier of table space for relation */
48
+ int4 relpages; /* # of blocks (not always up-to-date) */
49
+ float4 reltuples; /* # of tuples (not always up-to-date) */
50
+ int4 relallvisible; /* # of all-visible blocks (not always
51
+ * up-to-date) */
52
+ Oid reltoastrelid; /* OID of toast table; 0 if none */
53
+ Oid reltoastidxid; /* if toast table, OID of chunk_id index */
54
+ bool relhasindex; /* T if has (or has had) any indexes */
55
+ bool relisshared; /* T if shared across databases */
56
+ char relpersistence; /* see RELPERSISTENCE_xxx constants below */
57
+ char relkind; /* see RELKIND_xxx constants below */
58
+ int2 relnatts; /* number of user attributes */
59
+
60
+ /*
61
+ * Class pg_attribute must contain exactly "relnatts" user attributes
62
+ * (with attnums ranging from 1 to relnatts) for this class. It may also
63
+ * contain entries with negative attnums for system attributes.
64
+ */
65
+ int2 relchecks; /* # of CHECK constraints for class */
66
+ bool relhasoids; /* T if we generate OIDs for rows of rel */
67
+ bool relhaspkey; /* has (or has had) PRIMARY KEY index */
68
+ bool relhasrules; /* has (or has had) any rules */
69
+ bool relhastriggers; /* has (or has had) any TRIGGERs */
70
+ bool relhassubclass; /* has (or has had) derived classes */
71
+ TransactionId relfrozenxid; /* all Xids < this are frozen in this rel */
72
+
73
+ #ifdef CATALOG_VARLEN /* variable-length fields start here */
74
+ /* NOTE: These fields are not present in a relcache entry's rd_rel field. */
75
+ aclitem relacl[1]; /* access permissions */
76
+ text reloptions[1]; /* access-method-specific options */
77
+ #endif
78
+ } FormData_pg_class;
79
+
80
+ /* Size of fixed part of pg_class tuples, not counting var-length fields */
81
+ #define CLASS_TUPLE_SIZE \
82
+ (offsetof(FormData_pg_class,relfrozenxid) + sizeof(TransactionId))
83
+
84
+ /* ----------------
85
+ * Form_pg_class corresponds to a pointer to a tuple with
86
+ * the format of pg_class relation.
87
+ * ----------------
88
+ */
89
+ typedef FormData_pg_class *Form_pg_class;
90
+
91
+ /* ----------------
92
+ * compiler constants for pg_class
93
+ * ----------------
94
+ */
95
+
96
+ #define Natts_pg_class 27
97
+ #define Anum_pg_class_relname 1
98
+ #define Anum_pg_class_relnamespace 2
99
+ #define Anum_pg_class_reltype 3
100
+ #define Anum_pg_class_reloftype 4
101
+ #define Anum_pg_class_relowner 5
102
+ #define Anum_pg_class_relam 6
103
+ #define Anum_pg_class_relfilenode 7
104
+ #define Anum_pg_class_reltablespace 8
105
+ #define Anum_pg_class_relpages 9
106
+ #define Anum_pg_class_reltuples 10
107
+ #define Anum_pg_class_relallvisible 11
108
+ #define Anum_pg_class_reltoastrelid 12
109
+ #define Anum_pg_class_reltoastidxid 13
110
+ #define Anum_pg_class_relhasindex 14
111
+ #define Anum_pg_class_relisshared 15
112
+ #define Anum_pg_class_relpersistence 16
113
+ #define Anum_pg_class_relkind 17
114
+ #define Anum_pg_class_relnatts 18
115
+ #define Anum_pg_class_relchecks 19
116
+ #define Anum_pg_class_relhasoids 20
117
+ #define Anum_pg_class_relhaspkey 21
118
+ #define Anum_pg_class_relhasrules 22
119
+ #define Anum_pg_class_relhastriggers 23
120
+ #define Anum_pg_class_relhassubclass 24
121
+ #define Anum_pg_class_relfrozenxid 25
122
+ #define Anum_pg_class_relacl 26
123
+ #define Anum_pg_class_reloptions 27
124
+
125
+ /* ----------------
126
+ * initial contents of pg_class
127
+ *
128
+ * NOTE: only "bootstrapped" relations need to be declared here. Be sure that
129
+ * the OIDs listed here match those given in their CATALOG macros, and that
130
+ * the relnatts values are correct.
131
+ * ----------------
132
+ */
133
+
134
+ /* Note: "3" in the relfrozenxid column stands for FirstNormalTransactionId */
135
+ DATA(insert OID = 1247 ( pg_type PGNSP 71 0 PGUID 0 0 0 0 0 0 0 0 f f p r 30 0 t f f f f 3 _null_ _null_ ));
136
+ DESCR("");
137
+ DATA(insert OID = 1249 ( pg_attribute PGNSP 75 0 PGUID 0 0 0 0 0 0 0 0 f f p r 21 0 f f f f f 3 _null_ _null_ ));
138
+ DESCR("");
139
+ DATA(insert OID = 1255 ( pg_proc PGNSP 81 0 PGUID 0 0 0 0 0 0 0 0 f f p r 27 0 t f f f f 3 _null_ _null_ ));
140
+ DESCR("");
141
+ DATA(insert OID = 1259 ( pg_class PGNSP 83 0 PGUID 0 0 0 0 0 0 0 0 f f p r 27 0 t f f f f 3 _null_ _null_ ));
142
+ DESCR("");
143
+ #endif
144
+
145
+ #define RELKIND_RELATION 'r' /* ordinary table */
146
+ #define RELKIND_INDEX 'i' /* secondary index */
147
+ #define RELKIND_SEQUENCE 'S' /* sequence object */
148
+ #define RELKIND_TOASTVALUE 't' /* for out-of-line values */
149
+ #define RELKIND_VIEW 'v' /* view */
150
+ #define RELKIND_COMPOSITE_TYPE 'c' /* composite type */
151
+ #define RELKIND_FOREIGN_TABLE 'f' /* foreign table */
152
+ #define RELKIND_UNCATALOGED 'u' /* not yet cataloged */
153
+
154
+ #define RELPERSISTENCE_PERMANENT 'p' /* regular table */
155
+ #define RELPERSISTENCE_UNLOGGED 'u' /* unlogged permanent table */
156
+ #define RELPERSISTENCE_TEMP 't' /* temporary table */
157
+
158
+ #endif /* PG_CLASS_H */