pg_query 5.1.0 → 6.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (490) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +30 -0
  3. data/README.md +1 -1
  4. data/Rakefile +4 -4
  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 +20 -6
  11. data/ext/pg_query/include/pg_query.h +4 -3
  12. data/ext/pg_query/include/pg_query_enum_defs.c +424 -154
  13. data/ext/pg_query/include/pg_query_fingerprint_conds.c +68 -4
  14. data/ext/pg_query/include/pg_query_fingerprint_defs.c +2952 -1845
  15. data/ext/pg_query/include/pg_query_outfuncs_conds.c +51 -3
  16. data/ext/pg_query/include/pg_query_outfuncs_defs.c +210 -23
  17. data/ext/pg_query/include/pg_query_readfuncs_conds.c +17 -1
  18. data/ext/pg_query/include/pg_query_readfuncs_defs.c +271 -52
  19. data/ext/pg_query/include/postgres/access/amapi.h +14 -3
  20. data/ext/pg_query/include/postgres/access/attmap.h +1 -1
  21. data/ext/pg_query/include/postgres/access/attnum.h +1 -1
  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 +2 -3
  25. data/ext/pg_query/include/postgres/access/commit_ts.h +2 -3
  26. data/ext/pg_query/include/postgres/access/detoast.h +1 -1
  27. data/ext/pg_query/include/postgres/access/genam.h +17 -4
  28. data/ext/pg_query/include/postgres/access/gin.h +1 -1
  29. data/ext/pg_query/include/postgres/access/htup.h +1 -1
  30. data/ext/pg_query/include/postgres/access/htup_details.h +11 -11
  31. data/ext/pg_query/include/postgres/access/itup.h +3 -3
  32. data/ext/pg_query/include/postgres/access/parallel.h +1 -2
  33. data/ext/pg_query/include/postgres/access/printtup.h +1 -1
  34. data/ext/pg_query/include/postgres/access/relation.h +1 -1
  35. data/ext/pg_query/include/postgres/access/relscan.h +1 -1
  36. data/ext/pg_query/include/postgres/access/rmgrlist.h +1 -1
  37. data/ext/pg_query/include/postgres/access/sdir.h +1 -1
  38. data/ext/pg_query/include/postgres/access/skey.h +1 -1
  39. data/ext/pg_query/include/postgres/access/slru.h +218 -0
  40. data/ext/pg_query/include/postgres/access/stratnum.h +1 -1
  41. data/ext/pg_query/include/postgres/access/sysattr.h +1 -1
  42. data/ext/pg_query/include/postgres/access/table.h +1 -1
  43. data/ext/pg_query/include/postgres/access/tableam.h +35 -25
  44. data/ext/pg_query/include/postgres/access/tidstore.h +50 -0
  45. data/ext/pg_query/include/postgres/access/toast_compression.h +2 -2
  46. data/ext/pg_query/include/postgres/access/transam.h +50 -7
  47. data/ext/pg_query/include/postgres/access/tsmapi.h +1 -1
  48. data/ext/pg_query/include/postgres/access/tupconvert.h +1 -1
  49. data/ext/pg_query/include/postgres/access/tupdesc.h +5 -5
  50. data/ext/pg_query/include/postgres/access/tupmacs.h +1 -1
  51. data/ext/pg_query/include/postgres/access/twophase.h +2 -2
  52. data/ext/pg_query/include/postgres/access/xact.h +5 -5
  53. data/ext/pg_query/include/postgres/access/xlog.h +20 -12
  54. data/ext/pg_query/include/postgres/access/xlog_internal.h +4 -3
  55. data/ext/pg_query/include/postgres/access/xlogbackup.h +3 -1
  56. data/ext/pg_query/include/postgres/access/xlogdefs.h +5 -5
  57. data/ext/pg_query/include/postgres/access/xlogprefetcher.h +2 -2
  58. data/ext/pg_query/include/postgres/access/xlogreader.h +2 -2
  59. data/ext/pg_query/include/postgres/access/xlogrecord.h +3 -3
  60. data/ext/pg_query/include/postgres/access/xlogrecovery.h +4 -4
  61. data/ext/pg_query/include/postgres/archive/archive_module.h +9 -1
  62. data/ext/pg_query/include/postgres/c.h +32 -37
  63. data/ext/pg_query/include/postgres/catalog/catalog.h +3 -1
  64. data/ext/pg_query/include/postgres/catalog/catversion.h +2 -2
  65. data/ext/pg_query/include/postgres/catalog/dependency.h +17 -59
  66. data/ext/pg_query/include/postgres/catalog/genbki.h +12 -6
  67. data/ext/pg_query/include/postgres/catalog/index.h +22 -18
  68. data/ext/pg_query/include/postgres/catalog/indexing.h +1 -1
  69. data/ext/pg_query/include/postgres/catalog/namespace.h +18 -19
  70. data/ext/pg_query/include/postgres/catalog/objectaccess.h +2 -2
  71. data/ext/pg_query/include/postgres/catalog/objectaddress.h +5 -1
  72. data/ext/pg_query/include/postgres/catalog/pg_aggregate.h +4 -2
  73. data/ext/pg_query/include/postgres/catalog/pg_aggregate_d.h +1 -1
  74. data/ext/pg_query/include/postgres/catalog/pg_am.h +6 -3
  75. data/ext/pg_query/include/postgres/catalog/pg_am_d.h +1 -1
  76. data/ext/pg_query/include/postgres/catalog/pg_attribute.h +31 -14
  77. data/ext/pg_query/include/postgres/catalog/pg_attribute_d.h +3 -3
  78. data/ext/pg_query/include/postgres/catalog/pg_authid.h +6 -3
  79. data/ext/pg_query/include/postgres/catalog/pg_authid_d.h +2 -1
  80. data/ext/pg_query/include/postgres/catalog/pg_class.h +10 -5
  81. data/ext/pg_query/include/postgres/catalog/pg_class_d.h +4 -2
  82. data/ext/pg_query/include/postgres/catalog/pg_collation.h +11 -5
  83. data/ext/pg_query/include/postgres/catalog/pg_collation_d.h +5 -2
  84. data/ext/pg_query/include/postgres/catalog/pg_constraint.h +15 -10
  85. data/ext/pg_query/include/postgres/catalog/pg_constraint_d.h +2 -1
  86. data/ext/pg_query/include/postgres/catalog/pg_control.h +5 -3
  87. data/ext/pg_query/include/postgres/catalog/pg_conversion.h +8 -4
  88. data/ext/pg_query/include/postgres/catalog/pg_conversion_d.h +1 -1
  89. data/ext/pg_query/include/postgres/catalog/pg_database.h +9 -4
  90. data/ext/pg_query/include/postgres/catalog/pg_database_d.h +13 -12
  91. data/ext/pg_query/include/postgres/catalog/pg_depend.h +3 -3
  92. data/ext/pg_query/include/postgres/catalog/pg_depend_d.h +1 -1
  93. data/ext/pg_query/include/postgres/catalog/pg_event_trigger.h +6 -3
  94. data/ext/pg_query/include/postgres/catalog/pg_event_trigger_d.h +1 -1
  95. data/ext/pg_query/include/postgres/catalog/pg_index.h +5 -3
  96. data/ext/pg_query/include/postgres/catalog/pg_index_d.h +1 -1
  97. data/ext/pg_query/include/postgres/catalog/pg_language.h +6 -3
  98. data/ext/pg_query/include/postgres/catalog/pg_language_d.h +1 -1
  99. data/ext/pg_query/include/postgres/catalog/pg_namespace.h +6 -3
  100. data/ext/pg_query/include/postgres/catalog/pg_namespace_d.h +1 -1
  101. data/ext/pg_query/include/postgres/catalog/pg_opclass.h +6 -3
  102. data/ext/pg_query/include/postgres/catalog/pg_opclass_d.h +1 -1
  103. data/ext/pg_query/include/postgres/catalog/pg_operator.h +20 -3
  104. data/ext/pg_query/include/postgres/catalog/pg_operator_d.h +1 -1
  105. data/ext/pg_query/include/postgres/catalog/pg_opfamily.h +6 -3
  106. data/ext/pg_query/include/postgres/catalog/pg_opfamily_d.h +1 -1
  107. data/ext/pg_query/include/postgres/catalog/pg_partitioned_table.h +4 -2
  108. data/ext/pg_query/include/postgres/catalog/pg_partitioned_table_d.h +1 -1
  109. data/ext/pg_query/include/postgres/catalog/pg_proc.h +6 -3
  110. data/ext/pg_query/include/postgres/catalog/pg_proc_d.h +1 -1
  111. data/ext/pg_query/include/postgres/catalog/pg_publication.h +6 -3
  112. data/ext/pg_query/include/postgres/catalog/pg_publication_d.h +1 -1
  113. data/ext/pg_query/include/postgres/catalog/pg_replication_origin.h +6 -3
  114. data/ext/pg_query/include/postgres/catalog/pg_replication_origin_d.h +1 -1
  115. data/ext/pg_query/include/postgres/catalog/pg_statistic.h +10 -4
  116. data/ext/pg_query/include/postgres/catalog/pg_statistic_d.h +7 -3
  117. data/ext/pg_query/include/postgres/catalog/pg_statistic_ext.h +10 -7
  118. data/ext/pg_query/include/postgres/catalog/pg_statistic_ext_d.h +3 -3
  119. data/ext/pg_query/include/postgres/catalog/pg_transform.h +6 -3
  120. data/ext/pg_query/include/postgres/catalog/pg_transform_d.h +1 -1
  121. data/ext/pg_query/include/postgres/catalog/pg_trigger.h +4 -4
  122. data/ext/pg_query/include/postgres/catalog/pg_trigger_d.h +1 -1
  123. data/ext/pg_query/include/postgres/catalog/pg_ts_config.h +6 -3
  124. data/ext/pg_query/include/postgres/catalog/pg_ts_config_d.h +1 -1
  125. data/ext/pg_query/include/postgres/catalog/pg_ts_dict.h +6 -3
  126. data/ext/pg_query/include/postgres/catalog/pg_ts_dict_d.h +1 -1
  127. data/ext/pg_query/include/postgres/catalog/pg_ts_parser.h +6 -3
  128. data/ext/pg_query/include/postgres/catalog/pg_ts_parser_d.h +1 -1
  129. data/ext/pg_query/include/postgres/catalog/pg_ts_template.h +6 -3
  130. data/ext/pg_query/include/postgres/catalog/pg_ts_template_d.h +1 -1
  131. data/ext/pg_query/include/postgres/catalog/pg_type.h +6 -3
  132. data/ext/pg_query/include/postgres/catalog/pg_type_d.h +1 -1
  133. data/ext/pg_query/include/postgres/catalog/storage.h +1 -1
  134. data/ext/pg_query/include/postgres/catalog/syscache_ids.h +104 -0
  135. data/ext/pg_query/include/postgres/commands/async.h +2 -6
  136. data/ext/pg_query/include/postgres/commands/dbcommands.h +1 -1
  137. data/ext/pg_query/include/postgres/commands/defrem.h +6 -6
  138. data/ext/pg_query/include/postgres/commands/event_trigger.h +11 -2
  139. data/ext/pg_query/include/postgres/commands/explain.h +19 -3
  140. data/ext/pg_query/include/postgres/commands/prepare.h +1 -1
  141. data/ext/pg_query/include/postgres/commands/tablespace.h +1 -1
  142. data/ext/pg_query/include/postgres/commands/trigger.h +1 -1
  143. data/ext/pg_query/include/postgres/commands/vacuum.h +28 -26
  144. data/ext/pg_query/include/postgres/common/cryptohash.h +2 -2
  145. data/ext/pg_query/include/postgres/common/file_perm.h +1 -1
  146. data/ext/pg_query/include/postgres/common/file_utils.h +65 -0
  147. data/ext/pg_query/include/postgres/common/hashfn.h +16 -1
  148. data/ext/pg_query/include/postgres/common/hashfn_unstable.h +407 -0
  149. data/ext/pg_query/include/postgres/common/int.h +79 -4
  150. data/ext/pg_query/include/postgres/common/keywords.h +1 -1
  151. data/ext/pg_query/include/postgres/common/kwlookup.h +1 -1
  152. data/ext/pg_query/include/postgres/common/pg_prng.h +2 -1
  153. data/ext/pg_query/include/postgres/common/relpath.h +4 -4
  154. data/ext/pg_query/include/postgres/common/scram-common.h +1 -1
  155. data/ext/pg_query/include/postgres/common/sha2.h +1 -1
  156. data/ext/pg_query/include/postgres/common/string.h +1 -1
  157. data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +2 -3
  158. data/ext/pg_query/include/postgres/copyfuncs.funcs.c +278 -30
  159. data/ext/pg_query/include/postgres/copyfuncs.switch.c +55 -4
  160. data/ext/pg_query/include/postgres/datatype/timestamp.h +29 -3
  161. data/ext/pg_query/include/postgres/equalfuncs.funcs.c +239 -26
  162. data/ext/pg_query/include/postgres/equalfuncs.switch.c +55 -4
  163. data/ext/pg_query/include/postgres/executor/execdesc.h +2 -2
  164. data/ext/pg_query/include/postgres/executor/executor.h +6 -5
  165. data/ext/pg_query/include/postgres/executor/functions.h +2 -1
  166. data/ext/pg_query/include/postgres/executor/instrument.h +5 -3
  167. data/ext/pg_query/include/postgres/executor/spi.h +2 -8
  168. data/ext/pg_query/include/postgres/executor/tablefunc.h +1 -1
  169. data/ext/pg_query/include/postgres/executor/tuptable.h +31 -2
  170. data/ext/pg_query/include/postgres/fmgr.h +2 -2
  171. data/ext/pg_query/include/postgres/foreign/fdwapi.h +1 -1
  172. data/ext/pg_query/include/postgres/funcapi.h +2 -2
  173. data/ext/pg_query/include/postgres/gram.h +871 -830
  174. data/ext/pg_query/include/postgres/gramparse.h +1 -1
  175. data/ext/pg_query/include/postgres/jit/jit.h +4 -3
  176. data/ext/pg_query/include/postgres/kwlist_d.h +511 -466
  177. data/ext/pg_query/include/postgres/lib/dshash.h +25 -10
  178. data/ext/pg_query/include/postgres/lib/ilist.h +1 -1
  179. data/ext/pg_query/include/postgres/lib/pairingheap.h +1 -1
  180. data/ext/pg_query/include/postgres/lib/simplehash.h +40 -18
  181. data/ext/pg_query/include/postgres/lib/sort_template.h +14 -1
  182. data/ext/pg_query/include/postgres/lib/stringinfo.h +93 -11
  183. data/ext/pg_query/include/postgres/libpq/auth.h +1 -1
  184. data/ext/pg_query/include/postgres/libpq/crypt.h +2 -2
  185. data/ext/pg_query/include/postgres/libpq/hba.h +4 -4
  186. data/ext/pg_query/include/postgres/libpq/libpq-be.h +35 -28
  187. data/ext/pg_query/include/postgres/libpq/libpq.h +6 -7
  188. data/ext/pg_query/include/postgres/libpq/pqcomm.h +26 -20
  189. data/ext/pg_query/include/postgres/libpq/pqformat.h +2 -3
  190. data/ext/pg_query/include/postgres/libpq/pqsignal.h +1 -1
  191. data/ext/pg_query/include/postgres/libpq/protocol.h +89 -0
  192. data/ext/pg_query/include/postgres/libpq/sasl.h +1 -1
  193. data/ext/pg_query/include/postgres/libpq/scram.h +1 -1
  194. data/ext/pg_query/include/postgres/mb/pg_wchar.h +103 -82
  195. data/ext/pg_query/include/postgres/mb/stringinfo_mb.h +1 -1
  196. data/ext/pg_query/include/postgres/miscadmin.h +72 -52
  197. data/ext/pg_query/include/postgres/nodes/bitmapset.h +17 -3
  198. data/ext/pg_query/include/postgres/nodes/execnodes.h +112 -25
  199. data/ext/pg_query/include/postgres/nodes/extensible.h +1 -1
  200. data/ext/pg_query/include/postgres/nodes/lockoptions.h +4 -4
  201. data/ext/pg_query/include/postgres/nodes/makefuncs.h +8 -2
  202. data/ext/pg_query/include/postgres/nodes/memnodes.h +43 -4
  203. data/ext/pg_query/include/postgres/nodes/miscnodes.h +1 -1
  204. data/ext/pg_query/include/postgres/nodes/nodeFuncs.h +1 -1
  205. data/ext/pg_query/include/postgres/nodes/nodes.h +30 -41
  206. data/ext/pg_query/include/postgres/nodes/nodetags.h +464 -444
  207. data/ext/pg_query/include/postgres/nodes/params.h +1 -1
  208. data/ext/pg_query/include/postgres/nodes/parsenodes.h +358 -175
  209. data/ext/pg_query/include/postgres/nodes/pathnodes.h +64 -10
  210. data/ext/pg_query/include/postgres/nodes/pg_list.h +62 -11
  211. data/ext/pg_query/include/postgres/nodes/plannodes.h +11 -10
  212. data/ext/pg_query/include/postgres/nodes/primnodes.h +352 -54
  213. data/ext/pg_query/include/postgres/nodes/print.h +1 -1
  214. data/ext/pg_query/include/postgres/nodes/queryjumble.h +2 -2
  215. data/ext/pg_query/include/postgres/nodes/replnodes.h +23 -2
  216. data/ext/pg_query/include/postgres/nodes/supportnodes.h +1 -1
  217. data/ext/pg_query/include/postgres/nodes/tidbitmap.h +1 -1
  218. data/ext/pg_query/include/postgres/nodes/value.h +1 -1
  219. data/ext/pg_query/include/postgres/optimizer/cost.h +5 -4
  220. data/ext/pg_query/include/postgres/optimizer/geqo.h +1 -1
  221. data/ext/pg_query/include/postgres/optimizer/geqo_gene.h +1 -1
  222. data/ext/pg_query/include/postgres/optimizer/optimizer.h +5 -2
  223. data/ext/pg_query/include/postgres/optimizer/paths.h +13 -8
  224. data/ext/pg_query/include/postgres/optimizer/planmain.h +7 -1
  225. data/ext/pg_query/include/postgres/parser/analyze.h +3 -1
  226. data/ext/pg_query/include/postgres/parser/kwlist.h +22 -2
  227. data/ext/pg_query/include/postgres/parser/parse_agg.h +1 -1
  228. data/ext/pg_query/include/postgres/parser/parse_coerce.h +5 -2
  229. data/ext/pg_query/include/postgres/parser/parse_expr.h +1 -1
  230. data/ext/pg_query/include/postgres/parser/parse_func.h +2 -2
  231. data/ext/pg_query/include/postgres/parser/parse_node.h +3 -2
  232. data/ext/pg_query/include/postgres/parser/parse_oper.h +4 -1
  233. data/ext/pg_query/include/postgres/parser/parse_relation.h +1 -1
  234. data/ext/pg_query/include/postgres/parser/parse_type.h +2 -2
  235. data/ext/pg_query/include/postgres/parser/parser.h +3 -3
  236. data/ext/pg_query/include/postgres/parser/parsetree.h +1 -1
  237. data/ext/pg_query/include/postgres/parser/scanner.h +1 -1
  238. data/ext/pg_query/include/postgres/parser/scansup.h +1 -1
  239. data/ext/pg_query/include/postgres/partitioning/partdefs.h +1 -1
  240. data/ext/pg_query/include/postgres/pg_config.h +53 -45
  241. data/ext/pg_query/include/postgres/pg_config_manual.h +21 -8
  242. data/ext/pg_query/include/postgres/pg_getopt.h +1 -1
  243. data/ext/pg_query/include/postgres/pg_trace.h +1 -1
  244. data/ext/pg_query/include/postgres/pgstat.h +13 -11
  245. data/ext/pg_query/include/postgres/pgtime.h +1 -1
  246. data/ext/pg_query/include/postgres/pl_reserved_kwlist.h +1 -1
  247. data/ext/pg_query/include/postgres/pl_reserved_kwlist_d.h +1 -1
  248. data/ext/pg_query/include/postgres/pl_unreserved_kwlist.h +1 -1
  249. data/ext/pg_query/include/postgres/pl_unreserved_kwlist_d.h +1 -1
  250. data/ext/pg_query/include/postgres/plerrcodes.h +4 -4
  251. data/ext/pg_query/include/postgres/plpgsql.h +15 -13
  252. data/ext/pg_query/include/postgres/port/atomics/arch-arm.h +1 -1
  253. data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +1 -1
  254. data/ext/pg_query/include/postgres/port/atomics/arch-ppc.h +3 -1
  255. data/ext/pg_query/include/postgres/port/atomics/arch-x86.h +3 -1
  256. data/ext/pg_query/include/postgres/port/atomics/fallback.h +1 -1
  257. data/ext/pg_query/include/postgres/port/atomics/generic-gcc.h +38 -1
  258. data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +19 -1
  259. data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +16 -1
  260. data/ext/pg_query/include/postgres/port/atomics/generic.h +38 -2
  261. data/ext/pg_query/include/postgres/port/atomics.h +93 -6
  262. data/ext/pg_query/include/postgres/port/pg_bitutils.h +91 -9
  263. data/ext/pg_query/include/postgres/port/pg_bswap.h +1 -1
  264. data/ext/pg_query/include/postgres/port/pg_crc32c.h +10 -1
  265. data/ext/pg_query/include/postgres/port/pg_iovec.h +117 -0
  266. data/ext/pg_query/include/postgres/port/simd.h +48 -1
  267. data/ext/pg_query/include/postgres/port/win32/sys/socket.h +8 -0
  268. data/ext/pg_query/include/postgres/port/win32_port.h +1 -13
  269. data/ext/pg_query/include/postgres/port.h +39 -4
  270. data/ext/pg_query/include/postgres/portability/instr_time.h +1 -1
  271. data/ext/pg_query/include/postgres/postgres.h +1 -1
  272. data/ext/pg_query/include/postgres/postmaster/autovacuum.h +5 -16
  273. data/ext/pg_query/include/postgres/postmaster/bgworker.h +8 -6
  274. data/ext/pg_query/include/postgres/postmaster/bgworker_internals.h +3 -7
  275. data/ext/pg_query/include/postgres/postmaster/bgwriter.h +3 -3
  276. data/ext/pg_query/include/postgres/postmaster/interrupt.h +1 -1
  277. data/ext/pg_query/include/postgres/postmaster/pgarch.h +2 -2
  278. data/ext/pg_query/include/postgres/postmaster/postmaster.h +25 -5
  279. data/ext/pg_query/include/postgres/postmaster/startup.h +2 -2
  280. data/ext/pg_query/include/postgres/postmaster/syslogger.h +2 -4
  281. data/ext/pg_query/include/postgres/postmaster/walsummarizer.h +35 -0
  282. data/ext/pg_query/include/postgres/postmaster/walwriter.h +2 -2
  283. data/ext/pg_query/include/postgres/regex/regex.h +92 -9
  284. data/ext/pg_query/include/postgres/replication/logicallauncher.h +1 -1
  285. data/ext/pg_query/include/postgres/replication/logicalproto.h +2 -2
  286. data/ext/pg_query/include/postgres/replication/logicalworker.h +2 -1
  287. data/ext/pg_query/include/postgres/replication/origin.h +1 -1
  288. data/ext/pg_query/include/postgres/replication/reorderbuffer.h +27 -46
  289. data/ext/pg_query/include/postgres/replication/slot.h +45 -5
  290. data/ext/pg_query/include/postgres/replication/slotsync.h +38 -0
  291. data/ext/pg_query/include/postgres/replication/syncrep.h +1 -1
  292. data/ext/pg_query/include/postgres/replication/walreceiver.h +37 -11
  293. data/ext/pg_query/include/postgres/replication/walsender.h +5 -3
  294. data/ext/pg_query/include/postgres/rewrite/prs2lock.h +1 -1
  295. data/ext/pg_query/include/postgres/rewrite/rewriteHandler.h +7 -1
  296. data/ext/pg_query/include/postgres/rewrite/rewriteManip.h +2 -2
  297. data/ext/pg_query/include/postgres/rewrite/rewriteSupport.h +1 -1
  298. data/ext/pg_query/include/postgres/storage/block.h +1 -1
  299. data/ext/pg_query/include/postgres/storage/buf.h +1 -1
  300. data/ext/pg_query/include/postgres/storage/bufmgr.h +59 -41
  301. data/ext/pg_query/include/postgres/storage/bufpage.h +1 -1
  302. data/ext/pg_query/include/postgres/storage/condition_variable.h +1 -1
  303. data/ext/pg_query/include/postgres/storage/dsm.h +1 -1
  304. data/ext/pg_query/include/postgres/storage/dsm_impl.h +2 -2
  305. data/ext/pg_query/include/postgres/storage/fd.h +30 -13
  306. data/ext/pg_query/include/postgres/storage/fileset.h +1 -1
  307. data/ext/pg_query/include/postgres/storage/ipc.h +4 -1
  308. data/ext/pg_query/include/postgres/storage/item.h +1 -1
  309. data/ext/pg_query/include/postgres/storage/itemid.h +1 -1
  310. data/ext/pg_query/include/postgres/storage/itemptr.h +1 -1
  311. data/ext/pg_query/include/postgres/storage/large_object.h +1 -1
  312. data/ext/pg_query/include/postgres/storage/latch.h +4 -2
  313. data/ext/pg_query/include/postgres/storage/lmgr.h +8 -2
  314. data/ext/pg_query/include/postgres/storage/lock.h +19 -19
  315. data/ext/pg_query/include/postgres/storage/lockdefs.h +3 -1
  316. data/ext/pg_query/include/postgres/storage/lwlock.h +17 -9
  317. data/ext/pg_query/include/postgres/storage/lwlocknames.h +7 -10
  318. data/ext/pg_query/include/postgres/storage/off.h +1 -1
  319. data/ext/pg_query/include/postgres/storage/pg_sema.h +1 -1
  320. data/ext/pg_query/include/postgres/storage/pg_shmem.h +5 -4
  321. data/ext/pg_query/include/postgres/storage/pmsignal.h +2 -2
  322. data/ext/pg_query/include/postgres/storage/predicate.h +1 -5
  323. data/ext/pg_query/include/postgres/storage/proc.h +48 -26
  324. data/ext/pg_query/include/postgres/storage/procarray.h +5 -1
  325. data/ext/pg_query/include/postgres/storage/proclist_types.h +11 -9
  326. data/ext/pg_query/include/postgres/storage/procnumber.h +43 -0
  327. data/ext/pg_query/include/postgres/storage/procsignal.h +8 -6
  328. data/ext/pg_query/include/postgres/storage/read_stream.h +65 -0
  329. data/ext/pg_query/include/postgres/storage/relfilelocator.h +16 -15
  330. data/ext/pg_query/include/postgres/storage/s_lock.h +7 -27
  331. data/ext/pg_query/include/postgres/storage/sharedfileset.h +1 -1
  332. data/ext/pg_query/include/postgres/storage/shm_mq.h +2 -2
  333. data/ext/pg_query/include/postgres/storage/shm_toc.h +1 -1
  334. data/ext/pg_query/include/postgres/storage/shmem.h +1 -1
  335. data/ext/pg_query/include/postgres/storage/sinval.h +3 -3
  336. data/ext/pg_query/include/postgres/storage/smgr.h +46 -29
  337. data/ext/pg_query/include/postgres/storage/spin.h +1 -1
  338. data/ext/pg_query/include/postgres/storage/standby.h +13 -3
  339. data/ext/pg_query/include/postgres/storage/standbydefs.h +2 -2
  340. data/ext/pg_query/include/postgres/storage/sync.h +4 -4
  341. data/ext/pg_query/include/postgres/tcop/cmdtag.h +1 -2
  342. data/ext/pg_query/include/postgres/tcop/cmdtaglist.h +3 -2
  343. data/ext/pg_query/include/postgres/tcop/deparse_utility.h +2 -2
  344. data/ext/pg_query/include/postgres/tcop/dest.h +3 -2
  345. data/ext/pg_query/include/postgres/tcop/fastpath.h +1 -1
  346. data/ext/pg_query/include/postgres/tcop/pquery.h +1 -1
  347. data/ext/pg_query/include/postgres/tcop/tcopprot.h +9 -5
  348. data/ext/pg_query/include/postgres/tcop/utility.h +2 -2
  349. data/ext/pg_query/include/postgres/tsearch/ts_cache.h +1 -1
  350. data/ext/pg_query/include/postgres/utils/acl.h +19 -7
  351. data/ext/pg_query/include/postgres/utils/aclchk_internal.h +1 -1
  352. data/ext/pg_query/include/postgres/utils/array.h +1 -2
  353. data/ext/pg_query/include/postgres/utils/ascii.h +84 -0
  354. data/ext/pg_query/include/postgres/utils/backend_progress.h +3 -2
  355. data/ext/pg_query/include/postgres/utils/backend_status.h +8 -10
  356. data/ext/pg_query/include/postgres/utils/builtins.h +4 -1
  357. data/ext/pg_query/include/postgres/utils/bytea.h +2 -2
  358. data/ext/pg_query/include/postgres/utils/catcache.h +6 -6
  359. data/ext/pg_query/include/postgres/utils/date.h +1 -1
  360. data/ext/pg_query/include/postgres/utils/datetime.h +4 -1
  361. data/ext/pg_query/include/postgres/utils/datum.h +1 -1
  362. data/ext/pg_query/include/postgres/utils/dsa.h +44 -5
  363. data/ext/pg_query/include/postgres/utils/elog.h +3 -8
  364. data/ext/pg_query/include/postgres/utils/errcodes.h +1 -3
  365. data/ext/pg_query/include/postgres/utils/expandeddatum.h +1 -1
  366. data/ext/pg_query/include/postgres/utils/expandedrecord.h +1 -1
  367. data/ext/pg_query/include/postgres/utils/float.h +1 -1
  368. data/ext/pg_query/include/postgres/utils/fmgroids.h +49 -16
  369. data/ext/pg_query/include/postgres/utils/fmgrprotos.h +47 -14
  370. data/ext/pg_query/include/postgres/utils/fmgrtab.h +1 -1
  371. data/ext/pg_query/include/postgres/utils/guc.h +20 -6
  372. data/ext/pg_query/include/postgres/utils/guc_hooks.h +23 -2
  373. data/ext/pg_query/include/postgres/utils/guc_tables.h +6 -5
  374. data/ext/pg_query/include/postgres/utils/hsearch.h +2 -2
  375. data/ext/pg_query/include/postgres/utils/injection_point.h +44 -0
  376. data/ext/pg_query/include/postgres/utils/inval.h +1 -1
  377. data/ext/pg_query/include/postgres/utils/logtape.h +5 -5
  378. data/ext/pg_query/include/postgres/utils/lsyscache.h +6 -3
  379. data/ext/pg_query/include/postgres/utils/memdebug.h +1 -1
  380. data/ext/pg_query/include/postgres/utils/memutils.h +12 -5
  381. data/ext/pg_query/include/postgres/utils/memutils_internal.h +53 -13
  382. data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +25 -9
  383. data/ext/pg_query/include/postgres/utils/numeric.h +6 -1
  384. data/ext/pg_query/include/postgres/utils/palloc.h +1 -15
  385. data/ext/pg_query/include/postgres/utils/partcache.h +1 -1
  386. data/ext/pg_query/include/postgres/utils/pg_locale.h +8 -7
  387. data/ext/pg_query/include/postgres/utils/pgstat_internal.h +30 -17
  388. data/ext/pg_query/include/postgres/utils/plancache.h +5 -3
  389. data/ext/pg_query/include/postgres/utils/portal.h +10 -10
  390. data/ext/pg_query/include/postgres/utils/queryenvironment.h +2 -2
  391. data/ext/pg_query/include/postgres/utils/regproc.h +1 -1
  392. data/ext/pg_query/include/postgres/utils/rel.h +14 -15
  393. data/ext/pg_query/include/postgres/utils/relcache.h +2 -5
  394. data/ext/pg_query/include/postgres/utils/reltrigger.h +1 -1
  395. data/ext/pg_query/include/postgres/utils/resowner.h +90 -9
  396. data/ext/pg_query/include/postgres/utils/ruleutils.h +1 -1
  397. data/ext/pg_query/include/postgres/utils/sharedtuplestore.h +1 -1
  398. data/ext/pg_query/include/postgres/utils/snapmgr.h +1 -52
  399. data/ext/pg_query/include/postgres/utils/snapshot.h +2 -2
  400. data/ext/pg_query/include/postgres/utils/sortsupport.h +1 -1
  401. data/ext/pg_query/include/postgres/utils/syscache.h +7 -98
  402. data/ext/pg_query/include/postgres/utils/timeout.h +3 -2
  403. data/ext/pg_query/include/postgres/utils/timestamp.h +1 -1
  404. data/ext/pg_query/include/postgres/utils/tuplesort.h +36 -9
  405. data/ext/pg_query/include/postgres/utils/tuplestore.h +2 -5
  406. data/ext/pg_query/include/postgres/utils/typcache.h +2 -1
  407. data/ext/pg_query/include/postgres/utils/varlena.h +1 -1
  408. data/ext/pg_query/include/postgres/utils/wait_event.h +28 -214
  409. data/ext/pg_query/include/postgres/utils/wait_event_types.h +218 -0
  410. data/ext/pg_query/include/postgres/utils/xml.h +4 -4
  411. data/ext/pg_query/include/postgres/varatt.h +1 -1
  412. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +1546 -792
  413. data/ext/pg_query/include/protobuf/pg_query.pb.h +58365 -46595
  414. data/ext/pg_query/pg_query.pb-c.c +6598 -3739
  415. data/ext/pg_query/pg_query_normalize.c +42 -1
  416. data/ext/pg_query/pg_query_outfuncs_json.c +3 -1
  417. data/ext/pg_query/pg_query_parse_plpgsql.c +12 -13
  418. data/ext/pg_query/pg_query_readfuncs_protobuf.c +2 -2
  419. data/ext/pg_query/pg_query_scan.c +1 -1
  420. data/ext/pg_query/postgres_deparse.c +601 -172
  421. data/ext/pg_query/src_backend_catalog_namespace.c +241 -66
  422. data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -3
  423. data/ext/pg_query/src_backend_commands_define.c +2 -3
  424. data/ext/pg_query/src_backend_nodes_bitmapset.c +137 -94
  425. data/ext/pg_query/src_backend_nodes_copyfuncs.c +1 -1
  426. data/ext/pg_query/src_backend_nodes_equalfuncs.c +1 -1
  427. data/ext/pg_query/src_backend_nodes_extensible.c +1 -1
  428. data/ext/pg_query/src_backend_nodes_list.c +3 -7
  429. data/ext/pg_query/src_backend_nodes_makefuncs.c +59 -20
  430. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +109 -2
  431. data/ext/pg_query/src_backend_nodes_value.c +1 -1
  432. data/ext/pg_query/src_backend_parser_gram.c +34491 -32136
  433. data/ext/pg_query/src_backend_parser_parser.c +8 -8
  434. data/ext/pg_query/src_backend_parser_scan.c +5637 -3028
  435. data/ext/pg_query/src_backend_parser_scansup.c +2 -1
  436. data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
  437. data/ext/pg_query/src_backend_tcop_postgres.c +34 -10
  438. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +2 -2
  439. data/ext/pg_query/src_backend_utils_adt_datum.c +8 -6
  440. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  441. data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
  442. data/ext/pg_query/src_backend_utils_adt_numutils.c +4 -5
  443. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +101 -28
  444. data/ext/pg_query/src_backend_utils_error_assert.c +1 -1
  445. data/ext/pg_query/src_backend_utils_error_elog.c +47 -42
  446. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +4 -2
  447. data/ext/pg_query/src_backend_utils_init_globals.c +15 -3
  448. data/ext/pg_query/src_backend_utils_mb_mbutils.c +11 -18
  449. data/ext/pg_query/src_backend_utils_misc_guc_tables.c +16 -6
  450. data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +8 -5
  451. data/ext/pg_query/src_backend_utils_mmgr_aset.c +308 -238
  452. data/ext/pg_query/src_backend_utils_mmgr_bump.c +728 -0
  453. data/ext/pg_query/src_backend_utils_mmgr_generation.c +273 -197
  454. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +270 -215
  455. data/ext/pg_query/src_backend_utils_mmgr_slab.c +154 -96
  456. data/ext/pg_query/src_common_encnames.c +43 -44
  457. data/ext/pg_query/src_common_hashfn.c +1 -1
  458. data/ext/pg_query/src_common_keywords.c +1 -1
  459. data/ext/pg_query/src_common_kwlist_d.h +511 -466
  460. data/ext/pg_query/src_common_kwlookup.c +1 -1
  461. data/ext/pg_query/src_common_psprintf.c +3 -3
  462. data/ext/pg_query/src_common_stringinfo.c +18 -1
  463. data/ext/pg_query/src_common_wchar.c +92 -109
  464. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +99 -5
  465. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +1 -1
  466. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +242 -143
  467. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  468. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
  469. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +19 -1
  470. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +1 -1
  471. data/ext/pg_query/src_port_pg_bitutils.c +173 -28
  472. data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
  473. data/ext/pg_query/src_port_snprintf.c +15 -18
  474. data/ext/pg_query/src_port_strerror.c +1 -3
  475. data/ext/pg_query/src_port_strlcpy.c +1 -1
  476. data/lib/pg_query/fingerprint.rb +3 -5
  477. data/lib/pg_query/param_refs.rb +2 -2
  478. data/lib/pg_query/parse.rb +5 -7
  479. data/lib/pg_query/parse_error.rb +1 -0
  480. data/lib/pg_query/pg_query_pb.rb +27 -25
  481. data/lib/pg_query/scan.rb +1 -0
  482. data/lib/pg_query/treewalker.rb +38 -15
  483. data/lib/pg_query/truncate.rb +18 -20
  484. data/lib/pg_query/version.rb +1 -1
  485. metadata +31 -82
  486. data/ext/pg_query/include/postgres/storage/backendid.h +0 -37
  487. data/ext/pg_query/include/postgres/storage/sinvaladt.h +0 -45
  488. data/ext/pg_query/pg_query_ruby_freebsd.sym +0 -2
  489. data/ext/pg_query/src_backend_nodes_nodes.c +0 -38
  490. /data/ext/pg_query/{pg_query_ruby.sym → ext_symbols.sym} +0 -0
