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