pg_query 2.2.0 → 6.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 (895) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +86 -0
  3. data/README.md +57 -31
  4. data/Rakefile +5 -6
  5. data/ext/pg_query/ext_symbols_freebsd.sym +1 -0
  6. data/ext/pg_query/ext_symbols_freebsd_with_ruby_abi_version.sym +2 -0
  7. data/ext/pg_query/ext_symbols_openbsd.sym +1 -0
  8. data/ext/pg_query/ext_symbols_openbsd_with_ruby_abi_version.sym +2 -0
  9. data/ext/pg_query/ext_symbols_with_ruby_abi_version.sym +2 -0
  10. data/ext/pg_query/extconf.rb +33 -9
  11. data/ext/pg_query/include/pg_query.h +30 -4
  12. data/ext/pg_query/include/pg_query_enum_defs.c +839 -290
  13. data/ext/pg_query/include/pg_query_fingerprint_conds.c +638 -481
  14. data/ext/pg_query/include/pg_query_fingerprint_defs.c +6786 -4193
  15. data/ext/pg_query/include/pg_query_outfuncs_conds.c +450 -330
  16. data/ext/pg_query/include/pg_query_outfuncs_defs.c +1489 -1044
  17. data/ext/pg_query/include/pg_query_readfuncs_conds.c +157 -118
  18. data/ext/pg_query/include/pg_query_readfuncs_defs.c +1933 -1410
  19. data/ext/pg_query/include/postgres/access/amapi.h +303 -0
  20. data/ext/pg_query/include/postgres/access/attmap.h +54 -0
  21. data/ext/pg_query/include/postgres/access/attnum.h +64 -0
  22. data/ext/pg_query/include/postgres/access/brin_internal.h +116 -0
  23. data/ext/pg_query/include/postgres/access/brin_tuple.h +112 -0
  24. data/ext/pg_query/include/postgres/access/clog.h +62 -0
  25. data/ext/pg_query/include/postgres/access/commit_ts.h +73 -0
  26. data/ext/pg_query/include/postgres/access/detoast.h +82 -0
  27. data/ext/pg_query/include/postgres/access/genam.h +246 -0
  28. data/ext/pg_query/include/postgres/access/gin.h +91 -0
  29. data/ext/pg_query/include/postgres/access/htup.h +89 -0
  30. data/ext/pg_query/include/postgres/access/htup_details.h +811 -0
  31. data/ext/pg_query/include/postgres/access/itup.h +170 -0
  32. data/ext/pg_query/include/postgres/access/parallel.h +81 -0
  33. data/ext/pg_query/include/postgres/access/printtup.h +35 -0
  34. data/ext/pg_query/include/postgres/access/relation.h +28 -0
  35. data/ext/pg_query/include/postgres/access/relscan.h +191 -0
  36. data/ext/pg_query/include/postgres/access/rmgr.h +62 -0
  37. data/ext/pg_query/include/postgres/access/rmgrlist.h +49 -0
  38. data/ext/pg_query/include/postgres/access/sdir.h +67 -0
  39. data/ext/pg_query/include/postgres/access/skey.h +151 -0
  40. data/ext/pg_query/include/postgres/access/slru.h +218 -0
  41. data/ext/pg_query/include/postgres/access/stratnum.h +85 -0
  42. data/ext/pg_query/include/postgres/access/sysattr.h +29 -0
  43. data/ext/pg_query/include/postgres/access/table.h +28 -0
  44. data/ext/pg_query/include/postgres/access/tableam.h +2110 -0
  45. data/ext/pg_query/include/postgres/access/tidstore.h +50 -0
  46. data/ext/pg_query/include/postgres/access/toast_compression.h +73 -0
  47. data/ext/pg_query/include/postgres/access/transam.h +418 -0
  48. data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
  49. data/ext/pg_query/include/postgres/access/tupconvert.h +54 -0
  50. data/ext/pg_query/include/postgres/access/tupdesc.h +154 -0
  51. data/ext/pg_query/include/postgres/access/tupmacs.h +207 -0
  52. data/ext/pg_query/include/postgres/access/twophase.h +65 -0
  53. data/ext/pg_query/include/postgres/access/xact.h +530 -0
  54. data/ext/pg_query/include/postgres/access/xlog.h +310 -0
  55. data/ext/pg_query/include/postgres/access/xlog_internal.h +405 -0
  56. data/ext/pg_query/include/postgres/access/xlogbackup.h +43 -0
  57. data/ext/pg_query/include/postgres/access/xlogdefs.h +82 -0
  58. data/ext/pg_query/include/postgres/access/xlogprefetcher.h +55 -0
  59. data/ext/pg_query/include/postgres/access/xlogreader.h +444 -0
  60. data/ext/pg_query/include/postgres/access/xlogrecord.h +248 -0
  61. data/ext/pg_query/include/postgres/access/xlogrecovery.h +158 -0
  62. data/ext/pg_query/include/postgres/archive/archive_module.h +67 -0
  63. data/ext/pg_query/include/postgres/c.h +1374 -0
  64. data/ext/pg_query/include/postgres/catalog/catalog.h +47 -0
  65. data/ext/pg_query/include/postgres/catalog/catversion.h +62 -0
  66. data/ext/pg_query/include/postgres/catalog/dependency.h +228 -0
  67. data/ext/pg_query/include/postgres/catalog/genbki.h +149 -0
  68. data/ext/pg_query/include/postgres/catalog/index.h +218 -0
  69. data/ext/pg_query/include/postgres/catalog/indexing.h +54 -0
  70. data/ext/pg_query/include/postgres/catalog/namespace.h +189 -0
  71. data/ext/pg_query/include/postgres/catalog/objectaccess.h +267 -0
  72. data/ext/pg_query/include/postgres/catalog/objectaddress.h +93 -0
  73. data/ext/pg_query/include/postgres/catalog/pg_aggregate.h +182 -0
  74. data/ext/pg_query/include/postgres/catalog/pg_aggregate_d.h +78 -0
  75. data/ext/pg_query/include/postgres/catalog/pg_am.h +66 -0
  76. data/ext/pg_query/include/postgres/catalog/pg_am_d.h +47 -0
  77. data/ext/pg_query/include/postgres/catalog/pg_attribute.h +240 -0
  78. data/ext/pg_query/include/postgres/catalog/pg_attribute_d.h +62 -0
  79. data/ext/pg_query/include/postgres/catalog/pg_authid.h +66 -0
  80. data/ext/pg_query/include/postgres/catalog/pg_authid_d.h +60 -0
  81. data/ext/pg_query/include/postgres/catalog/pg_class.h +235 -0
  82. data/ext/pg_query/include/postgres/catalog/pg_class_d.h +134 -0
  83. data/ext/pg_query/include/postgres/catalog/pg_collation.h +106 -0
  84. data/ext/pg_query/include/postgres/catalog/pg_collation_d.h +66 -0
  85. data/ext/pg_query/include/postgres/catalog/pg_constraint.h +278 -0
  86. data/ext/pg_query/include/postgres/catalog/pg_constraint_d.h +74 -0
  87. data/ext/pg_query/include/postgres/catalog/pg_control.h +260 -0
  88. data/ext/pg_query/include/postgres/catalog/pg_conversion.h +79 -0
  89. data/ext/pg_query/include/postgres/catalog/pg_conversion_d.h +38 -0
  90. data/ext/pg_query/include/postgres/catalog/pg_database.h +129 -0
  91. data/ext/pg_query/include/postgres/catalog/pg_database_d.h +53 -0
  92. data/ext/pg_query/include/postgres/catalog/pg_depend.h +77 -0
  93. data/ext/pg_query/include/postgres/catalog/pg_depend_d.h +36 -0
  94. data/ext/pg_query/include/postgres/catalog/pg_event_trigger.h +60 -0
  95. data/ext/pg_query/include/postgres/catalog/pg_event_trigger_d.h +36 -0
  96. data/ext/pg_query/include/postgres/catalog/pg_index.h +92 -0
  97. data/ext/pg_query/include/postgres/catalog/pg_index_d.h +59 -0
  98. data/ext/pg_query/include/postgres/catalog/pg_language.h +75 -0
  99. data/ext/pg_query/include/postgres/catalog/pg_language_d.h +41 -0
  100. data/ext/pg_query/include/postgres/catalog/pg_namespace.h +67 -0
  101. data/ext/pg_query/include/postgres/catalog/pg_namespace_d.h +36 -0
  102. data/ext/pg_query/include/postgres/catalog/pg_opclass.h +91 -0
  103. data/ext/pg_query/include/postgres/catalog/pg_opclass_d.h +51 -0
  104. data/ext/pg_query/include/postgres/catalog/pg_operator.h +124 -0
  105. data/ext/pg_query/include/postgres/catalog/pg_operator_d.h +142 -0
  106. data/ext/pg_query/include/postgres/catalog/pg_opfamily.h +67 -0
  107. data/ext/pg_query/include/postgres/catalog/pg_opfamily_d.h +51 -0
  108. data/ext/pg_query/include/postgres/catalog/pg_partitioned_table.h +76 -0
  109. data/ext/pg_query/include/postgres/catalog/pg_partitioned_table_d.h +36 -0
  110. data/ext/pg_query/include/postgres/catalog/pg_proc.h +223 -0
  111. data/ext/pg_query/include/postgres/catalog/pg_proc_d.h +101 -0
  112. data/ext/pg_query/include/postgres/catalog/pg_publication.h +161 -0
  113. data/ext/pg_query/include/postgres/catalog/pg_publication_d.h +38 -0
  114. data/ext/pg_query/include/postgres/catalog/pg_replication_origin.h +65 -0
  115. data/ext/pg_query/include/postgres/catalog/pg_replication_origin_d.h +33 -0
  116. data/ext/pg_query/include/postgres/catalog/pg_statistic.h +288 -0
  117. data/ext/pg_query/include/postgres/catalog/pg_statistic_d.h +199 -0
  118. data/ext/pg_query/include/postgres/catalog/pg_statistic_ext.h +91 -0
  119. data/ext/pg_query/include/postgres/catalog/pg_statistic_ext_d.h +45 -0
  120. data/ext/pg_query/include/postgres/catalog/pg_transform.h +51 -0
  121. data/ext/pg_query/include/postgres/catalog/pg_transform_d.h +34 -0
  122. data/ext/pg_query/include/postgres/catalog/pg_trigger.h +153 -0
  123. data/ext/pg_query/include/postgres/catalog/pg_trigger_d.h +109 -0
  124. data/ext/pg_query/include/postgres/catalog/pg_ts_config.h +56 -0
  125. data/ext/pg_query/include/postgres/catalog/pg_ts_config_d.h +34 -0
  126. data/ext/pg_query/include/postgres/catalog/pg_ts_dict.h +62 -0
  127. data/ext/pg_query/include/postgres/catalog/pg_ts_dict_d.h +35 -0
  128. data/ext/pg_query/include/postgres/catalog/pg_ts_parser.h +63 -0
  129. data/ext/pg_query/include/postgres/catalog/pg_ts_parser_d.h +37 -0
  130. data/ext/pg_query/include/postgres/catalog/pg_ts_template.h +54 -0
  131. data/ext/pg_query/include/postgres/catalog/pg_ts_template_d.h +34 -0
  132. data/ext/pg_query/include/postgres/catalog/pg_type.h +407 -0
  133. data/ext/pg_query/include/postgres/catalog/pg_type_d.h +324 -0
  134. data/ext/pg_query/include/postgres/catalog/storage.h +50 -0
  135. data/ext/pg_query/include/postgres/catalog/syscache_ids.h +104 -0
  136. data/ext/pg_query/include/postgres/commands/async.h +49 -0
  137. data/ext/pg_query/include/postgres/commands/dbcommands.h +37 -0
  138. data/ext/pg_query/include/postgres/commands/defrem.h +161 -0
  139. data/ext/pg_query/include/postgres/commands/event_trigger.h +97 -0
  140. data/ext/pg_query/include/postgres/commands/explain.h +145 -0
  141. data/ext/pg_query/include/postgres/commands/prepare.h +61 -0
  142. data/ext/pg_query/include/postgres/commands/tablespace.h +69 -0
  143. data/ext/pg_query/include/postgres/commands/trigger.h +288 -0
  144. data/ext/pg_query/include/postgres/commands/user.h +43 -0
  145. data/ext/pg_query/include/postgres/commands/vacuum.h +388 -0
  146. data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
  147. data/ext/pg_query/include/postgres/common/file_perm.h +56 -0
  148. data/ext/pg_query/include/postgres/common/file_utils.h +65 -0
  149. data/ext/pg_query/include/postgres/common/hashfn.h +119 -0
  150. data/ext/pg_query/include/postgres/common/hashfn_unstable.h +407 -0
  151. data/ext/pg_query/include/postgres/common/int.h +512 -0
  152. data/ext/pg_query/include/postgres/common/keywords.h +29 -0
  153. data/ext/pg_query/include/postgres/common/kwlookup.h +44 -0
  154. data/ext/pg_query/include/postgres/common/pg_prng.h +62 -0
  155. data/ext/pg_query/include/postgres/common/relpath.h +97 -0
  156. data/ext/pg_query/include/postgres/common/scram-common.h +70 -0
  157. data/ext/pg_query/include/postgres/common/sha2.h +32 -0
  158. data/ext/pg_query/include/postgres/common/string.h +44 -0
  159. data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +124 -0
  160. data/ext/pg_query/include/postgres/common/unicode_nonspacing_table.h +326 -0
  161. data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5261 -0
  162. data/ext/pg_query/include/postgres/copyfuncs.switch.c +989 -0
  163. data/ext/pg_query/include/postgres/datatype/timestamp.h +269 -0
  164. data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3310 -0
  165. data/ext/pg_query/include/postgres/equalfuncs.switch.c +836 -0
  166. data/ext/pg_query/include/postgres/executor/execdesc.h +70 -0
  167. data/ext/pg_query/include/postgres/executor/executor.h +681 -0
  168. data/ext/pg_query/include/postgres/executor/functions.h +56 -0
  169. data/ext/pg_query/include/postgres/executor/instrument.h +120 -0
  170. data/ext/pg_query/include/postgres/executor/spi.h +207 -0
  171. data/ext/pg_query/include/postgres/executor/tablefunc.h +67 -0
  172. data/ext/pg_query/include/postgres/executor/tuptable.h +523 -0
  173. data/ext/pg_query/include/postgres/fmgr.h +800 -0
  174. data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
  175. data/ext/pg_query/include/postgres/funcapi.h +360 -0
  176. data/ext/pg_query/include/postgres/gram.h +1168 -0
  177. data/ext/pg_query/include/postgres/gramparse.h +75 -0
  178. data/ext/pg_query/include/postgres/jit/jit.h +106 -0
  179. data/ext/pg_query/include/postgres/kwlist_d.h +1164 -0
  180. data/ext/pg_query/include/postgres/lib/dshash.h +130 -0
  181. data/ext/pg_query/include/postgres/lib/ilist.h +1159 -0
  182. data/ext/pg_query/include/postgres/lib/pairingheap.h +102 -0
  183. data/ext/pg_query/include/postgres/lib/simplehash.h +1206 -0
  184. data/ext/pg_query/include/postgres/lib/sort_template.h +445 -0
  185. data/ext/pg_query/include/postgres/lib/stringinfo.h +243 -0
  186. data/ext/pg_query/include/postgres/libpq/auth.h +37 -0
  187. data/ext/pg_query/include/postgres/libpq/crypt.h +47 -0
  188. data/ext/pg_query/include/postgres/libpq/hba.h +186 -0
  189. data/ext/pg_query/include/postgres/libpq/libpq-be.h +361 -0
  190. data/ext/pg_query/include/postgres/libpq/libpq.h +143 -0
  191. data/ext/pg_query/include/postgres/libpq/pqcomm.h +169 -0
  192. data/ext/pg_query/include/postgres/libpq/pqformat.h +209 -0
  193. data/ext/pg_query/include/postgres/libpq/pqsignal.h +54 -0
  194. data/ext/pg_query/include/postgres/libpq/protocol.h +89 -0
  195. data/ext/pg_query/include/postgres/libpq/sasl.h +136 -0
  196. data/ext/pg_query/include/postgres/libpq/scram.h +37 -0
  197. data/ext/pg_query/include/postgres/mb/pg_wchar.h +793 -0
  198. data/ext/pg_query/include/postgres/mb/stringinfo_mb.h +24 -0
  199. data/ext/pg_query/include/postgres/miscadmin.h +527 -0
  200. data/ext/pg_query/include/postgres/nodes/bitmapset.h +140 -0
  201. data/ext/pg_query/include/postgres/nodes/execnodes.h +2855 -0
  202. data/ext/pg_query/include/postgres/nodes/extensible.h +164 -0
  203. data/ext/pg_query/include/postgres/nodes/lockoptions.h +61 -0
  204. data/ext/pg_query/include/postgres/nodes/makefuncs.h +127 -0
  205. data/ext/pg_query/include/postgres/nodes/memnodes.h +152 -0
  206. data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
  207. data/ext/pg_query/include/postgres/nodes/nodeFuncs.h +222 -0
  208. data/ext/pg_query/include/postgres/nodes/nodes.h +435 -0
  209. data/ext/pg_query/include/postgres/nodes/nodetags.h +491 -0
  210. data/ext/pg_query/include/postgres/nodes/params.h +170 -0
  211. data/ext/pg_query/include/postgres/nodes/parsenodes.h +4233 -0
  212. data/ext/pg_query/include/postgres/nodes/pathnodes.h +3438 -0
  213. data/ext/pg_query/include/postgres/nodes/pg_list.h +686 -0
  214. data/ext/pg_query/include/postgres/nodes/plannodes.h +1593 -0
  215. data/ext/pg_query/include/postgres/nodes/primnodes.h +2339 -0
  216. data/ext/pg_query/include/postgres/nodes/print.h +34 -0
  217. data/ext/pg_query/include/postgres/nodes/queryjumble.h +86 -0
  218. data/ext/pg_query/include/postgres/nodes/replnodes.h +132 -0
  219. data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
  220. data/ext/pg_query/include/postgres/nodes/tidbitmap.h +75 -0
  221. data/ext/pg_query/include/postgres/nodes/value.h +90 -0
  222. data/ext/pg_query/include/postgres/optimizer/cost.h +216 -0
  223. data/ext/pg_query/include/postgres/optimizer/geqo.h +90 -0
  224. data/ext/pg_query/include/postgres/optimizer/geqo_gene.h +45 -0
  225. data/ext/pg_query/include/postgres/optimizer/optimizer.h +205 -0
  226. data/ext/pg_query/include/postgres/optimizer/paths.h +271 -0
  227. data/ext/pg_query/include/postgres/optimizer/planmain.h +123 -0
  228. data/ext/pg_query/include/postgres/parser/analyze.h +66 -0
  229. data/ext/pg_query/include/postgres/parser/kwlist.h +518 -0
  230. data/ext/pg_query/include/postgres/parser/parse_agg.h +65 -0
  231. data/ext/pg_query/include/postgres/parser/parse_coerce.h +105 -0
  232. data/ext/pg_query/include/postgres/parser/parse_expr.h +25 -0
  233. data/ext/pg_query/include/postgres/parser/parse_func.h +74 -0
  234. data/ext/pg_query/include/postgres/parser/parse_node.h +358 -0
  235. data/ext/pg_query/include/postgres/parser/parse_oper.h +68 -0
  236. data/ext/pg_query/include/postgres/parser/parse_relation.h +129 -0
  237. data/ext/pg_query/include/postgres/parser/parse_type.h +61 -0
  238. data/ext/pg_query/include/postgres/parser/parser.h +68 -0
  239. data/ext/pg_query/include/postgres/parser/parsetree.h +61 -0
  240. data/ext/pg_query/include/postgres/parser/scanner.h +152 -0
  241. data/ext/pg_query/include/postgres/parser/scansup.h +27 -0
  242. data/ext/pg_query/include/postgres/partitioning/partdefs.h +26 -0
  243. data/ext/pg_query/include/postgres/pg_config.h +985 -0
  244. data/ext/pg_query/include/postgres/pg_config_manual.h +385 -0
  245. data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
  246. data/ext/pg_query/include/postgres/pg_getopt.h +56 -0
  247. data/ext/pg_query/include/postgres/pg_trace.h +17 -0
  248. data/ext/pg_query/include/postgres/pgstat.h +780 -0
  249. data/ext/pg_query/include/postgres/pgtime.h +94 -0
  250. data/ext/pg_query/include/postgres/pl_gram.h +385 -0
  251. data/ext/pg_query/include/postgres/pl_reserved_kwlist.h +52 -0
  252. data/ext/pg_query/include/postgres/pl_reserved_kwlist_d.h +114 -0
  253. data/ext/pg_query/include/postgres/pl_unreserved_kwlist.h +112 -0
  254. data/ext/pg_query/include/postgres/pl_unreserved_kwlist_d.h +246 -0
  255. data/ext/pg_query/include/postgres/plerrcodes.h +998 -0
  256. data/ext/pg_query/include/postgres/plpgsql.h +1342 -0
  257. data/ext/pg_query/include/postgres/port/atomics/arch-arm.h +32 -0
  258. data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
  259. data/ext/pg_query/include/postgres/port/atomics/arch-ppc.h +256 -0
  260. data/ext/pg_query/include/postgres/port/atomics/arch-x86.h +254 -0
  261. data/ext/pg_query/include/postgres/port/atomics/fallback.h +170 -0
  262. data/ext/pg_query/include/postgres/port/atomics/generic-gcc.h +323 -0
  263. data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +119 -0
  264. data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +121 -0
  265. data/ext/pg_query/include/postgres/port/atomics/generic.h +437 -0
  266. data/ext/pg_query/include/postgres/port/atomics.h +606 -0
  267. data/ext/pg_query/include/postgres/port/pg_bitutils.h +421 -0
  268. data/ext/pg_query/include/postgres/port/pg_bswap.h +161 -0
  269. data/ext/pg_query/include/postgres/port/pg_crc32c.h +110 -0
  270. data/ext/pg_query/include/postgres/port/pg_iovec.h +117 -0
  271. data/ext/pg_query/include/postgres/port/simd.h +422 -0
  272. data/ext/pg_query/include/postgres/port/win32/arpa/inet.h +3 -0
  273. data/ext/pg_query/include/postgres/port/win32/dlfcn.h +1 -0
  274. data/ext/pg_query/include/postgres/port/win32/grp.h +1 -0
  275. data/ext/pg_query/include/postgres/port/win32/netdb.h +7 -0
  276. data/ext/pg_query/include/postgres/port/win32/netinet/in.h +3 -0
  277. data/ext/pg_query/include/postgres/port/win32/netinet/tcp.h +7 -0
  278. data/ext/pg_query/include/postgres/port/win32/pwd.h +3 -0
  279. data/ext/pg_query/include/postgres/port/win32/sys/resource.h +20 -0
  280. data/ext/pg_query/include/postgres/port/win32/sys/select.h +3 -0
  281. data/ext/pg_query/include/postgres/port/win32/sys/socket.h +34 -0
  282. data/ext/pg_query/include/postgres/port/win32/sys/un.h +17 -0
  283. data/ext/pg_query/include/postgres/port/win32/sys/wait.h +3 -0
  284. data/ext/pg_query/include/postgres/port/win32.h +59 -0
  285. data/ext/pg_query/include/postgres/port/win32_msvc/dirent.h +34 -0
  286. data/ext/pg_query/include/postgres/port/win32_msvc/sys/file.h +1 -0
  287. data/ext/pg_query/include/postgres/port/win32_msvc/sys/param.h +1 -0
  288. data/ext/pg_query/include/postgres/port/win32_msvc/sys/time.h +1 -0
  289. data/ext/pg_query/include/postgres/port/win32_msvc/unistd.h +9 -0
  290. data/ext/pg_query/include/postgres/port/win32_msvc/utime.h +3 -0
  291. data/ext/pg_query/include/postgres/port/win32_port.h +582 -0
  292. data/ext/pg_query/include/postgres/port.h +555 -0
  293. data/ext/pg_query/include/postgres/portability/instr_time.h +197 -0
  294. data/ext/pg_query/include/postgres/postgres.h +579 -0
  295. data/ext/pg_query/include/postgres/postgres_ext.h +73 -0
  296. data/ext/pg_query/include/postgres/postmaster/autovacuum.h +69 -0
  297. data/ext/pg_query/include/postgres/postmaster/bgworker.h +164 -0
  298. data/ext/pg_query/include/postgres/postmaster/bgworker_internals.h +60 -0
  299. data/ext/pg_query/include/postgres/postmaster/bgwriter.h +45 -0
  300. data/ext/pg_query/include/postgres/postmaster/interrupt.h +32 -0
  301. data/ext/pg_query/include/postgres/postmaster/pgarch.h +36 -0
  302. data/ext/pg_query/include/postgres/postmaster/postmaster.h +101 -0
  303. data/ext/pg_query/include/postgres/postmaster/startup.h +41 -0
  304. data/ext/pg_query/include/postgres/postmaster/syslogger.h +101 -0
  305. data/ext/pg_query/include/postgres/postmaster/walsummarizer.h +35 -0
  306. data/ext/pg_query/include/postgres/postmaster/walwriter.h +23 -0
  307. data/ext/pg_query/include/postgres/regex/regex.h +272 -0
  308. data/ext/pg_query/include/postgres/replication/logicallauncher.h +34 -0
  309. data/ext/pg_query/include/postgres/replication/logicalproto.h +274 -0
  310. data/ext/pg_query/include/postgres/replication/logicalworker.h +33 -0
  311. data/ext/pg_query/include/postgres/replication/origin.h +73 -0
  312. data/ext/pg_query/include/postgres/replication/reorderbuffer.h +734 -0
  313. data/ext/pg_query/include/postgres/replication/slot.h +289 -0
  314. data/ext/pg_query/include/postgres/replication/slotsync.h +38 -0
  315. data/ext/pg_query/include/postgres/replication/syncrep.h +109 -0
  316. data/ext/pg_query/include/postgres/replication/walreceiver.h +504 -0
  317. data/ext/pg_query/include/postgres/replication/walsender.h +76 -0
  318. data/ext/pg_query/include/postgres/rewrite/prs2lock.h +46 -0
  319. data/ext/pg_query/include/postgres/rewrite/rewriteHandler.h +41 -0
  320. data/ext/pg_query/include/postgres/rewrite/rewriteManip.h +96 -0
  321. data/ext/pg_query/include/postgres/rewrite/rewriteSupport.h +26 -0
  322. data/ext/pg_query/include/postgres/storage/block.h +108 -0
  323. data/ext/pg_query/include/postgres/storage/buf.h +46 -0
  324. data/ext/pg_query/include/postgres/storage/bufmgr.h +411 -0
  325. data/ext/pg_query/include/postgres/storage/bufpage.h +510 -0
  326. data/ext/pg_query/include/postgres/storage/condition_variable.h +73 -0
  327. data/ext/pg_query/include/postgres/storage/dsm.h +61 -0
  328. data/ext/pg_query/include/postgres/storage/dsm_impl.h +79 -0
  329. data/ext/pg_query/include/postgres/storage/fd.h +219 -0
  330. data/ext/pg_query/include/postgres/storage/fileset.h +40 -0
  331. data/ext/pg_query/include/postgres/storage/ipc.h +87 -0
  332. data/ext/pg_query/include/postgres/storage/item.h +19 -0
  333. data/ext/pg_query/include/postgres/storage/itemid.h +184 -0
  334. data/ext/pg_query/include/postgres/storage/itemptr.h +245 -0
  335. data/ext/pg_query/include/postgres/storage/large_object.h +100 -0
  336. data/ext/pg_query/include/postgres/storage/latch.h +196 -0
  337. data/ext/pg_query/include/postgres/storage/lmgr.h +126 -0
  338. data/ext/pg_query/include/postgres/storage/lock.h +624 -0
  339. data/ext/pg_query/include/postgres/storage/lockdefs.h +61 -0
  340. data/ext/pg_query/include/postgres/storage/lwlock.h +228 -0
  341. data/ext/pg_query/include/postgres/storage/lwlocknames.h +47 -0
  342. data/ext/pg_query/include/postgres/storage/off.h +57 -0
  343. data/ext/pg_query/include/postgres/storage/pg_sema.h +61 -0
  344. data/ext/pg_query/include/postgres/storage/pg_shmem.h +93 -0
  345. data/ext/pg_query/include/postgres/storage/pmsignal.h +105 -0
  346. data/ext/pg_query/include/postgres/storage/predicate.h +83 -0
  347. data/ext/pg_query/include/postgres/storage/proc.h +488 -0
  348. data/ext/pg_query/include/postgres/storage/procarray.h +103 -0
  349. data/ext/pg_query/include/postgres/storage/proclist_types.h +53 -0
  350. data/ext/pg_query/include/postgres/storage/procnumber.h +43 -0
  351. data/ext/pg_query/include/postgres/storage/procsignal.h +75 -0
  352. data/ext/pg_query/include/postgres/storage/read_stream.h +65 -0
  353. data/ext/pg_query/include/postgres/storage/relfilelocator.h +100 -0
  354. data/ext/pg_query/include/postgres/storage/s_lock.h +847 -0
  355. data/ext/pg_query/include/postgres/storage/sharedfileset.h +37 -0
  356. data/ext/pg_query/include/postgres/storage/shm_mq.h +86 -0
  357. data/ext/pg_query/include/postgres/storage/shm_toc.h +58 -0
  358. data/ext/pg_query/include/postgres/storage/shmem.h +59 -0
  359. data/ext/pg_query/include/postgres/storage/sinval.h +153 -0
  360. data/ext/pg_query/include/postgres/storage/smgr.h +130 -0
  361. data/ext/pg_query/include/postgres/storage/spin.h +77 -0
  362. data/ext/pg_query/include/postgres/storage/standby.h +109 -0
  363. data/ext/pg_query/include/postgres/storage/standbydefs.h +74 -0
  364. data/ext/pg_query/include/postgres/storage/sync.h +66 -0
  365. data/ext/pg_query/include/postgres/tcop/cmdtag.h +62 -0
  366. data/ext/pg_query/include/postgres/tcop/cmdtaglist.h +219 -0
  367. data/ext/pg_query/include/postgres/tcop/deparse_utility.h +108 -0
  368. data/ext/pg_query/include/postgres/tcop/dest.h +148 -0
  369. data/ext/pg_query/include/postgres/tcop/fastpath.h +20 -0
  370. data/ext/pg_query/include/postgres/tcop/pquery.h +51 -0
  371. data/ext/pg_query/include/postgres/tcop/tcopprot.h +98 -0
  372. data/ext/pg_query/include/postgres/tcop/utility.h +112 -0
  373. data/ext/pg_query/include/postgres/tsearch/ts_cache.h +96 -0
  374. data/ext/pg_query/include/postgres/utils/acl.h +290 -0
  375. data/ext/pg_query/include/postgres/utils/aclchk_internal.h +45 -0
  376. data/ext/pg_query/include/postgres/utils/array.h +481 -0
  377. data/ext/pg_query/include/postgres/utils/ascii.h +84 -0
  378. data/ext/pg_query/include/postgres/utils/backend_progress.h +46 -0
  379. data/ext/pg_query/include/postgres/utils/backend_status.h +340 -0
  380. data/ext/pg_query/include/postgres/utils/builtins.h +139 -0
  381. data/ext/pg_query/include/postgres/utils/bytea.h +28 -0
  382. data/ext/pg_query/include/postgres/utils/catcache.h +231 -0
  383. data/ext/pg_query/include/postgres/utils/date.h +118 -0
  384. data/ext/pg_query/include/postgres/utils/datetime.h +367 -0
  385. data/ext/pg_query/include/postgres/utils/datum.h +76 -0
  386. data/ext/pg_query/include/postgres/utils/dsa.h +166 -0
  387. data/ext/pg_query/include/postgres/utils/elog.h +540 -0
  388. data/ext/pg_query/include/postgres/utils/errcodes.h +352 -0
  389. data/ext/pg_query/include/postgres/utils/expandeddatum.h +170 -0
  390. data/ext/pg_query/include/postgres/utils/expandedrecord.h +241 -0
  391. data/ext/pg_query/include/postgres/utils/float.h +357 -0
  392. data/ext/pg_query/include/postgres/utils/fmgroids.h +3347 -0
  393. data/ext/pg_query/include/postgres/utils/fmgrprotos.h +2904 -0
  394. data/ext/pg_query/include/postgres/utils/fmgrtab.h +49 -0
  395. data/ext/pg_query/include/postgres/utils/guc.h +456 -0
  396. data/ext/pg_query/include/postgres/utils/guc_hooks.h +184 -0
  397. data/ext/pg_query/include/postgres/utils/guc_tables.h +323 -0
  398. data/ext/pg_query/include/postgres/utils/hsearch.h +153 -0
  399. data/ext/pg_query/include/postgres/utils/injection_point.h +44 -0
  400. data/ext/pg_query/include/postgres/utils/inval.h +68 -0
  401. data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
  402. data/ext/pg_query/include/postgres/utils/lsyscache.h +215 -0
  403. data/ext/pg_query/include/postgres/utils/memdebug.h +82 -0
  404. data/ext/pg_query/include/postgres/utils/memutils.h +193 -0
  405. data/ext/pg_query/include/postgres/utils/memutils_internal.h +176 -0
  406. data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +253 -0
  407. data/ext/pg_query/include/postgres/utils/numeric.h +110 -0
  408. data/ext/pg_query/include/postgres/utils/palloc.h +151 -0
  409. data/ext/pg_query/include/postgres/utils/partcache.h +103 -0
  410. data/ext/pg_query/include/postgres/utils/pg_locale.h +136 -0
  411. data/ext/pg_query/include/postgres/utils/pgstat_internal.h +827 -0
  412. data/ext/pg_query/include/postgres/utils/plancache.h +238 -0
  413. data/ext/pg_query/include/postgres/utils/portal.h +252 -0
  414. data/ext/pg_query/include/postgres/utils/probes.h +114 -0
  415. data/ext/pg_query/include/postgres/utils/ps_status.h +47 -0
  416. data/ext/pg_query/include/postgres/utils/queryenvironment.h +74 -0
  417. data/ext/pg_query/include/postgres/utils/regproc.h +39 -0
  418. data/ext/pg_query/include/postgres/utils/rel.h +711 -0
  419. data/ext/pg_query/include/postgres/utils/relcache.h +155 -0
  420. data/ext/pg_query/include/postgres/utils/reltrigger.h +81 -0
  421. data/ext/pg_query/include/postgres/utils/resowner.h +167 -0
  422. data/ext/pg_query/include/postgres/utils/ruleutils.h +52 -0
  423. data/ext/pg_query/include/postgres/utils/sharedtuplestore.h +61 -0
  424. data/ext/pg_query/include/postgres/utils/snapmgr.h +130 -0
  425. data/ext/pg_query/include/postgres/utils/snapshot.h +219 -0
  426. data/ext/pg_query/include/postgres/utils/sortsupport.h +391 -0
  427. data/ext/pg_query/include/postgres/utils/syscache.h +136 -0
  428. data/ext/pg_query/include/postgres/utils/timeout.h +96 -0
  429. data/ext/pg_query/include/postgres/utils/timestamp.h +147 -0
  430. data/ext/pg_query/include/postgres/utils/tuplesort.h +472 -0
  431. data/ext/pg_query/include/postgres/utils/tuplestore.h +88 -0
  432. data/ext/pg_query/include/postgres/utils/typcache.h +210 -0
  433. data/ext/pg_query/include/postgres/utils/varlena.h +53 -0
  434. data/ext/pg_query/include/postgres/utils/wait_event.h +108 -0
  435. data/ext/pg_query/include/postgres/utils/wait_event_types.h +218 -0
  436. data/ext/pg_query/include/postgres/utils/xml.h +94 -0
  437. data/ext/pg_query/include/postgres/varatt.h +358 -0
  438. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +8077 -6217
  439. data/ext/pg_query/include/protobuf/pg_query.pb.h +132024 -88124
  440. data/ext/pg_query/pg_query.c +10 -1
  441. data/ext/pg_query/pg_query.pb-c.c +24028 -17173
  442. data/ext/pg_query/pg_query_deparse.c +1 -9902
  443. data/ext/pg_query/pg_query_fingerprint.c +42 -18
  444. data/ext/pg_query/pg_query_fingerprint.h +1 -1
  445. data/ext/pg_query/pg_query_internal.h +1 -1
  446. data/ext/pg_query/pg_query_json_plpgsql.c +1 -25
  447. data/ext/pg_query/pg_query_normalize.c +44 -3
  448. data/ext/pg_query/pg_query_outfuncs_json.c +62 -16
  449. data/ext/pg_query/pg_query_outfuncs_protobuf.c +73 -12
  450. data/ext/pg_query/pg_query_parse.c +47 -5
  451. data/ext/pg_query/pg_query_parse_plpgsql.c +19 -18
  452. data/ext/pg_query/pg_query_readfuncs_protobuf.c +45 -10
  453. data/ext/pg_query/pg_query_ruby.c +5 -0
  454. data/ext/pg_query/pg_query_scan.c +4 -3
  455. data/ext/pg_query/pg_query_split.c +6 -5
  456. data/ext/pg_query/postgres_deparse.c +11496 -0
  457. data/ext/pg_query/postgres_deparse.h +9 -0
  458. data/ext/pg_query/src_backend_catalog_namespace.c +262 -71
  459. data/ext/pg_query/src_backend_catalog_pg_proc.c +3 -2
  460. data/ext/pg_query/src_backend_commands_define.c +12 -3
  461. data/ext/pg_query/src_backend_nodes_bitmapset.c +142 -156
  462. data/ext/pg_query/src_backend_nodes_copyfuncs.c +100 -5881
  463. data/ext/pg_query/src_backend_nodes_equalfuncs.c +102 -3831
  464. data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
  465. data/ext/pg_query/src_backend_nodes_list.c +89 -18
  466. data/ext/pg_query/src_backend_nodes_makefuncs.c +138 -4
  467. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +433 -132
  468. data/ext/pg_query/src_backend_nodes_value.c +28 -19
  469. data/ext/pg_query/src_backend_parser_gram.c +45255 -38885
  470. data/ext/pg_query/src_backend_parser_parser.c +53 -8
  471. data/ext/pg_query/src_backend_parser_scan.c +6999 -3438
  472. data/ext/pg_query/src_backend_parser_scansup.c +5 -28
  473. data/ext/pg_query/src_backend_storage_ipc_ipc.c +13 -4
  474. data/ext/pg_query/src_backend_tcop_postgres.c +156 -114
  475. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +140 -0
  476. data/ext/pg_query/src_backend_utils_adt_datum.c +14 -2
  477. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  478. data/ext/pg_query/src_backend_utils_adt_format_type.c +6 -2
  479. data/ext/pg_query/src_backend_utils_adt_numutils.c +488 -0
  480. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +247 -34
  481. data/ext/pg_query/src_backend_utils_error_assert.c +17 -18
  482. data/ext/pg_query/src_backend_utils_error_elog.c +543 -343
  483. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +47 -18
  484. data/ext/pg_query/src_backend_utils_init_globals.c +22 -7
  485. data/ext/pg_query/src_backend_utils_mb_mbutils.c +84 -148
  486. data/ext/pg_query/src_backend_utils_misc_guc_tables.c +502 -0
  487. data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +166 -0
  488. data/ext/pg_query/src_backend_utils_mmgr_aset.c +708 -499
  489. data/ext/pg_query/src_backend_utils_mmgr_bump.c +728 -0
  490. data/ext/pg_query/src_backend_utils_mmgr_generation.c +1115 -0
  491. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +710 -218
  492. data/ext/pg_query/src_backend_utils_mmgr_slab.c +1079 -0
  493. data/ext/pg_query/src_common_encnames.c +46 -44
  494. data/ext/pg_query/src_common_hashfn.c +3 -3
  495. data/ext/pg_query/src_common_keywords.c +15 -2
  496. data/ext/pg_query/src_common_kwlist_d.h +602 -510
  497. data/ext/pg_query/src_common_kwlookup.c +1 -1
  498. data/ext/pg_query/src_common_psprintf.c +3 -3
  499. data/ext/pg_query/src_common_stringinfo.c +21 -4
  500. data/ext/pg_query/src_common_wchar.c +754 -178
  501. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +143 -24
  502. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -18
  503. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1295 -1255
  504. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  505. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +10 -10
  506. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +20 -2
  507. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +60 -60
  508. data/ext/pg_query/src_port_pg_bitutils.c +283 -54
  509. data/ext/pg_query/src_port_pgstrcasecmp.c +57 -1
  510. data/ext/pg_query/src_port_qsort.c +12 -224
  511. data/ext/pg_query/src_port_snprintf.c +56 -39
  512. data/ext/pg_query/src_port_strerror.c +9 -21
  513. data/ext/pg_query/src_port_strlcpy.c +79 -0
  514. data/lib/pg_query/filter_columns.rb +1 -1
  515. data/lib/pg_query/fingerprint.rb +10 -9
  516. data/lib/pg_query/node.rb +18 -13
  517. data/lib/pg_query/param_refs.rb +3 -3
  518. data/lib/pg_query/parse.rb +25 -15
  519. data/lib/pg_query/parse_error.rb +1 -0
  520. data/lib/pg_query/pg_query_pb.rb +181 -3038
  521. data/lib/pg_query/scan.rb +1 -0
  522. data/lib/pg_query/treewalker.rb +55 -8
  523. data/lib/pg_query/truncate.rb +19 -21
  524. data/lib/pg_query/version.rb +1 -1
  525. metadata +447 -436
  526. data/ext/pg_query/guc-file.c +0 -0
  527. data/ext/pg_query/include/access/amapi.h +0 -246
  528. data/ext/pg_query/include/access/attmap.h +0 -52
  529. data/ext/pg_query/include/access/attnum.h +0 -64
  530. data/ext/pg_query/include/access/clog.h +0 -61
  531. data/ext/pg_query/include/access/commit_ts.h +0 -77
  532. data/ext/pg_query/include/access/detoast.h +0 -92
  533. data/ext/pg_query/include/access/genam.h +0 -228
  534. data/ext/pg_query/include/access/gin.h +0 -78
  535. data/ext/pg_query/include/access/htup.h +0 -89
  536. data/ext/pg_query/include/access/htup_details.h +0 -819
  537. data/ext/pg_query/include/access/itup.h +0 -161
  538. data/ext/pg_query/include/access/parallel.h +0 -82
  539. data/ext/pg_query/include/access/printtup.h +0 -35
  540. data/ext/pg_query/include/access/relation.h +0 -28
  541. data/ext/pg_query/include/access/relscan.h +0 -176
  542. data/ext/pg_query/include/access/rmgr.h +0 -35
  543. data/ext/pg_query/include/access/rmgrlist.h +0 -49
  544. data/ext/pg_query/include/access/sdir.h +0 -58
  545. data/ext/pg_query/include/access/skey.h +0 -151
  546. data/ext/pg_query/include/access/stratnum.h +0 -83
  547. data/ext/pg_query/include/access/sysattr.h +0 -29
  548. data/ext/pg_query/include/access/table.h +0 -27
  549. data/ext/pg_query/include/access/tableam.h +0 -1825
  550. data/ext/pg_query/include/access/transam.h +0 -265
  551. data/ext/pg_query/include/access/tupconvert.h +0 -51
  552. data/ext/pg_query/include/access/tupdesc.h +0 -154
  553. data/ext/pg_query/include/access/tupmacs.h +0 -247
  554. data/ext/pg_query/include/access/twophase.h +0 -63
  555. data/ext/pg_query/include/access/xact.h +0 -469
  556. data/ext/pg_query/include/access/xlog.h +0 -398
  557. data/ext/pg_query/include/access/xlog_internal.h +0 -339
  558. data/ext/pg_query/include/access/xlogdefs.h +0 -109
  559. data/ext/pg_query/include/access/xloginsert.h +0 -64
  560. data/ext/pg_query/include/access/xlogreader.h +0 -337
  561. data/ext/pg_query/include/access/xlogrecord.h +0 -227
  562. data/ext/pg_query/include/bootstrap/bootstrap.h +0 -62
  563. data/ext/pg_query/include/c.h +0 -1334
  564. data/ext/pg_query/include/catalog/catalog.h +0 -42
  565. data/ext/pg_query/include/catalog/catversion.h +0 -58
  566. data/ext/pg_query/include/catalog/dependency.h +0 -277
  567. data/ext/pg_query/include/catalog/genbki.h +0 -64
  568. data/ext/pg_query/include/catalog/index.h +0 -199
  569. data/ext/pg_query/include/catalog/indexing.h +0 -366
  570. data/ext/pg_query/include/catalog/namespace.h +0 -188
  571. data/ext/pg_query/include/catalog/objectaccess.h +0 -197
  572. data/ext/pg_query/include/catalog/objectaddress.h +0 -84
  573. data/ext/pg_query/include/catalog/pg_aggregate.h +0 -176
  574. data/ext/pg_query/include/catalog/pg_aggregate_d.h +0 -77
  575. data/ext/pg_query/include/catalog/pg_am.h +0 -60
  576. data/ext/pg_query/include/catalog/pg_am_d.h +0 -45
  577. data/ext/pg_query/include/catalog/pg_attribute.h +0 -204
  578. data/ext/pg_query/include/catalog/pg_attribute_d.h +0 -59
  579. data/ext/pg_query/include/catalog/pg_authid.h +0 -58
  580. data/ext/pg_query/include/catalog/pg_authid_d.h +0 -49
  581. data/ext/pg_query/include/catalog/pg_class.h +0 -200
  582. data/ext/pg_query/include/catalog/pg_class_d.h +0 -103
  583. data/ext/pg_query/include/catalog/pg_collation.h +0 -73
  584. data/ext/pg_query/include/catalog/pg_collation_d.h +0 -45
  585. data/ext/pg_query/include/catalog/pg_constraint.h +0 -247
  586. data/ext/pg_query/include/catalog/pg_constraint_d.h +0 -67
  587. data/ext/pg_query/include/catalog/pg_control.h +0 -252
  588. data/ext/pg_query/include/catalog/pg_conversion.h +0 -72
  589. data/ext/pg_query/include/catalog/pg_conversion_d.h +0 -35
  590. data/ext/pg_query/include/catalog/pg_depend.h +0 -73
  591. data/ext/pg_query/include/catalog/pg_depend_d.h +0 -34
  592. data/ext/pg_query/include/catalog/pg_event_trigger.h +0 -51
  593. data/ext/pg_query/include/catalog/pg_event_trigger_d.h +0 -34
  594. data/ext/pg_query/include/catalog/pg_index.h +0 -80
  595. data/ext/pg_query/include/catalog/pg_index_d.h +0 -56
  596. data/ext/pg_query/include/catalog/pg_language.h +0 -67
  597. data/ext/pg_query/include/catalog/pg_language_d.h +0 -39
  598. data/ext/pg_query/include/catalog/pg_namespace.h +0 -59
  599. data/ext/pg_query/include/catalog/pg_namespace_d.h +0 -34
  600. data/ext/pg_query/include/catalog/pg_opclass.h +0 -85
  601. data/ext/pg_query/include/catalog/pg_opclass_d.h +0 -49
  602. data/ext/pg_query/include/catalog/pg_operator.h +0 -104
  603. data/ext/pg_query/include/catalog/pg_operator_d.h +0 -106
  604. data/ext/pg_query/include/catalog/pg_opfamily.h +0 -60
  605. data/ext/pg_query/include/catalog/pg_opfamily_d.h +0 -47
  606. data/ext/pg_query/include/catalog/pg_partitioned_table.h +0 -63
  607. data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +0 -35
  608. data/ext/pg_query/include/catalog/pg_proc.h +0 -211
  609. data/ext/pg_query/include/catalog/pg_proc_d.h +0 -99
  610. data/ext/pg_query/include/catalog/pg_publication.h +0 -118
  611. data/ext/pg_query/include/catalog/pg_publication_d.h +0 -36
  612. data/ext/pg_query/include/catalog/pg_replication_origin.h +0 -57
  613. data/ext/pg_query/include/catalog/pg_replication_origin_d.h +0 -29
  614. data/ext/pg_query/include/catalog/pg_statistic.h +0 -275
  615. data/ext/pg_query/include/catalog/pg_statistic_d.h +0 -194
  616. data/ext/pg_query/include/catalog/pg_statistic_ext.h +0 -74
  617. data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +0 -40
  618. data/ext/pg_query/include/catalog/pg_transform.h +0 -45
  619. data/ext/pg_query/include/catalog/pg_transform_d.h +0 -32
  620. data/ext/pg_query/include/catalog/pg_trigger.h +0 -137
  621. data/ext/pg_query/include/catalog/pg_trigger_d.h +0 -106
  622. data/ext/pg_query/include/catalog/pg_ts_config.h +0 -50
  623. data/ext/pg_query/include/catalog/pg_ts_config_d.h +0 -32
  624. data/ext/pg_query/include/catalog/pg_ts_dict.h +0 -54
  625. data/ext/pg_query/include/catalog/pg_ts_dict_d.h +0 -33
  626. data/ext/pg_query/include/catalog/pg_ts_parser.h +0 -57
  627. data/ext/pg_query/include/catalog/pg_ts_parser_d.h +0 -35
  628. data/ext/pg_query/include/catalog/pg_ts_template.h +0 -48
  629. data/ext/pg_query/include/catalog/pg_ts_template_d.h +0 -32
  630. data/ext/pg_query/include/catalog/pg_type.h +0 -373
  631. data/ext/pg_query/include/catalog/pg_type_d.h +0 -285
  632. data/ext/pg_query/include/catalog/storage.h +0 -48
  633. data/ext/pg_query/include/commands/async.h +0 -54
  634. data/ext/pg_query/include/commands/dbcommands.h +0 -35
  635. data/ext/pg_query/include/commands/defrem.h +0 -173
  636. data/ext/pg_query/include/commands/event_trigger.h +0 -88
  637. data/ext/pg_query/include/commands/explain.h +0 -127
  638. data/ext/pg_query/include/commands/prepare.h +0 -61
  639. data/ext/pg_query/include/commands/tablespace.h +0 -69
  640. data/ext/pg_query/include/commands/trigger.h +0 -285
  641. data/ext/pg_query/include/commands/user.h +0 -37
  642. data/ext/pg_query/include/commands/vacuum.h +0 -293
  643. data/ext/pg_query/include/commands/variable.h +0 -38
  644. data/ext/pg_query/include/common/file_perm.h +0 -56
  645. data/ext/pg_query/include/common/hashfn.h +0 -104
  646. data/ext/pg_query/include/common/ip.h +0 -37
  647. data/ext/pg_query/include/common/keywords.h +0 -33
  648. data/ext/pg_query/include/common/kwlookup.h +0 -44
  649. data/ext/pg_query/include/common/relpath.h +0 -90
  650. data/ext/pg_query/include/common/string.h +0 -19
  651. data/ext/pg_query/include/common/unicode_combining_table.h +0 -196
  652. data/ext/pg_query/include/datatype/timestamp.h +0 -197
  653. data/ext/pg_query/include/executor/execdesc.h +0 -70
  654. data/ext/pg_query/include/executor/executor.h +0 -620
  655. data/ext/pg_query/include/executor/functions.h +0 -41
  656. data/ext/pg_query/include/executor/instrument.h +0 -101
  657. data/ext/pg_query/include/executor/spi.h +0 -175
  658. data/ext/pg_query/include/executor/tablefunc.h +0 -67
  659. data/ext/pg_query/include/executor/tuptable.h +0 -487
  660. data/ext/pg_query/include/fmgr.h +0 -775
  661. data/ext/pg_query/include/funcapi.h +0 -348
  662. data/ext/pg_query/include/getaddrinfo.h +0 -162
  663. data/ext/pg_query/include/jit/jit.h +0 -105
  664. data/ext/pg_query/include/kwlist_d.h +0 -1072
  665. data/ext/pg_query/include/lib/ilist.h +0 -727
  666. data/ext/pg_query/include/lib/pairingheap.h +0 -102
  667. data/ext/pg_query/include/lib/simplehash.h +0 -1059
  668. data/ext/pg_query/include/lib/stringinfo.h +0 -161
  669. data/ext/pg_query/include/libpq/auth.h +0 -29
  670. data/ext/pg_query/include/libpq/crypt.h +0 -46
  671. data/ext/pg_query/include/libpq/hba.h +0 -140
  672. data/ext/pg_query/include/libpq/libpq-be.h +0 -326
  673. data/ext/pg_query/include/libpq/libpq.h +0 -134
  674. data/ext/pg_query/include/libpq/pqcomm.h +0 -208
  675. data/ext/pg_query/include/libpq/pqformat.h +0 -210
  676. data/ext/pg_query/include/libpq/pqsignal.h +0 -42
  677. data/ext/pg_query/include/mb/pg_wchar.h +0 -673
  678. data/ext/pg_query/include/mb/stringinfo_mb.h +0 -24
  679. data/ext/pg_query/include/miscadmin.h +0 -489
  680. data/ext/pg_query/include/nodes/bitmapset.h +0 -122
  681. data/ext/pg_query/include/nodes/execnodes.h +0 -2523
  682. data/ext/pg_query/include/nodes/extensible.h +0 -160
  683. data/ext/pg_query/include/nodes/lockoptions.h +0 -61
  684. data/ext/pg_query/include/nodes/makefuncs.h +0 -108
  685. data/ext/pg_query/include/nodes/memnodes.h +0 -108
  686. data/ext/pg_query/include/nodes/nodeFuncs.h +0 -162
  687. data/ext/pg_query/include/nodes/nodes.h +0 -842
  688. data/ext/pg_query/include/nodes/params.h +0 -170
  689. data/ext/pg_query/include/nodes/parsenodes.h +0 -3580
  690. data/ext/pg_query/include/nodes/pathnodes.h +0 -2557
  691. data/ext/pg_query/include/nodes/pg_list.h +0 -606
  692. data/ext/pg_query/include/nodes/plannodes.h +0 -1266
  693. data/ext/pg_query/include/nodes/primnodes.h +0 -1541
  694. data/ext/pg_query/include/nodes/print.h +0 -34
  695. data/ext/pg_query/include/nodes/tidbitmap.h +0 -75
  696. data/ext/pg_query/include/nodes/value.h +0 -61
  697. data/ext/pg_query/include/optimizer/cost.h +0 -206
  698. data/ext/pg_query/include/optimizer/geqo.h +0 -88
  699. data/ext/pg_query/include/optimizer/geqo_gene.h +0 -45
  700. data/ext/pg_query/include/optimizer/optimizer.h +0 -194
  701. data/ext/pg_query/include/optimizer/paths.h +0 -257
  702. data/ext/pg_query/include/optimizer/planmain.h +0 -119
  703. data/ext/pg_query/include/parser/analyze.h +0 -49
  704. data/ext/pg_query/include/parser/gram.h +0 -1067
  705. data/ext/pg_query/include/parser/gramparse.h +0 -75
  706. data/ext/pg_query/include/parser/kwlist.h +0 -477
  707. data/ext/pg_query/include/parser/parse_agg.h +0 -68
  708. data/ext/pg_query/include/parser/parse_clause.h +0 -54
  709. data/ext/pg_query/include/parser/parse_coerce.h +0 -98
  710. data/ext/pg_query/include/parser/parse_collate.h +0 -27
  711. data/ext/pg_query/include/parser/parse_expr.h +0 -26
  712. data/ext/pg_query/include/parser/parse_func.h +0 -73
  713. data/ext/pg_query/include/parser/parse_node.h +0 -327
  714. data/ext/pg_query/include/parser/parse_oper.h +0 -67
  715. data/ext/pg_query/include/parser/parse_relation.h +0 -123
  716. data/ext/pg_query/include/parser/parse_target.h +0 -46
  717. data/ext/pg_query/include/parser/parse_type.h +0 -60
  718. data/ext/pg_query/include/parser/parser.h +0 -41
  719. data/ext/pg_query/include/parser/parsetree.h +0 -61
  720. data/ext/pg_query/include/parser/scanner.h +0 -152
  721. data/ext/pg_query/include/parser/scansup.h +0 -30
  722. data/ext/pg_query/include/partitioning/partdefs.h +0 -26
  723. data/ext/pg_query/include/pg_config.h +0 -995
  724. data/ext/pg_query/include/pg_config_manual.h +0 -357
  725. data/ext/pg_query/include/pg_config_os.h +0 -8
  726. data/ext/pg_query/include/pg_getopt.h +0 -56
  727. data/ext/pg_query/include/pg_trace.h +0 -17
  728. data/ext/pg_query/include/pgstat.h +0 -1488
  729. data/ext/pg_query/include/pgtime.h +0 -84
  730. data/ext/pg_query/include/pl_gram.h +0 -385
  731. data/ext/pg_query/include/pl_reserved_kwlist.h +0 -52
  732. data/ext/pg_query/include/pl_reserved_kwlist_d.h +0 -114
  733. data/ext/pg_query/include/pl_unreserved_kwlist.h +0 -112
  734. data/ext/pg_query/include/pl_unreserved_kwlist_d.h +0 -246
  735. data/ext/pg_query/include/plerrcodes.h +0 -990
  736. data/ext/pg_query/include/plpgsql.h +0 -1347
  737. data/ext/pg_query/include/port/atomics/arch-arm.h +0 -26
  738. data/ext/pg_query/include/port/atomics/arch-ppc.h +0 -254
  739. data/ext/pg_query/include/port/atomics/arch-x86.h +0 -252
  740. data/ext/pg_query/include/port/atomics/fallback.h +0 -170
  741. data/ext/pg_query/include/port/atomics/generic-gcc.h +0 -286
  742. data/ext/pg_query/include/port/atomics/generic.h +0 -401
  743. data/ext/pg_query/include/port/atomics.h +0 -524
  744. data/ext/pg_query/include/port/pg_bitutils.h +0 -272
  745. data/ext/pg_query/include/port/pg_bswap.h +0 -161
  746. data/ext/pg_query/include/port/pg_crc32c.h +0 -101
  747. data/ext/pg_query/include/port.h +0 -528
  748. data/ext/pg_query/include/portability/instr_time.h +0 -256
  749. data/ext/pg_query/include/postgres.h +0 -764
  750. data/ext/pg_query/include/postgres_ext.h +0 -74
  751. data/ext/pg_query/include/postmaster/autovacuum.h +0 -83
  752. data/ext/pg_query/include/postmaster/bgworker.h +0 -161
  753. data/ext/pg_query/include/postmaster/bgworker_internals.h +0 -64
  754. data/ext/pg_query/include/postmaster/bgwriter.h +0 -45
  755. data/ext/pg_query/include/postmaster/fork_process.h +0 -17
  756. data/ext/pg_query/include/postmaster/interrupt.h +0 -32
  757. data/ext/pg_query/include/postmaster/pgarch.h +0 -39
  758. data/ext/pg_query/include/postmaster/postmaster.h +0 -77
  759. data/ext/pg_query/include/postmaster/syslogger.h +0 -98
  760. data/ext/pg_query/include/postmaster/walwriter.h +0 -21
  761. data/ext/pg_query/include/regex/regex.h +0 -184
  762. data/ext/pg_query/include/replication/logicallauncher.h +0 -31
  763. data/ext/pg_query/include/replication/logicalproto.h +0 -110
  764. data/ext/pg_query/include/replication/logicalworker.h +0 -19
  765. data/ext/pg_query/include/replication/origin.h +0 -73
  766. data/ext/pg_query/include/replication/reorderbuffer.h +0 -468
  767. data/ext/pg_query/include/replication/slot.h +0 -219
  768. data/ext/pg_query/include/replication/syncrep.h +0 -115
  769. data/ext/pg_query/include/replication/walreceiver.h +0 -340
  770. data/ext/pg_query/include/replication/walsender.h +0 -74
  771. data/ext/pg_query/include/rewrite/prs2lock.h +0 -46
  772. data/ext/pg_query/include/rewrite/rewriteHandler.h +0 -40
  773. data/ext/pg_query/include/rewrite/rewriteManip.h +0 -87
  774. data/ext/pg_query/include/rewrite/rewriteSupport.h +0 -26
  775. data/ext/pg_query/include/storage/backendid.h +0 -37
  776. data/ext/pg_query/include/storage/block.h +0 -121
  777. data/ext/pg_query/include/storage/buf.h +0 -46
  778. data/ext/pg_query/include/storage/bufmgr.h +0 -292
  779. data/ext/pg_query/include/storage/bufpage.h +0 -459
  780. data/ext/pg_query/include/storage/condition_variable.h +0 -62
  781. data/ext/pg_query/include/storage/dsm.h +0 -61
  782. data/ext/pg_query/include/storage/dsm_impl.h +0 -75
  783. data/ext/pg_query/include/storage/fd.h +0 -168
  784. data/ext/pg_query/include/storage/ipc.h +0 -81
  785. data/ext/pg_query/include/storage/item.h +0 -19
  786. data/ext/pg_query/include/storage/itemid.h +0 -184
  787. data/ext/pg_query/include/storage/itemptr.h +0 -206
  788. data/ext/pg_query/include/storage/large_object.h +0 -100
  789. data/ext/pg_query/include/storage/latch.h +0 -190
  790. data/ext/pg_query/include/storage/lmgr.h +0 -114
  791. data/ext/pg_query/include/storage/lock.h +0 -613
  792. data/ext/pg_query/include/storage/lockdefs.h +0 -59
  793. data/ext/pg_query/include/storage/lwlock.h +0 -233
  794. data/ext/pg_query/include/storage/lwlocknames.h +0 -51
  795. data/ext/pg_query/include/storage/off.h +0 -57
  796. data/ext/pg_query/include/storage/pg_sema.h +0 -61
  797. data/ext/pg_query/include/storage/pg_shmem.h +0 -90
  798. data/ext/pg_query/include/storage/pmsignal.h +0 -94
  799. data/ext/pg_query/include/storage/predicate.h +0 -87
  800. data/ext/pg_query/include/storage/proc.h +0 -347
  801. data/ext/pg_query/include/storage/proclist_types.h +0 -51
  802. data/ext/pg_query/include/storage/procsignal.h +0 -75
  803. data/ext/pg_query/include/storage/relfilenode.h +0 -99
  804. data/ext/pg_query/include/storage/s_lock.h +0 -1071
  805. data/ext/pg_query/include/storage/sharedfileset.h +0 -45
  806. data/ext/pg_query/include/storage/shm_mq.h +0 -85
  807. data/ext/pg_query/include/storage/shm_toc.h +0 -58
  808. data/ext/pg_query/include/storage/shmem.h +0 -81
  809. data/ext/pg_query/include/storage/sinval.h +0 -153
  810. data/ext/pg_query/include/storage/sinvaladt.h +0 -43
  811. data/ext/pg_query/include/storage/smgr.h +0 -109
  812. data/ext/pg_query/include/storage/spin.h +0 -77
  813. data/ext/pg_query/include/storage/standby.h +0 -91
  814. data/ext/pg_query/include/storage/standbydefs.h +0 -74
  815. data/ext/pg_query/include/storage/sync.h +0 -62
  816. data/ext/pg_query/include/tcop/cmdtag.h +0 -58
  817. data/ext/pg_query/include/tcop/cmdtaglist.h +0 -217
  818. data/ext/pg_query/include/tcop/deparse_utility.h +0 -108
  819. data/ext/pg_query/include/tcop/dest.h +0 -149
  820. data/ext/pg_query/include/tcop/fastpath.h +0 -21
  821. data/ext/pg_query/include/tcop/pquery.h +0 -51
  822. data/ext/pg_query/include/tcop/tcopprot.h +0 -89
  823. data/ext/pg_query/include/tcop/utility.h +0 -108
  824. data/ext/pg_query/include/tsearch/ts_cache.h +0 -98
  825. data/ext/pg_query/include/utils/acl.h +0 -312
  826. data/ext/pg_query/include/utils/aclchk_internal.h +0 -45
  827. data/ext/pg_query/include/utils/array.h +0 -459
  828. data/ext/pg_query/include/utils/builtins.h +0 -128
  829. data/ext/pg_query/include/utils/bytea.h +0 -27
  830. data/ext/pg_query/include/utils/catcache.h +0 -231
  831. data/ext/pg_query/include/utils/date.h +0 -90
  832. data/ext/pg_query/include/utils/datetime.h +0 -343
  833. data/ext/pg_query/include/utils/datum.h +0 -68
  834. data/ext/pg_query/include/utils/dsa.h +0 -123
  835. data/ext/pg_query/include/utils/dynahash.h +0 -19
  836. data/ext/pg_query/include/utils/elog.h +0 -439
  837. data/ext/pg_query/include/utils/errcodes.h +0 -352
  838. data/ext/pg_query/include/utils/expandeddatum.h +0 -159
  839. data/ext/pg_query/include/utils/expandedrecord.h +0 -231
  840. data/ext/pg_query/include/utils/float.h +0 -356
  841. data/ext/pg_query/include/utils/fmgroids.h +0 -2657
  842. data/ext/pg_query/include/utils/fmgrprotos.h +0 -2646
  843. data/ext/pg_query/include/utils/fmgrtab.h +0 -48
  844. data/ext/pg_query/include/utils/guc.h +0 -443
  845. data/ext/pg_query/include/utils/guc_tables.h +0 -272
  846. data/ext/pg_query/include/utils/hsearch.h +0 -149
  847. data/ext/pg_query/include/utils/inval.h +0 -65
  848. data/ext/pg_query/include/utils/lsyscache.h +0 -198
  849. data/ext/pg_query/include/utils/memdebug.h +0 -82
  850. data/ext/pg_query/include/utils/memutils.h +0 -225
  851. data/ext/pg_query/include/utils/numeric.h +0 -76
  852. data/ext/pg_query/include/utils/palloc.h +0 -136
  853. data/ext/pg_query/include/utils/partcache.h +0 -102
  854. data/ext/pg_query/include/utils/pg_locale.h +0 -119
  855. data/ext/pg_query/include/utils/pg_lsn.h +0 -29
  856. data/ext/pg_query/include/utils/pidfile.h +0 -56
  857. data/ext/pg_query/include/utils/plancache.h +0 -235
  858. data/ext/pg_query/include/utils/portal.h +0 -254
  859. data/ext/pg_query/include/utils/probes.h +0 -114
  860. data/ext/pg_query/include/utils/ps_status.h +0 -25
  861. data/ext/pg_query/include/utils/queryenvironment.h +0 -74
  862. data/ext/pg_query/include/utils/regproc.h +0 -28
  863. data/ext/pg_query/include/utils/rel.h +0 -643
  864. data/ext/pg_query/include/utils/relcache.h +0 -150
  865. data/ext/pg_query/include/utils/reltrigger.h +0 -81
  866. data/ext/pg_query/include/utils/resowner.h +0 -86
  867. data/ext/pg_query/include/utils/rls.h +0 -50
  868. data/ext/pg_query/include/utils/ruleutils.h +0 -44
  869. data/ext/pg_query/include/utils/sharedtuplestore.h +0 -61
  870. data/ext/pg_query/include/utils/snapmgr.h +0 -159
  871. data/ext/pg_query/include/utils/snapshot.h +0 -206
  872. data/ext/pg_query/include/utils/sortsupport.h +0 -276
  873. data/ext/pg_query/include/utils/syscache.h +0 -219
  874. data/ext/pg_query/include/utils/timeout.h +0 -88
  875. data/ext/pg_query/include/utils/timestamp.h +0 -116
  876. data/ext/pg_query/include/utils/tuplesort.h +0 -277
  877. data/ext/pg_query/include/utils/tuplestore.h +0 -91
  878. data/ext/pg_query/include/utils/typcache.h +0 -202
  879. data/ext/pg_query/include/utils/tzparser.h +0 -39
  880. data/ext/pg_query/include/utils/varlena.h +0 -39
  881. data/ext/pg_query/include/utils/xml.h +0 -84
  882. data/ext/pg_query/pg_query_ruby_freebsd.sym +0 -2
  883. data/ext/pg_query/src_backend_libpq_pqcomm.c +0 -659
  884. data/ext/pg_query/src_backend_parser_parse_expr.c +0 -313
  885. data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2230
  886. data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -370
  887. data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1086
  888. data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1832
  889. data/ext/pg_query/src_common_string.c +0 -86
  890. data/ext/pg_query/src_port_erand48.c +0 -127
  891. data/ext/pg_query/src_port_pgsleep.c +0 -69
  892. data/ext/pg_query/src_port_random.c +0 -31
  893. data/ext/pg_query/src_port_strnlen.c +0 -39
  894. /data/ext/pg_query/{pg_query_ruby.sym → ext_symbols.sym} +0 -0
  895. /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
