pg_query 2.1.0 → 4.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (472) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +104 -0
  3. data/README.md +59 -31
  4. data/Rakefile +2 -2
  5. data/ext/pg_query/extconf.rb +8 -2
  6. data/ext/pg_query/include/access/amapi.h +45 -1
  7. data/ext/pg_query/include/access/attmap.h +1 -1
  8. data/ext/pg_query/include/access/attnum.h +2 -2
  9. data/ext/pg_query/include/access/clog.h +4 -2
  10. data/ext/pg_query/include/access/commit_ts.h +6 -9
  11. data/ext/pg_query/include/access/detoast.h +1 -11
  12. data/ext/pg_query/include/access/genam.h +15 -12
  13. data/ext/pg_query/include/access/gin.h +2 -2
  14. data/ext/pg_query/include/access/htup.h +1 -1
  15. data/ext/pg_query/include/access/htup_details.h +75 -87
  16. data/ext/pg_query/include/access/itup.h +7 -1
  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 +17 -2
  21. data/ext/pg_query/include/access/rmgr.h +30 -3
  22. data/ext/pg_query/include/access/rmgrlist.h +23 -23
  23. data/ext/pg_query/include/access/sdir.h +1 -1
  24. data/ext/pg_query/include/access/skey.h +1 -1
  25. data/ext/pg_query/include/access/stratnum.h +4 -2
  26. data/ext/pg_query/include/access/sysattr.h +1 -1
  27. data/ext/pg_query/include/access/table.h +2 -1
  28. data/ext/pg_query/include/access/tableam.h +272 -20
  29. data/ext/pg_query/include/access/toast_compression.h +73 -0
  30. data/ext/pg_query/include/access/transam.h +123 -13
  31. data/ext/pg_query/include/access/tupconvert.h +1 -1
  32. data/ext/pg_query/include/access/tupdesc.h +1 -1
  33. data/ext/pg_query/include/access/tupmacs.h +3 -3
  34. data/ext/pg_query/include/access/twophase.h +5 -1
  35. data/ext/pg_query/include/access/xact.h +79 -19
  36. data/ext/pg_query/include/access/xlog.h +60 -155
  37. data/ext/pg_query/include/access/xlog_internal.h +50 -14
  38. data/ext/pg_query/include/access/xlogdefs.h +8 -16
  39. data/ext/pg_query/include/access/xlogprefetcher.h +55 -0
  40. data/ext/pg_query/include/access/xlogreader.h +148 -32
  41. data/ext/pg_query/include/access/xlogrecord.h +18 -9
  42. data/ext/pg_query/include/access/xlogrecovery.h +157 -0
  43. data/ext/pg_query/include/c.h +101 -44
  44. data/ext/pg_query/include/catalog/catalog.h +3 -1
  45. data/ext/pg_query/include/catalog/catversion.h +2 -2
  46. data/ext/pg_query/include/catalog/dependency.h +10 -16
  47. data/ext/pg_query/include/catalog/genbki.h +83 -5
  48. data/ext/pg_query/include/catalog/index.h +18 -3
  49. data/ext/pg_query/include/catalog/indexing.h +12 -324
  50. data/ext/pg_query/include/catalog/namespace.h +4 -2
  51. data/ext/pg_query/include/catalog/objectaccess.h +70 -2
  52. data/ext/pg_query/include/catalog/objectaddress.h +11 -6
  53. data/ext/pg_query/include/catalog/pg_aggregate.h +14 -10
  54. data/ext/pg_query/include/catalog/pg_aggregate_d.h +2 -1
  55. data/ext/pg_query/include/catalog/pg_am.h +4 -1
  56. data/ext/pg_query/include/catalog/pg_am_d.h +3 -1
  57. data/ext/pg_query/include/catalog/pg_attribute.h +27 -10
  58. data/ext/pg_query/include/catalog/pg_attribute_d.h +21 -18
  59. data/ext/pg_query/include/catalog/pg_authid.h +7 -2
  60. data/ext/pg_query/include/catalog/pg_authid_d.h +17 -9
  61. data/ext/pg_query/include/catalog/pg_class.h +45 -15
  62. data/ext/pg_query/include/catalog/pg_class_d.h +31 -2
  63. data/ext/pg_query/include/catalog/pg_collation.h +33 -8
  64. data/ext/pg_query/include/catalog/pg_collation_d.h +20 -3
  65. data/ext/pg_query/include/catalog/pg_constraint.h +38 -12
  66. data/ext/pg_query/include/catalog/pg_constraint_d.h +10 -4
  67. data/ext/pg_query/include/catalog/pg_control.h +5 -5
  68. data/ext/pg_query/include/catalog/pg_conversion.h +7 -4
  69. data/ext/pg_query/include/catalog/pg_conversion_d.h +4 -1
  70. data/ext/pg_query/include/catalog/pg_depend.h +11 -7
  71. data/ext/pg_query/include/catalog/pg_depend_d.h +3 -1
  72. data/ext/pg_query/include/catalog/pg_event_trigger.h +9 -3
  73. data/ext/pg_query/include/catalog/pg_event_trigger_d.h +3 -1
  74. data/ext/pg_query/include/catalog/pg_index.h +17 -7
  75. data/ext/pg_query/include/catalog/pg_index_d.h +20 -17
  76. data/ext/pg_query/include/catalog/pg_language.h +10 -5
  77. data/ext/pg_query/include/catalog/pg_language_d.h +3 -1
  78. data/ext/pg_query/include/catalog/pg_namespace.h +7 -2
  79. data/ext/pg_query/include/catalog/pg_namespace_d.h +3 -1
  80. data/ext/pg_query/include/catalog/pg_opclass.h +8 -5
  81. data/ext/pg_query/include/catalog/pg_opclass_d.h +3 -1
  82. data/ext/pg_query/include/catalog/pg_operator.h +21 -16
  83. data/ext/pg_query/include/catalog/pg_operator_d.h +37 -1
  84. data/ext/pg_query/include/catalog/pg_opfamily.h +6 -3
  85. data/ext/pg_query/include/catalog/pg_opfamily_d.h +3 -1
  86. data/ext/pg_query/include/catalog/pg_parameter_acl.h +60 -0
  87. data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +34 -0
  88. data/ext/pg_query/include/catalog/pg_partitioned_table.h +20 -9
  89. data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +2 -1
  90. data/ext/pg_query/include/catalog/pg_proc.h +20 -11
  91. data/ext/pg_query/include/catalog/pg_proc_d.h +10 -8
  92. data/ext/pg_query/include/catalog/pg_publication.h +50 -4
  93. data/ext/pg_query/include/catalog/pg_publication_d.h +3 -1
  94. data/ext/pg_query/include/catalog/pg_replication_origin.h +6 -1
  95. data/ext/pg_query/include/catalog/pg_replication_origin_d.h +5 -1
  96. data/ext/pg_query/include/catalog/pg_statistic.h +19 -12
  97. data/ext/pg_query/include/catalog/pg_statistic_d.h +2 -1
  98. data/ext/pg_query/include/catalog/pg_statistic_ext.h +19 -5
  99. data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +7 -2
  100. data/ext/pg_query/include/catalog/pg_transform.h +8 -5
  101. data/ext/pg_query/include/catalog/pg_transform_d.h +3 -1
  102. data/ext/pg_query/include/catalog/pg_trigger.h +24 -8
  103. data/ext/pg_query/include/catalog/pg_trigger_d.h +4 -1
  104. data/ext/pg_query/include/catalog/pg_ts_config.h +6 -3
  105. data/ext/pg_query/include/catalog/pg_ts_config_d.h +3 -1
  106. data/ext/pg_query/include/catalog/pg_ts_dict.h +8 -3
  107. data/ext/pg_query/include/catalog/pg_ts_dict_d.h +3 -1
  108. data/ext/pg_query/include/catalog/pg_ts_parser.h +6 -3
  109. data/ext/pg_query/include/catalog/pg_ts_parser_d.h +3 -1
  110. data/ext/pg_query/include/catalog/pg_ts_template.h +6 -3
  111. data/ext/pg_query/include/catalog/pg_ts_template_d.h +3 -1
  112. data/ext/pg_query/include/catalog/pg_type.h +56 -24
  113. data/ext/pg_query/include/catalog/pg_type_d.h +70 -31
  114. data/ext/pg_query/include/catalog/storage.h +5 -3
  115. data/ext/pg_query/include/commands/async.h +4 -5
  116. data/ext/pg_query/include/commands/dbcommands.h +2 -1
  117. data/ext/pg_query/include/commands/defrem.h +11 -24
  118. data/ext/pg_query/include/commands/event_trigger.h +2 -2
  119. data/ext/pg_query/include/commands/explain.h +1 -1
  120. data/ext/pg_query/include/commands/prepare.h +1 -1
  121. data/ext/pg_query/include/commands/tablespace.h +3 -1
  122. data/ext/pg_query/include/commands/trigger.h +27 -17
  123. data/ext/pg_query/include/commands/user.h +2 -2
  124. data/ext/pg_query/include/commands/vacuum.h +88 -41
  125. data/ext/pg_query/include/commands/variable.h +1 -1
  126. data/ext/pg_query/include/common/file_perm.h +4 -4
  127. data/ext/pg_query/include/common/hashfn.h +1 -1
  128. data/ext/pg_query/include/common/ip.h +1 -7
  129. data/ext/pg_query/include/common/keywords.h +2 -6
  130. data/ext/pg_query/include/common/kwlookup.h +1 -1
  131. data/ext/pg_query/include/common/pg_prng.h +60 -0
  132. data/ext/pg_query/include/common/relpath.h +2 -2
  133. data/ext/pg_query/include/common/string.h +24 -1
  134. data/ext/pg_query/include/common/unicode_combining_table.h +114 -2
  135. data/ext/pg_query/include/common/unicode_east_asian_fw_table.h +125 -0
  136. data/ext/pg_query/include/datatype/timestamp.h +40 -1
  137. data/ext/pg_query/include/executor/execdesc.h +1 -1
  138. data/ext/pg_query/include/executor/executor.h +65 -22
  139. data/ext/pg_query/include/executor/functions.h +17 -3
  140. data/ext/pg_query/include/executor/instrument.h +33 -16
  141. data/ext/pg_query/include/executor/spi.h +41 -3
  142. data/ext/pg_query/include/executor/tablefunc.h +1 -1
  143. data/ext/pg_query/include/executor/tuptable.h +1 -1
  144. data/ext/pg_query/include/fmgr.h +13 -7
  145. data/ext/pg_query/include/funcapi.h +16 -4
  146. data/ext/pg_query/include/getaddrinfo.h +1 -1
  147. data/ext/pg_query/include/jit/jit.h +11 -11
  148. data/ext/pg_query/include/kwlist_d.h +517 -494
  149. data/ext/pg_query/include/lib/dshash.h +112 -0
  150. data/ext/pg_query/include/lib/ilist.h +20 -1
  151. data/ext/pg_query/include/lib/pairingheap.h +1 -1
  152. data/ext/pg_query/include/lib/simplehash.h +150 -25
  153. data/ext/pg_query/include/lib/sort_template.h +432 -0
  154. data/ext/pg_query/include/lib/stringinfo.h +1 -1
  155. data/ext/pg_query/include/libpq/auth.h +6 -4
  156. data/ext/pg_query/include/libpq/crypt.h +5 -4
  157. data/ext/pg_query/include/libpq/hba.h +43 -4
  158. data/ext/pg_query/include/libpq/libpq-be.h +23 -6
  159. data/ext/pg_query/include/libpq/libpq.h +31 -20
  160. data/ext/pg_query/include/libpq/pqcomm.h +17 -31
  161. data/ext/pg_query/include/libpq/pqformat.h +1 -1
  162. data/ext/pg_query/include/libpq/pqsignal.h +4 -4
  163. data/ext/pg_query/include/mb/pg_wchar.h +106 -23
  164. data/ext/pg_query/include/mb/stringinfo_mb.h +1 -1
  165. data/ext/pg_query/include/miscadmin.h +71 -52
  166. data/ext/pg_query/include/nodes/bitmapset.h +1 -1
  167. data/ext/pg_query/include/nodes/execnodes.h +272 -80
  168. data/ext/pg_query/include/nodes/extensible.h +4 -2
  169. data/ext/pg_query/include/nodes/lockoptions.h +1 -1
  170. data/ext/pg_query/include/nodes/makefuncs.h +7 -6
  171. data/ext/pg_query/include/nodes/memnodes.h +5 -3
  172. data/ext/pg_query/include/nodes/nodeFuncs.h +1 -1
  173. data/ext/pg_query/include/nodes/nodes.h +30 -11
  174. data/ext/pg_query/include/nodes/params.h +1 -1
  175. data/ext/pg_query/include/nodes/parsenodes.h +327 -94
  176. data/ext/pg_query/include/nodes/pathnodes.h +245 -67
  177. data/ext/pg_query/include/nodes/pg_list.h +75 -68
  178. data/ext/pg_query/include/nodes/plannodes.h +128 -30
  179. data/ext/pg_query/include/nodes/primnodes.h +99 -47
  180. data/ext/pg_query/include/nodes/print.h +1 -1
  181. data/ext/pg_query/include/nodes/tidbitmap.h +1 -1
  182. data/ext/pg_query/include/nodes/value.h +58 -39
  183. data/ext/pg_query/include/optimizer/cost.h +9 -2
  184. data/ext/pg_query/include/optimizer/geqo.h +9 -7
  185. data/ext/pg_query/include/optimizer/geqo_gene.h +1 -1
  186. data/ext/pg_query/include/optimizer/optimizer.h +25 -22
  187. data/ext/pg_query/include/optimizer/paths.h +6 -6
  188. data/ext/pg_query/include/optimizer/planmain.h +15 -14
  189. data/ext/pg_query/include/parser/analyze.h +19 -5
  190. data/ext/pg_query/include/parser/gram.h +947 -913
  191. data/ext/pg_query/include/parser/gramparse.h +1 -1
  192. data/ext/pg_query/include/parser/kwlist.h +463 -453
  193. data/ext/pg_query/include/parser/parse_agg.h +2 -7
  194. data/ext/pg_query/include/parser/parse_coerce.h +4 -1
  195. data/ext/pg_query/include/parser/parse_expr.h +2 -3
  196. data/ext/pg_query/include/parser/parse_func.h +2 -1
  197. data/ext/pg_query/include/parser/parse_node.h +21 -9
  198. data/ext/pg_query/include/parser/parse_oper.h +1 -3
  199. data/ext/pg_query/include/parser/parse_relation.h +5 -4
  200. data/ext/pg_query/include/parser/parse_type.h +1 -1
  201. data/ext/pg_query/include/parser/parser.h +31 -4
  202. data/ext/pg_query/include/parser/parsetree.h +1 -1
  203. data/ext/pg_query/include/parser/scanner.h +1 -1
  204. data/ext/pg_query/include/parser/scansup.h +2 -5
  205. data/ext/pg_query/include/partitioning/partdefs.h +1 -1
  206. data/ext/pg_query/include/pg_config.h +94 -46
  207. data/ext/pg_query/include/pg_config_manual.h +74 -21
  208. data/ext/pg_query/include/pg_getopt.h +6 -6
  209. data/ext/pg_query/include/pg_query.h +5 -4
  210. data/ext/pg_query/include/pg_query_enum_defs.c +358 -241
  211. data/ext/pg_query/include/pg_query_fingerprint_conds.c +44 -7
  212. data/ext/pg_query/include/pg_query_fingerprint_defs.c +1220 -422
  213. data/ext/pg_query/include/pg_query_outfuncs_conds.c +43 -13
  214. data/ext/pg_query/include/pg_query_outfuncs_defs.c +152 -26
  215. data/ext/pg_query/include/pg_query_readfuncs_conds.c +11 -2
  216. data/ext/pg_query/include/pg_query_readfuncs_defs.c +174 -30
  217. data/ext/pg_query/include/pg_trace.h +1 -1
  218. data/ext/pg_query/include/pgstat.h +449 -1237
  219. data/ext/pg_query/include/pgtime.h +14 -4
  220. data/ext/pg_query/include/pl_gram.h +126 -128
  221. data/ext/pg_query/include/pl_reserved_kwlist.h +1 -1
  222. data/ext/pg_query/include/pl_reserved_kwlist_d.h +10 -10
  223. data/ext/pg_query/include/pl_unreserved_kwlist.h +2 -3
  224. data/ext/pg_query/include/pl_unreserved_kwlist_d.h +54 -56
  225. data/ext/pg_query/include/plerrcodes.h +9 -1
  226. data/ext/pg_query/include/plpgsql.h +52 -54
  227. data/ext/pg_query/include/port/atomics/arch-arm.h +7 -1
  228. data/ext/pg_query/include/port/atomics/arch-ppc.h +1 -1
  229. data/ext/pg_query/include/port/atomics/arch-x86.h +1 -1
  230. data/ext/pg_query/include/port/atomics/fallback.h +1 -1
  231. data/ext/pg_query/include/port/atomics/generic-gcc.h +3 -3
  232. data/ext/pg_query/include/port/atomics/generic.h +1 -1
  233. data/ext/pg_query/include/port/atomics.h +1 -1
  234. data/ext/pg_query/include/port/pg_bitutils.h +88 -12
  235. data/ext/pg_query/include/port/pg_bswap.h +1 -1
  236. data/ext/pg_query/include/port/pg_crc32c.h +1 -1
  237. data/ext/pg_query/include/port.h +72 -43
  238. data/ext/pg_query/include/portability/instr_time.h +1 -1
  239. data/ext/pg_query/include/postgres.h +60 -16
  240. data/ext/pg_query/include/postmaster/autovacuum.h +17 -17
  241. data/ext/pg_query/include/postmaster/auxprocess.h +20 -0
  242. data/ext/pg_query/include/postmaster/bgworker.h +2 -1
  243. data/ext/pg_query/include/postmaster/bgworker_internals.h +2 -2
  244. data/ext/pg_query/include/postmaster/bgwriter.h +5 -5
  245. data/ext/pg_query/include/postmaster/fork_process.h +1 -1
  246. data/ext/pg_query/include/postmaster/interrupt.h +1 -1
  247. data/ext/pg_query/include/postmaster/pgarch.h +42 -8
  248. data/ext/pg_query/include/postmaster/postmaster.h +18 -17
  249. data/ext/pg_query/include/postmaster/startup.h +39 -0
  250. data/ext/pg_query/include/postmaster/syslogger.h +15 -10
  251. data/ext/pg_query/include/postmaster/walwriter.h +3 -3
  252. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +1422 -916
  253. data/ext/pg_query/include/protobuf/pg_query.pb.h +43678 -32769
  254. data/ext/pg_query/include/regex/regex.h +18 -16
  255. data/ext/pg_query/include/replication/logicallauncher.h +3 -5
  256. data/ext/pg_query/include/replication/logicalproto.h +161 -17
  257. data/ext/pg_query/include/replication/logicalworker.h +1 -1
  258. data/ext/pg_query/include/replication/origin.h +7 -7
  259. data/ext/pg_query/include/replication/reorderbuffer.h +262 -44
  260. data/ext/pg_query/include/replication/slot.h +23 -12
  261. data/ext/pg_query/include/replication/syncrep.h +5 -5
  262. data/ext/pg_query/include/replication/walreceiver.h +145 -13
  263. data/ext/pg_query/include/replication/walsender.h +8 -8
  264. data/ext/pg_query/include/rewrite/prs2lock.h +1 -1
  265. data/ext/pg_query/include/rewrite/rewriteHandler.h +1 -3
  266. data/ext/pg_query/include/rewrite/rewriteManip.h +1 -1
  267. data/ext/pg_query/include/rewrite/rewriteSupport.h +1 -1
  268. data/ext/pg_query/include/storage/backendid.h +3 -3
  269. data/ext/pg_query/include/storage/block.h +4 -10
  270. data/ext/pg_query/include/storage/buf.h +1 -1
  271. data/ext/pg_query/include/storage/bufmgr.h +19 -14
  272. data/ext/pg_query/include/storage/bufpage.h +6 -8
  273. data/ext/pg_query/include/storage/condition_variable.h +13 -2
  274. data/ext/pg_query/include/storage/dsm.h +4 -1
  275. data/ext/pg_query/include/storage/dsm_impl.h +3 -2
  276. data/ext/pg_query/include/storage/fd.h +33 -3
  277. data/ext/pg_query/include/storage/fileset.h +40 -0
  278. data/ext/pg_query/include/storage/ipc.h +4 -1
  279. data/ext/pg_query/include/storage/item.h +1 -1
  280. data/ext/pg_query/include/storage/itemid.h +1 -1
  281. data/ext/pg_query/include/storage/itemptr.h +3 -1
  282. data/ext/pg_query/include/storage/large_object.h +2 -2
  283. data/ext/pg_query/include/storage/latch.h +9 -13
  284. data/ext/pg_query/include/storage/lmgr.h +2 -1
  285. data/ext/pg_query/include/storage/lock.h +17 -13
  286. data/ext/pg_query/include/storage/lockdefs.h +2 -2
  287. data/ext/pg_query/include/storage/lwlock.h +6 -32
  288. data/ext/pg_query/include/storage/lwlocknames.h +0 -1
  289. data/ext/pg_query/include/storage/off.h +1 -1
  290. data/ext/pg_query/include/storage/pg_sema.h +1 -1
  291. data/ext/pg_query/include/storage/pg_shmem.h +9 -7
  292. data/ext/pg_query/include/storage/pmsignal.h +15 -4
  293. data/ext/pg_query/include/storage/predicate.h +4 -4
  294. data/ext/pg_query/include/storage/proc.h +183 -55
  295. data/ext/pg_query/include/storage/procarray.h +98 -0
  296. data/ext/pg_query/include/storage/proclist_types.h +1 -1
  297. data/ext/pg_query/include/storage/procsignal.h +3 -7
  298. data/ext/pg_query/include/storage/relfilenode.h +1 -1
  299. data/ext/pg_query/include/storage/s_lock.h +67 -4
  300. data/ext/pg_query/include/storage/sharedfileset.h +3 -11
  301. data/ext/pg_query/include/storage/shm_mq.h +5 -4
  302. data/ext/pg_query/include/storage/shm_toc.h +1 -1
  303. data/ext/pg_query/include/storage/shmem.h +1 -1
  304. data/ext/pg_query/include/storage/sinval.h +3 -3
  305. data/ext/pg_query/include/storage/sinvaladt.h +1 -1
  306. data/ext/pg_query/include/storage/smgr.h +10 -8
  307. data/ext/pg_query/include/storage/spin.h +2 -2
  308. data/ext/pg_query/include/storage/standby.h +13 -6
  309. data/ext/pg_query/include/storage/standbydefs.h +2 -2
  310. data/ext/pg_query/include/storage/sync.h +7 -3
  311. data/ext/pg_query/include/tcop/cmdtag.h +1 -1
  312. data/ext/pg_query/include/tcop/cmdtaglist.h +3 -2
  313. data/ext/pg_query/include/tcop/deparse_utility.h +1 -1
  314. data/ext/pg_query/include/tcop/dest.h +1 -1
  315. data/ext/pg_query/include/tcop/fastpath.h +1 -2
  316. data/ext/pg_query/include/tcop/pquery.h +7 -1
  317. data/ext/pg_query/include/tcop/tcopprot.h +19 -11
  318. data/ext/pg_query/include/tcop/utility.h +7 -3
  319. data/ext/pg_query/include/tsearch/ts_cache.h +2 -2
  320. data/ext/pg_query/include/utils/acl.h +24 -3
  321. data/ext/pg_query/include/utils/aclchk_internal.h +1 -1
  322. data/ext/pg_query/include/utils/array.h +7 -2
  323. data/ext/pg_query/include/utils/backend_progress.h +44 -0
  324. data/ext/pg_query/include/utils/backend_status.h +321 -0
  325. data/ext/pg_query/include/utils/builtins.h +11 -11
  326. data/ext/pg_query/include/utils/bytea.h +3 -2
  327. data/ext/pg_query/include/utils/catcache.h +1 -1
  328. data/ext/pg_query/include/utils/date.h +1 -1
  329. data/ext/pg_query/include/utils/datetime.h +8 -7
  330. data/ext/pg_query/include/utils/datum.h +9 -1
  331. data/ext/pg_query/include/utils/dsa.h +1 -1
  332. data/ext/pg_query/include/utils/dynahash.h +4 -3
  333. data/ext/pg_query/include/utils/elog.h +52 -21
  334. data/ext/pg_query/include/utils/errcodes.h +2 -0
  335. data/ext/pg_query/include/utils/expandeddatum.h +1 -1
  336. data/ext/pg_query/include/utils/expandedrecord.h +1 -1
  337. data/ext/pg_query/include/utils/float.h +7 -7
  338. data/ext/pg_query/include/utils/fmgroids.h +1300 -696
  339. data/ext/pg_query/include/utils/fmgrprotos.h +199 -16
  340. data/ext/pg_query/include/utils/fmgrtab.h +6 -5
  341. data/ext/pg_query/include/utils/guc.h +69 -43
  342. data/ext/pg_query/include/utils/guc_tables.h +23 -19
  343. data/ext/pg_query/include/utils/hsearch.h +15 -11
  344. data/ext/pg_query/include/utils/inval.h +5 -1
  345. data/ext/pg_query/include/utils/lsyscache.h +11 -1
  346. data/ext/pg_query/include/utils/memdebug.h +1 -1
  347. data/ext/pg_query/include/utils/memutils.h +8 -3
  348. data/ext/pg_query/include/utils/numeric.h +19 -5
  349. data/ext/pg_query/include/utils/palloc.h +25 -3
  350. data/ext/pg_query/include/utils/partcache.h +1 -1
  351. data/ext/pg_query/include/utils/pg_locale.h +17 -9
  352. data/ext/pg_query/include/utils/pg_lsn.h +1 -1
  353. data/ext/pg_query/include/utils/pgstat_internal.h +784 -0
  354. data/ext/pg_query/include/utils/pidfile.h +1 -1
  355. data/ext/pg_query/include/utils/plancache.h +6 -5
  356. data/ext/pg_query/include/utils/portal.h +12 -1
  357. data/ext/pg_query/include/utils/ps_status.h +1 -1
  358. data/ext/pg_query/include/utils/queryenvironment.h +1 -1
  359. data/ext/pg_query/include/utils/queryjumble.h +88 -0
  360. data/ext/pg_query/include/utils/regproc.h +14 -3
  361. data/ext/pg_query/include/utils/rel.h +71 -20
  362. data/ext/pg_query/include/utils/relcache.h +9 -7
  363. data/ext/pg_query/include/utils/reltrigger.h +1 -1
  364. data/ext/pg_query/include/utils/resowner.h +1 -1
  365. data/ext/pg_query/include/utils/rls.h +2 -2
  366. data/ext/pg_query/include/utils/ruleutils.h +4 -1
  367. data/ext/pg_query/include/utils/sharedtuplestore.h +1 -1
  368. data/ext/pg_query/include/utils/snapmgr.h +35 -14
  369. data/ext/pg_query/include/utils/snapshot.h +14 -1
  370. data/ext/pg_query/include/utils/sortsupport.h +117 -2
  371. data/ext/pg_query/include/utils/syscache.h +6 -1
  372. data/ext/pg_query/include/utils/timeout.h +11 -4
  373. data/ext/pg_query/include/utils/timestamp.h +6 -5
  374. data/ext/pg_query/include/utils/tuplesort.h +25 -11
  375. data/ext/pg_query/include/utils/tuplestore.h +2 -2
  376. data/ext/pg_query/include/utils/typcache.h +24 -17
  377. data/ext/pg_query/include/utils/tzparser.h +1 -1
  378. data/ext/pg_query/include/utils/varlena.h +5 -3
  379. data/ext/pg_query/include/utils/wait_event.h +289 -0
  380. data/ext/pg_query/include/utils/xml.h +4 -4
  381. data/ext/pg_query/pg_query.pb-c.c +4318 -2307
  382. data/ext/pg_query/pg_query_deparse.c +1114 -381
  383. data/ext/pg_query/pg_query_fingerprint.c +46 -10
  384. data/ext/pg_query/pg_query_fingerprint.h +3 -1
  385. data/ext/pg_query/pg_query_json_plpgsql.c +55 -12
  386. data/ext/pg_query/pg_query_normalize.c +163 -20
  387. data/ext/pg_query/pg_query_outfuncs.h +1 -0
  388. data/ext/pg_query/pg_query_outfuncs_json.c +65 -16
  389. data/ext/pg_query/pg_query_outfuncs_protobuf.c +70 -10
  390. data/ext/pg_query/pg_query_parse.c +1 -1
  391. data/ext/pg_query/pg_query_parse_plpgsql.c +79 -16
  392. data/ext/pg_query/pg_query_readfuncs_protobuf.c +42 -8
  393. data/ext/pg_query/pg_query_ruby.c +1 -1
  394. data/ext/pg_query/pg_query_scan.c +2 -1
  395. data/ext/pg_query/pg_query_split.c +3 -2
  396. data/ext/pg_query/src_backend_catalog_namespace.c +21 -9
  397. data/ext/pg_query/src_backend_catalog_pg_proc.c +4 -1
  398. data/ext/pg_query/src_backend_commands_define.c +11 -1
  399. data/ext/pg_query/src_backend_nodes_bitmapset.c +3 -1
  400. data/ext/pg_query/src_backend_nodes_copyfuncs.c +424 -109
  401. data/ext/pg_query/src_backend_nodes_equalfuncs.c +291 -46
  402. data/ext/pg_query/src_backend_nodes_extensible.c +1 -1
  403. data/ext/pg_query/src_backend_nodes_list.c +86 -11
  404. data/ext/pg_query/src_backend_nodes_makefuncs.c +5 -4
  405. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +55 -12
  406. data/ext/pg_query/src_backend_nodes_value.c +28 -19
  407. data/ext/pg_query/src_backend_parser_gram.c +33890 -31262
  408. data/ext/pg_query/src_backend_parser_parser.c +26 -7
  409. data/ext/pg_query/src_backend_parser_scan.c +644 -441
  410. data/ext/pg_query/src_backend_parser_scansup.c +4 -28
  411. data/ext/pg_query/src_backend_postmaster_postmaster.c +77 -106
  412. data/ext/pg_query/src_backend_storage_ipc_ipc.c +13 -4
  413. data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +5 -4
  414. data/ext/pg_query/src_backend_tcop_postgres.c +73 -24
  415. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +140 -0
  416. data/ext/pg_query/src_backend_utils_adt_datum.c +13 -1
  417. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  418. data/ext/pg_query/src_backend_utils_adt_format_type.c +6 -2
  419. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +109 -15
  420. data/ext/pg_query/src_backend_utils_error_assert.c +16 -14
  421. data/ext/pg_query/src_backend_utils_error_elog.c +172 -99
  422. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +12 -17
  423. data/ext/pg_query/src_backend_utils_hash_dynahash.c +40 -10
  424. data/ext/pg_query/src_backend_utils_init_globals.c +5 -5
  425. data/ext/pg_query/src_backend_utils_mb_mbutils.c +55 -66
  426. data/ext/pg_query/src_backend_utils_misc_guc.c +207 -45
  427. data/ext/pg_query/src_backend_utils_mmgr_aset.c +7 -5
  428. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +123 -35
  429. data/ext/pg_query/src_common_encnames.c +1 -1
  430. data/ext/pg_query/src_common_hashfn.c +3 -3
  431. data/ext/pg_query/src_common_keywords.c +15 -2
  432. data/ext/pg_query/src_common_kwlist_d.h +517 -494
  433. data/ext/pg_query/src_common_kwlookup.c +1 -1
  434. data/ext/pg_query/src_common_pg_prng.c +152 -0
  435. data/ext/pg_query/src_common_psprintf.c +1 -1
  436. data/ext/pg_query/src_common_string.c +7 -1
  437. data/ext/pg_query/src_common_stringinfo.c +1 -1
  438. data/ext/pg_query/src_common_wchar.c +712 -109
  439. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +49 -22
  440. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +1 -18
  441. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1235 -1261
  442. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  443. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +10 -10
  444. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +2 -2
  445. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +54 -56
  446. data/ext/pg_query/src_port_pg_bitutils.c +41 -52
  447. data/ext/pg_query/src_port_pgsleep.c +1 -1
  448. data/ext/pg_query/src_port_pgstrcasecmp.c +1 -1
  449. data/ext/pg_query/src_port_qsort.c +12 -224
  450. data/ext/pg_query/src_port_snprintf.c +46 -20
  451. data/ext/pg_query/src_port_strerror.c +9 -19
  452. data/ext/pg_query/src_port_strnlen.c +1 -1
  453. data/lib/pg_query/deparse.rb +7 -1
  454. data/lib/pg_query/filter_columns.rb +6 -4
  455. data/lib/pg_query/fingerprint.rb +18 -3
  456. data/lib/pg_query/node.rb +2 -2
  457. data/lib/pg_query/param_refs.rb +1 -1
  458. data/lib/pg_query/parse.rb +87 -51
  459. data/lib/pg_query/pg_query_pb.rb +1109 -942
  460. data/lib/pg_query/treewalker.rb +6 -0
  461. data/lib/pg_query/truncate.rb +54 -8
  462. data/lib/pg_query/version.rb +1 -1
  463. metadata +29 -18
  464. data/ext/pg_query/include/access/xloginsert.h +0 -64
  465. data/ext/pg_query/include/bootstrap/bootstrap.h +0 -62
  466. data/ext/pg_query/include/parser/parse_clause.h +0 -54
  467. data/ext/pg_query/include/parser/parse_collate.h +0 -27
  468. data/ext/pg_query/include/parser/parse_target.h +0 -46
  469. data/ext/pg_query/src_backend_libpq_pqcomm.c +0 -651
  470. data/ext/pg_query/src_backend_parser_parse_expr.c +0 -313
  471. data/ext/pg_query/src_port_erand48.c +0 -127
  472. data/ext/pg_query/src_port_random.c +0 -31
