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,76 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * numeric.h
4
+ * Definitions for the exact numeric data type of Postgres
5
+ *
6
+ * Original coding 1998, Jan Wieck. Heavily revised 2003, Tom Lane.
7
+ *
8
+ * Copyright (c) 1998-2020, PostgreSQL Global Development Group
9
+ *
10
+ * src/include/utils/numeric.h
11
+ *
12
+ *-------------------------------------------------------------------------
13
+ */
14
+ #ifndef _PG_NUMERIC_H_
15
+ #define _PG_NUMERIC_H_
16
+
17
+ #include "fmgr.h"
18
+
19
+ /*
20
+ * Limit on the precision (and hence scale) specifiable in a NUMERIC typmod.
21
+ * Note that the implementation limit on the length of a numeric value is
22
+ * much larger --- beware of what you use this for!
23
+ */
24
+ #define NUMERIC_MAX_PRECISION 1000
25
+
26
+ /*
27
+ * Internal limits on the scales chosen for calculation results
28
+ */
29
+ #define NUMERIC_MAX_DISPLAY_SCALE NUMERIC_MAX_PRECISION
30
+ #define NUMERIC_MIN_DISPLAY_SCALE 0
31
+
32
+ #define NUMERIC_MAX_RESULT_SCALE (NUMERIC_MAX_PRECISION * 2)
33
+
34
+ /*
35
+ * For inherently inexact calculations such as division and square root,
36
+ * we try to get at least this many significant digits; the idea is to
37
+ * deliver a result no worse than float8 would.
38
+ */
39
+ #define NUMERIC_MIN_SIG_DIGITS 16
40
+
41
+ /* The actual contents of Numeric are private to numeric.c */
42
+ struct NumericData;
43
+ typedef struct NumericData *Numeric;
44
+
45
+ /*
46
+ * fmgr interface macros
47
+ */
48
+
49
+ #define DatumGetNumeric(X) ((Numeric) PG_DETOAST_DATUM(X))
50
+ #define DatumGetNumericCopy(X) ((Numeric) PG_DETOAST_DATUM_COPY(X))
51
+ #define NumericGetDatum(X) PointerGetDatum(X)
52
+ #define PG_GETARG_NUMERIC(n) DatumGetNumeric(PG_GETARG_DATUM(n))
53
+ #define PG_GETARG_NUMERIC_COPY(n) DatumGetNumericCopy(PG_GETARG_DATUM(n))
54
+ #define PG_RETURN_NUMERIC(x) return NumericGetDatum(x)
55
+
56
+ /*
57
+ * Utility functions in numeric.c
58
+ */
59
+ extern bool numeric_is_nan(Numeric num);
60
+ int32 numeric_maximum_size(int32 typmod);
61
+ extern char *numeric_out_sci(Numeric num, int scale);
62
+ extern char *numeric_normalize(Numeric num);
63
+
64
+ extern Numeric numeric_add_opt_error(Numeric num1, Numeric num2,
65
+ bool *have_error);
66
+ extern Numeric numeric_sub_opt_error(Numeric num1, Numeric num2,
67
+ bool *have_error);
68
+ extern Numeric numeric_mul_opt_error(Numeric num1, Numeric num2,
69
+ bool *have_error);
70
+ extern Numeric numeric_div_opt_error(Numeric num1, Numeric num2,
71
+ bool *have_error);
72
+ extern Numeric numeric_mod_opt_error(Numeric num1, Numeric num2,
73
+ bool *have_error);
74
+ extern int32 numeric_int4_opt_error(Numeric num, bool *error);
75
+
76
+ #endif /* _PG_NUMERIC_H_ */
@@ -0,0 +1,136 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * palloc.h
4
+ * POSTGRES memory allocator definitions.
5
+ *
6
+ * This file contains the basic memory allocation interface that is
7
+ * needed by almost every backend module. It is included directly by
8
+ * postgres.h, so the definitions here are automatically available
9
+ * everywhere. Keep it lean!
10
+ *
11
+ * Memory allocation occurs within "contexts". Every chunk obtained from
12
+ * palloc()/MemoryContextAlloc() is allocated within a specific context.
13
+ * The entire contents of a context can be freed easily and quickly by
14
+ * resetting or deleting the context --- this is both faster and less
15
+ * prone to memory-leakage bugs than releasing chunks individually.
16
+ * We organize contexts into context trees to allow fine-grain control
17
+ * over chunk lifetime while preserving the certainty that we will free
18
+ * everything that should be freed. See utils/mmgr/README for more info.
19
+ *
20
+ *
21
+ * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
22
+ * Portions Copyright (c) 1994, Regents of the University of California
23
+ *
24
+ * src/include/utils/palloc.h
25
+ *
26
+ *-------------------------------------------------------------------------
27
+ */
28
+ #ifndef PALLOC_H
29
+ #define PALLOC_H
30
+
31
+ /*
32
+ * Type MemoryContextData is declared in nodes/memnodes.h. Most users
33
+ * of memory allocation should just treat it as an abstract type, so we
34
+ * do not provide the struct contents here.
35
+ */
36
+ typedef struct MemoryContextData *MemoryContext;
37
+
38
+ /*
39
+ * A memory context can have callback functions registered on it. Any such
40
+ * function will be called once just before the context is next reset or
41
+ * deleted. The MemoryContextCallback struct describing such a callback
42
+ * typically would be allocated within the context itself, thereby avoiding
43
+ * any need to manage it explicitly (the reset/delete action will free it).
44
+ */
45
+ typedef void (*MemoryContextCallbackFunction) (void *arg);
46
+
47
+ typedef struct MemoryContextCallback
48
+ {
49
+ MemoryContextCallbackFunction func; /* function to call */
50
+ void *arg; /* argument to pass it */
51
+ struct MemoryContextCallback *next; /* next in list of callbacks */
52
+ } MemoryContextCallback;
53
+
54
+ /*
55
+ * CurrentMemoryContext is the default allocation context for palloc().
56
+ * Avoid accessing it directly! Instead, use MemoryContextSwitchTo()
57
+ * to change the setting.
58
+ */
59
+ extern PGDLLIMPORT __thread MemoryContext CurrentMemoryContext;
60
+
61
+ /*
62
+ * Flags for MemoryContextAllocExtended.
63
+ */
64
+ #define MCXT_ALLOC_HUGE 0x01 /* allow huge allocation (> 1 GB) */
65
+ #define MCXT_ALLOC_NO_OOM 0x02 /* no failure if out-of-memory */
66
+ #define MCXT_ALLOC_ZERO 0x04 /* zero allocated memory */
67
+
68
+ /*
69
+ * Fundamental memory-allocation operations (more are in utils/memutils.h)
70
+ */
71
+ extern void *MemoryContextAlloc(MemoryContext context, Size size);
72
+ extern void *MemoryContextAllocZero(MemoryContext context, Size size);
73
+ extern void *MemoryContextAllocZeroAligned(MemoryContext context, Size size);
74
+ extern void *MemoryContextAllocExtended(MemoryContext context,
75
+ Size size, int flags);
76
+
77
+ extern void *palloc(Size size);
78
+ extern void *palloc0(Size size);
79
+ extern void *palloc_extended(Size size, int flags);
80
+ extern void *repalloc(void *pointer, Size size);
81
+ extern void pfree(void *pointer);
82
+
83
+ /*
84
+ * The result of palloc() is always word-aligned, so we can skip testing
85
+ * alignment of the pointer when deciding which MemSet variant to use.
86
+ * Note that this variant does not offer any advantage, and should not be
87
+ * used, unless its "sz" argument is a compile-time constant; therefore, the
88
+ * issue that it evaluates the argument multiple times isn't a problem in
89
+ * practice.
90
+ */
91
+ #define palloc0fast(sz) \
92
+ ( MemSetTest(0, sz) ? \
93
+ MemoryContextAllocZeroAligned(CurrentMemoryContext, sz) : \
94
+ MemoryContextAllocZero(CurrentMemoryContext, sz) )
95
+
96
+ /* Higher-limit allocators. */
97
+ extern void *MemoryContextAllocHuge(MemoryContext context, Size size);
98
+ extern void *repalloc_huge(void *pointer, Size size);
99
+
100
+ /*
101
+ * Although this header file is nominally backend-only, certain frontend
102
+ * programs like pg_controldata include it via postgres.h. For some compilers
103
+ * it's necessary to hide the inline definition of MemoryContextSwitchTo in
104
+ * this scenario; hence the #ifndef FRONTEND.
105
+ */
106
+
107
+ #ifndef FRONTEND
108
+ static inline MemoryContext
109
+ MemoryContextSwitchTo(MemoryContext context)
110
+ {
111
+ MemoryContext old = CurrentMemoryContext;
112
+
113
+ CurrentMemoryContext = context;
114
+ return old;
115
+ }
116
+ #endif /* FRONTEND */
117
+
118
+ /* Registration of memory context reset/delete callbacks */
119
+ extern void MemoryContextRegisterResetCallback(MemoryContext context,
120
+ MemoryContextCallback *cb);
121
+
122
+ /*
123
+ * These are like standard strdup() except the copied string is
124
+ * allocated in a context, not with malloc().
125
+ */
126
+ extern char *MemoryContextStrdup(MemoryContext context, const char *string);
127
+ extern char *pstrdup(const char *in);
128
+ extern char *pnstrdup(const char *in, Size len);
129
+
130
+ extern char *pchomp(const char *in);
131
+
132
+ /* sprintf into a palloc'd buffer --- these are in psprintf.c */
133
+ extern char *psprintf(const char *fmt,...) pg_attribute_printf(1, 2);
134
+ extern size_t pvsnprintf(char *buf, size_t len, const char *fmt, va_list args) pg_attribute_printf(3, 0);
135
+
136
+ #endif /* PALLOC_H */
@@ -0,0 +1,102 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * partcache.h
4
+ *
5
+ * Copyright (c) 1996-2020, PostgreSQL Global Development Group
6
+ *
7
+ * src/include/utils/partcache.h
8
+ *
9
+ *-------------------------------------------------------------------------
10
+ */
11
+ #ifndef PARTCACHE_H
12
+ #define PARTCACHE_H
13
+
14
+ #include "access/attnum.h"
15
+ #include "fmgr.h"
16
+ #include "nodes/pg_list.h"
17
+ #include "nodes/primnodes.h"
18
+ #include "partitioning/partdefs.h"
19
+ #include "utils/relcache.h"
20
+
21
+ /*
22
+ * Information about the partition key of a relation
23
+ */
24
+ typedef struct PartitionKeyData
25
+ {
26
+ char strategy; /* partitioning strategy */
27
+ int16 partnatts; /* number of columns in the partition key */
28
+ AttrNumber *partattrs; /* attribute numbers of columns in the
29
+ * partition key or 0 if it's an expr */
30
+ List *partexprs; /* list of expressions in the partitioning
31
+ * key, one for each zero-valued partattrs */
32
+
33
+ Oid *partopfamily; /* OIDs of operator families */
34
+ Oid *partopcintype; /* OIDs of opclass declared input data types */
35
+ FmgrInfo *partsupfunc; /* lookup info for support funcs */
36
+
37
+ /* Partitioning collation per attribute */
38
+ Oid *partcollation;
39
+
40
+ /* Type information per attribute */
41
+ Oid *parttypid;
42
+ int32 *parttypmod;
43
+ int16 *parttyplen;
44
+ bool *parttypbyval;
45
+ char *parttypalign;
46
+ Oid *parttypcoll;
47
+ } PartitionKeyData;
48
+
49
+
50
+ extern PartitionKey RelationGetPartitionKey(Relation rel);
51
+ extern List *RelationGetPartitionQual(Relation rel);
52
+ extern Expr *get_partition_qual_relid(Oid relid);
53
+
54
+ /*
55
+ * PartitionKey inquiry functions
56
+ */
57
+ static inline int
58
+ get_partition_strategy(PartitionKey key)
59
+ {
60
+ return key->strategy;
61
+ }
62
+
63
+ static inline int
64
+ get_partition_natts(PartitionKey key)
65
+ {
66
+ return key->partnatts;
67
+ }
68
+
69
+ static inline List *
70
+ get_partition_exprs(PartitionKey key)
71
+ {
72
+ return key->partexprs;
73
+ }
74
+
75
+ /*
76
+ * PartitionKey inquiry functions - one column
77
+ */
78
+ static inline int16
79
+ get_partition_col_attnum(PartitionKey key, int col)
80
+ {
81
+ return key->partattrs[col];
82
+ }
83
+
84
+ static inline Oid
85
+ get_partition_col_typid(PartitionKey key, int col)
86
+ {
87
+ return key->parttypid[col];
88
+ }
89
+
90
+ static inline int32
91
+ get_partition_col_typmod(PartitionKey key, int col)
92
+ {
93
+ return key->parttypmod[col];
94
+ }
95
+
96
+ static inline Oid
97
+ get_partition_col_collation(PartitionKey key, int col)
98
+ {
99
+ return key->partcollation[col];
100
+ }
101
+
102
+ #endif /* PARTCACHE_H */
@@ -0,0 +1,119 @@
1
+ /*-----------------------------------------------------------------------
2
+ *
3
+ * PostgreSQL locale utilities
4
+ *
5
+ * src/include/utils/pg_locale.h
6
+ *
7
+ * Copyright (c) 2002-2020, PostgreSQL Global Development Group
8
+ *
9
+ *-----------------------------------------------------------------------
10
+ */
11
+
12
+ #ifndef _PG_LOCALE_
13
+ #define _PG_LOCALE_
14
+
15
+ #if defined(LOCALE_T_IN_XLOCALE) || defined(WCSTOMBS_L_IN_XLOCALE)
16
+ #include <xlocale.h>
17
+ #endif
18
+ #ifdef USE_ICU
19
+ #include <unicode/ucol.h>
20
+ #endif
21
+
22
+ #include "utils/guc.h"
23
+
24
+ #ifdef USE_ICU
25
+ /*
26
+ * ucol_strcollUTF8() was introduced in ICU 50, but it is buggy before ICU 53.
27
+ * (see
28
+ * <https://www.postgresql.org/message-id/flat/f1438ec6-22aa-4029-9a3b-26f79d330e72%40manitou-mail.org>)
29
+ */
30
+ #if U_ICU_VERSION_MAJOR_NUM >= 53
31
+ #define HAVE_UCOL_STRCOLLUTF8 1
32
+ #else
33
+ #undef HAVE_UCOL_STRCOLLUTF8
34
+ #endif
35
+ #endif
36
+
37
+
38
+ /* GUC settings */
39
+ extern char *locale_messages;
40
+ extern char *locale_monetary;
41
+ extern char *locale_numeric;
42
+ extern char *locale_time;
43
+
44
+ /* lc_time localization cache */
45
+ extern char *localized_abbrev_days[];
46
+ extern char *localized_full_days[];
47
+ extern char *localized_abbrev_months[];
48
+ extern char *localized_full_months[];
49
+
50
+
51
+ extern bool check_locale_messages(char **newval, void **extra, GucSource source);
52
+ extern void assign_locale_messages(const char *newval, void *extra);
53
+ extern bool check_locale_monetary(char **newval, void **extra, GucSource source);
54
+ extern void assign_locale_monetary(const char *newval, void *extra);
55
+ extern bool check_locale_numeric(char **newval, void **extra, GucSource source);
56
+ extern void assign_locale_numeric(const char *newval, void *extra);
57
+ extern bool check_locale_time(char **newval, void **extra, GucSource source);
58
+ extern void assign_locale_time(const char *newval, void *extra);
59
+
60
+ extern bool check_locale(int category, const char *locale, char **canonname);
61
+ extern char *pg_perm_setlocale(int category, const char *locale);
62
+ extern void check_strxfrm_bug(void);
63
+
64
+ extern bool lc_collate_is_c(Oid collation);
65
+ extern bool lc_ctype_is_c(Oid collation);
66
+
67
+ /*
68
+ * Return the POSIX lconv struct (contains number/money formatting
69
+ * information) with locale information for all categories.
70
+ */
71
+ extern struct lconv *PGLC_localeconv(void);
72
+
73
+ extern void cache_locale_time(void);
74
+
75
+
76
+ /*
77
+ * We define our own wrapper around locale_t so we can keep the same
78
+ * function signatures for all builds, while not having to create a
79
+ * fake version of the standard type locale_t in the global namespace.
80
+ * pg_locale_t is occasionally checked for truth, so make it a pointer.
81
+ */
82
+ struct pg_locale_struct
83
+ {
84
+ char provider;
85
+ bool deterministic;
86
+ union
87
+ {
88
+ #ifdef HAVE_LOCALE_T
89
+ locale_t lt;
90
+ #endif
91
+ #ifdef USE_ICU
92
+ struct
93
+ {
94
+ const char *locale;
95
+ UCollator *ucol;
96
+ } icu;
97
+ #endif
98
+ int dummy; /* in case we have neither LOCALE_T nor ICU */
99
+ } info;
100
+ };
101
+
102
+ typedef struct pg_locale_struct *pg_locale_t;
103
+
104
+ extern pg_locale_t pg_newlocale_from_collation(Oid collid);
105
+
106
+ extern char *get_collation_actual_version(char collprovider, const char *collcollate);
107
+
108
+ #ifdef USE_ICU
109
+ extern int32_t icu_to_uchar(UChar **buff_uchar, const char *buff, size_t nbytes);
110
+ extern int32_t icu_from_uchar(char **result, const UChar *buff_uchar, int32_t len_uchar);
111
+ #endif
112
+
113
+ /* These functions convert from/to libc's wchar_t, *not* pg_wchar_t */
114
+ extern size_t wchar2char(char *to, const wchar_t *from, size_t tolen,
115
+ pg_locale_t locale);
116
+ extern size_t char2wchar(wchar_t *to, size_t tolen,
117
+ const char *from, size_t fromlen, pg_locale_t locale);
118
+
119
+ #endif /* _PG_LOCALE_ */
@@ -0,0 +1,29 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * pg_lsn.h
4
+ * Declarations for operations on log sequence numbers (LSNs) of
5
+ * PostgreSQL.
6
+ *
7
+ *
8
+ * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
9
+ * Portions Copyright (c) 1994, Regents of the University of California
10
+ *
11
+ * src/include/utils/pg_lsn.h
12
+ *
13
+ *-------------------------------------------------------------------------
14
+ */
15
+ #ifndef PG_LSN_H
16
+ #define PG_LSN_H
17
+
18
+ #include "access/xlogdefs.h"
19
+ #include "fmgr.h"
20
+
21
+ #define DatumGetLSN(X) ((XLogRecPtr) DatumGetInt64(X))
22
+ #define LSNGetDatum(X) (Int64GetDatum((int64) (X)))
23
+
24
+ #define PG_GETARG_LSN(n) DatumGetLSN(PG_GETARG_DATUM(n))
25
+ #define PG_RETURN_LSN(x) return LSNGetDatum(x)
26
+
27
+ extern XLogRecPtr pg_lsn_in_internal(const char *str, bool *have_error);
28
+
29
+ #endif /* PG_LSN_H */