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
@@ -3,7 +3,7 @@
3
3
  * pg_am_d.h
4
4
  * Macro definitions for pg_am
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_AM_D_H
20
20
 
21
21
  #define AccessMethodRelationId 2601
22
+ #define AmNameIndexId 2651
23
+ #define AmOidIndexId 2652
22
24
 
23
25
  #define Anum_pg_am_oid 1
24
26
  #define Anum_pg_am_amname 2
@@ -8,7 +8,7 @@
8
8
  * relations need be included.
9
9
  *
10
10
  *
11
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
11
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
12
12
  * Portions Copyright (c) 1994, Regents of the University of California
13
13
  *
14
14
  * src/include/catalog/pg_attribute.h
@@ -36,7 +36,8 @@
36
36
  */
37
37
  CATALOG(pg_attribute,1249,AttributeRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(75,AttributeRelation_Rowtype_Id) BKI_SCHEMA_MACRO
38
38
  {
39
- Oid attrelid; /* OID of relation containing this attribute */
39
+ Oid attrelid BKI_LOOKUP(pg_class); /* OID of relation containing
40
+ * this attribute */
40
41
  NameData attname; /* name of attribute */
41
42
 
42
43
  /*
@@ -44,9 +45,12 @@ CATALOG(pg_attribute,1249,AttributeRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(75,
44
45
  * defines the data type of this attribute (e.g. int4). Information in
45
46
  * that instance is redundant with the attlen, attbyval, and attalign
46
47
  * attributes of this instance, so they had better match or Postgres will
47
- * fail.
48
+ * fail. In an entry for a dropped column, this field is set to zero
49
+ * since the pg_type entry may no longer exist; but we rely on attlen,
50
+ * attbyval, and attalign to still tell us how large the values in the
51
+ * table are.
48
52
  */
49
- Oid atttypid;
53
+ Oid atttypid BKI_LOOKUP_OPT(pg_type);
50
54
 
51
55
  /*
52
56
  * attstattarget is the target number of statistics datapoints to collect
@@ -107,6 +111,12 @@ CATALOG(pg_attribute,1249,AttributeRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(75,
107
111
  */
108
112
  bool attbyval;
109
113
 
114
+ /*
115
+ * attalign is a copy of the typalign field from pg_type for this
116
+ * attribute. See atttypid comments above.
117
+ */
118
+ char attalign;
119
+
110
120
  /*----------
111
121
  * attstorage tells for VARLENA attributes, what the heap access
112
122
  * methods can do to it if a given tuple doesn't fit into a page.
@@ -116,10 +126,14 @@ CATALOG(pg_attribute,1249,AttributeRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(75,
116
126
  char attstorage;
117
127
 
118
128
  /*
119
- * attalign is a copy of the typalign field from pg_type for this
120
- * attribute. See atttypid comments above.
129
+ * attcompression sets the current compression method of the attribute.
130
+ * Typically this is InvalidCompressionMethod ('\0') to specify use of the
131
+ * current default setting (see default_toast_compression). Otherwise,
132
+ * 'p' selects pglz compression, while 'l' selects LZ4 compression.
133
+ * However, this field is ignored whenever attstorage does not allow
134
+ * compression.
121
135
  */
122
- char attalign;
136
+ char attcompression BKI_DEFAULT('\0');
123
137
 
124
138
  /* This flag represents the "NOT NULL" constraint */
125
139
  bool attnotnull;
@@ -153,8 +167,8 @@ CATALOG(pg_attribute,1249,AttributeRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(75,
153
167
  /* Number of times inherited from direct parent relation(s) */
154
168
  int32 attinhcount BKI_DEFAULT(0);
155
169
 
156
- /* attribute's collation */
157
- Oid attcollation;
170
+ /* attribute's collation, if any */
171
+ Oid attcollation BKI_LOOKUP_OPT(pg_collation);
158
172
 
159
173
  #ifdef CATALOG_VARLEN /* variable-length fields start here */
160
174
  /* NOTE: The following fields are not present in tuple descriptors. */
@@ -180,7 +194,7 @@ CATALOG(pg_attribute,1249,AttributeRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(75,
180
194
  * ATTRIBUTE_FIXED_PART_SIZE is the size of the fixed-layout,
181
195
  * guaranteed-not-null part of a pg_attribute row. This is in fact as much
182
196
  * of the row as gets copied into tuple descriptors, so don't expect you
183
- * can access fields beyond attcollation except in a real tuple!
197
+ * can access the variable-length fields except in a real tuple!
184
198
  */
185
199
  #define ATTRIBUTE_FIXED_PART_SIZE \
186
200
  (offsetof(FormData_pg_attribute,attcollation) + sizeof(Oid))
@@ -192,6 +206,9 @@ CATALOG(pg_attribute,1249,AttributeRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(75,
192
206
  */
193
207
  typedef FormData_pg_attribute *Form_pg_attribute;
194
208
 
209
+ DECLARE_UNIQUE_INDEX(pg_attribute_relid_attnam_index, 2658, AttributeRelidNameIndexId, on pg_attribute using btree(attrelid oid_ops, attname name_ops));
210
+ DECLARE_UNIQUE_INDEX_PKEY(pg_attribute_relid_attnum_index, 2659, AttributeRelidNumIndexId, on pg_attribute using btree(attrelid oid_ops, attnum int2_ops));
211
+
195
212
  #ifdef EXPOSE_TO_CLIENT_CODE
196
213
 
197
214
  #define ATTRIBUTE_IDENTITY_ALWAYS 'a'
@@ -3,7 +3,7 @@
3
3
  * pg_attribute_d.h
4
4
  * Macro definitions for pg_attribute
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
@@ -20,6 +20,8 @@
20
20
 
21
21
  #define AttributeRelationId 1249
22
22
  #define AttributeRelation_Rowtype_Id 75
23
+ #define AttributeRelidNameIndexId 2658
24
+ #define AttributeRelidNumIndexId 2659
23
25
 
24
26
  #define Anum_pg_attribute_attrelid 1
25
27
  #define Anum_pg_attribute_attname 2
@@ -31,23 +33,24 @@
31
33
  #define Anum_pg_attribute_attcacheoff 8
32
34
  #define Anum_pg_attribute_atttypmod 9
33
35
  #define Anum_pg_attribute_attbyval 10
34
- #define Anum_pg_attribute_attstorage 11
35
- #define Anum_pg_attribute_attalign 12
36
- #define Anum_pg_attribute_attnotnull 13
37
- #define Anum_pg_attribute_atthasdef 14
38
- #define Anum_pg_attribute_atthasmissing 15
39
- #define Anum_pg_attribute_attidentity 16
40
- #define Anum_pg_attribute_attgenerated 17
41
- #define Anum_pg_attribute_attisdropped 18
42
- #define Anum_pg_attribute_attislocal 19
43
- #define Anum_pg_attribute_attinhcount 20
44
- #define Anum_pg_attribute_attcollation 21
45
- #define Anum_pg_attribute_attacl 22
46
- #define Anum_pg_attribute_attoptions 23
47
- #define Anum_pg_attribute_attfdwoptions 24
48
- #define Anum_pg_attribute_attmissingval 25
49
-
50
- #define Natts_pg_attribute 25
36
+ #define Anum_pg_attribute_attalign 11
37
+ #define Anum_pg_attribute_attstorage 12
38
+ #define Anum_pg_attribute_attcompression 13
39
+ #define Anum_pg_attribute_attnotnull 14
40
+ #define Anum_pg_attribute_atthasdef 15
41
+ #define Anum_pg_attribute_atthasmissing 16
42
+ #define Anum_pg_attribute_attidentity 17
43
+ #define Anum_pg_attribute_attgenerated 18
44
+ #define Anum_pg_attribute_attisdropped 19
45
+ #define Anum_pg_attribute_attislocal 20
46
+ #define Anum_pg_attribute_attinhcount 21
47
+ #define Anum_pg_attribute_attcollation 22
48
+ #define Anum_pg_attribute_attacl 23
49
+ #define Anum_pg_attribute_attoptions 24
50
+ #define Anum_pg_attribute_attfdwoptions 25
51
+ #define Anum_pg_attribute_attmissingval 26
52
+
53
+ #define Natts_pg_attribute 26
51
54
 
52
55
 
53
56
  #define ATTRIBUTE_IDENTITY_ALWAYS 'a'
@@ -6,7 +6,7 @@
6
6
  * pg_shadow and pg_group are now publicly accessible views on pg_authid.
7
7
  *
8
8
  *
9
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
9
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
10
10
  * Portions Copyright (c) 1994, Regents of the University of California
11
11
  *
12
12
  * src/include/catalog/pg_authid.h
@@ -38,7 +38,7 @@ CATALOG(pg_authid,1260,AuthIdRelationId) BKI_SHARED_RELATION BKI_ROWTYPE_OID(284
38
38
  bool rolcreatedb; /* allowed to create databases? */
39
39
  bool rolcanlogin; /* allowed to log in as session user? */
40
40
  bool rolreplication; /* role used for streaming replication */
41
- bool rolbypassrls; /* bypasses row level security? */
41
+ bool rolbypassrls; /* bypasses row-level security? */
42
42
  int32 rolconnlimit; /* max connections allowed (-1=no limit) */
43
43
 
44
44
  /* remaining fields may be null; use heap_getattr to read them! */
@@ -55,4 +55,9 @@ CATALOG(pg_authid,1260,AuthIdRelationId) BKI_SHARED_RELATION BKI_ROWTYPE_OID(284
55
55
  */
56
56
  typedef FormData_pg_authid *Form_pg_authid;
57
57
 
58
+ DECLARE_TOAST_WITH_MACRO(pg_authid, 4175, 4176, PgAuthidToastTable, PgAuthidToastIndex);
59
+
60
+ DECLARE_UNIQUE_INDEX(pg_authid_rolname_index, 2676, AuthIdRolnameIndexId, on pg_authid using btree(rolname name_ops));
61
+ DECLARE_UNIQUE_INDEX_PKEY(pg_authid_oid_index, 2677, AuthIdOidIndexId, on pg_authid using btree(oid oid_ops));
62
+
58
63
  #endif /* PG_AUTHID_H */
@@ -3,7 +3,7 @@
3
3
  * pg_authid_d.h
4
4
  * Macro definitions for pg_authid
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
@@ -20,6 +20,10 @@
20
20
 
21
21
  #define AuthIdRelationId 1260
22
22
  #define AuthIdRelation_Rowtype_Id 2842
23
+ #define PgAuthidToastTable 4175
24
+ #define PgAuthidToastIndex 4176
25
+ #define AuthIdRolnameIndexId 2676
26
+ #define AuthIdOidIndexId 2677
23
27
 
24
28
  #define Anum_pg_authid_oid 1
25
29
  #define Anum_pg_authid_rolname 2
@@ -37,13 +41,17 @@
37
41
  #define Natts_pg_authid 12
38
42
 
39
43
  #define BOOTSTRAP_SUPERUSERID 10
40
- #define DEFAULT_ROLE_MONITOR 3373
41
- #define DEFAULT_ROLE_READ_ALL_SETTINGS 3374
42
- #define DEFAULT_ROLE_READ_ALL_STATS 3375
43
- #define DEFAULT_ROLE_STAT_SCAN_TABLES 3377
44
- #define DEFAULT_ROLE_READ_SERVER_FILES 4569
45
- #define DEFAULT_ROLE_WRITE_SERVER_FILES 4570
46
- #define DEFAULT_ROLE_EXECUTE_SERVER_PROGRAM 4571
47
- #define DEFAULT_ROLE_SIGNAL_BACKENDID 4200
44
+ #define ROLE_PG_DATABASE_OWNER 6171
45
+ #define ROLE_PG_READ_ALL_DATA 6181
46
+ #define ROLE_PG_WRITE_ALL_DATA 6182
47
+ #define ROLE_PG_MONITOR 3373
48
+ #define ROLE_PG_READ_ALL_SETTINGS 3374
49
+ #define ROLE_PG_READ_ALL_STATS 3375
50
+ #define ROLE_PG_STAT_SCAN_TABLES 3377
51
+ #define ROLE_PG_READ_SERVER_FILES 4569
52
+ #define ROLE_PG_WRITE_SERVER_FILES 4570
53
+ #define ROLE_PG_EXECUTE_SERVER_PROGRAM 4571
54
+ #define ROLE_PG_SIGNAL_BACKEND 4200
55
+ #define ROLE_PG_CHECKPOINT 4544
48
56
 
49
57
  #endif /* PG_AUTHID_D_H */
@@ -4,7 +4,7 @@
4
4
  * definition of the "relation" system catalog (pg_class)
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_class.h
@@ -38,38 +38,38 @@ CATALOG(pg_class,1259,RelationRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83,Relat
38
38
  NameData relname;
39
39
 
40
40
  /* OID of namespace containing this class */
41
- Oid relnamespace BKI_DEFAULT(PGNSP);
41
+ Oid relnamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);
42
42
 
43
- /* OID of entry in pg_type for table's implicit row type */
44
- Oid reltype BKI_LOOKUP(pg_type);
43
+ /* OID of entry in pg_type for relation's implicit row type, if any */
44
+ Oid reltype BKI_LOOKUP_OPT(pg_type);
45
45
 
46
- /* OID of entry in pg_type for underlying composite type */
47
- Oid reloftype BKI_DEFAULT(0) BKI_LOOKUP(pg_type);
46
+ /* OID of entry in pg_type for underlying composite type, if any */
47
+ Oid reloftype BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_type);
48
48
 
49
49
  /* class owner */
50
- Oid relowner BKI_DEFAULT(PGUID);
50
+ Oid relowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
51
51
 
52
52
  /* access method; 0 if not a table / index */
53
- Oid relam BKI_DEFAULT(heap) BKI_LOOKUP(pg_am);
53
+ Oid relam BKI_DEFAULT(heap) BKI_LOOKUP_OPT(pg_am);
54
54
 
55
55
  /* identifier of physical storage file */
56
56
  /* relfilenode == 0 means it is a "mapped" relation, see relmapper.c */
57
57
  Oid relfilenode BKI_DEFAULT(0);
58
58
 
59
59
  /* identifier of table space for relation (0 means default for database) */
60
- Oid reltablespace BKI_DEFAULT(0) BKI_LOOKUP(pg_tablespace);
60
+ Oid reltablespace BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_tablespace);
61
61
 
62
62
  /* # of blocks (not always up-to-date) */
63
63
  int32 relpages BKI_DEFAULT(0);
64
64
 
65
- /* # of tuples (not always up-to-date) */
66
- float4 reltuples BKI_DEFAULT(0);
65
+ /* # of tuples (not always up-to-date; -1 means "unknown") */
66
+ float4 reltuples BKI_DEFAULT(-1);
67
67
 
68
68
  /* # of all-visible blocks (not always up-to-date) */
69
69
  int32 relallvisible BKI_DEFAULT(0);
70
70
 
71
71
  /* OID of toast table; 0 if none */
72
- Oid reltoastrelid BKI_DEFAULT(0);
72
+ Oid reltoastrelid BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_class);
73
73
 
74
74
  /* T if has (or has had) any indexes */
75
75
  bool relhasindex BKI_DEFAULT(f);
@@ -119,8 +119,8 @@ CATALOG(pg_class,1259,RelationRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83,Relat
119
119
  /* is relation a partition? */
120
120
  bool relispartition BKI_DEFAULT(f);
121
121
 
122
- /* heap for rewrite during DDL, link to original rel */
123
- Oid relrewrite BKI_DEFAULT(0);
122
+ /* link to original rel during table rewrite; otherwise 0 */
123
+ Oid relrewrite BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_class);
124
124
 
125
125
  /* all Xids < this are frozen in this rel */
126
126
  TransactionId relfrozenxid BKI_DEFAULT(3); /* FirstNormalTransactionId */
@@ -152,6 +152,10 @@ CATALOG(pg_class,1259,RelationRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83,Relat
152
152
  */
153
153
  typedef FormData_pg_class *Form_pg_class;
154
154
 
155
+ DECLARE_UNIQUE_INDEX_PKEY(pg_class_oid_index, 2662, ClassOidIndexId, on pg_class using btree(oid oid_ops));
156
+ DECLARE_UNIQUE_INDEX(pg_class_relname_nsp_index, 2663, ClassNameNspIndexId, on pg_class using btree(relname name_ops, relnamespace oid_ops));
157
+ DECLARE_INDEX(pg_class_tblspc_relfilenode_index, 3455, ClassTblspcRelfilenodeIndexId, on pg_class using btree(reltablespace oid_ops, relfilenode oid_ops));
158
+
155
159
  #ifdef EXPOSE_TO_CLIENT_CODE
156
160
 
157
161
  #define RELKIND_RELATION 'r' /* ordinary table */
@@ -178,7 +182,7 @@ typedef FormData_pg_class *Form_pg_class;
178
182
  /*
179
183
  * an explicitly chosen candidate key's columns are used as replica identity.
180
184
  * Note this will still be set if the index has been dropped; in that case it
181
- * has the same meaning as 'd'.
185
+ * has the same meaning as 'n'.
182
186
  */
183
187
  #define REPLICA_IDENTITY_INDEX 'i'
184
188
 
@@ -194,6 +198,32 @@ typedef FormData_pg_class *Form_pg_class;
194
198
  (relkind) == RELKIND_TOASTVALUE || \
195
199
  (relkind) == RELKIND_MATVIEW)
196
200
 
201
+ #define RELKIND_HAS_PARTITIONS(relkind) \
202
+ ((relkind) == RELKIND_PARTITIONED_TABLE || \
203
+ (relkind) == RELKIND_PARTITIONED_INDEX)
204
+
205
+ /*
206
+ * Relation kinds that support tablespaces: All relation kinds with storage
207
+ * support tablespaces, except that we don't support moving sequences around
208
+ * into different tablespaces. Partitioned tables and indexes don't have
209
+ * physical storage, but they have a tablespace settings so that their
210
+ * children can inherit it.
211
+ */
212
+ #define RELKIND_HAS_TABLESPACE(relkind) \
213
+ ((RELKIND_HAS_STORAGE(relkind) || RELKIND_HAS_PARTITIONS(relkind)) \
214
+ && (relkind) != RELKIND_SEQUENCE)
215
+
216
+ /*
217
+ * Relation kinds with a table access method (rd_tableam). Although sequences
218
+ * use the heap table AM, they are enough of a special case in most uses that
219
+ * they are not included here.
220
+ */
221
+ #define RELKIND_HAS_TABLE_AM(relkind) \
222
+ ((relkind) == RELKIND_RELATION || \
223
+ (relkind) == RELKIND_TOASTVALUE || \
224
+ (relkind) == RELKIND_MATVIEW)
225
+
226
+ extern int errdetail_relkind_not_supported(char relkind);
197
227
 
198
228
  #endif /* EXPOSE_TO_CLIENT_CODE */
199
229
 
@@ -3,7 +3,7 @@
3
3
  * pg_class_d.h
4
4
  * Macro definitions for pg_class
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
@@ -20,6 +20,9 @@
20
20
 
21
21
  #define RelationRelationId 1259
22
22
  #define RelationRelation_Rowtype_Id 83
23
+ #define ClassOidIndexId 2662
24
+ #define ClassNameNspIndexId 2663
25
+ #define ClassTblspcRelfilenodeIndexId 3455
23
26
 
24
27
  #define Anum_pg_class_oid 1
25
28
  #define Anum_pg_class_relname 2
@@ -82,7 +85,7 @@
82
85
  /*
83
86
  * an explicitly chosen candidate key's columns are used as replica identity.
84
87
  * Note this will still be set if the index has been dropped; in that case it
85
- * has the same meaning as 'd'.
88
+ * has the same meaning as 'n'.
86
89
  */
87
90
  #define REPLICA_IDENTITY_INDEX 'i'
88
91
 
@@ -98,6 +101,32 @@
98
101
  (relkind) == RELKIND_TOASTVALUE || \
99
102
  (relkind) == RELKIND_MATVIEW)
100
103
 
104
+ #define RELKIND_HAS_PARTITIONS(relkind) \
105
+ ((relkind) == RELKIND_PARTITIONED_TABLE || \
106
+ (relkind) == RELKIND_PARTITIONED_INDEX)
107
+
108
+ /*
109
+ * Relation kinds that support tablespaces: All relation kinds with storage
110
+ * support tablespaces, except that we don't support moving sequences around
111
+ * into different tablespaces. Partitioned tables and indexes don't have
112
+ * physical storage, but they have a tablespace settings so that their
113
+ * children can inherit it.
114
+ */
115
+ #define RELKIND_HAS_TABLESPACE(relkind) \
116
+ ((RELKIND_HAS_STORAGE(relkind) || RELKIND_HAS_PARTITIONS(relkind)) \
117
+ && (relkind) != RELKIND_SEQUENCE)
118
+
119
+ /*
120
+ * Relation kinds with a table access method (rd_tableam). Although sequences
121
+ * use the heap table AM, they are enough of a special case in most uses that
122
+ * they are not included here.
123
+ */
124
+ #define RELKIND_HAS_TABLE_AM(relkind) \
125
+ ((relkind) == RELKIND_RELATION || \
126
+ (relkind) == RELKIND_TOASTVALUE || \
127
+ (relkind) == RELKIND_MATVIEW)
128
+
129
+ extern int errdetail_relkind_not_supported(char relkind);
101
130
 
102
131
 
103
132
  #endif /* PG_CLASS_D_H */
@@ -4,7 +4,7 @@
4
4
  * definition of the "collation" system catalog (pg_collation)
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_collation.h
@@ -30,16 +30,22 @@ CATALOG(pg_collation,3456,CollationRelationId)
30
30
  {
31
31
  Oid oid; /* oid */
32
32
  NameData collname; /* collation name */
33
- Oid collnamespace; /* OID of namespace containing collation */
34
- Oid collowner; /* owner of collation */
33
+
34
+ /* OID of namespace containing this collation */
35
+ Oid collnamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);
36
+
37
+ /* owner of collation */
38
+ Oid collowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
35
39
  char collprovider; /* see constants below */
36
40
  bool collisdeterministic BKI_DEFAULT(t);
37
41
  int32 collencoding; /* encoding for this collation; -1 = "all" */
38
- NameData collcollate; /* LC_COLLATE setting */
39
- NameData collctype; /* LC_CTYPE setting */
40
42
  #ifdef CATALOG_VARLEN /* variable-length fields start here */
41
- text collversion; /* provider-dependent version of collation
42
- * data */
43
+ text collcollate BKI_DEFAULT(_null_); /* LC_COLLATE setting */
44
+ text collctype BKI_DEFAULT(_null_); /* LC_CTYPE setting */
45
+ text colliculocale BKI_DEFAULT(_null_); /* ICU locale ID */
46
+ text collversion BKI_DEFAULT(_null_); /* provider-dependent
47
+ * version of collation
48
+ * data */
43
49
  #endif
44
50
  } FormData_pg_collation;
45
51
 
@@ -50,12 +56,31 @@ CATALOG(pg_collation,3456,CollationRelationId)
50
56
  */
51
57
  typedef FormData_pg_collation *Form_pg_collation;
52
58
 
59
+ DECLARE_TOAST(pg_collation, 6175, 6176);
60
+
61
+ DECLARE_UNIQUE_INDEX(pg_collation_name_enc_nsp_index, 3164, CollationNameEncNspIndexId, on pg_collation using btree(collname name_ops, collencoding int4_ops, collnamespace oid_ops));
62
+ DECLARE_UNIQUE_INDEX_PKEY(pg_collation_oid_index, 3085, CollationOidIndexId, on pg_collation using btree(oid oid_ops));
63
+
53
64
  #ifdef EXPOSE_TO_CLIENT_CODE
54
65
 
55
66
  #define COLLPROVIDER_DEFAULT 'd'
56
67
  #define COLLPROVIDER_ICU 'i'
57
68
  #define COLLPROVIDER_LIBC 'c'
58
69
 
70
+ static inline const char *
71
+ collprovider_name(char c)
72
+ {
73
+ switch (c)
74
+ {
75
+ case COLLPROVIDER_ICU:
76
+ return "icu";
77
+ case COLLPROVIDER_LIBC:
78
+ return "libc";
79
+ default:
80
+ return "???";
81
+ }
82
+ }
83
+
59
84
  #endif /* EXPOSE_TO_CLIENT_CODE */
60
85
 
61
86
 
@@ -65,9 +90,9 @@ extern Oid CollationCreate(const char *collname, Oid collnamespace,
65
90
  bool collisdeterministic,
66
91
  int32 collencoding,
67
92
  const char *collcollate, const char *collctype,
93
+ const char *colliculocale,
68
94
  const char *collversion,
69
95
  bool if_not_exists,
70
96
  bool quiet);
71
- extern void RemoveCollationById(Oid collationOid);
72
97
 
73
98
  #endif /* PG_COLLATION_H */
@@ -3,7 +3,7 @@
3
3
  * pg_collation_d.h
4
4
  * Macro definitions for pg_collation
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_COLLATION_D_H
20
20
 
21
21
  #define CollationRelationId 3456
22
+ #define CollationNameEncNspIndexId 3164
23
+ #define CollationOidIndexId 3085
22
24
 
23
25
  #define Anum_pg_collation_oid 1
24
26
  #define Anum_pg_collation_collname 2
@@ -29,15 +31,30 @@
29
31
  #define Anum_pg_collation_collencoding 7
30
32
  #define Anum_pg_collation_collcollate 8
31
33
  #define Anum_pg_collation_collctype 9
32
- #define Anum_pg_collation_collversion 10
34
+ #define Anum_pg_collation_colliculocale 10
35
+ #define Anum_pg_collation_collversion 11
33
36
 
34
- #define Natts_pg_collation 10
37
+ #define Natts_pg_collation 11
35
38
 
36
39
 
37
40
  #define COLLPROVIDER_DEFAULT 'd'
38
41
  #define COLLPROVIDER_ICU 'i'
39
42
  #define COLLPROVIDER_LIBC 'c'
40
43
 
44
+ static inline const char *
45
+ collprovider_name(char c)
46
+ {
47
+ switch (c)
48
+ {
49
+ case COLLPROVIDER_ICU:
50
+ return "icu";
51
+ case COLLPROVIDER_LIBC:
52
+ return "libc";
53
+ default:
54
+ return "???";
55
+ }
56
+ }
57
+
41
58
  #define DEFAULT_COLLATION_OID 100
42
59
  #define C_COLLATION_OID 950
43
60
  #define POSIX_COLLATION_OID 951