@@ -4,7 +4,7 @@
4
4
  * definition of the "constraint" system catalog (pg_constraint)
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/catalog/pg_constraint.h
@@ -46,7 +46,8 @@ CATALOG(pg_constraint,2606,ConstraintRelationId)
46
46
  * conrelid + contypid + conname.
47
47
  */
48
48
  NameData conname; /* name of this constraint */
49
- Oid connamespace; /* OID of namespace containing constraint */
49
+ Oid connamespace BKI_LOOKUP(pg_namespace); /* OID of namespace
50
+ * containing constraint */
50
51
  char contype; /* constraint type; see codes below */
51
52
  bool condeferrable; /* deferrable constraint? */
52
53
  bool condeferred; /* deferred by default? */
@@ -57,7 +58,8 @@ CATALOG(pg_constraint,2606,ConstraintRelationId)
57
58
  * specific relation (this excludes domain constraints and assertions).
58
59
  * Otherwise conrelid is 0 and conkey is NULL.
59
60
  */
60
- Oid conrelid; /* relation this constraint constrains */
61
+ Oid conrelid BKI_LOOKUP_OPT(pg_class); /* relation this
62
+ * constraint constrains */
61
63
 
62
64
  /*
63
65
  * contypid links to the pg_type row for a domain if this is a domain
@@ -66,7 +68,8 @@ CATALOG(pg_constraint,2606,ConstraintRelationId)
66
68
  * For SQL-style global ASSERTIONs, both conrelid and contypid would be
67
69
  * zero. This is not presently supported, however.
68
70
  */
