pg_query 4.2.3 → 5.0.0

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 (486) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -0
  3. data/README.md +6 -8
  4. data/Rakefile +3 -3
  5. data/ext/pg_query/extconf.rb +1 -3
  6. data/ext/pg_query/include/access/amapi.h +3 -1
  7. data/ext/pg_query/include/access/attmap.h +5 -3
  8. data/ext/pg_query/include/access/attnum.h +1 -1
  9. data/ext/pg_query/include/access/clog.h +1 -1
  10. data/ext/pg_query/include/access/commit_ts.h +1 -1
  11. data/ext/pg_query/include/access/detoast.h +1 -1
  12. data/ext/pg_query/include/access/genam.h +7 -5
  13. data/ext/pg_query/include/access/gin.h +16 -3
  14. data/ext/pg_query/include/access/htup.h +1 -1
  15. data/ext/pg_query/include/access/htup_details.h +6 -2
  16. data/ext/pg_query/include/access/itup.h +61 -58
  17. data/ext/pg_query/include/access/parallel.h +2 -2
  18. data/ext/pg_query/include/access/printtup.h +1 -1
  19. data/ext/pg_query/include/access/relation.h +1 -1
  20. data/ext/pg_query/include/access/relscan.h +1 -1
  21. data/ext/pg_query/include/access/rmgrlist.h +2 -2
  22. data/ext/pg_query/include/access/sdir.h +12 -3
  23. data/ext/pg_query/include/access/skey.h +1 -1
  24. data/ext/pg_query/include/access/stratnum.h +1 -1
  25. data/ext/pg_query/include/access/sysattr.h +1 -1
  26. data/ext/pg_query/include/access/table.h +1 -1
  27. data/ext/pg_query/include/access/tableam.h +68 -45
  28. data/ext/pg_query/include/access/toast_compression.h +1 -1
  29. data/ext/pg_query/include/access/transam.h +1 -1
  30. data/ext/pg_query/include/access/tsmapi.h +82 -0
  31. data/ext/pg_query/include/access/tupconvert.h +5 -2
  32. data/ext/pg_query/include/access/tupdesc.h +2 -2
  33. data/ext/pg_query/include/access/tupmacs.h +58 -98
  34. data/ext/pg_query/include/access/twophase.h +2 -2
  35. data/ext/pg_query/include/access/xact.h +25 -18
  36. data/ext/pg_query/include/access/xlog.h +15 -16
  37. data/ext/pg_query/include/access/xlog_internal.h +100 -62
  38. data/ext/pg_query/include/access/xlogbackup.h +41 -0
  39. data/ext/pg_query/include/access/xlogdefs.h +6 -25
  40. data/ext/pg_query/include/access/xlogprefetcher.h +1 -1
  41. data/ext/pg_query/include/access/xlogreader.h +7 -6
  42. data/ext/pg_query/include/access/xlogrecord.h +17 -5
  43. data/ext/pg_query/include/access/xlogrecovery.h +4 -3
  44. data/ext/pg_query/include/archive/archive_module.h +59 -0
  45. data/ext/pg_query/include/c.h +144 -156
  46. data/ext/pg_query/include/catalog/catalog.h +4 -3
  47. data/ext/pg_query/include/catalog/catversion.h +6 -2
  48. data/ext/pg_query/include/catalog/dependency.h +5 -4
  49. data/ext/pg_query/include/catalog/genbki.h +7 -6
  50. data/ext/pg_query/include/catalog/index.h +4 -4
  51. data/ext/pg_query/include/catalog/indexing.h +1 -1
  52. data/ext/pg_query/include/catalog/namespace.h +2 -2
  53. data/ext/pg_query/include/catalog/objectaccess.h +10 -8
  54. data/ext/pg_query/include/catalog/objectaddress.h +3 -3
  55. data/ext/pg_query/include/catalog/pg_aggregate.h +1 -1
  56. data/ext/pg_query/include/catalog/pg_aggregate_d.h +1 -1
  57. data/ext/pg_query/include/catalog/pg_am.h +1 -1
  58. data/ext/pg_query/include/catalog/pg_am_d.h +1 -1
  59. data/ext/pg_query/include/catalog/pg_attribute.h +19 -17
  60. data/ext/pg_query/include/catalog/pg_attribute_d.h +19 -19
  61. data/ext/pg_query/include/catalog/pg_authid.h +1 -1
  62. data/ext/pg_query/include/catalog/pg_authid_d.h +3 -1
  63. data/ext/pg_query/include/catalog/pg_class.h +1 -1
  64. data/ext/pg_query/include/catalog/pg_class_d.h +1 -1
  65. data/ext/pg_query/include/catalog/pg_collation.h +3 -1
  66. data/ext/pg_query/include/catalog/pg_collation_d.h +4 -3
  67. data/ext/pg_query/include/catalog/pg_constraint.h +2 -2
  68. data/ext/pg_query/include/catalog/pg_constraint_d.h +1 -1
  69. data/ext/pg_query/include/catalog/pg_control.h +9 -1
  70. data/ext/pg_query/include/catalog/pg_conversion.h +2 -2
  71. data/ext/pg_query/include/catalog/pg_conversion_d.h +1 -1
  72. data/ext/pg_query/include/catalog/pg_database.h +124 -0
  73. data/ext/pg_query/include/catalog/pg_database_d.h +52 -0
  74. data/ext/pg_query/include/catalog/pg_depend.h +1 -1
  75. data/ext/pg_query/include/catalog/pg_depend_d.h +1 -1
  76. data/ext/pg_query/include/catalog/pg_event_trigger.h +1 -1
  77. data/ext/pg_query/include/catalog/pg_event_trigger_d.h +1 -1
  78. data/ext/pg_query/include/catalog/pg_index.h +1 -1
  79. data/ext/pg_query/include/catalog/pg_index_d.h +1 -1
  80. data/ext/pg_query/include/catalog/pg_language.h +1 -1
  81. data/ext/pg_query/include/catalog/pg_language_d.h +1 -1
  82. data/ext/pg_query/include/catalog/pg_namespace.h +1 -1
  83. data/ext/pg_query/include/catalog/pg_namespace_d.h +1 -1
  84. data/ext/pg_query/include/catalog/pg_opclass.h +1 -1
  85. data/ext/pg_query/include/catalog/pg_opclass_d.h +1 -1
  86. data/ext/pg_query/include/catalog/pg_operator.h +1 -1
  87. data/ext/pg_query/include/catalog/pg_operator_d.h +1 -1
  88. data/ext/pg_query/include/catalog/pg_opfamily.h +3 -2
  89. data/ext/pg_query/include/catalog/pg_opfamily_d.h +4 -2
  90. data/ext/pg_query/include/catalog/pg_partitioned_table.h +1 -1
  91. data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +1 -1
  92. data/ext/pg_query/include/catalog/pg_proc.h +1 -1
  93. data/ext/pg_query/include/catalog/pg_proc_d.h +1 -1
  94. data/ext/pg_query/include/catalog/pg_publication.h +2 -5
  95. data/ext/pg_query/include/catalog/pg_publication_d.h +1 -1
  96. data/ext/pg_query/include/catalog/pg_replication_origin.h +1 -1
  97. data/ext/pg_query/include/catalog/pg_replication_origin_d.h +1 -1
  98. data/ext/pg_query/include/catalog/pg_statistic.h +1 -1
  99. data/ext/pg_query/include/catalog/pg_statistic_d.h +1 -1
  100. data/ext/pg_query/include/catalog/pg_statistic_ext.h +1 -1
  101. data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +1 -1
  102. data/ext/pg_query/include/catalog/pg_transform.h +1 -1
  103. data/ext/pg_query/include/catalog/pg_transform_d.h +1 -1
  104. data/ext/pg_query/include/catalog/pg_trigger.h +1 -1
  105. data/ext/pg_query/include/catalog/pg_trigger_d.h +1 -1
  106. data/ext/pg_query/include/catalog/pg_ts_config.h +1 -1
  107. data/ext/pg_query/include/catalog/pg_ts_config_d.h +1 -1
  108. data/ext/pg_query/include/catalog/pg_ts_dict.h +1 -1
  109. data/ext/pg_query/include/catalog/pg_ts_dict_d.h +1 -1
  110. data/ext/pg_query/include/catalog/pg_ts_parser.h +1 -1
  111. data/ext/pg_query/include/catalog/pg_ts_parser_d.h +1 -1
  112. data/ext/pg_query/include/catalog/pg_ts_template.h +1 -1
  113. data/ext/pg_query/include/catalog/pg_ts_template_d.h +1 -1
  114. data/ext/pg_query/include/catalog/pg_type.h +1 -1
  115. data/ext/pg_query/include/catalog/pg_type_d.h +1 -1
  116. data/ext/pg_query/include/catalog/storage.h +6 -6
  117. data/ext/pg_query/include/commands/async.h +1 -1
  118. data/ext/pg_query/include/commands/dbcommands.h +2 -1
  119. data/ext/pg_query/include/commands/defrem.h +2 -1
  120. data/ext/pg_query/include/commands/event_trigger.h +1 -1
  121. data/ext/pg_query/include/commands/explain.h +3 -1
  122. data/ext/pg_query/include/commands/prepare.h +1 -1
  123. data/ext/pg_query/include/commands/tablespace.h +4 -4
  124. data/ext/pg_query/include/commands/trigger.h +15 -14
  125. data/ext/pg_query/include/commands/user.h +9 -3
  126. data/ext/pg_query/include/commands/vacuum.h +60 -14
  127. data/ext/pg_query/include/common/cryptohash.h +39 -0
  128. data/ext/pg_query/include/common/file_perm.h +1 -1
  129. data/ext/pg_query/include/common/hashfn.h +1 -1
  130. data/ext/pg_query/include/common/int.h +437 -0
  131. data/ext/pg_query/include/common/ip.h +4 -2
  132. data/ext/pg_query/include/common/keywords.h +1 -1
  133. data/ext/pg_query/include/common/kwlookup.h +2 -2
  134. data/ext/pg_query/include/common/pg_prng.h +3 -2
  135. data/ext/pg_query/include/common/relpath.h +20 -13
  136. data/ext/pg_query/include/common/scram-common.h +70 -0
  137. data/ext/pg_query/include/common/sha2.h +32 -0
  138. data/ext/pg_query/include/common/string.h +5 -3
  139. data/ext/pg_query/include/common/unicode_east_asian_fw_table.h +10 -10
  140. data/ext/pg_query/include/common/{unicode_combining_table.h → unicode_nonspacing_table.h} +31 -13
  141. data/ext/pg_query/include/copyfuncs.funcs.c +5013 -0
  142. data/ext/pg_query/include/copyfuncs.switch.c +938 -0
  143. data/ext/pg_query/include/datatype/timestamp.h +11 -4
  144. data/ext/pg_query/include/equalfuncs.funcs.c +3097 -0
  145. data/ext/pg_query/include/equalfuncs.switch.c +785 -0
  146. data/ext/pg_query/include/executor/execdesc.h +1 -1
  147. data/ext/pg_query/include/executor/executor.h +34 -17
  148. data/ext/pg_query/include/executor/functions.h +1 -1
  149. data/ext/pg_query/include/executor/instrument.h +1 -1
  150. data/ext/pg_query/include/executor/spi.h +2 -2
  151. data/ext/pg_query/include/executor/tablefunc.h +1 -1
  152. data/ext/pg_query/include/executor/tuptable.h +18 -11
  153. data/ext/pg_query/include/fmgr.h +21 -2
  154. data/ext/pg_query/include/foreign/fdwapi.h +294 -0
  155. data/ext/pg_query/include/funcapi.h +12 -12
  156. data/ext/pg_query/include/gram.h +1127 -0
  157. data/ext/pg_query/include/{parser/gramparse.h → gramparse.h} +4 -4
  158. data/ext/pg_query/include/jit/jit.h +2 -2
  159. data/ext/pg_query/include/kwlist_d.h +534 -510
  160. data/ext/pg_query/include/lib/dshash.h +4 -1
  161. data/ext/pg_query/include/lib/ilist.h +435 -22
  162. data/ext/pg_query/include/lib/pairingheap.h +1 -1
  163. data/ext/pg_query/include/lib/simplehash.h +9 -9
  164. data/ext/pg_query/include/lib/sort_template.h +1 -1
  165. data/ext/pg_query/include/lib/stringinfo.h +3 -3
  166. data/ext/pg_query/include/libpq/auth.h +8 -2
  167. data/ext/pg_query/include/libpq/crypt.h +1 -1
  168. data/ext/pg_query/include/libpq/hba.h +24 -17
  169. data/ext/pg_query/include/libpq/libpq-be.h +36 -25
  170. data/ext/pg_query/include/libpq/libpq.h +1 -1
  171. data/ext/pg_query/include/libpq/pqcomm.h +10 -41
  172. data/ext/pg_query/include/libpq/pqformat.h +2 -2
  173. data/ext/pg_query/include/libpq/pqsignal.h +22 -10
  174. data/ext/pg_query/include/libpq/sasl.h +136 -0
  175. data/ext/pg_query/include/libpq/scram.h +37 -0
  176. data/ext/pg_query/include/mb/pg_wchar.h +35 -18
  177. data/ext/pg_query/include/mb/stringinfo_mb.h +1 -1
  178. data/ext/pg_query/include/miscadmin.h +26 -14
  179. data/ext/pg_query/include/nodes/bitmapset.h +11 -7
  180. data/ext/pg_query/include/nodes/execnodes.h +83 -30
  181. data/ext/pg_query/include/nodes/extensible.h +5 -3
  182. data/ext/pg_query/include/nodes/lockoptions.h +1 -1
  183. data/ext/pg_query/include/nodes/makefuncs.h +14 -2
  184. data/ext/pg_query/include/nodes/memnodes.h +7 -4
  185. data/ext/pg_query/include/nodes/miscnodes.h +56 -0
  186. data/ext/pg_query/include/nodes/nodeFuncs.h +89 -29
  187. data/ext/pg_query/include/nodes/nodes.h +95 -510
  188. data/ext/pg_query/include/nodes/nodetags.h +471 -0
  189. data/ext/pg_query/include/nodes/params.h +3 -3
  190. data/ext/pg_query/include/nodes/parsenodes.h +377 -139
  191. data/ext/pg_query/include/nodes/pathnodes.h +1090 -440
  192. data/ext/pg_query/include/nodes/pg_list.h +30 -7
  193. data/ext/pg_query/include/nodes/plannodes.h +367 -124
  194. data/ext/pg_query/include/nodes/primnodes.h +670 -222
  195. data/ext/pg_query/include/nodes/print.h +1 -1
  196. data/ext/pg_query/include/{utils → nodes}/queryjumble.h +5 -7
  197. data/ext/pg_query/include/nodes/replnodes.h +111 -0
  198. data/ext/pg_query/include/nodes/supportnodes.h +346 -0
  199. data/ext/pg_query/include/nodes/tidbitmap.h +1 -1
  200. data/ext/pg_query/include/nodes/value.h +12 -2
  201. data/ext/pg_query/include/optimizer/cost.h +6 -4
  202. data/ext/pg_query/include/optimizer/geqo.h +1 -1
  203. data/ext/pg_query/include/optimizer/geqo_gene.h +1 -1
  204. data/ext/pg_query/include/optimizer/optimizer.h +8 -8
  205. data/ext/pg_query/include/optimizer/paths.h +16 -7
  206. data/ext/pg_query/include/optimizer/planmain.h +3 -6
  207. data/ext/pg_query/include/parser/analyze.h +4 -3
  208. data/ext/pg_query/include/parser/kwlist.h +12 -1
  209. data/ext/pg_query/include/parser/parse_agg.h +4 -2
  210. data/ext/pg_query/include/parser/parse_coerce.h +3 -1
  211. data/ext/pg_query/include/parser/parse_expr.h +1 -1
  212. data/ext/pg_query/include/parser/parse_func.h +1 -1
  213. data/ext/pg_query/include/parser/parse_node.h +22 -4
  214. data/ext/pg_query/include/parser/parse_oper.h +3 -3
  215. data/ext/pg_query/include/parser/parse_relation.h +8 -3
  216. data/ext/pg_query/include/parser/parse_type.h +4 -3
  217. data/ext/pg_query/include/parser/parser.h +1 -1
  218. data/ext/pg_query/include/parser/parsetree.h +1 -1
  219. data/ext/pg_query/include/parser/scanner.h +2 -2
  220. data/ext/pg_query/include/parser/scansup.h +1 -1
  221. data/ext/pg_query/include/partitioning/partdefs.h +1 -1
  222. data/ext/pg_query/include/pg_config.h +21 -216
  223. data/ext/pg_query/include/pg_config_manual.h +8 -46
  224. data/ext/pg_query/include/pg_getopt.h +1 -1
  225. data/ext/pg_query/include/pg_query.h +27 -3
  226. data/ext/pg_query/include/pg_query_enum_defs.c +311 -149
  227. data/ext/pg_query/include/pg_query_fingerprint_conds.c +545 -489
  228. data/ext/pg_query/include/pg_query_fingerprint_defs.c +5092 -4432
  229. data/ext/pg_query/include/pg_query_outfuncs_conds.c +385 -343
  230. data/ext/pg_query/include/pg_query_outfuncs_defs.c +1294 -1161
  231. data/ext/pg_query/include/pg_query_readfuncs_conds.c +137 -123
  232. data/ext/pg_query/include/pg_query_readfuncs_defs.c +1657 -1496
  233. data/ext/pg_query/include/pg_trace.h +1 -1
  234. data/ext/pg_query/include/pgstat.h +172 -93
  235. data/ext/pg_query/include/pgtime.h +3 -3
  236. data/ext/pg_query/include/pl_gram.h +64 -62
  237. data/ext/pg_query/include/pl_reserved_kwlist.h +1 -1
  238. data/ext/pg_query/include/pl_reserved_kwlist_d.h +1 -1
  239. data/ext/pg_query/include/pl_unreserved_kwlist.h +2 -1
  240. data/ext/pg_query/include/pl_unreserved_kwlist_d.h +48 -46
  241. data/ext/pg_query/include/plpgsql.h +17 -22
  242. data/ext/pg_query/include/port/atomics/arch-arm.h +3 -3
  243. data/ext/pg_query/include/port/atomics/arch-ppc.h +21 -21
  244. data/ext/pg_query/include/port/atomics/arch-x86.h +2 -2
  245. data/ext/pg_query/include/port/atomics/fallback.h +3 -3
  246. data/ext/pg_query/include/port/atomics/generic-gcc.h +1 -1
  247. data/ext/pg_query/include/port/atomics/generic.h +1 -1
  248. data/ext/pg_query/include/port/atomics.h +2 -7
  249. data/ext/pg_query/include/port/pg_bitutils.h +62 -25
  250. data/ext/pg_query/include/port/pg_bswap.h +1 -1
  251. data/ext/pg_query/include/port/pg_crc32c.h +1 -1
  252. data/ext/pg_query/include/port/simd.h +375 -0
  253. data/ext/pg_query/include/port.h +42 -75
  254. data/ext/pg_query/include/portability/instr_time.h +81 -140
  255. data/ext/pg_query/include/postgres.h +205 -434
  256. data/ext/pg_query/include/postgres_ext.h +0 -1
  257. data/ext/pg_query/include/postmaster/autovacuum.h +1 -4
  258. data/ext/pg_query/include/postmaster/auxprocess.h +1 -1
  259. data/ext/pg_query/include/postmaster/bgworker.h +2 -2
  260. data/ext/pg_query/include/postmaster/bgworker_internals.h +1 -1
  261. data/ext/pg_query/include/postmaster/bgwriter.h +2 -2
  262. data/ext/pg_query/include/postmaster/fork_process.h +1 -1
  263. data/ext/pg_query/include/postmaster/interrupt.h +1 -1
  264. data/ext/pg_query/include/postmaster/pgarch.h +1 -38
  265. data/ext/pg_query/include/postmaster/postmaster.h +5 -2
  266. data/ext/pg_query/include/postmaster/startup.h +3 -1
  267. data/ext/pg_query/include/postmaster/syslogger.h +2 -2
  268. data/ext/pg_query/include/postmaster/walwriter.h +3 -1
  269. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +6186 -5585
  270. data/ext/pg_query/include/protobuf/pg_query.pb.h +112443 -91222
  271. data/ext/pg_query/include/regex/regex.h +9 -6
  272. data/ext/pg_query/include/replication/logicallauncher.h +6 -1
  273. data/ext/pg_query/include/replication/logicalproto.h +30 -10
  274. data/ext/pg_query/include/replication/logicalworker.h +14 -1
  275. data/ext/pg_query/include/replication/origin.h +4 -4
  276. data/ext/pg_query/include/replication/reorderbuffer.h +113 -45
  277. data/ext/pg_query/include/replication/slot.h +25 -6
  278. data/ext/pg_query/include/replication/syncrep.h +2 -8
  279. data/ext/pg_query/include/replication/walreceiver.h +15 -9
  280. data/ext/pg_query/include/replication/walsender.h +13 -13
  281. data/ext/pg_query/include/rewrite/prs2lock.h +1 -1
  282. data/ext/pg_query/include/rewrite/rewriteHandler.h +1 -4
  283. data/ext/pg_query/include/rewrite/rewriteManip.h +11 -2
  284. data/ext/pg_query/include/rewrite/rewriteSupport.h +1 -1
  285. data/ext/pg_query/include/src_backend_nodes_copyfuncs.funcs.c +5321 -0
  286. data/ext/pg_query/include/src_backend_nodes_equalfuncs.funcs.c +3354 -0
  287. data/ext/pg_query/include/storage/backendid.h +1 -1
  288. data/ext/pg_query/include/storage/block.h +24 -31
  289. data/ext/pg_query/include/storage/buf.h +1 -1
  290. data/ext/pg_query/include/storage/bufmgr.h +183 -87
  291. data/ext/pg_query/include/storage/bufpage.h +146 -93
  292. data/ext/pg_query/include/storage/condition_variable.h +2 -2
  293. data/ext/pg_query/include/storage/dsm.h +3 -6
  294. data/ext/pg_query/include/storage/dsm_impl.h +4 -1
  295. data/ext/pg_query/include/storage/fd.h +24 -20
  296. data/ext/pg_query/include/storage/fileset.h +1 -1
  297. data/ext/pg_query/include/storage/ipc.h +1 -1
  298. data/ext/pg_query/include/storage/item.h +1 -1
  299. data/ext/pg_query/include/storage/itemid.h +1 -1
  300. data/ext/pg_query/include/storage/itemptr.h +94 -57
  301. data/ext/pg_query/include/storage/large_object.h +1 -1
  302. data/ext/pg_query/include/storage/latch.h +9 -1
  303. data/ext/pg_query/include/storage/lmgr.h +6 -1
  304. data/ext/pg_query/include/storage/lock.h +21 -13
  305. data/ext/pg_query/include/storage/lockdefs.h +3 -3
  306. data/ext/pg_query/include/storage/lwlock.h +16 -2
  307. data/ext/pg_query/include/storage/off.h +1 -1
  308. data/ext/pg_query/include/storage/pg_sema.h +1 -1
  309. data/ext/pg_query/include/storage/pg_shmem.h +1 -1
  310. data/ext/pg_query/include/storage/pmsignal.h +1 -1
  311. data/ext/pg_query/include/storage/predicate.h +2 -2
  312. data/ext/pg_query/include/storage/proc.h +22 -17
  313. data/ext/pg_query/include/storage/procarray.h +3 -2
  314. data/ext/pg_query/include/storage/proclist_types.h +1 -1
  315. data/ext/pg_query/include/storage/procsignal.h +3 -1
  316. data/ext/pg_query/include/storage/relfilelocator.h +99 -0
  317. data/ext/pg_query/include/storage/s_lock.h +66 -309
  318. data/ext/pg_query/include/storage/sharedfileset.h +1 -1
  319. data/ext/pg_query/include/storage/shm_mq.h +1 -1
  320. data/ext/pg_query/include/storage/shm_toc.h +1 -1
  321. data/ext/pg_query/include/storage/shmem.h +1 -23
  322. data/ext/pg_query/include/storage/sinval.h +3 -3
  323. data/ext/pg_query/include/storage/sinvaladt.h +4 -2
  324. data/ext/pg_query/include/storage/smgr.h +12 -10
  325. data/ext/pg_query/include/storage/spin.h +1 -1
  326. data/ext/pg_query/include/storage/standby.h +9 -8
  327. data/ext/pg_query/include/storage/standbydefs.h +1 -1
  328. data/ext/pg_query/include/storage/sync.h +3 -3
  329. data/ext/pg_query/include/tcop/cmdtag.h +7 -2
  330. data/ext/pg_query/include/tcop/cmdtaglist.h +1 -1
  331. data/ext/pg_query/include/tcop/deparse_utility.h +1 -1
  332. data/ext/pg_query/include/tcop/dest.h +1 -3
  333. data/ext/pg_query/include/tcop/fastpath.h +1 -1
  334. data/ext/pg_query/include/tcop/pquery.h +1 -1
  335. data/ext/pg_query/include/tcop/tcopprot.h +1 -4
  336. data/ext/pg_query/include/tcop/utility.h +1 -1
  337. data/ext/pg_query/include/tsearch/ts_cache.h +2 -4
  338. data/ext/pg_query/include/utils/acl.h +26 -81
  339. data/ext/pg_query/include/utils/aclchk_internal.h +1 -1
  340. data/ext/pg_query/include/utils/array.h +19 -1
  341. data/ext/pg_query/include/utils/backend_progress.h +2 -1
  342. data/ext/pg_query/include/utils/backend_status.h +24 -3
  343. data/ext/pg_query/include/utils/builtins.h +14 -5
  344. data/ext/pg_query/include/utils/bytea.h +1 -1
  345. data/ext/pg_query/include/utils/catcache.h +1 -1
  346. data/ext/pg_query/include/utils/date.h +37 -9
  347. data/ext/pg_query/include/utils/datetime.h +41 -21
  348. data/ext/pg_query/include/utils/datum.h +1 -1
  349. data/ext/pg_query/include/utils/dsa.h +5 -1
  350. data/ext/pg_query/include/utils/elog.h +101 -26
  351. data/ext/pg_query/include/utils/expandeddatum.h +14 -3
  352. data/ext/pg_query/include/utils/expandedrecord.h +14 -4
  353. data/ext/pg_query/include/utils/float.h +7 -6
  354. data/ext/pg_query/include/utils/fmgroids.h +54 -1
  355. data/ext/pg_query/include/utils/fmgrprotos.h +45 -3
  356. data/ext/pg_query/include/utils/fmgrtab.h +1 -1
  357. data/ext/pg_query/include/utils/guc.h +55 -82
  358. data/ext/pg_query/include/utils/guc_hooks.h +163 -0
  359. data/ext/pg_query/include/utils/guc_tables.h +49 -3
  360. data/ext/pg_query/include/utils/hsearch.h +1 -1
  361. data/ext/pg_query/include/utils/inval.h +3 -3
  362. data/ext/pg_query/include/utils/logtape.h +77 -0
  363. data/ext/pg_query/include/utils/lsyscache.h +5 -1
  364. data/ext/pg_query/include/utils/memdebug.h +1 -1
  365. data/ext/pg_query/include/utils/memutils.h +5 -49
  366. data/ext/pg_query/include/utils/memutils_internal.h +136 -0
  367. data/ext/pg_query/include/utils/memutils_memorychunk.h +237 -0
  368. data/ext/pg_query/include/utils/numeric.h +20 -5
  369. data/ext/pg_query/include/utils/palloc.h +8 -1
  370. data/ext/pg_query/include/utils/partcache.h +3 -2
  371. data/ext/pg_query/include/utils/pg_locale.h +22 -14
  372. data/ext/pg_query/include/utils/pgstat_internal.h +37 -7
  373. data/ext/pg_query/include/utils/pidfile.h +1 -1
  374. data/ext/pg_query/include/utils/plancache.h +1 -1
  375. data/ext/pg_query/include/utils/portal.h +1 -1
  376. data/ext/pg_query/include/utils/probes.h +6 -6
  377. data/ext/pg_query/include/utils/ps_status.h +23 -1
  378. data/ext/pg_query/include/utils/queryenvironment.h +1 -1
  379. data/ext/pg_query/include/utils/regproc.h +3 -3
  380. data/ext/pg_query/include/utils/rel.h +60 -43
  381. data/ext/pg_query/include/utils/relcache.h +13 -8
  382. data/ext/pg_query/include/utils/reltrigger.h +1 -1
  383. data/ext/pg_query/include/utils/resowner.h +1 -1
  384. data/ext/pg_query/include/utils/ruleutils.h +6 -1
  385. data/ext/pg_query/include/utils/sharedtuplestore.h +1 -1
  386. data/ext/pg_query/include/utils/snapmgr.h +4 -2
  387. data/ext/pg_query/include/utils/snapshot.h +1 -1
  388. data/ext/pg_query/include/utils/sortsupport.h +2 -2
  389. data/ext/pg_query/include/utils/syscache.h +4 -1
  390. data/ext/pg_query/include/utils/timeout.h +1 -1
  391. data/ext/pg_query/include/utils/timestamp.h +41 -11
  392. data/ext/pg_query/include/utils/tuplesort.h +189 -35
  393. data/ext/pg_query/include/utils/tuplestore.h +1 -1
  394. data/ext/pg_query/include/utils/typcache.h +1 -1
  395. data/ext/pg_query/include/utils/varlena.h +13 -1
  396. data/ext/pg_query/include/utils/wait_event.h +9 -4
  397. data/ext/pg_query/include/utils/xml.h +15 -5
  398. data/ext/pg_query/include/varatt.h +358 -0
  399. data/ext/pg_query/pg_query.c +1 -1
  400. data/ext/pg_query/pg_query.pb-c.c +19755 -17757
  401. data/ext/pg_query/pg_query_fingerprint.c +8 -3
  402. data/ext/pg_query/pg_query_fingerprint.h +1 -1
  403. data/ext/pg_query/pg_query_internal.h +1 -1
  404. data/ext/pg_query/pg_query_json_plpgsql.c +1 -0
  405. data/ext/pg_query/pg_query_normalize.c +1 -1
  406. data/ext/pg_query/pg_query_outfuncs_protobuf.c +2 -2
  407. data/ext/pg_query/pg_query_parse.c +46 -4
  408. data/ext/pg_query/pg_query_parse_plpgsql.c +1 -1
  409. data/ext/pg_query/pg_query_scan.c +1 -1
  410. data/ext/pg_query/pg_query_split.c +2 -2
  411. data/ext/pg_query/postgres_deparse.c +503 -105
  412. data/ext/pg_query/src_backend_catalog_namespace.c +7 -2
  413. data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -1
  414. data/ext/pg_query/src_backend_commands_define.c +1 -1
  415. data/ext/pg_query/src_backend_nodes_bitmapset.c +11 -70
  416. data/ext/pg_query/src_backend_nodes_copyfuncs.c +96 -6202
  417. data/ext/pg_query/src_backend_nodes_equalfuncs.c +95 -4068
  418. data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
  419. data/ext/pg_query/src_backend_nodes_list.c +14 -2
  420. data/ext/pg_query/src_backend_nodes_makefuncs.c +95 -1
  421. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +283 -132
  422. data/ext/pg_query/src_backend_nodes_value.c +1 -1
  423. data/ext/pg_query/src_backend_parser_gram.c +33208 -31806
  424. data/ext/pg_query/src_backend_parser_parser.c +28 -2
  425. data/ext/pg_query/src_backend_parser_scan.c +4318 -3329
  426. data/ext/pg_query/src_backend_parser_scansup.c +1 -1
  427. data/ext/pg_query/src_backend_postmaster_postmaster.c +129 -110
  428. data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
  429. data/ext/pg_query/src_backend_tcop_postgres.c +66 -87
  430. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +1 -1
  431. data/ext/pg_query/src_backend_utils_adt_datum.c +5 -7
  432. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  433. data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
  434. data/ext/pg_query/src_backend_utils_adt_numutils.c +489 -0
  435. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +79 -5
  436. data/ext/pg_query/src_backend_utils_error_assert.c +4 -7
  437. data/ext/pg_query/src_backend_utils_error_elog.c +354 -97
  438. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +33 -1
  439. data/ext/pg_query/src_backend_utils_init_globals.c +5 -2
  440. data/ext/pg_query/src_backend_utils_mb_mbutils.c +13 -4
  441. data/ext/pg_query/src_backend_utils_misc_guc_tables.c +494 -0
  442. data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +163 -0
  443. data/ext/pg_query/src_backend_utils_mmgr_aset.c +449 -312
  444. data/ext/pg_query/src_backend_utils_mmgr_generation.c +1039 -0
  445. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +398 -49
  446. data/ext/pg_query/src_backend_utils_mmgr_slab.c +1021 -0
  447. data/ext/pg_query/src_common_encnames.c +4 -1
  448. data/ext/pg_query/src_common_hashfn.c +1 -1
  449. data/ext/pg_query/src_common_keywords.c +1 -1
  450. data/ext/pg_query/src_common_kwlist_d.h +534 -510
  451. data/ext/pg_query/src_common_kwlookup.c +1 -1
  452. data/ext/pg_query/src_common_psprintf.c +1 -1
  453. data/ext/pg_query/src_common_stringinfo.c +4 -4
  454. data/ext/pg_query/src_common_wchar.c +9 -8
  455. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +1 -1
  456. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -1
  457. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +661 -694
  458. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  459. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
  460. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +1 -1
  461. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +48 -46
  462. data/ext/pg_query/src_port_pg_bitutils.c +1 -1
  463. data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
  464. data/ext/pg_query/src_port_snprintf.c +3 -7
  465. data/ext/pg_query/src_port_strerror.c +1 -1
  466. data/ext/pg_query/src_port_strnlen.c +1 -1
  467. data/lib/pg_query/pg_query_pb.rb +166 -3191
  468. data/lib/pg_query/treewalker.rb +7 -2
  469. data/lib/pg_query/version.rb +1 -1
  470. metadata +43 -24
  471. data/ext/pg_query/include/catalog/pg_parameter_acl.h +0 -60
  472. data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +0 -34
  473. data/ext/pg_query/include/commands/variable.h +0 -38
  474. data/ext/pg_query/include/getaddrinfo.h +0 -162
  475. data/ext/pg_query/include/parser/gram.h +0 -1101
  476. data/ext/pg_query/include/storage/relfilenode.h +0 -99
  477. data/ext/pg_query/include/utils/dynahash.h +0 -20
  478. data/ext/pg_query/include/utils/pg_lsn.h +0 -29
  479. data/ext/pg_query/include/utils/rls.h +0 -50
  480. data/ext/pg_query/include/utils/tzparser.h +0 -39
  481. data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -371
  482. data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1116
  483. data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1993
  484. data/ext/pg_query/src_common_pg_prng.c +0 -152
  485. data/ext/pg_query/src_common_string.c +0 -92
  486. data/ext/pg_query/src_port_pgsleep.c +0 -69