@@ -12,7 +12,7 @@
12
12
  * scansup.c
13
13
  * scanner support routines used by the core lexer
14
14
  *
15
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
15
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
16
16
  * Portions Copyright (c) 1994, Regents of the University of California
17
17
  *
18
18
  *
@@ -130,6 +130,7 @@ scanner_isspace(char ch)
130
130
  ch == '\t' ||
131
131
  ch == '\n' ||
132
132
  ch == '\r' ||
133
+ ch == '\v' ||
133
134
  ch == '\f')
134
135
  return true;
135
136
  return false;
@@ -15,7 +15,7 @@
15
15
  * exit-time cleanup for either a postmaster or a backend.
16
16
  *
17
17
  *
18
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
18
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
19
19
  * Portions Copyright (c) 1994, Regents of the University of California
20
20
  *
21
21
  *
@@ -1,12 +1,12 @@
1
1
  /*--------------------------------------------------------------------
2
2
  * Symbols referenced in this file:
3
3
  * - debug_query_string
4
- * - whereToSendOutput
5
- * - ProcessInterrupts
6
- * - check_stack_depth
7
4
  * - stack_is_too_deep
8
5
  * - stack_base_ptr
9
6
  * - max_stack_depth_bytes
7
+ * - whereToSendOutput
8
+ * - ProcessInterrupts
9
+ * - check_stack_depth
10
10
  * - max_stack_depth
11
11
  *--------------------------------------------------------------------
12
12
  */
