pg_query 4.2.3 → 5.0.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 (486) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -0
  3. data/README.md +6 -8
  4. data/Rakefile +3 -3
  5. data/ext/pg_query/extconf.rb +1 -3
  6. data/ext/pg_query/include/access/amapi.h +3 -1
  7. data/ext/pg_query/include/access/attmap.h +5 -3
  8. data/ext/pg_query/include/access/attnum.h +1 -1
  9. data/ext/pg_query/include/access/clog.h +1 -1
  10. data/ext/pg_query/include/access/commit_ts.h +1 -1
  11. data/ext/pg_query/include/access/detoast.h +1 -1
  12. data/ext/pg_query/include/access/genam.h +7 -5
  13. data/ext/pg_query/include/access/gin.h +16 -3
  14. data/ext/pg_query/include/access/htup.h +1 -1
  15. data/ext/pg_query/include/access/htup_details.h +6 -2
  16. data/ext/pg_query/include/access/itup.h +61 -58
  17. data/ext/pg_query/include/access/parallel.h +2 -2
  18. data/ext/pg_query/include/access/printtup.h +1 -1
  19. data/ext/pg_query/include/access/relation.h +1 -1
  20. data/ext/pg_query/include/access/relscan.h +1 -1
  21. data/ext/pg_query/include/access/rmgrlist.h +2 -2
  22. data/ext/pg_query/include/access/sdir.h +12 -3
  23. data/ext/pg_query/include/access/skey.h +1 -1
  24. data/ext/pg_query/include/access/stratnum.h +1 -1
  25. data/ext/pg_query/include/access/sysattr.h +1 -1
  26. data/ext/pg_query/include/access/table.h +1 -1
  27. data/ext/pg_query/include/access/tableam.h +68 -45
  28. data/ext/pg_query/include/access/toast_compression.h +1 -1
  29. data/ext/pg_query/include/access/transam.h +1 -1
  30. data/ext/pg_query/include/access/tsmapi.h +82 -0
  31. data/ext/pg_query/include/access/tupconvert.h +5 -2
  32. data/ext/pg_query/include/access/tupdesc.h +2 -2
  33. data/ext/pg_query/include/access/tupmacs.h +58 -98
  34. data/ext/pg_query/include/access/twophase.h +2 -2
  35. data/ext/pg_query/include/access/xact.h +25 -18
  36. data/ext/pg_query/include/access/xlog.h +15 -16
  37. data/ext/pg_query/include/access/xlog_internal.h +100 -62
  38. data/ext/pg_query/include/access/xlogbackup.h +41 -0
  39. data/ext/pg_query/include/access/xlogdefs.h +6 -25
  40. data/ext/pg_query/include/access/xlogprefetcher.h +1 -1
  41. data/ext/pg_query/include/access/xlogreader.h +7 -6
  42. data/ext/pg_query/include/access/xlogrecord.h +17 -5
  43. data/ext/pg_query/include/access/xlogrecovery.h +4 -3
  44. data/ext/pg_query/include/archive/archive_module.h +59 -0
  45. data/ext/pg_query/include/c.h +144 -156
  46. data/ext/pg_query/include/catalog/catalog.h +4 -3
  47. data/ext/pg_query/include/catalog/catversion.h +6 -2
  48. data/ext/pg_query/include/catalog/dependency.h +5 -4
  49. data/ext/pg_query/include/catalog/genbki.h +7 -6
  50. data/ext/pg_query/include/catalog/index.h +4 -4
  51. data/ext/pg_query/include/catalog/indexing.h +1 -1
  52. data/ext/pg_query/include/catalog/namespace.h +2 -2
  53. data/ext/pg_query/include/catalog/objectaccess.h +10 -8
  54. data/ext/pg_query/include/catalog/objectaddress.h +3 -3
  55. data/ext/pg_query/include/catalog/pg_aggregate.h +1 -1
  56. data/ext/pg_query/include/catalog/pg_aggregate_d.h +1 -1
  57. data/ext/pg_query/include/catalog/pg_am.h +1 -1
  58. data/ext/pg_query/include/catalog/pg_am_d.h +1 -1
  59. data/ext/pg_query/include/catalog/pg_attribute.h +19 -17
  60. data/ext/pg_query/include/catalog/pg_attribute_d.h +19 -19
  61. data/ext/pg_query/include/catalog/pg_authid.h +1 -1
  62. data/ext/pg_query/include/catalog/pg_authid_d.h +3 -1
  63. data/ext/pg_query/include/catalog/pg_class.h +1 -1
  64. data/ext/pg_query/include/catalog/pg_class_d.h +1 -1
  65. data/ext/pg_query/include/catalog/pg_collation.h +3 -1
  66. data/ext/pg_query/include/catalog/pg_collation_d.h +4 -3
  67. data/ext/pg_query/include/catalog/pg_constraint.h +2 -2
  68. data/ext/pg_query/include/catalog/pg_constraint_d.h +1 -1
  69. data/ext/pg_query/include/catalog/pg_control.h +9 -1
  70. data/ext/pg_query/include/catalog/pg_conversion.h +2 -2
  71. data/ext/pg_query/include/catalog/pg_conversion_d.h +1 -1
  72. data/ext/pg_query/include/catalog/pg_database.h +124 -0
  73. data/ext/pg_query/include/catalog/pg_database_d.h +52 -0
  74. data/ext/pg_query/include/catalog/pg_depend.h +1 -1
  75. data/ext/pg_query/include/catalog/pg_depend_d.h +1 -1
  76. data/ext/pg_query/include/catalog/pg_event_trigger.h +1 -1
  77. data/ext/pg_query/include/catalog/pg_event_trigger_d.h +1 -1
  78. data/ext/pg_query/include/catalog/pg_index.h +1 -1
  79. data/ext/pg_query/include/catalog/pg_index_d.h +1 -1
  80. data/ext/pg_query/include/catalog/pg_language.h +1 -1
  81. data/ext/pg_query/include/catalog/pg_language_d.h +1 -1
  82. data/ext/pg_query/include/catalog/pg_namespace.h +1 -1
  83. data/ext/pg_query/include/catalog/pg_namespace_d.h +1 -1
  84. data/ext/pg_query/include/catalog/pg_opclass.h +1 -1
  85. data/ext/pg_query/include/catalog/pg_opclass_d.h +1 -1
  86. data/ext/pg_query/include/catalog/pg_operator.h +1 -1
  87. data/ext/pg_query/include/catalog/pg_operator_d.h +1 -1
  88. data/ext/pg_query/include/catalog/pg_opfamily.h +3 -2
  89. data/ext/pg_query/include/catalog/pg_opfamily_d.h +4 -2
  90. data/ext/pg_query/include/catalog/pg_partitioned_table.h +1 -1
  91. data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +1 -1
  92. data/ext/pg_query/include/catalog/pg_proc.h +1 -1
  93. data/ext/pg_query/include/catalog/pg_proc_d.h +1 -1
  94. data/ext/pg_query/include/catalog/pg_publication.h +2 -5
  95. data/ext/pg_query/include/catalog/pg_publication_d.h +1 -1
  96. data/ext/pg_query/include/catalog/pg_replication_origin.h +1 -1
  97. data/ext/pg_query/include/catalog/pg_replication_origin_d.h +1 -1
  98. data/ext/pg_query/include/catalog/pg_statistic.h +1 -1
  99. data/ext/pg_query/include/catalog/pg_statistic_d.h +1 -1
  100. data/ext/pg_query/include/catalog/pg_statistic_ext.h +1 -1
  101. data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +1 -1
  102. data/ext/pg_query/include/catalog/pg_transform.h +1 -1
  103. data/ext/pg_query/include/catalog/pg_transform_d.h +1 -1
  104. data/ext/pg_query/include/catalog/pg_trigger.h +1 -1
  105. data/ext/pg_query/include/catalog/pg_trigger_d.h +1 -1
  106. data/ext/pg_query/include/catalog/pg_ts_config.h +1 -1
  107. data/ext/pg_query/include/catalog/pg_ts_config_d.h +1 -1
  108. data/ext/pg_query/include/catalog/pg_ts_dict.h +1 -1
  109. data/ext/pg_query/include/catalog/pg_ts_dict_d.h +1 -1
  110. data/ext/pg_query/include/catalog/pg_ts_parser.h +1 -1
  111. data/ext/pg_query/include/catalog/pg_ts_parser_d.h +1 -1
  112. data/ext/pg_query/include/catalog/pg_ts_template.h +1 -1
  113. data/ext/pg_query/include/catalog/pg_ts_template_d.h +1 -1
  114. data/ext/pg_query/include/catalog/pg_type.h +1 -1
  115. data/ext/pg_query/include/catalog/pg_type_d.h +1 -1
  116. data/ext/pg_query/include/catalog/storage.h +6 -6
  117. data/ext/pg_query/include/commands/async.h +1 -1
  118. data/ext/pg_query/include/commands/dbcommands.h +2 -1
  119. data/ext/pg_query/include/commands/defrem.h +2 -1
  120. data/ext/pg_query/include/commands/event_trigger.h +1 -1
  121. data/ext/pg_query/include/commands/explain.h +3 -1
  122. data/ext/pg_query/include/commands/prepare.h +1 -1
  123. data/ext/pg_query/include/commands/tablespace.h +4 -4
  124. data/ext/pg_query/include/commands/trigger.h +15 -14
  125. data/ext/pg_query/include/commands/user.h +9 -3
  126. data/ext/pg_query/include/commands/vacuum.h +60 -14
  127. data/ext/pg_query/include/common/cryptohash.h +39 -0
  128. data/ext/pg_query/include/common/file_perm.h +1 -1
  129. data/ext/pg_query/include/common/hashfn.h +1 -1
  130. data/ext/pg_query/include/common/int.h +437 -0
  131. data/ext/pg_query/include/common/ip.h +4 -2
  132. data/ext/pg_query/include/common/keywords.h +1 -1
  133. data/ext/pg_query/include/common/kwlookup.h +2 -2
  134. data/ext/pg_query/include/common/pg_prng.h +3 -2
  135. data/ext/pg_query/include/common/relpath.h +20 -13
  136. data/ext/pg_query/include/common/scram-common.h +70 -0
  137. data/ext/pg_query/include/common/sha2.h +32 -0
  138. data/ext/pg_query/include/common/string.h +5 -3
  139. data/ext/pg_query/include/common/unicode_east_asian_fw_table.h +10 -10
  140. data/ext/pg_query/include/common/{unicode_combining_table.h → unicode_nonspacing_table.h} +31 -13
  141. data/ext/pg_query/include/copyfuncs.funcs.c +5013 -0
  142. data/ext/pg_query/include/copyfuncs.switch.c +938 -0
  143. data/ext/pg_query/include/datatype/timestamp.h +11 -4
  144. data/ext/pg_query/include/equalfuncs.funcs.c +3097 -0
  145. data/ext/pg_query/include/equalfuncs.switch.c +785 -0
  146. data/ext/pg_query/include/executor/execdesc.h +1 -1
  147. data/ext/pg_query/include/executor/executor.h +34 -17
  148. data/ext/pg_query/include/executor/functions.h +1 -1
  149. data/ext/pg_query/include/executor/instrument.h +1 -1
  150. data/ext/pg_query/include/executor/spi.h +2 -2
  151. data/ext/pg_query/include/executor/tablefunc.h +1 -1
  152. data/ext/pg_query/include/executor/tuptable.h +18 -11
  153. data/ext/pg_query/include/fmgr.h +21 -2
  154. data/ext/pg_query/include/foreign/fdwapi.h +294 -0
  155. data/ext/pg_query/include/funcapi.h +12 -12
  156. data/ext/pg_query/include/gram.h +1127 -0
  157. data/ext/pg_query/include/{parser/gramparse.h → gramparse.h} +4 -4
  158. data/ext/pg_query/include/jit/jit.h +2 -2
  159. data/ext/pg_query/include/kwlist_d.h +534 -510
  160. data/ext/pg_query/include/lib/dshash.h +4 -1
  161. data/ext/pg_query/include/lib/ilist.h +435 -22
  162. data/ext/pg_query/include/lib/pairingheap.h +1 -1
  163. data/ext/pg_query/include/lib/simplehash.h +9 -9
  164. data/ext/pg_query/include/lib/sort_template.h +1 -1
  165. data/ext/pg_query/include/lib/stringinfo.h +3 -3
  166. data/ext/pg_query/include/libpq/auth.h +8 -2
  167. data/ext/pg_query/include/libpq/crypt.h +1 -1
  168. data/ext/pg_query/include/libpq/hba.h +24 -17
  169. data/ext/pg_query/include/libpq/libpq-be.h +36 -25
  170. data/ext/pg_query/include/libpq/libpq.h +1 -1
  171. data/ext/pg_query/include/libpq/pqcomm.h +10 -41
  172. data/ext/pg_query/include/libpq/pqformat.h +2 -2
  173. data/ext/pg_query/include/libpq/pqsignal.h +22 -10
  174. data/ext/pg_query/include/libpq/sasl.h +136 -0
  175. data/ext/pg_query/include/libpq/scram.h +37 -0
  176. data/ext/pg_query/include/mb/pg_wchar.h +35 -18
  177. data/ext/pg_query/include/mb/stringinfo_mb.h +1 -1
  178. data/ext/pg_query/include/miscadmin.h +26 -14
  179. data/ext/pg_query/include/nodes/bitmapset.h +11 -7
  180. data/ext/pg_query/include/nodes/execnodes.h +83 -30
  181. data/ext/pg_query/include/nodes/extensible.h +5 -3
  182. data/ext/pg_query/include/nodes/lockoptions.h +1 -1
  183. data/ext/pg_query/include/nodes/makefuncs.h +14 -2
  184. data/ext/pg_query/include/nodes/memnodes.h +7 -4
  185. data/ext/pg_query/include/nodes/miscnodes.h +56 -0
  186. data/ext/pg_query/include/nodes/nodeFuncs.h +89 -29
  187. data/ext/pg_query/include/nodes/nodes.h +95 -510
  188. data/ext/pg_query/include/nodes/nodetags.h +471 -0
  189. data/ext/pg_query/include/nodes/params.h +3 -3
  190. data/ext/pg_query/include/nodes/parsenodes.h +377 -139
  191. data/ext/pg_query/include/nodes/pathnodes.h +1090 -440
  192. data/ext/pg_query/include/nodes/pg_list.h +30 -7
  193. data/ext/pg_query/include/nodes/plannodes.h +367 -124
  194. data/ext/pg_query/include/nodes/primnodes.h +670 -222
  195. data/ext/pg_query/include/nodes/print.h +1 -1
  196. data/ext/pg_query/include/{utils → nodes}/queryjumble.h +5 -7
  197. data/ext/pg_query/include/nodes/replnodes.h +111 -0
  198. data/ext/pg_query/include/nodes/supportnodes.h +346 -0
  199. data/ext/pg_query/include/nodes/tidbitmap.h +1 -1
  200. data/ext/pg_query/include/nodes/value.h +12 -2
  201. data/ext/pg_query/include/optimizer/cost.h +6 -4
  202. data/ext/pg_query/include/optimizer/geqo.h +1 -1
  203. data/ext/pg_query/include/optimizer/geqo_gene.h +1 -1
  204. data/ext/pg_query/include/optimizer/optimizer.h +8 -8
  205. data/ext/pg_query/include/optimizer/paths.h +16 -7
  206. data/ext/pg_query/include/optimizer/planmain.h +3 -6
  207. data/ext/pg_query/include/parser/analyze.h +4 -3
  208. data/ext/pg_query/include/parser/kwlist.h +12 -1
  209. data/ext/pg_query/include/parser/parse_agg.h +4 -2
  210. data/ext/pg_query/include/parser/parse_coerce.h +3 -1
  211. data/ext/pg_query/include/parser/parse_expr.h +1 -1
  212. data/ext/pg_query/include/parser/parse_func.h +1 -1
  213. data/ext/pg_query/include/parser/parse_node.h +22 -4
  214. data/ext/pg_query/include/parser/parse_oper.h +3 -3
  215. data/ext/pg_query/include/parser/parse_relation.h +8 -3
  216. data/ext/pg_query/include/parser/parse_type.h +4 -3
  217. data/ext/pg_query/include/parser/parser.h +1 -1
  218. data/ext/pg_query/include/parser/parsetree.h +1 -1
  219. data/ext/pg_query/include/parser/scanner.h +2 -2
  220. data/ext/pg_query/include/parser/scansup.h +1 -1
  221. data/ext/pg_query/include/partitioning/partdefs.h +1 -1
  222. data/ext/pg_query/include/pg_config.h +21 -216
  223. data/ext/pg_query/include/pg_config_manual.h +8 -46
  224. data/ext/pg_query/include/pg_getopt.h +1 -1
  225. data/ext/pg_query/include/pg_query.h +27 -3
  226. data/ext/pg_query/include/pg_query_enum_defs.c +311 -149
  227. data/ext/pg_query/include/pg_query_fingerprint_conds.c +545 -489
  228. data/ext/pg_query/include/pg_query_fingerprint_defs.c +5092 -4432
  229. data/ext/pg_query/include/pg_query_outfuncs_conds.c +385 -343
  230. data/ext/pg_query/include/pg_query_outfuncs_defs.c +1294 -1161
  231. data/ext/pg_query/include/pg_query_readfuncs_conds.c +137 -123
  232. data/ext/pg_query/include/pg_query_readfuncs_defs.c +1657 -1496
  233. data/ext/pg_query/include/pg_trace.h +1 -1
  234. data/ext/pg_query/include/pgstat.h +172 -93
  235. data/ext/pg_query/include/pgtime.h +3 -3
  236. data/ext/pg_query/include/pl_gram.h +64 -62
  237. data/ext/pg_query/include/pl_reserved_kwlist.h +1 -1
  238. data/ext/pg_query/include/pl_reserved_kwlist_d.h +1 -1
  239. data/ext/pg_query/include/pl_unreserved_kwlist.h +2 -1
  240. data/ext/pg_query/include/pl_unreserved_kwlist_d.h +48 -46
  241. data/ext/pg_query/include/plpgsql.h +17 -22
  242. data/ext/pg_query/include/port/atomics/arch-arm.h +3 -3
  243. data/ext/pg_query/include/port/atomics/arch-ppc.h +21 -21
  244. data/ext/pg_query/include/port/atomics/arch-x86.h +2 -2
  245. data/ext/pg_query/include/port/atomics/fallback.h +3 -3
  246. data/ext/pg_query/include/port/atomics/generic-gcc.h +1 -1
  247. data/ext/pg_query/include/port/atomics/generic.h +1 -1
  248. data/ext/pg_query/include/port/atomics.h +2 -7
  249. data/ext/pg_query/include/port/pg_bitutils.h +62 -25
  250. data/ext/pg_query/include/port/pg_bswap.h +1 -1
  251. data/ext/pg_query/include/port/pg_crc32c.h +1 -1
  252. data/ext/pg_query/include/port/simd.h +375 -0
  253. data/ext/pg_query/include/port.h +42 -75
  254. data/ext/pg_query/include/portability/instr_time.h +81 -140
  255. data/ext/pg_query/include/postgres.h +205 -434
  256. data/ext/pg_query/include/postgres_ext.h +0 -1
  257. data/ext/pg_query/include/postmaster/autovacuum.h +1 -4
  258. data/ext/pg_query/include/postmaster/auxprocess.h +1 -1
  259. data/ext/pg_query/include/postmaster/bgworker.h +2 -2
  260. data/ext/pg_query/include/postmaster/bgworker_internals.h +1 -1
  261. data/ext/pg_query/include/postmaster/bgwriter.h +2 -2
  262. data/ext/pg_query/include/postmaster/fork_process.h +1 -1
  263. data/ext/pg_query/include/postmaster/interrupt.h +1 -1
  264. data/ext/pg_query/include/postmaster/pgarch.h +1 -38
  265. data/ext/pg_query/include/postmaster/postmaster.h +5 -2
  266. data/ext/pg_query/include/postmaster/startup.h +3 -1
  267. data/ext/pg_query/include/postmaster/syslogger.h +2 -2
  268. data/ext/pg_query/include/postmaster/walwriter.h +3 -1
  269. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +6186 -5585
  270. data/ext/pg_query/include/protobuf/pg_query.pb.h +112443 -91222
  271. data/ext/pg_query/include/regex/regex.h +9 -6
  272. data/ext/pg_query/include/replication/logicallauncher.h +6 -1
  273. data/ext/pg_query/include/replication/logicalproto.h +30 -10
  274. data/ext/pg_query/include/replication/logicalworker.h +14 -1
  275. data/ext/pg_query/include/replication/origin.h +4 -4
  276. data/ext/pg_query/include/replication/reorderbuffer.h +113 -45
  277. data/ext/pg_query/include/replication/slot.h +25 -6
  278. data/ext/pg_query/include/replication/syncrep.h +2 -8
  279. data/ext/pg_query/include/replication/walreceiver.h +15 -9
  280. data/ext/pg_query/include/replication/walsender.h +13 -13
  281. data/ext/pg_query/include/rewrite/prs2lock.h +1 -1
  282. data/ext/pg_query/include/rewrite/rewriteHandler.h +1 -4
  283. data/ext/pg_query/include/rewrite/rewriteManip.h +11 -2
  284. data/ext/pg_query/include/rewrite/rewriteSupport.h +1 -1
  285. data/ext/pg_query/include/src_backend_nodes_copyfuncs.funcs.c +5321 -0
  286. data/ext/pg_query/include/src_backend_nodes_equalfuncs.funcs.c +3354 -0
  287. data/ext/pg_query/include/storage/backendid.h +1 -1
  288. data/ext/pg_query/include/storage/block.h +24 -31
  289. data/ext/pg_query/include/storage/buf.h +1 -1
  290. data/ext/pg_query/include/storage/bufmgr.h +183 -87
  291. data/ext/pg_query/include/storage/bufpage.h +146 -93
  292. data/ext/pg_query/include/storage/condition_variable.h +2 -2
  293. data/ext/pg_query/include/storage/dsm.h +3 -6
  294. data/ext/pg_query/include/storage/dsm_impl.h +4 -1
  295. data/ext/pg_query/include/storage/fd.h +24 -20
  296. data/ext/pg_query/include/storage/fileset.h +1 -1
  297. data/ext/pg_query/include/storage/ipc.h +1 -1
  298. data/ext/pg_query/include/storage/item.h +1 -1
  299. data/ext/pg_query/include/storage/itemid.h +1 -1
  300. data/ext/pg_query/include/storage/itemptr.h +94 -57
  301. data/ext/pg_query/include/storage/large_object.h +1 -1
  302. data/ext/pg_query/include/storage/latch.h +9 -1
  303. data/ext/pg_query/include/storage/lmgr.h +6 -1
  304. data/ext/pg_query/include/storage/lock.h +21 -13
  305. data/ext/pg_query/include/storage/lockdefs.h +3 -3
  306. data/ext/pg_query/include/storage/lwlock.h +16 -2
  307. data/ext/pg_query/include/storage/off.h +1 -1
  308. data/ext/pg_query/include/storage/pg_sema.h +1 -1
  309. data/ext/pg_query/include/storage/pg_shmem.h +1 -1
  310. data/ext/pg_query/include/storage/pmsignal.h +1 -1
  311. data/ext/pg_query/include/storage/predicate.h +2 -2
  312. data/ext/pg_query/include/storage/proc.h +22 -17
  313. data/ext/pg_query/include/storage/procarray.h +3 -2
  314. data/ext/pg_query/include/storage/proclist_types.h +1 -1
  315. data/ext/pg_query/include/storage/procsignal.h +3 -1
  316. data/ext/pg_query/include/storage/relfilelocator.h +99 -0
  317. data/ext/pg_query/include/storage/s_lock.h +66 -309
  318. data/ext/pg_query/include/storage/sharedfileset.h +1 -1
  319. data/ext/pg_query/include/storage/shm_mq.h +1 -1
  320. data/ext/pg_query/include/storage/shm_toc.h +1 -1
  321. data/ext/pg_query/include/storage/shmem.h +1 -23
  322. data/ext/pg_query/include/storage/sinval.h +3 -3
  323. data/ext/pg_query/include/storage/sinvaladt.h +4 -2
  324. data/ext/pg_query/include/storage/smgr.h +12 -10
  325. data/ext/pg_query/include/storage/spin.h +1 -1
  326. data/ext/pg_query/include/storage/standby.h +9 -8
  327. data/ext/pg_query/include/storage/standbydefs.h +1 -1
  328. data/ext/pg_query/include/storage/sync.h +3 -3
  329. data/ext/pg_query/include/tcop/cmdtag.h +7 -2
  330. data/ext/pg_query/include/tcop/cmdtaglist.h +1 -1
  331. data/ext/pg_query/include/tcop/deparse_utility.h +1 -1
  332. data/ext/pg_query/include/tcop/dest.h +1 -3
  333. data/ext/pg_query/include/tcop/fastpath.h +1 -1
  334. data/ext/pg_query/include/tcop/pquery.h +1 -1
  335. data/ext/pg_query/include/tcop/tcopprot.h +1 -4
  336. data/ext/pg_query/include/tcop/utility.h +1 -1
  337. data/ext/pg_query/include/tsearch/ts_cache.h +2 -4
  338. data/ext/pg_query/include/utils/acl.h +26 -81
  339. data/ext/pg_query/include/utils/aclchk_internal.h +1 -1
  340. data/ext/pg_query/include/utils/array.h +19 -1
  341. data/ext/pg_query/include/utils/backend_progress.h +2 -1
  342. data/ext/pg_query/include/utils/backend_status.h +24 -3
  343. data/ext/pg_query/include/utils/builtins.h +14 -5
  344. data/ext/pg_query/include/utils/bytea.h +1 -1
  345. data/ext/pg_query/include/utils/catcache.h +1 -1
  346. data/ext/pg_query/include/utils/date.h +37 -9
  347. data/ext/pg_query/include/utils/datetime.h +41 -21
  348. data/ext/pg_query/include/utils/datum.h +1 -1
  349. data/ext/pg_query/include/utils/dsa.h +5 -1
  350. data/ext/pg_query/include/utils/elog.h +101 -26
  351. data/ext/pg_query/include/utils/expandeddatum.h +14 -3
  352. data/ext/pg_query/include/utils/expandedrecord.h +14 -4
  353. data/ext/pg_query/include/utils/float.h +7 -6
  354. data/ext/pg_query/include/utils/fmgroids.h +54 -1
  355. data/ext/pg_query/include/utils/fmgrprotos.h +45 -3
  356. data/ext/pg_query/include/utils/fmgrtab.h +1 -1
  357. data/ext/pg_query/include/utils/guc.h +55 -82
  358. data/ext/pg_query/include/utils/guc_hooks.h +163 -0
  359. data/ext/pg_query/include/utils/guc_tables.h +49 -3
  360. data/ext/pg_query/include/utils/hsearch.h +1 -1
  361. data/ext/pg_query/include/utils/inval.h +3 -3
  362. data/ext/pg_query/include/utils/logtape.h +77 -0
  363. data/ext/pg_query/include/utils/lsyscache.h +5 -1
  364. data/ext/pg_query/include/utils/memdebug.h +1 -1
  365. data/ext/pg_query/include/utils/memutils.h +5 -49
  366. data/ext/pg_query/include/utils/memutils_internal.h +136 -0
  367. data/ext/pg_query/include/utils/memutils_memorychunk.h +237 -0
  368. data/ext/pg_query/include/utils/numeric.h +20 -5
  369. data/ext/pg_query/include/utils/palloc.h +8 -1
  370. data/ext/pg_query/include/utils/partcache.h +3 -2
  371. data/ext/pg_query/include/utils/pg_locale.h +22 -14
  372. data/ext/pg_query/include/utils/pgstat_internal.h +37 -7
  373. data/ext/pg_query/include/utils/pidfile.h +1 -1
  374. data/ext/pg_query/include/utils/plancache.h +1 -1
  375. data/ext/pg_query/include/utils/portal.h +1 -1
  376. data/ext/pg_query/include/utils/probes.h +6 -6
  377. data/ext/pg_query/include/utils/ps_status.h +23 -1
  378. data/ext/pg_query/include/utils/queryenvironment.h +1 -1
  379. data/ext/pg_query/include/utils/regproc.h +3 -3
  380. data/ext/pg_query/include/utils/rel.h +60 -43
  381. data/ext/pg_query/include/utils/relcache.h +13 -8
  382. data/ext/pg_query/include/utils/reltrigger.h +1 -1
  383. data/ext/pg_query/include/utils/resowner.h +1 -1
  384. data/ext/pg_query/include/utils/ruleutils.h +6 -1
  385. data/ext/pg_query/include/utils/sharedtuplestore.h +1 -1
  386. data/ext/pg_query/include/utils/snapmgr.h +4 -2
  387. data/ext/pg_query/include/utils/snapshot.h +1 -1
  388. data/ext/pg_query/include/utils/sortsupport.h +2 -2
  389. data/ext/pg_query/include/utils/syscache.h +4 -1
  390. data/ext/pg_query/include/utils/timeout.h +1 -1
  391. data/ext/pg_query/include/utils/timestamp.h +41 -11
  392. data/ext/pg_query/include/utils/tuplesort.h +189 -35
  393. data/ext/pg_query/include/utils/tuplestore.h +1 -1
  394. data/ext/pg_query/include/utils/typcache.h +1 -1
  395. data/ext/pg_query/include/utils/varlena.h +13 -1
  396. data/ext/pg_query/include/utils/wait_event.h +9 -4
  397. data/ext/pg_query/include/utils/xml.h +15 -5
  398. data/ext/pg_query/include/varatt.h +358 -0
  399. data/ext/pg_query/pg_query.c +1 -1
  400. data/ext/pg_query/pg_query.pb-c.c +19755 -17757
  401. data/ext/pg_query/pg_query_fingerprint.c +8 -3
  402. data/ext/pg_query/pg_query_fingerprint.h +1 -1
  403. data/ext/pg_query/pg_query_internal.h +1 -1
  404. data/ext/pg_query/pg_query_json_plpgsql.c +1 -0
  405. data/ext/pg_query/pg_query_normalize.c +1 -1
  406. data/ext/pg_query/pg_query_outfuncs_protobuf.c +2 -2
  407. data/ext/pg_query/pg_query_parse.c +46 -4
  408. data/ext/pg_query/pg_query_parse_plpgsql.c +1 -1
  409. data/ext/pg_query/pg_query_scan.c +1 -1
  410. data/ext/pg_query/pg_query_split.c +2 -2
  411. data/ext/pg_query/postgres_deparse.c +503 -105
  412. data/ext/pg_query/src_backend_catalog_namespace.c +7 -2
  413. data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -1
  414. data/ext/pg_query/src_backend_commands_define.c +1 -1
  415. data/ext/pg_query/src_backend_nodes_bitmapset.c +11 -70
  416. data/ext/pg_query/src_backend_nodes_copyfuncs.c +96 -6202
  417. data/ext/pg_query/src_backend_nodes_equalfuncs.c +95 -4068
  418. data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
  419. data/ext/pg_query/src_backend_nodes_list.c +14 -2
  420. data/ext/pg_query/src_backend_nodes_makefuncs.c +95 -1
  421. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +283 -132
  422. data/ext/pg_query/src_backend_nodes_value.c +1 -1
  423. data/ext/pg_query/src_backend_parser_gram.c +33208 -31806
  424. data/ext/pg_query/src_backend_parser_parser.c +28 -2
  425. data/ext/pg_query/src_backend_parser_scan.c +4318 -3329
  426. data/ext/pg_query/src_backend_parser_scansup.c +1 -1
  427. data/ext/pg_query/src_backend_postmaster_postmaster.c +129 -110
  428. data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
  429. data/ext/pg_query/src_backend_tcop_postgres.c +66 -87
  430. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +1 -1
  431. data/ext/pg_query/src_backend_utils_adt_datum.c +5 -7
  432. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  433. data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
  434. data/ext/pg_query/src_backend_utils_adt_numutils.c +489 -0
  435. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +79 -5
  436. data/ext/pg_query/src_backend_utils_error_assert.c +4 -7
  437. data/ext/pg_query/src_backend_utils_error_elog.c +354 -97
  438. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +33 -1
  439. data/ext/pg_query/src_backend_utils_init_globals.c +5 -2
  440. data/ext/pg_query/src_backend_utils_mb_mbutils.c +13 -4
  441. data/ext/pg_query/src_backend_utils_misc_guc_tables.c +494 -0
  442. data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +163 -0
  443. data/ext/pg_query/src_backend_utils_mmgr_aset.c +449 -312
  444. data/ext/pg_query/src_backend_utils_mmgr_generation.c +1039 -0
  445. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +398 -49
  446. data/ext/pg_query/src_backend_utils_mmgr_slab.c +1021 -0
  447. data/ext/pg_query/src_common_encnames.c +4 -1
  448. data/ext/pg_query/src_common_hashfn.c +1 -1
  449. data/ext/pg_query/src_common_keywords.c +1 -1
  450. data/ext/pg_query/src_common_kwlist_d.h +534 -510
  451. data/ext/pg_query/src_common_kwlookup.c +1 -1
  452. data/ext/pg_query/src_common_psprintf.c +1 -1
  453. data/ext/pg_query/src_common_stringinfo.c +4 -4
  454. data/ext/pg_query/src_common_wchar.c +9 -8
  455. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +1 -1
  456. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -1
  457. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +661 -694
  458. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  459. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
  460. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +1 -1
  461. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +48 -46
  462. data/ext/pg_query/src_port_pg_bitutils.c +1 -1
  463. data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
  464. data/ext/pg_query/src_port_snprintf.c +3 -7
  465. data/ext/pg_query/src_port_strerror.c +1 -1
  466. data/ext/pg_query/src_port_strnlen.c +1 -1
  467. data/lib/pg_query/pg_query_pb.rb +166 -3191
  468. data/lib/pg_query/treewalker.rb +7 -2
  469. data/lib/pg_query/version.rb +1 -1
  470. metadata +43 -24
  471. data/ext/pg_query/include/catalog/pg_parameter_acl.h +0 -60
  472. data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +0 -34
  473. data/ext/pg_query/include/commands/variable.h +0 -38
  474. data/ext/pg_query/include/getaddrinfo.h +0 -162
  475. data/ext/pg_query/include/parser/gram.h +0 -1101
  476. data/ext/pg_query/include/storage/relfilenode.h +0 -99
  477. data/ext/pg_query/include/utils/dynahash.h +0 -20
  478. data/ext/pg_query/include/utils/pg_lsn.h +0 -29
  479. data/ext/pg_query/include/utils/rls.h +0 -50
  480. data/ext/pg_query/include/utils/tzparser.h +0 -39
  481. data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -371
  482. data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1116
  483. data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1993
  484. data/ext/pg_query/src_common_pg_prng.c +0 -152
  485. data/ext/pg_query/src_common_string.c +0 -92
  486. data/ext/pg_query/src_port_pgsleep.c +0 -69
