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,61 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * prepare.h
4
+ * PREPARE, EXECUTE and DEALLOCATE commands, and prepared-stmt storage
5
+ *
6
+ *
7
+ * Copyright (c) 2002-2020, PostgreSQL Global Development Group
8
+ *
9
+ * src/include/commands/prepare.h
10
+ *
11
+ *-------------------------------------------------------------------------
12
+ */
13
+ #ifndef PREPARE_H
14
+ #define PREPARE_H
15
+
16
+ #include "commands/explain.h"
17
+ #include "datatype/timestamp.h"
18
+ #include "utils/plancache.h"
19
+
20
+ /*
21
+ * The data structure representing a prepared statement. This is now just
22
+ * a thin veneer over a plancache entry --- the main addition is that of
23
+ * a name.
24
+ *
25
+ * Note: all subsidiary storage lives in the referenced plancache entry.
26
+ */
27
+ typedef struct
28
+ {
29
+ /* dynahash.c requires key to be first field */
30
+ char stmt_name[NAMEDATALEN];
31
+ CachedPlanSource *plansource; /* the actual cached plan */
32
+ bool from_sql; /* prepared via SQL, not FE/BE protocol? */
33
+ TimestampTz prepare_time; /* the time when the stmt was prepared */
34
+ } PreparedStatement;
35
+
36
+
37
+ /* Utility statements PREPARE, EXECUTE, DEALLOCATE, EXPLAIN EXECUTE */
38
+ extern void PrepareQuery(ParseState *pstate, PrepareStmt *stmt,
39
+ int stmt_location, int stmt_len);
40
+ extern void ExecuteQuery(ParseState *pstate,
41
+ ExecuteStmt *stmt, IntoClause *intoClause,
42
+ ParamListInfo params,
43
+ DestReceiver *dest, QueryCompletion *qc);
44
+ extern void DeallocateQuery(DeallocateStmt *stmt);
45
+ extern void ExplainExecuteQuery(ExecuteStmt *execstmt, IntoClause *into,
46
+ ExplainState *es, const char *queryString,
47
+ ParamListInfo params, QueryEnvironment *queryEnv);
48
+
49
+ /* Low-level access to stored prepared statements */
50
+ extern void StorePreparedStatement(const char *stmt_name,
51
+ CachedPlanSource *plansource,
52
+ bool from_sql);
53
+ extern PreparedStatement *FetchPreparedStatement(const char *stmt_name,
54
+ bool throwError);
55
+ extern void DropPreparedStatement(const char *stmt_name, bool showError);
56
+ extern TupleDesc FetchPreparedStatementResultDesc(PreparedStatement *stmt);
57
+ extern List *FetchPreparedStatementTargetList(PreparedStatement *stmt);
58
+
59
+ extern void DropAllPreparedStatements(void);
60
+
61
+ #endif /* PREPARE_H */
@@ -0,0 +1,67 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * tablespace.h
4
+ * Tablespace management commands (create/drop tablespace).
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/commands/tablespace.h
11
+ *
12
+ *-------------------------------------------------------------------------
13
+ */
14
+ #ifndef TABLESPACE_H
15
+ #define TABLESPACE_H
16
+
17
+ #include "access/xlogreader.h"
18
+ #include "catalog/objectaddress.h"
19
+ #include "lib/stringinfo.h"
20
+ #include "nodes/parsenodes.h"
21
+
22
+ /* XLOG stuff */
23
+ #define XLOG_TBLSPC_CREATE 0x00
24
+ #define XLOG_TBLSPC_DROP 0x10
25
+
26
+ typedef struct xl_tblspc_create_rec
27
+ {
28
+ Oid ts_id;
29
+ char ts_path[FLEXIBLE_ARRAY_MEMBER]; /* null-terminated string */
30
+ } xl_tblspc_create_rec;
31
+
32
+ typedef struct xl_tblspc_drop_rec
33
+ {
34
+ Oid ts_id;
35
+ } xl_tblspc_drop_rec;
36
+
37
+ typedef struct TableSpaceOpts
38
+ {
39
+ int32 vl_len_; /* varlena header (do not touch directly!) */
40
+ float8 random_page_cost;
41
+ float8 seq_page_cost;
42
+ int effective_io_concurrency;
43
+ int maintenance_io_concurrency;
44
+ } TableSpaceOpts;
45
+
46
+ extern Oid CreateTableSpace(CreateTableSpaceStmt *stmt);
47
+ extern void DropTableSpace(DropTableSpaceStmt *stmt);
48
+ extern ObjectAddress RenameTableSpace(const char *oldname, const char *newname);
49
+ extern Oid AlterTableSpaceOptions(AlterTableSpaceOptionsStmt *stmt);
50
+
51
+ extern void TablespaceCreateDbspace(Oid spcNode, Oid dbNode, bool isRedo);
52
+
53
+ extern Oid GetDefaultTablespace(char relpersistence, bool partitioned);
54
+
55
+ extern void PrepareTempTablespaces(void);
56
+
57
+ extern Oid get_tablespace_oid(const char *tablespacename, bool missing_ok);
58
+ extern char *get_tablespace_name(Oid spc_oid);
59
+
60
+ extern bool directory_is_empty(const char *path);
61
+ extern void remove_tablespace_symlink(const char *linkloc);
62
+
63
+ extern void tblspc_redo(XLogReaderState *rptr);
64
+ extern void tblspc_desc(StringInfo buf, XLogReaderState *rptr);
65
+ extern const char *tblspc_identify(uint8 info);
66
+
67
+ #endif /* TABLESPACE_H */
@@ -0,0 +1,277 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * trigger.h
4
+ * Declarations for trigger handling.
5
+ *
6
+ * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1994, Regents of the University of California
8
+ *
9
+ * src/include/commands/trigger.h
10
+ *
11
+ *-------------------------------------------------------------------------
12
+ */
13
+ #ifndef TRIGGER_H
14
+ #define TRIGGER_H
15
+
16
+ #include "catalog/objectaddress.h"
17
+ #include "nodes/execnodes.h"
18
+ #include "nodes/parsenodes.h"
19
+
20
+ /*
21
+ * TriggerData is the node type that is passed as fmgr "context" info
22
+ * when a function is called by the trigger manager.
23
+ */
24
+
25
+ #define CALLED_AS_TRIGGER(fcinfo) \
26
+ ((fcinfo)->context != NULL && IsA((fcinfo)->context, TriggerData))
27
+
28
+ typedef uint32 TriggerEvent;
29
+
30
+ typedef struct TriggerData
31
+ {
32
+ NodeTag type;
33
+ TriggerEvent tg_event;
34
+ Relation tg_relation;
35
+ HeapTuple tg_trigtuple;
36
+ HeapTuple tg_newtuple;
37
+ Trigger *tg_trigger;
38
+ TupleTableSlot *tg_trigslot;
39
+ TupleTableSlot *tg_newslot;
40
+ Tuplestorestate *tg_oldtable;
41
+ Tuplestorestate *tg_newtable;
42
+ const Bitmapset *tg_updatedcols;
43
+ } TriggerData;
44
+
45
+ /*
46
+ * The state for capturing old and new tuples into transition tables for a
47
+ * single ModifyTable node (or other operation source, e.g. copy.c).
48
+ *
49
+ * This is per-caller to avoid conflicts in setting tcs_map or
50
+ * tcs_original_insert_tuple. Note, however, that the pointed-to
51
+ * private data may be shared across multiple callers.
52
+ */
53
+ struct AfterTriggersTableData; /* private in trigger.c */
54
+
55
+ typedef struct TransitionCaptureState
56
+ {
57
+ /*
58
+ * Is there at least one trigger specifying each transition relation on
59
+ * the relation explicitly named in the DML statement or COPY command?
60
+ * Note: in current usage, these flags could be part of the private state,
61
+ * but it seems possibly useful to let callers see them.
62
+ */
63
+ bool tcs_delete_old_table;
64
+ bool tcs_update_old_table;
65
+ bool tcs_update_new_table;
66
+ bool tcs_insert_new_table;
67
+
68
+ /*
69
+ * For UPDATE and DELETE, AfterTriggerSaveEvent may need to convert the
70
+ * new and old tuples from a child table's format to the format of the
71
+ * relation named in a query so that it is compatible with the transition
72
+ * tuplestores. The caller must store the conversion map here if so.
73
+ */
74
+ TupleConversionMap *tcs_map;
75
+
76
+ /*
77
+ * For INSERT and COPY, it would be wasteful to convert tuples from child
78
+ * format to parent format after they have already been converted in the
79
+ * opposite direction during routing. In that case we bypass conversion
80
+ * and allow the inserting code (copy.c and nodeModifyTable.c) to provide
81
+ * a slot containing the original tuple directly.
82
+ */
83
+ TupleTableSlot *tcs_original_insert_tuple;
84
+
85
+ /*
86
+ * Private data including the tuplestore(s) into which to insert tuples.
87
+ */
88
+ struct AfterTriggersTableData *tcs_private;
89
+ } TransitionCaptureState;
90
+
91
+ /*
92
+ * TriggerEvent bit flags
93
+ *
94
+ * Note that we assume different event types (INSERT/DELETE/UPDATE/TRUNCATE)
95
+ * can't be OR'd together in a single TriggerEvent. This is unlike the
96
+ * situation for pg_trigger rows, so pg_trigger.tgtype uses a different
97
+ * representation!
98
+ */
99
+ #define TRIGGER_EVENT_INSERT 0x00000000
100
+ #define TRIGGER_EVENT_DELETE 0x00000001
101
+ #define TRIGGER_EVENT_UPDATE 0x00000002
102
+ #define TRIGGER_EVENT_TRUNCATE 0x00000003
103
+ #define TRIGGER_EVENT_OPMASK 0x00000003
104
+
105
+ #define TRIGGER_EVENT_ROW 0x00000004
106
+
107
+ #define TRIGGER_EVENT_BEFORE 0x00000008
108
+ #define TRIGGER_EVENT_AFTER 0x00000000
109
+ #define TRIGGER_EVENT_INSTEAD 0x00000010
110
+ #define TRIGGER_EVENT_TIMINGMASK 0x00000018
111
+
112
+ /* More TriggerEvent flags, used only within trigger.c */
113
+
114
+ #define AFTER_TRIGGER_DEFERRABLE 0x00000020
115
+ #define AFTER_TRIGGER_INITDEFERRED 0x00000040
116
+
117
+ #define TRIGGER_FIRED_BY_INSERT(event) \
118
+ (((event) & TRIGGER_EVENT_OPMASK) == TRIGGER_EVENT_INSERT)
119
+
120
+ #define TRIGGER_FIRED_BY_DELETE(event) \
121
+ (((event) & TRIGGER_EVENT_OPMASK) == TRIGGER_EVENT_DELETE)
122
+
123
+ #define TRIGGER_FIRED_BY_UPDATE(event) \
124
+ (((event) & TRIGGER_EVENT_OPMASK) == TRIGGER_EVENT_UPDATE)
125
+
126
+ #define TRIGGER_FIRED_BY_TRUNCATE(event) \
127
+ (((event) & TRIGGER_EVENT_OPMASK) == TRIGGER_EVENT_TRUNCATE)
128
+
129
+ #define TRIGGER_FIRED_FOR_ROW(event) \
130
+ ((event) & TRIGGER_EVENT_ROW)
131
+
132
+ #define TRIGGER_FIRED_FOR_STATEMENT(event) \
133
+ (!TRIGGER_FIRED_FOR_ROW(event))
134
+
135
+ #define TRIGGER_FIRED_BEFORE(event) \
136
+ (((event) & TRIGGER_EVENT_TIMINGMASK) == TRIGGER_EVENT_BEFORE)
137
+
138
+ #define TRIGGER_FIRED_AFTER(event) \
139
+ (((event) & TRIGGER_EVENT_TIMINGMASK) == TRIGGER_EVENT_AFTER)
140
+
141
+ #define TRIGGER_FIRED_INSTEAD(event) \
142
+ (((event) & TRIGGER_EVENT_TIMINGMASK) == TRIGGER_EVENT_INSTEAD)
143
+
144
+ /*
145
+ * Definitions for replication role based firing.
146
+ */
147
+ #define SESSION_REPLICATION_ROLE_ORIGIN 0
148
+ #define SESSION_REPLICATION_ROLE_REPLICA 1
149
+ #define SESSION_REPLICATION_ROLE_LOCAL 2
150
+ extern PGDLLIMPORT int SessionReplicationRole;
151
+
152
+ /*
153
+ * States at which a trigger can be fired. These are the
154
+ * possible values for pg_trigger.tgenabled.
155
+ */
156
+ #define TRIGGER_FIRES_ON_ORIGIN 'O'
157
+ #define TRIGGER_FIRES_ALWAYS 'A'
158
+ #define TRIGGER_FIRES_ON_REPLICA 'R'
159
+ #define TRIGGER_DISABLED 'D'
160
+
161
+ extern ObjectAddress CreateTrigger(CreateTrigStmt *stmt, const char *queryString,
162
+ Oid relOid, Oid refRelOid, Oid constraintOid, Oid indexOid,
163
+ Oid funcoid, Oid parentTriggerOid, Node *whenClause,
164
+ bool isInternal, bool in_partition);
165
+
166
+ extern void RemoveTriggerById(Oid trigOid);
167
+ extern Oid get_trigger_oid(Oid relid, const char *name, bool missing_ok);
168
+
169
+ extern ObjectAddress renametrig(RenameStmt *stmt);
170
+
171
+ extern void EnableDisableTrigger(Relation rel, const char *tgname,
172
+ char fires_when, bool skip_system, LOCKMODE lockmode);
173
+
174
+ extern void RelationBuildTriggers(Relation relation);
175
+
176
+ extern TriggerDesc *CopyTriggerDesc(TriggerDesc *trigdesc);
177
+
178
+ extern const char *FindTriggerIncompatibleWithInheritance(TriggerDesc *trigdesc);
179
+
180
+ extern TransitionCaptureState *MakeTransitionCaptureState(TriggerDesc *trigdesc,
181
+ Oid relid, CmdType cmdType);
182
+
183
+ extern void FreeTriggerDesc(TriggerDesc *trigdesc);
184
+
185
+ extern void ExecBSInsertTriggers(EState *estate,
186
+ ResultRelInfo *relinfo);
187
+ extern void ExecASInsertTriggers(EState *estate,
188
+ ResultRelInfo *relinfo,
189
+ TransitionCaptureState *transition_capture);
190
+ extern bool ExecBRInsertTriggers(EState *estate,
191
+ ResultRelInfo *relinfo,
192
+ TupleTableSlot *slot);
193
+ extern void ExecARInsertTriggers(EState *estate,
194
+ ResultRelInfo *relinfo,
195
+ TupleTableSlot *slot,
196
+ List *recheckIndexes,
197
+ TransitionCaptureState *transition_capture);
198
+ extern bool ExecIRInsertTriggers(EState *estate,
199
+ ResultRelInfo *relinfo,
200
+ TupleTableSlot *slot);
201
+ extern void ExecBSDeleteTriggers(EState *estate,
202
+ ResultRelInfo *relinfo);
203
+ extern void ExecASDeleteTriggers(EState *estate,
204
+ ResultRelInfo *relinfo,
205
+ TransitionCaptureState *transition_capture);
206
+ extern bool ExecBRDeleteTriggers(EState *estate,
207
+ EPQState *epqstate,
208
+ ResultRelInfo *relinfo,
209
+ ItemPointer tupleid,
210
+ HeapTuple fdw_trigtuple,
211
+ TupleTableSlot **epqslot);
212
+ extern void ExecARDeleteTriggers(EState *estate,
213
+ ResultRelInfo *relinfo,
214
+ ItemPointer tupleid,
215
+ HeapTuple fdw_trigtuple,
216
+ TransitionCaptureState *transition_capture);
217
+ extern bool ExecIRDeleteTriggers(EState *estate,
218
+ ResultRelInfo *relinfo,
219
+ HeapTuple trigtuple);
220
+ extern void ExecBSUpdateTriggers(EState *estate,
221
+ ResultRelInfo *relinfo);
222
+ extern void ExecASUpdateTriggers(EState *estate,
223
+ ResultRelInfo *relinfo,
224
+ TransitionCaptureState *transition_capture);
225
+ extern bool ExecBRUpdateTriggers(EState *estate,
226
+ EPQState *epqstate,
227
+ ResultRelInfo *relinfo,
228
+ ItemPointer tupleid,
229
+ HeapTuple fdw_trigtuple,
230
+ TupleTableSlot *slot);
231
+ extern void ExecARUpdateTriggers(EState *estate,
232
+ ResultRelInfo *relinfo,
233
+ ItemPointer tupleid,
234
+ HeapTuple fdw_trigtuple,
235
+ TupleTableSlot *slot,
236
+ List *recheckIndexes,
237
+ TransitionCaptureState *transition_capture);
238
+ extern bool ExecIRUpdateTriggers(EState *estate,
239
+ ResultRelInfo *relinfo,
240
+ HeapTuple trigtuple,
241
+ TupleTableSlot *slot);
242
+ extern void ExecBSTruncateTriggers(EState *estate,
243
+ ResultRelInfo *relinfo);
244
+ extern void ExecASTruncateTriggers(EState *estate,
245
+ ResultRelInfo *relinfo);
246
+
247
+ extern void AfterTriggerBeginXact(void);
248
+ extern void AfterTriggerBeginQuery(void);
249
+ extern void AfterTriggerEndQuery(EState *estate);
250
+ extern void AfterTriggerFireDeferred(void);
251
+ extern void AfterTriggerEndXact(bool isCommit);
252
+ extern void AfterTriggerBeginSubXact(void);
253
+ extern void AfterTriggerEndSubXact(bool isCommit);
254
+ extern void AfterTriggerSetState(ConstraintsSetStmt *stmt);
255
+ extern bool AfterTriggerPendingOnRel(Oid relid);
256
+
257
+
258
+ /*
259
+ * in utils/adt/ri_triggers.c
260
+ */
261
+ extern bool RI_FKey_pk_upd_check_required(Trigger *trigger, Relation pk_rel,
262
+ TupleTableSlot *old_slot, TupleTableSlot *new_slot);
263
+ extern bool RI_FKey_fk_upd_check_required(Trigger *trigger, Relation fk_rel,
264
+ TupleTableSlot *old_slot, TupleTableSlot *new_slot);
265
+ extern bool RI_Initial_Check(Trigger *trigger,
266
+ Relation fk_rel, Relation pk_rel);
267
+ extern void RI_PartitionRemove_Check(Trigger *trigger, Relation fk_rel,
268
+ Relation pk_rel);
269
+
270
+ /* result values for RI_FKey_trigger_type: */
271
+ #define RI_TRIGGER_PK 1 /* is a trigger on the PK relation */
272
+ #define RI_TRIGGER_FK 2 /* is a trigger on the FK relation */
273
+ #define RI_TRIGGER_NONE 0 /* is not an RI trigger function */
274
+
275
+ extern int RI_FKey_trigger_type(Oid tgfoid);
276
+
277
+ #endif /* TRIGGER_H */
@@ -0,0 +1,37 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * user.h
4
+ * Commands for manipulating roles (formerly called users).
5
+ *
6
+ *
7
+ * src/include/commands/user.h
8
+ *
9
+ *-------------------------------------------------------------------------
10
+ */
11
+ #ifndef USER_H
12
+ #define USER_H
13
+
14
+ #include "catalog/objectaddress.h"
15
+ #include "libpq/crypt.h"
16
+ #include "nodes/parsenodes.h"
17
+ #include "parser/parse_node.h"
18
+
19
+ /* GUC. Is actually of type PasswordType. */
20
+ extern int Password_encryption;
21
+
22
+ /* Hook to check passwords in CreateRole() and AlterRole() */
23
+ typedef void (*check_password_hook_type) (const char *username, const char *shadow_pass, PasswordType password_type, Datum validuntil_time, bool validuntil_null);
24
+
25
+ extern PGDLLIMPORT check_password_hook_type check_password_hook;
26
+
27
+ extern Oid CreateRole(ParseState *pstate, CreateRoleStmt *stmt);
28
+ extern Oid AlterRole(AlterRoleStmt *stmt);
29
+ extern Oid AlterRoleSet(AlterRoleSetStmt *stmt);
30
+ extern void DropRole(DropRoleStmt *stmt);
31
+ extern void GrantRole(GrantRoleStmt *stmt);
32
+ extern ObjectAddress RenameRole(const char *oldname, const char *newname);
33
+ extern void DropOwnedObjects(DropOwnedStmt *stmt);
34
+ extern void ReassignOwnedObjects(ReassignOwnedStmt *stmt);
35
+ extern List *roleSpecsToIds(List *memberNames);
36
+
37
+ #endif /* USER_H */
@@ -0,0 +1,293 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * vacuum.h
4
+ * header file for postgres vacuum cleaner and statistics analyzer
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/commands/vacuum.h
11
+ *
12
+ *-------------------------------------------------------------------------
13
+ */
14
+ #ifndef VACUUM_H
15
+ #define VACUUM_H
16
+
17
+ #include "access/htup.h"
18
+ #include "catalog/pg_class.h"
19
+ #include "catalog/pg_statistic.h"
20
+ #include "catalog/pg_type.h"
21
+ #include "parser/parse_node.h"
22
+ #include "storage/buf.h"
23
+ #include "storage/lock.h"
24
+ #include "utils/relcache.h"
25
+
26
+ /*
27
+ * Flags for amparallelvacuumoptions to control the participation of bulkdelete
28
+ * and vacuumcleanup in parallel vacuum.
29
+ */
30
+
31
+ /*
32
+ * Both bulkdelete and vacuumcleanup are disabled by default. This will be
33
+ * used by IndexAM's that don't want to or cannot participate in parallel
34
+ * vacuum. For example, if an index AM doesn't have a way to communicate the
35
+ * index statistics allocated by the first ambulkdelete call to the subsequent
36
+ * ones until amvacuumcleanup, the index AM cannot participate in parallel
37
+ * vacuum.
38
+ */
39
+ #define VACUUM_OPTION_NO_PARALLEL 0
40
+
41
+ /*
42
+ * bulkdelete can be performed in parallel. This option can be used by
43
+ * IndexAm's that need to scan the index to delete the tuples.
44
+ */
45
+ #define VACUUM_OPTION_PARALLEL_BULKDEL (1 << 0)
46
+
47
+ /*
48
+ * vacuumcleanup can be performed in parallel if bulkdelete is not performed
49
+ * yet. This will be used by IndexAM's that can scan the index if the
50
+ * bulkdelete is not performed.
51
+ */
52
+ #define VACUUM_OPTION_PARALLEL_COND_CLEANUP (1 << 1)
53
+
54
+ /*
55
+ * vacuumcleanup can be performed in parallel even if bulkdelete has already
56
+ * processed the index. This will be used by IndexAM's that scan the index
57
+ * during the cleanup phase of index irrespective of whether the index is
58
+ * already scanned or not during bulkdelete phase.
59
+ */
60
+ #define VACUUM_OPTION_PARALLEL_CLEANUP (1 << 2)
61
+
62
+ /* value for checking vacuum flags */
63
+ #define VACUUM_OPTION_MAX_VALID_VALUE ((1 << 3) - 1)
64
+
65
+ /*----------
66
+ * ANALYZE builds one of these structs for each attribute (column) that is
67
+ * to be analyzed. The struct and subsidiary data are in anl_context,
68
+ * so they live until the end of the ANALYZE operation.
69
+ *
70
+ * The type-specific typanalyze function is passed a pointer to this struct
71
+ * and must return true to continue analysis, false to skip analysis of this
72
+ * column. In the true case it must set the compute_stats and minrows fields,
73
+ * and can optionally set extra_data to pass additional info to compute_stats.
74
+ * minrows is its request for the minimum number of sample rows to be gathered
75
+ * (but note this request might not be honored, eg if there are fewer rows
76
+ * than that in the table).
77
+ *
78
+ * The compute_stats routine will be called after sample rows have been
79
+ * gathered. Aside from this struct, it is passed:
80
+ * fetchfunc: a function for accessing the column values from the
81
+ * sample rows
82
+ * samplerows: the number of sample tuples
83
+ * totalrows: estimated total number of rows in relation
84
+ * The fetchfunc may be called with rownum running from 0 to samplerows-1.
85
+ * It returns a Datum and an isNull flag.
86
+ *
87
+ * compute_stats should set stats_valid true if it is able to compute
88
+ * any useful statistics. If it does, the remainder of the struct holds
89
+ * the information to be stored in a pg_statistic row for the column. Be
90
+ * careful to allocate any pointed-to data in anl_context, which will NOT
91
+ * be CurrentMemoryContext when compute_stats is called.
92
+ *
93
+ * Note: all comparisons done for statistical purposes should use the
94
+ * underlying column's collation (attcollation), except in situations
95
+ * where a noncollatable container type contains a collatable type;
96
+ * in that case use the type's default collation. Be sure to record
97
+ * the appropriate collation in stacoll.
98
+ *----------
99
+ */
100
+ typedef struct VacAttrStats *VacAttrStatsP;
101
+
102
+ typedef Datum (*AnalyzeAttrFetchFunc) (VacAttrStatsP stats, int rownum,
103
+ bool *isNull);
104
+
105
+ typedef void (*AnalyzeAttrComputeStatsFunc) (VacAttrStatsP stats,
106
+ AnalyzeAttrFetchFunc fetchfunc,
107
+ int samplerows,
108
+ double totalrows);
109
+
110
+ typedef struct VacAttrStats
111
+ {
112
+ /*
113
+ * These fields are set up by the main ANALYZE code before invoking the
114
+ * type-specific typanalyze function.
115
+ *
116
+ * Note: do not assume that the data being analyzed has the same datatype
117
+ * shown in attr, ie do not trust attr->atttypid, attlen, etc. This is
118
+ * because some index opclasses store a different type than the underlying
119
+ * column/expression. Instead use attrtypid, attrtypmod, and attrtype for
120
+ * information about the datatype being fed to the typanalyze function.
121
+ * Likewise, use attrcollid not attr->attcollation.
122
+ */
123
+ Form_pg_attribute attr; /* copy of pg_attribute row for column */
124
+ Oid attrtypid; /* type of data being analyzed */
125
+ int32 attrtypmod; /* typmod of data being analyzed */
126
+ Form_pg_type attrtype; /* copy of pg_type row for attrtypid */
127
+ Oid attrcollid; /* collation of data being analyzed */
128
+ MemoryContext anl_context; /* where to save long-lived data */
129
+
130
+ /*
131
+ * These fields must be filled in by the typanalyze routine, unless it
132
+ * returns false.
133
+ */
134
+ AnalyzeAttrComputeStatsFunc compute_stats; /* function pointer */
135
+ int minrows; /* Minimum # of rows wanted for stats */
136
+ void *extra_data; /* for extra type-specific data */
137
+
138
+ /*
139
+ * These fields are to be filled in by the compute_stats routine. (They
140
+ * are initialized to zero when the struct is created.)
141
+ */
142
+ bool stats_valid;
143
+ float4 stanullfrac; /* fraction of entries that are NULL */
144
+ int32 stawidth; /* average width of column values */
145
+ float4 stadistinct; /* # distinct values */
146
+ int16 stakind[STATISTIC_NUM_SLOTS];
147
+ Oid staop[STATISTIC_NUM_SLOTS];
148
+ Oid stacoll[STATISTIC_NUM_SLOTS];
149
+ int numnumbers[STATISTIC_NUM_SLOTS];
150
+ float4 *stanumbers[STATISTIC_NUM_SLOTS];
151
+ int numvalues[STATISTIC_NUM_SLOTS];
152
+ Datum *stavalues[STATISTIC_NUM_SLOTS];
153
+
154
+ /*
155
+ * These fields describe the stavalues[n] element types. They will be
156
+ * initialized to match attrtypid, but a custom typanalyze function might
157
+ * want to store an array of something other than the analyzed column's
158
+ * elements. It should then overwrite these fields.
159
+ */
160
+ Oid statypid[STATISTIC_NUM_SLOTS];
161
+ int16 statyplen[STATISTIC_NUM_SLOTS];
162
+ bool statypbyval[STATISTIC_NUM_SLOTS];
163
+ char statypalign[STATISTIC_NUM_SLOTS];
164
+
165
+ /*
166
+ * These fields are private to the main ANALYZE code and should not be
167
+ * looked at by type-specific functions.
168
+ */
169
+ int tupattnum; /* attribute number within tuples */
170
+ HeapTuple *rows; /* access info for std fetch function */
171
+ TupleDesc tupDesc;
172
+ Datum *exprvals; /* access info for index fetch function */
173
+ bool *exprnulls;
174
+ int rowstride;
175
+ } VacAttrStats;
176
+
177
+ typedef enum VacuumOption
178
+ {
179
+ VACOPT_VACUUM = 1 << 0, /* do VACUUM */
180
+ VACOPT_ANALYZE = 1 << 1, /* do ANALYZE */
181
+ VACOPT_VERBOSE = 1 << 2, /* print progress info */
182
+ VACOPT_FREEZE = 1 << 3, /* FREEZE option */
183
+ VACOPT_FULL = 1 << 4, /* FULL (non-concurrent) vacuum */
184
+ VACOPT_SKIP_LOCKED = 1 << 5, /* skip if cannot get lock */
185
+ VACOPT_SKIPTOAST = 1 << 6, /* don't process the TOAST table, if any */
186
+ VACOPT_DISABLE_PAGE_SKIPPING = 1 << 7 /* don't skip any pages */
187
+ } VacuumOption;
188
+
189
+ /*
190
+ * A ternary value used by vacuum parameters.
191
+ *
192
+ * DEFAULT value is used to determine the value based on other
193
+ * configurations, e.g. reloptions.
194
+ */
195
+ typedef enum VacOptTernaryValue
196
+ {
197
+ VACOPT_TERNARY_DEFAULT = 0,
198
+ VACOPT_TERNARY_DISABLED,
199
+ VACOPT_TERNARY_ENABLED,
200
+ } VacOptTernaryValue;
201
+
202
+ /*
203
+ * Parameters customizing behavior of VACUUM and ANALYZE.
204
+ *
205
+ * Note that at least one of VACOPT_VACUUM and VACOPT_ANALYZE must be set
206
+ * in options.
207
+ */
208
+ typedef struct VacuumParams
209
+ {
210
+ int options; /* bitmask of VacuumOption */
211
+ int freeze_min_age; /* min freeze age, -1 to use default */
212
+ int freeze_table_age; /* age at which to scan whole table */
213
+ int multixact_freeze_min_age; /* min multixact freeze age, -1 to
214
+ * use default */
215
+ int multixact_freeze_table_age; /* multixact age at which to scan
216
+ * whole table */
217
+ bool is_wraparound; /* force a for-wraparound vacuum */
218
+ int log_min_duration; /* minimum execution threshold in ms at
219
+ * which verbose logs are activated, -1
220
+ * to use default */
221
+ VacOptTernaryValue index_cleanup; /* Do index vacuum and cleanup,
222
+ * default value depends on reloptions */
223
+ VacOptTernaryValue truncate; /* Truncate empty pages at the end,
224
+ * default value depends on reloptions */
225
+
226
+ /*
227
+ * The number of parallel vacuum workers. 0 by default which means choose
228
+ * based on the number of indexes. -1 indicates parallel vacuum is
229
+ * disabled.
230
+ */
231
+ int nworkers;
232
+ } VacuumParams;
233
+
234
+ /* GUC parameters */
235
+ extern PGDLLIMPORT int default_statistics_target; /* PGDLLIMPORT for PostGIS */
236
+ extern int vacuum_freeze_min_age;
237
+ extern int vacuum_freeze_table_age;
238
+ extern int vacuum_multixact_freeze_min_age;
239
+ extern int vacuum_multixact_freeze_table_age;
240
+
241
+ /* Variables for cost-based parallel vacuum */
242
+ extern pg_atomic_uint32 *VacuumSharedCostBalance;
243
+ extern pg_atomic_uint32 *VacuumActiveNWorkers;
244
+ extern int VacuumCostBalanceLocal;
245
+
246
+
247
+ /* in commands/vacuum.c */
248
+ extern void ExecVacuum(ParseState *pstate, VacuumStmt *vacstmt, bool isTopLevel);
249
+ extern void vacuum(List *relations, VacuumParams *params,
250
+ BufferAccessStrategy bstrategy, bool isTopLevel);
251
+ extern void vac_open_indexes(Relation relation, LOCKMODE lockmode,
252
+ int *nindexes, Relation **Irel);
253
+ extern void vac_close_indexes(int nindexes, Relation *Irel, LOCKMODE lockmode);
254
+ extern double vac_estimate_reltuples(Relation relation,
255
+ BlockNumber total_pages,
256
+ BlockNumber scanned_pages,
257
+ double scanned_tuples);
258
+ extern void vac_update_relstats(Relation relation,
259
+ BlockNumber num_pages,
260
+ double num_tuples,
261
+ BlockNumber num_all_visible_pages,
262
+ bool hasindex,
263
+ TransactionId frozenxid,
264
+ MultiXactId minmulti,
265
+ bool in_outer_xact);
266
+ extern void vacuum_set_xid_limits(Relation rel,
267
+ int freeze_min_age, int freeze_table_age,
268
+ int multixact_freeze_min_age,
269
+ int multixact_freeze_table_age,
270
+ TransactionId *oldestXmin,
271
+ TransactionId *freezeLimit,
272
+ TransactionId *xidFullScanLimit,
273
+ MultiXactId *multiXactCutoff,
274
+ MultiXactId *mxactFullScanLimit);
275
+ extern void vac_update_datfrozenxid(void);
276
+ extern void vacuum_delay_point(void);
277
+ extern bool vacuum_is_relation_owner(Oid relid, Form_pg_class reltuple,
278
+ int options);
279
+ extern Relation vacuum_open_relation(Oid relid, RangeVar *relation,
280
+ int options, bool verbose, LOCKMODE lmode);
281
+
282
+ /* in commands/analyze.c */
283
+ extern void analyze_rel(Oid relid, RangeVar *relation,
284
+ VacuumParams *params, List *va_cols, bool in_outer_xact,
285
+ BufferAccessStrategy bstrategy);
286
+ extern bool std_typanalyze(VacAttrStats *stats);
287
+
288
+ /* in utils/misc/sampling.c --- duplicate of declarations in utils/sampling.h */
289
+ extern double anl_random_fract(void);
290
+ extern double anl_init_selection_state(int n);
291
+ extern double anl_get_next_S(double t, int n, double *stateptr);
292
+
293
+ #endif /* VACUUM_H */