@@ -16,7 +16,7 @@
16
16
  * postgres.c
17
17
  * POSTGRES C Backend Interface
18
18
  *
19
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
19
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
20
20
  * Portions Copyright (c) 1994, Regents of the University of California
21
21
  *
22
22
  *
@@ -49,6 +49,7 @@
49
49
  #include "access/xact.h"
50
50
  #include "catalog/pg_type.h"
51
51
  #include "commands/async.h"
52
+ #include "commands/event_trigger.h"
52
53
  #include "commands/prepare.h"
53
54
  #include "common/pg_prng.h"
54
55
  #include "jit/jit.h"
@@ -84,12 +85,14 @@
84
85
  #include "tcop/tcopprot.h"
85
86
  #include "tcop/utility.h"
86
87
  #include "utils/guc_hooks.h"
88
+ #include "utils/injection_point.h"
87
89
  #include "utils/lsyscache.h"
88
90
  #include "utils/memutils.h"
89
91
  #include "utils/ps_status.h"
90
92
  #include "utils/snapmgr.h"
91
93
  #include "utils/timeout.h"
92
94
  #include "utils/timestamp.h"
95
+ #include "utils/varlena.h"
93
96
 
94
97
  /* ----------------
95
98
  * global variables
@@ -117,6 +120,9 @@ __thread int max_stack_depth = 100;
117
120
  /* Time between checks that the client is still connected. */