@@ -3,7 +3,7 @@
3
3
  * pl_unreserved_kwlist_d.h
4
4
  * List of keywords represented as a ScanKeywordList.
5
5
  *
6
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * NOTES
@@ -80,6 +80,7 @@ static const char UnreservedPLKeywords_kw_string[] =
80
80
  "pg_exception_context\0"
81
81
  "pg_exception_detail\0"
82
82
  "pg_exception_hint\0"
83
+ "pg_routine_oid\0"
83
84
  "print_strict_params\0"
84
85
  "prior\0"
85
86
  "query\0"
@@ -165,63 +166,64 @@ static const uint16 UnreservedPLKeywords_kw_offsets[] = {
165
166
  420,
166
167
  440,
167
168
  458,
168
- 478,
169
- 484,
170
- 490,
171
- 496,
169
+ 473,
170
+ 493,
171
+ 499,
172
172
  505,
173
- 512,
174
- 530,
175
- 538,
176
- 547,
177
- 557,
178
- 565,
173
+ 511,
174
+ 520,
175
+ 527,
176
+ 545,
177
+ 553,
178
+ 562,
179
179
  572,
180
- 584,
181
- 591,
182
- 597,
180
+ 580,
181
+ 587,
182
+ 599,
183
183
  606,
184
- 614,
185
- 620,
186
- 631,
187
- 636,
188
- 647,
189
- 660,
190
- 678,
184
+ 612,
185
+ 621,
186
+ 629,
187
+ 635,
188
+ 646,
189
+ 651,
190
+ 662,
191
+ 675,
192
+ 693,
191
193
  };
