gitlab-pg_query 1.3.1 → 2.0.4

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 (480) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +217 -99
  3. data/README.md +92 -69
  4. data/Rakefile +85 -5
  5. data/ext/pg_query/extconf.rb +3 -40
  6. data/ext/pg_query/guc-file.c +0 -0
  7. data/ext/pg_query/include/access/amapi.h +246 -0
  8. data/ext/pg_query/include/access/attmap.h +52 -0
  9. data/ext/pg_query/include/access/attnum.h +64 -0
  10. data/ext/pg_query/include/access/clog.h +61 -0
  11. data/ext/pg_query/include/access/commit_ts.h +77 -0
  12. data/ext/pg_query/include/access/detoast.h +92 -0
  13. data/ext/pg_query/include/access/genam.h +228 -0
  14. data/ext/pg_query/include/access/gin.h +78 -0
  15. data/ext/pg_query/include/access/htup.h +89 -0
  16. data/ext/pg_query/include/access/htup_details.h +819 -0
  17. data/ext/pg_query/include/access/itup.h +161 -0
  18. data/ext/pg_query/include/access/parallel.h +82 -0
  19. data/ext/pg_query/include/access/printtup.h +35 -0
  20. data/ext/pg_query/include/access/relation.h +28 -0
  21. data/ext/pg_query/include/access/relscan.h +176 -0
  22. data/ext/pg_query/include/access/rmgr.h +35 -0
  23. data/ext/pg_query/include/access/rmgrlist.h +49 -0
  24. data/ext/pg_query/include/access/sdir.h +58 -0
  25. data/ext/pg_query/include/access/skey.h +151 -0
  26. data/ext/pg_query/include/access/stratnum.h +83 -0
  27. data/ext/pg_query/include/access/sysattr.h +29 -0
  28. data/ext/pg_query/include/access/table.h +27 -0
  29. data/ext/pg_query/include/access/tableam.h +1825 -0
  30. data/ext/pg_query/include/access/transam.h +265 -0
  31. data/ext/pg_query/include/access/tupconvert.h +51 -0
  32. data/ext/pg_query/include/access/tupdesc.h +154 -0
  33. data/ext/pg_query/include/access/tupmacs.h +247 -0
  34. data/ext/pg_query/include/access/twophase.h +61 -0
  35. data/ext/pg_query/include/access/xact.h +463 -0
  36. data/ext/pg_query/include/access/xlog.h +398 -0
  37. data/ext/pg_query/include/access/xlog_internal.h +330 -0
  38. data/ext/pg_query/include/access/xlogdefs.h +109 -0
  39. data/ext/pg_query/include/access/xloginsert.h +64 -0
  40. data/ext/pg_query/include/access/xlogreader.h +327 -0
  41. data/ext/pg_query/include/access/xlogrecord.h +227 -0
  42. data/ext/pg_query/include/bootstrap/bootstrap.h +62 -0
  43. data/ext/pg_query/include/c.h +1322 -0
  44. data/ext/pg_query/include/catalog/catalog.h +42 -0
  45. data/ext/pg_query/include/catalog/catversion.h +58 -0
  46. data/ext/pg_query/include/catalog/dependency.h +275 -0
  47. data/ext/pg_query/include/catalog/genbki.h +64 -0
  48. data/ext/pg_query/include/catalog/index.h +199 -0
  49. data/ext/pg_query/include/catalog/indexing.h +366 -0
  50. data/ext/pg_query/include/catalog/namespace.h +188 -0
  51. data/ext/pg_query/include/catalog/objectaccess.h +197 -0
  52. data/ext/pg_query/include/catalog/objectaddress.h +84 -0
  53. data/ext/pg_query/include/catalog/pg_aggregate.h +176 -0
  54. data/ext/pg_query/include/catalog/pg_aggregate_d.h +77 -0
  55. data/ext/pg_query/include/catalog/pg_am.h +60 -0
  56. data/ext/pg_query/include/catalog/pg_am_d.h +45 -0
  57. data/ext/pg_query/include/catalog/pg_attribute.h +204 -0
  58. data/ext/pg_query/include/catalog/pg_attribute_d.h +59 -0
  59. data/ext/pg_query/include/catalog/pg_authid.h +58 -0
  60. data/ext/pg_query/include/catalog/pg_authid_d.h +49 -0
  61. data/ext/pg_query/include/catalog/pg_class.h +200 -0
  62. data/ext/pg_query/include/catalog/pg_class_d.h +103 -0
  63. data/ext/pg_query/include/catalog/pg_collation.h +73 -0
  64. data/ext/pg_query/include/catalog/pg_collation_d.h +45 -0
  65. data/ext/pg_query/include/catalog/pg_constraint.h +247 -0
  66. data/ext/pg_query/include/catalog/pg_constraint_d.h +67 -0
  67. data/ext/pg_query/include/catalog/pg_control.h +250 -0
  68. data/ext/pg_query/include/catalog/pg_conversion.h +72 -0
  69. data/ext/pg_query/include/catalog/pg_conversion_d.h +35 -0
  70. data/ext/pg_query/include/catalog/pg_depend.h +73 -0
  71. data/ext/pg_query/include/catalog/pg_depend_d.h +34 -0
  72. data/ext/pg_query/include/catalog/pg_event_trigger.h +51 -0
  73. data/ext/pg_query/include/catalog/pg_event_trigger_d.h +34 -0
  74. data/ext/pg_query/include/catalog/pg_index.h +80 -0
  75. data/ext/pg_query/include/catalog/pg_index_d.h +56 -0
  76. data/ext/pg_query/include/catalog/pg_language.h +67 -0
  77. data/ext/pg_query/include/catalog/pg_language_d.h +39 -0
  78. data/ext/pg_query/include/catalog/pg_namespace.h +59 -0
  79. data/ext/pg_query/include/catalog/pg_namespace_d.h +34 -0
  80. data/ext/pg_query/include/catalog/pg_opclass.h +85 -0
  81. data/ext/pg_query/include/catalog/pg_opclass_d.h +49 -0
  82. data/ext/pg_query/include/catalog/pg_operator.h +102 -0
  83. data/ext/pg_query/include/catalog/pg_operator_d.h +106 -0
  84. data/ext/pg_query/include/catalog/pg_opfamily.h +60 -0
  85. data/ext/pg_query/include/catalog/pg_opfamily_d.h +47 -0
  86. data/ext/pg_query/include/catalog/pg_partitioned_table.h +63 -0
  87. data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +35 -0
  88. data/ext/pg_query/include/catalog/pg_proc.h +211 -0
  89. data/ext/pg_query/include/catalog/pg_proc_d.h +99 -0
  90. data/ext/pg_query/include/catalog/pg_publication.h +115 -0
  91. data/ext/pg_query/include/catalog/pg_publication_d.h +36 -0
  92. data/ext/pg_query/include/catalog/pg_replication_origin.h +57 -0
  93. data/ext/pg_query/include/catalog/pg_replication_origin_d.h +29 -0
  94. data/ext/pg_query/include/catalog/pg_statistic.h +275 -0
  95. data/ext/pg_query/include/catalog/pg_statistic_d.h +194 -0
  96. data/ext/pg_query/include/catalog/pg_statistic_ext.h +74 -0
  97. data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +40 -0
  98. data/ext/pg_query/include/catalog/pg_transform.h +45 -0
  99. data/ext/pg_query/include/catalog/pg_transform_d.h +32 -0
  100. data/ext/pg_query/include/catalog/pg_trigger.h +137 -0
  101. data/ext/pg_query/include/catalog/pg_trigger_d.h +106 -0
  102. data/ext/pg_query/include/catalog/pg_ts_config.h +50 -0
  103. data/ext/pg_query/include/catalog/pg_ts_config_d.h +32 -0
  104. data/ext/pg_query/include/catalog/pg_ts_dict.h +54 -0
  105. data/ext/pg_query/include/catalog/pg_ts_dict_d.h +33 -0
  106. data/ext/pg_query/include/catalog/pg_ts_parser.h +57 -0
  107. data/ext/pg_query/include/catalog/pg_ts_parser_d.h +35 -0
  108. data/ext/pg_query/include/catalog/pg_ts_template.h +48 -0
  109. data/ext/pg_query/include/catalog/pg_ts_template_d.h +32 -0
  110. data/ext/pg_query/include/catalog/pg_type.h +372 -0
  111. data/ext/pg_query/include/catalog/pg_type_d.h +285 -0
  112. data/ext/pg_query/include/catalog/storage.h +48 -0
  113. data/ext/pg_query/include/commands/async.h +54 -0
  114. data/ext/pg_query/include/commands/dbcommands.h +35 -0
  115. data/ext/pg_query/include/commands/defrem.h +173 -0
  116. data/ext/pg_query/include/commands/event_trigger.h +88 -0
  117. data/ext/pg_query/include/commands/explain.h +127 -0
  118. data/ext/pg_query/include/commands/prepare.h +61 -0
  119. data/ext/pg_query/include/commands/tablespace.h +67 -0
  120. data/ext/pg_query/include/commands/trigger.h +277 -0
  121. data/ext/pg_query/include/commands/user.h +37 -0
  122. data/ext/pg_query/include/commands/vacuum.h +293 -0
  123. data/ext/pg_query/include/commands/variable.h +38 -0
  124. data/ext/pg_query/include/common/file_perm.h +56 -0
  125. data/ext/pg_query/include/common/hashfn.h +104 -0
  126. data/ext/pg_query/include/common/ip.h +37 -0
  127. data/ext/pg_query/include/common/keywords.h +33 -0
  128. data/ext/pg_query/include/common/kwlookup.h +44 -0
  129. data/ext/pg_query/include/common/relpath.h +90 -0
  130. data/ext/pg_query/include/common/string.h +19 -0
  131. data/ext/pg_query/include/common/unicode_combining_table.h +196 -0
  132. data/ext/pg_query/include/datatype/timestamp.h +197 -0
  133. data/ext/pg_query/include/executor/execdesc.h +70 -0
  134. data/ext/pg_query/include/executor/executor.h +614 -0
  135. data/ext/pg_query/include/executor/functions.h +41 -0
  136. data/ext/pg_query/include/executor/instrument.h +101 -0
  137. data/ext/pg_query/include/executor/spi.h +175 -0
  138. data/ext/pg_query/include/executor/tablefunc.h +67 -0
  139. data/ext/pg_query/include/executor/tuptable.h +487 -0
  140. data/ext/pg_query/include/fmgr.h +775 -0
  141. data/ext/pg_query/include/funcapi.h +348 -0
  142. data/ext/pg_query/include/getaddrinfo.h +162 -0
  143. data/ext/pg_query/include/jit/jit.h +105 -0
  144. data/ext/pg_query/include/kwlist_d.h +1072 -0
  145. data/ext/pg_query/include/lib/ilist.h +727 -0
  146. data/ext/pg_query/include/lib/pairingheap.h +102 -0
  147. data/ext/pg_query/include/lib/simplehash.h +1059 -0
  148. data/ext/pg_query/include/lib/stringinfo.h +161 -0
  149. data/ext/pg_query/include/libpq/auth.h +29 -0
  150. data/ext/pg_query/include/libpq/crypt.h +46 -0
  151. data/ext/pg_query/include/libpq/hba.h +140 -0
  152. data/ext/pg_query/include/libpq/libpq-be.h +326 -0
  153. data/ext/pg_query/include/libpq/libpq.h +133 -0
  154. data/ext/pg_query/include/libpq/pqcomm.h +208 -0
  155. data/ext/pg_query/include/libpq/pqformat.h +210 -0
  156. data/ext/pg_query/include/libpq/pqsignal.h +42 -0
  157. data/ext/pg_query/include/mb/pg_wchar.h +672 -0
  158. data/ext/pg_query/include/mb/stringinfo_mb.h +24 -0
  159. data/ext/pg_query/include/miscadmin.h +476 -0
  160. data/ext/pg_query/include/nodes/bitmapset.h +122 -0
  161. data/ext/pg_query/include/nodes/execnodes.h +2520 -0
  162. data/ext/pg_query/include/nodes/extensible.h +160 -0
  163. data/ext/pg_query/include/nodes/lockoptions.h +61 -0
  164. data/ext/pg_query/include/nodes/makefuncs.h +108 -0
  165. data/ext/pg_query/include/nodes/memnodes.h +108 -0
  166. data/ext/pg_query/include/nodes/nodeFuncs.h +162 -0
  167. data/ext/pg_query/include/nodes/nodes.h +842 -0
  168. data/ext/pg_query/include/nodes/params.h +170 -0
  169. data/ext/pg_query/include/nodes/parsenodes.h +3579 -0
  170. data/ext/pg_query/include/nodes/pathnodes.h +2556 -0
  171. data/ext/pg_query/include/nodes/pg_list.h +605 -0
  172. data/ext/pg_query/include/nodes/plannodes.h +1251 -0
  173. data/ext/pg_query/include/nodes/primnodes.h +1541 -0
  174. data/ext/pg_query/include/nodes/print.h +34 -0
  175. data/ext/pg_query/include/nodes/tidbitmap.h +75 -0
  176. data/ext/pg_query/include/nodes/value.h +61 -0
  177. data/ext/pg_query/include/optimizer/cost.h +206 -0
  178. data/ext/pg_query/include/optimizer/geqo.h +88 -0
  179. data/ext/pg_query/include/optimizer/geqo_gene.h +45 -0
  180. data/ext/pg_query/include/optimizer/optimizer.h +199 -0
  181. data/ext/pg_query/include/optimizer/paths.h +249 -0
  182. data/ext/pg_query/include/optimizer/planmain.h +119 -0
  183. data/ext/pg_query/include/parser/analyze.h +49 -0
  184. data/ext/pg_query/include/parser/gram.h +1067 -0
  185. data/ext/pg_query/include/parser/gramparse.h +75 -0
  186. data/ext/pg_query/include/parser/kwlist.h +477 -0
  187. data/ext/pg_query/include/parser/parse_agg.h +68 -0
  188. data/ext/pg_query/include/parser/parse_clause.h +54 -0
  189. data/ext/pg_query/include/parser/parse_coerce.h +97 -0
  190. data/ext/pg_query/include/parser/parse_collate.h +27 -0
  191. data/ext/pg_query/include/parser/parse_expr.h +26 -0
  192. data/ext/pg_query/include/parser/parse_func.h +73 -0
  193. data/ext/pg_query/include/parser/parse_node.h +327 -0
  194. data/ext/pg_query/include/parser/parse_oper.h +67 -0
  195. data/ext/pg_query/include/parser/parse_relation.h +123 -0
  196. data/ext/pg_query/include/parser/parse_target.h +46 -0
  197. data/ext/pg_query/include/parser/parse_type.h +60 -0
  198. data/ext/pg_query/include/parser/parser.h +41 -0
  199. data/ext/pg_query/include/parser/parsetree.h +61 -0
  200. data/ext/pg_query/include/parser/scanner.h +152 -0
  201. data/ext/pg_query/include/parser/scansup.h +30 -0
  202. data/ext/pg_query/include/partitioning/partdefs.h +26 -0
  203. data/ext/pg_query/include/pg_config.h +989 -0
  204. data/ext/pg_query/include/pg_config_ext.h +8 -0
  205. data/ext/pg_query/include/pg_config_manual.h +350 -0
  206. data/ext/pg_query/include/pg_config_os.h +8 -0
  207. data/ext/pg_query/include/pg_getopt.h +56 -0
  208. data/ext/pg_query/include/pg_query.h +121 -0
  209. data/ext/pg_query/include/pg_query_enum_defs.c +2454 -0
  210. data/ext/pg_query/include/pg_query_fingerprint_conds.c +875 -0
  211. data/ext/pg_query/include/pg_query_fingerprint_defs.c +12413 -0
  212. data/ext/pg_query/include/pg_query_json_helper.c +61 -0
  213. data/ext/pg_query/include/pg_query_outfuncs_conds.c +686 -0
  214. data/ext/pg_query/include/pg_query_outfuncs_defs.c +2437 -0
  215. data/ext/pg_query/include/pg_query_readfuncs_conds.c +222 -0
  216. data/ext/pg_query/include/pg_query_readfuncs_defs.c +2878 -0
  217. data/ext/pg_query/include/pg_trace.h +17 -0
  218. data/ext/pg_query/include/pgstat.h +1487 -0
  219. data/ext/pg_query/include/pgtime.h +84 -0
  220. data/ext/pg_query/include/pl_gram.h +385 -0
  221. data/ext/pg_query/include/pl_reserved_kwlist.h +52 -0
  222. data/ext/pg_query/include/pl_reserved_kwlist_d.h +114 -0
  223. data/ext/pg_query/include/pl_unreserved_kwlist.h +112 -0
  224. data/ext/pg_query/include/pl_unreserved_kwlist_d.h +246 -0
  225. data/ext/pg_query/include/plerrcodes.h +990 -0
  226. data/ext/pg_query/include/plpgsql.h +1347 -0
  227. data/ext/pg_query/include/port.h +524 -0
  228. data/ext/pg_query/include/port/atomics.h +524 -0
  229. data/ext/pg_query/include/port/atomics/arch-arm.h +26 -0
  230. data/ext/pg_query/include/port/atomics/arch-ppc.h +254 -0
  231. data/ext/pg_query/include/port/atomics/arch-x86.h +252 -0
  232. data/ext/pg_query/include/port/atomics/fallback.h +170 -0
  233. data/ext/pg_query/include/port/atomics/generic-gcc.h +286 -0
  234. data/ext/pg_query/include/port/atomics/generic.h +401 -0
  235. data/ext/pg_query/include/port/pg_bitutils.h +226 -0
  236. data/ext/pg_query/include/port/pg_bswap.h +161 -0
  237. data/ext/pg_query/include/port/pg_crc32c.h +101 -0
  238. data/ext/pg_query/include/portability/instr_time.h +256 -0
  239. data/ext/pg_query/include/postgres.h +764 -0
  240. data/ext/pg_query/include/postgres_ext.h +74 -0
  241. data/ext/pg_query/include/postmaster/autovacuum.h +83 -0
  242. data/ext/pg_query/include/postmaster/bgworker.h +161 -0
  243. data/ext/pg_query/include/postmaster/bgworker_internals.h +64 -0
  244. data/ext/pg_query/include/postmaster/bgwriter.h +45 -0
  245. data/ext/pg_query/include/postmaster/fork_process.h +17 -0
  246. data/ext/pg_query/include/postmaster/interrupt.h +32 -0
  247. data/ext/pg_query/include/postmaster/pgarch.h +39 -0
  248. data/ext/pg_query/include/postmaster/postmaster.h +77 -0
  249. data/ext/pg_query/include/postmaster/syslogger.h +98 -0
  250. data/ext/pg_query/include/postmaster/walwriter.h +21 -0
  251. data/ext/pg_query/include/protobuf-c.h +1106 -0
  252. data/ext/pg_query/include/protobuf-c/protobuf-c.h +1106 -0
  253. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +10846 -0
  254. data/ext/pg_query/include/protobuf/pg_query.pb.h +124718 -0
  255. data/ext/pg_query/include/regex/regex.h +184 -0
  256. data/ext/pg_query/include/replication/logicallauncher.h +31 -0
  257. data/ext/pg_query/include/replication/logicalproto.h +110 -0
  258. data/ext/pg_query/include/replication/logicalworker.h +19 -0
  259. data/ext/pg_query/include/replication/origin.h +73 -0
  260. data/ext/pg_query/include/replication/reorderbuffer.h +467 -0
  261. data/ext/pg_query/include/replication/slot.h +219 -0
  262. data/ext/pg_query/include/replication/syncrep.h +115 -0
  263. data/ext/pg_query/include/replication/walreceiver.h +340 -0
  264. data/ext/pg_query/include/replication/walsender.h +74 -0
  265. data/ext/pg_query/include/rewrite/prs2lock.h +46 -0
  266. data/ext/pg_query/include/rewrite/rewriteHandler.h +40 -0
  267. data/ext/pg_query/include/rewrite/rewriteManip.h +87 -0
  268. data/ext/pg_query/include/rewrite/rewriteSupport.h +26 -0
  269. data/ext/pg_query/include/storage/backendid.h +37 -0
  270. data/ext/pg_query/include/storage/block.h +121 -0
  271. data/ext/pg_query/include/storage/buf.h +46 -0
  272. data/ext/pg_query/include/storage/bufmgr.h +292 -0
  273. data/ext/pg_query/include/storage/bufpage.h +459 -0
  274. data/ext/pg_query/include/storage/condition_variable.h +62 -0
  275. data/ext/pg_query/include/storage/dsm.h +61 -0
  276. data/ext/pg_query/include/storage/dsm_impl.h +75 -0
  277. data/ext/pg_query/include/storage/fd.h +168 -0
  278. data/ext/pg_query/include/storage/ipc.h +81 -0
  279. data/ext/pg_query/include/storage/item.h +19 -0
  280. data/ext/pg_query/include/storage/itemid.h +184 -0
  281. data/ext/pg_query/include/storage/itemptr.h +206 -0
  282. data/ext/pg_query/include/storage/large_object.h +100 -0
  283. data/ext/pg_query/include/storage/latch.h +190 -0
  284. data/ext/pg_query/include/storage/lmgr.h +114 -0
  285. data/ext/pg_query/include/storage/lock.h +612 -0
  286. data/ext/pg_query/include/storage/lockdefs.h +59 -0
  287. data/ext/pg_query/include/storage/lwlock.h +232 -0
  288. data/ext/pg_query/include/storage/lwlocknames.h +51 -0
  289. data/ext/pg_query/include/storage/off.h +57 -0
  290. data/ext/pg_query/include/storage/pg_sema.h +61 -0
  291. data/ext/pg_query/include/storage/pg_shmem.h +90 -0
  292. data/ext/pg_query/include/storage/pmsignal.h +94 -0
  293. data/ext/pg_query/include/storage/predicate.h +87 -0
  294. data/ext/pg_query/include/storage/proc.h +333 -0
  295. data/ext/pg_query/include/storage/proclist_types.h +51 -0
  296. data/ext/pg_query/include/storage/procsignal.h +75 -0
  297. data/ext/pg_query/include/storage/relfilenode.h +99 -0
  298. data/ext/pg_query/include/storage/s_lock.h +1047 -0
  299. data/ext/pg_query/include/storage/sharedfileset.h +45 -0
  300. data/ext/pg_query/include/storage/shm_mq.h +85 -0
  301. data/ext/pg_query/include/storage/shm_toc.h +58 -0
  302. data/ext/pg_query/include/storage/shmem.h +81 -0
  303. data/ext/pg_query/include/storage/sinval.h +153 -0
  304. data/ext/pg_query/include/storage/sinvaladt.h +43 -0
  305. data/ext/pg_query/include/storage/smgr.h +109 -0
  306. data/ext/pg_query/include/storage/spin.h +77 -0
  307. data/ext/pg_query/include/storage/standby.h +91 -0
  308. data/ext/pg_query/include/storage/standbydefs.h +74 -0
  309. data/ext/pg_query/include/storage/sync.h +62 -0
  310. data/ext/pg_query/include/tcop/cmdtag.h +58 -0
  311. data/ext/pg_query/include/tcop/cmdtaglist.h +217 -0
  312. data/ext/pg_query/include/tcop/deparse_utility.h +108 -0
  313. data/ext/pg_query/include/tcop/dest.h +149 -0
  314. data/ext/pg_query/include/tcop/fastpath.h +21 -0
  315. data/ext/pg_query/include/tcop/pquery.h +45 -0
  316. data/ext/pg_query/include/tcop/tcopprot.h +89 -0
  317. data/ext/pg_query/include/tcop/utility.h +108 -0
  318. data/ext/pg_query/include/tsearch/ts_cache.h +98 -0
  319. data/ext/pg_query/include/utils/acl.h +312 -0
  320. data/ext/pg_query/include/utils/aclchk_internal.h +45 -0
  321. data/ext/pg_query/include/utils/array.h +458 -0
  322. data/ext/pg_query/include/utils/builtins.h +127 -0
  323. data/ext/pg_query/include/utils/bytea.h +27 -0
  324. data/ext/pg_query/include/utils/catcache.h +231 -0
  325. data/ext/pg_query/include/utils/date.h +90 -0
  326. data/ext/pg_query/include/utils/datetime.h +343 -0
  327. data/ext/pg_query/include/utils/datum.h +68 -0
  328. data/ext/pg_query/include/utils/dsa.h +123 -0
  329. data/ext/pg_query/include/utils/dynahash.h +19 -0
  330. data/ext/pg_query/include/utils/elog.h +439 -0
  331. data/ext/pg_query/include/utils/errcodes.h +352 -0
  332. data/ext/pg_query/include/utils/expandeddatum.h +159 -0
  333. data/ext/pg_query/include/utils/expandedrecord.h +231 -0
  334. data/ext/pg_query/include/utils/float.h +356 -0
  335. data/ext/pg_query/include/utils/fmgroids.h +2657 -0
  336. data/ext/pg_query/include/utils/fmgrprotos.h +2646 -0
  337. data/ext/pg_query/include/utils/fmgrtab.h +48 -0
  338. data/ext/pg_query/include/utils/guc.h +443 -0
  339. data/ext/pg_query/include/utils/guc_tables.h +272 -0
  340. data/ext/pg_query/include/utils/hsearch.h +149 -0
  341. data/ext/pg_query/include/utils/inval.h +64 -0
  342. data/ext/pg_query/include/utils/lsyscache.h +197 -0
  343. data/ext/pg_query/include/utils/memdebug.h +82 -0
  344. data/ext/pg_query/include/utils/memutils.h +225 -0
  345. data/ext/pg_query/include/utils/numeric.h +76 -0
  346. data/ext/pg_query/include/utils/palloc.h +136 -0
  347. data/ext/pg_query/include/utils/partcache.h +102 -0
  348. data/ext/pg_query/include/utils/pg_locale.h +119 -0
  349. data/ext/pg_query/include/utils/pg_lsn.h +29 -0
  350. data/ext/pg_query/include/utils/pidfile.h +56 -0
  351. data/ext/pg_query/include/utils/plancache.h +235 -0
  352. data/ext/pg_query/include/utils/portal.h +241 -0
  353. data/ext/pg_query/include/utils/probes.h +114 -0
  354. data/ext/pg_query/include/utils/ps_status.h +25 -0
  355. data/ext/pg_query/include/utils/queryenvironment.h +74 -0
  356. data/ext/pg_query/include/utils/regproc.h +28 -0
  357. data/ext/pg_query/include/utils/rel.h +644 -0
  358. data/ext/pg_query/include/utils/relcache.h +151 -0
  359. data/ext/pg_query/include/utils/reltrigger.h +81 -0
  360. data/ext/pg_query/include/utils/resowner.h +86 -0
  361. data/ext/pg_query/include/utils/rls.h +50 -0
  362. data/ext/pg_query/include/utils/ruleutils.h +44 -0
  363. data/ext/pg_query/include/utils/sharedtuplestore.h +61 -0
  364. data/ext/pg_query/include/utils/snapmgr.h +158 -0
  365. data/ext/pg_query/include/utils/snapshot.h +206 -0
  366. data/ext/pg_query/include/utils/sortsupport.h +276 -0
  367. data/ext/pg_query/include/utils/syscache.h +219 -0
  368. data/ext/pg_query/include/utils/timeout.h +88 -0
  369. data/ext/pg_query/include/utils/timestamp.h +116 -0
  370. data/ext/pg_query/include/utils/tuplesort.h +277 -0
  371. data/ext/pg_query/include/utils/tuplestore.h +91 -0
  372. data/ext/pg_query/include/utils/typcache.h +202 -0
  373. data/ext/pg_query/include/utils/tzparser.h +39 -0
  374. data/ext/pg_query/include/utils/varlena.h +39 -0
  375. data/ext/pg_query/include/utils/xml.h +84 -0
  376. data/ext/pg_query/include/xxhash.h +5445 -0
  377. data/ext/pg_query/include/xxhash/xxhash.h +5445 -0
  378. data/ext/pg_query/pg_query.c +104 -0
  379. data/ext/pg_query/pg_query.pb-c.c +37628 -0
  380. data/ext/pg_query/pg_query_deparse.c +9959 -0
  381. data/ext/pg_query/pg_query_fingerprint.c +295 -0
  382. data/ext/pg_query/pg_query_fingerprint.h +8 -0
  383. data/ext/pg_query/pg_query_internal.h +24 -0
  384. data/ext/pg_query/pg_query_json_plpgsql.c +738 -0
  385. data/ext/pg_query/pg_query_json_plpgsql.h +9 -0
  386. data/ext/pg_query/pg_query_normalize.c +439 -0
  387. data/ext/pg_query/pg_query_outfuncs.h +10 -0
  388. data/ext/pg_query/pg_query_outfuncs_json.c +297 -0
  389. data/ext/pg_query/pg_query_outfuncs_protobuf.c +237 -0
  390. data/ext/pg_query/pg_query_parse.c +148 -0
  391. data/ext/pg_query/pg_query_parse_plpgsql.c +460 -0
  392. data/ext/pg_query/pg_query_readfuncs.h +11 -0
  393. data/ext/pg_query/pg_query_readfuncs_protobuf.c +142 -0
  394. data/ext/pg_query/pg_query_ruby.c +108 -12
  395. data/ext/pg_query/pg_query_scan.c +173 -0
  396. data/ext/pg_query/pg_query_split.c +221 -0
  397. data/ext/pg_query/protobuf-c.c +3660 -0
  398. data/ext/pg_query/src_backend_catalog_namespace.c +1051 -0
  399. data/ext/pg_query/src_backend_catalog_pg_proc.c +142 -0
  400. data/ext/pg_query/src_backend_commands_define.c +117 -0
  401. data/ext/pg_query/src_backend_libpq_pqcomm.c +651 -0
  402. data/ext/pg_query/src_backend_nodes_bitmapset.c +513 -0
  403. data/ext/pg_query/src_backend_nodes_copyfuncs.c +6013 -0
  404. data/ext/pg_query/src_backend_nodes_equalfuncs.c +4003 -0
  405. data/ext/pg_query/src_backend_nodes_extensible.c +99 -0
  406. data/ext/pg_query/src_backend_nodes_list.c +922 -0
  407. data/ext/pg_query/src_backend_nodes_makefuncs.c +417 -0
  408. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +1363 -0
  409. data/ext/pg_query/src_backend_nodes_value.c +84 -0
  410. data/ext/pg_query/src_backend_parser_gram.c +47456 -0
  411. data/ext/pg_query/src_backend_parser_parse_expr.c +313 -0
  412. data/ext/pg_query/src_backend_parser_parser.c +497 -0
  413. data/ext/pg_query/src_backend_parser_scan.c +7091 -0
  414. data/ext/pg_query/src_backend_parser_scansup.c +160 -0
  415. data/ext/pg_query/src_backend_postmaster_postmaster.c +2230 -0
  416. data/ext/pg_query/src_backend_storage_ipc_ipc.c +192 -0
  417. data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +370 -0
  418. data/ext/pg_query/src_backend_tcop_postgres.c +776 -0
  419. data/ext/pg_query/src_backend_utils_adt_datum.c +326 -0
  420. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +98 -0
  421. data/ext/pg_query/src_backend_utils_adt_format_type.c +136 -0
  422. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +1683 -0
  423. data/ext/pg_query/src_backend_utils_error_assert.c +74 -0
  424. data/ext/pg_query/src_backend_utils_error_elog.c +1748 -0
  425. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +570 -0
  426. data/ext/pg_query/src_backend_utils_hash_dynahash.c +1086 -0
  427. data/ext/pg_query/src_backend_utils_init_globals.c +168 -0
  428. data/ext/pg_query/src_backend_utils_mb_mbutils.c +839 -0
  429. data/ext/pg_query/src_backend_utils_misc_guc.c +1831 -0
  430. data/ext/pg_query/src_backend_utils_mmgr_aset.c +1560 -0
  431. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +1006 -0
  432. data/ext/pg_query/src_common_encnames.c +158 -0
  433. data/ext/pg_query/src_common_keywords.c +39 -0
  434. data/ext/pg_query/src_common_kwlist_d.h +1081 -0
  435. data/ext/pg_query/src_common_kwlookup.c +91 -0
  436. data/ext/pg_query/src_common_psprintf.c +158 -0
  437. data/ext/pg_query/src_common_string.c +86 -0
  438. data/ext/pg_query/src_common_stringinfo.c +336 -0
  439. data/ext/pg_query/src_common_wchar.c +1651 -0
  440. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +1133 -0
  441. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +877 -0
  442. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +6533 -0
  443. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +107 -0
  444. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +123 -0
  445. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +671 -0
  446. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +255 -0
  447. data/ext/pg_query/src_port_erand48.c +127 -0
  448. data/ext/pg_query/src_port_pg_bitutils.c +246 -0
  449. data/ext/pg_query/src_port_pgsleep.c +69 -0
  450. data/ext/pg_query/src_port_pgstrcasecmp.c +83 -0
  451. data/ext/pg_query/src_port_qsort.c +240 -0
  452. data/ext/pg_query/src_port_random.c +31 -0
  453. data/ext/pg_query/src_port_snprintf.c +1449 -0
  454. data/ext/pg_query/src_port_strerror.c +324 -0
  455. data/ext/pg_query/src_port_strnlen.c +39 -0
  456. data/ext/pg_query/xxhash.c +43 -0
  457. data/lib/pg_query.rb +7 -4
  458. data/lib/pg_query/constants.rb +21 -0
  459. data/lib/pg_query/deparse.rb +15 -1581
  460. data/lib/pg_query/filter_columns.rb +88 -85
  461. data/lib/pg_query/fingerprint.rb +122 -87
  462. data/lib/pg_query/json_field_names.rb +1402 -0
  463. data/lib/pg_query/node.rb +31 -0
  464. data/lib/pg_query/param_refs.rb +42 -37
  465. data/lib/pg_query/parse.rb +220 -203
  466. data/lib/pg_query/parse_error.rb +1 -1
  467. data/lib/pg_query/pg_query_pb.rb +3211 -0
  468. data/lib/pg_query/scan.rb +23 -0
  469. data/lib/pg_query/treewalker.rb +24 -40
  470. data/lib/pg_query/truncate.rb +71 -42
  471. data/lib/pg_query/version.rb +2 -2
  472. metadata +472 -11
  473. data/ext/pg_query/pg_query_ruby.h +0 -10
  474. data/lib/pg_query/deep_dup.rb +0 -16
  475. data/lib/pg_query/deparse/alter_table.rb +0 -42
  476. data/lib/pg_query/deparse/interval.rb +0 -105
  477. data/lib/pg_query/deparse/keywords.rb +0 -159
  478. data/lib/pg_query/deparse/rename.rb +0 -41
  479. data/lib/pg_query/legacy_parsetree.rb +0 -109
  480. data/lib/pg_query/node_types.rb +0 -296