118
121
 
119
122
 
123
+ /* flags for non-system relation kinds to restrict use */
124
+
125
+
120
126
  /* ----------------
121
127
  * private typedefs etc
122
128
  * ----------------
@@ -182,7 +188,6 @@ static __thread char *stack_base_ptr = NULL;
182
188
 
183
189
 
184
190
 
185
-
186
191
  /* reused buffer to pass to SendRowDescriptionMessage() */
187
192
 
188
193
 
@@ -200,7 +205,6 @@ static bool check_log_statement(List *stmt_list);
200
205
  static int errdetail_execute(List *raw_parsetree_list);
201
206
  static int errdetail_params(ParamListInfo params);
202
207
  static int errdetail_abort(void);
203
- static int errdetail_recovery_conflict(void);
204
208
  static void bind_param_error_callback(void *arg);
205
209
  static void start_xact_command(void);
206
210
  static void finish_xact_command(void);
@@ -556,10 +560,18 @@ valgrind_report_error_query(const char *query)
556
560
 
557
561
 
558
562
  /*
559
- * RecoveryConflictInterrupt: out-of-line portion of recovery conflict
560
- * handling following receipt of SIGUSR1. Designed to be similar to die()
561
- * and StatementCancelHandler(). Called only by a normal user backend
562
- * that begins a transaction during recovery.
563
+ * Tell the next CHECK_FOR_INTERRUPTS() to check for a particular type of
564
+ * recovery conflict. Runs in a SIGUSR1 handler.
565
+ */
566
+
567
+
568
+ /*
569
+ * Check one individual conflict reason.
570
+ */
571
+
572
+
573
+ /*
574
+ * Check each possible recovery conflict reason.
563
575
  */