192
194
 
193
- #define UNRESERVEDPLKEYWORDS_NUM_KEYWORDS 82
195
+ #define UNRESERVEDPLKEYWORDS_NUM_KEYWORDS 83
194
196
 
195
197
  static int
196
198
  UnreservedPLKeywords_hash_func(const void *key, size_t keylen)
197
199
  {
198
- static const int16 h[165] = {
199
- 58, 0, 26, 32767, 0, 0, 9, 32767,
200
- 0, 32767, 37, 74, 32767, -7, 32767, 39,
201
- 58, -5, 32767, 31, 32767, 32767, 75, -23,
202
- 32767, 0, 32767, 32767, 32767, -14, 32767, 81,
203
- 32767, 32767, 32767, -36, -9, 32767, 32767, 32767,
204
- 40, 32767, 54, 10, 11, 43, 32767, 0,
205
- 52, 105, -22, 15, 32767, -33, 49, -65,
206
- 48, 32767, 32767, 32767, 25, 49, -47, 37,
207
- 21, 32767, 32767, -15, 70, 32767, 32767, 64,
208
- -10, 126, 32767, 51, 0, 36, 32767, -55,
209
- -22, 32767, 32767, 32767, 32767, 32767, -26, -35,
210
- 32767, 61, 32767, 32767, 32767, -23, 98, 48,
211
- 23, 19, 32767, 7, 35, 5, -18, 71,
212
- 28, 5, 32767, 32767, 32767, 74, 32767, 82,
213
- 32767, 0, 32767, 32767, 66, 0, 0, 50,
214
- 32767, 32767, 5, 2, 0, 32767, 55, 32767,
215
- 32767, 45, 79, 32767, 32767, 73, 22, 0,
216
- 103, 32767, -20, 72, 32767, 0, 29, 32767,
217
- 0, 32767, 32767, 0, 50, 28, 32767, -40,
218
- 32767, 32767, 34, 56, 32767, 32767, 32767, 17,
219
- -36, 32767, 67, 32767, 0
200
+ static const int16 h[167] = {
201
+ 0, -26, 32767, 0, 74, -36, 32767, 32767,
202
+ 93, 0, 35, 14, 34, -65, -42, 78,
203
+ -22, 8, 10, 0, 5, 32767, 10, 26,
204
+ 32767, 4, 32767, 32767, -81, -9, -25, 32767,
205
+ -17, 11, 0, -43, 11, 8, 45, 0,
206
+ 32767, 32767, 32767, 12, 0, 32767, 32, 32767,
207
+ 0, 32767, -18, 64, 32767, -2, 31, 32767,
208
+ 50, 80, -75, 32767, 32767, 32767, 0, 32767,
209
+ 32767, 0, 54, 82, 32767, 32767, 69, 60,
210
+ 43, 32767, 0, 95, 21, 1, 27, 0,
211
+ 120, 32767, -46, 32767, -57, 32767, 32767, 55,
212
+ 70, 32767, 28, 32767, 0, -14, -38, 32767,
213
+ 57, 0, 32767, 19, 98, 0, 32767, 68,
214
+ 32767, 32767, 32767, 32767, -26, 13, 27, 35,
215
+ 37, 32767, 49, -44, 65, -35, 0, 32767,
216
+ 32767, 32767, 30, 0, 0, 32767, 26, 42,
217
+ 7, 32767, 72, -43, 32767, 0, 32767, 89,
218
+ 36, 48, 32767, 32, 38, 3, 32767, 49,
219
+ 32767, 0, 51, 0, 32767, 73, 32767, 32767,
220
+ 79, 32767, 30, 32767, 0, 0, 50, 32767,
221
+ 0, 32767, 32767, 32767, 0, 32767, 32767
220
222
  };
221
223
 
222
224
  const unsigned char *k = (const unsigned char *) key;
223
225
  uint32 a = 0;
224
- uint32 b = 0;
226
+ uint32 b = 1;
225
227
 
226
228
  while (keylen--)
227
229
  {
@@ -230,7 +232,7 @@ UnreservedPLKeywords_hash_func(const void *key, size_t keylen)
230
232
  a = a * 257 + c;
231
233
  b = b * 8191 + c;
232
234
  }
233
- return h[a % 165] + h[b % 165];
235
+ return h[a % 167] + h[b % 167];
234
236
  }
235
237
 
236
238
  static const ScanKeywordList UnreservedPLKeywords = {
@@ -3,7 +3,7 @@
3
3
  * plpgsql.h - Definitions for the PL/pgSQL
4
4
  * procedural language
5
5
  *
6
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  *
@@ -147,6 +147,7 @@ enum
147
147
  typedef enum PLpgSQL_getdiag_kind
148
148
  {
149
149
  PLPGSQL_GETDIAG_ROW_COUNT,
150
+ PLPGSQL_GETDIAG_ROUTINE_OID,
150
151
  PLPGSQL_GETDIAG_CONTEXT,
151
152
  PLPGSQL_GETDIAG_ERROR_CONTEXT,
152
153
  PLPGSQL_GETDIAG_ERROR_DETAIL,
@@ -1075,7 +1076,6 @@ typedef struct PLpgSQL_execstate
1075
1076
 
1076
1077
  /* lookup table to use for executing type casts */
1077
1078
  HTAB *cast_hash;
1078
- MemoryContext cast_hash_context;
1079
1079
 
1080
1080
  /* memory context for statement-lifespan temporary values */
1081
1081
  MemoryContext stmt_mcontext; /* current stmt context, or NULL if none */
@@ -1231,11 +1231,11 @@ extern PLpgSQL_plugin **plpgsql_plugin_ptr;
1231
1231
  /*
1232
1232
  * Functions in pl_comp.c
1233
1233
  */
1234
- extern PLpgSQL_function *plpgsql_compile(FunctionCallInfo fcinfo,
1235
- bool forValidator);
1234
+ extern PGDLLEXPORT PLpgSQL_function *plpgsql_compile(FunctionCallInfo fcinfo,
1235
+ bool forValidator);
1236
1236
  extern PLpgSQL_function *plpgsql_compile_inline(char *proc_source);
1237
- extern void plpgsql_parser_setup(struct ParseState *pstate,
1238
- PLpgSQL_expr *expr);
1237
+ extern PGDLLEXPORT void plpgsql_parser_setup(struct ParseState *pstate,
1238
+ PLpgSQL_expr *expr);
1239
1239
  extern bool plpgsql_parse_word(char *word1, const char *yytxt, bool lookup,
1240
1240
  PLwdatum *wdatum, PLword *word);
1241
1241
  extern bool plpgsql_parse_dblword(char *word1, char *word2,
@@ -1246,9 +1246,9 @@ extern PLpgSQL_type *plpgsql_parse_wordtype(char *ident);
1246
1246
  extern PLpgSQL_type *plpgsql_parse_cwordtype(List *idents);
1247
1247
  extern PLpgSQL_type *plpgsql_parse_wordrowtype(char *ident);
1248
1248
  extern PLpgSQL_type *plpgsql_parse_cwordrowtype(List *idents);
1249
- extern PLpgSQL_type *plpgsql_build_datatype(Oid typeOid, int32 typmod,
1250
- Oid collation,
1251
- TypeName *origtypname);
1249
+ extern PGDLLEXPORT PLpgSQL_type *plpgsql_build_datatype(Oid typeOid, int32 typmod,
1250
+ Oid collation,
1251
+ TypeName *origtypname);
1252
1252
  extern PLpgSQL_variable *plpgsql_build_variable(const char *refname, int lineno,
1253
1253
  PLpgSQL_type *dtype,
1254
1254
  bool add2namespace);
@@ -1257,8 +1257,8 @@ extern PLpgSQL_rec *plpgsql_build_record(const char *refname, int lineno,
1257
1257
  bool add2namespace);
1258
1258
  extern PLpgSQL_recfield *plpgsql_build_recfield(PLpgSQL_rec *rec,
1259
1259
  const char *fldname);
1260
- extern int plpgsql_recognize_err_condition(const char *condname,
1261
- bool allow_sqlstate);
1260
+ extern PGDLLEXPORT int plpgsql_recognize_err_condition(const char *condname,
1261
+ bool allow_sqlstate);
1262
1262
  extern PLpgSQL_condition *plpgsql_parse_err_condition(char *condname);
1263
1263
  extern void plpgsql_start_datums(void);
1264
1264
  extern void plpgsql_finish_datums(PLpgSQL_function *function);
@@ -1266,11 +1266,6 @@ extern void plpgsql_adddatum(PLpgSQL_datum *newdatum);
1266
1266
  extern int plpgsql_add_initdatums(int **varnos);
1267
1267
  extern void plpgsql_HashTableInit(void);
1268
1268
 
1269
- /*
1270
- * Functions in pl_handler.c
1271
- */
1272
- extern void _PG_init(void);
1273
-
1274
1269
  /*
1275
1270
  * Functions in pl_exec.c
1276
1271
  */
@@ -1287,8 +1282,8 @@ extern void plpgsql_exec_event_trigger(PLpgSQL_function *func,
1287
1282
  extern void plpgsql_xact_cb(XactEvent event, void *arg);
1288
1283
  extern void plpgsql_subxact_cb(SubXactEvent event, SubTransactionId mySubid,
1289
1284
  SubTransactionId parentSubid, void *arg);
1290
- extern Oid plpgsql_exec_get_datum_type(PLpgSQL_execstate *estate,
1291
- PLpgSQL_datum *datum);
1285
+ extern PGDLLEXPORT Oid plpgsql_exec_get_datum_type(PLpgSQL_execstate *estate,
1286
+ PLpgSQL_datum *datum);
1292
1287
  extern void plpgsql_exec_get_datum_type_info(PLpgSQL_execstate *estate,
1293
1288
  PLpgSQL_datum *datum,
1294
1289
  Oid *typeId, int32 *typMod,
@@ -1303,9 +1298,9 @@ extern void plpgsql_ns_push(const char *label,
1303
1298
  extern void plpgsql_ns_pop(void);
1304
1299
  extern PLpgSQL_nsitem *plpgsql_ns_top(void);
1305
1300
  extern void plpgsql_ns_additem(PLpgSQL_nsitem_type itemtype, int itemno, const char *name);
1306
- extern PLpgSQL_nsitem *plpgsql_ns_lookup(PLpgSQL_nsitem *ns_cur, bool localmode,
1307
- const char *name1, const char *name2,
1308
- const char *name3, int *names_used);
1301
+ extern PGDLLEXPORT PLpgSQL_nsitem *plpgsql_ns_lookup(PLpgSQL_nsitem *ns_cur, bool localmode,
1302
+ const char *name1, const char *name2,
1303
+ const char *name3, int *names_used);
1309
1304
  extern PLpgSQL_nsitem *plpgsql_ns_lookup_label(PLpgSQL_nsitem *ns_cur,
1310
1305
  const char *name);
1311
1306
  extern PLpgSQL_nsitem *plpgsql_ns_find_nearest_loop(PLpgSQL_nsitem *ns_cur);
@@ -1313,7 +1308,7 @@ extern PLpgSQL_nsitem *plpgsql_ns_find_nearest_loop(PLpgSQL_nsitem *ns_cur);
1313
1308
  /*
1314
1309
  * Other functions in pl_funcs.c
1315
1310
  */
1316
- extern const char *plpgsql_stmt_typename(PLpgSQL_stmt *stmt);
1311
+ extern PGDLLEXPORT const char *plpgsql_stmt_typename(PLpgSQL_stmt *stmt);
1317
1312
  extern const char *plpgsql_getdiag_kindname(PLpgSQL_getdiag_kind kind);
1318
1313
  extern void plpgsql_free_function_memory(PLpgSQL_function *func);
1319
1314
  extern void plpgsql_dumptree(PLpgSQL_function *func);
@@ -3,7 +3,7 @@
3
3
  * arch-arm.h
4
4
  * Atomic operations considerations specific to ARM
5
5
  *
6
- * Portions Copyright (c) 2013-2022, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 2013-2023, PostgreSQL Global Development Group
7
7
  *
8
8
  * NOTES:
9
9
  *
@@ -21,7 +21,7 @@
21
21
  * 64 bit atomics on ARM32 are implemented using kernel fallbacks and thus
22
22
  * might be slow, so disable entirely. On ARM64 that problem doesn't exist.
23
23
  */
24
- #if !defined(__aarch64__) && !defined(__aarch64)
24
+ #if !defined(__aarch64__)
25
25
  #define PG_DISABLE_64_BIT_ATOMICS
26
26
  #else
27
27
  /*
@@ -29,4 +29,4 @@
29
29
  * general purpose register is atomic.
30
30
  */
31
31
  #define PG_HAVE_8BYTE_SINGLE_COPY_ATOMICITY
32
- #endif /* __aarch64__ || __aarch64 */
32
+ #endif /* __aarch64__ */
@@ -3,7 +3,7 @@
3
3
  * arch-ppc.h
4
4
  * Atomic operations considerations specific to PowerPC
5
5
  *
6
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * NOTES:
@@ -90,12 +90,12 @@ pg_atomic_compare_exchange_u32_impl(volatile pg_atomic_uint32 *ptr,
90
90
  (int32) *expected >= PG_INT16_MIN)
91
91
  __asm__ __volatile__(
92
92
  " sync \n"
93
- " lwarx %0,0,%5 \n"
93
+ " lwarx %0,0,%5,1 \n"
94
94
  " cmpwi %0,%3 \n"
95
- " bne $+12 \n" /* branch to isync */
95
+ " bne $+12 \n" /* branch to lwsync */
96
96
  " stwcx. %4,0,%5 \n"
97
97
  " bne $-16 \n" /* branch to lwarx */
98
- " isync \n"
98
+ " lwsync \n"
99
99
  " mfcr %1 \n"
100
100
  : "=&r"(found), "=r"(condition_register), "+m"(ptr->value)
101
101
  : "i"(*expected), "r"(newval), "r"(&ptr->value)
@@ -104,12 +104,12 @@ pg_atomic_compare_exchange_u32_impl(volatile pg_atomic_uint32 *ptr,
104
104
  #endif
105
105
  __asm__ __volatile__(
106
106
  " sync \n"
107
- " lwarx %0,0,%5 \n"
107
+ " lwarx %0,0,%5,1 \n"
108
108
  " cmpw %0,%3 \n"
109
- " bne $+12 \n" /* branch to isync */
109
+ " bne $+12 \n" /* branch to lwsync */
110
110
  " stwcx. %4,0,%5 \n"
111
111
  " bne $-16 \n" /* branch to lwarx */
112
- " isync \n"
112
+ " lwsync \n"
113
113
  " mfcr %1 \n"
114
114
  : "=&r"(found), "=r"(condition_register), "+m"(ptr->value)
115
115
  : "r"(*expected), "r"(newval), "r"(&ptr->value)
@@ -138,11 +138,11 @@ pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_)
138
138
  add_ <= PG_INT16_MAX && add_ >= PG_INT16_MIN)
139
139
  __asm__ __volatile__(
140
140
  " sync \n"
141
- " lwarx %1,0,%4 \n"
141
+ " lwarx %1,0,%4,1 \n"
142
142
  " addi %0,%1,%3 \n"
143
143
  " stwcx. %0,0,%4 \n"
144
144
  " bne $-12 \n" /* branch to lwarx */
145
- " isync \n"
145
+ " lwsync \n"
146
146
  : "=&r"(_t), "=&b"(res), "+m"(ptr->value)
147
147
  : "i"(add_), "r"(&ptr->value)
148
148
  : "memory", "cc");
@@ -150,11 +150,11 @@ pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_)
150
150
  #endif
151
151
  __asm__ __volatile__(
152
152
  " sync \n"
153
- " lwarx %1,0,%4 \n"
153
+ " lwarx %1,0,%4,1 \n"
154
154
  " add %0,%1,%3 \n"
155
155
  " stwcx. %0,0,%4 \n"
156
156
  " bne $-12 \n" /* branch to lwarx */
157
- " isync \n"
157
+ " lwsync \n"
158
158
  : "=&r"(_t), "=&r"(res), "+m"(ptr->value)
159
159
  : "r"(add_), "r"(&ptr->value)
160
160
  : "memory", "cc");
@@ -180,12 +180,12 @@ pg_atomic_compare_exchange_u64_impl(volatile pg_atomic_uint64 *ptr,
180
180
  (int64) *expected >= PG_INT16_MIN)
181
181
  __asm__ __volatile__(
182
182
  " sync \n"
183
- " ldarx %0,0,%5 \n"
183
+ " ldarx %0,0,%5,1 \n"
184
184
  " cmpdi %0,%3 \n"
185
- " bne $+12 \n" /* branch to isync */
185
+ " bne $+12 \n" /* branch to lwsync */
186
186
  " stdcx. %4,0,%5 \n"
187
187
  " bne $-16 \n" /* branch to ldarx */
188
- " isync \n"
188
+ " lwsync \n"
189
189
  " mfcr %1 \n"
190
190
  : "=&r"(found), "=r"(condition_register), "+m"(ptr->value)
191
191
  : "i"(*expected), "r"(newval), "r"(&ptr->value)
@@ -194,12 +194,12 @@ pg_atomic_compare_exchange_u64_impl(volatile pg_atomic_uint64 *ptr,
194
194
  #endif
195
195
  __asm__ __volatile__(
196
196
  " sync \n"
197
- " ldarx %0,0,%5 \n"
197
+ " ldarx %0,0,%5,1 \n"
198
198
  " cmpd %0,%3 \n"
199
- " bne $+12 \n" /* branch to isync */
199
+ " bne $+12 \n" /* branch to lwsync */
200
200
  " stdcx. %4,0,%5 \n"
201
201
  " bne $-16 \n" /* branch to ldarx */
202
- " isync \n"
202
+ " lwsync \n"
203
203
  " mfcr %1 \n"
204
204
  : "=&r"(found), "=r"(condition_register), "+m"(ptr->value)
205
205
  : "r"(*expected), "r"(newval), "r"(&ptr->value)
@@ -224,11 +224,11 @@ pg_atomic_fetch_add_u64_impl(volatile pg_atomic_uint64 *ptr, int64 add_)
224
224
  add_ <= PG_INT16_MAX && add_ >= PG_INT16_MIN)
225
225
  __asm__ __volatile__(
226
226
  " sync \n"
227
- " ldarx %1,0,%4 \n"
227
+ " ldarx %1,0,%4,1 \n"
228
228
  " addi %0,%1,%3 \n"
229
229
  " stdcx. %0,0,%4 \n"
230
230
  " bne $-12 \n" /* branch to ldarx */
231
- " isync \n"
231
+ " lwsync \n"
232
232
  : "=&r"(_t), "=&b"(res), "+m"(ptr->value)
233
233
  : "i"(add_), "r"(&ptr->value)
234
234
  : "memory", "cc");
@@ -236,11 +236,11 @@ pg_atomic_fetch_add_u64_impl(volatile pg_atomic_uint64 *ptr, int64 add_)
236
236
  #endif
237
237
  __asm__ __volatile__(
238
238
  " sync \n"
239
- " ldarx %1,0,%4 \n"
239
+ " ldarx %1,0,%4,1 \n"
240
240
  " add %0,%1,%3 \n"
241
241
  " stdcx. %0,0,%4 \n"
242
242
  " bne $-12 \n" /* branch to ldarx */
243
- " isync \n"
243
+ " lwsync \n"
244
244
  : "=&r"(_t), "=&r"(res), "+m"(ptr->value)
245
245
  : "r"(add_), "r"(&ptr->value)
246
246
  : "memory", "cc");
@@ -7,7 +7,7 @@
7
7
  * support for xadd and cmpxchg. Given that the 386 isn't supported anywhere
8
8
  * anymore that's not much of a restriction luckily.
9
9
  *
10
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
10
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
11
11
  * Portions Copyright (c) 1994, Regents of the University of California
12
12
  *
13
13
  * NOTES:
@@ -140,7 +140,7 @@ pg_spin_delay_impl(void)
140
140
  static inline bool
141
141
  pg_atomic_test_set_flag_impl(volatile pg_atomic_flag *ptr)
142
142
  {
143
- register char _res = 1;
143
+ char _res = 1;
144
144
 
145
145
  __asm__ __volatile__(
146
146
  " lock \n"
@@ -4,7 +4,7 @@
4
4
  * Fallback for platforms without spinlock and/or atomics support. Slower
5
5
  * than native atomics support, but not unusably slow.
6
6
  *
7
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/port/atomics/fallback.h
@@ -93,7 +93,7 @@ typedef struct pg_atomic_flag
93
93
  typedef struct pg_atomic_uint32
94
94
  {
95
95
  /* Check pg_atomic_flag's definition above for an explanation */
96
- #if defined(__hppa) || defined(__hppa__) /* HP PA-RISC, GCC and HP compilers */
96
+ #if defined(__hppa) || defined(__hppa__) /* HP PA-RISC */
97
97
  int sema[4];
98
98
  #else
99
99
  int sema;
@@ -111,7 +111,7 @@ typedef struct pg_atomic_uint32
111
111
  typedef struct pg_atomic_uint64
112
112
  {
113
113
  /* Check pg_atomic_flag's definition above for an explanation */
114
- #if defined(__hppa) || defined(__hppa__) /* HP PA-RISC, GCC and HP compilers */
114
+ #if defined(__hppa) || defined(__hppa__) /* HP PA-RISC */
115
115
  int sema[4];
116
116
  #else
117
117
  int sema;
@@ -3,7 +3,7 @@
3
3
  * generic-gcc.h
4
4
  * Atomic operations, implemented using gcc (or compatible) intrinsics.
5
5
  *
6
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * NOTES:
@@ -4,7 +4,7 @@
4
4
  * Implement higher level operations based on some lower level atomic
5
5
  * operations.
6
6
  *
7
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/port/atomics/generic.h
@@ -28,7 +28,7 @@
28
28
  * For an introduction to using memory barriers within the PostgreSQL backend,
29
29
  * see src/backend/storage/lmgr/README.barrier
30
30
  *
31
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
31
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
32
32
  * Portions Copyright (c) 1994, Regents of the University of California
33
33
  *
34
34
  * src/include/port/atomics.h
@@ -63,13 +63,10 @@
63
63
  * compiler barrier.
64
64
  *
65
65
  */
66
- #if defined(__arm__) || defined(__arm) || \
67
- defined(__aarch64__) || defined(__aarch64)
66
+ #if defined(__arm__) || defined(__arm) || defined(__aarch64__)
68
67
  #include "port/atomics/arch-arm.h"
69
68
  #elif defined(__i386__) || defined(__i386) || defined(__x86_64__)
70
69
  #include "port/atomics/arch-x86.h"
71
- #elif defined(__ia64__) || defined(__ia64)
72
- #include "port/atomics/arch-ia64.h"
73
70
  #elif defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
74
71
  #include "port/atomics/arch-ppc.h"
75
72
  #elif defined(__hppa) || defined(__hppa__)
@@ -95,8 +92,6 @@
95
92
  #include "port/atomics/generic-gcc.h"
96
93
  #elif defined(_MSC_VER)
97
94
  #include "port/atomics/generic-msvc.h"
98
- #elif defined(__hpux) && defined(__ia64) && !defined(__GNUC__)
99
- #include "port/atomics/generic-acc.h"
100
95
  #elif defined(__SUNPRO_C) && !defined(__GNUC__)
101
96
  #include "port/atomics/generic-sunpro.h"
102
97
  #else
@@ -4,7 +4,7 @@
4
4
  * Miscellaneous functions for bit-wise operations.
5
5
  *
6
6
  *
7
- * Copyright (c) 2019-2022, PostgreSQL Global Development Group
7
+ * Copyright (c) 2019-2023, PostgreSQL Global Development Group
8
8
  *
9
9
  * src/include/port/pg_bitutils.h
10
10
  *
@@ -13,6 +13,21 @@
13
13
  #ifndef PG_BITUTILS_H
14
14
  #define PG_BITUTILS_H
15
15
 
16
+ #ifdef _MSC_VER
17
+ #include <intrin.h>
18
+ #define HAVE_BITSCAN_FORWARD
19
+ #define HAVE_BITSCAN_REVERSE
20
+
21
+ #else
22
+ #if defined(HAVE__BUILTIN_CTZ)
23
+ #define HAVE_BITSCAN_FORWARD
24
+ #endif
25
+
26
+ #if defined(HAVE__BUILTIN_CLZ)
27
+ #define HAVE_BITSCAN_REVERSE
28
+ #endif
29
+ #endif /* _MSC_VER */
30
+
16
31
  extern PGDLLIMPORT const uint8 pg_leftmost_one_pos[256];
17
32
  extern PGDLLIMPORT const uint8 pg_rightmost_one_pos[256];
18
33
  extern PGDLLIMPORT const uint8 pg_number_of_ones[256];
@@ -29,6 +44,13 @@ pg_leftmost_one_pos32(uint32 word)
29
44
  Assert(word != 0);
30
45
 
31
46
  return 31 - __builtin_clz(word);
47
+ #elif defined(_MSC_VER)
48
+ unsigned long result;
49
+ bool non_zero;
50
+
51
+ non_zero = _BitScanReverse(&result, word);
52
+ Assert(non_zero);
53
+ return (int) result;
32
54
  #else
33
55
  int shift = 32 - 8;
34
56
 
@@ -57,8 +79,16 @@ pg_leftmost_one_pos64(uint64 word)
57
79
  return 63 - __builtin_clzll(word);
58
80
  #else
59
81
  #error must have a working 64-bit integer datatype
60
- #endif
61
- #else /* !HAVE__BUILTIN_CLZ */
82
+ #endif /* HAVE_LONG_INT_64 */
83
+
84
+ #elif defined(_MSC_VER) && (defined(_M_AMD64) || defined(_M_ARM64))
85
+ unsigned long result;
86
+ bool non_zero;
87
+
88
+ non_zero = _BitScanReverse64(&result, word);
89
+ Assert(non_zero);
90
+ return (int) result;
91
+ #else
62
92
  int shift = 64 - 8;
63
93
 
64
94
  Assert(word != 0);
@@ -82,6 +112,13 @@ pg_rightmost_one_pos32(uint32 word)
82
112
  Assert(word != 0);
83
113
 
84
114
  return __builtin_ctz(word);
115
+ #elif defined(_MSC_VER)
116
+ unsigned long result;
117
+ bool non_zero;
118
+
119
+ non_zero = _BitScanForward(&result, word);
120
+ Assert(non_zero);
121
+ return (int) result;
85
122
  #else
86
123
  int result = 0;
87
124
 
@@ -113,8 +150,16 @@ pg_rightmost_one_pos64(uint64 word)
113
150
  return __builtin_ctzll(word);
114
151
  #else
115
152
  #error must have a working 64-bit integer datatype
116
- #endif
117
- #else /* !HAVE__BUILTIN_CTZ */
153
+ #endif /* HAVE_LONG_INT_64 */
154
+
155
+ #elif defined(_MSC_VER) && (defined(_M_AMD64) || defined(_M_ARM64))
156
+ unsigned long result;
157
+ bool non_zero;
158
+
159
+ non_zero = _BitScanForward64(&result, word);
160
+ Assert(non_zero);
161
+ return (int) result;
162
+ #else
118
163
  int result = 0;
119
164
 
120
165
  Assert(word != 0);
@@ -175,16 +220,6 @@ pg_nextpower2_64(uint64 num)
175
220
  return ((uint64) 1) << (pg_leftmost_one_pos64(num) + 1);
176
221
  }
177
222
 
178
- /*
179
- * pg_nextpower2_size_t
180
- * Returns the next higher power of 2 above 'num', for a size_t input.
181
- */
182
- #if SIZEOF_SIZE_T == 4
183
- #define pg_nextpower2_size_t(num) pg_nextpower2_32(num)
184
- #else
185
- #define pg_nextpower2_size_t(num) pg_nextpower2_64(num)
186
- #endif
187
-
188
223
  /*
189
224
  * pg_prevpower2_32
190
225
  * Returns the next lower power of 2 below 'num', or 'num' if it's
@@ -211,16 +246,6 @@ pg_prevpower2_64(uint64 num)
211
246
  return ((uint64) 1) << pg_leftmost_one_pos64(num);
212
247
  }
213
248
 
214
- /*
215
- * pg_prevpower2_size_t
216
- * Returns the next lower power of 2 below 'num', for a size_t input.
217
- */
218
- #if SIZEOF_SIZE_T == 4
219
- #define pg_prevpower2_size_t(num) pg_prevpower2_32(num)
220
- #else
221
- #define pg_prevpower2_size_t(num) pg_prevpower2_64(num)
222
- #endif
223
-
224
249
  /*
225
250
  * pg_ceil_log2_32
226
251
  * Returns equivalent of ceil(log2(num))
@@ -299,4 +324,16 @@ pg_rotate_left32(uint32 word, int n)
299
324
  return (word << n) | (word >> (32 - n));
300
325
  }
301
326
 
327
+ /* size_t variants of the above, as required */
328
+
329
+ #if SIZEOF_SIZE_T == 4
330
+ #define pg_leftmost_one_pos_size_t pg_leftmost_one_pos32
331
+ #define pg_nextpower2_size_t pg_nextpower2_32
332
+ #define pg_prevpower2_size_t pg_prevpower2_32
333
+ #else
334
+ #define pg_leftmost_one_pos_size_t pg_leftmost_one_pos64
335
+ #define pg_nextpower2_size_t pg_nextpower2_64
336
+ #define pg_prevpower2_size_t pg_prevpower2_64
337
+ #endif
338
+
302
339
  #endif /* PG_BITUTILS_H */
@@ -11,7 +11,7 @@
11
11
  * return the same. Use caution when using these wrapper macros with signed
12
12
  * integers.
13
13
  *
14
- * Copyright (c) 2015-2022, PostgreSQL Global Development Group
14
+ * Copyright (c) 2015-2023, PostgreSQL Global Development Group
15
15
  *
16
16
  * src/include/port/pg_bswap.h
17
17
  *
@@ -23,7 +23,7 @@
23
23
  * EQ_CRC32C(c1, c2)
24
24
  * Check for equality of two CRCs.
25
25
  *
26
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
26
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
27
27
  * Portions Copyright (c) 1994, Regents of the University of California
28
28
  *
29
29
  * src/include/port/pg_crc32c.h