@@ -45,7 +45,7 @@
45
45
  * the result is validly encoded according to the destination encoding.
46
46
  *
47
47
  *
48
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
48
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
49
49
  * Portions Copyright (c) 1994, Regents of the University of California
50
50
  *
51
51
  *
@@ -62,6 +62,7 @@
62
62
  #include "utils/builtins.h"
63
63
  #include "utils/memutils.h"
64
64
  #include "utils/syscache.h"
65
+ #include "varatt.h"
65
66
 
66
67
  /*
67
68
  * We maintain a simple linked list caching the fmgr lookup info for the
@@ -184,7 +185,7 @@ pg_get_client_encoding(void)
184
185
  *
185
186
  * The output is null-terminated.
186
187
  *
187
- * If destlen < srclen * MAX_CONVERSION_LENGTH + 1, the converted output
188
+ * If destlen < srclen * MAX_CONVERSION_INPUT_LENGTH + 1, the converted output
188
189
  * wouldn't necessarily fit in the output buffer, and the function will not
189
190
  * convert the whole input.
190
191
  *
@@ -339,12 +340,20 @@ pg_unicode_to_server(pg_wchar c, unsigned char *s)
339
340
  FunctionCall6(Utf8ToServerConvProc,
340
341
  Int32GetDatum(PG_UTF8),
341
342
  Int32GetDatum(server_encoding),
342
- CStringGetDatum(c_as_utf8),
343
- CStringGetDatum(s),
343
+ CStringGetDatum((char *) c_as_utf8),
344
+ CStringGetDatum((char *) s),
344
345
  Int32GetDatum(c_as_utf8_len),
345
346
  BoolGetDatum(false));
346
347
  }
347
348
 
349
+ /*
350
+ * Convert a single Unicode code point into a string in the server encoding.
351
+ *
352
+ * Same as pg_unicode_to_server(), except that we don't throw errors,
353
+ * but simply return false on conversion failure.
354
+ */
355
+
356
+
348
357
 