564
576
 
565
577
 
@@ -686,6 +698,18 @@ stack_is_too_deep(void)
686
698
  */
687
699
 
688
700
 
701
+ /* GUC assign hook for transaction_timeout */
702
+
703
+
704
+ /*
705
+ * GUC check_hook for restrict_nonsystem_relation_kind
706
+ */
707
+
708
+
709
+ /*
710
+ * GUC assign_hook for restrict_nonsystem_relation_kind
711
+ */
712
+
689
713
 
690
714
  /*
691
715
  * set_debug_options --- apply "-d N" command line option
@@ -14,7 +14,7 @@
14
14
  * storage implementation and the details about individual types of
15
15
  * statistics.
16
16
  *
17
- * Copyright (c) 2001-2023, PostgreSQL Global Development Group
17
+ * Copyright (c) 2001-2024, PostgreSQL Global Development Group
18
18
  *
19
19
  * IDENTIFICATION
20
20
  * src/backend/utils/activity/pgstat_database.c
@@ -23,9 +23,9 @@
23
23
 
24
24
  #include "postgres.h"
25
25
 
26
+ #include "storage/procsignal.h"
26
27
  #include "utils/pgstat_internal.h"
27
28
  #include "utils/timestamp.h"
28
- #include "storage/procsignal.h"
29
29
 
30
30
 
31
31
  static bool pgstat_should_report_connstat(void);
@@ -11,7 +11,7 @@
11
11
  * datum.c
12
12
  * POSTGRES Datum (abstract data type) manipulation routines.
13
13
  *
14
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
14
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
15
15
  * Portions Copyright (c) 1994, Regents of the University of California
16
16
  *
17
17
  *
@@ -51,12 +51,11 @@
51
51
  #include "postgres.h"
52
52
 
53
53
  #include "access/detoast.h"
54
- #include "catalog/pg_type_d.h"
55
54
  #include "common/hashfn.h"
56
55
  #include "fmgr.h"
57
- #include "utils/builtins.h"
58
56
  #include "utils/datum.h"
59
57
  #include "utils/expandeddatum.h"
58
+ #include "utils/fmgrprotos.h"
60
59
 
61
60
 
62
61
  /*-------------------------------------------------------------------------
@@ -284,9 +283,12 @@ datumIsEqual(Datum value1, Datum value2, bool typByVal, int typLen)
284
283
  * datum_image_eq() in all cases can use this as their "equalimage" support
285
284
  * function.
286
285
  *
287
- * Earlier minor releases erroneously associated this function with
288
- * interval_ops. Detect that case to rescind deduplication support, without
289
- * requiring initdb.
286
+ * Currently, we unconditionally assume that any B-Tree operator class that
287
+ * registers btequalimage as its support function 4 must be able to safely use
288
+ * optimizations like deduplication (i.e. we return true unconditionally). If
289
+ * it ever proved necessary to rescind support for an operator class, we could
290
+ * do that in a targeted fashion by doing something with the opcintype
291
+ * argument.
290
292
  *-------------------------------------------------------------------------
291
293
  */