69
- Oid contypid; /* domain this constraint constrains */
71
+ Oid contypid BKI_LOOKUP_OPT(pg_type); /* domain this constraint
72
+ * constrains */
70
73
 
71
74
  /*
72
75
  * conindid links to the index supporting the constraint, if any;
@@ -76,19 +79,21 @@ CATALOG(pg_constraint,2606,ConstraintRelationId)
76
79
  * columns). Notice that the index is on conrelid in the first case but
77
80
  * confrelid in the second.
78
81
  */
79
- Oid conindid; /* index supporting this constraint */
82
+ Oid conindid BKI_LOOKUP_OPT(pg_class); /* index supporting this
83
+ * constraint */
80
84
 
81
85
  /*
82
86
  * If this constraint is on a partition inherited from a partitioned
83
87
  * table, this is the OID of the corresponding constraint in the parent.
84
88
  */
85
- Oid conparentid;
89
+ Oid conparentid BKI_LOOKUP_OPT(pg_constraint);
86
90
 
87
91
  /*
88
92
  * These fields, plus confkey, are only meaningful for a foreign-key
89
93
  * constraint. Otherwise confrelid is 0 and the char fields are spaces.
90
94
  */
91
- Oid confrelid; /* relation referenced by foreign key */
95
+ Oid confrelid BKI_LOOKUP_OPT(pg_class); /* relation referenced by
96
+ * foreign key */
92
97
  char confupdtype; /* foreign key's ON UPDATE action */