@@ -0,0 +1,42 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * catalog.h
4
+ * prototypes for functions in backend/catalog/catalog.c
5
+ *
6
+ *
7
+ * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
8
+ * Portions Copyright (c) 1994, Regents of the University of California
9
+ *
10
+ * src/include/catalog/catalog.h
11
+ *
12
+ *-------------------------------------------------------------------------
13
+ */
14
+ #ifndef CATALOG_H
15
+ #define CATALOG_H
16
+
17
+ #include "catalog/pg_class.h"
18
+ #include "utils/relcache.h"
19
+
20
+
21
+ extern bool IsSystemRelation(Relation relation);
22
+ extern bool IsToastRelation(Relation relation);
23
+ extern bool IsCatalogRelation(Relation relation);
24
+
25
+ extern bool IsSystemClass(Oid relid, Form_pg_class reltuple);
26
+ extern bool IsToastClass(Form_pg_class reltuple);
27
+
28
+ extern bool IsCatalogRelationOid(Oid relid);
29
+
30
+ extern bool IsCatalogNamespace(Oid namespaceId);
31
+ extern bool IsToastNamespace(Oid namespaceId);
32
+
33
+ extern bool IsReservedName(const char *name);
34
+
35
+ extern bool IsSharedRelation(Oid relationId);
36
+
37
+ extern Oid GetNewOidWithIndex(Relation relation, Oid indexId,
38
+ AttrNumber oidcolumn);
39
+ extern Oid GetNewRelFileNode(Oid reltablespace, Relation pg_class,
40
+ char relpersistence);
41
+
42
+ #endif /* CATALOG_H */
@@ -0,0 +1,58 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * catversion.h
4
+ * "Catalog version number" for PostgreSQL.
5
+ *
6
+ * The catalog version number is used to flag incompatible changes in
7
+ * the PostgreSQL system catalogs. Whenever anyone changes the format of
8
+ * a system catalog relation, or adds, deletes, or modifies standard
9
+ * catalog entries in such a way that an updated backend wouldn't work
10
+ * with an old database (or vice versa), the catalog version number
11
+ * should be changed. The version number stored in pg_control by initdb
12
+ * is checked against the version number compiled into the backend at
13
+ * startup time, so that a backend can refuse to run in an incompatible
14
+ * database.
15
+ *
16
+ * The point of this feature is to provide a finer grain of compatibility
17
+ * checking than is possible from looking at the major version number
18
+ * stored in PG_VERSION. It shouldn't matter to end users, but during
19
+ * development cycles we usually make quite a few incompatible changes
20
+ * to the contents of the system catalogs, and we don't want to bump the
21
+ * major version number for each one. What we can do instead is bump
22
+ * this internal version number. This should save some grief for
23
+ * developers who might otherwise waste time tracking down "bugs" that
24
+ * are really just code-vs-database incompatibilities.
25
+ *
26
+ * The rule for developers is: if you commit a change that requires
27
+ * an initdb, you should update the catalog version number (as well as
28
+ * notifying the pgsql-hackers mailing list, which has been the
29
+ * informal practice for a long time).
30
+ *
31
+ * The catalog version number is placed here since modifying files in
32
+ * include/catalog is the most common kind of initdb-forcing change.
33
+ * But it could be used to protect any kind of incompatible change in
34
+ * database contents or layout, such as altering tuple headers.
35
+ *
36
+ *
37
+ * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
38
+ * Portions Copyright (c) 1994, Regents of the University of California
39
+ *
40
+ * src/include/catalog/catversion.h
41
+ *
42
+ *-------------------------------------------------------------------------
43
+ */
44
+ #ifndef CATVERSION_H
45
+ #define CATVERSION_H
46
+
47
+ /*
48
+ * We could use anything we wanted for version numbers, but I recommend
49
+ * following the "YYYYMMDDN" style often used for DNS zone serial numbers.
50
+ * YYYYMMDD are the date of the change, and N is the number of the change
51
+ * on that day. (Hopefully we'll never commit ten independent sets of
52
+ * catalog changes on the same day...)
53
+ */
54
+
55
+ /* yyyymmddN */
56
+ #define CATALOG_VERSION_NO 202007201
57
+
58
+ #endif
@@ -0,0 +1,275 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * dependency.h
4
+ * Routines to support inter-object dependencies.
5
+ *
6
+ *
7
+ * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
8
+ * Portions Copyright (c) 1994, Regents of the University of California
9
+ *
10
+ * src/include/catalog/dependency.h
11
+ *
12
+ *-------------------------------------------------------------------------
13
+ */
14
+ #ifndef DEPENDENCY_H
15
+ #define DEPENDENCY_H
16
+
17
+ #include "catalog/objectaddress.h"
18
+
19
+
20
+ /*
21
+ * Precise semantics of a dependency relationship are specified by the
22
+ * DependencyType code (which is stored in a "char" field in pg_depend,
23
+ * so we assign ASCII-code values to the enumeration members).
24
+ *
25
+ * In all cases, a dependency relationship indicates that the referenced
26
+ * object may not be dropped without also dropping the dependent object.
27
+ * However, there are several subflavors; see the description of pg_depend
28
+ * in catalogs.sgml for details.
29
+ */
30
+
31
+ typedef enum DependencyType
32
+ {
33
+ DEPENDENCY_NORMAL = 'n',
34
+ DEPENDENCY_AUTO = 'a',
35
+ DEPENDENCY_INTERNAL = 'i',
36
+ DEPENDENCY_PARTITION_PRI = 'P',
37
+ DEPENDENCY_PARTITION_SEC = 'S',
38
+ DEPENDENCY_EXTENSION = 'e',
39
+ DEPENDENCY_AUTO_EXTENSION = 'x',
40
+ DEPENDENCY_PIN = 'p'
41
+ } DependencyType;
42
+
43
+ /*
44
+ * There is also a SharedDependencyType enum type that determines the exact
45
+ * semantics of an entry in pg_shdepend. Just like regular dependency entries,
46
+ * any pg_shdepend entry means that the referenced object cannot be dropped
47
+ * unless the dependent object is dropped at the same time. There are some
48
+ * additional rules however:
49
+ *
50
+ * (a) For a SHARED_DEPENDENCY_PIN entry, there is no dependent object --
51
+ * rather, the referenced object is an essential part of the system. This
52
+ * applies to the initdb-created superuser. Entries of this type are only
53
+ * created by initdb; objects in this category don't need further pg_shdepend
54
+ * entries if more objects come to depend on them.
55
+ *
56
+ * (b) a SHARED_DEPENDENCY_OWNER entry means that the referenced object is
57
+ * the role owning the dependent object. The referenced object must be
58
+ * a pg_authid entry.
59
+ *
60
+ * (c) a SHARED_DEPENDENCY_ACL entry means that the referenced object is
61
+ * a role mentioned in the ACL field of the dependent object. The referenced
62
+ * object must be a pg_authid entry. (SHARED_DEPENDENCY_ACL entries are not
63
+ * created for the owner of an object; hence two objects may be linked by
64
+ * one or the other, but not both, of these dependency types.)
65
+ *
66
+ * (d) a SHARED_DEPENDENCY_POLICY entry means that the referenced object is
67
+ * a role mentioned in a policy object. The referenced object must be a
68
+ * pg_authid entry.
69
+ *
70
+ * (e) a SHARED_DEPENDENCY_TABLESPACE entry means that the referenced
71
+ * object is a tablespace mentioned in a relation without storage. The
72
+ * referenced object must be a pg_tablespace entry. (Relations that have
73
+ * storage don't need this: they are protected by the existence of a physical
74
+ * file in the tablespace.)
75
+ *
76
+ * SHARED_DEPENDENCY_INVALID is a value used as a parameter in internal
77
+ * routines, and is not valid in the catalog itself.
78
+ */
79
+ typedef enum SharedDependencyType
80
+ {
81
+ SHARED_DEPENDENCY_PIN = 'p',
82
+ SHARED_DEPENDENCY_OWNER = 'o',
83
+ SHARED_DEPENDENCY_ACL = 'a',
84
+ SHARED_DEPENDENCY_POLICY = 'r',
85
+ SHARED_DEPENDENCY_TABLESPACE = 't',
86
+ SHARED_DEPENDENCY_INVALID = 0
87
+ } SharedDependencyType;
88
+
89
+ /* expansible list of ObjectAddresses (private in dependency.c) */
90
+ typedef struct ObjectAddresses ObjectAddresses;
91
+
92
+ /*
93
+ * This enum covers all system catalogs whose OIDs can appear in
94
+ * pg_depend.classId or pg_shdepend.classId. Keep object_classes[] in sync.
95
+ */
96
+ typedef enum ObjectClass
97
+ {
98
+ OCLASS_CLASS, /* pg_class */
99
+ OCLASS_PROC, /* pg_proc */
100
+ OCLASS_TYPE, /* pg_type */
101
+ OCLASS_CAST, /* pg_cast */
102
+ OCLASS_COLLATION, /* pg_collation */
103
+ OCLASS_CONSTRAINT, /* pg_constraint */
104
+ OCLASS_CONVERSION, /* pg_conversion */
105
+ OCLASS_DEFAULT, /* pg_attrdef */
106
+ OCLASS_LANGUAGE, /* pg_language */
107
+ OCLASS_LARGEOBJECT, /* pg_largeobject */
108
+ OCLASS_OPERATOR, /* pg_operator */
109
+ OCLASS_OPCLASS, /* pg_opclass */
110
+ OCLASS_OPFAMILY, /* pg_opfamily */
111
+ OCLASS_AM, /* pg_am */
112
+ OCLASS_AMOP, /* pg_amop */
113
+ OCLASS_AMPROC, /* pg_amproc */
114
+ OCLASS_REWRITE, /* pg_rewrite */
115
+ OCLASS_TRIGGER, /* pg_trigger */
116
+ OCLASS_SCHEMA, /* pg_namespace */
117
+ OCLASS_STATISTIC_EXT, /* pg_statistic_ext */
118
+ OCLASS_TSPARSER, /* pg_ts_parser */
119
+ OCLASS_TSDICT, /* pg_ts_dict */
120
+ OCLASS_TSTEMPLATE, /* pg_ts_template */
121
+ OCLASS_TSCONFIG, /* pg_ts_config */
122
+ OCLASS_ROLE, /* pg_authid */
123
+ OCLASS_DATABASE, /* pg_database */
124
+ OCLASS_TBLSPACE, /* pg_tablespace */
125
+ OCLASS_FDW, /* pg_foreign_data_wrapper */
126
+ OCLASS_FOREIGN_SERVER, /* pg_foreign_server */
127
+ OCLASS_USER_MAPPING, /* pg_user_mapping */
128
+ OCLASS_DEFACL, /* pg_default_acl */
129
+ OCLASS_EXTENSION, /* pg_extension */
130
+ OCLASS_EVENT_TRIGGER, /* pg_event_trigger */
131
+ OCLASS_POLICY, /* pg_policy */
132
+ OCLASS_PUBLICATION, /* pg_publication */
133
+ OCLASS_PUBLICATION_REL, /* pg_publication_rel */
134
+ OCLASS_SUBSCRIPTION, /* pg_subscription */
135
+ OCLASS_TRANSFORM /* pg_transform */
136
+ } ObjectClass;
137
+
138
+ #define LAST_OCLASS OCLASS_TRANSFORM
139
+
140
+ /* flag bits for performDeletion/performMultipleDeletions: */
141
+ #define PERFORM_DELETION_INTERNAL 0x0001 /* internal action */
142
+ #define PERFORM_DELETION_CONCURRENTLY 0x0002 /* concurrent drop */
143
+ #define PERFORM_DELETION_QUIETLY 0x0004 /* suppress notices */
144
+ #define PERFORM_DELETION_SKIP_ORIGINAL 0x0008 /* keep original obj */
145
+ #define PERFORM_DELETION_SKIP_EXTENSIONS 0x0010 /* keep extensions */
146
+ #define PERFORM_DELETION_CONCURRENT_LOCK 0x0020 /* normal drop with
147
+ * concurrent lock mode */
148
+
149
+
150
+ /* in dependency.c */
151
+
152
+ extern void AcquireDeletionLock(const ObjectAddress *object, int flags);
153
+
154
+ extern void ReleaseDeletionLock(const ObjectAddress *object);
155
+
156
+ extern void performDeletion(const ObjectAddress *object,
157
+ DropBehavior behavior, int flags);
158
+
159
+ extern void performMultipleDeletions(const ObjectAddresses *objects,
160
+ DropBehavior behavior, int flags);
161
+
162
+ extern void recordDependencyOnExpr(const ObjectAddress *depender,
163
+ Node *expr, List *rtable,
164
+ DependencyType behavior);
165
+
166
+ extern void recordDependencyOnSingleRelExpr(const ObjectAddress *depender,
167
+ Node *expr, Oid relId,
168
+ DependencyType behavior,
169
+ DependencyType self_behavior,
170
+ bool reverse_self);
171
+
172
+ extern ObjectClass getObjectClass(const ObjectAddress *object);
173
+
174
+ extern ObjectAddresses *new_object_addresses(void);
175
+
176
+ extern void add_exact_object_address(const ObjectAddress *object,
177
+ ObjectAddresses *addrs);
178
+
179
+ extern bool object_address_present(const ObjectAddress *object,
180
+ const ObjectAddresses *addrs);
181
+
182
+ extern void record_object_address_dependencies(const ObjectAddress *depender,
183
+ ObjectAddresses *referenced,
184
+ DependencyType behavior);
185
+
186
+ extern void sort_object_addresses(ObjectAddresses *addrs);
187
+
188
+ extern void free_object_addresses(ObjectAddresses *addrs);
189
+
190
+ /* in pg_depend.c */
191
+
192
+ extern void recordDependencyOn(const ObjectAddress *depender,
193
+ const ObjectAddress *referenced,
194
+ DependencyType behavior);
195
+
196
+ extern void recordMultipleDependencies(const ObjectAddress *depender,
197
+ const ObjectAddress *referenced,
198
+ int nreferenced,
199
+ DependencyType behavior);
200
+
201
+ extern void recordDependencyOnCurrentExtension(const ObjectAddress *object,
202
+ bool isReplace);
203
+
204
+ extern long deleteDependencyRecordsFor(Oid classId, Oid objectId,
205
+ bool skipExtensionDeps);
206
+
207
+ extern long deleteDependencyRecordsForClass(Oid classId, Oid objectId,
208
+ Oid refclassId, char deptype);
209
+
210
+ extern long deleteDependencyRecordsForSpecific(Oid classId, Oid objectId,
211
+ char deptype,
212
+ Oid refclassId, Oid refobjectId);
213
+
214
+ extern long changeDependencyFor(Oid classId, Oid objectId,
215
+ Oid refClassId, Oid oldRefObjectId,
216
+ Oid newRefObjectId);
217
+
218
+ extern long changeDependenciesOf(Oid classId, Oid oldObjectId,
219
+ Oid newObjectId);
220
+
221
+ extern long changeDependenciesOn(Oid refClassId, Oid oldRefObjectId,
222
+ Oid newRefObjectId);
223
+
224
+ extern Oid getExtensionOfObject(Oid classId, Oid objectId);
225
+ extern List *getAutoExtensionsOfObject(Oid classId, Oid objectId);
226
+
227
+ extern bool sequenceIsOwned(Oid seqId, char deptype, Oid *tableId, int32 *colId);
228
+ extern List *getOwnedSequences(Oid relid);
229
+ extern Oid getIdentitySequence(Oid relid, AttrNumber attnum, bool missing_ok);
230
+
231
+ extern Oid get_constraint_index(Oid constraintId);
232
+
233
+ extern Oid get_index_constraint(Oid indexId);
234
+
235
+ extern List *get_index_ref_constraints(Oid indexId);
236
+
237
+ /* in pg_shdepend.c */
238
+
239
+ extern void recordSharedDependencyOn(ObjectAddress *depender,
240
+ ObjectAddress *referenced,
241
+ SharedDependencyType deptype);
242
+
243
+ extern void deleteSharedDependencyRecordsFor(Oid classId, Oid objectId,
244
+ int32 objectSubId);
245
+
246
+ extern void recordDependencyOnOwner(Oid classId, Oid objectId, Oid owner);
247
+
248
+ extern void changeDependencyOnOwner(Oid classId, Oid objectId,
249
+ Oid newOwnerId);
250
+
251
+ extern void recordDependencyOnTablespace(Oid classId, Oid objectId,
252
+ Oid tablespace);
253
+
254
+ extern void changeDependencyOnTablespace(Oid classId, Oid objectId,
255
+ Oid newTablespaceId);
256
+
257
+ extern void updateAclDependencies(Oid classId, Oid objectId, int32 objectSubId,
258
+ Oid ownerId,
259
+ int noldmembers, Oid *oldmembers,
260
+ int nnewmembers, Oid *newmembers);
261
+
262
+ extern bool checkSharedDependencies(Oid classId, Oid objectId,
263
+ char **detail_msg, char **detail_log_msg);
264
+
265
+ extern void shdepLockAndCheckObject(Oid classId, Oid objectId);
266
+
267
+ extern void copyTemplateDependencies(Oid templateDbId, Oid newDbId);
268
+
269
+ extern void dropDatabaseDependencies(Oid databaseId);
270
+
271
+ extern void shdepDropOwned(List *relids, DropBehavior behavior);
272
+
273
+ extern void shdepReassignOwned(List *relids, Oid newrole);
274
+
275
+ #endif /* DEPENDENCY_H */
@@ -0,0 +1,64 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * genbki.h
4
+ * Required include file for all POSTGRES catalog header files
5
+ *
6
+ * genbki.h defines CATALOG(), BKI_BOOTSTRAP and related macros
7
+ * so that the catalog header files can be read by the C compiler.
8
+ * (These same words are recognized by genbki.pl to build the BKI
9
+ * bootstrap file from these header files.)
10
+ *
11
+ *
12
+ * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
13
+ * Portions Copyright (c) 1994, Regents of the University of California
14
+ *
15
+ * src/include/catalog/genbki.h
16
+ *
17
+ *-------------------------------------------------------------------------
18
+ */
19
+ #ifndef GENBKI_H
20
+ #define GENBKI_H
21
+
22
+ /* Introduces a catalog's structure definition */
23
+ #define CATALOG(name,oid,oidmacro) typedef struct CppConcat(FormData_,name)
24
+
25
+ /* Options that may appear after CATALOG (on the same line) */
26
+ #define BKI_BOOTSTRAP
27
+ #define BKI_SHARED_RELATION
28
+ #define BKI_ROWTYPE_OID(oid,oidmacro)
29
+ #define BKI_SCHEMA_MACRO
30
+
31
+ /* Options that may appear after an attribute (on the same line) */
32
+ #define BKI_FORCE_NULL
33
+ #define BKI_FORCE_NOT_NULL
34
+ /* Specifies a default value for a catalog field */
35
+ #define BKI_DEFAULT(value)
36
+ /* Specifies a default value for auto-generated array types */
37
+ #define BKI_ARRAY_DEFAULT(value)
38
+ /*
39
+ * Indicates how to perform name lookups, typically for an OID or
40
+ * OID-array field
41
+ */
42
+ #define BKI_LOOKUP(catalog)
43
+
44
+ /* The following are never defined; they are here only for documentation. */
45
+
46
+ /*
47
+ * Variable-length catalog fields (except possibly the first not nullable one)
48
+ * should not be visible in C structures, so they are made invisible by #ifdefs
49
+ * of an undefined symbol. See also MARKNOTNULL in bootstrap.c for how this is
50
+ * handled.
51
+ */
52
+ #undef CATALOG_VARLEN
53
+
54
+ /*
55
+ * There is code in some catalog headers that needs to be visible to clients,
56
+ * but we don't want clients to include the full header because of safety
57
+ * issues with other code in the header. To handle that, surround code that
58
+ * should be visible to clients with "#ifdef EXPOSE_TO_CLIENT_CODE". That
59
+ * instructs genbki.pl to copy the section when generating the corresponding
60
+ * "_d" header, which can be included by both client and backend code.
61
+ */
62
+ #undef EXPOSE_TO_CLIENT_CODE
63
+
64
+ #endif /* GENBKI_H */
@@ -0,0 +1,199 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * index.h
4
+ * prototypes for catalog/index.c.
5
+ *
6
+ *
7
+ * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
8
+ * Portions Copyright (c) 1994, Regents of the University of California
9
+ *
10
+ * src/include/catalog/index.h
11
+ *
12
+ *-------------------------------------------------------------------------
13
+ */
14
+ #ifndef INDEX_H
15
+ #define INDEX_H
16
+
17
+ #include "catalog/objectaddress.h"
18
+ #include "nodes/execnodes.h"
19
+
20
+
21
+ #define DEFAULT_INDEX_TYPE "btree"
22
+
23
+ /* Action code for index_set_state_flags */
24
+ typedef enum
25
+ {
26
+ INDEX_CREATE_SET_READY,
27
+ INDEX_CREATE_SET_VALID,
28
+ INDEX_DROP_CLEAR_VALID,
29
+ INDEX_DROP_SET_DEAD
30
+ } IndexStateFlagsAction;
31
+
32
+ /* state info for validate_index bulkdelete callback */
33
+ typedef struct ValidateIndexState
34
+ {
35
+ Tuplesortstate *tuplesort; /* for sorting the index TIDs */
36
+ /* statistics (for debug purposes only): */
37
+ double htups,
38
+ itups,
39
+ tups_inserted;
40
+ } ValidateIndexState;
41
+
42
+ extern void index_check_primary_key(Relation heapRel,
43
+ IndexInfo *indexInfo,
44
+ bool is_alter_table,
45
+ IndexStmt *stmt);
46
+
47
+ #define INDEX_CREATE_IS_PRIMARY (1 << 0)
48
+ #define INDEX_CREATE_ADD_CONSTRAINT (1 << 1)
49
+ #define INDEX_CREATE_SKIP_BUILD (1 << 2)
50
+ #define INDEX_CREATE_CONCURRENT (1 << 3)
51
+ #define INDEX_CREATE_IF_NOT_EXISTS (1 << 4)
52
+ #define INDEX_CREATE_PARTITIONED (1 << 5)
53
+ #define INDEX_CREATE_INVALID (1 << 6)
54
+
55
+ extern Oid index_create(Relation heapRelation,
56
+ const char *indexRelationName,
57
+ Oid indexRelationId,
58
+ Oid parentIndexRelid,
59
+ Oid parentConstraintId,
60
+ Oid relFileNode,
61
+ IndexInfo *indexInfo,
62
+ List *indexColNames,
63
+ Oid accessMethodObjectId,
64
+ Oid tableSpaceId,
65
+ Oid *collationObjectId,
66
+ Oid *classObjectId,
67
+ int16 *coloptions,
68
+ Datum reloptions,
69
+ bits16 flags,
70
+ bits16 constr_flags,
71
+ bool allow_system_table_mods,
72
+ bool is_internal,
73
+ Oid *constraintId);
74
+
75
+ #define INDEX_CONSTR_CREATE_MARK_AS_PRIMARY (1 << 0)
76
+ #define INDEX_CONSTR_CREATE_DEFERRABLE (1 << 1)
77
+ #define INDEX_CONSTR_CREATE_INIT_DEFERRED (1 << 2)
78
+ #define INDEX_CONSTR_CREATE_UPDATE_INDEX (1 << 3)
79
+ #define INDEX_CONSTR_CREATE_REMOVE_OLD_DEPS (1 << 4)
80
+
81
+ extern Oid index_concurrently_create_copy(Relation heapRelation,
82
+ Oid oldIndexId,
83
+ const char *newName);
84
+
85
+ extern void index_concurrently_build(Oid heapRelationId,
86
+ Oid indexRelationId);
87
+
88
+ extern void index_concurrently_swap(Oid newIndexId,
89
+ Oid oldIndexId,
90
+ const char *oldName);
91
+
92
+ extern void index_concurrently_set_dead(Oid heapId,
93
+ Oid indexId);
94
+
95
+ extern ObjectAddress index_constraint_create(Relation heapRelation,
96
+ Oid indexRelationId,
97
+ Oid parentConstraintId,
98
+ IndexInfo *indexInfo,
99
+ const char *constraintName,
100
+ char constraintType,
101
+ bits16 constr_flags,
102
+ bool allow_system_table_mods,
103
+ bool is_internal);
104
+
105
+ extern void index_drop(Oid indexId, bool concurrent, bool concurrent_lock_mode);
106
+
107
+ extern IndexInfo *BuildIndexInfo(Relation index);
108
+
109
+ extern IndexInfo *BuildDummyIndexInfo(Relation index);
110
+
111
+ extern bool CompareIndexInfo(IndexInfo *info1, IndexInfo *info2,
112
+ Oid *collations1, Oid *collations2,
113
+ Oid *opfamilies1, Oid *opfamilies2,
114
+ AttrMap *attmap);
115
+
116
+ extern void BuildSpeculativeIndexInfo(Relation index, IndexInfo *ii);
117
+
118
+ extern void FormIndexDatum(IndexInfo *indexInfo,
119
+ TupleTableSlot *slot,
120
+ EState *estate,
121
+ Datum *values,
122
+ bool *isnull);
123
+
124
+ extern void index_build(Relation heapRelation,
125
+ Relation indexRelation,
126
+ IndexInfo *indexInfo,
127
+ bool isreindex,
128
+ bool parallel);
129
+
130
+ extern void validate_index(Oid heapId, Oid indexId, Snapshot snapshot);
131
+
132
+ extern void index_set_state_flags(Oid indexId, IndexStateFlagsAction action);
133
+
134
+ extern Oid IndexGetRelation(Oid indexId, bool missing_ok);
135
+
136
+ extern void reindex_index(Oid indexId, bool skip_constraint_checks,
137
+ char relpersistence, int options);
138
+
139
+ /* Flag bits for reindex_relation(): */
140
+ #define REINDEX_REL_PROCESS_TOAST 0x01
141
+ #define REINDEX_REL_SUPPRESS_INDEX_USE 0x02
142
+ #define REINDEX_REL_CHECK_CONSTRAINTS 0x04
143
+ #define REINDEX_REL_FORCE_INDEXES_UNLOGGED 0x08
144
+ #define REINDEX_REL_FORCE_INDEXES_PERMANENT 0x10
145
+
146
+ extern bool reindex_relation(Oid relid, int flags, int options);
147
+
148
+ extern bool ReindexIsProcessingHeap(Oid heapOid);
149
+ extern bool ReindexIsProcessingIndex(Oid indexOid);
150
+
151
+ extern void ResetReindexState(int nestLevel);
152
+ extern Size EstimateReindexStateSpace(void);
153
+ extern void SerializeReindexState(Size maxsize, char *start_address);
154
+ extern void RestoreReindexState(void *reindexstate);
155
+
156
+ extern void IndexSetParentIndex(Relation idx, Oid parentOid);
157
+
158
+
159
+ /*
160
+ * itemptr_encode - Encode ItemPointer as int64/int8
161
+ *
162
+ * This representation must produce values encoded as int64 that sort in the
163
+ * same order as their corresponding original TID values would (using the
164
+ * default int8 opclass to produce a result equivalent to the default TID
165
+ * opclass).
166
+ *
167
+ * As noted in validate_index(), this can be significantly faster.
168
+ */
169
+ static inline int64
170
+ itemptr_encode(ItemPointer itemptr)
171
+ {
172
+ BlockNumber block = ItemPointerGetBlockNumber(itemptr);
173
+ OffsetNumber offset = ItemPointerGetOffsetNumber(itemptr);
174
+ int64 encoded;
175
+
176
+ /*
177
+ * Use the 16 least significant bits for the offset. 32 adjacent bits are
178
+ * used for the block number. Since remaining bits are unused, there
179
+ * cannot be negative encoded values (We assume a two's complement
180
+ * representation).
181
+ */
182
+ encoded = ((uint64) block << 16) | (uint16) offset;
183
+
184
+ return encoded;
185
+ }
186
+
187
+ /*
188
+ * itemptr_decode - Decode int64/int8 representation back to ItemPointer
189
+ */
190
+ static inline void
191
+ itemptr_decode(ItemPointer itemptr, int64 encoded)
192
+ {
193
+ BlockNumber block = (BlockNumber) (encoded >> 16);
194
+ OffsetNumber offset = (OffsetNumber) (encoded & 0xFFFF);
195
+
196
+ ItemPointerSet(itemptr, block, offset);
197
+ }
198
+
199
+ #endif /* INDEX_H */