292
294
 
@@ -11,7 +11,7 @@
11
11
  * expandeddatum.c
12
12
  * Support functions for "expanded" value representations.
13
13
  *
14
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
14
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
15
15
  * Portions Copyright (c) 1994, Regents of the University of California
16
16
  *
17
17
  *
@@ -10,7 +10,7 @@
10
10
  * Display type names "nicely".
11
11
  *
12
12
  *
13
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
13
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
14
14
  * Portions Copyright (c) 1994, Regents of the University of California
15
15
  *
16
16
  * IDENTIFICATION
@@ -10,7 +10,7 @@
10
10
  * numutils.c
11
11
  * utility functions for I/O of built-in numeric types.
12
12
  *
13
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
13
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
14
14
  * Portions Copyright (c) 1994, Regents of the University of California
15
15
  *
16
16
  *
@@ -25,9 +25,8 @@
25
25
  #include <limits.h>
26
26
  #include <ctype.h>
27
27
 
28
- #include "common/int.h"
29
- #include "utils/builtins.h"
30
28
  #include "port/pg_bitutils.h"
29
+ #include "utils/builtins.h"
31
30
 
32
31
  /*
33
32
  * A table of all two-digit numbers. This is used to speed up decimal digit
@@ -372,7 +371,7 @@ invalid_syntax:
372
371
  * so that caller can parse the rest. Otherwise, it's an error if anything
373
372
  * but whitespace follows.
374
373
  *
375
- * typname is what is reported in error messges.
374
+ * typname is what is reported in error messages.
376
375
  *
377
376
  * If escontext points to an ErrorSaveContext node, that is filled instead
378
377
  * of throwing an error; the caller must check SOFT_ERROR_OCCURRED()
@@ -390,7 +389,7 @@ invalid_syntax:
390
389
  * so that caller can parse the rest. Otherwise, it's an error if anything
391
390
  * but whitespace follows.
392
391
  *
393
- * typname is what is reported in error messges.
392
+ * typname is what is reported in error messages.
394
393
  *
395
394
  * If escontext points to an ErrorSaveContext node, that is filled instead
396
395
  * of throwing an error; the caller must check SOFT_ERROR_OCCURRED()
@@ -2,6 +2,7 @@
2
2
  * Symbols referenced in this file:
3
3
  * - quote_identifier
4
4
  * - quote_all_identifiers
5
+ * - quote_qualified_identifier
5
6
  *--------------------------------------------------------------------
6
7
  */