93
98
  char confdeltype; /* foreign key's ON DELETE action */
94
99
  char confmatchtype; /* foreign key's match type */
@@ -119,25 +124,31 @@ CATALOG(pg_constraint,2606,ConstraintRelationId)
119
124
  * If a foreign key, the OIDs of the PK = FK equality operators for each
120
125
  * column of the constraint
121
126
  */
122
- Oid conpfeqop[1];
127
+ Oid conpfeqop[1] BKI_LOOKUP(pg_operator);
123
128
 
124
129
  /*
125
130
  * If a foreign key, the OIDs of the PK = PK equality operators for each
126
131
  * column of the constraint (i.e., equality for the referenced columns)
127
132
  */
128
- Oid conppeqop[1];
133
+ Oid conppeqop[1] BKI_LOOKUP(pg_operator);
129
134
 
130
135
  /*
131
136
  * If a foreign key, the OIDs of the FK = FK equality operators for each
132
137
  * column of the constraint (i.e., equality for the referencing columns)
133
138
  */
134
- Oid conffeqop[1];
139
+ Oid conffeqop[1] BKI_LOOKUP(pg_operator);
140
+
141
+ /*
142
+ * If a foreign key with an ON DELETE SET NULL/DEFAULT action, the subset
143
+ * of conkey to updated. If null, all columns are updated.
144
+ */
145
+ int16 confdelsetcols[1];
135
146
 
