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,109 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * smgr.h
4
+ * storage manager switch public interface declarations.
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/storage/smgr.h
11
+ *
12
+ *-------------------------------------------------------------------------
13
+ */
14
+ #ifndef SMGR_H
15
+ #define SMGR_H
16
+
17
+ #include "lib/ilist.h"
18
+ #include "storage/block.h"
19
+ #include "storage/relfilenode.h"
20
+
21
+ /*
22
+ * smgr.c maintains a table of SMgrRelation objects, which are essentially
23
+ * cached file handles. An SMgrRelation is created (if not already present)
24
+ * by smgropen(), and destroyed by smgrclose(). Note that neither of these
25
+ * operations imply I/O, they just create or destroy a hashtable entry.
26
+ * (But smgrclose() may release associated resources, such as OS-level file
27
+ * descriptors.)
28
+ *
29
+ * An SMgrRelation may have an "owner", which is just a pointer to it from
30
+ * somewhere else; smgr.c will clear this pointer if the SMgrRelation is
31
+ * closed. We use this to avoid dangling pointers from relcache to smgr
32
+ * without having to make the smgr explicitly aware of relcache. There
33
+ * can't be more than one "owner" pointer per SMgrRelation, but that's
34
+ * all we need.
35
+ *
36
+ * SMgrRelations that do not have an "owner" are considered to be transient,
37
+ * and are deleted at end of transaction.
38
+ */
39
+ typedef struct SMgrRelationData
40
+ {
41
+ /* rnode is the hashtable lookup key, so it must be first! */
42
+ RelFileNodeBackend smgr_rnode; /* relation physical identifier */
43
+
44
+ /* pointer to owning pointer, or NULL if none */
45
+ struct SMgrRelationData **smgr_owner;
46
+
47
+ /*
48
+ * These next three fields are not actually used or manipulated by smgr,
49
+ * except that they are reset to InvalidBlockNumber upon a cache flush
50
+ * event (in particular, upon truncation of the relation). Higher levels
51
+ * store cached state here so that it will be reset when truncation
52
+ * happens. In all three cases, InvalidBlockNumber means "unknown".
53
+ */
54
+ BlockNumber smgr_targblock; /* current insertion target block */
55
+ BlockNumber smgr_fsm_nblocks; /* last known size of fsm fork */
56
+ BlockNumber smgr_vm_nblocks; /* last known size of vm fork */
57
+
58
+ /* additional public fields may someday exist here */
59
+
60
+ /*
61
+ * Fields below here are intended to be private to smgr.c and its
62
+ * submodules. Do not touch them from elsewhere.
63
+ */
64
+ int smgr_which; /* storage manager selector */
65
+
66
+ /*
67
+ * for md.c; per-fork arrays of the number of open segments
68
+ * (md_num_open_segs) and the segments themselves (md_seg_fds).
69
+ */
70
+ int md_num_open_segs[MAX_FORKNUM + 1];
71
+ struct _MdfdVec *md_seg_fds[MAX_FORKNUM + 1];
72
+
73
+ /* if unowned, list link in list of all unowned SMgrRelations */
74
+ dlist_node node;
75
+ } SMgrRelationData;
76
+
77
+ typedef SMgrRelationData *SMgrRelation;
78
+
79
+ #define SmgrIsTemp(smgr) \
80
+ RelFileNodeBackendIsTemp((smgr)->smgr_rnode)
81
+
82
+ extern void smgrinit(void);
83
+ extern SMgrRelation smgropen(RelFileNode rnode, BackendId backend);
84
+ extern bool smgrexists(SMgrRelation reln, ForkNumber forknum);
85
+ extern void smgrsetowner(SMgrRelation *owner, SMgrRelation reln);
86
+ extern void smgrclearowner(SMgrRelation *owner, SMgrRelation reln);
87
+ extern void smgrclose(SMgrRelation reln);
88
+ extern void smgrcloseall(void);
89
+ extern void smgrclosenode(RelFileNodeBackend rnode);
90
+ extern void smgrcreate(SMgrRelation reln, ForkNumber forknum, bool isRedo);
91
+ extern void smgrdosyncall(SMgrRelation *rels, int nrels);
92
+ extern void smgrdounlinkall(SMgrRelation *rels, int nrels, bool isRedo);
93
+ extern void smgrextend(SMgrRelation reln, ForkNumber forknum,
94
+ BlockNumber blocknum, char *buffer, bool skipFsync);
95
+ extern bool smgrprefetch(SMgrRelation reln, ForkNumber forknum,
96
+ BlockNumber blocknum);
97
+ extern void smgrread(SMgrRelation reln, ForkNumber forknum,
98
+ BlockNumber blocknum, char *buffer);
99
+ extern void smgrwrite(SMgrRelation reln, ForkNumber forknum,
100
+ BlockNumber blocknum, char *buffer, bool skipFsync);
101
+ extern void smgrwriteback(SMgrRelation reln, ForkNumber forknum,
102
+ BlockNumber blocknum, BlockNumber nblocks);
103
+ extern BlockNumber smgrnblocks(SMgrRelation reln, ForkNumber forknum);
104
+ extern void smgrtruncate(SMgrRelation reln, ForkNumber *forknum,
105
+ int nforks, BlockNumber *nblocks);
106
+ extern void smgrimmedsync(SMgrRelation reln, ForkNumber forknum);
107
+ extern void AtEOXact_SMgr(void);
108
+
109
+ #endif /* SMGR_H */
@@ -0,0 +1,77 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * spin.h
4
+ * Hardware-independent implementation of spinlocks.
5
+ *
6
+ *
7
+ * The hardware-independent interface to spinlocks is defined by the
8
+ * typedef "slock_t" and these macros:
9
+ *
10
+ * void SpinLockInit(volatile slock_t *lock)
11
+ * Initialize a spinlock (to the unlocked state).
12
+ *
13
+ * void SpinLockAcquire(volatile slock_t *lock)
14
+ * Acquire a spinlock, waiting if necessary.
15
+ * Time out and abort() if unable to acquire the lock in a
16
+ * "reasonable" amount of time --- typically ~ 1 minute.
17
+ *
18
+ * void SpinLockRelease(volatile slock_t *lock)
19
+ * Unlock a previously acquired lock.
20
+ *
21
+ * bool SpinLockFree(slock_t *lock)
22
+ * Tests if the lock is free. Returns true if free, false if locked.
23
+ * This does *not* change the state of the lock.
24
+ *
25
+ * Callers must beware that the macro argument may be evaluated multiple
26
+ * times!
27
+ *
28
+ * Load and store operations in calling code are guaranteed not to be
29
+ * reordered with respect to these operations, because they include a
30
+ * compiler barrier. (Before PostgreSQL 9.5, callers needed to use a
31
+ * volatile qualifier to access data protected by spinlocks.)
32
+ *
33
+ * Keep in mind the coding rule that spinlocks must not be held for more
34
+ * than a few instructions. In particular, we assume it is not possible
35
+ * for a CHECK_FOR_INTERRUPTS() to occur while holding a spinlock, and so
36
+ * it is not necessary to do HOLD/RESUME_INTERRUPTS() in these macros.
37
+ *
38
+ * These macros are implemented in terms of hardware-dependent macros
39
+ * supplied by s_lock.h. There is not currently any extra functionality
40
+ * added by this header, but there has been in the past and may someday
41
+ * be again.
42
+ *
43
+ *
44
+ * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
45
+ * Portions Copyright (c) 1994, Regents of the University of California
46
+ *
47
+ * src/include/storage/spin.h
48
+ *
49
+ *-------------------------------------------------------------------------
50
+ */
51
+ #ifndef SPIN_H
52
+ #define SPIN_H
53
+
54
+ #include "storage/s_lock.h"
55
+ #ifndef HAVE_SPINLOCKS
56
+ #include "storage/pg_sema.h"
57
+ #endif
58
+
59
+
60
+ #define SpinLockInit(lock) S_INIT_LOCK(lock)
61
+
62
+ #define SpinLockAcquire(lock) S_LOCK(lock)
63
+
64
+ #define SpinLockRelease(lock) S_UNLOCK(lock)
65
+
66
+ #define SpinLockFree(lock) S_LOCK_FREE(lock)
67
+
68
+
69
+ extern int SpinlockSemas(void);
70
+ extern Size SpinlockSemaSize(void);
71
+
72
+ #ifndef HAVE_SPINLOCKS
73
+ extern void SpinlockSemaInit(void);
74
+ extern PGSemaphore *SpinlockSemaArray;
75
+ #endif
76
+
77
+ #endif /* SPIN_H */
@@ -0,0 +1,91 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * standby.h
4
+ * Definitions for hot standby mode.
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/storage/standby.h
11
+ *
12
+ *-------------------------------------------------------------------------
13
+ */
14
+ #ifndef STANDBY_H
15
+ #define STANDBY_H
16
+
17
+ #include "storage/lock.h"
18
+ #include "storage/procsignal.h"
19
+ #include "storage/relfilenode.h"
20
+ #include "storage/standbydefs.h"
21
+
22
+ /* User-settable GUC parameters */
23
+ extern int vacuum_defer_cleanup_age;
24
+ extern int max_standby_archive_delay;
25
+ extern int max_standby_streaming_delay;
26
+
27
+ extern void InitRecoveryTransactionEnvironment(void);
28
+ extern void ShutdownRecoveryTransactionEnvironment(void);
29
+
30
+ extern void ResolveRecoveryConflictWithSnapshot(TransactionId latestRemovedXid,
31
+ RelFileNode node);
32
+ extern void ResolveRecoveryConflictWithTablespace(Oid tsid);
33
+ extern void ResolveRecoveryConflictWithDatabase(Oid dbid);
34
+
35
+ extern void ResolveRecoveryConflictWithLock(LOCKTAG locktag);
36
+ extern void ResolveRecoveryConflictWithBufferPin(void);
37
+ extern void CheckRecoveryConflictDeadlock(void);
38
+ extern void StandbyDeadLockHandler(void);
39
+ extern void StandbyTimeoutHandler(void);
40
+ extern void StandbyLockTimeoutHandler(void);
41
+
42
+ /*
43
+ * Standby Rmgr (RM_STANDBY_ID)
44
+ *
45
+ * Standby recovery manager exists to perform actions that are required
46
+ * to make hot standby work. That includes logging AccessExclusiveLocks taken
47
+ * by transactions and running-xacts snapshots.
48
+ */
49
+ extern void StandbyAcquireAccessExclusiveLock(TransactionId xid, Oid dbOid, Oid relOid);
50
+ extern void StandbyReleaseLockTree(TransactionId xid,
51
+ int nsubxids, TransactionId *subxids);
52
+ extern void StandbyReleaseAllLocks(void);
53
+ extern void StandbyReleaseOldLocks(TransactionId oldxid);
54
+
55
+ #define MinSizeOfXactRunningXacts offsetof(xl_running_xacts, xids)
56
+
57
+
58
+ /*
59
+ * Declarations for GetRunningTransactionData(). Similar to Snapshots, but
60
+ * not quite. This has nothing at all to do with visibility on this server,
61
+ * so this is completely separate from snapmgr.c and snapmgr.h.
62
+ * This data is important for creating the initial snapshot state on a
63
+ * standby server. We need lots more information than a normal snapshot,
64
+ * hence we use a specific data structure for our needs. This data
65
+ * is written to WAL as a separate record immediately after each
66
+ * checkpoint. That means that wherever we start a standby from we will
67
+ * almost immediately see the data we need to begin executing queries.
68
+ */
69
+
70
+ typedef struct RunningTransactionsData
71
+ {
72
+ int xcnt; /* # of xact ids in xids[] */
73
+ int subxcnt; /* # of subxact ids in xids[] */
74
+ bool subxid_overflow; /* snapshot overflowed, subxids missing */
75
+ TransactionId nextXid; /* xid from ShmemVariableCache->nextFullXid */
76
+ TransactionId oldestRunningXid; /* *not* oldestXmin */
77
+ TransactionId latestCompletedXid; /* so we can set xmax */
78
+
79
+ TransactionId *xids; /* array of (sub)xids still running */
80
+ } RunningTransactionsData;
81
+
82
+ typedef RunningTransactionsData *RunningTransactions;
83
+
84
+ extern void LogAccessExclusiveLock(Oid dbOid, Oid relOid);
85
+ extern void LogAccessExclusiveLockPrepare(void);
86
+
87
+ extern XLogRecPtr LogStandbySnapshot(void);
88
+ extern void LogStandbyInvalidations(int nmsgs, SharedInvalidationMessage *msgs,
89
+ bool relcacheInitFileInval);
90
+
91
+ #endif /* STANDBY_H */
@@ -0,0 +1,74 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * standbydefs.h
4
+ * Frontend exposed definitions for hot standby mode.
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/storage/standbydefs.h
11
+ *
12
+ *-------------------------------------------------------------------------
13
+ */
14
+ #ifndef STANDBYDEFS_H
15
+ #define STANDBYDEFS_H
16
+
17
+ #include "access/xlogreader.h"
18
+ #include "lib/stringinfo.h"
19
+ #include "storage/lockdefs.h"
20
+ #include "storage/sinval.h"
21
+
22
+ /* Recovery handlers for the Standby Rmgr (RM_STANDBY_ID) */
23
+ extern void standby_redo(XLogReaderState *record);
24
+ extern void standby_desc(StringInfo buf, XLogReaderState *record);
25
+ extern const char *standby_identify(uint8 info);
26
+ extern void standby_desc_invalidations(StringInfo buf,
27
+ int nmsgs, SharedInvalidationMessage *msgs,
28
+ Oid dbId, Oid tsId,
29
+ bool relcacheInitFileInval);
30
+
31
+ /*
32
+ * XLOG message types
33
+ */
34
+ #define XLOG_STANDBY_LOCK 0x00
35
+ #define XLOG_RUNNING_XACTS 0x10
36
+ #define XLOG_INVALIDATIONS 0x20
37
+
38
+ typedef struct xl_standby_locks
39
+ {
40
+ int nlocks; /* number of entries in locks array */
41
+ xl_standby_lock locks[FLEXIBLE_ARRAY_MEMBER];
42
+ } xl_standby_locks;
43
+
44
+ /*
45
+ * When we write running xact data to WAL, we use this structure.
46
+ */
47
+ typedef struct xl_running_xacts
48
+ {
49
+ int xcnt; /* # of xact ids in xids[] */
50
+ int subxcnt; /* # of subxact ids in xids[] */
51
+ bool subxid_overflow; /* snapshot overflowed, subxids missing */
52
+ TransactionId nextXid; /* xid from ShmemVariableCache->nextFullXid */
53
+ TransactionId oldestRunningXid; /* *not* oldestXmin */
54
+ TransactionId latestCompletedXid; /* so we can set xmax */
55
+
56
+ TransactionId xids[FLEXIBLE_ARRAY_MEMBER];
57
+ } xl_running_xacts;
58
+
59
+ /*
60
+ * Invalidations for standby, currently only when transactions without an
61
+ * assigned xid commit.
62
+ */
63
+ typedef struct xl_invalidations
64
+ {
65
+ Oid dbId; /* MyDatabaseId */
66
+ Oid tsId; /* MyDatabaseTableSpace */
67
+ bool relcacheInitFileInval; /* invalidate relcache init files */
68
+ int nmsgs; /* number of shared inval msgs */
69
+ SharedInvalidationMessage msgs[FLEXIBLE_ARRAY_MEMBER];
70
+ } xl_invalidations;
71
+
72
+ #define MinSizeOfInvalidations offsetof(xl_invalidations, msgs)
73
+
74
+ #endif /* STANDBYDEFS_H */
@@ -0,0 +1,62 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * sync.h
4
+ * File synchronization management code.
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/storage/sync.h
10
+ *
11
+ *-------------------------------------------------------------------------
12
+ */
13
+ #ifndef SYNC_H
14
+ #define SYNC_H
15
+
16
+ #include "storage/relfilenode.h"
17
+
18
+ /*
19
+ * Type of sync request. These are used to manage the set of pending
20
+ * requests to call a sync handler's sync or unlink functions at the next
21
+ * checkpoint.
22
+ */
23
+ typedef enum SyncRequestType
24
+ {
25
+ SYNC_REQUEST, /* schedule a call of sync function */
26
+ SYNC_UNLINK_REQUEST, /* schedule a call of unlink function */
27
+ SYNC_FORGET_REQUEST, /* forget all calls for a tag */
28
+ SYNC_FILTER_REQUEST /* forget all calls satisfying match fn */
29
+ } SyncRequestType;
30
+
31
+ /*
32
+ * Which set of functions to use to handle a given request. The values of
33
+ * the enumerators must match the indexes of the function table in sync.c.
34
+ */
35
+ typedef enum SyncRequestHandler
36
+ {
37
+ SYNC_HANDLER_MD = 0 /* md smgr */
38
+ } SyncRequestHandler;
39
+
40
+ /*
41
+ * A tag identifying a file. Currently it has the members required for md.c's
42
+ * usage, but sync.c has no knowledge of the internal structure, and it is
43
+ * liable to change as required by future handlers.
44
+ */
45
+ typedef struct FileTag
46
+ {
47
+ int16 handler; /* SyncRequestHandler value, saving space */
48
+ int16 forknum; /* ForkNumber, saving space */
49
+ RelFileNode rnode;
50
+ uint32 segno;
51
+ } FileTag;
52
+
53
+ extern void InitSync(void);
54
+ extern void SyncPreCheckpoint(void);
55
+ extern void SyncPostCheckpoint(void);
56
+ extern void ProcessSyncRequests(void);
57
+ extern void RememberSyncRequest(const FileTag *ftag, SyncRequestType type);
58
+ extern void EnableSyncRequestForwarding(void);
59
+ extern bool RegisterSyncRequest(const FileTag *ftag, SyncRequestType type,
60
+ bool retryOnError);
61
+
62
+ #endif /* SYNC_H */
@@ -0,0 +1,58 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * cmdtag.h
4
+ * Declarations for commandtag names and enumeration.
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/tcop/cmdtag.h
10
+ *
11
+ *-------------------------------------------------------------------------
12
+ */
13
+ #ifndef CMDTAG_H
14
+ #define CMDTAG_H
15
+
16
+
17
+ #define PG_CMDTAG(tag, name, evtrgok, rwrok, rowcnt) \
18
+ tag,
19
+
20
+ typedef enum CommandTag
21
+ {
22
+ #include "tcop/cmdtaglist.h"
23
+ COMMAND_TAG_NEXTTAG
24
+ } CommandTag;
25
+
26
+ #undef PG_CMDTAG
27
+
28
+ typedef struct QueryCompletion
29
+ {
30
+ CommandTag commandTag;
31
+ uint64 nprocessed;
32
+ } QueryCompletion;
33
+
34
+
35
+ static inline void
36
+ SetQueryCompletion(QueryCompletion *qc, CommandTag commandTag,
37
+ uint64 nprocessed)
38
+ {
39
+ qc->commandTag = commandTag;
40
+ qc->nprocessed = nprocessed;
41
+ }
42
+
43
+ static inline void
44
+ CopyQueryCompletion(QueryCompletion *dst, const QueryCompletion *src)
45
+ {
46
+ dst->commandTag = src->commandTag;
47
+ dst->nprocessed = src->nprocessed;
48
+ }
49
+
50
+
51
+ extern void InitializeQueryCompletion(QueryCompletion *qc);
52
+ extern const char *GetCommandTagName(CommandTag commandTag);
53
+ extern bool command_tag_display_rowcount(CommandTag commandTag);
54
+ extern bool command_tag_event_trigger_ok(CommandTag commandTag);
55
+ extern bool command_tag_table_rewrite_ok(CommandTag commandTag);
56
+ extern CommandTag GetCommandTagEnum(const char *tagname);
57
+
58
+ #endif /* CMDTAG_H */