pg_query 1.1.0 → 2.0.1

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 (478) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +163 -52
  3. data/README.md +80 -69
  4. data/Rakefile +82 -1
  5. data/ext/pg_query/extconf.rb +3 -31
  6. data/ext/pg_query/guc-file.c +0 -0
  7. data/ext/pg_query/include/access/amapi.h +246 -0
  8. data/ext/pg_query/include/access/attmap.h +52 -0
  9. data/ext/pg_query/include/access/attnum.h +64 -0
  10. data/ext/pg_query/include/access/clog.h +61 -0
  11. data/ext/pg_query/include/access/commit_ts.h +77 -0
  12. data/ext/pg_query/include/access/detoast.h +92 -0
  13. data/ext/pg_query/include/access/genam.h +228 -0
  14. data/ext/pg_query/include/access/gin.h +78 -0
  15. data/ext/pg_query/include/access/htup.h +89 -0
  16. data/ext/pg_query/include/access/htup_details.h +819 -0
  17. data/ext/pg_query/include/access/itup.h +161 -0
  18. data/ext/pg_query/include/access/parallel.h +82 -0
  19. data/ext/pg_query/include/access/printtup.h +35 -0
  20. data/ext/pg_query/include/access/relation.h +28 -0
  21. data/ext/pg_query/include/access/relscan.h +176 -0
  22. data/ext/pg_query/include/access/rmgr.h +35 -0
  23. data/ext/pg_query/include/access/rmgrlist.h +49 -0
  24. data/ext/pg_query/include/access/sdir.h +58 -0
  25. data/ext/pg_query/include/access/skey.h +151 -0
  26. data/ext/pg_query/include/access/stratnum.h +83 -0
  27. data/ext/pg_query/include/access/sysattr.h +29 -0
  28. data/ext/pg_query/include/access/table.h +27 -0
  29. data/ext/pg_query/include/access/tableam.h +1825 -0
  30. data/ext/pg_query/include/access/transam.h +265 -0
  31. data/ext/pg_query/include/access/tupconvert.h +51 -0
  32. data/ext/pg_query/include/access/tupdesc.h +154 -0
  33. data/ext/pg_query/include/access/tupmacs.h +247 -0
  34. data/ext/pg_query/include/access/twophase.h +61 -0
  35. data/ext/pg_query/include/access/xact.h +463 -0
  36. data/ext/pg_query/include/access/xlog.h +398 -0
  37. data/ext/pg_query/include/access/xlog_internal.h +330 -0
  38. data/ext/pg_query/include/access/xlogdefs.h +109 -0
  39. data/ext/pg_query/include/access/xloginsert.h +64 -0
  40. data/ext/pg_query/include/access/xlogreader.h +327 -0
  41. data/ext/pg_query/include/access/xlogrecord.h +227 -0
  42. data/ext/pg_query/include/bootstrap/bootstrap.h +62 -0
  43. data/ext/pg_query/include/c.h +1322 -0
  44. data/ext/pg_query/include/catalog/catalog.h +42 -0
  45. data/ext/pg_query/include/catalog/catversion.h +58 -0
  46. data/ext/pg_query/include/catalog/dependency.h +275 -0
  47. data/ext/pg_query/include/catalog/genbki.h +64 -0
  48. data/ext/pg_query/include/catalog/index.h +199 -0
  49. data/ext/pg_query/include/catalog/indexing.h +366 -0
  50. data/ext/pg_query/include/catalog/namespace.h +188 -0
  51. data/ext/pg_query/include/catalog/objectaccess.h +197 -0
  52. data/ext/pg_query/include/catalog/objectaddress.h +84 -0
  53. data/ext/pg_query/include/catalog/pg_aggregate.h +176 -0
  54. data/ext/pg_query/include/catalog/pg_aggregate_d.h +77 -0
  55. data/ext/pg_query/include/catalog/pg_am.h +60 -0
  56. data/ext/pg_query/include/catalog/pg_am_d.h +45 -0
  57. data/ext/pg_query/include/catalog/pg_attribute.h +204 -0
  58. data/ext/pg_query/include/catalog/pg_attribute_d.h +59 -0
  59. data/ext/pg_query/include/catalog/pg_authid.h +58 -0
  60. data/ext/pg_query/include/catalog/pg_authid_d.h +49 -0
  61. data/ext/pg_query/include/catalog/pg_class.h +200 -0
  62. data/ext/pg_query/include/catalog/pg_class_d.h +103 -0
  63. data/ext/pg_query/include/catalog/pg_collation.h +73 -0
  64. data/ext/pg_query/include/catalog/pg_collation_d.h +45 -0
  65. data/ext/pg_query/include/catalog/pg_constraint.h +247 -0
  66. data/ext/pg_query/include/catalog/pg_constraint_d.h +67 -0
  67. data/ext/pg_query/include/catalog/pg_control.h +250 -0
  68. data/ext/pg_query/include/catalog/pg_conversion.h +72 -0
  69. data/ext/pg_query/include/catalog/pg_conversion_d.h +35 -0
  70. data/ext/pg_query/include/catalog/pg_depend.h +73 -0
  71. data/ext/pg_query/include/catalog/pg_depend_d.h +34 -0
  72. data/ext/pg_query/include/catalog/pg_event_trigger.h +51 -0
  73. data/ext/pg_query/include/catalog/pg_event_trigger_d.h +34 -0
  74. data/ext/pg_query/include/catalog/pg_index.h +80 -0
  75. data/ext/pg_query/include/catalog/pg_index_d.h +56 -0
  76. data/ext/pg_query/include/catalog/pg_language.h +67 -0
  77. data/ext/pg_query/include/catalog/pg_language_d.h +39 -0
  78. data/ext/pg_query/include/catalog/pg_namespace.h +59 -0
  79. data/ext/pg_query/include/catalog/pg_namespace_d.h +34 -0
  80. data/ext/pg_query/include/catalog/pg_opclass.h +85 -0
  81. data/ext/pg_query/include/catalog/pg_opclass_d.h +49 -0
  82. data/ext/pg_query/include/catalog/pg_operator.h +102 -0
  83. data/ext/pg_query/include/catalog/pg_operator_d.h +106 -0
  84. data/ext/pg_query/include/catalog/pg_opfamily.h +60 -0
  85. data/ext/pg_query/include/catalog/pg_opfamily_d.h +47 -0
  86. data/ext/pg_query/include/catalog/pg_partitioned_table.h +63 -0
  87. data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +35 -0
  88. data/ext/pg_query/include/catalog/pg_proc.h +211 -0
  89. data/ext/pg_query/include/catalog/pg_proc_d.h +99 -0
  90. data/ext/pg_query/include/catalog/pg_publication.h +115 -0
  91. data/ext/pg_query/include/catalog/pg_publication_d.h +36 -0
  92. data/ext/pg_query/include/catalog/pg_replication_origin.h +57 -0
  93. data/ext/pg_query/include/catalog/pg_replication_origin_d.h +29 -0
  94. data/ext/pg_query/include/catalog/pg_statistic.h +275 -0
  95. data/ext/pg_query/include/catalog/pg_statistic_d.h +194 -0
  96. data/ext/pg_query/include/catalog/pg_statistic_ext.h +74 -0
  97. data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +40 -0
  98. data/ext/pg_query/include/catalog/pg_transform.h +45 -0
  99. data/ext/pg_query/include/catalog/pg_transform_d.h +32 -0
  100. data/ext/pg_query/include/catalog/pg_trigger.h +137 -0
  101. data/ext/pg_query/include/catalog/pg_trigger_d.h +106 -0
  102. data/ext/pg_query/include/catalog/pg_ts_config.h +50 -0
  103. data/ext/pg_query/include/catalog/pg_ts_config_d.h +32 -0
  104. data/ext/pg_query/include/catalog/pg_ts_dict.h +54 -0
  105. data/ext/pg_query/include/catalog/pg_ts_dict_d.h +33 -0
  106. data/ext/pg_query/include/catalog/pg_ts_parser.h +57 -0
  107. data/ext/pg_query/include/catalog/pg_ts_parser_d.h +35 -0
  108. data/ext/pg_query/include/catalog/pg_ts_template.h +48 -0
  109. data/ext/pg_query/include/catalog/pg_ts_template_d.h +32 -0
  110. data/ext/pg_query/include/catalog/pg_type.h +372 -0
  111. data/ext/pg_query/include/catalog/pg_type_d.h +285 -0
  112. data/ext/pg_query/include/catalog/storage.h +48 -0
  113. data/ext/pg_query/include/commands/async.h +54 -0
  114. data/ext/pg_query/include/commands/dbcommands.h +35 -0
  115. data/ext/pg_query/include/commands/defrem.h +173 -0
  116. data/ext/pg_query/include/commands/event_trigger.h +88 -0
  117. data/ext/pg_query/include/commands/explain.h +127 -0
  118. data/ext/pg_query/include/commands/prepare.h +61 -0
  119. data/ext/pg_query/include/commands/tablespace.h +67 -0
  120. data/ext/pg_query/include/commands/trigger.h +277 -0
  121. data/ext/pg_query/include/commands/user.h +37 -0
  122. data/ext/pg_query/include/commands/vacuum.h +293 -0
  123. data/ext/pg_query/include/commands/variable.h +38 -0
  124. data/ext/pg_query/include/common/file_perm.h +56 -0
  125. data/ext/pg_query/include/common/hashfn.h +104 -0
  126. data/ext/pg_query/include/common/ip.h +37 -0
  127. data/ext/pg_query/include/common/keywords.h +33 -0
  128. data/ext/pg_query/include/common/kwlookup.h +44 -0
  129. data/ext/pg_query/include/common/relpath.h +90 -0
  130. data/ext/pg_query/include/common/string.h +19 -0
  131. data/ext/pg_query/include/common/unicode_combining_table.h +196 -0
  132. data/ext/pg_query/include/datatype/timestamp.h +197 -0
  133. data/ext/pg_query/include/executor/execdesc.h +70 -0
  134. data/ext/pg_query/include/executor/executor.h +614 -0
  135. data/ext/pg_query/include/executor/functions.h +41 -0
  136. data/ext/pg_query/include/executor/instrument.h +101 -0
  137. data/ext/pg_query/include/executor/spi.h +175 -0
  138. data/ext/pg_query/include/executor/tablefunc.h +67 -0
  139. data/ext/pg_query/include/executor/tuptable.h +487 -0
  140. data/ext/pg_query/include/fmgr.h +775 -0
  141. data/ext/pg_query/include/funcapi.h +348 -0
  142. data/ext/pg_query/include/getaddrinfo.h +162 -0
  143. data/ext/pg_query/include/jit/jit.h +105 -0
  144. data/ext/pg_query/include/kwlist_d.h +1072 -0
  145. data/ext/pg_query/include/lib/ilist.h +727 -0
  146. data/ext/pg_query/include/lib/pairingheap.h +102 -0
  147. data/ext/pg_query/include/lib/simplehash.h +1059 -0
  148. data/ext/pg_query/include/lib/stringinfo.h +161 -0
  149. data/ext/pg_query/include/libpq/auth.h +29 -0
  150. data/ext/pg_query/include/libpq/crypt.h +46 -0
  151. data/ext/pg_query/include/libpq/hba.h +140 -0
  152. data/ext/pg_query/include/libpq/libpq-be.h +326 -0
  153. data/ext/pg_query/include/libpq/libpq.h +133 -0
  154. data/ext/pg_query/include/libpq/pqcomm.h +208 -0
  155. data/ext/pg_query/include/libpq/pqformat.h +210 -0
  156. data/ext/pg_query/include/libpq/pqsignal.h +42 -0
  157. data/ext/pg_query/include/mb/pg_wchar.h +672 -0
  158. data/ext/pg_query/include/mb/stringinfo_mb.h +24 -0
  159. data/ext/pg_query/include/miscadmin.h +476 -0
  160. data/ext/pg_query/include/nodes/bitmapset.h +122 -0
  161. data/ext/pg_query/include/nodes/execnodes.h +2520 -0
  162. data/ext/pg_query/include/nodes/extensible.h +160 -0
  163. data/ext/pg_query/include/nodes/lockoptions.h +61 -0
  164. data/ext/pg_query/include/nodes/makefuncs.h +108 -0
  165. data/ext/pg_query/include/nodes/memnodes.h +108 -0
  166. data/ext/pg_query/include/nodes/nodeFuncs.h +162 -0
  167. data/ext/pg_query/include/nodes/nodes.h +842 -0
  168. data/ext/pg_query/include/nodes/params.h +170 -0
  169. data/ext/pg_query/include/nodes/parsenodes.h +3579 -0
  170. data/ext/pg_query/include/nodes/pathnodes.h +2556 -0
  171. data/ext/pg_query/include/nodes/pg_list.h +605 -0
  172. data/ext/pg_query/include/nodes/plannodes.h +1251 -0
  173. data/ext/pg_query/include/nodes/primnodes.h +1541 -0
  174. data/ext/pg_query/include/nodes/print.h +34 -0
  175. data/ext/pg_query/include/nodes/tidbitmap.h +75 -0
  176. data/ext/pg_query/include/nodes/value.h +61 -0
  177. data/ext/pg_query/include/optimizer/cost.h +206 -0
  178. data/ext/pg_query/include/optimizer/geqo.h +88 -0
  179. data/ext/pg_query/include/optimizer/geqo_gene.h +45 -0
  180. data/ext/pg_query/include/optimizer/optimizer.h +199 -0
  181. data/ext/pg_query/include/optimizer/paths.h +249 -0
  182. data/ext/pg_query/include/optimizer/planmain.h +119 -0
  183. data/ext/pg_query/include/parser/analyze.h +49 -0
  184. data/ext/pg_query/include/parser/gram.h +1067 -0
  185. data/ext/pg_query/include/parser/gramparse.h +75 -0
  186. data/ext/pg_query/include/parser/kwlist.h +477 -0
  187. data/ext/pg_query/include/parser/parse_agg.h +68 -0
  188. data/ext/pg_query/include/parser/parse_clause.h +54 -0
  189. data/ext/pg_query/include/parser/parse_coerce.h +97 -0
  190. data/ext/pg_query/include/parser/parse_collate.h +27 -0
  191. data/ext/pg_query/include/parser/parse_expr.h +26 -0
  192. data/ext/pg_query/include/parser/parse_func.h +73 -0
  193. data/ext/pg_query/include/parser/parse_node.h +327 -0
  194. data/ext/pg_query/include/parser/parse_oper.h +67 -0
  195. data/ext/pg_query/include/parser/parse_relation.h +123 -0
  196. data/ext/pg_query/include/parser/parse_target.h +46 -0
  197. data/ext/pg_query/include/parser/parse_type.h +60 -0
  198. data/ext/pg_query/include/parser/parser.h +41 -0
  199. data/ext/pg_query/include/parser/parsetree.h +61 -0
  200. data/ext/pg_query/include/parser/scanner.h +152 -0
  201. data/ext/pg_query/include/parser/scansup.h +30 -0
  202. data/ext/pg_query/include/partitioning/partdefs.h +26 -0
  203. data/ext/pg_query/include/pg_config.h +988 -0
  204. data/ext/pg_query/include/pg_config_ext.h +8 -0
  205. data/ext/pg_query/include/pg_config_manual.h +350 -0
  206. data/ext/pg_query/include/pg_config_os.h +8 -0
  207. data/ext/pg_query/include/pg_getopt.h +56 -0
  208. data/ext/pg_query/include/pg_query.h +121 -0
  209. data/ext/pg_query/include/pg_query_enum_defs.c +2454 -0
  210. data/ext/pg_query/include/pg_query_fingerprint_conds.c +875 -0
  211. data/ext/pg_query/include/pg_query_fingerprint_defs.c +12413 -0
  212. data/ext/pg_query/include/pg_query_json_helper.c +61 -0
  213. data/ext/pg_query/include/pg_query_outfuncs_conds.c +686 -0
  214. data/ext/pg_query/include/pg_query_outfuncs_defs.c +2437 -0
  215. data/ext/pg_query/include/pg_query_readfuncs_conds.c +222 -0
  216. data/ext/pg_query/include/pg_query_readfuncs_defs.c +2878 -0
  217. data/ext/pg_query/include/pg_trace.h +17 -0
  218. data/ext/pg_query/include/pgstat.h +1487 -0
  219. data/ext/pg_query/include/pgtime.h +84 -0
  220. data/ext/pg_query/include/pl_gram.h +385 -0
  221. data/ext/pg_query/include/pl_reserved_kwlist.h +52 -0
  222. data/ext/pg_query/include/pl_reserved_kwlist_d.h +114 -0
  223. data/ext/pg_query/include/pl_unreserved_kwlist.h +112 -0
  224. data/ext/pg_query/include/pl_unreserved_kwlist_d.h +246 -0
  225. data/ext/pg_query/include/plerrcodes.h +990 -0
  226. data/ext/pg_query/include/plpgsql.h +1347 -0
  227. data/ext/pg_query/include/port.h +524 -0
  228. data/ext/pg_query/include/port/atomics.h +524 -0
  229. data/ext/pg_query/include/port/atomics/arch-arm.h +26 -0
  230. data/ext/pg_query/include/port/atomics/arch-ppc.h +254 -0
  231. data/ext/pg_query/include/port/atomics/arch-x86.h +252 -0
  232. data/ext/pg_query/include/port/atomics/fallback.h +170 -0
  233. data/ext/pg_query/include/port/atomics/generic-gcc.h +286 -0
  234. data/ext/pg_query/include/port/atomics/generic.h +401 -0
  235. data/ext/pg_query/include/port/pg_bitutils.h +226 -0
  236. data/ext/pg_query/include/port/pg_bswap.h +161 -0
  237. data/ext/pg_query/include/port/pg_crc32c.h +101 -0
  238. data/ext/pg_query/include/portability/instr_time.h +256 -0
  239. data/ext/pg_query/include/postgres.h +764 -0
  240. data/ext/pg_query/include/postgres_ext.h +74 -0
  241. data/ext/pg_query/include/postmaster/autovacuum.h +83 -0
  242. data/ext/pg_query/include/postmaster/bgworker.h +161 -0
  243. data/ext/pg_query/include/postmaster/bgworker_internals.h +64 -0
  244. data/ext/pg_query/include/postmaster/bgwriter.h +45 -0
  245. data/ext/pg_query/include/postmaster/fork_process.h +17 -0
  246. data/ext/pg_query/include/postmaster/interrupt.h +32 -0
  247. data/ext/pg_query/include/postmaster/pgarch.h +39 -0
  248. data/ext/pg_query/include/postmaster/postmaster.h +77 -0
  249. data/ext/pg_query/include/postmaster/syslogger.h +98 -0
  250. data/ext/pg_query/include/postmaster/walwriter.h +21 -0
  251. data/ext/pg_query/include/protobuf-c.h +1106 -0
  252. data/ext/pg_query/include/protobuf-c/protobuf-c.h +1106 -0
  253. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +10846 -0
  254. data/ext/pg_query/include/protobuf/pg_query.pb.h +124718 -0
  255. data/ext/pg_query/include/regex/regex.h +184 -0
  256. data/ext/pg_query/include/replication/logicallauncher.h +31 -0
  257. data/ext/pg_query/include/replication/logicalproto.h +110 -0
  258. data/ext/pg_query/include/replication/logicalworker.h +19 -0
  259. data/ext/pg_query/include/replication/origin.h +73 -0
  260. data/ext/pg_query/include/replication/reorderbuffer.h +467 -0
  261. data/ext/pg_query/include/replication/slot.h +219 -0
  262. data/ext/pg_query/include/replication/syncrep.h +115 -0
  263. data/ext/pg_query/include/replication/walreceiver.h +340 -0
  264. data/ext/pg_query/include/replication/walsender.h +74 -0
  265. data/ext/pg_query/include/rewrite/prs2lock.h +46 -0
  266. data/ext/pg_query/include/rewrite/rewriteHandler.h +40 -0
  267. data/ext/pg_query/include/rewrite/rewriteManip.h +87 -0
  268. data/ext/pg_query/include/rewrite/rewriteSupport.h +26 -0
  269. data/ext/pg_query/include/storage/backendid.h +37 -0
  270. data/ext/pg_query/include/storage/block.h +121 -0
  271. data/ext/pg_query/include/storage/buf.h +46 -0
  272. data/ext/pg_query/include/storage/bufmgr.h +292 -0
  273. data/ext/pg_query/include/storage/bufpage.h +459 -0
  274. data/ext/pg_query/include/storage/condition_variable.h +62 -0
  275. data/ext/pg_query/include/storage/dsm.h +61 -0
  276. data/ext/pg_query/include/storage/dsm_impl.h +75 -0
  277. data/ext/pg_query/include/storage/fd.h +168 -0
  278. data/ext/pg_query/include/storage/ipc.h +81 -0
  279. data/ext/pg_query/include/storage/item.h +19 -0
  280. data/ext/pg_query/include/storage/itemid.h +184 -0
  281. data/ext/pg_query/include/storage/itemptr.h +206 -0
  282. data/ext/pg_query/include/storage/large_object.h +100 -0
  283. data/ext/pg_query/include/storage/latch.h +190 -0
  284. data/ext/pg_query/include/storage/lmgr.h +114 -0
  285. data/ext/pg_query/include/storage/lock.h +612 -0
  286. data/ext/pg_query/include/storage/lockdefs.h +59 -0
  287. data/ext/pg_query/include/storage/lwlock.h +232 -0
  288. data/ext/pg_query/include/storage/lwlocknames.h +51 -0
  289. data/ext/pg_query/include/storage/off.h +57 -0
  290. data/ext/pg_query/include/storage/pg_sema.h +61 -0
  291. data/ext/pg_query/include/storage/pg_shmem.h +90 -0
  292. data/ext/pg_query/include/storage/pmsignal.h +94 -0
  293. data/ext/pg_query/include/storage/predicate.h +87 -0
  294. data/ext/pg_query/include/storage/proc.h +333 -0
  295. data/ext/pg_query/include/storage/proclist_types.h +51 -0
  296. data/ext/pg_query/include/storage/procsignal.h +75 -0
  297. data/ext/pg_query/include/storage/relfilenode.h +99 -0
  298. data/ext/pg_query/include/storage/s_lock.h +1047 -0
  299. data/ext/pg_query/include/storage/sharedfileset.h +45 -0
  300. data/ext/pg_query/include/storage/shm_mq.h +85 -0
  301. data/ext/pg_query/include/storage/shm_toc.h +58 -0
  302. data/ext/pg_query/include/storage/shmem.h +81 -0
  303. data/ext/pg_query/include/storage/sinval.h +153 -0
  304. data/ext/pg_query/include/storage/sinvaladt.h +43 -0
  305. data/ext/pg_query/include/storage/smgr.h +109 -0
  306. data/ext/pg_query/include/storage/spin.h +77 -0
  307. data/ext/pg_query/include/storage/standby.h +91 -0
  308. data/ext/pg_query/include/storage/standbydefs.h +74 -0
  309. data/ext/pg_query/include/storage/sync.h +62 -0
  310. data/ext/pg_query/include/tcop/cmdtag.h +58 -0
  311. data/ext/pg_query/include/tcop/cmdtaglist.h +217 -0
  312. data/ext/pg_query/include/tcop/deparse_utility.h +108 -0
  313. data/ext/pg_query/include/tcop/dest.h +149 -0
  314. data/ext/pg_query/include/tcop/fastpath.h +21 -0
  315. data/ext/pg_query/include/tcop/pquery.h +45 -0
  316. data/ext/pg_query/include/tcop/tcopprot.h +89 -0
  317. data/ext/pg_query/include/tcop/utility.h +108 -0
  318. data/ext/pg_query/include/tsearch/ts_cache.h +98 -0
  319. data/ext/pg_query/include/utils/acl.h +312 -0
  320. data/ext/pg_query/include/utils/aclchk_internal.h +45 -0
  321. data/ext/pg_query/include/utils/array.h +458 -0
  322. data/ext/pg_query/include/utils/builtins.h +127 -0
  323. data/ext/pg_query/include/utils/bytea.h +27 -0
  324. data/ext/pg_query/include/utils/catcache.h +231 -0
  325. data/ext/pg_query/include/utils/date.h +90 -0
  326. data/ext/pg_query/include/utils/datetime.h +343 -0
  327. data/ext/pg_query/include/utils/datum.h +68 -0
  328. data/ext/pg_query/include/utils/dsa.h +123 -0
  329. data/ext/pg_query/include/utils/dynahash.h +19 -0
  330. data/ext/pg_query/include/utils/elog.h +439 -0
  331. data/ext/pg_query/include/utils/errcodes.h +352 -0
  332. data/ext/pg_query/include/utils/expandeddatum.h +159 -0
  333. data/ext/pg_query/include/utils/expandedrecord.h +231 -0
  334. data/ext/pg_query/include/utils/float.h +356 -0
  335. data/ext/pg_query/include/utils/fmgroids.h +2657 -0
  336. data/ext/pg_query/include/utils/fmgrprotos.h +2646 -0
  337. data/ext/pg_query/include/utils/fmgrtab.h +48 -0
  338. data/ext/pg_query/include/utils/guc.h +443 -0
  339. data/ext/pg_query/include/utils/guc_tables.h +272 -0
  340. data/ext/pg_query/include/utils/hsearch.h +149 -0
  341. data/ext/pg_query/include/utils/inval.h +64 -0
  342. data/ext/pg_query/include/utils/lsyscache.h +197 -0
  343. data/ext/pg_query/include/utils/memdebug.h +82 -0
  344. data/ext/pg_query/include/utils/memutils.h +225 -0
  345. data/ext/pg_query/include/utils/numeric.h +76 -0
  346. data/ext/pg_query/include/utils/palloc.h +136 -0
  347. data/ext/pg_query/include/utils/partcache.h +102 -0
  348. data/ext/pg_query/include/utils/pg_locale.h +119 -0
  349. data/ext/pg_query/include/utils/pg_lsn.h +29 -0
  350. data/ext/pg_query/include/utils/pidfile.h +56 -0
  351. data/ext/pg_query/include/utils/plancache.h +235 -0
  352. data/ext/pg_query/include/utils/portal.h +241 -0
  353. data/ext/pg_query/include/utils/probes.h +114 -0
  354. data/ext/pg_query/include/utils/ps_status.h +25 -0
  355. data/ext/pg_query/include/utils/queryenvironment.h +74 -0
  356. data/ext/pg_query/include/utils/regproc.h +28 -0
  357. data/ext/pg_query/include/utils/rel.h +644 -0
  358. data/ext/pg_query/include/utils/relcache.h +151 -0
  359. data/ext/pg_query/include/utils/reltrigger.h +81 -0
  360. data/ext/pg_query/include/utils/resowner.h +86 -0
  361. data/ext/pg_query/include/utils/rls.h +50 -0
  362. data/ext/pg_query/include/utils/ruleutils.h +44 -0
  363. data/ext/pg_query/include/utils/sharedtuplestore.h +61 -0
  364. data/ext/pg_query/include/utils/snapmgr.h +158 -0
  365. data/ext/pg_query/include/utils/snapshot.h +206 -0
  366. data/ext/pg_query/include/utils/sortsupport.h +276 -0
  367. data/ext/pg_query/include/utils/syscache.h +219 -0
  368. data/ext/pg_query/include/utils/timeout.h +88 -0
  369. data/ext/pg_query/include/utils/timestamp.h +116 -0
  370. data/ext/pg_query/include/utils/tuplesort.h +277 -0
  371. data/ext/pg_query/include/utils/tuplestore.h +91 -0
  372. data/ext/pg_query/include/utils/typcache.h +202 -0
  373. data/ext/pg_query/include/utils/tzparser.h +39 -0
  374. data/ext/pg_query/include/utils/varlena.h +39 -0
  375. data/ext/pg_query/include/utils/xml.h +84 -0
  376. data/ext/pg_query/include/xxhash.h +5445 -0
  377. data/ext/pg_query/include/xxhash/xxhash.h +5445 -0
  378. data/ext/pg_query/pg_query.c +104 -0
  379. data/ext/pg_query/pg_query.pb-c.c +37628 -0
  380. data/ext/pg_query/pg_query_deparse.c +9953 -0
  381. data/ext/pg_query/pg_query_fingerprint.c +292 -0
  382. data/ext/pg_query/pg_query_fingerprint.h +8 -0
  383. data/ext/pg_query/pg_query_internal.h +24 -0
  384. data/ext/pg_query/pg_query_json_plpgsql.c +738 -0
  385. data/ext/pg_query/pg_query_json_plpgsql.h +9 -0
  386. data/ext/pg_query/pg_query_normalize.c +437 -0
  387. data/ext/pg_query/pg_query_outfuncs.h +10 -0
  388. data/ext/pg_query/pg_query_outfuncs_json.c +297 -0
  389. data/ext/pg_query/pg_query_outfuncs_protobuf.c +237 -0
  390. data/ext/pg_query/pg_query_parse.c +148 -0
  391. data/ext/pg_query/pg_query_parse_plpgsql.c +460 -0
  392. data/ext/pg_query/pg_query_readfuncs.h +11 -0
  393. data/ext/pg_query/pg_query_readfuncs_protobuf.c +142 -0
  394. data/ext/pg_query/pg_query_ruby.c +108 -12
  395. data/ext/pg_query/pg_query_scan.c +173 -0
  396. data/ext/pg_query/pg_query_split.c +221 -0
  397. data/ext/pg_query/protobuf-c.c +3660 -0
  398. data/ext/pg_query/src_backend_catalog_namespace.c +1051 -0
  399. data/ext/pg_query/src_backend_catalog_pg_proc.c +142 -0
  400. data/ext/pg_query/src_backend_commands_define.c +117 -0
  401. data/ext/pg_query/src_backend_libpq_pqcomm.c +651 -0
  402. data/ext/pg_query/src_backend_nodes_bitmapset.c +513 -0
  403. data/ext/pg_query/src_backend_nodes_copyfuncs.c +6013 -0
  404. data/ext/pg_query/src_backend_nodes_equalfuncs.c +4003 -0
  405. data/ext/pg_query/src_backend_nodes_extensible.c +99 -0
  406. data/ext/pg_query/src_backend_nodes_list.c +922 -0
  407. data/ext/pg_query/src_backend_nodes_makefuncs.c +417 -0
  408. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +1363 -0
  409. data/ext/pg_query/src_backend_nodes_value.c +84 -0
  410. data/ext/pg_query/src_backend_parser_gram.c +47456 -0
  411. data/ext/pg_query/src_backend_parser_parse_expr.c +313 -0
  412. data/ext/pg_query/src_backend_parser_parser.c +497 -0
  413. data/ext/pg_query/src_backend_parser_scan.c +7091 -0
  414. data/ext/pg_query/src_backend_parser_scansup.c +160 -0
  415. data/ext/pg_query/src_backend_postmaster_postmaster.c +2230 -0
  416. data/ext/pg_query/src_backend_storage_ipc_ipc.c +192 -0
  417. data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +370 -0
  418. data/ext/pg_query/src_backend_tcop_postgres.c +776 -0
  419. data/ext/pg_query/src_backend_utils_adt_datum.c +326 -0
  420. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +98 -0
  421. data/ext/pg_query/src_backend_utils_adt_format_type.c +136 -0
  422. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +1683 -0
  423. data/ext/pg_query/src_backend_utils_error_assert.c +74 -0
  424. data/ext/pg_query/src_backend_utils_error_elog.c +1748 -0
  425. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +570 -0
  426. data/ext/pg_query/src_backend_utils_hash_dynahash.c +1086 -0
  427. data/ext/pg_query/src_backend_utils_init_globals.c +168 -0
  428. data/ext/pg_query/src_backend_utils_mb_mbutils.c +839 -0
  429. data/ext/pg_query/src_backend_utils_misc_guc.c +1831 -0
  430. data/ext/pg_query/src_backend_utils_mmgr_aset.c +1560 -0
  431. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +1006 -0
  432. data/ext/pg_query/src_common_encnames.c +158 -0
  433. data/ext/pg_query/src_common_keywords.c +39 -0
  434. data/ext/pg_query/src_common_kwlist_d.h +1081 -0
  435. data/ext/pg_query/src_common_kwlookup.c +91 -0
  436. data/ext/pg_query/src_common_psprintf.c +158 -0
  437. data/ext/pg_query/src_common_string.c +86 -0
  438. data/ext/pg_query/src_common_stringinfo.c +336 -0
  439. data/ext/pg_query/src_common_wchar.c +1651 -0
  440. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +1133 -0
  441. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +877 -0
  442. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +6533 -0
  443. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +107 -0
  444. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +123 -0
  445. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +671 -0
  446. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +255 -0
  447. data/ext/pg_query/src_port_erand48.c +127 -0
  448. data/ext/pg_query/src_port_pg_bitutils.c +246 -0
  449. data/ext/pg_query/src_port_pgsleep.c +69 -0
  450. data/ext/pg_query/src_port_pgstrcasecmp.c +83 -0
  451. data/ext/pg_query/src_port_qsort.c +240 -0
  452. data/ext/pg_query/src_port_random.c +31 -0
  453. data/ext/pg_query/src_port_snprintf.c +1449 -0
  454. data/ext/pg_query/src_port_strerror.c +324 -0
  455. data/ext/pg_query/src_port_strnlen.c +39 -0
  456. data/ext/pg_query/xxhash.c +43 -0
  457. data/lib/pg_query.rb +7 -4
  458. data/lib/pg_query/constants.rb +21 -0
  459. data/lib/pg_query/deparse.rb +16 -1117
  460. data/lib/pg_query/filter_columns.rb +86 -85
  461. data/lib/pg_query/fingerprint.rb +122 -87
  462. data/lib/pg_query/json_field_names.rb +1402 -0
  463. data/lib/pg_query/node.rb +31 -0
  464. data/lib/pg_query/param_refs.rb +42 -37
  465. data/lib/pg_query/parse.rb +220 -200
  466. data/lib/pg_query/parse_error.rb +1 -1
  467. data/lib/pg_query/pg_query_pb.rb +3211 -0
  468. data/lib/pg_query/scan.rb +23 -0
  469. data/lib/pg_query/treewalker.rb +24 -40
  470. data/lib/pg_query/truncate.rb +64 -43
  471. data/lib/pg_query/version.rb +2 -2
  472. metadata +473 -11
  473. data/ext/pg_query/pg_query_ruby.h +0 -10
  474. data/lib/pg_query/deep_dup.rb +0 -16
  475. data/lib/pg_query/deparse/alter_table.rb +0 -42
  476. data/lib/pg_query/deparse/interval.rb +0 -105
  477. data/lib/pg_query/legacy_parsetree.rb +0 -109
  478. data/lib/pg_query/node_types.rb +0 -284