136
147
  /*
137
148
  * If an exclusion constraint, the OIDs of the exclusion operators for
138
149
  * each column of the constraint
139
150
  */
140
- Oid conexclop[1];
151
+ Oid conexclop[1] BKI_LOOKUP(pg_operator);
141
152
 
142
153
  /*
143
154
  * If a check constraint, nodeToString representation of expression
@@ -153,6 +164,18 @@ CATALOG(pg_constraint,2606,ConstraintRelationId)
153
164
  */
154
165
  typedef FormData_pg_constraint *Form_pg_constraint;
155
166
 
167
+ DECLARE_TOAST(pg_constraint, 2832, 2833);
168
+
169
+ DECLARE_INDEX(pg_constraint_conname_nsp_index, 2664, ConstraintNameNspIndexId, on pg_constraint using btree(conname name_ops, connamespace oid_ops));
170
+ DECLARE_UNIQUE_INDEX(pg_constraint_conrelid_contypid_conname_index, 2665, ConstraintRelidTypidNameIndexId, on pg_constraint using btree(conrelid oid_ops, contypid oid_ops, conname name_ops));
171
+ DECLARE_INDEX(pg_constraint_contypid_index, 2666, ConstraintTypidIndexId, on pg_constraint using btree(contypid oid_ops));
172
+ DECLARE_UNIQUE_INDEX_PKEY(pg_constraint_oid_index, 2667, ConstraintOidIndexId, on pg_constraint using btree(oid oid_ops));
173
+ DECLARE_INDEX(pg_constraint_conparentid_index, 2579, ConstraintParentIndexId, on pg_constraint using btree(conparentid oid_ops));
174
+
175
+ /* conkey can contain zero (InvalidAttrNumber) if a whole-row Var is used */
176
+ DECLARE_ARRAY_FOREIGN_KEY_OPT((conrelid, conkey), pg_attribute, (attrelid, attnum));
177
+ DECLARE_ARRAY_FOREIGN_KEY((confrelid, confkey), pg_attribute, (attrelid, attnum));
178
+
156
179
  #ifdef EXPOSE_TO_CLIENT_CODE
157
180
 
158
181
  /* Valid values for contype */