@@ -1,775 +0,0 @@
1
- /*-------------------------------------------------------------------------
2
- *
3
- * fmgr.h
4
- * Definitions for the Postgres function manager and function-call
5
- * interface.
6
- *
7
- * This file must be included by all Postgres modules that either define
8
- * or call fmgr-callable functions.
9
- *
10
- *
11
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
12
- * Portions Copyright (c) 1994, Regents of the University of California
13
- *
14
- * src/include/fmgr.h
15
- *
16
- *-------------------------------------------------------------------------
17
- */
18
- #ifndef FMGR_H
19
- #define FMGR_H
20
-
21
- /* We don't want to include primnodes.h here, so make some stub references */
22
- typedef struct Node *fmNodePtr;
23
- typedef struct Aggref *fmAggrefPtr;
24
-
25
- /* Likewise, avoid including execnodes.h here */
26
- typedef void (*fmExprContextCallbackFunction) (Datum arg);
27
-
28
- /* Likewise, avoid including stringinfo.h here */
29
- typedef struct StringInfoData *fmStringInfo;
30
-
31
-
32
- /*
33
- * All functions that can be called directly by fmgr must have this signature.
34
- * (Other functions can be called by using a handler that does have this
35
- * signature.)
36
- */
37
-
38
- typedef struct FunctionCallInfoBaseData *FunctionCallInfo;
39
-
40
- typedef Datum (*PGFunction) (FunctionCallInfo fcinfo);
41
-
42
- /*
43
- * This struct holds the system-catalog information that must be looked up
44
- * before a function can be called through fmgr. If the same function is
45
- * to be called multiple times, the lookup need be done only once and the
46
- * info struct saved for re-use.
47
- *
48
- * Note that fn_expr really is parse-time-determined information about the
49
- * arguments, rather than about the function itself. But it's convenient to
50
- * store it here rather than in FunctionCallInfoBaseData, where it might more
51
- * logically belong.
52
- *
53
- * fn_extra is available for use by the called function; all other fields
54
- * should be treated as read-only after the struct is created.
55
- */
56
- typedef struct FmgrInfo
57
- {
58
- PGFunction fn_addr; /* pointer to function or handler to be called */
59
- Oid fn_oid; /* OID of function (NOT of handler, if any) */
60
- short fn_nargs; /* number of input args (0..FUNC_MAX_ARGS) */
61
- bool fn_strict; /* function is "strict" (NULL in => NULL out) */
62
- bool fn_retset; /* function returns a set */
63
- unsigned char fn_stats; /* collect stats if track_functions > this */
64
- void *fn_extra; /* extra space for use by handler */
65
- MemoryContext fn_mcxt; /* memory context to store fn_extra in */
66
- fmNodePtr fn_expr; /* expression parse tree for call, or NULL */
67
- } FmgrInfo;
68
-
69
- /*
70
- * This struct is the data actually passed to an fmgr-called function.
71
- *
72
- * The called function is expected to set isnull, and possibly resultinfo or
73
- * fields in whatever resultinfo points to. It should not change any other
74
- * fields. (In particular, scribbling on the argument arrays is a bad idea,
75
- * since some callers assume they can re-call with the same arguments.)
76
- *
77
- * Note that enough space for arguments needs to be provided, either by using
78
- * SizeForFunctionCallInfo() in dynamic allocations, or by using
79
- * LOCAL_FCINFO() for on-stack allocations.
80
- *
81
- * This struct is named *BaseData, rather than *Data, to break pre v12 code
82
- * that allocated FunctionCallInfoData itself, as it'd often silently break
83
- * old code due to no space for arguments being provided.
84
- */
85
- typedef struct FunctionCallInfoBaseData
86
- {
87
- FmgrInfo *flinfo; /* ptr to lookup info used for this call */
88
- fmNodePtr context; /* pass info about context of call */
89
- fmNodePtr resultinfo; /* pass or return extra info about result */
90
- Oid fncollation; /* collation for function to use */
91
- #define FIELDNO_FUNCTIONCALLINFODATA_ISNULL 4
92
- bool isnull; /* function must set true if result is NULL */
93
- short nargs; /* # arguments actually passed */
94
- #define FIELDNO_FUNCTIONCALLINFODATA_ARGS 6
95
- NullableDatum args[FLEXIBLE_ARRAY_MEMBER];
96
- } FunctionCallInfoBaseData;
97
-
98
- /*
99
- * Space needed for a FunctionCallInfoBaseData struct with sufficient space
100
- * for `nargs` arguments.
101
- */
102
- #define SizeForFunctionCallInfo(nargs) \
103
- (offsetof(FunctionCallInfoBaseData, args) + \
104
- sizeof(NullableDatum) * (nargs))
105
-
106
- /*
107
- * This macro ensures that `name` points to a stack-allocated
108
- * FunctionCallInfoBaseData struct with sufficient space for `nargs` arguments.
109
- */
110
- #define LOCAL_FCINFO(name, nargs) \
111
- /* use union with FunctionCallInfoBaseData to guarantee alignment */ \
112
- union \
113
- { \
114
- FunctionCallInfoBaseData fcinfo; \
115
- /* ensure enough space for nargs args is available */ \
116
- char fcinfo_data[SizeForFunctionCallInfo(nargs)]; \
117
- } name##data; \
118
- FunctionCallInfo name = &name##data.fcinfo
119
-
120
- /*
121
- * This routine fills a FmgrInfo struct, given the OID
122
- * of the function to be called.
123
- */
124
- extern void fmgr_info(Oid functionId, FmgrInfo *finfo);
125
-
126
- /*
127
- * Same, when the FmgrInfo struct is in a memory context longer-lived than
128
- * CurrentMemoryContext. The specified context will be set as fn_mcxt
129
- * and used to hold all subsidiary data of finfo.
130
- */
131
- extern void fmgr_info_cxt(Oid functionId, FmgrInfo *finfo,
132
- MemoryContext mcxt);
133
-
134
- /* Convenience macro for setting the fn_expr field */
135
- #define fmgr_info_set_expr(expr, finfo) \
136
- ((finfo)->fn_expr = (expr))
137
-
138
- /*
139
- * Copy an FmgrInfo struct
140
- */
141
- extern void fmgr_info_copy(FmgrInfo *dstinfo, FmgrInfo *srcinfo,
142
- MemoryContext destcxt);
143
-
144
- extern void fmgr_symbol(Oid functionId, char **mod, char **fn);
145
-
146
- /*
147
- * This macro initializes all the fields of a FunctionCallInfoBaseData except
148
- * for the args[] array.
149
- */
150
- #define InitFunctionCallInfoData(Fcinfo, Flinfo, Nargs, Collation, Context, Resultinfo) \
151
- do { \
152
- (Fcinfo).flinfo = (Flinfo); \
153
- (Fcinfo).context = (Context); \
154
- (Fcinfo).resultinfo = (Resultinfo); \
155
- (Fcinfo).fncollation = (Collation); \
156
- (Fcinfo).isnull = false; \
157
- (Fcinfo).nargs = (Nargs); \
158
- } while (0)
159
-
160
- /*
161
- * This macro invokes a function given a filled-in FunctionCallInfoBaseData
162
- * struct. The macro result is the returned Datum --- but note that
163
- * caller must still check fcinfo->isnull! Also, if function is strict,
164
- * it is caller's responsibility to verify that no null arguments are present
165
- * before calling.
166
- *
167
- * Some code performs multiple calls without redoing InitFunctionCallInfoData,
168
- * possibly altering the argument values. This is okay, but be sure to reset
169
- * the fcinfo->isnull flag before each call, since callees are permitted to
170
- * assume that starts out false.
171
- */
172
- #define FunctionCallInvoke(fcinfo) ((* (fcinfo)->flinfo->fn_addr) (fcinfo))
173
-
174
-
175
- /*-------------------------------------------------------------------------
176
- * Support macros to ease writing fmgr-compatible functions
177
- *
178
- * A C-coded fmgr-compatible function should be declared as
179
- *
180
- * Datum
181
- * function_name(PG_FUNCTION_ARGS)
182
- * {
183
- * ...
184
- * }
185
- *
186
- * It should access its arguments using appropriate PG_GETARG_xxx macros
187
- * and should return its result using PG_RETURN_xxx.
188
- *
189
- *-------------------------------------------------------------------------
190
- */
191
-
192
- /* Standard parameter list for fmgr-compatible functions */
193
- #define PG_FUNCTION_ARGS FunctionCallInfo fcinfo
194
-
195
- /*
196
- * Get collation function should use.
197
- */
198
- #define PG_GET_COLLATION() (fcinfo->fncollation)
199
-
200
- /*
201
- * Get number of arguments passed to function.
202
- */
203
- #define PG_NARGS() (fcinfo->nargs)
204
-
205
- /*
206
- * If function is not marked "proisstrict" in pg_proc, it must check for
207
- * null arguments using this macro. Do not try to GETARG a null argument!
208
- */
209
- #define PG_ARGISNULL(n) (fcinfo->args[n].isnull)
210
-
211
- /*
212
- * Support for fetching detoasted copies of toastable datatypes (all of
213
- * which are varlena types). pg_detoast_datum() gives you either the input
214
- * datum (if not toasted) or a detoasted copy allocated with palloc().
215
- * pg_detoast_datum_copy() always gives you a palloc'd copy --- use it
216
- * if you need a modifiable copy of the input. Caller is expected to have
217
- * checked for null inputs first, if necessary.
218
- *
219
- * pg_detoast_datum_packed() will return packed (1-byte header) datums
220
- * unmodified. It will still expand an externally toasted or compressed datum.
221
- * The resulting datum can be accessed using VARSIZE_ANY() and VARDATA_ANY()
222
- * (beware of multiple evaluations in those macros!)
223
- *
224
- * In consumers oblivious to data alignment, call PG_DETOAST_DATUM_PACKED(),
225
- * VARDATA_ANY(), VARSIZE_ANY() and VARSIZE_ANY_EXHDR(). Elsewhere, call
226
- * PG_DETOAST_DATUM(), VARDATA() and VARSIZE(). Directly fetching an int16,
227
- * int32 or wider field in the struct representing the datum layout requires
228
- * aligned data. memcpy() is alignment-oblivious, as are most operations on
229
- * datatypes, such as text, whose layout struct contains only char fields.
230
- *
231
- * Note: it'd be nice if these could be macros, but I see no way to do that
232
- * without evaluating the arguments multiple times, which is NOT acceptable.
233
- */
234
- extern struct varlena *pg_detoast_datum(struct varlena *datum);
235
- extern struct varlena *pg_detoast_datum_copy(struct varlena *datum);
236
- extern struct varlena *pg_detoast_datum_slice(struct varlena *datum,
237
- int32 first, int32 count);
238
- extern struct varlena *pg_detoast_datum_packed(struct varlena *datum);
239
-
240
- #define PG_DETOAST_DATUM(datum) \
241
- pg_detoast_datum((struct varlena *) DatumGetPointer(datum))
242
- #define PG_DETOAST_DATUM_COPY(datum) \
243
- pg_detoast_datum_copy((struct varlena *) DatumGetPointer(datum))
244
- #define PG_DETOAST_DATUM_SLICE(datum,f,c) \
245
- pg_detoast_datum_slice((struct varlena *) DatumGetPointer(datum), \
246
- (int32) (f), (int32) (c))
247
- /* WARNING -- unaligned pointer */
248
- #define PG_DETOAST_DATUM_PACKED(datum) \
249
- pg_detoast_datum_packed((struct varlena *) DatumGetPointer(datum))
250
-
251
- /*
252
- * Support for cleaning up detoasted copies of inputs. This must only
253
- * be used for pass-by-ref datatypes, and normally would only be used
254
- * for toastable types. If the given pointer is different from the
255
- * original argument, assume it's a palloc'd detoasted copy, and pfree it.
256
- * NOTE: most functions on toastable types do not have to worry about this,
257
- * but we currently require that support functions for indexes not leak
258
- * memory.
259
- */
260
- #define PG_FREE_IF_COPY(ptr,n) \
261
- do { \
262
- if ((Pointer) (ptr) != PG_GETARG_POINTER(n)) \
263
- pfree(ptr); \
264
- } while (0)
265
-
266
- /* Macros for fetching arguments of standard types */
267
-
268
- #define PG_GETARG_DATUM(n) (fcinfo->args[n].value)
269
- #define PG_GETARG_INT32(n) DatumGetInt32(PG_GETARG_DATUM(n))
270
- #define PG_GETARG_UINT32(n) DatumGetUInt32(PG_GETARG_DATUM(n))
271
- #define PG_GETARG_INT16(n) DatumGetInt16(PG_GETARG_DATUM(n))
272
- #define PG_GETARG_UINT16(n) DatumGetUInt16(PG_GETARG_DATUM(n))
273
- #define PG_GETARG_CHAR(n) DatumGetChar(PG_GETARG_DATUM(n))
274
- #define PG_GETARG_BOOL(n) DatumGetBool(PG_GETARG_DATUM(n))
275
- #define PG_GETARG_OID(n) DatumGetObjectId(PG_GETARG_DATUM(n))
276
- #define PG_GETARG_POINTER(n) DatumGetPointer(PG_GETARG_DATUM(n))
277
- #define PG_GETARG_CSTRING(n) DatumGetCString(PG_GETARG_DATUM(n))
278
- #define PG_GETARG_NAME(n) DatumGetName(PG_GETARG_DATUM(n))
279
- /* these macros hide the pass-by-reference-ness of the datatype: */
280
- #define PG_GETARG_FLOAT4(n) DatumGetFloat4(PG_GETARG_DATUM(n))
281
- #define PG_GETARG_FLOAT8(n) DatumGetFloat8(PG_GETARG_DATUM(n))
282
- #define PG_GETARG_INT64(n) DatumGetInt64(PG_GETARG_DATUM(n))
283
- /* use this if you want the raw, possibly-toasted input datum: */
284
- #define PG_GETARG_RAW_VARLENA_P(n) ((struct varlena *) PG_GETARG_POINTER(n))
285
- /* use this if you want the input datum de-toasted: */
286
- #define PG_GETARG_VARLENA_P(n) PG_DETOAST_DATUM(PG_GETARG_DATUM(n))
287
- /* and this if you can handle 1-byte-header datums: */
288
- #define PG_GETARG_VARLENA_PP(n) PG_DETOAST_DATUM_PACKED(PG_GETARG_DATUM(n))
289
- /* DatumGetFoo macros for varlena types will typically look like this: */
290
- #define DatumGetByteaPP(X) ((bytea *) PG_DETOAST_DATUM_PACKED(X))
291
- #define DatumGetTextPP(X) ((text *) PG_DETOAST_DATUM_PACKED(X))
292
- #define DatumGetBpCharPP(X) ((BpChar *) PG_DETOAST_DATUM_PACKED(X))
293
- #define DatumGetVarCharPP(X) ((VarChar *) PG_DETOAST_DATUM_PACKED(X))
294
- #define DatumGetHeapTupleHeader(X) ((HeapTupleHeader) PG_DETOAST_DATUM(X))
295
- /* And we also offer variants that return an OK-to-write copy */
296
- #define DatumGetByteaPCopy(X) ((bytea *) PG_DETOAST_DATUM_COPY(X))
297
- #define DatumGetTextPCopy(X) ((text *) PG_DETOAST_DATUM_COPY(X))
298
- #define DatumGetBpCharPCopy(X) ((BpChar *) PG_DETOAST_DATUM_COPY(X))
299
- #define DatumGetVarCharPCopy(X) ((VarChar *) PG_DETOAST_DATUM_COPY(X))
300
- #define DatumGetHeapTupleHeaderCopy(X) ((HeapTupleHeader) PG_DETOAST_DATUM_COPY(X))
301
- /* Variants which return n bytes starting at pos. m */
302
- #define DatumGetByteaPSlice(X,m,n) ((bytea *) PG_DETOAST_DATUM_SLICE(X,m,n))
303
- #define DatumGetTextPSlice(X,m,n) ((text *) PG_DETOAST_DATUM_SLICE(X,m,n))
304
- #define DatumGetBpCharPSlice(X,m,n) ((BpChar *) PG_DETOAST_DATUM_SLICE(X,m,n))
305
- #define DatumGetVarCharPSlice(X,m,n) ((VarChar *) PG_DETOAST_DATUM_SLICE(X,m,n))
306
- /* GETARG macros for varlena types will typically look like this: */
307
- #define PG_GETARG_BYTEA_PP(n) DatumGetByteaPP(PG_GETARG_DATUM(n))
308
- #define PG_GETARG_TEXT_PP(n) DatumGetTextPP(PG_GETARG_DATUM(n))
309
- #define PG_GETARG_BPCHAR_PP(n) DatumGetBpCharPP(PG_GETARG_DATUM(n))
310
- #define PG_GETARG_VARCHAR_PP(n) DatumGetVarCharPP(PG_GETARG_DATUM(n))
311
- #define PG_GETARG_HEAPTUPLEHEADER(n) DatumGetHeapTupleHeader(PG_GETARG_DATUM(n))
312
- /* And we also offer variants that return an OK-to-write copy */
313
- #define PG_GETARG_BYTEA_P_COPY(n) DatumGetByteaPCopy(PG_GETARG_DATUM(n))
314
- #define PG_GETARG_TEXT_P_COPY(n) DatumGetTextPCopy(PG_GETARG_DATUM(n))
315
- #define PG_GETARG_BPCHAR_P_COPY(n) DatumGetBpCharPCopy(PG_GETARG_DATUM(n))
316
- #define PG_GETARG_VARCHAR_P_COPY(n) DatumGetVarCharPCopy(PG_GETARG_DATUM(n))
317
- #define PG_GETARG_HEAPTUPLEHEADER_COPY(n) DatumGetHeapTupleHeaderCopy(PG_GETARG_DATUM(n))
318
- /* And a b-byte slice from position a -also OK to write */
319
- #define PG_GETARG_BYTEA_P_SLICE(n,a,b) DatumGetByteaPSlice(PG_GETARG_DATUM(n),a,b)
320
- #define PG_GETARG_TEXT_P_SLICE(n,a,b) DatumGetTextPSlice(PG_GETARG_DATUM(n),a,b)
321
- #define PG_GETARG_BPCHAR_P_SLICE(n,a,b) DatumGetBpCharPSlice(PG_GETARG_DATUM(n),a,b)
322
- #define PG_GETARG_VARCHAR_P_SLICE(n,a,b) DatumGetVarCharPSlice(PG_GETARG_DATUM(n),a,b)
323
- /*
324
- * Obsolescent variants that guarantee INT alignment for the return value.
325
- * Few operations on these particular types need alignment, mainly operations
326
- * that cast the VARDATA pointer to a type like int16[]. Most code should use
327
- * the ...PP(X) counterpart. Nonetheless, these appear frequently in code
328
- * predating the PostgreSQL 8.3 introduction of the ...PP(X) variants.
329
- */
330
- #define DatumGetByteaP(X) ((bytea *) PG_DETOAST_DATUM(X))
331
- #define DatumGetTextP(X) ((text *) PG_DETOAST_DATUM(X))
332
- #define DatumGetBpCharP(X) ((BpChar *) PG_DETOAST_DATUM(X))
333
- #define DatumGetVarCharP(X) ((VarChar *) PG_DETOAST_DATUM(X))
334
- #define PG_GETARG_BYTEA_P(n) DatumGetByteaP(PG_GETARG_DATUM(n))
335
- #define PG_GETARG_TEXT_P(n) DatumGetTextP(PG_GETARG_DATUM(n))
336
- #define PG_GETARG_BPCHAR_P(n) DatumGetBpCharP(PG_GETARG_DATUM(n))
337
- #define PG_GETARG_VARCHAR_P(n) DatumGetVarCharP(PG_GETARG_DATUM(n))
338
-
339
- /* To access options from opclass support functions use this: */
340
- #define PG_HAS_OPCLASS_OPTIONS() has_fn_opclass_options(fcinfo->flinfo)
341
- #define PG_GET_OPCLASS_OPTIONS() get_fn_opclass_options(fcinfo->flinfo)
342
-
343
- /* To return a NULL do this: */
344
- #define PG_RETURN_NULL() \
345
- do { fcinfo->isnull = true; return (Datum) 0; } while (0)
346
-
347
- /* A few internal functions return void (which is not the same as NULL!) */
348
- #define PG_RETURN_VOID() return (Datum) 0
349
-
350
- /* Macros for returning results of standard types */
351
-
352
- #define PG_RETURN_DATUM(x) return (x)
353
- #define PG_RETURN_INT32(x) return Int32GetDatum(x)
354
- #define PG_RETURN_UINT32(x) return UInt32GetDatum(x)
355
- #define PG_RETURN_INT16(x) return Int16GetDatum(x)
356
- #define PG_RETURN_UINT16(x) return UInt16GetDatum(x)
357
- #define PG_RETURN_CHAR(x) return CharGetDatum(x)
358
- #define PG_RETURN_BOOL(x) return BoolGetDatum(x)
359
- #define PG_RETURN_OID(x) return ObjectIdGetDatum(x)
360
- #define PG_RETURN_POINTER(x) return PointerGetDatum(x)
361
- #define PG_RETURN_CSTRING(x) return CStringGetDatum(x)
362
- #define PG_RETURN_NAME(x) return NameGetDatum(x)
363
- /* these macros hide the pass-by-reference-ness of the datatype: */
364
- #define PG_RETURN_FLOAT4(x) return Float4GetDatum(x)
365
- #define PG_RETURN_FLOAT8(x) return Float8GetDatum(x)
366
- #define PG_RETURN_INT64(x) return Int64GetDatum(x)
367
- #define PG_RETURN_UINT64(x) return UInt64GetDatum(x)
368
- /* RETURN macros for other pass-by-ref types will typically look like this: */
369
- #define PG_RETURN_BYTEA_P(x) PG_RETURN_POINTER(x)
370
- #define PG_RETURN_TEXT_P(x) PG_RETURN_POINTER(x)
371
- #define PG_RETURN_BPCHAR_P(x) PG_RETURN_POINTER(x)
372
- #define PG_RETURN_VARCHAR_P(x) PG_RETURN_POINTER(x)
373
- #define PG_RETURN_HEAPTUPLEHEADER(x) return HeapTupleHeaderGetDatum(x)
374
-
375
-
376
- /*-------------------------------------------------------------------------
377
- * Support for detecting call convention of dynamically-loaded functions
378
- *
379
- * Dynamically loaded functions currently can only use the version-1 ("new
380
- * style") calling convention. Version-0 ("old style") is not supported
381
- * anymore. Version 1 is the call convention defined in this header file, and
382
- * must be accompanied by the macro call
383
- *
384
- * PG_FUNCTION_INFO_V1(function_name);
385
- *
386
- * Note that internal functions do not need this decoration since they are
387
- * assumed to be version-1.
388
- *
389
- *-------------------------------------------------------------------------
390
- */
391
-
392
- typedef struct
393
- {
394
- int api_version; /* specifies call convention version number */
395
- /* More fields may be added later, for version numbers > 1. */
396
- } Pg_finfo_record;
397
-
398
- /* Expected signature of an info function */
399
- typedef const Pg_finfo_record *(*PGFInfoFunction) (void);
400
-
401
- /*
402
- * Macro to build an info function associated with the given function name.
403
- *
404
- * As a convenience, also provide an "extern" declaration for the given
405
- * function name, so that writers of C functions need not write that too.
406
- *
407
- * On Windows, the function and info function must be exported. Our normal
408
- * build processes take care of that via .DEF files or --export-all-symbols.
409
- * Module authors using a different build process might need to manually
410
- * declare the function PGDLLEXPORT. We do that automatically here for the
411
- * info function, since authors shouldn't need to be explicitly aware of it.
412
- */
413
- #define PG_FUNCTION_INFO_V1(funcname) \
414
- extern Datum funcname(PG_FUNCTION_ARGS); \
415
- extern PGDLLEXPORT const Pg_finfo_record * CppConcat(pg_finfo_,funcname)(void); \
416
- const Pg_finfo_record * \
417
- CppConcat(pg_finfo_,funcname) (void) \
418
- { \
419
- static const Pg_finfo_record my_finfo = { 1 }; \
420
- return &my_finfo; \
421
- } \
422
- extern int no_such_variable
423
-
424
-
425
- /*-------------------------------------------------------------------------
426
- * Support for verifying backend compatibility of loaded modules
427
- *
428
- * We require dynamically-loaded modules to include the macro call
429
- * PG_MODULE_MAGIC;
430
- * so that we can check for obvious incompatibility, such as being compiled
431
- * for a different major PostgreSQL version.
432
- *
433
- * To compile with versions of PostgreSQL that do not support this,
434
- * you may put an #ifdef/#endif test around it. Note that in a multiple-
435
- * source-file module, the macro call should only appear once.
436
- *
437
- * The specific items included in the magic block are intended to be ones that
438
- * are custom-configurable and especially likely to break dynamically loaded
439
- * modules if they were compiled with other values. Also, the length field
440
- * can be used to detect definition changes.
441
- *
442
- * Note: we compare magic blocks with memcmp(), so there had better not be
443
- * any alignment pad bytes in them.
444
- *
445
- * Note: when changing the contents of magic blocks, be sure to adjust the
446
- * incompatible_module_error() function in dfmgr.c.
447
- *-------------------------------------------------------------------------
448
- */
449
-
450
- /* Definition of the magic block structure */
451
- typedef struct
452
- {
453
- int len; /* sizeof(this struct) */
454
- int version; /* PostgreSQL major version */
455
- int funcmaxargs; /* FUNC_MAX_ARGS */
456
- int indexmaxkeys; /* INDEX_MAX_KEYS */
457
- int namedatalen; /* NAMEDATALEN */
458
- int float8byval; /* FLOAT8PASSBYVAL */
459
- } Pg_magic_struct;
460
-
461
- /* The actual data block contents */
462
- #define PG_MODULE_MAGIC_DATA \
463
- { \
464
- sizeof(Pg_magic_struct), \
465
- PG_VERSION_NUM / 100, \
466
- FUNC_MAX_ARGS, \
467
- INDEX_MAX_KEYS, \
468
- NAMEDATALEN, \
469
- FLOAT8PASSBYVAL \
470
- }
471
-
472
- /*
473
- * Declare the module magic function. It needs to be a function as the dlsym
474
- * in the backend is only guaranteed to work on functions, not data
475
- */
476
- typedef const Pg_magic_struct *(*PGModuleMagicFunction) (void);
477
-
478
- #define PG_MAGIC_FUNCTION_NAME Pg_magic_func
479
- #define PG_MAGIC_FUNCTION_NAME_STRING "Pg_magic_func"
480
-
481
- #define PG_MODULE_MAGIC \
482
- extern PGDLLEXPORT const Pg_magic_struct *PG_MAGIC_FUNCTION_NAME(void); \
483
- const Pg_magic_struct * \
484
- PG_MAGIC_FUNCTION_NAME(void) \
485
- { \
486
- static const Pg_magic_struct Pg_magic_data = PG_MODULE_MAGIC_DATA; \
487
- return &Pg_magic_data; \
488
- } \
489
- extern int no_such_variable
490
-
491
-
492
- /*-------------------------------------------------------------------------
493
- * Support routines and macros for callers of fmgr-compatible functions
494
- *-------------------------------------------------------------------------
495
- */
496
-
497
- /* These are for invocation of a specifically named function with a
498
- * directly-computed parameter list. Note that neither arguments nor result
499
- * are allowed to be NULL. Also, the function cannot be one that needs to
500
- * look at FmgrInfo, since there won't be any.
501
- */
502
- extern Datum DirectFunctionCall1Coll(PGFunction func, Oid collation,
503
- Datum arg1);
504
- extern Datum DirectFunctionCall2Coll(PGFunction func, Oid collation,
505
- Datum arg1, Datum arg2);
506
- extern Datum DirectFunctionCall3Coll(PGFunction func, Oid collation,
507
- Datum arg1, Datum arg2,
508
- Datum arg3);
509
- extern Datum DirectFunctionCall4Coll(PGFunction func, Oid collation,
510
- Datum arg1, Datum arg2,
511
- Datum arg3, Datum arg4);
512
- extern Datum DirectFunctionCall5Coll(PGFunction func, Oid collation,
513
- Datum arg1, Datum arg2,
514
- Datum arg3, Datum arg4, Datum arg5);
515
- extern Datum DirectFunctionCall6Coll(PGFunction func, Oid collation,
516
- Datum arg1, Datum arg2,
517
- Datum arg3, Datum arg4, Datum arg5,
518
- Datum arg6);
519
- extern Datum DirectFunctionCall7Coll(PGFunction func, Oid collation,
520
- Datum arg1, Datum arg2,
521
- Datum arg3, Datum arg4, Datum arg5,
522
- Datum arg6, Datum arg7);
523
- extern Datum DirectFunctionCall8Coll(PGFunction func, Oid collation,
524
- Datum arg1, Datum arg2,
525
- Datum arg3, Datum arg4, Datum arg5,
526
- Datum arg6, Datum arg7, Datum arg8);
527
- extern Datum DirectFunctionCall9Coll(PGFunction func, Oid collation,
528
- Datum arg1, Datum arg2,
529
- Datum arg3, Datum arg4, Datum arg5,
530
- Datum arg6, Datum arg7, Datum arg8,
531
- Datum arg9);
532
-
533
- /*
534
- * These functions work like the DirectFunctionCall functions except that
535
- * they use the flinfo parameter to initialise the fcinfo for the call.
536
- * It's recommended that the callee only use the fn_extra and fn_mcxt
537
- * fields, as other fields will typically describe the calling function
538
- * not the callee. Conversely, the calling function should not have
539
- * used fn_extra, unless its use is known to be compatible with the callee's.
540
- */
541
- extern Datum CallerFInfoFunctionCall1(PGFunction func, FmgrInfo *flinfo,
542
- Oid collation, Datum arg1);
543
- extern Datum CallerFInfoFunctionCall2(PGFunction func, FmgrInfo *flinfo,
544
- Oid collation, Datum arg1, Datum arg2);
545
-
546
- /* These are for invocation of a previously-looked-up function with a
547
- * directly-computed parameter list. Note that neither arguments nor result
548
- * are allowed to be NULL.
549
- */
550
- extern Datum FunctionCall0Coll(FmgrInfo *flinfo, Oid collation);
551
- extern Datum FunctionCall1Coll(FmgrInfo *flinfo, Oid collation,
552
- Datum arg1);
553
- extern Datum FunctionCall2Coll(FmgrInfo *flinfo, Oid collation,
554
- Datum arg1, Datum arg2);
555
- extern Datum FunctionCall3Coll(FmgrInfo *flinfo, Oid collation,
556
- Datum arg1, Datum arg2,
557
- Datum arg3);
558
- extern Datum FunctionCall4Coll(FmgrInfo *flinfo, Oid collation,
559
- Datum arg1, Datum arg2,
560
- Datum arg3, Datum arg4);
561
- extern Datum FunctionCall5Coll(FmgrInfo *flinfo, Oid collation,
562
- Datum arg1, Datum arg2,
563
- Datum arg3, Datum arg4, Datum arg5);
564
- extern Datum FunctionCall6Coll(FmgrInfo *flinfo, Oid collation,
565
- Datum arg1, Datum arg2,
566
- Datum arg3, Datum arg4, Datum arg5,
567
- Datum arg6);
568
- extern Datum FunctionCall7Coll(FmgrInfo *flinfo, Oid collation,
569
- Datum arg1, Datum arg2,
570
- Datum arg3, Datum arg4, Datum arg5,
571
- Datum arg6, Datum arg7);
572
- extern Datum FunctionCall8Coll(FmgrInfo *flinfo, Oid collation,
573
- Datum arg1, Datum arg2,
574
- Datum arg3, Datum arg4, Datum arg5,
575
- Datum arg6, Datum arg7, Datum arg8);
576
- extern Datum FunctionCall9Coll(FmgrInfo *flinfo, Oid collation,
577
- Datum arg1, Datum arg2,
578
- Datum arg3, Datum arg4, Datum arg5,
579
- Datum arg6, Datum arg7, Datum arg8,
580
- Datum arg9);
581
-
582
- /* These are for invocation of a function identified by OID with a
583
- * directly-computed parameter list. Note that neither arguments nor result
584
- * are allowed to be NULL. These are essentially fmgr_info() followed by
585
- * FunctionCallN(). If the same function is to be invoked repeatedly, do the
586
- * fmgr_info() once and then use FunctionCallN().
587
- */
588
- extern Datum OidFunctionCall0Coll(Oid functionId, Oid collation);
589
- extern Datum OidFunctionCall1Coll(Oid functionId, Oid collation,
590
- Datum arg1);
591
- extern Datum OidFunctionCall2Coll(Oid functionId, Oid collation,
592
- Datum arg1, Datum arg2);
593
- extern Datum OidFunctionCall3Coll(Oid functionId, Oid collation,
594
- Datum arg1, Datum arg2,
595
- Datum arg3);
596
- extern Datum OidFunctionCall4Coll(Oid functionId, Oid collation,
597
- Datum arg1, Datum arg2,
598
- Datum arg3, Datum arg4);
599
- extern Datum OidFunctionCall5Coll(Oid functionId, Oid collation,
600
- Datum arg1, Datum arg2,
601
- Datum arg3, Datum arg4, Datum arg5);
602
- extern Datum OidFunctionCall6Coll(Oid functionId, Oid collation,
603
- Datum arg1, Datum arg2,
604
- Datum arg3, Datum arg4, Datum arg5,
605
- Datum arg6);
606
- extern Datum OidFunctionCall7Coll(Oid functionId, Oid collation,
607
- Datum arg1, Datum arg2,
608
- Datum arg3, Datum arg4, Datum arg5,
609
- Datum arg6, Datum arg7);
610
- extern Datum OidFunctionCall8Coll(Oid functionId, Oid collation,
611
- Datum arg1, Datum arg2,
612
- Datum arg3, Datum arg4, Datum arg5,
613
- Datum arg6, Datum arg7, Datum arg8);
614
- extern Datum OidFunctionCall9Coll(Oid functionId, Oid collation,
615
- Datum arg1, Datum arg2,
616
- Datum arg3, Datum arg4, Datum arg5,
617
- Datum arg6, Datum arg7, Datum arg8,
618
- Datum arg9);
619
-
620
- /* These macros allow the collation argument to be omitted (with a default of
621
- * InvalidOid, ie, no collation). They exist mostly for backwards
622
- * compatibility of source code.
623
- */
624
- #define DirectFunctionCall1(func, arg1) \
625
- DirectFunctionCall1Coll(func, InvalidOid, arg1)
626
- #define DirectFunctionCall2(func, arg1, arg2) \
627
- DirectFunctionCall2Coll(func, InvalidOid, arg1, arg2)
628
- #define DirectFunctionCall3(func, arg1, arg2, arg3) \
629
- DirectFunctionCall3Coll(func, InvalidOid, arg1, arg2, arg3)
630
- #define DirectFunctionCall4(func, arg1, arg2, arg3, arg4) \
631
- DirectFunctionCall4Coll(func, InvalidOid, arg1, arg2, arg3, arg4)
632
- #define DirectFunctionCall5(func, arg1, arg2, arg3, arg4, arg5) \
633
- DirectFunctionCall5Coll(func, InvalidOid, arg1, arg2, arg3, arg4, arg5)
634
- #define DirectFunctionCall6(func, arg1, arg2, arg3, arg4, arg5, arg6) \
635
- DirectFunctionCall6Coll(func, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6)
636
- #define DirectFunctionCall7(func, arg1, arg2, arg3, arg4, arg5, arg6, arg7) \
637
- DirectFunctionCall7Coll(func, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7)
638
- #define DirectFunctionCall8(func, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) \
639
- DirectFunctionCall8Coll(func, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)
640
- #define DirectFunctionCall9(func, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) \
641
- DirectFunctionCall9Coll(func, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9)
642
- #define FunctionCall1(flinfo, arg1) \
643
- FunctionCall1Coll(flinfo, InvalidOid, arg1)
644
- #define FunctionCall2(flinfo, arg1, arg2) \
645
- FunctionCall2Coll(flinfo, InvalidOid, arg1, arg2)
646
- #define FunctionCall3(flinfo, arg1, arg2, arg3) \
647
- FunctionCall3Coll(flinfo, InvalidOid, arg1, arg2, arg3)
648
- #define FunctionCall4(flinfo, arg1, arg2, arg3, arg4) \
649
- FunctionCall4Coll(flinfo, InvalidOid, arg1, arg2, arg3, arg4)
650
- #define FunctionCall5(flinfo, arg1, arg2, arg3, arg4, arg5) \
651
- FunctionCall5Coll(flinfo, InvalidOid, arg1, arg2, arg3, arg4, arg5)
652
- #define FunctionCall6(flinfo, arg1, arg2, arg3, arg4, arg5, arg6) \
653
- FunctionCall6Coll(flinfo, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6)
654
- #define FunctionCall7(flinfo, arg1, arg2, arg3, arg4, arg5, arg6, arg7) \
655
- FunctionCall7Coll(flinfo, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7)
656
- #define FunctionCall8(flinfo, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) \
657
- FunctionCall8Coll(flinfo, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)
658
- #define FunctionCall9(flinfo, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) \
659
- FunctionCall9Coll(flinfo, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9)
660
- #define OidFunctionCall0(functionId) \
661
- OidFunctionCall0Coll(functionId, InvalidOid)
662
- #define OidFunctionCall1(functionId, arg1) \
663
- OidFunctionCall1Coll(functionId, InvalidOid, arg1)
664
- #define OidFunctionCall2(functionId, arg1, arg2) \
665
- OidFunctionCall2Coll(functionId, InvalidOid, arg1, arg2)
666
- #define OidFunctionCall3(functionId, arg1, arg2, arg3) \
667
- OidFunctionCall3Coll(functionId, InvalidOid, arg1, arg2, arg3)
668
- #define OidFunctionCall4(functionId, arg1, arg2, arg3, arg4) \
669
- OidFunctionCall4Coll(functionId, InvalidOid, arg1, arg2, arg3, arg4)
670
- #define OidFunctionCall5(functionId, arg1, arg2, arg3, arg4, arg5) \
671
- OidFunctionCall5Coll(functionId, InvalidOid, arg1, arg2, arg3, arg4, arg5)
672
- #define OidFunctionCall6(functionId, arg1, arg2, arg3, arg4, arg5, arg6) \
673
- OidFunctionCall6Coll(functionId, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6)
674
- #define OidFunctionCall7(functionId, arg1, arg2, arg3, arg4, arg5, arg6, arg7) \
675
- OidFunctionCall7Coll(functionId, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7)
676
- #define OidFunctionCall8(functionId, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) \
677
- OidFunctionCall8Coll(functionId, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)
678
- #define OidFunctionCall9(functionId, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) \
679
- OidFunctionCall9Coll(functionId, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9)
680
-
681
-
682
- /* Special cases for convenient invocation of datatype I/O functions. */
683
- extern Datum InputFunctionCall(FmgrInfo *flinfo, char *str,
684
- Oid typioparam, int32 typmod);
685
- extern Datum OidInputFunctionCall(Oid functionId, char *str,
686
- Oid typioparam, int32 typmod);
687
- extern char *OutputFunctionCall(FmgrInfo *flinfo, Datum val);
688
- extern char *OidOutputFunctionCall(Oid functionId, Datum val);
689
- extern Datum ReceiveFunctionCall(FmgrInfo *flinfo, fmStringInfo buf,
690
- Oid typioparam, int32 typmod);
691
- extern Datum OidReceiveFunctionCall(Oid functionId, fmStringInfo buf,
692
- Oid typioparam, int32 typmod);
693
- extern bytea *SendFunctionCall(FmgrInfo *flinfo, Datum val);
694
- extern bytea *OidSendFunctionCall(Oid functionId, Datum val);
695
-
696
-
697
- /*
698
- * Routines in fmgr.c
699
- */
700
- extern const Pg_finfo_record *fetch_finfo_record(void *filehandle, const char *funcname);
701
- extern void clear_external_function_hash(void *filehandle);
702
- extern Oid fmgr_internal_function(const char *proname);
703
- extern Oid get_fn_expr_rettype(FmgrInfo *flinfo);
704
- extern Oid get_fn_expr_argtype(FmgrInfo *flinfo, int argnum);
705
- extern Oid get_call_expr_argtype(fmNodePtr expr, int argnum);
706
- extern bool get_fn_expr_arg_stable(FmgrInfo *flinfo, int argnum);
707
- extern bool get_call_expr_arg_stable(fmNodePtr expr, int argnum);
708
- extern bool get_fn_expr_variadic(FmgrInfo *flinfo);
709
- extern bytea *get_fn_opclass_options(FmgrInfo *flinfo);
710
- extern bool has_fn_opclass_options(FmgrInfo *flinfo);
711
- extern void set_fn_opclass_options(FmgrInfo *flinfo, bytea *options);
712
- extern bool CheckFunctionValidatorAccess(Oid validatorOid, Oid functionOid);
713
-
714
- /*
715
- * Routines in dfmgr.c
716
- */
717
- extern char *Dynamic_library_path;
718
-
719
- extern PGFunction load_external_function(const char *filename, const char *funcname,
720
- bool signalNotFound, void **filehandle);
721
- extern PGFunction lookup_external_function(void *filehandle, const char *funcname);
722
- extern void load_file(const char *filename, bool restricted);
723
- extern void **find_rendezvous_variable(const char *varName);
724
- extern Size EstimateLibraryStateSpace(void);
725
- extern void SerializeLibraryState(Size maxsize, char *start_address);
726
- extern void RestoreLibraryState(char *start_address);
727
-
728
- /*
729
- * Support for aggregate functions
730
- *
731
- * These are actually in executor/nodeAgg.c, but we declare them here since
732
- * the whole point is for callers to not be overly friendly with nodeAgg.
733
- */
734
-
735
- /* AggCheckCallContext can return one of the following codes, or 0: */
736
- #define AGG_CONTEXT_AGGREGATE 1 /* regular aggregate */
737
- #define AGG_CONTEXT_WINDOW 2 /* window function */
738
-
739
- extern int AggCheckCallContext(FunctionCallInfo fcinfo,
740
- MemoryContext *aggcontext);
741
- extern fmAggrefPtr AggGetAggref(FunctionCallInfo fcinfo);
742
- extern MemoryContext AggGetTempMemoryContext(FunctionCallInfo fcinfo);
743
- extern bool AggStateIsShared(FunctionCallInfo fcinfo);
744
- extern void AggRegisterCallback(FunctionCallInfo fcinfo,
745
- fmExprContextCallbackFunction func,
746
- Datum arg);
747
-
748
- /*
749
- * We allow plugin modules to hook function entry/exit. This is intended
750
- * as support for loadable security policy modules, which may want to
751
- * perform additional privilege checks on function entry or exit, or to do
752
- * other internal bookkeeping. To make this possible, such modules must be
753
- * able not only to support normal function entry and exit, but also to trap
754
- * the case where we bail out due to an error; and they must also be able to
755
- * prevent inlining.
756
- */
757
- typedef enum FmgrHookEventType
758
- {
759
- FHET_START,
760
- FHET_END,
761
- FHET_ABORT
762
- } FmgrHookEventType;
763
-
764
- typedef bool (*needs_fmgr_hook_type) (Oid fn_oid);
765
-
766
- typedef void (*fmgr_hook_type) (FmgrHookEventType event,
767
- FmgrInfo *flinfo, Datum *arg);
768
-
769
- extern PGDLLIMPORT needs_fmgr_hook_type needs_fmgr_hook;
770
- extern PGDLLIMPORT fmgr_hook_type fmgr_hook;
771
-
772
- #define FmgrHookIsNeeded(fn_oid) \
773
- (!needs_fmgr_hook ? false : (*needs_fmgr_hook)(fn_oid))
774
-
775
- #endif /* FMGR_H */