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,342 @@
1
+ /* -*-pgsql-c-*- */
2
+ /*
3
+ * $Header$
4
+ *
5
+ * pgpool: a language independent connection pool server for PostgreSQL
6
+ * written by Tatsuo Ishii
7
+ *
8
+ * Copyright (c) 2003-2012 PgPool Global Development Group
9
+ *
10
+ * Permission to use, copy, modify, and distribute this software and
11
+ * its documentation for any purpose and without fee is hereby
12
+ * granted, provided that the above copyright notice appear in all
13
+ * copies and that both that copyright notice and this permission
14
+ * notice appear in supporting documentation, and that the name of the
15
+ * author not be used in advertising or publicity pertaining to
16
+ * distribution of the software without specific, written prior
17
+ * permission. The author makes no representations about the
18
+ * suitability of this software for any purpose. It is provided "as
19
+ * is" without express or implied warranty.
20
+ *
21
+ * pool_memory.c: Memory pooling module for SQL parser.
22
+ *
23
+ */
24
+
25
+ #undef POOL_MEMORY_DEBUG
26
+
27
+ #include "pool.h"
28
+ #include "pool_memory.h"
29
+ #include <errno.h>
30
+ #include <stdlib.h>
31
+ #include <string.h>
32
+
33
+ #define ALIGN 3
34
+ #define POOL_HEADER_SIZE (sizeof (POOL_CHUNK_HEADER))
35
+
36
+ POOL_MEMORY_POOL *pool_memory = NULL;
37
+
38
+ static int get_free_index(unsigned int size);
39
+
40
+ static int get_free_index(unsigned int size)
41
+ {
42
+ int idx = 0;
43
+
44
+ if (size > 0)
45
+ {
46
+ size = (size - 1) >> ALIGN;
47
+ while (size)
48
+ {
49
+ size >>= 1;
50
+ idx++;
51
+ }
52
+ }
53
+ return idx;
54
+ }
55
+
56
+ /*
57
+ * pool_memory_alloc:
58
+ * Returns pointer to allocated memory of given size.
59
+ */
60
+ void *pool_memory_alloc(POOL_MEMORY_POOL *pool, unsigned int size)
61
+ {
62
+ POOL_BLOCK *block;
63
+ POOL_CHUNK *chunk;
64
+
65
+ #ifdef POOL_MEMORY_DEBUG
66
+ pool_log("pool_memory_alloc: pool:%p size:%d", pool, size);
67
+ #endif
68
+
69
+ if ((size + POOL_HEADER_SIZE) > pool->blocksize)
70
+ {
71
+ block = malloc(sizeof(POOL_BLOCK));
72
+ if (block == NULL)
73
+ {
74
+ pool_error("pool_memory_alloc: malloc failed: %s", strerror(errno));
75
+ child_exit(1);
76
+ }
77
+ block->allocsize = block->size = size + POOL_HEADER_SIZE;
78
+ block->block = malloc(size + POOL_HEADER_SIZE);
79
+ if (block->block == NULL)
80
+ {
81
+ pool_error("pool_memory_alloc: malloc failed: %s", strerror(errno));
82
+ child_exit(1);
83
+ }
84
+ block->freepoint = block + (size + POOL_HEADER_SIZE);
85
+ chunk = block->block;
86
+ chunk->header.size = size + POOL_HEADER_SIZE;
87
+ block->next = pool->largeblocks;
88
+ pool->largeblocks = block;
89
+ }
90
+ else
91
+ {
92
+ int fidx = get_free_index(size + POOL_HEADER_SIZE);
93
+ int allocsize = 1 << (fidx + ALIGN);
94
+
95
+ /* pick up from freelist */
96
+ if (pool->freelist[fidx] != NULL)
97
+ {
98
+ chunk = pool->freelist[fidx];
99
+ pool->freelist[fidx] = chunk->header.next;
100
+ chunk->header.size = allocsize;
101
+ return chunk->data;
102
+ }
103
+
104
+ block = pool->blocks;
105
+ if (block == NULL ||
106
+ block->freepoint + allocsize > block->block + block->size)
107
+ {
108
+ block = malloc(sizeof(POOL_BLOCK));
109
+ if (block == NULL)
110
+ {
111
+ pool_error("pool_memory_alloc: malloc failed: %s", strerror(errno));
112
+ child_exit(1);
113
+ }
114
+ block->size = pool->blocksize;
115
+ block->allocsize = 0;
116
+ block->block = malloc(pool->blocksize);
117
+ if (block->block == NULL)
118
+ {
119
+ pool_error("pool_memory_alloc: malloc failed: %s", strerror(errno));
120
+ child_exit(1);
121
+ }
122
+ block->freepoint = block->block;
123
+ block->next = pool->blocks;
124
+ pool->blocks = block;
125
+ }
126
+
127
+ block = pool->blocks;
128
+ chunk = block->freepoint;
129
+ block->freepoint += allocsize;
130
+ block->allocsize += allocsize;
131
+ chunk->header.size = allocsize;
132
+ }
133
+ return chunk->data;
134
+ }
135
+
136
+
137
+ /*
138
+ * pool_memory_alloc_zero:
139
+ * Returns pointer to allocated memory of given size.
140
+ * The allocated memory is cleared.
141
+ */
142
+ void *pool_memory_alloc_zero(POOL_MEMORY_POOL *pool, unsigned int size)
143
+ {
144
+ void *ptr = pool_memory_alloc(pool, size);
145
+ memset(ptr, 0, size);
146
+ return ptr;
147
+ }
148
+
149
+ /*
150
+ * pool_memory_free:
151
+ * Frees allocated memory into memory pool.
152
+ */
153
+ void pool_memory_free(POOL_MEMORY_POOL *pool, void *ptr)
154
+ {
155
+ POOL_CHUNK *chunk = ptr - POOL_HEADER_SIZE;
156
+ int fidx;
157
+
158
+ #ifdef POOL_MEMORY_DEBUG
159
+ pool_log("pool_memory_free: pool:%p ptr:%p", pool, ptr);
160
+ #endif
161
+
162
+ if (ptr == NULL)
163
+ return;
164
+
165
+ if (chunk->header.size > pool->blocksize)
166
+ {
167
+ POOL_BLOCK *block, *ptr = NULL;
168
+
169
+ for (block = pool->largeblocks; block; ptr = block, block = block->next)
170
+ {
171
+ if (block->block == chunk)
172
+ break;
173
+ }
174
+
175
+ if (block == NULL)
176
+ {
177
+ pool_log("An address \"%p\" does not exist in memory pool.", chunk);
178
+ return;
179
+ }
180
+
181
+ if (ptr == NULL)
182
+ {
183
+ pool->largeblocks = block->next;
184
+ }
185
+ else
186
+ {
187
+ ptr->next = block->next;
188
+ }
189
+ free(block->block);
190
+ free(block);
191
+ }
192
+ else
193
+ {
194
+ fidx = get_free_index(chunk->header.size);
195
+ chunk->header.next = pool->freelist[fidx];
196
+ pool->freelist[fidx] = chunk;
197
+ }
198
+ }
199
+
200
+ /*
201
+ * pool_memory_realloc:
202
+ * Returns new pointer to allocated memory of given size.
203
+ * The new memory is copied from the old memory, and the old
204
+ * memory is freed.
205
+ */
206
+ void *pool_memory_realloc(POOL_MEMORY_POOL *pool, void *ptr, unsigned int size)
207
+ {
208
+ int fidx;
209
+ void *p;
210
+ POOL_CHUNK *chunk = ptr - POOL_HEADER_SIZE;
211
+
212
+ if (size <= chunk->header.size - POOL_HEADER_SIZE)
213
+ return ptr;
214
+
215
+ fidx = get_free_index(size + POOL_HEADER_SIZE);
216
+ if (size + POOL_HEADER_SIZE <= pool->blocksize &&
217
+ chunk->header.size <= pool->blocksize &&
218
+ fidx == get_free_index(chunk->header.size))
219
+ {
220
+ return ptr;
221
+ }
222
+
223
+ p = pool_memory_alloc(pool, size);
224
+ memmove(p, ptr, chunk->header.size - POOL_HEADER_SIZE);
225
+ pool_memory_free(pool, ptr);
226
+
227
+ return p;
228
+ }
229
+
230
+ /*
231
+ * pool_memory_create:
232
+ * Create a new memory pool.
233
+ */
234
+ POOL_MEMORY_POOL *pool_memory_create(int blocksize)
235
+ {
236
+ POOL_MEMORY_POOL *pool;
237
+ int i;
238
+
239
+ pool = malloc(sizeof(POOL_MEMORY_POOL));
240
+ if (pool == NULL)
241
+ {
242
+ pool_error("pool_memory_create: malloc failed: %s", strerror(errno));
243
+ child_exit(1);
244
+ }
245
+
246
+ #ifdef POOL_MEMORY_DEBUG
247
+ pool_log("pool_memory_create: blocksize: %d pool:%p", blocksize, pool);
248
+ #endif
249
+
250
+ pool->blocks = NULL;
251
+ pool->largeblocks = NULL;
252
+ pool->blocksize = blocksize;
253
+
254
+ for (i = 0; i < SLOT_NUM; i++)
255
+ {
256
+ pool->freelist[i] = NULL;
257
+ }
258
+
259
+ return pool;
260
+ }
261
+
262
+ /*
263
+ * pool_memory_delete:
264
+ * Frees all memory which is allocated in the memory pool.
265
+ */
266
+ void pool_memory_delete(POOL_MEMORY_POOL *pool_memory, int reuse)
267
+ {
268
+ POOL_BLOCK *block, *ptr;
269
+
270
+ #ifdef POOL_MEMORY_DEBUG
271
+ pool_log("pool_memory_delete: pool:%p reuse:%d", pool_memory, reuse);
272
+ #endif
273
+
274
+ /* Reuse the first memory block */
275
+ if (reuse && pool_memory->blocks)
276
+ block = pool_memory->blocks->next;
277
+ else
278
+ block = pool_memory->blocks;
279
+
280
+ while (block)
281
+ {
282
+ ptr = block->next;
283
+ free(block->block);
284
+ free(block);
285
+ block = ptr;
286
+ }
287
+
288
+ for (block = pool_memory->largeblocks; block;)
289
+ {
290
+ ptr = block->next;
291
+ free(block->block);
292
+ free(block);
293
+ block = ptr;
294
+ }
295
+
296
+ if (reuse)
297
+ {
298
+ int i;
299
+
300
+ if (pool_memory->blocks)
301
+ {
302
+ pool_memory->blocks->next = NULL;
303
+ pool_memory->blocks->allocsize = 0;
304
+ pool_memory->blocks->freepoint = pool_memory->blocks->block;
305
+ }
306
+ pool_memory->largeblocks = NULL;
307
+ for (i = 0; i < SLOT_NUM; i++)
308
+ {
309
+ pool_memory->freelist[i] = NULL;
310
+ }
311
+ }
312
+ else
313
+ {
314
+ free(pool_memory);
315
+ pool_memory = NULL;
316
+ }
317
+ }
318
+
319
+ /*
320
+ * pool_memory_strdup:
321
+ * Creates the new string which is copied the given string.
322
+ */
323
+ char *pool_memory_strdup(POOL_MEMORY_POOL *pool_memory, const char *string)
324
+ {
325
+ int len = strlen(string);
326
+ char *str = pool_memory_alloc(pool_memory, len + 1);
327
+
328
+ memmove(str, string, len);
329
+ str[len] = '\0';
330
+ return str;
331
+ }
332
+
333
+ /*
334
+ * Switch memory context from pool_memory to pm
335
+ */
336
+ POOL_MEMORY_POOL *pool_memory_context_switch_to(POOL_MEMORY_POOL *pm)
337
+ {
338
+ POOL_MEMORY_POOL *old = pool_memory;
339
+ pool_memory = pm;
340
+ return old;
341
+ }
342
+
@@ -0,0 +1,77 @@
1
+ /* -*-pgsql-c-*- */
2
+ /*
3
+ * $Header$
4
+ *
5
+ * pgpool: a language independent connection pool server for PostgreSQL
6
+ * written by Tatsuo Ishii
7
+ *
8
+ * Copyright (c) 2003-2013 PgPool Global Development Group
9
+ *
10
+ * Permission to use, copy, modify, and distribute this software and
11
+ * its documentation for any purpose and without fee is hereby
12
+ * granted, provided that the above copyright notice appear in all
13
+ * copies and that both that copyright notice and this permission
14
+ * notice appear in supporting documentation, and that the name of the
15
+ * author not be used in advertising or publicity pertaining to
16
+ * distribution of the software without specific, written prior
17
+ * permission. The author makes no representations about the
18
+ * suitability of this software for any purpose. It is provided "as
19
+ * is" without express or implied warranty.
20
+ *
21
+ * pool_memory.h: Memory pooling module for SQL parser.
22
+ *
23
+ */
24
+
25
+ #ifndef POOL_MEMORY_H
26
+ #define POOL_MEMORY_H
27
+
28
+ #define SLOT_NUM 11
29
+
30
+ #define PARSER_BLOCK_SIZE 8192
31
+ #define PREPARE_BLOCK_SIZE 1024
32
+
33
+ typedef struct POOL_BLOCK {
34
+ int size;
35
+ int allocsize;
36
+ void *block;
37
+ void *freepoint;
38
+ struct POOL_BLOCK *next;
39
+ } POOL_BLOCK;
40
+
41
+ typedef union {
42
+ unsigned int size;
43
+ struct POOL_CHUNK *next;
44
+ } POOL_CHUNK_HEADER;
45
+
46
+ typedef struct POOL_CHUNK {
47
+ POOL_CHUNK_HEADER header;
48
+ char data[1];
49
+ } POOL_CHUNK;
50
+
51
+ typedef struct {
52
+ int size;
53
+ int blocksize;
54
+ POOL_BLOCK *blocks;
55
+ POOL_BLOCK *largeblocks;
56
+ POOL_CHUNK *freelist[SLOT_NUM];
57
+ } POOL_MEMORY_POOL;
58
+
59
+ extern POOL_MEMORY_POOL *pool_memory;
60
+
61
+ extern void *pool_memory_alloc(POOL_MEMORY_POOL *pool, unsigned int size);
62
+ extern void pool_memory_free(POOL_MEMORY_POOL *pool, void *ptr);
63
+ extern void *pool_memory_realloc(POOL_MEMORY_POOL *pool, void *ptr, unsigned int size);
64
+ extern POOL_MEMORY_POOL *pool_memory_create(int blocksize);
65
+ extern void pool_memory_delete(POOL_MEMORY_POOL *pool_memory, int reuse);
66
+ extern char *pool_memory_strdup(POOL_MEMORY_POOL *pool_memory, const char *string);
67
+ extern void *pool_memory_alloc_zero(POOL_MEMORY_POOL *pool_memory, unsigned int size);
68
+ extern POOL_MEMORY_POOL *pool_memory_context_switch_to(POOL_MEMORY_POOL *pm);
69
+
70
+ #define palloc(s) pool_memory_alloc(pool_memory, (s))
71
+ #define pfree(p) pool_memory_free(pool_memory, (p))
72
+ #define repalloc(p, s) pool_memory_realloc(pool_memory, (p), (s))
73
+ #define pstrdup(s) pool_memory_strdup(pool_memory, (s))
74
+ #define palloc0(s) pool_memory_alloc_zero(pool_memory, (s))
75
+ #define palloc0fast(s) pool_memory_alloc_zero(pool_memory, (s)) /* Added in 8.4 */
76
+
77
+ #endif /* POOL_MEMORY_H */
@@ -0,0 +1,222 @@
1
+ /* -*-pgsql-c-*- */
2
+ /*
3
+ * $Header$
4
+ *
5
+ * Copyright (c) 2006-2009, pgpool Global Development Group
6
+ *
7
+ * Permission to use, copy, modify, and distribute this software and
8
+ * its documentation for any purpose and without fee is hereby
9
+ * granted, provided that the above copyright notice appear in all
10
+ * copies and that both that copyright notice and this permission
11
+ * notice appear in supporting documentation, and that the name of the
12
+ * author not be used in advertising or publicity pertaining to
13
+ * distribution of the software without specific, written prior
14
+ * permission. The author makes no representations about the
15
+ * suitability of this software for any purpose. It is provided "as
16
+ * is" without express or implied warranty.
17
+ */
18
+
19
+ #ifndef POOL_PARSER_H
20
+ #define POOL_PARSER_H
21
+
22
+ #include "../pool_type.h"
23
+ #include <setjmp.h>
24
+
25
+ extern jmp_buf jmpbuffer;
26
+ extern int server_version_num;
27
+
28
+ #define AssertMacro
29
+ #define Assert(expr) ((void) 0)
30
+
31
+ /* include/c.h */
32
+ /* integer */
33
+
34
+ /*
35
+ * move int32 and int16 to pool_types.h since there's no point that
36
+ * these are solely used for parser
37
+ * typedef signed int int32;
38
+ * typedef signed short int16;
39
+ */
40
+
41
+ /*
42
+ * bitsN
43
+ * Unit of bitwise operation, AT LEAST N BITS IN SIZE.
44
+ */
45
+ typedef uint8 bits8; /* >= 8 bits */
46
+ typedef uint16 bits16; /* >= 16 bits */
47
+ typedef uint32 bits32; /* >= 32 bits */
48
+ typedef unsigned long long int uint64;
49
+
50
+
51
+ typedef size_t Size;
52
+ typedef unsigned int PoolOid;
53
+ typedef unsigned int Index;
54
+ typedef short AttrNumber;
55
+ typedef unsigned long Datum; /* XXX sizeof(long) >= sizeof(void *) */
56
+
57
+ #define Oid PoolOid
58
+ #define InvalidOid ((Oid) 0)
59
+
60
+ /*
61
+ * NAMEDATALEN is the max length for system identifiers (e.g. table names,
62
+ * attribute names, function names, etc). It must be a multiple of
63
+ * sizeof(int) (typically 4).
64
+ *
65
+ * NOTE that databases with different NAMEDATALEN's cannot interoperate!
66
+ */
67
+ #define NAMEDATALEN 64
68
+
69
+ /*
70
+ * Max
71
+ * Return the maximum of two numbers.
72
+ */
73
+ #define Max(x, y) ((x) > (y) ? (x) : (y))
74
+
75
+ /*
76
+ * Min
77
+ * Return the minimum of two numbers.
78
+ */
79
+ #define Min(x, y) ((x) < (y) ? (x) : (y))
80
+ /* array */
81
+ #define lengthof(array) (sizeof(array) / sizeof(((array)[0])))
82
+ #define endof(array) (&(array)[lengthof(array)])
83
+
84
+ /* msb for char */
85
+ #define HIGHBIT (0x80)
86
+ #define IS_HIGHBIT_SET(ch) ((unsigned char)(ch) & HIGHBIT)
87
+
88
+ #define PGDLLIMPORT
89
+
90
+
91
+ /* include/utils/datetime.h */
92
+ /* date and datetime */
93
+ #define RESERV 0
94
+ #define MONTH 1
95
+ #define YEAR 2
96
+ #define DAY 3
97
+ #define JULIAN 4
98
+ #define TZ 5
99
+ #define DTZ 6
100
+ #define DTZMOD 7
101
+ #define IGNORE_DTF 8
102
+ #define AMPM 9
103
+ #define HOUR 10
104
+ #define MINUTE 11
105
+ #define SECOND 12
106
+ #define DOY 13
107
+ #define DOW 14
108
+ #define UNITS 15
109
+ #define ADBC 16
110
+ /* these are only for relative dates */
111
+ #define AGO 17
112
+ #define ABS_BEFORE 18
113
+ #define ABS_AFTER 19
114
+ /* generic fields to help with parsing */
115
+ #define ISODATE 20
116
+ #define ISOTIME 21
117
+ /* reserved for unrecognized string values */
118
+ #define UNKNOWN_FIELD 31
119
+ #define MAX_TIMESTAMP_PRECISION 6
120
+ #define MAX_INTERVAL_PRECISION 6
121
+ #define INTERVAL_FULL_RANGE (0x7FFF)
122
+ #define INTERVAL_RANGE_MASK (0x7FFF)
123
+ #define INTERVAL_FULL_PRECISION (0xFFFF)
124
+ #define INTERVAL_PRECISION_MASK (0xFFFF)
125
+
126
+ #define INTERVAL_MASK(b) (1 << (b))
127
+ #define INTERVAL_TYPMOD(p,r) ((((r) & INTERVAL_RANGE_MASK) << 16) | ((p) & INTERVAL_PRECISION_MASK))
128
+ #define INTERVAL_PRECISION(t) ((t) & INTERVAL_PRECISION_MASK)
129
+ #define INTERVAL_RANGE(t) (((t) >> 16) & INTERVAL_RANGE_MASK)
130
+
131
+
132
+ /* include/storage/lock.h */
133
+ /* lock */
134
+ /* NoLock is not a lock mode, but a flag value meaning "don't get a lock" */
135
+ #define NoLock 0
136
+
137
+ #define AccessShareLock 1 /* SELECT */
138
+ #define RowShareLock 2 /* SELECT FOR UPDATE/FOR SHARE */
139
+ #define RowExclusiveLock 3 /* INSERT, UPDATE, DELETE */
140
+ #define ShareUpdateExclusiveLock 4 /* VACUUM (non-FULL) */
141
+ #define ShareLock 5 /* CREATE INDEX */
142
+ #define ShareRowExclusiveLock 6 /* like EXCLUSIVE MODE, but allows ROW
143
+ * SHARE */
144
+ #define ExclusiveLock 7 /* blocks ROW SHARE/SELECT...FOR
145
+ * UPDATE */
146
+ #define AccessExclusiveLock 8 /* ALTER TABLE, DROP TABLE, VACUUM
147
+ * FULL, and unqualified LOCK TABLE */
148
+
149
+ #define DEFAULT_INDEX_TYPE "btree"
150
+ #define NUMERIC_MAX_PRECISION 1000
151
+
152
+ #define VARHDRSZ ((int32) sizeof(int32))
153
+
154
+ #define MaxAttrSize (10 * 1024 * 1024)
155
+ #define BITS_PER_BYTE 8
156
+ #define MAX_TIME_PRECISION 6
157
+
158
+
159
+ /* ----------------------------------------------------------------
160
+ * Section 1: hacks to cope with non-ANSI C compilers
161
+ *
162
+ * type prefixes (const, signed, volatile, inline) are handled in pg_config.h.
163
+ * ----------------------------------------------------------------
164
+ */
165
+
166
+ /*
167
+ * CppAsString
168
+ * Convert the argument to a string, using the C preprocessor.
169
+ * CppConcat
170
+ * Concatenate two arguments together, using the C preprocessor.
171
+ *
172
+ * Note: the standard Autoconf macro AC_C_STRINGIZE actually only checks
173
+ * whether #identifier works, but if we have that we likely have ## too.
174
+ */
175
+ #if defined(HAVE_STRINGIZE)
176
+
177
+ #define CppAsString(identifier) #identifier
178
+ #define CppConcat(x, y) x##y
179
+ #else /* !HAVE_STRINGIZE */
180
+
181
+ #define CppAsString(identifier) "identifier"
182
+
183
+ /*
184
+ * CppIdentity -- On Reiser based cpp's this is used to concatenate
185
+ * two tokens. That is
186
+ * CppIdentity(A)B ==> AB
187
+ * We renamed it to _private_CppIdentity because it should not
188
+ * be referenced outside this file. On other cpp's it
189
+ * produces A B.
190
+ */
191
+ #define _priv_CppIdentity(x)x
192
+ #define CppConcat(x, y) _priv_CppIdentity(x)y
193
+ #endif /* !HAVE_STRINGIZE */
194
+
195
+ #if 0
196
+ /* from include/catalog/pg_trigger.h start */
197
+ /* Bits within tgtype */
198
+ #define TRIGGER_TYPE_ROW (1 << 0)
199
+ #define TRIGGER_TYPE_BEFORE (1 << 1)
200
+ #define TRIGGER_TYPE_INSERT (1 << 2)
201
+ #define TRIGGER_TYPE_DELETE (1 << 3)
202
+ #define TRIGGER_TYPE_UPDATE (1 << 4)
203
+ #define TRIGGER_TYPE_TRUNCATE (1 << 5)
204
+ /* from include/catalog/pg_trigger.h end */
205
+ #endif
206
+
207
+
208
+ /* include/utils/elog.h */
209
+ #define NOTICE 18
210
+ #define WARNING 19
211
+ #define ERROR 20
212
+
213
+ extern void pool_parser_error(int level, const char *file, int line);
214
+ #ifndef ereport
215
+ #define ereport(elevel, rest) pool_parser_error(elevel, __FILE__, __LINE__)
216
+ #endif
217
+ #ifndef elog
218
+ #define elog(elevel, fmt, ...) pool_parser_error(elevel, __FILE__, __LINE__)
219
+ #endif
220
+
221
+
222
+ #endif /* POOL_PARSER_H */