349
358
  /* convert a multibyte string to a wchar */
350
359
 
@@ -0,0 +1,494 @@
1
+ /*--------------------------------------------------------------------
2
+ * Symbols referenced in this file:
3
+ * - log_min_messages
4
+ * - client_min_messages
5
+ * - backtrace_functions
6
+ * - check_function_bodies
7
+ *--------------------------------------------------------------------
8
+ */
9
+
10
+ /*--------------------------------------------------------------------
11
+ *
12
+ * guc_tables.c
13
+ *
14
+ * Static tables for the Grand Unified Configuration scheme.
15
+ *
16
+ * Many of these tables are const. However, ConfigureNamesBool[]
17
+ * and so on are not, because the structs in those arrays are actually
18
+ * the live per-variable state data that guc.c manipulates. While many of
19
+ * their fields are intended to be constant, some fields change at runtime.
20
+ *
21
+ *
22
+ * Copyright (c) 2000-2023, PostgreSQL Global Development Group
23
+ * Written by Peter Eisentraut <peter_e@gmx.net>.
24
+ *
25
+ * IDENTIFICATION
26
+ * src/backend/utils/misc/guc_tables.c
27
+ *
28
+ *--------------------------------------------------------------------
29
+ */
30
+ #include "postgres.h"
31
+
32
+ #include <float.h>
33
+ #include <limits.h>
34
+ #ifdef HAVE_SYSLOG
35
+ #include <syslog.h>
36
+ #endif
37
+
38
+ #include "access/commit_ts.h"
39
+ #include "access/gin.h"
40
+ #include "access/toast_compression.h"
41
+ #include "access/twophase.h"
42
+ #include "access/xlog_internal.h"
43
+ #include "access/xlogprefetcher.h"
44
+ #include "access/xlogrecovery.h"
45
+ #include "archive/archive_module.h"
46
+ #include "catalog/namespace.h"
47
+ #include "catalog/storage.h"
48
+ #include "commands/async.h"
49
+ #include "commands/tablespace.h"
50
+ #include "commands/trigger.h"
51
+ #include "commands/user.h"
52
+ #include "commands/vacuum.h"
53
+ #include "common/scram-common.h"
54
+ #include "jit/jit.h"
55
+ #include "libpq/auth.h"
56
+ #include "libpq/libpq.h"
57
+ #include "libpq/scram.h"
58
+ #include "nodes/queryjumble.h"
59
+ #include "optimizer/cost.h"
60
+ #include "optimizer/geqo.h"
61
+ #include "optimizer/optimizer.h"
62
+ #include "optimizer/paths.h"
63
+ #include "optimizer/planmain.h"
64
+ #include "parser/parse_expr.h"
65
+ #include "parser/parser.h"
66
+ #include "pgstat.h"
67
+ #include "postmaster/autovacuum.h"
68
+ #include "postmaster/bgworker_internals.h"
69
+ #include "postmaster/bgwriter.h"
70
+ #include "postmaster/postmaster.h"
71
+ #include "postmaster/startup.h"
72
+ #include "postmaster/syslogger.h"
73
+ #include "postmaster/walwriter.h"
74
+ #include "replication/logicallauncher.h"
75
+ #include "replication/slot.h"
76
+ #include "replication/syncrep.h"
77
+ #include "storage/bufmgr.h"
78
+ #include "storage/large_object.h"
79
+ #include "storage/pg_shmem.h"
80
+ #include "storage/predicate.h"
81
+ #include "storage/standby.h"
82
+ #include "tcop/tcopprot.h"
83
+ #include "tsearch/ts_cache.h"
84
+ #include "utils/builtins.h"
85
+ #include "utils/bytea.h"
86
+ #include "utils/float.h"
87
+ #include "utils/guc_hooks.h"
88
+ #include "utils/guc_tables.h"
89
+ #include "utils/memutils.h"
90
+ #include "utils/pg_locale.h"
91
+ #include "utils/portal.h"
92
+ #include "utils/ps_status.h"
93
+ #include "utils/inval.h"
94
+ #include "utils/xml.h"
95
+
96
+ /* This value is normally passed in from the Makefile */
97
+ #ifndef PG_KRB_SRVTAB
98
+ #define PG_KRB_SRVTAB ""
99
+ #endif
100
+
101
+ /* XXX these should appear in other modules' header files */
102
+ extern bool Log_disconnections;
103
+ extern int CommitDelay;
104
+ extern int CommitSiblings;
105
+ extern char *default_tablespace;
106
+ extern char *temp_tablespaces;
107
+ extern bool ignore_checksum_failure;
108
+ extern bool ignore_invalid_pages;
109
+
110
+ #ifdef TRACE_SYNCSCAN
111
+ extern bool trace_syncscan;
112
+ #endif
113
+ #ifdef DEBUG_BOUNDED_SORT
114
+ extern bool optimize_bounded_sort;
115
+ #endif
116
+
117
+ /*
118
+ * Options for enum values defined in this module.
119
+ *
120
+ * NOTE! Option values may not contain double quotes!
121
+ */
122
+
123
+
124
+
125
+ StaticAssertDecl(lengthof(bytea_output_options) == (BYTEA_OUTPUT_HEX + 2),
126
+ "array length mismatch");
127
+
128
+ /*
129
+ * We have different sets for client and server message level options because
130
+ * they sort slightly different (see "log" level), and because "fatal"/"panic"
131
+ * aren't sensible for client_min_messages.
132
+ */
133
+
134
+
135
+
136
+
137
+
138
+
139
+
140
+
141
+ StaticAssertDecl(lengthof(intervalstyle_options) == (INTSTYLE_ISO_8601 + 2),
142
+ "array length mismatch");
143
+
144
+
145
+
146
+ StaticAssertDecl(lengthof(log_error_verbosity_options) == (PGERROR_VERBOSE + 2),
147
+ "array length mismatch");
148
+
149
+
150
+
151
+ StaticAssertDecl(lengthof(log_statement_options) == (LOGSTMT_ALL + 2),
152
+ "array length mismatch");
153
+
154
+
155
+
156
+
157
+
158
+ StaticAssertDecl(lengthof(session_replication_role_options) == (SESSION_REPLICATION_ROLE_LOCAL + 2),
159
+ "array length mismatch");
160
+
161
+ #ifdef HAVE_SYSLOG
162
+ #else
163
+ #endif
164
+
165
+
166
+
167
+ StaticAssertDecl(lengthof(track_function_options) == (TRACK_FUNC_ALL + 2),
168
+ "array length mismatch");
169
+
170
+
171
+
172
+ StaticAssertDecl(lengthof(stats_fetch_consistency) == (PGSTAT_FETCH_CONSISTENCY_SNAPSHOT + 2),
173
+ "array length mismatch");
174
+
175
+
176
+
177
+ StaticAssertDecl(lengthof(xmlbinary_options) == (XMLBINARY_HEX + 2),
178
+ "array length mismatch");
179
+
180
+
181
+
182
+ StaticAssertDecl(lengthof(xmloption_options) == (XMLOPTION_CONTENT + 2),
183
+ "array length mismatch");
184
+
185
+ /*
186
+ * Although only "on", "off", and "safe_encoding" are documented, we
187
+ * accept all the likely variants of "on" and "off".
188
+ */
189
+
190
+
191
+ /*
192
+ * Although only "on", "off", and "auto" are documented, we accept
193
+ * all the likely variants of "on" and "off".
194
+ */
195
+
196
+
197
+ /*
198
+ * Although only "on", "off", and "partition" are documented, we
199
+ * accept all the likely variants of "on" and "off".
200
+ */
201
+
202
+
203
+ /*
204
+ * Although only "on", "off", "remote_apply", "remote_write", and "local" are
205
+ * documented, we accept all the likely variants of "on" and "off".
206
+ */
207
+
208
+
209
+ /*
210
+ * Although only "on", "off", "try" are documented, we accept all the likely
211
+ * variants of "on" and "off".
212
+ */
213
+
214
+
215
+
216
+
217
+
218
+
219
+
220
+
221
+
222
+
223
+
224
+
225
+
226
+
227
+ StaticAssertDecl(lengthof(ssl_protocol_versions_info) == (PG_TLS1_3_VERSION + 2),
228
+ "array length mismatch");
229
+
230
+ #ifdef HAVE_SYNCFS
231
+ #endif
232
+
233
+ #ifndef WIN32
234
+ #endif
235
+ #ifndef EXEC_BACKEND
236
+ #endif
237
+ #ifdef WIN32
238
+ #endif
239
+
240
+ #ifdef USE_LZ4
241
+ #endif
242
+
243
+ #ifdef USE_LZ4
244
+ #endif
245
+ #ifdef USE_ZSTD
246
+ #endif
247
+
248
+ /*
249
+ * Options for enum values stored in other modules
250
+ */
251
+ extern const struct config_enum_entry wal_level_options[];
252
+ extern const struct config_enum_entry archive_mode_options[];
253
+ extern const struct config_enum_entry recovery_target_action_options[];
254
+ extern const struct config_enum_entry sync_method_options[];
255
+ extern const struct config_enum_entry dynamic_shared_memory_options[];
256
+
257
+ /*
258
+ * GUC option variables that are exported from this module
259
+ */
260
+
261
+
262
+
263
+
264
+
265
+
266
+
267
+
268
+
269
+ /* this is sort of all three above
270
+ * together */
271
+
272
+
273
+
274
+
275
+ __thread bool check_function_bodies = true;
276
+
277
+
278
+ /*
279
+ * This GUC exists solely for backward compatibility, check its definition for
280
+ * details.
281
+ */
282
+
283
+
284
+
285
+
286
+ __thread int log_min_messages = WARNING;
287
+
288
+ __thread int client_min_messages = NOTICE;
289
+
290
+
291
+
292
+
293
+
294
+
295
+
296
+
297
+
298
+ __thread char *backtrace_functions;
299
+
300
+
301
+
302
+
303
+
304
+
305
+
306
+
307
+
308
+
309
+
310
+
311
+
312
+
313
+
314
+
315
+
316
+
317
+
318
+ /*
319
+ * SSL renegotiation was been removed in PostgreSQL 9.5, but we tolerate it
320
+ * being set to zero (meaning never renegotiate) for backward compatibility.
321
+ * This avoids breaking compatibility with clients that have never supported
322
+ * renegotiation and therefore always try to zero it.
323
+ */
324
+
325
+
326
+ /*
327
+ * This really belongs in pg_shmem.c, but is defined here so that it doesn't
328
+ * need to be duplicated in all the different implementations of pg_shmem.c.
329
+ */
330
+
331
+
332
+
333
+ /*
334
+ * These variables are all dummies that don't do anything, except in some
335
+ * cases provide the value for SHOW to display. The real state is elsewhere
336
+ * and is kept in sync by assign_hooks.
337
+ */
338
+
339
+
340
+
341
+
342
+
343
+
344
+
345
+
346
+
347
+ #ifdef HAVE_SYSLOG
348
+ #define DEFAULT_SYSLOG_FACILITY LOG_LOCAL0
349
+ #else
350
+ #define DEFAULT_SYSLOG_FACILITY 0
351
+ #endif
352
+
353
+
354
+
355
+
356
+
357
+
358
+
359
+
360
+
361
+
362
+
363
+
364
+
365
+
366
+
367
+
368
+
369
+
370
+ #ifdef USE_ASSERT_CHECKING
371
+ #define DEFAULT_ASSERT_ENABLED true
372
+ #else
373
+ #define DEFAULT_ASSERT_ENABLED false
374
+ #endif
375
+
376
+
377
+
378
+
379
+
380
+
381
+
382
+
383
+ /* should be static, but commands/variable.c needs to get at this */
384
+
385
+
386
+ /* should be static, but guc.c needs to get at this */
387
+
388
+
389
+
390
+ /*
391
+ * Displayable names for context types (enum GucContext)
392
+ *
393
+ * Note: these strings are deliberately not localized.
394
+ */
395
+
396
+
397
+ StaticAssertDecl(lengthof(GucContext_Names) == (PGC_USERSET + 1),
398
+ "array length mismatch");
399
+
400
+ /*
401
+ * Displayable names for source types (enum GucSource)
402
+ *
403
+ * Note: these strings are deliberately not localized.
404
+ */
405
+
406
+
407
+ StaticAssertDecl(lengthof(GucSource_Names) == (PGC_S_SESSION + 1),
408
+ "array length mismatch");
409
+
410
+ /*
411
+ * Displayable names for the groupings defined in enum config_group
412
+ */
413
+
414
+
415
+ StaticAssertDecl(lengthof(config_group_names) == (DEVELOPER_OPTIONS + 2),
416
+ "array length mismatch");
417
+
418
+ /*
419
+ * Displayable names for GUC variable types (enum config_type)
420
+ *
421
+ * Note: these strings are deliberately not localized.
422
+ */
423
+
424
+
425
+ StaticAssertDecl(lengthof(config_type_names) == (PGC_ENUM + 1),
426
+ "array length mismatch");
427
+
428
+
429
+ /*
430
+ * Contents of GUC tables
431
+ *
432
+ * See src/backend/utils/misc/README for design notes.
433
+ *
434
+ * TO ADD AN OPTION:
435
+ *
436
+ * 1. Declare a global variable of type bool, int, double, or char*
437
+ * and make use of it.
438
+ *
439
+ * 2. Decide at what times it's safe to set the option. See guc.h for
440
+ * details.
441
+ *
442
+ * 3. Decide on a name, a default value, upper and lower bounds (if
443
+ * applicable), etc.
444
+ *
445
+ * 4. Add a record below.
446
+ *
447
+ * 5. Add it to src/backend/utils/misc/postgresql.conf.sample, if
448
+ * appropriate.
449
+ *
450
+ * 6. Don't forget to document the option (at least in config.sgml).
451
+ *
452
+ * 7. If it's a new GUC_LIST_QUOTE option, you must add it to
453
+ * variable_is_guc_list_quote() in src/bin/pg_dump/dumputils.c.
454
+ */
455
+
456
+ #ifdef BTREE_BUILD_STATS
457
+ #endif
458
+ #ifdef LOCK_DEBUG
459
+ #endif
460
+ #ifdef TRACE_SORT
461
+ #endif
462
+ #ifdef TRACE_SYNCSCAN
463
+ #endif
464
+ #ifdef DEBUG_BOUNDED_SORT
465
+ #endif
466
+ #ifdef WAL_DEBUG
467
+ #endif
468
+
469
+
470
+ #ifdef LOCK_DEBUG
471
+ #endif
472
+ #ifdef DISCARD_CACHES_ENABLED
473
+ #if defined(CLOBBER_CACHE_RECURSIVELY)
474
+ #else
475
+ #endif
476
+ #else /* not DISCARD_CACHES_ENABLED */
477
+ #endif /* not DISCARD_CACHES_ENABLED */
478
+
479
+
480
+
481
+
482
+
483
+ #ifdef USE_SSL
484
+ #else
485
+ #endif
486
+ #ifdef USE_OPENSSL
487
+ #else
488
+ #endif
489
+ #ifdef USE_SSL
490
+ #else
491
+ #endif
492
+
493
+
494
+
@@ -0,0 +1,163 @@
1
+ /*--------------------------------------------------------------------
2
+ * Symbols referenced in this file:
3
+ * - AlignedAllocFree
4
+ * - AlignedAllocRealloc
5
+ * - AlignedAllocGetChunkContext
6
+ * - AlignedAllocGetChunkSpace
7
+ *--------------------------------------------------------------------
8
+ */
9
+
10
+ /*-------------------------------------------------------------------------
11
+ *
12
+ * alignedalloc.c
13
+ * Allocator functions to implement palloc_aligned
14
+ *
15
+ * This is not a fully-fledged MemoryContext type as there is no means to
16
+ * create a MemoryContext of this type. The code here only serves to allow
17
+ * operations such as pfree() and repalloc() to work correctly on a memory
18
+ * chunk that was allocated by palloc_aligned().
19
+ *
20
+ * Portions Copyright (c) 2022-2023, PostgreSQL Global Development Group
21
+ *
22
+ * IDENTIFICATION
23
+ * src/backend/utils/mmgr/alignedalloc.c
24
+ *
25
+ *-------------------------------------------------------------------------
26
+ */
27
+
28
+ #include "postgres.h"
29
+
30
+ #include "utils/memdebug.h"
31
+ #include "utils/memutils_memorychunk.h"
32
+
33
+ /*
34
+ * AlignedAllocFree
35
+ * Frees allocated memory; memory is removed from its owning context.
36
+ */
37
+ void
38
+ AlignedAllocFree(void *pointer)
39
+ {
40
+ MemoryChunk *chunk = PointerGetMemoryChunk(pointer);
41
+ void *unaligned;
42
+
43
+ VALGRIND_MAKE_MEM_DEFINED(chunk, sizeof(MemoryChunk));
44
+
45
+ Assert(!MemoryChunkIsExternal(chunk));
46
+
47
+ /* obtain the original (unaligned) allocated pointer */
48
+ unaligned = MemoryChunkGetBlock(chunk);
49
+
50
+ #ifdef MEMORY_CONTEXT_CHECKING
51
+ /* Test for someone scribbling on unused space in chunk */
52
+ if (!sentinel_ok(pointer, chunk->requested_size))
53
+ elog(WARNING, "detected write past chunk end in %s %p",
54
+ GetMemoryChunkContext(unaligned)->name, chunk);
55
+ #endif
56
+
57
+ pfree(unaligned);
58
+ }
59
+
60
+ /*
61
+ * AlignedAllocRealloc
62
+ * Change the allocated size of a chunk and return possibly a different
63
+ * pointer to a memory address aligned to the same boundary as the
64
+ * originally requested alignment. The contents of 'pointer' will be
65
+ * copied into the returned pointer up until 'size'. Any additional
66
+ * memory will be uninitialized.
67
+ */
68
+ void *
69
+ AlignedAllocRealloc(void *pointer, Size size)
70
+ {
71
+ MemoryChunk *redirchunk = PointerGetMemoryChunk(pointer);
72
+ Size alignto;
73
+ void *unaligned;
74
+ MemoryContext ctx;
75
+ Size old_size;
76
+ void *newptr;
77
+
78
+ VALGRIND_MAKE_MEM_DEFINED(redirchunk, sizeof(MemoryChunk));
79
+
80
+ alignto = MemoryChunkGetValue(redirchunk);
81
+ unaligned = MemoryChunkGetBlock(redirchunk);
82
+
83
+ /* sanity check this is a power of 2 value */
84
+ Assert((alignto & (alignto - 1)) == 0);
85
+
86
+ /*
87
+ * Determine the size of the original allocation. We can't determine this
88
+ * exactly as GetMemoryChunkSpace() returns the total space used for the
89
+ * allocation, which for contexts like aset includes rounding up to the
90
+ * next power of 2. However, this value is just used to memcpy() the old
91
+ * data into the new allocation, so we only need to concern ourselves with
92
+ * not reading beyond the end of the original allocation's memory. The
93
+ * drawback here is that we may copy more bytes than we need to, which
94
+ * only amounts to wasted effort. We can safely subtract the extra bytes
95
+ * that we requested to allow us to align the pointer. We must also
96
+ * subtract the space for the unaligned pointer's MemoryChunk since
97
+ * GetMemoryChunkSpace should have included that. This does assume that
98
+ * all context types use MemoryChunk as a chunk header.
99
+ */
100
+ old_size = GetMemoryChunkSpace(unaligned) -
101
+ PallocAlignedExtraBytes(alignto) - sizeof(MemoryChunk);
102
+
103
+ #ifdef MEMORY_CONTEXT_CHECKING
104
+ /* check that GetMemoryChunkSpace returned something realistic */
105
+ Assert(old_size >= redirchunk->requested_size);
106
+ #endif
107
+
108
+ ctx = GetMemoryChunkContext(unaligned);
109
+ newptr = MemoryContextAllocAligned(ctx, size, alignto, 0);
110
+
111
+ /*
112
+ * We may memcpy beyond the end of the original allocation request size,
113
+ * so we must mark the entire allocation as defined.
114
+ */
115
+ VALGRIND_MAKE_MEM_DEFINED(pointer, old_size);
116
+ memcpy(newptr, pointer, Min(size, old_size));
117
+ pfree(unaligned);
118
+
119
+ return newptr;
120
+ }
121
+
122
+ /*
123
+ * AlignedAllocGetChunkContext
124
+ * Return the MemoryContext that 'pointer' belongs to.
125
+ */
126
+ MemoryContext
127
+ AlignedAllocGetChunkContext(void *pointer)
128
+ {
129
+ MemoryChunk *redirchunk = PointerGetMemoryChunk(pointer);
130
+ MemoryContext cxt;
131
+
132
+ VALGRIND_MAKE_MEM_DEFINED(redirchunk, sizeof(MemoryChunk));
133
+
134
+ Assert(!MemoryChunkIsExternal(redirchunk));
135
+
136
+ cxt = GetMemoryChunkContext(MemoryChunkGetBlock(redirchunk));
137
+
138
+ VALGRIND_MAKE_MEM_NOACCESS(redirchunk, sizeof(MemoryChunk));
139
+
140
+ return cxt;
141
+ }
142
+
143
+ /*
144
+ * AlignedAllocGetChunkSpace
145
+ * Given a currently-allocated chunk, determine the total space
146
+ * it occupies (including all memory-allocation overhead).
147
+ */
148
+ Size
149
+ AlignedAllocGetChunkSpace(void *pointer)
150
+ {
151
+ MemoryChunk *redirchunk = PointerGetMemoryChunk(pointer);
152
+ void *unaligned;
153
+ Size space;
154
+
155
+ VALGRIND_MAKE_MEM_DEFINED(redirchunk, sizeof(MemoryChunk));
156
+
157
+ unaligned = MemoryChunkGetBlock(redirchunk);
158
+ space = GetMemoryChunkSpace(unaligned);
159
+
160
+ VALGRIND_MAKE_MEM_NOACCESS(redirchunk, sizeof(MemoryChunk));
161
+
162
+ return space;
163
+ }