@@ -203,6 +226,8 @@ extern Oid CreateConstraintEntry(const char *constraintName,
203
226
  int foreignNKeys,
204
227
  char foreignUpdateType,
205
228
  char foreignDeleteType,
229
+ const int16 *fkDeleteSetCols,
230
+ int numFkDeleteSetCols,
206
231
  char foreignMatchType,
207
232
  const Oid *exclOp,
208
233
  Node *conExpr,
@@ -237,7 +262,8 @@ extern Bitmapset *get_primary_key_attnos(Oid relid, bool deferrableOk,
237
262
  Oid *constraintOid);
238
263
  extern void DeconstructFkConstraintRow(HeapTuple tuple, int *numfks,
239
264
  AttrNumber *conkey, AttrNumber *confkey,
240
- Oid *pf_eq_oprs, Oid *pp_eq_oprs, Oid *ff_eq_oprs);
265
+ Oid *pf_eq_oprs, Oid *pp_eq_oprs, Oid *ff_eq_oprs,
266
+ int *num_fk_del_set_cols, AttrNumber *fk_del_set_cols);
241
267
 
242
268
  extern bool check_functional_grouping(Oid relid,
243
269
  Index varno, Index varlevelsup,
@@ -3,7 +3,7 @@
3
3
  * pg_constraint_d.h
4
4
  * Macro definitions for pg_constraint
5
5
  *
6
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * NOTES
@@ -19,6 +19,11 @@
19
19
  #define PG_CONSTRAINT_D_H
20
20
 
21
21
  #define ConstraintRelationId 2606
22
+ #define ConstraintNameNspIndexId 2664
23
+ #define ConstraintRelidTypidNameIndexId 2665
24
+ #define ConstraintTypidIndexId 2666
25
+ #define ConstraintOidIndexId 2667
26
+ #define ConstraintParentIndexId 2579
22
27
 
23
28
  #define Anum_pg_constraint_oid 1
24
29
  #define Anum_pg_constraint_conname 2
@@ -43,10 +48,11 @@
43
48
  #define Anum_pg_constraint_conpfeqop 21
44
49
  #define Anum_pg_constraint_conppeqop 22
45
50
  #define Anum_pg_constraint_conffeqop 23
46
- #define Anum_pg_constraint_conexclop 24
47
- #define Anum_pg_constraint_conbin 25
51
+ #define Anum_pg_constraint_confdelsetcols 24
52
+ #define Anum_pg_constraint_conexclop 25
53
+ #define Anum_pg_constraint_conbin 26
48
54
 
49
- #define Natts_pg_constraint 25
55
+ #define Natts_pg_constraint 26
50
56
 
51
57
 
52
58
  /* Valid values for contype */
@@ -5,7 +5,7 @@
5
5
  * However, we define it here so that the format is documented.
6
6
  *
7
7
  *
8
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
8
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
9
9
  * Portions Copyright (c) 1994, Regents of the University of California
10
10
  *
11
11
  * src/include/catalog/pg_control.h
@@ -40,7 +40,7 @@ typedef struct CheckPoint
40
40
  TimeLineID PrevTimeLineID; /* previous TLI, if this record begins a new
41
41
  * timeline (equals ThisTimeLineID otherwise) */
42
42
  bool fullPageWrites; /* current full_page_writes */
43
- FullTransactionId nextFullXid; /* next free full transaction ID */
43
+ FullTransactionId nextXid; /* next free transaction ID */
44
44
  Oid nextOid; /* next free OID */
45
45
  MultiXactId nextMulti; /* next free MultiXactId */
46
46
  MultiXactOffset nextMultiOffset; /* next free MultiXact offset */
@@ -76,6 +76,8 @@ typedef struct CheckPoint
76
76
  #define XLOG_END_OF_RECOVERY 0x90
77
77
  #define XLOG_FPI_FOR_HINT 0xA0
78
78
  #define XLOG_FPI 0xB0
79
+ /* 0xC0 is used in Postgres 9.5-11 */
80
+ #define XLOG_OVERWRITE_CONTRECORD 0xD0
79
81
 
80
82
 
81
83
  /*
@@ -159,9 +161,7 @@ typedef struct ControlFileData
159
161
  *
160
162
  * If backupEndRequired is true, we know for sure that we're restoring
161
163
  * from a backup, and must see a backup-end record before we can safely
162
- * start up. If it's false, but backupStartPoint is set, a backup_label
163
- * file was found at startup but it may have been a leftover from a stray
164
- * pg_start_backup() call, not accompanied by pg_stop_backup().
164
+ * start up.
165
165
  */
166
166
  XLogRecPtr minRecoveryPoint;
167
167
  TimeLineID minRecoveryPointTLI;
@@ -3,7 +3,7 @@
3
3
  * pg_conversion.h
4
4
  * definition of the "conversion" system catalog (pg_conversion)
5
5
  *
6
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * src/include/catalog/pg_conversion.h
@@ -35,10 +35,10 @@ CATALOG(pg_conversion,2607,ConversionRelationId)
35
35
  NameData conname;
36
36
 
37
37
  /* namespace that the conversion belongs to */
38
- Oid connamespace BKI_DEFAULT(PGNSP);
38
+ Oid connamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);
39
39
 
40
40
  /* owner of the conversion */
41
- Oid conowner BKI_DEFAULT(PGUID);
41
+ Oid conowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
42
42
 
43
43
  /* FOR encoding id */
44
44
  int32 conforencoding BKI_LOOKUP(encoding);
@@ -60,12 +60,15 @@ CATALOG(pg_conversion,2607,ConversionRelationId)
60
60
  */
61
61
  typedef FormData_pg_conversion *Form_pg_conversion;
62
62
 
63
+ DECLARE_UNIQUE_INDEX(pg_conversion_default_index, 2668, ConversionDefaultIndexId, on pg_conversion using btree(connamespace oid_ops, conforencoding int4_ops, contoencoding int4_ops, oid oid_ops));
64
+ DECLARE_UNIQUE_INDEX(pg_conversion_name_nsp_index, 2669, ConversionNameNspIndexId, on pg_conversion using btree(conname name_ops, connamespace oid_ops));
65
+ DECLARE_UNIQUE_INDEX_PKEY(pg_conversion_oid_index, 2670, ConversionOidIndexId, on pg_conversion using btree(oid oid_ops));
66
+
63
67
 
64
68
  extern ObjectAddress ConversionCreate(const char *conname, Oid connamespace,
65
69
  Oid conowner,
66
70
  int32 conforencoding, int32 contoencoding,
67
71
  Oid conproc, bool def);
68
- extern void RemoveConversionById(Oid conversionOid);
69
72
  extern Oid FindDefaultConversion(Oid connamespace, int32 for_encoding,
70
73
  int32 to_encoding);
71
74
 
@@ -3,7 +3,7 @@
3
3
  * pg_conversion_d.h
4
4
  * Macro definitions for pg_conversion
5
5
  *
6
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * NOTES
@@ -19,6 +19,9 @@
19
19
  #define PG_CONVERSION_D_H
20
20
 
21
21
  #define ConversionRelationId 2607
22
+ #define ConversionDefaultIndexId 2668
23
+ #define ConversionNameNspIndexId 2669
24
+ #define ConversionOidIndexId 2670
22
25
 
23
26
  #define Anum_pg_conversion_oid 1
24
27
  #define Anum_pg_conversion_conname 2
@@ -4,8 +4,9 @@
4
4
  * definition of the "dependency" system catalog (pg_depend)
5
5
  *
6
6
  * pg_depend has no preloaded contents, so there is no pg_depend.dat
7
- * file; system-defined dependencies are loaded into it during a late stage
8
- * of the initdb process.
7
+ * file; dependencies for system-defined objects are loaded into it
8
+ * on-the-fly during initdb. Most built-in objects are pinned anyway,
9
+ * and hence need no explicit entries in pg_depend.
9
10
  *
10
11
  * NOTE: we do not represent all possible dependency pairs in pg_depend;
11
12
  * for example, there's not much value in creating an explicit dependency
@@ -16,7 +17,7 @@
16
17
  * convenient to find from the contents of other catalogs.
17
18
  *
18
19
  *
19
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
20
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
20
21
  * Portions Copyright (c) 1994, Regents of the University of California
21
22
  *
22
23
  * src/include/catalog/pg_depend.h
