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,59 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * lockdefs.h
4
+ * Frontend exposed parts of postgres' low level lock mechanism
5
+ *
6
+ * The split between lockdefs.h and lock.h is not very principled. This file
7
+ * contains definition that have to (indirectly) be available when included by
8
+ * FRONTEND code.
9
+ *
10
+ * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
11
+ * Portions Copyright (c) 1994, Regents of the University of California
12
+ *
13
+ * src/include/storage/lockdefs.h
14
+ *
15
+ *-------------------------------------------------------------------------
16
+ */
17
+ #ifndef LOCKDEFS_H_
18
+ #define LOCKDEFS_H_
19
+
20
+ /*
21
+ * LOCKMODE is an integer (1..N) indicating a lock type. LOCKMASK is a bit
22
+ * mask indicating a set of held or requested lock types (the bit 1<<mode
23
+ * corresponds to a particular lock mode).
24
+ */
25
+ typedef int LOCKMASK;
26
+ typedef int LOCKMODE;
27
+
28
+ /*
29
+ * These are the valid values of type LOCKMODE for all the standard lock
30
+ * methods (both DEFAULT and USER).
31
+ */
32
+
33
+ /* NoLock is not a lock mode, but a flag value meaning "don't get a lock" */
34
+ #define NoLock 0
35
+
36
+ #define AccessShareLock 1 /* SELECT */
37
+ #define RowShareLock 2 /* SELECT FOR UPDATE/FOR SHARE */
38
+ #define RowExclusiveLock 3 /* INSERT, UPDATE, DELETE */
39
+ #define ShareUpdateExclusiveLock 4 /* VACUUM (non-FULL),ANALYZE, CREATE INDEX
40
+ * CONCURRENTLY */
41
+ #define ShareLock 5 /* CREATE INDEX (WITHOUT CONCURRENTLY) */
42
+ #define ShareRowExclusiveLock 6 /* like EXCLUSIVE MODE, but allows ROW
43
+ * SHARE */
44
+ #define ExclusiveLock 7 /* blocks ROW SHARE/SELECT...FOR UPDATE */
45
+ #define AccessExclusiveLock 8 /* ALTER TABLE, DROP TABLE, VACUUM FULL,
46
+ * and unqualified LOCK TABLE */
47
+
48
+ #define MaxLockMode 8
49
+
50
+
51
+ /* WAL representation of an AccessExclusiveLock on a table */
52
+ typedef struct xl_standby_lock
53
+ {
54
+ TransactionId xid; /* xid of holder of AccessExclusiveLock */
55
+ Oid dbOid; /* DB containing table */
56
+ Oid relOid; /* OID of table */
57
+ } xl_standby_lock;
58
+
59
+ #endif /* LOCKDEFS_H_ */
@@ -0,0 +1,232 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * lwlock.h
4
+ * Lightweight lock manager
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/lwlock.h
11
+ *
12
+ *-------------------------------------------------------------------------
13
+ */
14
+ #ifndef LWLOCK_H
15
+ #define LWLOCK_H
16
+
17
+ #ifdef FRONTEND
18
+ #error "lwlock.h may not be included from frontend code"
19
+ #endif
20
+
21
+ #include "port/atomics.h"
22
+ #include "storage/proclist_types.h"
23
+ #include "storage/s_lock.h"
24
+
25
+ struct PGPROC;
26
+
27
+ /*
28
+ * Code outside of lwlock.c should not manipulate the contents of this
29
+ * structure directly, but we have to declare it here to allow LWLocks to be
30
+ * incorporated into other data structures.
31
+ */
32
+ typedef struct LWLock
33
+ {
34
+ uint16 tranche; /* tranche ID */
35
+ pg_atomic_uint32 state; /* state of exclusive/nonexclusive lockers */
36
+ proclist_head waiters; /* list of waiting PGPROCs */
37
+ #ifdef LOCK_DEBUG
38
+ pg_atomic_uint32 nwaiters; /* number of waiters */
39
+ struct PGPROC *owner; /* last exclusive owner of the lock */
40
+ #endif
41
+ } LWLock;
42
+
43
+ /*
44
+ * In most cases, it's desirable to force each tranche of LWLocks to be aligned
45
+ * on a cache line boundary and make the array stride a power of 2. This saves
46
+ * a few cycles in indexing, but more importantly ensures that individual
47
+ * LWLocks don't cross cache line boundaries. This reduces cache contention
48
+ * problems, especially on AMD Opterons. In some cases, it's useful to add
49
+ * even more padding so that each LWLock takes up an entire cache line; this is
50
+ * useful, for example, in the main LWLock array, where the overall number of
51
+ * locks is small but some are heavily contended.
52
+ *
53
+ * When allocating a tranche that contains data other than LWLocks, it is
54
+ * probably best to include a bare LWLock and then pad the resulting structure
55
+ * as necessary for performance. For an array that contains only LWLocks,
56
+ * LWLockMinimallyPadded can be used for cases where we just want to ensure
57
+ * that we don't cross cache line boundaries within a single lock, while
58
+ * LWLockPadded can be used for cases where we want each lock to be an entire
59
+ * cache line.
60
+ *
61
+ * An LWLockMinimallyPadded might contain more than the absolute minimum amount
62
+ * of padding required to keep a lock from crossing a cache line boundary,
63
+ * because an unpadded LWLock will normally fit into 16 bytes. We ignore that
64
+ * possibility when determining the minimal amount of padding. Older releases
65
+ * had larger LWLocks, so 32 really was the minimum, and packing them in
66
+ * tighter might hurt performance.
67
+ *
68
+ * LWLOCK_MINIMAL_SIZE should be 32 on basically all common platforms, but
69
+ * because pg_atomic_uint32 is more than 4 bytes on some obscure platforms, we
70
+ * allow for the possibility that it might be 64. Even on those platforms,
71
+ * we probably won't exceed 32 bytes unless LOCK_DEBUG is defined.
72
+ */
73
+ #define LWLOCK_PADDED_SIZE PG_CACHE_LINE_SIZE
74
+ #define LWLOCK_MINIMAL_SIZE (sizeof(LWLock) <= 32 ? 32 : 64)
75
+
76
+ /* LWLock, padded to a full cache line size */
77
+ typedef union LWLockPadded
78
+ {
79
+ LWLock lock;
80
+ char pad[LWLOCK_PADDED_SIZE];
81
+ } LWLockPadded;
82
+
83
+ /* LWLock, minimally padded */
84
+ typedef union LWLockMinimallyPadded
85
+ {
86
+ LWLock lock;
87
+ char pad[LWLOCK_MINIMAL_SIZE];
88
+ } LWLockMinimallyPadded;
89
+
90
+ extern PGDLLIMPORT LWLockPadded *MainLWLockArray;
91
+
92
+ /* struct for storing named tranche information */
93
+ typedef struct NamedLWLockTranche
94
+ {
95
+ int trancheId;
96
+ char *trancheName;
97
+ } NamedLWLockTranche;
98
+
99
+ extern PGDLLIMPORT NamedLWLockTranche *NamedLWLockTrancheArray;
100
+ extern PGDLLIMPORT int NamedLWLockTrancheRequests;
101
+
102
+ /* Names for fixed lwlocks */
103
+ #include "storage/lwlocknames.h"
104
+
105
+ /*
106
+ * It's a bit odd to declare NUM_BUFFER_PARTITIONS and NUM_LOCK_PARTITIONS
107
+ * here, but we need them to figure out offsets within MainLWLockArray, and
108
+ * having this file include lock.h or bufmgr.h would be backwards.
109
+ */
110
+
111
+ /* Number of partitions of the shared buffer mapping hashtable */
112
+ #define NUM_BUFFER_PARTITIONS 128
113
+
114
+ /* Number of partitions the shared lock tables are divided into */
115
+ #define LOG2_NUM_LOCK_PARTITIONS 4
116
+ #define NUM_LOCK_PARTITIONS (1 << LOG2_NUM_LOCK_PARTITIONS)
117
+
118
+ /* Number of partitions the shared predicate lock tables are divided into */
119
+ #define LOG2_NUM_PREDICATELOCK_PARTITIONS 4
120
+ #define NUM_PREDICATELOCK_PARTITIONS (1 << LOG2_NUM_PREDICATELOCK_PARTITIONS)
121
+
122
+ /* Offsets for various chunks of preallocated lwlocks. */
123
+ #define BUFFER_MAPPING_LWLOCK_OFFSET NUM_INDIVIDUAL_LWLOCKS
124
+ #define LOCK_MANAGER_LWLOCK_OFFSET \
125
+ (BUFFER_MAPPING_LWLOCK_OFFSET + NUM_BUFFER_PARTITIONS)
126
+ #define PREDICATELOCK_MANAGER_LWLOCK_OFFSET \
127
+ (LOCK_MANAGER_LWLOCK_OFFSET + NUM_LOCK_PARTITIONS)
128
+ #define NUM_FIXED_LWLOCKS \
129
+ (PREDICATELOCK_MANAGER_LWLOCK_OFFSET + NUM_PREDICATELOCK_PARTITIONS)
130
+
131
+ typedef enum LWLockMode
132
+ {
133
+ LW_EXCLUSIVE,
134
+ LW_SHARED,
135
+ LW_WAIT_UNTIL_FREE /* A special mode used in PGPROC->lwWaitMode,
136
+ * when waiting for lock to become free. Not
137
+ * to be used as LWLockAcquire argument */
138
+ } LWLockMode;
139
+
140
+
141
+ #ifdef LOCK_DEBUG
142
+ extern bool Trace_lwlocks;
143
+ #endif
144
+
145
+ extern bool LWLockAcquire(LWLock *lock, LWLockMode mode);
146
+ extern bool LWLockConditionalAcquire(LWLock *lock, LWLockMode mode);
147
+ extern bool LWLockAcquireOrWait(LWLock *lock, LWLockMode mode);
148
+ extern void LWLockRelease(LWLock *lock);
149
+ extern void LWLockReleaseClearVar(LWLock *lock, uint64 *valptr, uint64 val);
150
+ extern void LWLockReleaseAll(void);
151
+ extern bool LWLockHeldByMe(LWLock *lock);
152
+ extern bool LWLockHeldByMeInMode(LWLock *lock, LWLockMode mode);
153
+
154
+ extern bool LWLockWaitForVar(LWLock *lock, uint64 *valptr, uint64 oldval, uint64 *newval);
155
+ extern void LWLockUpdateVar(LWLock *lock, uint64 *valptr, uint64 value);
156
+
157
+ extern Size LWLockShmemSize(void);
158
+ extern void CreateLWLocks(void);
159
+ extern void InitLWLockAccess(void);
160
+
161
+ extern const char *GetLWLockIdentifier(uint32 classId, uint16 eventId);
162
+
163
+ /*
164
+ * Extensions (or core code) can obtain an LWLocks by calling
165
+ * RequestNamedLWLockTranche() during postmaster startup. Subsequently,
166
+ * call GetNamedLWLockTranche() to obtain a pointer to an array containing
167
+ * the number of LWLocks requested.
168
+ */
169
+ extern void RequestNamedLWLockTranche(const char *tranche_name, int num_lwlocks);
170
+ extern LWLockPadded *GetNamedLWLockTranche(const char *tranche_name);
171
+
172
+ /*
173
+ * There is another, more flexible method of obtaining lwlocks. First, call
174
+ * LWLockNewTrancheId just once to obtain a tranche ID; this allocates from
175
+ * a shared counter. Next, each individual process using the tranche should
176
+ * call LWLockRegisterTranche() to associate that tranche ID with a name.
177
+ * Finally, LWLockInitialize should be called just once per lwlock, passing
178
+ * the tranche ID as an argument.
179
+ *
180
+ * It may seem strange that each process using the tranche must register it
181
+ * separately, but dynamic shared memory segments aren't guaranteed to be
182
+ * mapped at the same address in all coordinating backends, so storing the
183
+ * registration in the main shared memory segment wouldn't work for that case.
184
+ */
185
+ extern int LWLockNewTrancheId(void);
186
+ extern void LWLockRegisterTranche(int tranche_id, const char *tranche_name);
187
+ extern void LWLockInitialize(LWLock *lock, int tranche_id);
188
+
189
+ /*
190
+ * Every tranche ID less than NUM_INDIVIDUAL_LWLOCKS is reserved; also,
191
+ * we reserve additional tranche IDs for builtin tranches not included in
192
+ * the set of individual LWLocks. A call to LWLockNewTrancheId will never
193
+ * return a value less than LWTRANCHE_FIRST_USER_DEFINED.
194
+ */
195
+ typedef enum BuiltinTrancheIds
196
+ {
197
+ LWTRANCHE_XACT_BUFFER = NUM_INDIVIDUAL_LWLOCKS,
198
+ LWTRANCHE_COMMITTS_BUFFER,
199
+ LWTRANCHE_SUBTRANS_BUFFER,
200
+ LWTRANCHE_MULTIXACTOFFSET_BUFFER,
201
+ LWTRANCHE_MULTIXACTMEMBER_BUFFER,
202
+ LWTRANCHE_NOTIFY_BUFFER,
203
+ LWTRANCHE_SERIAL_BUFFER,
204
+ LWTRANCHE_WAL_INSERT,
205
+ LWTRANCHE_BUFFER_CONTENT,
206
+ LWTRANCHE_BUFFER_IO,
207
+ LWTRANCHE_REPLICATION_ORIGIN_STATE,
208
+ LWTRANCHE_REPLICATION_SLOT_IO,
209
+ LWTRANCHE_LOCK_FASTPATH,
210
+ LWTRANCHE_BUFFER_MAPPING,
211
+ LWTRANCHE_LOCK_MANAGER,
212
+ LWTRANCHE_PREDICATE_LOCK_MANAGER,
213
+ LWTRANCHE_PARALLEL_HASH_JOIN,
214
+ LWTRANCHE_PARALLEL_QUERY_DSA,
215
+ LWTRANCHE_PER_SESSION_DSA,
216
+ LWTRANCHE_PER_SESSION_RECORD_TYPE,
217
+ LWTRANCHE_PER_SESSION_RECORD_TYPMOD,
218
+ LWTRANCHE_SHARED_TUPLESTORE,
219
+ LWTRANCHE_SHARED_TIDBITMAP,
220
+ LWTRANCHE_PARALLEL_APPEND,
221
+ LWTRANCHE_PER_XACT_PREDICATE_LIST,
222
+ LWTRANCHE_FIRST_USER_DEFINED
223
+ } BuiltinTrancheIds;
224
+
225
+ /*
226
+ * Prior to PostgreSQL 9.4, we used an enum type called LWLockId to refer
227
+ * to LWLocks. New code should instead use LWLock *. However, for the
228
+ * convenience of third-party code, we include the following typedef.
229
+ */
230
+ typedef LWLock *LWLockId;
231
+
232
+ #endif /* LWLOCK_H */
@@ -0,0 +1,51 @@
1
+ /* autogenerated from src/backend/storage/lmgr/lwlocknames.txt, do not edit */
2
+ /* there is deliberately not an #ifndef LWLOCKNAMES_H here */
3
+
4
+ #define ShmemIndexLock (&MainLWLockArray[1].lock)
5
+ #define OidGenLock (&MainLWLockArray[2].lock)
6
+ #define XidGenLock (&MainLWLockArray[3].lock)
7
+ #define ProcArrayLock (&MainLWLockArray[4].lock)
8
+ #define SInvalReadLock (&MainLWLockArray[5].lock)
9
+ #define SInvalWriteLock (&MainLWLockArray[6].lock)
10
+ #define WALBufMappingLock (&MainLWLockArray[7].lock)
11
+ #define WALWriteLock (&MainLWLockArray[8].lock)
12
+ #define ControlFileLock (&MainLWLockArray[9].lock)
13
+ #define CheckpointLock (&MainLWLockArray[10].lock)
14
+ #define XactSLRULock (&MainLWLockArray[11].lock)
15
+ #define SubtransSLRULock (&MainLWLockArray[12].lock)
16
+ #define MultiXactGenLock (&MainLWLockArray[13].lock)
17
+ #define MultiXactOffsetSLRULock (&MainLWLockArray[14].lock)
18
+ #define MultiXactMemberSLRULock (&MainLWLockArray[15].lock)
19
+ #define RelCacheInitLock (&MainLWLockArray[16].lock)
20
+ #define CheckpointerCommLock (&MainLWLockArray[17].lock)
21
+ #define TwoPhaseStateLock (&MainLWLockArray[18].lock)
22
+ #define TablespaceCreateLock (&MainLWLockArray[19].lock)
23
+ #define BtreeVacuumLock (&MainLWLockArray[20].lock)
24
+ #define AddinShmemInitLock (&MainLWLockArray[21].lock)
25
+ #define AutovacuumLock (&MainLWLockArray[22].lock)
26
+ #define AutovacuumScheduleLock (&MainLWLockArray[23].lock)
27
+ #define SyncScanLock (&MainLWLockArray[24].lock)
28
+ #define RelationMappingLock (&MainLWLockArray[25].lock)
29
+ #define NotifySLRULock (&MainLWLockArray[26].lock)
30
+ #define NotifyQueueLock (&MainLWLockArray[27].lock)
31
+ #define SerializableXactHashLock (&MainLWLockArray[28].lock)
32
+ #define SerializableFinishedListLock (&MainLWLockArray[29].lock)
33
+ #define SerializablePredicateListLock (&MainLWLockArray[30].lock)
34
+ #define SerialSLRULock (&MainLWLockArray[31].lock)
35
+ #define SyncRepLock (&MainLWLockArray[32].lock)
36
+ #define BackgroundWorkerLock (&MainLWLockArray[33].lock)
37
+ #define DynamicSharedMemoryControlLock (&MainLWLockArray[34].lock)
38
+ #define AutoFileLock (&MainLWLockArray[35].lock)
39
+ #define ReplicationSlotAllocationLock (&MainLWLockArray[36].lock)
40
+ #define ReplicationSlotControlLock (&MainLWLockArray[37].lock)
41
+ #define CommitTsSLRULock (&MainLWLockArray[38].lock)
42
+ #define CommitTsLock (&MainLWLockArray[39].lock)
43
+ #define ReplicationOriginLock (&MainLWLockArray[40].lock)
44
+ #define MultiXactTruncationLock (&MainLWLockArray[41].lock)
45
+ #define OldSnapshotTimeMapLock (&MainLWLockArray[42].lock)
46
+ #define LogicalRepWorkerLock (&MainLWLockArray[43].lock)
47
+ #define XactTruncationLock (&MainLWLockArray[44].lock)
48
+ #define WrapLimitsVacuumLock (&MainLWLockArray[46].lock)
49
+ #define NotifyQueueTailLock (&MainLWLockArray[47].lock)
50
+
51
+ #define NUM_INDIVIDUAL_LWLOCKS 48
@@ -0,0 +1,57 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * off.h
4
+ * POSTGRES disk "offset" 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/storage/off.h
11
+ *
12
+ *-------------------------------------------------------------------------
13
+ */
14
+ #ifndef OFF_H
15
+ #define OFF_H
16
+
17
+ #include "storage/itemid.h"
18
+ /*
19
+ * OffsetNumber:
20
+ *
21
+ * this is a 1-based index into the linp (ItemIdData) array in the
22
+ * header of each disk page.
23
+ */
24
+ typedef uint16 OffsetNumber;
25
+
26
+ #define InvalidOffsetNumber ((OffsetNumber) 0)
27
+ #define FirstOffsetNumber ((OffsetNumber) 1)
28
+ #define MaxOffsetNumber ((OffsetNumber) (BLCKSZ / sizeof(ItemIdData)))
29
+
30
+ /* ----------------
31
+ * support macros
32
+ * ----------------
33
+ */
34
+
35
+ /*
36
+ * OffsetNumberIsValid
37
+ * True iff the offset number is valid.
38
+ */
39
+ #define OffsetNumberIsValid(offsetNumber) \
40
+ ((bool) ((offsetNumber != InvalidOffsetNumber) && \
41
+ (offsetNumber <= MaxOffsetNumber)))
42
+
43
+ /*
44
+ * OffsetNumberNext
45
+ * OffsetNumberPrev
46
+ * Increments/decrements the argument. These macros look pointless
47
+ * but they help us disambiguate the different manipulations on
48
+ * OffsetNumbers (e.g., sometimes we subtract one from an
49
+ * OffsetNumber to move back, and sometimes we do so to form a
50
+ * real C array index).
51
+ */
52
+ #define OffsetNumberNext(offsetNumber) \
53
+ ((OffsetNumber) (1 + (offsetNumber)))
54
+ #define OffsetNumberPrev(offsetNumber) \
55
+ ((OffsetNumber) (-1 + (offsetNumber)))
56
+
57
+ #endif /* OFF_H */
@@ -0,0 +1,61 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * pg_sema.h
4
+ * Platform-independent API for semaphores.
5
+ *
6
+ * PostgreSQL requires counting semaphores (the kind that keep track of
7
+ * multiple unlock operations, and will allow an equal number of subsequent
8
+ * lock operations before blocking). The underlying implementation is
9
+ * not the same on every platform. This file defines the API that must
10
+ * be provided by each port.
11
+ *
12
+ *
13
+ * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
14
+ * Portions Copyright (c) 1994, Regents of the University of California
15
+ *
16
+ * src/include/storage/pg_sema.h
17
+ *
18
+ *-------------------------------------------------------------------------
19
+ */
20
+ #ifndef PG_SEMA_H
21
+ #define PG_SEMA_H
22
+
23
+ /*
24
+ * struct PGSemaphoreData and pointer type PGSemaphore are the data structure
25
+ * representing an individual semaphore. The contents of PGSemaphoreData vary
26
+ * across implementations and must never be touched by platform-independent
27
+ * code; hence, PGSemaphoreData is declared as an opaque struct here.
28
+ *
29
+ * However, Windows is sufficiently unlike our other ports that it doesn't
30
+ * seem worth insisting on ABI compatibility for Windows too. Hence, on
31
+ * that platform just define PGSemaphore as HANDLE.
32
+ */
33
+ #ifndef USE_WIN32_SEMAPHORES
34
+ typedef struct PGSemaphoreData *PGSemaphore;
35
+ #else
36
+ typedef HANDLE PGSemaphore;
37
+ #endif
38
+
39
+
40
+ /* Report amount of shared memory needed */
41
+ extern Size PGSemaphoreShmemSize(int maxSemas);
42
+
43
+ /* Module initialization (called during postmaster start or shmem reinit) */
44
+ extern void PGReserveSemaphores(int maxSemas);
45
+
46
+ /* Allocate a PGSemaphore structure with initial count 1 */
47
+ extern PGSemaphore PGSemaphoreCreate(void);
48
+
49
+ /* Reset a previously-initialized PGSemaphore to have count 0 */
50
+ extern void PGSemaphoreReset(PGSemaphore sema);
51
+
52
+ /* Lock a semaphore (decrement count), blocking if count would be < 0 */
53
+ extern void PGSemaphoreLock(PGSemaphore sema);
54
+
55
+ /* Unlock a semaphore (increment count) */
56
+ extern void PGSemaphoreUnlock(PGSemaphore sema);
57
+
58
+ /* Lock a semaphore only if able to do so without blocking */
59
+ extern bool PGSemaphoreTryLock(PGSemaphore sema);
60
+
61
+ #endif /* PG_SEMA_H */