7
8
 
@@ -11,7 +12,7 @@
11
12
  * Functions to convert stored expressions/querytrees back to
12
13
  * source text
13
14
  *
14
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
15
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
15
16
  * Portions Copyright (c) 1994, Regents of the University of California
16
17
  *
17
18
  *
@@ -29,7 +30,6 @@
29
30
  #include "access/amapi.h"
30
31
  #include "access/htup_details.h"
31
32
  #include "access/relation.h"
32
- #include "access/sysattr.h"
33
33
  #include "access/table.h"
34
34
  #include "catalog/pg_aggregate.h"
35
35
  #include "catalog/pg_am.h"
@@ -58,7 +58,6 @@
58
58
  #include "optimizer/optimizer.h"
59
59
  #include "parser/parse_agg.h"
60
60
  #include "parser/parse_func.h"
61
- #include "parser/parse_node.h"
62
61
  #include "parser/parse_oper.h"
63
62
  #include "parser/parse_relation.h"
64
63
  #include "parser/parser.h"
@@ -122,14 +121,16 @@ typedef struct
122
121
  {
123
122
  StringInfo buf; /* output buffer to append to */
124
123
  List *namespaces; /* List of deparse_namespace nodes */
124
+ TupleDesc resultDesc; /* if top level of a view, the view's tupdesc */
125
+ List *targetList; /* Current query level's SELECT targetlist */
125
126
  List *windowClause; /* Current query level's WINDOW clause */
126
- List *windowTList; /* targetlist for resolving WINDOW clause */
127
127
  int prettyFlags; /* enabling of pretty-print functions */
128
128
  int wrapColumn; /* max line length, or -1 for no limit */
129
129
  int indentLevel; /* current indent level for pretty-print */
130
130
  bool varprefix; /* true to print prefixes on Vars */
131
- ParseExprKind special_exprkind; /* set only for exprkinds needing special
132
- * handling */
131
+ bool colNamesVisible; /* do we care about output column names? */
132
+ bool inGroupBy; /* deparsing GROUP BY clause? */
133
+ bool varInOrderBy; /* deparsing simple Var in ORDER BY? */
133
134
  Bitmapset *appendparents; /* if not null, map child Vars of these relids
134
135
  * back to the parent rel */
135
136
  } deparse_context;
@@ -360,8 +361,7 @@ static char *pg_get_partkeydef_worker(Oid relid, int prettyFlags,
360
361
  bool attrsOnly, bool missing_ok);
361
362
  static char *pg_get_constraintdef_worker(Oid constraintId, bool fullCommand,
362
363
  int prettyFlags, bool missing_ok);
363
- static text *pg_get_expr_worker(text *expr, Oid relid, const char *relname,
364
- int prettyFlags);
364
+ static text *pg_get_expr_worker(text *expr, Oid relid, int prettyFlags);
365
365
  static int print_function_arguments(StringInfo buf, HeapTuple proctup,
366
366
  bool print_table_args, bool print_defaults);
367
367
  static void print_function_rettype(StringInfo buf, HeapTuple proctup);
@@ -408,27 +408,19 @@ static void get_query_def(Query *query, StringInfo buf, List *parentnamespace,
408
408
  int prettyFlags, int wrapColumn, int startIndent);
409
409
  static void get_values_def(List *values_lists, deparse_context *context);
410
410
  static void get_with_clause(Query *query, deparse_context *context);
411
- static void get_select_query_def(Query *query, deparse_context *context,
412
- TupleDesc resultDesc, bool colNamesVisible);
413
- static void get_insert_query_def(Query *query, deparse_context *context,
414
- bool colNamesVisible);
415
- static void get_update_query_def(Query *query, deparse_context *context,
416
- bool colNamesVisible);
411
+ static void get_select_query_def(Query *query, deparse_context *context);
412
+ static void get_insert_query_def(Query *query, deparse_context *context);
413
+ static void get_update_query_def(Query *query, deparse_context *context);
417
414
  static void get_update_query_targetlist_def(Query *query, List *targetList,
418
415
  deparse_context *context,
419
416
  RangeTblEntry *rte);
420
- static void get_delete_query_def(Query *query, deparse_context *context,
421
- bool colNamesVisible);
422
- static void get_merge_query_def(Query *query, deparse_context *context,
423
- bool colNamesVisible);
417
+ static void get_delete_query_def(Query *query, deparse_context *context);
418
+ static void get_merge_query_def(Query *query, deparse_context *context);
424
419
  static void get_utility_query_def(Query *query, deparse_context *context);
425
- static void get_basic_select_query(Query *query, deparse_context *context,
426
- TupleDesc resultDesc, bool colNamesVisible);
427
- static void get_target_list(List *targetList, deparse_context *context,
428
- TupleDesc resultDesc, bool colNamesVisible);
420
+ static void get_basic_select_query(Query *query, deparse_context *context);
421
+ static void get_target_list(List *targetList, deparse_context *context);
429
422
  static void get_setop_query(Node *setOp, Query *query,
430
- deparse_context *context,
431
- TupleDesc resultDesc, bool colNamesVisible);
423
+ deparse_context *context);
432
424
  static Node *get_rule_sortgroupclause(Index ref, List *tlist,
433
425
  bool force_colno,
434
426
  deparse_context *context);
@@ -447,6 +439,10 @@ static void resolve_special_varno(Node *node, deparse_context *context,
447
439
  rsv_callback callback, void *callback_arg);
448
440
  static Node *find_param_referent(Param *param, deparse_context *context,
449
441
  deparse_namespace **dpns_p, ListCell **ancestor_cell_p);
