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,151 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * relcache.h
4
+ * Relation descriptor cache definitions.
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/utils/relcache.h
11
+ *
12
+ *-------------------------------------------------------------------------
13
+ */
14
+ #ifndef RELCACHE_H
15
+ #define RELCACHE_H
16
+
17
+ #include "postgres.h"
18
+ #include "access/tupdesc.h"
19
+ #include "nodes/bitmapset.h"
20
+
21
+
22
+ /*
23
+ * Name of relcache init file(s), used to speed up backend startup
24
+ */
25
+ #define RELCACHE_INIT_FILENAME "pg_internal.init"
26
+
27
+ typedef struct RelationData *Relation;
28
+
29
+ /* ----------------
30
+ * RelationPtr is used in the executor to support index scans
31
+ * where we have to keep track of several index relations in an
32
+ * array. -cim 9/10/89
33
+ * ----------------
34
+ */
35
+ typedef Relation *RelationPtr;
36
+
37
+ /*
38
+ * Routines to open (lookup) and close a relcache entry
39
+ */
40
+ extern Relation RelationIdGetRelation(Oid relationId);
41
+ extern void RelationClose(Relation relation);
42
+
43
+ /*
44
+ * Routines to compute/retrieve additional cached information
45
+ */
46
+ extern List *RelationGetFKeyList(Relation relation);
47
+ extern List *RelationGetIndexList(Relation relation);
48
+ extern List *RelationGetStatExtList(Relation relation);
49
+ extern Oid RelationGetPrimaryKeyIndex(Relation relation);
50
+ extern Oid RelationGetReplicaIndex(Relation relation);
51
+ extern List *RelationGetIndexExpressions(Relation relation);
52
+ extern List *RelationGetDummyIndexExpressions(Relation relation);
53
+ extern List *RelationGetIndexPredicate(Relation relation);
54
+ extern Datum *RelationGetIndexRawAttOptions(Relation relation);
55
+ extern bytea **RelationGetIndexAttOptions(Relation relation, bool copy);
56
+
57
+ typedef enum IndexAttrBitmapKind
58
+ {
59
+ INDEX_ATTR_BITMAP_ALL,
60
+ INDEX_ATTR_BITMAP_KEY,
61
+ INDEX_ATTR_BITMAP_PRIMARY_KEY,
62
+ INDEX_ATTR_BITMAP_IDENTITY_KEY
63
+ } IndexAttrBitmapKind;
64
+
65
+ extern Bitmapset *RelationGetIndexAttrBitmap(Relation relation,
66
+ IndexAttrBitmapKind attrKind);
67
+
68
+ extern void RelationGetExclusionInfo(Relation indexRelation,
69
+ Oid **operators,
70
+ Oid **procs,
71
+ uint16 **strategies);
72
+
73
+ extern void RelationInitIndexAccessInfo(Relation relation);
74
+
75
+ /* caller must include pg_publication.h */
76
+ struct PublicationActions;
77
+ extern struct PublicationActions *GetRelationPublicationActions(Relation relation);
78
+
79
+ extern void RelationInitTableAccessMethod(Relation relation);
80
+
81
+ /*
82
+ * Routines to support ereport() reports of relation-related errors
83
+ */
84
+ extern int errtable(Relation rel);
85
+ extern int errtablecol(Relation rel, int attnum);
86
+ extern int errtablecolname(Relation rel, const char *colname);
87
+ extern int errtableconstraint(Relation rel, const char *conname);
88
+
89
+ /*
90
+ * Routines for backend startup
91
+ */
92
+ extern void RelationCacheInitialize(void);
93
+ extern void RelationCacheInitializePhase2(void);
94
+ extern void RelationCacheInitializePhase3(void);
95
+
96
+ /*
97
+ * Routine to create a relcache entry for an about-to-be-created relation
98
+ */
99
+ extern Relation RelationBuildLocalRelation(const char *relname,
100
+ Oid relnamespace,
101
+ TupleDesc tupDesc,
102
+ Oid relid,
103
+ Oid accessmtd,
104
+ Oid relfilenode,
105
+ Oid reltablespace,
106
+ bool shared_relation,
107
+ bool mapped_relation,
108
+ char relpersistence,
109
+ char relkind);
110
+
111
+ /*
112
+ * Routines to manage assignment of new relfilenode to a relation
113
+ */
114
+ extern void RelationSetNewRelfilenode(Relation relation, char persistence);
115
+ extern void RelationAssumeNewRelfilenode(Relation relation);
116
+
117
+ /*
118
+ * Routines for flushing/rebuilding relcache entries in various scenarios
119
+ */
120
+ extern void RelationForgetRelation(Oid rid);
121
+
122
+ extern void RelationCacheInvalidateEntry(Oid relationId);
123
+
124
+ extern void RelationCacheInvalidate(void);
125
+
126
+ extern void RelationCloseSmgrByOid(Oid relationId);
127
+
128
+ #ifdef USE_ASSERT_CHECKING
129
+ extern void AssertPendingSyncs_RelationCache(void);
130
+ #else
131
+ #define AssertPendingSyncs_RelationCache() do {} while (0)
132
+ #endif
133
+ extern void AtEOXact_RelationCache(bool isCommit);
134
+ extern void AtEOSubXact_RelationCache(bool isCommit, SubTransactionId mySubid,
135
+ SubTransactionId parentSubid);
136
+
137
+ /*
138
+ * Routines to help manage rebuilding of relcache init files
139
+ */
140
+ extern bool RelationIdIsInInitFile(Oid relationId);
141
+ extern void RelationCacheInitFilePreInvalidate(void);
142
+ extern void RelationCacheInitFilePostInvalidate(void);
143
+ extern void RelationCacheInitFileRemove(void);
144
+
145
+ /* should be used only by relcache.c and catcache.c */
146
+ extern bool criticalRelcachesBuilt;
147
+
148
+ /* should be used only by relcache.c and postinit.c */
149
+ extern bool criticalSharedRelcachesBuilt;
150
+
151
+ #endif /* RELCACHE_H */
@@ -0,0 +1,81 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * reltrigger.h
4
+ * POSTGRES relation trigger definitions.
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/utils/reltrigger.h
11
+ *
12
+ *-------------------------------------------------------------------------
13
+ */
14
+ #ifndef RELTRIGGER_H
15
+ #define RELTRIGGER_H
16
+
17
+
18
+ /*
19
+ * These struct really belongs to trigger.h, but we put it separately so that
20
+ * it can be cleanly included in rel.h and other places.
21
+ */
22
+
23
+ typedef struct Trigger
24
+ {
25
+ Oid tgoid; /* OID of trigger (pg_trigger row) */
26
+ /* Remaining fields are copied from pg_trigger, see pg_trigger.h */
27
+ char *tgname;
28
+ Oid tgfoid;
29
+ int16 tgtype;
30
+ char tgenabled;
31
+ bool tgisinternal;
32
+ bool tgisclone;
33
+ Oid tgconstrrelid;
34
+ Oid tgconstrindid;
35
+ Oid tgconstraint;
36
+ bool tgdeferrable;
37
+ bool tginitdeferred;
38
+ int16 tgnargs;
39
+ int16 tgnattr;
40
+ int16 *tgattr;
41
+ char **tgargs;
42
+ char *tgqual;
43
+ char *tgoldtable;
44
+ char *tgnewtable;
45
+ } Trigger;
46
+
47
+ typedef struct TriggerDesc
48
+ {
49
+ Trigger *triggers; /* array of Trigger structs */
50
+ int numtriggers; /* number of array entries */
51
+
52
+ /*
53
+ * These flags indicate whether the array contains at least one of each
54
+ * type of trigger. We use these to skip searching the array if not.
55
+ */
56
+ bool trig_insert_before_row;
57
+ bool trig_insert_after_row;
58
+ bool trig_insert_instead_row;
59
+ bool trig_insert_before_statement;
60
+ bool trig_insert_after_statement;
61
+ bool trig_update_before_row;
62
+ bool trig_update_after_row;
63
+ bool trig_update_instead_row;
64
+ bool trig_update_before_statement;
65
+ bool trig_update_after_statement;
66
+ bool trig_delete_before_row;
67
+ bool trig_delete_after_row;
68
+ bool trig_delete_instead_row;
69
+ bool trig_delete_before_statement;
70
+ bool trig_delete_after_statement;
71
+ /* there are no row-level truncate triggers */
72
+ bool trig_truncate_before_statement;
73
+ bool trig_truncate_after_statement;
74
+ /* Is there at least one trigger specifying each transition relation? */
75
+ bool trig_insert_new_table;
76
+ bool trig_update_old_table;
77
+ bool trig_update_new_table;
78
+ bool trig_delete_old_table;
79
+ } TriggerDesc;
80
+
81
+ #endif /* RELTRIGGER_H */
@@ -0,0 +1,86 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * resowner.h
4
+ * POSTGRES resource owner definitions.
5
+ *
6
+ * Query-lifespan resources are tracked by associating them with
7
+ * ResourceOwner objects. This provides a simple mechanism for ensuring
8
+ * that such resources are freed at the right time.
9
+ * See utils/resowner/README for more info.
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/utils/resowner.h
16
+ *
17
+ *-------------------------------------------------------------------------
18
+ */
19
+ #ifndef RESOWNER_H
20
+ #define RESOWNER_H
21
+
22
+
23
+ /*
24
+ * ResourceOwner objects are an opaque data structure known only within
25
+ * resowner.c.
26
+ */
27
+ typedef struct ResourceOwnerData *ResourceOwner;
28
+
29
+
30
+ /*
31
+ * Globally known ResourceOwners
32
+ */
33
+ extern PGDLLIMPORT ResourceOwner CurrentResourceOwner;
34
+ extern PGDLLIMPORT ResourceOwner CurTransactionResourceOwner;
35
+ extern PGDLLIMPORT ResourceOwner TopTransactionResourceOwner;
36
+ extern PGDLLIMPORT ResourceOwner AuxProcessResourceOwner;
37
+
38
+ /*
39
+ * Resource releasing is done in three phases: pre-locks, locks, and
40
+ * post-locks. The pre-lock phase must release any resources that are
41
+ * visible to other backends (such as pinned buffers); this ensures that
42
+ * when we release a lock that another backend may be waiting on, it will
43
+ * see us as being fully out of our transaction. The post-lock phase
44
+ * should be used for backend-internal cleanup.
45
+ */
46
+ typedef enum
47
+ {
48
+ RESOURCE_RELEASE_BEFORE_LOCKS,
49
+ RESOURCE_RELEASE_LOCKS,
50
+ RESOURCE_RELEASE_AFTER_LOCKS
51
+ } ResourceReleasePhase;
52
+
53
+ /*
54
+ * Dynamically loaded modules can get control during ResourceOwnerRelease
55
+ * by providing a callback of this form.
56
+ */
57
+ typedef void (*ResourceReleaseCallback) (ResourceReleasePhase phase,
58
+ bool isCommit,
59
+ bool isTopLevel,
60
+ void *arg);
61
+
62
+
63
+ /*
64
+ * Functions in resowner.c
65
+ */
66
+
67
+ /* generic routines */
68
+ extern ResourceOwner ResourceOwnerCreate(ResourceOwner parent,
69
+ const char *name);
70
+ extern void ResourceOwnerRelease(ResourceOwner owner,
71
+ ResourceReleasePhase phase,
72
+ bool isCommit,
73
+ bool isTopLevel);
74
+ extern void ResourceOwnerReleaseAllPlanCacheRefs(ResourceOwner owner);
75
+ extern void ResourceOwnerDelete(ResourceOwner owner);
76
+ extern ResourceOwner ResourceOwnerGetParent(ResourceOwner owner);
77
+ extern void ResourceOwnerNewParent(ResourceOwner owner,
78
+ ResourceOwner newparent);
79
+ extern void RegisterResourceReleaseCallback(ResourceReleaseCallback callback,
80
+ void *arg);
81
+ extern void UnregisterResourceReleaseCallback(ResourceReleaseCallback callback,
82
+ void *arg);
83
+ extern void CreateAuxProcessResourceOwner(void);
84
+ extern void ReleaseAuxProcessResources(bool isCommit);
85
+
86
+ #endif /* RESOWNER_H */
@@ -0,0 +1,50 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * rls.h
4
+ * Header file for Row Level Security (RLS) utility commands to be used
5
+ * with the rowsecurity feature.
6
+ *
7
+ * Copyright (c) 2007-2020, PostgreSQL Global Development Group
8
+ *
9
+ * src/include/utils/rls.h
10
+ *
11
+ *-------------------------------------------------------------------------
12
+ */
13
+ #ifndef RLS_H
14
+ #define RLS_H
15
+
16
+ /* GUC variable */
17
+ extern bool row_security;
18
+
19
+ /*
20
+ * Used by callers of check_enable_rls.
21
+ *
22
+ * RLS could be completely disabled on the tables involved in the query,
23
+ * which is the simple case, or it may depend on the current environment
24
+ * (the role which is running the query or the value of the row_security
25
+ * GUC), or it might be simply enabled as usual.
26
+ *
27
+ * If RLS isn't on the table involved then RLS_NONE is returned to indicate
28
+ * that we don't need to worry about invalidating the query plan for RLS
29
+ * reasons. If RLS is on the table, but we are bypassing it for now, then
30
+ * we return RLS_NONE_ENV to indicate that, if the environment changes,
31
+ * we need to invalidate and replan. Finally, if RLS should be turned on
32
+ * for the query, then we return RLS_ENABLED, which means we also need to
33
+ * invalidate if the environment changes.
34
+ *
35
+ * Note that RLS_ENABLED will also be returned if noError is true
36
+ * (indicating that the caller simply want to know if RLS should be applied
37
+ * for this user but doesn't want an error thrown if it is; this is used
38
+ * by other error cases where we're just trying to decide if data from the
39
+ * table should be passed back to the user or not).
40
+ */
41
+ enum CheckEnableRlsResult
42
+ {
43
+ RLS_NONE,
44
+ RLS_NONE_ENV,
45
+ RLS_ENABLED
46
+ };
47
+
48
+ extern int check_enable_rls(Oid relid, Oid checkAsUser, bool noError);
49
+
50
+ #endif /* RLS_H */
@@ -0,0 +1,44 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * ruleutils.h
4
+ * Declarations for ruleutils.c
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/utils/ruleutils.h
10
+ *
11
+ *-------------------------------------------------------------------------
12
+ */
13
+ #ifndef RULEUTILS_H
14
+ #define RULEUTILS_H
15
+
16
+ #include "nodes/nodes.h"
17
+ #include "nodes/parsenodes.h"
18
+ #include "nodes/pg_list.h"
19
+
20
+ struct Plan; /* avoid including plannodes.h here */
21
+ struct PlannedStmt;
22
+
23
+
24
+ extern char *pg_get_indexdef_string(Oid indexrelid);
25
+ extern char *pg_get_indexdef_columns(Oid indexrelid, bool pretty);
26
+
27
+ extern char *pg_get_partkeydef_columns(Oid relid, bool pretty);
28
+ extern char *pg_get_partconstrdef_string(Oid partitionId, char *aliasname);
29
+
30
+ extern char *pg_get_constraintdef_command(Oid constraintId);
31
+ extern char *deparse_expression(Node *expr, List *dpcontext,
32
+ bool forceprefix, bool showimplicit);
33
+ extern List *deparse_context_for(const char *aliasname, Oid relid);
34
+ extern List *deparse_context_for_plan_tree(struct PlannedStmt *pstmt,
35
+ List *rtable_names);
36
+ extern List *set_deparse_context_plan(List *dpcontext,
37
+ struct Plan *plan, List *ancestors);
38
+ extern List *select_rtable_names_for_explain(List *rtable,
39
+ Bitmapset *rels_used);
40
+ extern char *generate_collation_name(Oid collid);
41
+ extern char *generate_opclass_name(Oid opclass);
42
+ extern char *get_range_partbound_string(List *bound_datums);
43
+
44
+ #endif /* RULEUTILS_H */
@@ -0,0 +1,61 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * sharedtuplestore.h
4
+ * Simple mechanism for sharing tuples between backends.
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/utils/sharedtuplestore.h
10
+ *
11
+ *-------------------------------------------------------------------------
12
+ */
13
+ #ifndef SHAREDTUPLESTORE_H
14
+ #define SHAREDTUPLESTORE_H
15
+
16
+ #include "access/htup.h"
17
+ #include "storage/fd.h"
18
+ #include "storage/sharedfileset.h"
19
+
20
+ struct SharedTuplestore;
21
+ typedef struct SharedTuplestore SharedTuplestore;
22
+
23
+ struct SharedTuplestoreAccessor;
24
+ typedef struct SharedTuplestoreAccessor SharedTuplestoreAccessor;
25
+
26
+ /*
27
+ * A flag indicating that the tuplestore will only be scanned once, so backing
28
+ * files can be unlinked early.
29
+ */
30
+ #define SHARED_TUPLESTORE_SINGLE_PASS 0x01
31
+
32
+ extern size_t sts_estimate(int participants);
33
+
34
+ extern SharedTuplestoreAccessor *sts_initialize(SharedTuplestore *sts,
35
+ int participants,
36
+ int my_participant_number,
37
+ size_t meta_data_size,
38
+ int flags,
39
+ SharedFileSet *fileset,
40
+ const char *name);
41
+
42
+ extern SharedTuplestoreAccessor *sts_attach(SharedTuplestore *sts,
43
+ int my_participant_number,
44
+ SharedFileSet *fileset);
45
+
46
+ extern void sts_end_write(SharedTuplestoreAccessor *accessor);
47
+
48
+ extern void sts_reinitialize(SharedTuplestoreAccessor *accessor);
49
+
50
+ extern void sts_begin_parallel_scan(SharedTuplestoreAccessor *accessor);
51
+
52
+ extern void sts_end_parallel_scan(SharedTuplestoreAccessor *accessor);
53
+
54
+ extern void sts_puttuple(SharedTuplestoreAccessor *accessor,
55
+ void *meta_data,
56
+ MinimalTuple tuple);
57
+
58
+ extern MinimalTuple sts_parallel_scan_next(SharedTuplestoreAccessor *accessor,
59
+ void *meta_data);
60
+
61
+ #endif /* SHAREDTUPLESTORE_H */