@@ -0,0 +1,8 @@
1
+ /* src/include/pg_config_ext.h. Generated from pg_config_ext.h.in by configure. */
2
+ /*
3
+ * src/include/pg_config_ext.h.in. This is generated manually, not by
4
+ * autoheader, since we want to limit which symbols get defined here.
5
+ */
6
+
7
+ /* Define to the name of a signed 64-bit integer type. */
8
+ #define PG_INT64_TYPE long int
@@ -0,0 +1,350 @@
1
+ /*------------------------------------------------------------------------
2
+ * PostgreSQL manual configuration settings
3
+ *
4
+ * This file contains various configuration symbols and limits. In
5
+ * all cases, changing them is only useful in very rare situations or
6
+ * for developers. If you edit any of these, be sure to do a *full*
7
+ * rebuild (and an initdb if noted).
8
+ *
9
+ * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
10
+ * Portions Copyright (c) 1994, Regents of the University of California
11
+ *
12
+ * src/include/pg_config_manual.h
13
+ *------------------------------------------------------------------------
14
+ */
15
+
16
+ /*
17
+ * This is the default value for wal_segment_size to be used when initdb is run
18
+ * without the --wal-segsize option. It must be a valid segment size.
19
+ */
20
+ #define DEFAULT_XLOG_SEG_SIZE (16*1024*1024)
21
+
22
+ /*
23
+ * Maximum length for identifiers (e.g. table names, column names,
24
+ * function names). Names actually are limited to one less byte than this,
25
+ * because the length must include a trailing zero byte.
26
+ *
27
+ * Changing this requires an initdb.
28
+ */
29
+ #define NAMEDATALEN 64
30
+
31
+ /*
32
+ * Maximum number of arguments to a function.
33
+ *
34
+ * The minimum value is 8 (GIN indexes use 8-argument support functions).
35
+ * The maximum possible value is around 600 (limited by index tuple size in
36
+ * pg_proc's index; BLCKSZ larger than 8K would allow more). Values larger
37
+ * than needed will waste memory and processing time, but do not directly
38
+ * cost disk space.
39
+ *
40
+ * Changing this does not require an initdb, but it does require a full
41
+ * backend recompile (including any user-defined C functions).
42
+ */
43
+ #define FUNC_MAX_ARGS 100
44
+
45
+ /*
46
+ * Maximum number of columns in an index. There is little point in making
47
+ * this anything but a multiple of 32, because the main cost is associated
48
+ * with index tuple header size (see access/itup.h).
49
+ *
50
+ * Changing this requires an initdb.
51
+ */
52
+ #define INDEX_MAX_KEYS 32
53
+
54
+ /*
55
+ * Maximum number of columns in a partition key
56
+ */
57
+ #define PARTITION_MAX_KEYS 32
58
+
59
+ /*
60
+ * Decide whether built-in 8-byte types, including float8, int8, and
61
+ * timestamp, are passed by value. This is on by default if sizeof(Datum) >=
62
+ * 8 (that is, on 64-bit platforms). If sizeof(Datum) < 8 (32-bit platforms),
63
+ * this must be off. We keep this here as an option so that it is easy to
64
+ * test the pass-by-reference code paths on 64-bit platforms.
65
+ *
66
+ * Changing this requires an initdb.
67
+ */
68
+ #if SIZEOF_VOID_P >= 8
69
+ #define USE_FLOAT8_BYVAL 1
70
+ #endif
71
+
72
+ /*
73
+ * When we don't have native spinlocks, we use semaphores to simulate them.
74
+ * Decreasing this value reduces consumption of OS resources; increasing it
75
+ * may improve performance, but supplying a real spinlock implementation is
76
+ * probably far better.
77
+ */
78
+ #define NUM_SPINLOCK_SEMAPHORES 128
79
+
80
+ /*
81
+ * When we have neither spinlocks nor atomic operations support we're
82
+ * implementing atomic operations on top of spinlock on top of semaphores. To
83
+ * be safe against atomic operations while holding a spinlock separate
84
+ * semaphores have to be used.
85
+ */
86
+ #define NUM_ATOMICS_SEMAPHORES 64
87
+
88
+ /*
89
+ * MAXPGPATH: standard size of a pathname buffer in PostgreSQL (hence,
90
+ * maximum usable pathname length is one less).
91
+ *
92
+ * We'd use a standard system header symbol for this, if there weren't
93
+ * so many to choose from: MAXPATHLEN, MAX_PATH, PATH_MAX are all
94
+ * defined by different "standards", and often have different values
95
+ * on the same platform! So we just punt and use a reasonably
96
+ * generous setting here.
97
+ */
98
+ #define MAXPGPATH 1024
99
+
100
+ /*
101
+ * PG_SOMAXCONN: maximum accept-queue length limit passed to
102
+ * listen(2). You'd think we should use SOMAXCONN from
103
+ * <sys/socket.h>, but on many systems that symbol is much smaller
104
+ * than the kernel's actual limit. In any case, this symbol need be
105
+ * twiddled only if you have a kernel that refuses large limit values,
106
+ * rather than silently reducing the value to what it can handle
107
+ * (which is what most if not all Unixen do).
108
+ */
109
+ #define PG_SOMAXCONN 10000
110
+
111
+ /*
112
+ * You can try changing this if you have a machine with bytes of
113
+ * another size, but no guarantee...
114
+ */
115
+ #define BITS_PER_BYTE 8
116
+
117
+ /*
118
+ * Preferred alignment for disk I/O buffers. On some CPUs, copies between
119
+ * user space and kernel space are significantly faster if the user buffer
120
+ * is aligned on a larger-than-MAXALIGN boundary. Ideally this should be
121
+ * a platform-dependent value, but for now we just hard-wire it.
122
+ */
123
+ #define ALIGNOF_BUFFER 32
124
+
125
+ /*
126
+ * If EXEC_BACKEND is defined, the postmaster uses an alternative method for
127
+ * starting subprocesses: Instead of simply using fork(), as is standard on
128
+ * Unix platforms, it uses fork()+exec() or something equivalent on Windows,
129
+ * as well as lots of extra code to bring the required global state to those
130
+ * new processes. This must be enabled on Windows (because there is no
131
+ * fork()). On other platforms, it's only useful for verifying those
132
+ * otherwise Windows-specific code paths.
133
+ */
134
+ #if defined(WIN32) && !defined(__CYGWIN__)
135
+ #define EXEC_BACKEND
136
+ #endif
137
+
138
+ /*
139
+ * USE_POSIX_FADVISE controls whether Postgres will attempt to use the
140
+ * posix_fadvise() kernel call. Usually the automatic configure tests are
141
+ * sufficient, but some older Linux distributions had broken versions of
142
+ * posix_fadvise(). If necessary you can remove the #define here.
143
+ */
144
+ #if HAVE_DECL_POSIX_FADVISE && defined(HAVE_POSIX_FADVISE)
145
+ #define USE_POSIX_FADVISE
146
+ #endif
147
+
148
+ /*
149
+ * USE_PREFETCH code should be compiled only if we have a way to implement
150
+ * prefetching. (This is decoupled from USE_POSIX_FADVISE because there
151
+ * might in future be support for alternative low-level prefetch APIs.
152
+ * If you change this, you probably need to adjust the error message in
153
+ * check_effective_io_concurrency.)
154
+ */
155
+ #ifdef USE_POSIX_FADVISE
156
+ #define USE_PREFETCH
157
+ #endif
158
+
159
+ /*
160
+ * Default and maximum values for backend_flush_after, bgwriter_flush_after
161
+ * and checkpoint_flush_after; measured in blocks. Currently, these are
162
+ * enabled by default if sync_file_range() exists, ie, only on Linux. Perhaps
163
+ * we could also enable by default if we have mmap and msync(MS_ASYNC)?
164
+ */
165
+ #ifdef HAVE_SYNC_FILE_RANGE
166
+ #define DEFAULT_BACKEND_FLUSH_AFTER 0 /* never enabled by default */
167
+ #define DEFAULT_BGWRITER_FLUSH_AFTER 64
168
+ #define DEFAULT_CHECKPOINT_FLUSH_AFTER 32
169
+ #else
170
+ #define DEFAULT_BACKEND_FLUSH_AFTER 0
171
+ #define DEFAULT_BGWRITER_FLUSH_AFTER 0
172
+ #define DEFAULT_CHECKPOINT_FLUSH_AFTER 0
173
+ #endif
174
+ /* upper limit for all three variables */
175
+ #define WRITEBACK_MAX_PENDING_FLUSHES 256
176
+
177
+ /*
178
+ * USE_SSL code should be compiled only when compiling with an SSL
179
+ * implementation. (Currently, only OpenSSL is supported, but we might add
180
+ * more implementations in the future.)
181
+ */
182
+ #ifdef USE_OPENSSL
183
+ #define USE_SSL
184
+ #endif
185
+
186
+ /*
187
+ * This is the default directory in which AF_UNIX socket files are
188
+ * placed. Caution: changing this risks breaking your existing client
189
+ * applications, which are likely to continue to look in the old
190
+ * directory. But if you just hate the idea of sockets in /tmp,
191
+ * here's where to twiddle it. You can also override this at runtime
192
+ * with the postmaster's -k switch.
193
+ *
194
+ * If set to an empty string, then AF_UNIX sockets are not used by default: A
195
+ * server will not create an AF_UNIX socket unless the run-time configuration
196
+ * is changed, a client will connect via TCP/IP by default and will only use
197
+ * an AF_UNIX socket if one is explicitly specified.
198
+ *
199
+ * This is done by default on Windows because there is no good standard
200
+ * location for AF_UNIX sockets and many installations on Windows don't
201
+ * support them yet.
202
+ */
203
+ #ifndef WIN32
204
+ #define DEFAULT_PGSOCKET_DIR "/tmp"
205
+ #else
206
+ #define DEFAULT_PGSOCKET_DIR ""
207
+ #endif
208
+
209
+ /*
210
+ * This is the default event source for Windows event log.
211
+ */
212
+ #define DEFAULT_EVENT_SOURCE "PostgreSQL"
213
+
214
+ /*
215
+ * The random() function is expected to yield values between 0 and
216
+ * MAX_RANDOM_VALUE. Currently, all known implementations yield
217
+ * 0..2^31-1, so we just hardwire this constant. We could do a
218
+ * configure test if it proves to be necessary. CAUTION: Think not to
219
+ * replace this with RAND_MAX. RAND_MAX defines the maximum value of
220
+ * the older rand() function, which is often different from --- and
221
+ * considerably inferior to --- random().
222
+ */
223
+ #define MAX_RANDOM_VALUE PG_INT32_MAX
224
+
225
+ /*
226
+ * On PPC machines, decide whether to use the mutex hint bit in LWARX
227
+ * instructions. Setting the hint bit will slightly improve spinlock
228
+ * performance on POWER6 and later machines, but does nothing before that,
229
+ * and will result in illegal-instruction failures on some pre-POWER4
230
+ * machines. By default we use the hint bit when building for 64-bit PPC,
231
+ * which should be safe in nearly all cases. You might want to override
232
+ * this if you are building 32-bit code for a known-recent PPC machine.
233
+ */
234
+ #ifdef HAVE_PPC_LWARX_MUTEX_HINT /* must have assembler support in any case */
235
+ #if defined(__ppc64__) || defined(__powerpc64__)
236
+ #define USE_PPC_LWARX_MUTEX_HINT
237
+ #endif
238
+ #endif
239
+
240
+ /*
241
+ * On PPC machines, decide whether to use LWSYNC instructions in place of
242
+ * ISYNC and SYNC. This provides slightly better performance, but will
243
+ * result in illegal-instruction failures on some pre-POWER4 machines.
244
+ * By default we use LWSYNC when building for 64-bit PPC, which should be
245
+ * safe in nearly all cases.
246
+ */
247
+ #if defined(__ppc64__) || defined(__powerpc64__)
248
+ #define USE_PPC_LWSYNC
249
+ #endif
250
+
251
+ /*
252
+ * Assumed cache line size. This doesn't affect correctness, but can be used
253
+ * for low-level optimizations. Currently, this is used to pad some data
254
+ * structures in xlog.c, to ensure that highly-contended fields are on
255
+ * different cache lines. Too small a value can hurt performance due to false
256
+ * sharing, while the only downside of too large a value is a few bytes of
257
+ * wasted memory. The default is 128, which should be large enough for all
258
+ * supported platforms.
259
+ */
260
+ #define PG_CACHE_LINE_SIZE 128
261
+
262
+ /*
263
+ *------------------------------------------------------------------------
264
+ * The following symbols are for enabling debugging code, not for
265
+ * controlling user-visible features or resource limits.
266
+ *------------------------------------------------------------------------
267
+ */
268
+
269
+ /*
270
+ * Include Valgrind "client requests", mostly in the memory allocator, so
271
+ * Valgrind understands PostgreSQL memory contexts. This permits detecting
272
+ * memory errors that Valgrind would not detect on a vanilla build. See also
273
+ * src/tools/valgrind.supp. "make installcheck" runs 20-30x longer under
274
+ * Valgrind. Note that USE_VALGRIND slowed older versions of Valgrind by an
275
+ * additional order of magnitude; Valgrind 3.8.1 does not have this problem.
276
+ * The client requests fall in hot code paths, so USE_VALGRIND also slows
277
+ * native execution by a few percentage points.
278
+ *
279
+ * You should normally use MEMORY_CONTEXT_CHECKING with USE_VALGRIND;
280
+ * instrumentation of repalloc() is inferior without it.
281
+ */
282
+ /* #define USE_VALGRIND */
283
+
284
+ /*
285
+ * Define this to cause pfree()'d memory to be cleared immediately, to
286
+ * facilitate catching bugs that refer to already-freed values.
287
+ * Right now, this gets defined automatically if --enable-cassert.
288
+ */
289
+ #ifdef USE_ASSERT_CHECKING
290
+ #define CLOBBER_FREED_MEMORY
291
+ #endif
292
+
293
+ /*
294
+ * Define this to check memory allocation errors (scribbling on more
295
+ * bytes than were allocated). Right now, this gets defined
296
+ * automatically if --enable-cassert or USE_VALGRIND.
297
+ */
298
+ #if defined(USE_ASSERT_CHECKING) || defined(USE_VALGRIND)
299
+ #define MEMORY_CONTEXT_CHECKING
300
+ #endif
301
+
302
+ /*
303
+ * Define this to cause palloc()'d memory to be filled with random data, to
304
+ * facilitate catching code that depends on the contents of uninitialized
305
+ * memory. Caution: this is horrendously expensive.
306
+ */
307
+ /* #define RANDOMIZE_ALLOCATED_MEMORY */
308
+
309
+ /*
310
+ * Define this to force all parse and plan trees to be passed through
311
+ * copyObject(), to facilitate catching errors and omissions in
312
+ * copyObject().
313
+ */
314
+ /* #define COPY_PARSE_PLAN_TREES */
315
+
316
+ /*
317
+ * Define this to force all parse and plan trees to be passed through
318
+ * outfuncs.c/readfuncs.c, to facilitate catching errors and omissions in
319
+ * those modules.
320
+ */
321
+ /* #define WRITE_READ_PARSE_PLAN_TREES */
322
+
323
+ /*
324
+ * Define this to force all raw parse trees for DML statements to be scanned
325
+ * by raw_expression_tree_walker(), to facilitate catching errors and
326
+ * omissions in that function.
327
+ */
328
+ /* #define RAW_EXPRESSION_COVERAGE_TEST */
329
+
330
+ /*
331
+ * Enable debugging print statements for lock-related operations.
332
+ */
333
+ /* #define LOCK_DEBUG */
334
+
335
+ /*
336
+ * Enable debugging print statements for WAL-related operations; see
337
+ * also the wal_debug GUC var.
338
+ */
339
+ /* #define WAL_DEBUG */
340
+
341
+ /*
342
+ * Enable tracing of resource consumption during sort operations;
343
+ * see also the trace_sort GUC var. For 8.1 this is enabled by default.
344
+ */
345
+ #define TRACE_SORT 1
346
+
347
+ /*
348
+ * Enable tracing of syncscan operations (see also the trace_syncscan GUC var).
349
+ */
350
+ /* #define TRACE_SYNCSCAN */
@@ -0,0 +1,8 @@
1
+ /* src/include/port/darwin.h */
2
+
3
+ #define __darwin__ 1
4
+
5
+ #if HAVE_DECL_F_FULLFSYNC /* not present before macOS 10.3 */
6
+ #define HAVE_FSYNC_WRITETHROUGH
7
+
8
+ #endif
@@ -0,0 +1,56 @@
1
+ /*
2
+ * Postgres files that use getopt(3) always include this file.
3
+ * We must cope with three different scenarios:
4
+ * 1. We're using the platform's getopt(), and we should just import the
5
+ * appropriate declarations.
6
+ * 2. The platform lacks getopt(), and we must declare everything.
7
+ * 3. The platform has getopt(), but we're not using it because we don't
8
+ * like its behavior. The declarations we make here must be compatible
9
+ * with both the platform's getopt() and our src/port/getopt.c.
10
+ *
11
+ * Portions Copyright (c) 1987, 1993, 1994
12
+ * The Regents of the University of California. All rights reserved.
13
+ *
14
+ * Portions Copyright (c) 2003-2020, PostgreSQL Global Development Group
15
+ *
16
+ * src/include/pg_getopt.h
17
+ */
18
+ #ifndef PG_GETOPT_H
19
+ #define PG_GETOPT_H
20
+
21
+ /* POSIX says getopt() is provided by unistd.h */
22
+ #include <unistd.h>
23
+
24
+ /* rely on the system's getopt.h if present */
25
+ #ifdef HAVE_GETOPT_H
26
+ #include <getopt.h>
27
+ #endif
28
+
29
+ /*
30
+ * If we have <getopt.h>, assume it declares these variables, else do that
31
+ * ourselves. (We used to just declare them unconditionally, but Cygwin
32
+ * doesn't like that.)
33
+ */
34
+ #ifndef HAVE_GETOPT_H
35
+
36
+ extern char *optarg;
37
+ extern int optind;
38
+ extern int opterr;
39
+ extern int optopt;
40
+
41
+ #endif /* HAVE_GETOPT_H */
42
+
43
+ /*
44
+ * Some platforms have optreset but fail to declare it in <getopt.h>, so cope.
45
+ * Cygwin, however, doesn't like this either.
46
+ */
47
+ #if defined(HAVE_INT_OPTRESET) && !defined(__CYGWIN__)
48
+ extern int optreset;
49
+ #endif
50
+
51
+ /* Provide getopt() declaration if the platform doesn't have it */
52
+ #ifndef HAVE_GETOPT
53
+ extern int getopt(int nargc, char *const *nargv, const char *ostr);
54
+ #endif
55
+
56
+ #endif /* PG_GETOPT_H */
@@ -0,0 +1,121 @@
1
+ #ifndef PG_QUERY_H
2
+ #define PG_QUERY_H
3
+
4
+ #include <stdint.h>
5
+
6
+ typedef struct {
7
+ char* message; // exception message
8
+ char* funcname; // source function of exception (e.g. SearchSysCache)
9
+ char* filename; // source of exception (e.g. parse.l)
10
+ int lineno; // source of exception (e.g. 104)
11
+ int cursorpos; // char in query at which exception occurred
12
+ char* context; // additional context (optional, can be NULL)
13
+ } PgQueryError;
14
+
15
+ typedef struct {
16
+ unsigned int len;
17
+ char* data;
18
+ } PgQueryProtobuf;
19
+
20
+ typedef struct {
21
+ PgQueryProtobuf pbuf;
22
+ char* stderr_buffer;
23
+ PgQueryError* error;
24
+ } PgQueryScanResult;
25
+
26
+ typedef struct {
27
+ char* parse_tree;
28
+ char* stderr_buffer;
29
+ PgQueryError* error;
30
+ } PgQueryParseResult;
31
+
32
+ typedef struct {
33
+ PgQueryProtobuf parse_tree;
34
+ char* stderr_buffer;
35
+ PgQueryError* error;
36
+ } PgQueryProtobufParseResult;
37
+
38
+ typedef struct {
39
+ int stmt_location;
40
+ int stmt_len;
41
+ } PgQuerySplitStmt;
42
+
43
+ typedef struct {
44
+ PgQuerySplitStmt **stmts;
45
+ int n_stmts;
46
+ char* stderr_buffer;
47
+ PgQueryError* error;
48
+ } PgQuerySplitResult;
49
+
50
+ typedef struct {
51
+ char* query;
52
+ PgQueryError* error;
53
+ } PgQueryDeparseResult;
54
+
55
+ typedef struct {
56
+ char* plpgsql_funcs;
57
+ PgQueryError* error;
58
+ } PgQueryPlpgsqlParseResult;
59
+
60
+ typedef struct {
61
+ uint64_t fingerprint;
62
+ char* fingerprint_str;
63
+ char* stderr_buffer;
64
+ PgQueryError* error;
65
+ } PgQueryFingerprintResult;
66
+
67
+ typedef struct {
68
+ char* normalized_query;
69
+ PgQueryError* error;
70
+ } PgQueryNormalizeResult;
71
+
72
+ #ifdef __cplusplus
73
+ extern "C" {
74
+ #endif
75
+
76
+ PgQueryNormalizeResult pg_query_normalize(const char* input);
77
+ PgQueryScanResult pg_query_scan(const char* input);
78
+ PgQueryParseResult pg_query_parse(const char* input);
79
+ PgQueryProtobufParseResult pg_query_parse_protobuf(const char* input);
80
+ PgQueryPlpgsqlParseResult pg_query_parse_plpgsql(const char* input);
81
+
82
+ PgQueryFingerprintResult pg_query_fingerprint(const char* input);
83
+
84
+ // Use pg_query_split_with_scanner when you need to split statements that may
85
+ // contain parse errors, otherwise pg_query_split_with_parser is recommended
86
+ // for improved accuracy due the parser adding additional token handling.
87
+ //
88
+ // Note that we try to support special cases like comments, strings containing
89
+ // ";" on both, as well as oddities like "CREATE RULE .. (SELECT 1; SELECT 2);"
90
+ // which is treated as as single statement.
91
+ PgQuerySplitResult pg_query_split_with_scanner(const char *input);
92
+ PgQuerySplitResult pg_query_split_with_parser(const char *input);
93
+
94
+ PgQueryDeparseResult pg_query_deparse_protobuf(PgQueryProtobuf parse_tree);
95
+
96
+ void pg_query_free_normalize_result(PgQueryNormalizeResult result);
97
+ void pg_query_free_scan_result(PgQueryScanResult result);
98
+ void pg_query_free_parse_result(PgQueryParseResult result);
99
+ void pg_query_free_split_result(PgQuerySplitResult result);
100
+ void pg_query_free_deparse_result(PgQueryDeparseResult result);
101
+ void pg_query_free_protobuf_parse_result(PgQueryProtobufParseResult result);
102
+ void pg_query_free_plpgsql_parse_result(PgQueryPlpgsqlParseResult result);
103
+ void pg_query_free_fingerprint_result(PgQueryFingerprintResult result);
104
+
105
+ // Optional, cleans up the top-level memory context (automatically done for threads that exit)
106
+ void pg_query_exit(void);
107
+
108
+ // Postgres version information
109
+ #define PG_VERSION "13.2"
110
+ #define PG_MAJORVERSION "13"
111
+ #define PG_VERSION_NUM 130002
112
+
113
+ // Deprecated APIs below
114
+
115
+ void pg_query_init(void); // Deprecated as of 9.5-1.4.1, this is now run automatically as needed
116
+
117
+ #ifdef __cplusplus
118
+ }
119
+ #endif
120
+
121
+ #endif