442
+ static SubPlan *find_param_generator(Param *param, deparse_context *context,
443
+ int *column_p);
444
+ static SubPlan *find_param_generator_initplan(Param *param, Plan *plan,
445
+ int *column_p);
450
446
  static void get_parameter(Param *param, deparse_context *context);
451
447
  static const char *get_simple_binary_op_name(OpExpr *expr);
452
448
  static bool isSimpleNode(Node *node, Node *parentNode, int prettyFlags);
@@ -484,6 +480,8 @@ static void get_const_expr(Const *constval, deparse_context *context,
484
480
  int showtype);
485
481
  static void get_const_collation(Const *constval, deparse_context *context);
486
482
  static void get_json_format(JsonFormat *format, StringInfo buf);
483
+ static void get_json_returning(JsonReturning *returning, StringInfo buf,
484
+ bool json_format_by_default);
487
485
  static void get_json_constructor(JsonConstructorExpr *ctor,
488
486
  deparse_context *context, bool showimplicit);
489
487
  static void get_json_constructor_options(JsonConstructorExpr *ctor,
@@ -519,13 +517,22 @@ static char *generate_qualified_relation_name(Oid relid);
519
517
  static char *generate_function_name(Oid funcid, int nargs,
520
518
  List *argnames, Oid *argtypes,
521
519
  bool has_variadic, bool *use_variadic_p,
522
- ParseExprKind special_exprkind);
520
+ bool inGroupBy);
523
521
  static char *generate_operator_name(Oid operid, Oid arg1, Oid arg2);
524
522
  static void add_cast_to(StringInfo buf, Oid typid);
525
523
  static char *generate_qualified_type_name(Oid typid);
526
524
  static text *string_to_text(char *str);
527
525
  static char *flatten_reloptions(Oid relid);
528
526
  static void get_reloptions(StringInfo buf, Datum reloptions);
527
+ static void get_json_path_spec(Node *path_spec, deparse_context *context,
528
+ bool showimplicit);
529
+ static void get_json_table_columns(TableFunc *tf, JsonTablePathScan *scan,
530
+ deparse_context *context,
531
+ bool showimplicit);
532
+ static void get_json_table_nested_columns(TableFunc *tf, JsonTablePlan *plan,
533
+ deparse_context *context,
534
+ bool showimplicit,
535
+ bool needcomma);
529
536
 
530
537
  #define only_marker(rte) ((rte)->inh ? "" : "ONLY ")
531
538
 
@@ -727,6 +734,11 @@ static void get_reloptions(StringInfo buf, Datum reloptions);
727
734
  * partial indexes, column default expressions, etc. We also support
728
735
  * Var-free expressions, for which the OID can be InvalidOid.
729
736
  *
737
+ * If the OID is nonzero but not actually valid, don't throw an error,
738
+ * just return NULL. This is a bit questionable, but it's what we've
739
+ * done historically, and it can help avoid unwanted failures when
740
+ * examining catalog entries for just-deleted relations.
741
+ *
730
742
  * We expect this function to work, or throw a reasonably clean error,
731
743
  * for any node tree that can appear in a catalog pg_node_tree column.
732
744
  * Query trees, such as those appearing in pg_rewrite.ev_action, are
@@ -1169,9 +1181,7 @@ static void get_reloptions(StringInfo buf, Datum reloptions);
1169
1181
  /* ----------
1170
1182
  * get_target_list - Parse back a SELECT target list
1171
1183
  *
1172
- * This is also used for RETURNING lists in INSERT/UPDATE/DELETE.
1173
- *
1174
- * resultDesc and colNamesVisible are as for get_query_def()
1184
+ * This is also used for RETURNING lists in INSERT/UPDATE/DELETE/MERGE.
1175
1185
  * ----------
1176
1186
  */
1177
1187
 
@@ -1315,6 +1325,20 @@ static void get_reloptions(StringInfo buf, Datum reloptions);
1315
1325
  */
1316
1326
 
1317
1327
 
1328
+ /*
1329
+ * Try to find a subplan/initplan that emits the value for a PARAM_EXEC Param.
1330
+ *
1331
+ * If successful, return the generating subplan/initplan and set *column_p
1332
+ * to the subplan's 0-based output column number.
1333
+ * Otherwise, return NULL.
1334
+ */
1335
+
1336
+
1337
+ /*
1338
+ * Subroutine for find_param_generator: search one Plan node's initplans
1339
+ */
1340
+
1341
+
1318
1342
  /*
1319
1343
  * Display a Param appropriately.
1320
1344
  */
@@ -1368,6 +1392,15 @@ static void get_reloptions(StringInfo buf, Datum reloptions);
1368
1392
 
1369
1393
 
1370
1394
 
1395
+
1396
+ /*
1397
+ * get_json_expr_options
1398
+ *
1399
+ * Parse back common options for JSON_QUERY, JSON_VALUE, JSON_EXISTS and
1400
+ * JSON_TABLE columns.
1401
+ */
1402
+
1403
+
1371
1404
  /* ----------
1372
1405
  * get_rule_expr - Parse back an expression
1373
1406
  *
@@ -1505,6 +1538,11 @@ static void get_reloptions(StringInfo buf, Datum reloptions);
1505
1538
  */
1506
1539
 
1507
1540
 
1541
+ /*
1542
+ * get_json_path_spec - Parse back a JSON path specification
1543
+ */
1544
+
1545
+
1508
1546
  /*
1509
1547
  * get_json_format - Parse back a JsonFormat node
1510
1548
  */
@@ -1543,6 +1581,28 @@ static void get_reloptions(StringInfo buf, Datum reloptions);
1543
1581
 
1544
1582
 
1545
1583
 
1584
+ /* ----------
1585
+ * get_xmltable - Parse back a XMLTABLE function
1586
+ * ----------
1587
+ */
1588
+
1589
+
1590
+ /*
1591
+ * get_json_table_nested_columns - Parse back nested JSON_TABLE columns
1592
+ */
1593
+
1594
+
1595
+ /*
1596
+ * get_json_table_columns - Parse back JSON_TABLE columns
1597
+ */
1598
+
1599
+
1600
+ /* ----------
1601
+ * get_json_table - Parse back a JSON_TABLE function
1602
+ * ----------
1603
+ */
1604
+
1605
+
1546
1606
  /* ----------
1547
1607
  * get_tablefunc - Parse back a table function
1548
1608
  * ----------
@@ -1718,7 +1778,18 @@ quote_identifier(const char *ident)
1718
1778
  * Return a name of the form qualifier.ident, or just ident if qualifier
1719
1779
  * is NULL, quoting each component if necessary. The result is palloc'd.
1720
1780
  */
1781
+ char *
1782
+ quote_qualified_identifier(const char *qualifier,
1783
+ const char *ident)
1784
+ {
1785
+ StringInfoData buf;
1721
1786
 
1787
+ initStringInfo(&buf);
1788
+ if (qualifier)
1789
+ appendStringInfo(&buf, "%s.", quote_identifier(qualifier));
1790
+ appendStringInfoString(&buf, quote_identifier(ident));
1791
+ return buf.data;
1792
+ }
1722
1793
 
1723
1794
  /*
1724
1795
  * get_relation_name
@@ -1762,6 +1833,8 @@ quote_identifier(const char *ident)
1762
1833
  * the output. For non-FuncExpr cases, has_variadic should be false and
1763
1834
  * use_variadic_p can be NULL.
1764
1835
  *
1836
+ * inGroupBy must be true if we're deparsing a GROUP BY clause.
1837
+ *
1765
1838
  * The result includes all necessary quoting and schema-prefixing.
1766
1839
  */
1767
1840
 
@@ -9,7 +9,7 @@
9
9
  * assert.c
10
10
  * Assert support code.
11
11
  *
12
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
12
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
13
13
  * Portions Copyright (c) 1994, Regents of the University of California
14
14
  *
15
15
  *