@@ -42,17 +43,17 @@ CATALOG(pg_depend,2608,DependRelationId)
42
43
  {
43
44
  /*
44
45
  * Identification of the dependent (referencing) object.
45
- *
46
- * These fields are all zeroes for a DEPENDENCY_PIN entry.
47
46
  */
48
- Oid classid; /* OID of table containing object */
47
+ Oid classid BKI_LOOKUP(pg_class); /* OID of table containing
48
+ * object */
49
49
  Oid objid; /* OID of object itself */
50
50
  int32 objsubid; /* column number, or 0 if not used */
51
51
 
52
52
  /*
53
53
  * Identification of the independent (referenced) object.
54
54
  */
55
- Oid refclassid; /* OID of table containing object */
55
+ Oid refclassid BKI_LOOKUP(pg_class); /* OID of table containing
56
+ * object */
56
57
  Oid refobjid; /* OID of object itself */
57
58
  int32 refobjsubid; /* column number, or 0 if not used */
58
59
 
@@ -70,4 +71,7 @@ CATALOG(pg_depend,2608,DependRelationId)
70
71
  */
71
72
  typedef FormData_pg_depend *Form_pg_depend;
72
73
 
74
+ DECLARE_INDEX(pg_depend_depender_index, 2673, DependDependerIndexId, on pg_depend using btree(classid oid_ops, objid oid_ops, objsubid int4_ops));
75
+ DECLARE_INDEX(pg_depend_reference_index, 2674, DependReferenceIndexId, on pg_depend using btree(refclassid oid_ops, refobjid oid_ops, refobjsubid int4_ops));
76
+
73
77
  #endif /* PG_DEPEND_H */
@@ -3,7 +3,7 @@
3
3
  * pg_depend_d.h
4
4
  * Macro definitions for pg_depend
5
5
  *
6
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * NOTES
@@ -19,6 +19,8 @@
19
19
  #define PG_DEPEND_D_H
20
20
 
21
21
  #define DependRelationId 2608
22
+ #define DependDependerIndexId 2673
23
+ #define DependReferenceIndexId 2674
22
24
 
23
25
  #define Anum_pg_depend_classid 1
24
26
  #define Anum_pg_depend_objid 2
@@ -4,7 +4,7 @@
4
4
  * definition of the "event trigger" system catalog (pg_event_trigger)
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/catalog/pg_event_trigger.h
@@ -31,8 +31,9 @@ CATALOG(pg_event_trigger,3466,EventTriggerRelationId)
31
31
  Oid oid; /* oid */
32
32
  NameData evtname; /* trigger's name */
33
33
  NameData evtevent; /* trigger's event */
34
- Oid evtowner; /* trigger's owner */
35
- Oid evtfoid; /* OID of function to be called */
34
+ Oid evtowner BKI_LOOKUP(pg_authid); /* trigger's owner */
35
+ Oid evtfoid BKI_LOOKUP(pg_proc); /* OID of function to be
36
+ * called */
36
37
  char evtenabled; /* trigger's firing configuration WRT
37
38
  * session_replication_role */
38
39
 
@@ -48,4 +49,9 @@ CATALOG(pg_event_trigger,3466,EventTriggerRelationId)
48
49
  */
49
50
  typedef FormData_pg_event_trigger *Form_pg_event_trigger;
50
51
 
52
+ DECLARE_TOAST(pg_event_trigger, 4145, 4146);
53
+
54
+ DECLARE_UNIQUE_INDEX(pg_event_trigger_evtname_index, 3467, EventTriggerNameIndexId, on pg_event_trigger using btree(evtname name_ops));
55
+ DECLARE_UNIQUE_INDEX_PKEY(pg_event_trigger_oid_index, 3468, EventTriggerOidIndexId, on pg_event_trigger using btree(oid oid_ops));
56
+
51
57
  #endif /* PG_EVENT_TRIGGER_H */
@@ -3,7 +3,7 @@
3
3
  * pg_event_trigger_d.h
4
4
  * Macro definitions for pg_event_trigger
5
5
  *
6
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * NOTES
@@ -19,6 +19,8 @@
19
19
  #define PG_EVENT_TRIGGER_D_H
20
20
 
21
21
  #define EventTriggerRelationId 3466
22
+ #define EventTriggerNameIndexId 3467
23
+ #define EventTriggerOidIndexId 3468
22
24
 
23
25
  #define Anum_pg_event_trigger_oid 1
24
26
  #define Anum_pg_event_trigger_evtname 2
@@ -4,7 +4,7 @@
4
4
  * definition of the "index" system catalog (pg_index)
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/catalog/pg_index.h
@@ -28,11 +28,13 @@
28
28
  */
29
29
  CATALOG(pg_index,2610,IndexRelationId) BKI_SCHEMA_MACRO
30
30
  {
31
- Oid indexrelid; /* OID of the index */
32
- Oid indrelid; /* OID of the relation it indexes */
31
+ Oid indexrelid BKI_LOOKUP(pg_class); /* OID of the index */
32
+ Oid indrelid BKI_LOOKUP(pg_class); /* OID of the relation it
33
+ * indexes */
33
34
  int16 indnatts; /* total number of columns in index */
34
35
  int16 indnkeyatts; /* number of key columns in index */
35
36
  bool indisunique; /* is this a unique index? */
37
+ bool indnullsnotdistinct; /* null treatment in unique index */
36
38
  bool indisprimary; /* is this index for primary key? */
37
39
  bool indisexclusion; /* is this index for exclusion constraint? */
38
40
  bool indimmediate; /* is uniqueness enforced immediately? */
@@ -44,12 +46,14 @@ CATALOG(pg_index,2610,IndexRelationId) BKI_SCHEMA_MACRO
44
46
  bool indisreplident; /* is this index the identity for replication? */
45
47
 
46
48
  /* variable-length fields start here, but we allow direct access to indkey */
47
- int2vector indkey; /* column numbers of indexed cols, or 0 */
49
+ int2vector indkey BKI_FORCE_NOT_NULL; /* column numbers of indexed cols,
50
+ * or 0 */
48
51
 
49
52
  #ifdef CATALOG_VARLEN
50
- oidvector indcollation; /* collation identifiers */
51
- oidvector indclass; /* opclass identifiers */
52
- int2vector indoption; /* per-column flags (AM-specific meanings) */
53
+ oidvector indcollation BKI_LOOKUP_OPT(pg_collation) BKI_FORCE_NOT_NULL; /* collation identifiers */
54
+ oidvector indclass BKI_LOOKUP(pg_opclass) BKI_FORCE_NOT_NULL; /* opclass identifiers */
55
+ int2vector indoption BKI_FORCE_NOT_NULL; /* per-column flags
56
+ * (AM-specific meanings) */
53
57
  pg_node_tree indexprs; /* expression trees for index attributes that
54
58
  * are not simple column references; one for
55
59
  * each zero entry in indkey[] */
@@ -65,6 +69,12 @@ CATALOG(pg_index,2610,IndexRelationId) BKI_SCHEMA_MACRO
65
69
  */
66
70
  typedef FormData_pg_index *Form_pg_index;
67
71
 
72
+ DECLARE_INDEX(pg_index_indrelid_index, 2678, IndexIndrelidIndexId, on pg_index using btree(indrelid oid_ops));
73
+ DECLARE_UNIQUE_INDEX_PKEY(pg_index_indexrelid_index, 2679, IndexRelidIndexId, on pg_index using btree(indexrelid oid_ops));
74
+
75
+ /* indkey can contain zero (InvalidAttrNumber) to represent expressions */
76
+ DECLARE_ARRAY_FOREIGN_KEY_OPT((indrelid, indkey), pg_attribute, (attrelid, attnum));
77
+
68
78
  #ifdef EXPOSE_TO_CLIENT_CODE
69
79
 
70
80
  /*
@@ -3,7 +3,7 @@
3
3
  * pg_index_d.h
4
4
  * Macro definitions for pg_index
5
5
  *
6
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * NOTES
@@ -19,29 +19,32 @@
19
19
  #define PG_INDEX_D_H
20
20
 
21
21
  #define IndexRelationId 2610
22
+ #define IndexIndrelidIndexId 2678
23
+ #define IndexRelidIndexId 2679
22
24
 
23
25
  #define Anum_pg_index_indexrelid 1
24
26
  #define Anum_pg_index_indrelid 2
25
27
  #define Anum_pg_index_indnatts 3
26
28
  #define Anum_pg_index_indnkeyatts 4
27
29
  #define Anum_pg_index_indisunique 5
28
- #define Anum_pg_index_indisprimary 6
29
- #define Anum_pg_index_indisexclusion 7
30
- #define Anum_pg_index_indimmediate 8
31
- #define Anum_pg_index_indisclustered 9
32
- #define Anum_pg_index_indisvalid 10
33
- #define Anum_pg_index_indcheckxmin 11
34
- #define Anum_pg_index_indisready 12
35
- #define Anum_pg_index_indislive 13
36
- #define Anum_pg_index_indisreplident 14
37
- #define Anum_pg_index_indkey 15
38
- #define Anum_pg_index_indcollation 16
39
- #define Anum_pg_index_indclass 17
40
- #define Anum_pg_index_indoption 18
41
- #define Anum_pg_index_indexprs 19
42
- #define Anum_pg_index_indpred 20
30
+ #define Anum_pg_index_indnullsnotdistinct 6
31
+ #define Anum_pg_index_indisprimary 7
32
+ #define Anum_pg_index_indisexclusion 8
33
+ #define Anum_pg_index_indimmediate 9
34
+ #define Anum_pg_index_indisclustered 10
35
+ #define Anum_pg_index_indisvalid 11
36
+ #define Anum_pg_index_indcheckxmin 12
37
+ #define Anum_pg_index_indisready 13
38
+ #define Anum_pg_index_indislive 14
39
+ #define Anum_pg_index_indisreplident 15
40
+ #define Anum_pg_index_indkey 16
41
+ #define Anum_pg_index_indcollation 17
42
+ #define Anum_pg_index_indclass 18
43
+ #define Anum_pg_index_indoption 19
44
+ #define Anum_pg_index_indexprs 20
45
+ #define Anum_pg_index_indpred 21
43
46
 
44
- #define Natts_pg_index 20
47
+ #define Natts_pg_index 21
45
48
 
46
49
 
47
50
  /*
@@ -4,7 +4,7 @@
4
4
  * definition of the "language" system catalog (pg_language)
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/catalog/pg_language.h
@@ -34,7 +34,7 @@ CATALOG(pg_language,2612,LanguageRelationId)
34
34
  NameData lanname;
35
35
 
36
36
  /* Language's owner */
37
- Oid lanowner BKI_DEFAULT(PGUID);
37
+ Oid lanowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
38
38
 
39
39
  /* Is a procedural language */
40
40
  bool lanispl BKI_DEFAULT(f);
@@ -43,13 +43,13 @@ CATALOG(pg_language,2612,LanguageRelationId)
43
43
  bool lanpltrusted BKI_DEFAULT(f);
44
44
 
45
45
  /* Call handler, if it's a PL */
46
- Oid lanplcallfoid BKI_DEFAULT(0) BKI_LOOKUP(pg_proc);
46
+ Oid lanplcallfoid BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_proc);
47
47
 
48
48
  /* Optional anonymous-block handler function */
49
- Oid laninline BKI_DEFAULT(0) BKI_LOOKUP(pg_proc);
49
+ Oid laninline BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_proc);
50
50
 
51
51
  /* Optional validation function */
52
- Oid lanvalidator BKI_DEFAULT(0) BKI_LOOKUP(pg_proc);
52
+ Oid lanvalidator BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_proc);
53
53
 
54
54
  #ifdef CATALOG_VARLEN /* variable-length fields start here */
55
55
  /* Access privileges */
@@ -64,4 +64,9 @@ CATALOG(pg_language,2612,LanguageRelationId)
64
64
  */
65
65
  typedef FormData_pg_language *Form_pg_language;
66
66
 
67
+ DECLARE_TOAST(pg_language, 4157, 4158);
68
+
69
+ DECLARE_UNIQUE_INDEX(pg_language_name_index, 2681, LanguageNameIndexId, on pg_language using btree(lanname name_ops));
70
+ DECLARE_UNIQUE_INDEX_PKEY(pg_language_oid_index, 2682, LanguageOidIndexId, on pg_language using btree(oid oid_ops));
71
+
67
72
  #endif /* PG_LANGUAGE_H */
@@ -3,7 +3,7 @@
3
3
  * pg_language_d.h
4
4
  * Macro definitions for pg_language
5
5
  *
6
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * NOTES
@@ -19,6 +19,8 @@
19
19
  #define PG_LANGUAGE_D_H
20
20
 
21
21
  #define LanguageRelationId 2612
22
+ #define LanguageNameIndexId 2681
23
+ #define LanguageOidIndexId 2682
22
24
 
23
25
  #define Anum_pg_language_oid 1
24
26
  #define Anum_pg_language_lanname 2
@@ -4,7 +4,7 @@
4
4
  * definition of the "namespace" system catalog (pg_namespace)
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/catalog/pg_namespace.h
@@ -37,7 +37,7 @@ CATALOG(pg_namespace,2615,NamespaceRelationId)
37
37
  Oid oid; /* oid */
38
38
 
39
39
  NameData nspname;
40
- Oid nspowner;
40
+ Oid nspowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
41
41
 
42
42
  #ifdef CATALOG_VARLEN /* variable-length fields start here */
43
43
  aclitem nspacl[1];
@@ -51,6 +51,11 @@ CATALOG(pg_namespace,2615,NamespaceRelationId)
51
51
  */
52
52
  typedef FormData_pg_namespace *Form_pg_namespace;
53
53
 
54
+ DECLARE_TOAST(pg_namespace, 4163, 4164);
55
+
56
+ DECLARE_UNIQUE_INDEX(pg_namespace_nspname_index, 2684, NamespaceNameIndexId, on pg_namespace using btree(nspname name_ops));
57
+ DECLARE_UNIQUE_INDEX_PKEY(pg_namespace_oid_index, 2685, NamespaceOidIndexId, on pg_namespace using btree(oid oid_ops));
58
+
54
59
  /*
55
60
  * prototypes for functions in pg_namespace.c
56
61
  */
@@ -3,7 +3,7 @@
3
3
  * pg_namespace_d.h
4
4
  * Macro definitions for pg_namespace
5
5
  *
6
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * NOTES
@@ -19,6 +19,8 @@
19
19
  #define PG_NAMESPACE_D_H
20
20
 
21
21
  #define NamespaceRelationId 2615
22
+ #define NamespaceNameIndexId 2684
23
+ #define NamespaceOidIndexId 2685
22
24
 
23
25
  #define Anum_pg_namespace_oid 1
24
26
  #define Anum_pg_namespace_nspname 2
@@ -24,7 +24,7 @@
24
24
  * AMs support this.
25
25
  *
26
26
  *
27
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
27
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
28
28
  * Portions Copyright (c) 1994, Regents of the University of California
29
29
  *
30
30
  * src/include/catalog/pg_opclass.h
@@ -57,10 +57,10 @@ CATALOG(pg_opclass,2616,OperatorClassRelationId)
57
57
  NameData opcname;
58
58
 
59
59
  /* namespace of this opclass */
60
- Oid opcnamespace BKI_DEFAULT(PGNSP);
60
+ Oid opcnamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);
61
61
 
62
62
  /* opclass owner */
63
- Oid opcowner BKI_DEFAULT(PGUID);
63
+ Oid opcowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
64
64
 
65
65
  /* containing operator family */
66
66
  Oid opcfamily BKI_LOOKUP(pg_opfamily);
@@ -71,8 +71,8 @@ CATALOG(pg_opclass,2616,OperatorClassRelationId)
71
71
  /* T if opclass is default for opcintype */
72
72
  bool opcdefault BKI_DEFAULT(t);
73
73
 
74
- /* type of data in index, or InvalidOid */
75
- Oid opckeytype BKI_DEFAULT(0) BKI_LOOKUP(pg_type);
74
+ /* type of data in index, or InvalidOid if same as input column type */
75
+ Oid opckeytype BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_type);
76
76
  } FormData_pg_opclass;
77
77
 
78
78
  /* ----------------
@@ -82,4 +82,7 @@ CATALOG(pg_opclass,2616,OperatorClassRelationId)
82
82
  */
83
83
  typedef FormData_pg_opclass *Form_pg_opclass;
84
84
 
85
+ DECLARE_UNIQUE_INDEX(pg_opclass_am_name_nsp_index, 2686, OpclassAmNameNspIndexId, on pg_opclass using btree(opcmethod oid_ops, opcname name_ops, opcnamespace oid_ops));
86
+ DECLARE_UNIQUE_INDEX_PKEY(pg_opclass_oid_index, 2687, OpclassOidIndexId, on pg_opclass using btree(oid oid_ops));
87
+
85
88
  #endif /* PG_OPCLASS_H */