pg_query 4.2.1 → 6.1.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 (901) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +61 -0
  3. data/README.md +7 -9
  4. data/Rakefile +5 -6
  5. data/ext/pg_query/ext_symbols_freebsd.sym +1 -0
  6. data/ext/pg_query/ext_symbols_freebsd_with_ruby_abi_version.sym +2 -0
  7. data/ext/pg_query/ext_symbols_openbsd.sym +1 -0
  8. data/ext/pg_query/ext_symbols_openbsd_with_ruby_abi_version.sym +2 -0
  9. data/ext/pg_query/ext_symbols_with_ruby_abi_version.sym +2 -0
  10. data/ext/pg_query/extconf.rb +33 -9
  11. data/ext/pg_query/include/pg_query.h +28 -3
  12. data/ext/pg_query/include/pg_query_enum_defs.c +599 -167
  13. data/ext/pg_query/include/pg_query_fingerprint_conds.c +640 -520
  14. data/ext/pg_query/include/pg_query_fingerprint_defs.c +6400 -4633
  15. data/ext/pg_query/include/pg_query_outfuncs_conds.c +433 -343
  16. data/ext/pg_query/include/pg_query_outfuncs_defs.c +1472 -1152
  17. data/ext/pg_query/include/pg_query_readfuncs_conds.c +154 -124
  18. data/ext/pg_query/include/pg_query_readfuncs_defs.c +1886 -1506
  19. data/ext/pg_query/include/postgres/access/amapi.h +303 -0
  20. data/ext/pg_query/include/postgres/access/attmap.h +54 -0
  21. data/ext/pg_query/include/postgres/access/attnum.h +64 -0
  22. data/ext/pg_query/include/postgres/access/brin_internal.h +116 -0
  23. data/ext/pg_query/include/postgres/access/brin_tuple.h +112 -0
  24. data/ext/pg_query/include/postgres/access/clog.h +62 -0
  25. data/ext/pg_query/include/postgres/access/commit_ts.h +73 -0
  26. data/ext/pg_query/include/postgres/access/detoast.h +82 -0
  27. data/ext/pg_query/include/postgres/access/genam.h +246 -0
  28. data/ext/pg_query/include/postgres/access/gin.h +91 -0
  29. data/ext/pg_query/include/postgres/access/htup.h +89 -0
  30. data/ext/pg_query/include/postgres/access/htup_details.h +811 -0
  31. data/ext/pg_query/include/postgres/access/itup.h +170 -0
  32. data/ext/pg_query/include/postgres/access/parallel.h +81 -0
  33. data/ext/pg_query/include/postgres/access/printtup.h +35 -0
  34. data/ext/pg_query/include/postgres/access/relation.h +28 -0
  35. data/ext/pg_query/include/postgres/access/relscan.h +191 -0
  36. data/ext/pg_query/include/postgres/access/rmgrlist.h +49 -0
  37. data/ext/pg_query/include/postgres/access/sdir.h +67 -0
  38. data/ext/pg_query/include/postgres/access/skey.h +151 -0
  39. data/ext/pg_query/include/postgres/access/slru.h +218 -0
  40. data/ext/pg_query/include/postgres/access/stratnum.h +85 -0
  41. data/ext/pg_query/include/postgres/access/sysattr.h +29 -0
  42. data/ext/pg_query/include/postgres/access/table.h +28 -0
  43. data/ext/pg_query/include/postgres/access/tableam.h +2110 -0
  44. data/ext/pg_query/include/postgres/access/tidstore.h +50 -0
  45. data/ext/pg_query/include/postgres/access/toast_compression.h +73 -0
  46. data/ext/pg_query/include/postgres/access/transam.h +418 -0
  47. data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
  48. data/ext/pg_query/include/postgres/access/tupconvert.h +54 -0
  49. data/ext/pg_query/include/postgres/access/tupdesc.h +154 -0
  50. data/ext/pg_query/include/postgres/access/tupmacs.h +207 -0
  51. data/ext/pg_query/include/postgres/access/twophase.h +65 -0
  52. data/ext/pg_query/include/postgres/access/xact.h +530 -0
  53. data/ext/pg_query/include/postgres/access/xlog.h +310 -0
  54. data/ext/pg_query/include/postgres/access/xlog_internal.h +405 -0
  55. data/ext/pg_query/include/postgres/access/xlogbackup.h +43 -0
  56. data/ext/pg_query/include/postgres/access/xlogdefs.h +82 -0
  57. data/ext/pg_query/include/postgres/access/xlogprefetcher.h +55 -0
  58. data/ext/pg_query/include/postgres/access/xlogreader.h +444 -0
  59. data/ext/pg_query/include/postgres/access/xlogrecord.h +248 -0
  60. data/ext/pg_query/include/postgres/access/xlogrecovery.h +158 -0
  61. data/ext/pg_query/include/postgres/archive/archive_module.h +67 -0
  62. data/ext/pg_query/include/postgres/c.h +1374 -0
  63. data/ext/pg_query/include/postgres/catalog/catalog.h +47 -0
  64. data/ext/pg_query/include/postgres/catalog/catversion.h +62 -0
  65. data/ext/pg_query/include/postgres/catalog/dependency.h +228 -0
  66. data/ext/pg_query/include/postgres/catalog/genbki.h +149 -0
  67. data/ext/pg_query/include/postgres/catalog/index.h +218 -0
  68. data/ext/pg_query/include/postgres/catalog/indexing.h +54 -0
  69. data/ext/pg_query/include/postgres/catalog/namespace.h +189 -0
  70. data/ext/pg_query/include/postgres/catalog/objectaccess.h +267 -0
  71. data/ext/pg_query/include/postgres/catalog/objectaddress.h +93 -0
  72. data/ext/pg_query/include/postgres/catalog/pg_aggregate.h +182 -0
  73. data/ext/pg_query/include/postgres/catalog/pg_aggregate_d.h +78 -0
  74. data/ext/pg_query/include/postgres/catalog/pg_am.h +66 -0
  75. data/ext/pg_query/include/postgres/catalog/pg_am_d.h +47 -0
  76. data/ext/pg_query/include/postgres/catalog/pg_attribute.h +240 -0
  77. data/ext/pg_query/include/postgres/catalog/pg_attribute_d.h +62 -0
  78. data/ext/pg_query/include/postgres/catalog/pg_authid.h +66 -0
  79. data/ext/pg_query/include/postgres/catalog/pg_authid_d.h +60 -0
  80. data/ext/pg_query/include/postgres/catalog/pg_class.h +235 -0
  81. data/ext/pg_query/include/postgres/catalog/pg_class_d.h +134 -0
  82. data/ext/pg_query/include/postgres/catalog/pg_collation.h +106 -0
  83. data/ext/pg_query/include/postgres/catalog/pg_collation_d.h +66 -0
  84. data/ext/pg_query/include/postgres/catalog/pg_constraint.h +278 -0
  85. data/ext/pg_query/include/postgres/catalog/pg_constraint_d.h +74 -0
  86. data/ext/pg_query/include/postgres/catalog/pg_control.h +260 -0
  87. data/ext/pg_query/include/postgres/catalog/pg_conversion.h +79 -0
  88. data/ext/pg_query/include/postgres/catalog/pg_conversion_d.h +38 -0
  89. data/ext/pg_query/include/postgres/catalog/pg_database.h +129 -0
  90. data/ext/pg_query/include/postgres/catalog/pg_database_d.h +53 -0
  91. data/ext/pg_query/include/postgres/catalog/pg_depend.h +77 -0
  92. data/ext/pg_query/include/postgres/catalog/pg_depend_d.h +36 -0
  93. data/ext/pg_query/include/postgres/catalog/pg_event_trigger.h +60 -0
  94. data/ext/pg_query/include/postgres/catalog/pg_event_trigger_d.h +36 -0
  95. data/ext/pg_query/include/postgres/catalog/pg_index.h +92 -0
  96. data/ext/pg_query/include/postgres/catalog/pg_index_d.h +59 -0
  97. data/ext/pg_query/include/postgres/catalog/pg_language.h +75 -0
  98. data/ext/pg_query/include/postgres/catalog/pg_language_d.h +41 -0
  99. data/ext/pg_query/include/postgres/catalog/pg_namespace.h +67 -0
  100. data/ext/pg_query/include/postgres/catalog/pg_namespace_d.h +36 -0
  101. data/ext/pg_query/include/postgres/catalog/pg_opclass.h +91 -0
  102. data/ext/pg_query/include/postgres/catalog/pg_opclass_d.h +51 -0
  103. data/ext/pg_query/include/postgres/catalog/pg_operator.h +124 -0
  104. data/ext/pg_query/include/postgres/catalog/pg_operator_d.h +142 -0
  105. data/ext/pg_query/include/postgres/catalog/pg_opfamily.h +67 -0
  106. data/ext/pg_query/include/postgres/catalog/pg_opfamily_d.h +51 -0
  107. data/ext/pg_query/include/postgres/catalog/pg_partitioned_table.h +76 -0
  108. data/ext/pg_query/include/postgres/catalog/pg_partitioned_table_d.h +36 -0
  109. data/ext/pg_query/include/postgres/catalog/pg_proc.h +223 -0
  110. data/ext/pg_query/include/postgres/catalog/pg_proc_d.h +101 -0
  111. data/ext/pg_query/include/postgres/catalog/pg_publication.h +161 -0
  112. data/ext/pg_query/include/postgres/catalog/pg_publication_d.h +38 -0
  113. data/ext/pg_query/include/postgres/catalog/pg_replication_origin.h +65 -0
  114. data/ext/pg_query/include/postgres/catalog/pg_replication_origin_d.h +33 -0
  115. data/ext/pg_query/include/postgres/catalog/pg_statistic.h +288 -0
  116. data/ext/pg_query/include/postgres/catalog/pg_statistic_d.h +199 -0
  117. data/ext/pg_query/include/postgres/catalog/pg_statistic_ext.h +91 -0
  118. data/ext/pg_query/include/postgres/catalog/pg_statistic_ext_d.h +45 -0
  119. data/ext/pg_query/include/postgres/catalog/pg_transform.h +51 -0
  120. data/ext/pg_query/include/postgres/catalog/pg_transform_d.h +34 -0
  121. data/ext/pg_query/include/postgres/catalog/pg_trigger.h +153 -0
  122. data/ext/pg_query/include/postgres/catalog/pg_trigger_d.h +109 -0
  123. data/ext/pg_query/include/postgres/catalog/pg_ts_config.h +56 -0
  124. data/ext/pg_query/include/postgres/catalog/pg_ts_config_d.h +34 -0
  125. data/ext/pg_query/include/postgres/catalog/pg_ts_dict.h +62 -0
  126. data/ext/pg_query/include/postgres/catalog/pg_ts_dict_d.h +35 -0
  127. data/ext/pg_query/include/postgres/catalog/pg_ts_parser.h +63 -0
  128. data/ext/pg_query/include/postgres/catalog/pg_ts_parser_d.h +37 -0
  129. data/ext/pg_query/include/postgres/catalog/pg_ts_template.h +54 -0
  130. data/ext/pg_query/include/postgres/catalog/pg_ts_template_d.h +34 -0
  131. data/ext/pg_query/include/postgres/catalog/pg_type.h +407 -0
  132. data/ext/pg_query/include/postgres/catalog/pg_type_d.h +324 -0
  133. data/ext/pg_query/include/postgres/catalog/storage.h +50 -0
  134. data/ext/pg_query/include/postgres/catalog/syscache_ids.h +104 -0
  135. data/ext/pg_query/include/postgres/commands/async.h +49 -0
  136. data/ext/pg_query/include/postgres/commands/dbcommands.h +37 -0
  137. data/ext/pg_query/include/postgres/commands/defrem.h +161 -0
  138. data/ext/pg_query/include/postgres/commands/event_trigger.h +97 -0
  139. data/ext/pg_query/include/postgres/commands/explain.h +145 -0
  140. data/ext/pg_query/include/postgres/commands/prepare.h +61 -0
  141. data/ext/pg_query/include/postgres/commands/tablespace.h +69 -0
  142. data/ext/pg_query/include/postgres/commands/trigger.h +288 -0
  143. data/ext/pg_query/include/postgres/commands/user.h +43 -0
  144. data/ext/pg_query/include/postgres/commands/vacuum.h +388 -0
  145. data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
  146. data/ext/pg_query/include/postgres/common/file_perm.h +56 -0
  147. data/ext/pg_query/include/postgres/common/file_utils.h +65 -0
  148. data/ext/pg_query/include/postgres/common/hashfn.h +119 -0
  149. data/ext/pg_query/include/postgres/common/hashfn_unstable.h +407 -0
  150. data/ext/pg_query/include/postgres/common/int.h +512 -0
  151. data/ext/pg_query/include/postgres/common/keywords.h +29 -0
  152. data/ext/pg_query/include/postgres/common/kwlookup.h +44 -0
  153. data/ext/pg_query/include/postgres/common/pg_prng.h +62 -0
  154. data/ext/pg_query/include/postgres/common/relpath.h +97 -0
  155. data/ext/pg_query/include/postgres/common/scram-common.h +70 -0
  156. data/ext/pg_query/include/postgres/common/sha2.h +32 -0
  157. data/ext/pg_query/include/postgres/common/string.h +44 -0
  158. data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +124 -0
  159. data/ext/pg_query/include/postgres/common/unicode_nonspacing_table.h +326 -0
  160. data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5261 -0
  161. data/ext/pg_query/include/postgres/copyfuncs.switch.c +989 -0
  162. data/ext/pg_query/include/postgres/datatype/timestamp.h +269 -0
  163. data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3310 -0
  164. data/ext/pg_query/include/postgres/equalfuncs.switch.c +836 -0
  165. data/ext/pg_query/include/postgres/executor/execdesc.h +70 -0
  166. data/ext/pg_query/include/postgres/executor/executor.h +681 -0
  167. data/ext/pg_query/include/postgres/executor/functions.h +56 -0
  168. data/ext/pg_query/include/postgres/executor/instrument.h +120 -0
  169. data/ext/pg_query/include/postgres/executor/spi.h +207 -0
  170. data/ext/pg_query/include/postgres/executor/tablefunc.h +67 -0
  171. data/ext/pg_query/include/postgres/executor/tuptable.h +523 -0
  172. data/ext/pg_query/include/postgres/fmgr.h +800 -0
  173. data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
  174. data/ext/pg_query/include/postgres/funcapi.h +360 -0
  175. data/ext/pg_query/include/postgres/gram.h +1168 -0
  176. data/ext/pg_query/include/postgres/gramparse.h +75 -0
  177. data/ext/pg_query/include/postgres/jit/jit.h +106 -0
  178. data/ext/pg_query/include/postgres/kwlist_d.h +1164 -0
  179. data/ext/pg_query/include/postgres/lib/dshash.h +130 -0
  180. data/ext/pg_query/include/postgres/lib/ilist.h +1159 -0
  181. data/ext/pg_query/include/postgres/lib/pairingheap.h +102 -0
  182. data/ext/pg_query/include/postgres/lib/simplehash.h +1206 -0
  183. data/ext/pg_query/include/postgres/lib/sort_template.h +445 -0
  184. data/ext/pg_query/include/postgres/lib/stringinfo.h +243 -0
  185. data/ext/pg_query/include/postgres/libpq/auth.h +37 -0
  186. data/ext/pg_query/include/postgres/libpq/crypt.h +47 -0
  187. data/ext/pg_query/include/postgres/libpq/hba.h +186 -0
  188. data/ext/pg_query/include/postgres/libpq/libpq-be.h +361 -0
  189. data/ext/pg_query/include/postgres/libpq/libpq.h +143 -0
  190. data/ext/pg_query/include/postgres/libpq/pqcomm.h +169 -0
  191. data/ext/pg_query/include/postgres/libpq/pqformat.h +209 -0
  192. data/ext/pg_query/include/postgres/libpq/pqsignal.h +54 -0
  193. data/ext/pg_query/include/postgres/libpq/protocol.h +89 -0
  194. data/ext/pg_query/include/postgres/libpq/sasl.h +136 -0
  195. data/ext/pg_query/include/postgres/libpq/scram.h +37 -0
  196. data/ext/pg_query/include/postgres/mb/pg_wchar.h +793 -0
  197. data/ext/pg_query/include/postgres/mb/stringinfo_mb.h +24 -0
  198. data/ext/pg_query/include/postgres/miscadmin.h +527 -0
  199. data/ext/pg_query/include/postgres/nodes/bitmapset.h +140 -0
  200. data/ext/pg_query/include/postgres/nodes/execnodes.h +2855 -0
  201. data/ext/pg_query/include/postgres/nodes/extensible.h +164 -0
  202. data/ext/pg_query/include/postgres/nodes/lockoptions.h +61 -0
  203. data/ext/pg_query/include/postgres/nodes/makefuncs.h +127 -0
  204. data/ext/pg_query/include/postgres/nodes/memnodes.h +152 -0
  205. data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
  206. data/ext/pg_query/include/postgres/nodes/nodeFuncs.h +222 -0
  207. data/ext/pg_query/include/postgres/nodes/nodes.h +435 -0
  208. data/ext/pg_query/include/postgres/nodes/nodetags.h +491 -0
  209. data/ext/pg_query/include/postgres/nodes/params.h +170 -0
  210. data/ext/pg_query/include/postgres/nodes/parsenodes.h +4233 -0
  211. data/ext/pg_query/include/postgres/nodes/pathnodes.h +3438 -0
  212. data/ext/pg_query/include/postgres/nodes/pg_list.h +686 -0
  213. data/ext/pg_query/include/postgres/nodes/plannodes.h +1593 -0
  214. data/ext/pg_query/include/postgres/nodes/primnodes.h +2339 -0
  215. data/ext/pg_query/include/postgres/nodes/print.h +34 -0
  216. data/ext/pg_query/include/postgres/nodes/queryjumble.h +86 -0
  217. data/ext/pg_query/include/postgres/nodes/replnodes.h +132 -0
  218. data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
  219. data/ext/pg_query/include/postgres/nodes/tidbitmap.h +75 -0
  220. data/ext/pg_query/include/postgres/nodes/value.h +90 -0
  221. data/ext/pg_query/include/postgres/optimizer/cost.h +216 -0
  222. data/ext/pg_query/include/postgres/optimizer/geqo.h +90 -0
  223. data/ext/pg_query/include/postgres/optimizer/geqo_gene.h +45 -0
  224. data/ext/pg_query/include/postgres/optimizer/optimizer.h +205 -0
  225. data/ext/pg_query/include/postgres/optimizer/paths.h +271 -0
  226. data/ext/pg_query/include/postgres/optimizer/planmain.h +123 -0
  227. data/ext/pg_query/include/postgres/parser/analyze.h +66 -0
  228. data/ext/pg_query/include/postgres/parser/kwlist.h +518 -0
  229. data/ext/pg_query/include/postgres/parser/parse_agg.h +65 -0
  230. data/ext/pg_query/include/postgres/parser/parse_coerce.h +105 -0
  231. data/ext/pg_query/include/postgres/parser/parse_expr.h +25 -0
  232. data/ext/pg_query/include/postgres/parser/parse_func.h +74 -0
  233. data/ext/pg_query/include/postgres/parser/parse_node.h +358 -0
  234. data/ext/pg_query/include/postgres/parser/parse_oper.h +68 -0
  235. data/ext/pg_query/include/postgres/parser/parse_relation.h +129 -0
  236. data/ext/pg_query/include/postgres/parser/parse_type.h +61 -0
  237. data/ext/pg_query/include/postgres/parser/parser.h +68 -0
  238. data/ext/pg_query/include/postgres/parser/parsetree.h +61 -0
  239. data/ext/pg_query/include/postgres/parser/scanner.h +152 -0
  240. data/ext/pg_query/include/postgres/parser/scansup.h +27 -0
  241. data/ext/pg_query/include/postgres/partitioning/partdefs.h +26 -0
  242. data/ext/pg_query/include/postgres/pg_config.h +985 -0
  243. data/ext/pg_query/include/postgres/pg_config_manual.h +385 -0
  244. data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
  245. data/ext/pg_query/include/postgres/pg_getopt.h +56 -0
  246. data/ext/pg_query/include/postgres/pg_trace.h +17 -0
  247. data/ext/pg_query/include/postgres/pgstat.h +780 -0
  248. data/ext/pg_query/include/postgres/pgtime.h +94 -0
  249. data/ext/pg_query/include/postgres/pl_gram.h +385 -0
  250. data/ext/pg_query/include/postgres/pl_reserved_kwlist.h +52 -0
  251. data/ext/pg_query/include/postgres/pl_reserved_kwlist_d.h +114 -0
  252. data/ext/pg_query/include/postgres/pl_unreserved_kwlist.h +112 -0
  253. data/ext/pg_query/include/postgres/pl_unreserved_kwlist_d.h +246 -0
  254. data/ext/pg_query/include/postgres/plerrcodes.h +998 -0
  255. data/ext/pg_query/include/postgres/plpgsql.h +1342 -0
  256. data/ext/pg_query/include/postgres/port/atomics/arch-arm.h +32 -0
  257. data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
  258. data/ext/pg_query/include/postgres/port/atomics/arch-ppc.h +256 -0
  259. data/ext/pg_query/include/postgres/port/atomics/arch-x86.h +254 -0
  260. data/ext/pg_query/include/postgres/port/atomics/fallback.h +170 -0
  261. data/ext/pg_query/include/postgres/port/atomics/generic-gcc.h +323 -0
  262. data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +119 -0
  263. data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +121 -0
  264. data/ext/pg_query/include/postgres/port/atomics/generic.h +437 -0
  265. data/ext/pg_query/include/postgres/port/atomics.h +606 -0
  266. data/ext/pg_query/include/postgres/port/pg_bitutils.h +421 -0
  267. data/ext/pg_query/include/postgres/port/pg_bswap.h +161 -0
  268. data/ext/pg_query/include/postgres/port/pg_crc32c.h +110 -0
  269. data/ext/pg_query/include/postgres/port/pg_iovec.h +117 -0
  270. data/ext/pg_query/include/postgres/port/simd.h +422 -0
  271. data/ext/pg_query/include/postgres/port/win32/arpa/inet.h +3 -0
  272. data/ext/pg_query/include/postgres/port/win32/dlfcn.h +1 -0
  273. data/ext/pg_query/include/postgres/port/win32/grp.h +1 -0
  274. data/ext/pg_query/include/postgres/port/win32/netdb.h +7 -0
  275. data/ext/pg_query/include/postgres/port/win32/netinet/in.h +3 -0
  276. data/ext/pg_query/include/postgres/port/win32/netinet/tcp.h +7 -0
  277. data/ext/pg_query/include/postgres/port/win32/pwd.h +3 -0
  278. data/ext/pg_query/include/postgres/port/win32/sys/resource.h +20 -0
  279. data/ext/pg_query/include/postgres/port/win32/sys/select.h +3 -0
  280. data/ext/pg_query/include/postgres/port/win32/sys/socket.h +34 -0
  281. data/ext/pg_query/include/postgres/port/win32/sys/un.h +17 -0
  282. data/ext/pg_query/include/postgres/port/win32/sys/wait.h +3 -0
  283. data/ext/pg_query/include/postgres/port/win32.h +59 -0
  284. data/ext/pg_query/include/postgres/port/win32_msvc/dirent.h +34 -0
  285. data/ext/pg_query/include/postgres/port/win32_msvc/sys/file.h +1 -0
  286. data/ext/pg_query/include/postgres/port/win32_msvc/sys/param.h +1 -0
  287. data/ext/pg_query/include/postgres/port/win32_msvc/sys/time.h +1 -0
  288. data/ext/pg_query/include/postgres/port/win32_msvc/unistd.h +9 -0
  289. data/ext/pg_query/include/postgres/port/win32_msvc/utime.h +3 -0
  290. data/ext/pg_query/include/postgres/port/win32_port.h +582 -0
  291. data/ext/pg_query/include/postgres/port.h +555 -0
  292. data/ext/pg_query/include/postgres/portability/instr_time.h +197 -0
  293. data/ext/pg_query/include/postgres/postgres.h +579 -0
  294. data/ext/pg_query/include/postgres/postgres_ext.h +73 -0
  295. data/ext/pg_query/include/postgres/postmaster/autovacuum.h +69 -0
  296. data/ext/pg_query/include/postgres/postmaster/bgworker.h +164 -0
  297. data/ext/pg_query/include/postgres/postmaster/bgworker_internals.h +60 -0
  298. data/ext/pg_query/include/postgres/postmaster/bgwriter.h +45 -0
  299. data/ext/pg_query/include/postgres/postmaster/interrupt.h +32 -0
  300. data/ext/pg_query/include/postgres/postmaster/pgarch.h +36 -0
  301. data/ext/pg_query/include/postgres/postmaster/postmaster.h +101 -0
  302. data/ext/pg_query/include/postgres/postmaster/startup.h +41 -0
  303. data/ext/pg_query/include/postgres/postmaster/syslogger.h +101 -0
  304. data/ext/pg_query/include/postgres/postmaster/walsummarizer.h +35 -0
  305. data/ext/pg_query/include/postgres/postmaster/walwriter.h +23 -0
  306. data/ext/pg_query/include/postgres/regex/regex.h +272 -0
  307. data/ext/pg_query/include/postgres/replication/logicallauncher.h +34 -0
  308. data/ext/pg_query/include/postgres/replication/logicalproto.h +274 -0
  309. data/ext/pg_query/include/postgres/replication/logicalworker.h +33 -0
  310. data/ext/pg_query/include/postgres/replication/origin.h +73 -0
  311. data/ext/pg_query/include/postgres/replication/reorderbuffer.h +734 -0
  312. data/ext/pg_query/include/postgres/replication/slot.h +289 -0
  313. data/ext/pg_query/include/postgres/replication/slotsync.h +38 -0
  314. data/ext/pg_query/include/postgres/replication/syncrep.h +109 -0
  315. data/ext/pg_query/include/postgres/replication/walreceiver.h +504 -0
  316. data/ext/pg_query/include/postgres/replication/walsender.h +76 -0
  317. data/ext/pg_query/include/postgres/rewrite/prs2lock.h +46 -0
  318. data/ext/pg_query/include/postgres/rewrite/rewriteHandler.h +41 -0
  319. data/ext/pg_query/include/postgres/rewrite/rewriteManip.h +96 -0
  320. data/ext/pg_query/include/postgres/rewrite/rewriteSupport.h +26 -0
  321. data/ext/pg_query/include/postgres/storage/block.h +108 -0
  322. data/ext/pg_query/include/postgres/storage/buf.h +46 -0
  323. data/ext/pg_query/include/postgres/storage/bufmgr.h +411 -0
  324. data/ext/pg_query/include/postgres/storage/bufpage.h +510 -0
  325. data/ext/pg_query/include/postgres/storage/condition_variable.h +73 -0
  326. data/ext/pg_query/include/postgres/storage/dsm.h +61 -0
  327. data/ext/pg_query/include/postgres/storage/dsm_impl.h +79 -0
  328. data/ext/pg_query/include/postgres/storage/fd.h +219 -0
  329. data/ext/pg_query/include/postgres/storage/fileset.h +40 -0
  330. data/ext/pg_query/include/postgres/storage/ipc.h +87 -0
  331. data/ext/pg_query/include/postgres/storage/item.h +19 -0
  332. data/ext/pg_query/include/postgres/storage/itemid.h +184 -0
  333. data/ext/pg_query/include/postgres/storage/itemptr.h +245 -0
  334. data/ext/pg_query/include/postgres/storage/large_object.h +100 -0
  335. data/ext/pg_query/include/postgres/storage/latch.h +196 -0
  336. data/ext/pg_query/include/postgres/storage/lmgr.h +126 -0
  337. data/ext/pg_query/include/postgres/storage/lock.h +624 -0
  338. data/ext/pg_query/include/postgres/storage/lockdefs.h +61 -0
  339. data/ext/pg_query/include/postgres/storage/lwlock.h +228 -0
  340. data/ext/pg_query/include/postgres/storage/lwlocknames.h +47 -0
  341. data/ext/pg_query/include/postgres/storage/off.h +57 -0
  342. data/ext/pg_query/include/postgres/storage/pg_sema.h +61 -0
  343. data/ext/pg_query/include/postgres/storage/pg_shmem.h +93 -0
  344. data/ext/pg_query/include/postgres/storage/pmsignal.h +105 -0
  345. data/ext/pg_query/include/postgres/storage/predicate.h +83 -0
  346. data/ext/pg_query/include/postgres/storage/proc.h +488 -0
  347. data/ext/pg_query/include/postgres/storage/procarray.h +103 -0
  348. data/ext/pg_query/include/postgres/storage/proclist_types.h +53 -0
  349. data/ext/pg_query/include/postgres/storage/procnumber.h +43 -0
  350. data/ext/pg_query/include/postgres/storage/procsignal.h +75 -0
  351. data/ext/pg_query/include/postgres/storage/read_stream.h +65 -0
  352. data/ext/pg_query/include/postgres/storage/relfilelocator.h +100 -0
  353. data/ext/pg_query/include/postgres/storage/s_lock.h +847 -0
  354. data/ext/pg_query/include/postgres/storage/sharedfileset.h +37 -0
  355. data/ext/pg_query/include/postgres/storage/shm_mq.h +86 -0
  356. data/ext/pg_query/include/postgres/storage/shm_toc.h +58 -0
  357. data/ext/pg_query/include/postgres/storage/shmem.h +59 -0
  358. data/ext/pg_query/include/postgres/storage/sinval.h +153 -0
  359. data/ext/pg_query/include/postgres/storage/smgr.h +130 -0
  360. data/ext/pg_query/include/postgres/storage/spin.h +77 -0
  361. data/ext/pg_query/include/postgres/storage/standby.h +109 -0
  362. data/ext/pg_query/include/postgres/storage/standbydefs.h +74 -0
  363. data/ext/pg_query/include/postgres/storage/sync.h +66 -0
  364. data/ext/pg_query/include/postgres/tcop/cmdtag.h +62 -0
  365. data/ext/pg_query/include/postgres/tcop/cmdtaglist.h +219 -0
  366. data/ext/pg_query/include/postgres/tcop/deparse_utility.h +108 -0
  367. data/ext/pg_query/include/postgres/tcop/dest.h +148 -0
  368. data/ext/pg_query/include/postgres/tcop/fastpath.h +20 -0
  369. data/ext/pg_query/include/postgres/tcop/pquery.h +51 -0
  370. data/ext/pg_query/include/postgres/tcop/tcopprot.h +98 -0
  371. data/ext/pg_query/include/postgres/tcop/utility.h +112 -0
  372. data/ext/pg_query/include/postgres/tsearch/ts_cache.h +96 -0
  373. data/ext/pg_query/include/postgres/utils/acl.h +290 -0
  374. data/ext/pg_query/include/postgres/utils/aclchk_internal.h +45 -0
  375. data/ext/pg_query/include/postgres/utils/array.h +481 -0
  376. data/ext/pg_query/include/postgres/utils/ascii.h +84 -0
  377. data/ext/pg_query/include/postgres/utils/backend_progress.h +46 -0
  378. data/ext/pg_query/include/postgres/utils/backend_status.h +340 -0
  379. data/ext/pg_query/include/postgres/utils/builtins.h +139 -0
  380. data/ext/pg_query/include/postgres/utils/bytea.h +28 -0
  381. data/ext/pg_query/include/postgres/utils/catcache.h +231 -0
  382. data/ext/pg_query/include/postgres/utils/date.h +118 -0
  383. data/ext/pg_query/include/postgres/utils/datetime.h +367 -0
  384. data/ext/pg_query/include/postgres/utils/datum.h +76 -0
  385. data/ext/pg_query/include/postgres/utils/dsa.h +166 -0
  386. data/ext/pg_query/include/postgres/utils/elog.h +540 -0
  387. data/ext/pg_query/include/postgres/utils/errcodes.h +352 -0
  388. data/ext/pg_query/include/postgres/utils/expandeddatum.h +170 -0
  389. data/ext/pg_query/include/postgres/utils/expandedrecord.h +241 -0
  390. data/ext/pg_query/include/postgres/utils/float.h +357 -0
  391. data/ext/pg_query/include/postgres/utils/fmgroids.h +3347 -0
  392. data/ext/pg_query/include/postgres/utils/fmgrprotos.h +2904 -0
  393. data/ext/pg_query/include/postgres/utils/fmgrtab.h +49 -0
  394. data/ext/pg_query/include/postgres/utils/guc.h +456 -0
  395. data/ext/pg_query/include/postgres/utils/guc_hooks.h +184 -0
  396. data/ext/pg_query/include/postgres/utils/guc_tables.h +323 -0
  397. data/ext/pg_query/include/postgres/utils/hsearch.h +153 -0
  398. data/ext/pg_query/include/postgres/utils/injection_point.h +44 -0
  399. data/ext/pg_query/include/postgres/utils/inval.h +68 -0
  400. data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
  401. data/ext/pg_query/include/postgres/utils/lsyscache.h +215 -0
  402. data/ext/pg_query/include/postgres/utils/memdebug.h +82 -0
  403. data/ext/pg_query/include/postgres/utils/memutils.h +193 -0
  404. data/ext/pg_query/include/postgres/utils/memutils_internal.h +176 -0
  405. data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +253 -0
  406. data/ext/pg_query/include/postgres/utils/numeric.h +110 -0
  407. data/ext/pg_query/include/postgres/utils/palloc.h +151 -0
  408. data/ext/pg_query/include/postgres/utils/partcache.h +103 -0
  409. data/ext/pg_query/include/postgres/utils/pg_locale.h +136 -0
  410. data/ext/pg_query/include/postgres/utils/pgstat_internal.h +827 -0
  411. data/ext/pg_query/include/postgres/utils/plancache.h +238 -0
  412. data/ext/pg_query/include/postgres/utils/portal.h +252 -0
  413. data/ext/pg_query/include/postgres/utils/probes.h +114 -0
  414. data/ext/pg_query/include/postgres/utils/ps_status.h +47 -0
  415. data/ext/pg_query/include/postgres/utils/queryenvironment.h +74 -0
  416. data/ext/pg_query/include/postgres/utils/regproc.h +39 -0
  417. data/ext/pg_query/include/postgres/utils/rel.h +711 -0
  418. data/ext/pg_query/include/postgres/utils/relcache.h +155 -0
  419. data/ext/pg_query/include/postgres/utils/reltrigger.h +81 -0
  420. data/ext/pg_query/include/postgres/utils/resowner.h +167 -0
  421. data/ext/pg_query/include/postgres/utils/ruleutils.h +52 -0
  422. data/ext/pg_query/include/postgres/utils/sharedtuplestore.h +61 -0
  423. data/ext/pg_query/include/postgres/utils/snapmgr.h +130 -0
  424. data/ext/pg_query/include/postgres/utils/snapshot.h +219 -0
  425. data/ext/pg_query/include/postgres/utils/sortsupport.h +391 -0
  426. data/ext/pg_query/include/postgres/utils/syscache.h +136 -0
  427. data/ext/pg_query/include/postgres/utils/timeout.h +96 -0
  428. data/ext/pg_query/include/postgres/utils/timestamp.h +147 -0
  429. data/ext/pg_query/include/postgres/utils/tuplesort.h +472 -0
  430. data/ext/pg_query/include/postgres/utils/tuplestore.h +88 -0
  431. data/ext/pg_query/include/postgres/utils/typcache.h +210 -0
  432. data/ext/pg_query/include/postgres/utils/varlena.h +53 -0
  433. data/ext/pg_query/include/postgres/utils/wait_event.h +108 -0
  434. data/ext/pg_query/include/postgres/utils/wait_event_types.h +218 -0
  435. data/ext/pg_query/include/postgres/utils/xml.h +94 -0
  436. data/ext/pg_query/include/postgres/varatt.h +358 -0
  437. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +7723 -6368
  438. data/ext/pg_query/include/protobuf/pg_query.pb.h +120022 -87031
  439. data/ext/pg_query/pg_query.c +10 -1
  440. data/ext/pg_query/pg_query.pb-c.c +22595 -17738
  441. data/ext/pg_query/pg_query_deparse.c +1 -10635
  442. data/ext/pg_query/pg_query_fingerprint.c +12 -8
  443. data/ext/pg_query/pg_query_fingerprint.h +1 -1
  444. data/ext/pg_query/pg_query_internal.h +1 -1
  445. data/ext/pg_query/pg_query_json_plpgsql.c +1 -0
  446. data/ext/pg_query/pg_query_normalize.c +43 -2
  447. data/ext/pg_query/pg_query_outfuncs_json.c +9 -1
  448. data/ext/pg_query/pg_query_outfuncs_protobuf.c +3 -2
  449. data/ext/pg_query/pg_query_parse.c +47 -5
  450. data/ext/pg_query/pg_query_parse_plpgsql.c +19 -18
  451. data/ext/pg_query/pg_query_readfuncs_protobuf.c +3 -2
  452. data/ext/pg_query/pg_query_ruby.c +5 -0
  453. data/ext/pg_query/pg_query_scan.c +2 -2
  454. data/ext/pg_query/pg_query_split.c +3 -3
  455. data/ext/pg_query/postgres_deparse.c +11496 -0
  456. data/ext/pg_query/postgres_deparse.h +9 -0
  457. data/ext/pg_query/src_backend_catalog_namespace.c +243 -63
  458. data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -3
  459. data/ext/pg_query/src_backend_commands_define.c +2 -3
  460. data/ext/pg_query/src_backend_nodes_bitmapset.c +140 -156
  461. data/ext/pg_query/src_backend_nodes_copyfuncs.c +96 -6202
  462. data/ext/pg_query/src_backend_nodes_equalfuncs.c +95 -4068
  463. data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
  464. data/ext/pg_query/src_backend_nodes_list.c +16 -8
  465. data/ext/pg_query/src_backend_nodes_makefuncs.c +134 -1
  466. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +391 -133
  467. data/ext/pg_query/src_backend_nodes_value.c +1 -1
  468. data/ext/pg_query/src_backend_parser_gram.c +43710 -39953
  469. data/ext/pg_query/src_backend_parser_parser.c +34 -8
  470. data/ext/pg_query/src_backend_parser_scan.c +6971 -3373
  471. data/ext/pg_query/src_backend_parser_scansup.c +2 -1
  472. data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
  473. data/ext/pg_query/src_backend_tcop_postgres.c +99 -96
  474. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +2 -2
  475. data/ext/pg_query/src_backend_utils_adt_datum.c +2 -2
  476. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  477. data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
  478. data/ext/pg_query/src_backend_utils_adt_numutils.c +488 -0
  479. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +177 -30
  480. data/ext/pg_query/src_backend_utils_error_assert.c +4 -7
  481. data/ext/pg_query/src_backend_utils_error_elog.c +397 -270
  482. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +36 -2
  483. data/ext/pg_query/src_backend_utils_init_globals.c +20 -5
  484. data/ext/pg_query/src_backend_utils_mb_mbutils.c +31 -84
  485. data/ext/pg_query/src_backend_utils_misc_guc_tables.c +502 -0
  486. data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +166 -0
  487. data/ext/pg_query/src_backend_utils_mmgr_aset.c +704 -497
  488. data/ext/pg_query/src_backend_utils_mmgr_bump.c +728 -0
  489. data/ext/pg_query/src_backend_utils_mmgr_generation.c +1115 -0
  490. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +637 -233
  491. data/ext/pg_query/src_backend_utils_mmgr_slab.c +1079 -0
  492. data/ext/pg_query/src_common_encnames.c +46 -44
  493. data/ext/pg_query/src_common_hashfn.c +1 -1
  494. data/ext/pg_query/src_common_keywords.c +1 -1
  495. data/ext/pg_query/src_common_kwlist_d.h +586 -517
  496. data/ext/pg_query/src_common_kwlookup.c +1 -1
  497. data/ext/pg_query/src_common_psprintf.c +3 -3
  498. data/ext/pg_query/src_common_stringinfo.c +21 -4
  499. data/ext/pg_query/src_common_wchar.c +100 -116
  500. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +99 -5
  501. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -1
  502. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +829 -763
  503. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  504. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
  505. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +19 -1
  506. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +48 -46
  507. data/ext/pg_query/src_port_pg_bitutils.c +251 -32
  508. data/ext/pg_query/src_port_pgstrcasecmp.c +57 -1
  509. data/ext/pg_query/src_port_snprintf.c +20 -27
  510. data/ext/pg_query/src_port_strerror.c +1 -3
  511. data/ext/pg_query/src_port_strlcpy.c +79 -0
  512. data/lib/pg_query/fingerprint.rb +5 -8
  513. data/lib/pg_query/node.rb +16 -11
  514. data/lib/pg_query/param_refs.rb +2 -2
  515. data/lib/pg_query/parse.rb +6 -8
  516. data/lib/pg_query/parse_error.rb +1 -0
  517. data/lib/pg_query/pg_query_pb.rb +173 -3196
  518. data/lib/pg_query/scan.rb +1 -0
  519. data/lib/pg_query/treewalker.rb +52 -11
  520. data/lib/pg_query/truncate.rb +18 -20
  521. data/lib/pg_query/version.rb +1 -1
  522. metadata +443 -442
  523. data/ext/pg_query/guc-file.c +0 -0
  524. data/ext/pg_query/include/access/amapi.h +0 -290
  525. data/ext/pg_query/include/access/attmap.h +0 -52
  526. data/ext/pg_query/include/access/attnum.h +0 -64
  527. data/ext/pg_query/include/access/clog.h +0 -63
  528. data/ext/pg_query/include/access/commit_ts.h +0 -74
  529. data/ext/pg_query/include/access/detoast.h +0 -82
  530. data/ext/pg_query/include/access/genam.h +0 -231
  531. data/ext/pg_query/include/access/gin.h +0 -78
  532. data/ext/pg_query/include/access/htup.h +0 -89
  533. data/ext/pg_query/include/access/htup_details.h +0 -807
  534. data/ext/pg_query/include/access/itup.h +0 -167
  535. data/ext/pg_query/include/access/parallel.h +0 -82
  536. data/ext/pg_query/include/access/printtup.h +0 -35
  537. data/ext/pg_query/include/access/relation.h +0 -28
  538. data/ext/pg_query/include/access/relscan.h +0 -191
  539. data/ext/pg_query/include/access/rmgrlist.h +0 -49
  540. data/ext/pg_query/include/access/sdir.h +0 -58
  541. data/ext/pg_query/include/access/skey.h +0 -151
  542. data/ext/pg_query/include/access/stratnum.h +0 -85
  543. data/ext/pg_query/include/access/sysattr.h +0 -29
  544. data/ext/pg_query/include/access/table.h +0 -28
  545. data/ext/pg_query/include/access/tableam.h +0 -2077
  546. data/ext/pg_query/include/access/toast_compression.h +0 -73
  547. data/ext/pg_query/include/access/transam.h +0 -375
  548. data/ext/pg_query/include/access/tupconvert.h +0 -51
  549. data/ext/pg_query/include/access/tupdesc.h +0 -154
  550. data/ext/pg_query/include/access/tupmacs.h +0 -247
  551. data/ext/pg_query/include/access/twophase.h +0 -65
  552. data/ext/pg_query/include/access/xact.h +0 -523
  553. data/ext/pg_query/include/access/xlog.h +0 -303
  554. data/ext/pg_query/include/access/xlog_internal.h +0 -366
  555. data/ext/pg_query/include/access/xlogdefs.h +0 -101
  556. data/ext/pg_query/include/access/xlogprefetcher.h +0 -55
  557. data/ext/pg_query/include/access/xlogreader.h +0 -443
  558. data/ext/pg_query/include/access/xlogrecord.h +0 -236
  559. data/ext/pg_query/include/access/xlogrecovery.h +0 -157
  560. data/ext/pg_query/include/c.h +0 -1391
  561. data/ext/pg_query/include/catalog/catalog.h +0 -44
  562. data/ext/pg_query/include/catalog/catversion.h +0 -58
  563. data/ext/pg_query/include/catalog/dependency.h +0 -269
  564. data/ext/pg_query/include/catalog/genbki.h +0 -142
  565. data/ext/pg_query/include/catalog/index.h +0 -214
  566. data/ext/pg_query/include/catalog/indexing.h +0 -54
  567. data/ext/pg_query/include/catalog/namespace.h +0 -190
  568. data/ext/pg_query/include/catalog/objectaccess.h +0 -265
  569. data/ext/pg_query/include/catalog/objectaddress.h +0 -89
  570. data/ext/pg_query/include/catalog/pg_aggregate.h +0 -180
  571. data/ext/pg_query/include/catalog/pg_aggregate_d.h +0 -78
  572. data/ext/pg_query/include/catalog/pg_am.h +0 -63
  573. data/ext/pg_query/include/catalog/pg_am_d.h +0 -47
  574. data/ext/pg_query/include/catalog/pg_attribute.h +0 -221
  575. data/ext/pg_query/include/catalog/pg_attribute_d.h +0 -62
  576. data/ext/pg_query/include/catalog/pg_authid.h +0 -63
  577. data/ext/pg_query/include/catalog/pg_authid_d.h +0 -57
  578. data/ext/pg_query/include/catalog/pg_class.h +0 -230
  579. data/ext/pg_query/include/catalog/pg_class_d.h +0 -132
  580. data/ext/pg_query/include/catalog/pg_collation.h +0 -98
  581. data/ext/pg_query/include/catalog/pg_collation_d.h +0 -62
  582. data/ext/pg_query/include/catalog/pg_constraint.h +0 -273
  583. data/ext/pg_query/include/catalog/pg_constraint_d.h +0 -73
  584. data/ext/pg_query/include/catalog/pg_control.h +0 -250
  585. data/ext/pg_query/include/catalog/pg_conversion.h +0 -75
  586. data/ext/pg_query/include/catalog/pg_conversion_d.h +0 -38
  587. data/ext/pg_query/include/catalog/pg_depend.h +0 -77
  588. data/ext/pg_query/include/catalog/pg_depend_d.h +0 -36
  589. data/ext/pg_query/include/catalog/pg_event_trigger.h +0 -57
  590. data/ext/pg_query/include/catalog/pg_event_trigger_d.h +0 -36
  591. data/ext/pg_query/include/catalog/pg_index.h +0 -90
  592. data/ext/pg_query/include/catalog/pg_index_d.h +0 -59
  593. data/ext/pg_query/include/catalog/pg_language.h +0 -72
  594. data/ext/pg_query/include/catalog/pg_language_d.h +0 -41
  595. data/ext/pg_query/include/catalog/pg_namespace.h +0 -64
  596. data/ext/pg_query/include/catalog/pg_namespace_d.h +0 -36
  597. data/ext/pg_query/include/catalog/pg_opclass.h +0 -88
  598. data/ext/pg_query/include/catalog/pg_opclass_d.h +0 -51
  599. data/ext/pg_query/include/catalog/pg_operator.h +0 -107
  600. data/ext/pg_query/include/catalog/pg_operator_d.h +0 -142
  601. data/ext/pg_query/include/catalog/pg_opfamily.h +0 -63
  602. data/ext/pg_query/include/catalog/pg_opfamily_d.h +0 -49
  603. data/ext/pg_query/include/catalog/pg_parameter_acl.h +0 -60
  604. data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +0 -34
  605. data/ext/pg_query/include/catalog/pg_partitioned_table.h +0 -74
  606. data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +0 -36
  607. data/ext/pg_query/include/catalog/pg_proc.h +0 -220
  608. data/ext/pg_query/include/catalog/pg_proc_d.h +0 -101
  609. data/ext/pg_query/include/catalog/pg_publication.h +0 -161
  610. data/ext/pg_query/include/catalog/pg_publication_d.h +0 -38
  611. data/ext/pg_query/include/catalog/pg_replication_origin.h +0 -62
  612. data/ext/pg_query/include/catalog/pg_replication_origin_d.h +0 -33
  613. data/ext/pg_query/include/catalog/pg_statistic.h +0 -282
  614. data/ext/pg_query/include/catalog/pg_statistic_d.h +0 -195
  615. data/ext/pg_query/include/catalog/pg_statistic_ext.h +0 -88
  616. data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +0 -45
  617. data/ext/pg_query/include/catalog/pg_transform.h +0 -48
  618. data/ext/pg_query/include/catalog/pg_transform_d.h +0 -34
  619. data/ext/pg_query/include/catalog/pg_trigger.h +0 -153
  620. data/ext/pg_query/include/catalog/pg_trigger_d.h +0 -109
  621. data/ext/pg_query/include/catalog/pg_ts_config.h +0 -53
  622. data/ext/pg_query/include/catalog/pg_ts_config_d.h +0 -34
  623. data/ext/pg_query/include/catalog/pg_ts_dict.h +0 -59
  624. data/ext/pg_query/include/catalog/pg_ts_dict_d.h +0 -35
  625. data/ext/pg_query/include/catalog/pg_ts_parser.h +0 -60
  626. data/ext/pg_query/include/catalog/pg_ts_parser_d.h +0 -37
  627. data/ext/pg_query/include/catalog/pg_ts_template.h +0 -51
  628. data/ext/pg_query/include/catalog/pg_ts_template_d.h +0 -34
  629. data/ext/pg_query/include/catalog/pg_type.h +0 -404
  630. data/ext/pg_query/include/catalog/pg_type_d.h +0 -324
  631. data/ext/pg_query/include/catalog/storage.h +0 -50
  632. data/ext/pg_query/include/commands/async.h +0 -53
  633. data/ext/pg_query/include/commands/dbcommands.h +0 -36
  634. data/ext/pg_query/include/commands/defrem.h +0 -160
  635. data/ext/pg_query/include/commands/event_trigger.h +0 -88
  636. data/ext/pg_query/include/commands/explain.h +0 -127
  637. data/ext/pg_query/include/commands/prepare.h +0 -61
  638. data/ext/pg_query/include/commands/tablespace.h +0 -69
  639. data/ext/pg_query/include/commands/trigger.h +0 -287
  640. data/ext/pg_query/include/commands/user.h +0 -37
  641. data/ext/pg_query/include/commands/vacuum.h +0 -340
  642. data/ext/pg_query/include/commands/variable.h +0 -38
  643. data/ext/pg_query/include/common/file_perm.h +0 -56
  644. data/ext/pg_query/include/common/hashfn.h +0 -104
  645. data/ext/pg_query/include/common/ip.h +0 -31
  646. data/ext/pg_query/include/common/keywords.h +0 -29
  647. data/ext/pg_query/include/common/kwlookup.h +0 -44
  648. data/ext/pg_query/include/common/pg_prng.h +0 -60
  649. data/ext/pg_query/include/common/relpath.h +0 -90
  650. data/ext/pg_query/include/common/string.h +0 -42
  651. data/ext/pg_query/include/common/unicode_combining_table.h +0 -308
  652. data/ext/pg_query/include/common/unicode_east_asian_fw_table.h +0 -125
  653. data/ext/pg_query/include/datatype/timestamp.h +0 -236
  654. data/ext/pg_query/include/executor/execdesc.h +0 -70
  655. data/ext/pg_query/include/executor/executor.h +0 -663
  656. data/ext/pg_query/include/executor/functions.h +0 -55
  657. data/ext/pg_query/include/executor/instrument.h +0 -118
  658. data/ext/pg_query/include/executor/spi.h +0 -213
  659. data/ext/pg_query/include/executor/tablefunc.h +0 -67
  660. data/ext/pg_query/include/executor/tuptable.h +0 -487
  661. data/ext/pg_query/include/fmgr.h +0 -781
  662. data/ext/pg_query/include/funcapi.h +0 -360
  663. data/ext/pg_query/include/getaddrinfo.h +0 -162
  664. data/ext/pg_query/include/jit/jit.h +0 -105
  665. data/ext/pg_query/include/kwlist_d.h +0 -1095
  666. data/ext/pg_query/include/lib/dshash.h +0 -112
  667. data/ext/pg_query/include/lib/ilist.h +0 -746
  668. data/ext/pg_query/include/lib/pairingheap.h +0 -102
  669. data/ext/pg_query/include/lib/simplehash.h +0 -1184
  670. data/ext/pg_query/include/lib/sort_template.h +0 -432
  671. data/ext/pg_query/include/lib/stringinfo.h +0 -161
  672. data/ext/pg_query/include/libpq/auth.h +0 -31
  673. data/ext/pg_query/include/libpq/crypt.h +0 -47
  674. data/ext/pg_query/include/libpq/hba.h +0 -179
  675. data/ext/pg_query/include/libpq/libpq-be.h +0 -343
  676. data/ext/pg_query/include/libpq/libpq.h +0 -144
  677. data/ext/pg_query/include/libpq/pqcomm.h +0 -194
  678. data/ext/pg_query/include/libpq/pqformat.h +0 -210
  679. data/ext/pg_query/include/libpq/pqsignal.h +0 -42
  680. data/ext/pg_query/include/mb/pg_wchar.h +0 -755
  681. data/ext/pg_query/include/mb/stringinfo_mb.h +0 -24
  682. data/ext/pg_query/include/miscadmin.h +0 -495
  683. data/ext/pg_query/include/nodes/bitmapset.h +0 -122
  684. data/ext/pg_query/include/nodes/execnodes.h +0 -2715
  685. data/ext/pg_query/include/nodes/extensible.h +0 -162
  686. data/ext/pg_query/include/nodes/lockoptions.h +0 -61
  687. data/ext/pg_query/include/nodes/makefuncs.h +0 -109
  688. data/ext/pg_query/include/nodes/memnodes.h +0 -110
  689. data/ext/pg_query/include/nodes/nodeFuncs.h +0 -162
  690. data/ext/pg_query/include/nodes/nodes.h +0 -861
  691. data/ext/pg_query/include/nodes/params.h +0 -170
  692. data/ext/pg_query/include/nodes/parsenodes.h +0 -3812
  693. data/ext/pg_query/include/nodes/pathnodes.h +0 -2734
  694. data/ext/pg_query/include/nodes/pg_list.h +0 -612
  695. data/ext/pg_query/include/nodes/plannodes.h +0 -1349
  696. data/ext/pg_query/include/nodes/primnodes.h +0 -1593
  697. data/ext/pg_query/include/nodes/print.h +0 -34
  698. data/ext/pg_query/include/nodes/tidbitmap.h +0 -75
  699. data/ext/pg_query/include/nodes/value.h +0 -80
  700. data/ext/pg_query/include/optimizer/cost.h +0 -213
  701. data/ext/pg_query/include/optimizer/geqo.h +0 -90
  702. data/ext/pg_query/include/optimizer/geqo_gene.h +0 -45
  703. data/ext/pg_query/include/optimizer/optimizer.h +0 -202
  704. data/ext/pg_query/include/optimizer/paths.h +0 -257
  705. data/ext/pg_query/include/optimizer/planmain.h +0 -120
  706. data/ext/pg_query/include/parser/analyze.h +0 -63
  707. data/ext/pg_query/include/parser/gram.h +0 -1101
  708. data/ext/pg_query/include/parser/gramparse.h +0 -75
  709. data/ext/pg_query/include/parser/kwlist.h +0 -487
  710. data/ext/pg_query/include/parser/parse_agg.h +0 -63
  711. data/ext/pg_query/include/parser/parse_coerce.h +0 -100
  712. data/ext/pg_query/include/parser/parse_expr.h +0 -25
  713. data/ext/pg_query/include/parser/parse_func.h +0 -74
  714. data/ext/pg_query/include/parser/parse_node.h +0 -339
  715. data/ext/pg_query/include/parser/parse_oper.h +0 -65
  716. data/ext/pg_query/include/parser/parse_relation.h +0 -124
  717. data/ext/pg_query/include/parser/parse_type.h +0 -60
  718. data/ext/pg_query/include/parser/parser.h +0 -68
  719. data/ext/pg_query/include/parser/parsetree.h +0 -61
  720. data/ext/pg_query/include/parser/scanner.h +0 -152
  721. data/ext/pg_query/include/parser/scansup.h +0 -27
  722. data/ext/pg_query/include/partitioning/partdefs.h +0 -26
  723. data/ext/pg_query/include/pg_config.h +0 -1037
  724. data/ext/pg_query/include/pg_config_manual.h +0 -410
  725. data/ext/pg_query/include/pg_config_os.h +0 -8
  726. data/ext/pg_query/include/pg_getopt.h +0 -56
  727. data/ext/pg_query/include/pg_trace.h +0 -17
  728. data/ext/pg_query/include/pgstat.h +0 -699
  729. data/ext/pg_query/include/pgtime.h +0 -94
  730. data/ext/pg_query/include/pl_gram.h +0 -383
  731. data/ext/pg_query/include/pl_reserved_kwlist.h +0 -52
  732. data/ext/pg_query/include/pl_reserved_kwlist_d.h +0 -114
  733. data/ext/pg_query/include/pl_unreserved_kwlist.h +0 -111
  734. data/ext/pg_query/include/pl_unreserved_kwlist_d.h +0 -244
  735. data/ext/pg_query/include/plerrcodes.h +0 -998
  736. data/ext/pg_query/include/plpgsql.h +0 -1345
  737. data/ext/pg_query/include/port/atomics/arch-arm.h +0 -32
  738. data/ext/pg_query/include/port/atomics/arch-ppc.h +0 -254
  739. data/ext/pg_query/include/port/atomics/arch-x86.h +0 -252
  740. data/ext/pg_query/include/port/atomics/fallback.h +0 -170
  741. data/ext/pg_query/include/port/atomics/generic-gcc.h +0 -286
  742. data/ext/pg_query/include/port/atomics/generic.h +0 -401
  743. data/ext/pg_query/include/port/atomics.h +0 -524
  744. data/ext/pg_query/include/port/pg_bitutils.h +0 -302
  745. data/ext/pg_query/include/port/pg_bswap.h +0 -161
  746. data/ext/pg_query/include/port/pg_crc32c.h +0 -101
  747. data/ext/pg_query/include/port.h +0 -553
  748. data/ext/pg_query/include/portability/instr_time.h +0 -256
  749. data/ext/pg_query/include/postgres.h +0 -808
  750. data/ext/pg_query/include/postgres_ext.h +0 -74
  751. data/ext/pg_query/include/postmaster/autovacuum.h +0 -83
  752. data/ext/pg_query/include/postmaster/auxprocess.h +0 -20
  753. data/ext/pg_query/include/postmaster/bgworker.h +0 -162
  754. data/ext/pg_query/include/postmaster/bgworker_internals.h +0 -64
  755. data/ext/pg_query/include/postmaster/bgwriter.h +0 -45
  756. data/ext/pg_query/include/postmaster/fork_process.h +0 -17
  757. data/ext/pg_query/include/postmaster/interrupt.h +0 -32
  758. data/ext/pg_query/include/postmaster/pgarch.h +0 -73
  759. data/ext/pg_query/include/postmaster/postmaster.h +0 -78
  760. data/ext/pg_query/include/postmaster/startup.h +0 -39
  761. data/ext/pg_query/include/postmaster/syslogger.h +0 -103
  762. data/ext/pg_query/include/postmaster/walwriter.h +0 -21
  763. data/ext/pg_query/include/regex/regex.h +0 -186
  764. data/ext/pg_query/include/replication/logicallauncher.h +0 -29
  765. data/ext/pg_query/include/replication/logicalproto.h +0 -254
  766. data/ext/pg_query/include/replication/logicalworker.h +0 -19
  767. data/ext/pg_query/include/replication/origin.h +0 -73
  768. data/ext/pg_query/include/replication/reorderbuffer.h +0 -685
  769. data/ext/pg_query/include/replication/slot.h +0 -230
  770. data/ext/pg_query/include/replication/syncrep.h +0 -115
  771. data/ext/pg_query/include/replication/walreceiver.h +0 -472
  772. data/ext/pg_query/include/replication/walsender.h +0 -74
  773. data/ext/pg_query/include/rewrite/prs2lock.h +0 -46
  774. data/ext/pg_query/include/rewrite/rewriteHandler.h +0 -38
  775. data/ext/pg_query/include/rewrite/rewriteManip.h +0 -87
  776. data/ext/pg_query/include/rewrite/rewriteSupport.h +0 -26
  777. data/ext/pg_query/include/storage/backendid.h +0 -37
  778. data/ext/pg_query/include/storage/block.h +0 -115
  779. data/ext/pg_query/include/storage/buf.h +0 -46
  780. data/ext/pg_query/include/storage/bufmgr.h +0 -297
  781. data/ext/pg_query/include/storage/bufpage.h +0 -457
  782. data/ext/pg_query/include/storage/condition_variable.h +0 -73
  783. data/ext/pg_query/include/storage/dsm.h +0 -64
  784. data/ext/pg_query/include/storage/dsm_impl.h +0 -76
  785. data/ext/pg_query/include/storage/fd.h +0 -198
  786. data/ext/pg_query/include/storage/fileset.h +0 -40
  787. data/ext/pg_query/include/storage/ipc.h +0 -84
  788. data/ext/pg_query/include/storage/item.h +0 -19
  789. data/ext/pg_query/include/storage/itemid.h +0 -184
  790. data/ext/pg_query/include/storage/itemptr.h +0 -208
  791. data/ext/pg_query/include/storage/large_object.h +0 -100
  792. data/ext/pg_query/include/storage/latch.h +0 -186
  793. data/ext/pg_query/include/storage/lmgr.h +0 -115
  794. data/ext/pg_query/include/storage/lock.h +0 -616
  795. data/ext/pg_query/include/storage/lockdefs.h +0 -59
  796. data/ext/pg_query/include/storage/lwlock.h +0 -206
  797. data/ext/pg_query/include/storage/lwlocknames.h +0 -50
  798. data/ext/pg_query/include/storage/off.h +0 -57
  799. data/ext/pg_query/include/storage/pg_sema.h +0 -61
  800. data/ext/pg_query/include/storage/pg_shmem.h +0 -92
  801. data/ext/pg_query/include/storage/pmsignal.h +0 -105
  802. data/ext/pg_query/include/storage/predicate.h +0 -87
  803. data/ext/pg_query/include/storage/proc.h +0 -461
  804. data/ext/pg_query/include/storage/procarray.h +0 -98
  805. data/ext/pg_query/include/storage/proclist_types.h +0 -51
  806. data/ext/pg_query/include/storage/procsignal.h +0 -71
  807. data/ext/pg_query/include/storage/relfilenode.h +0 -99
  808. data/ext/pg_query/include/storage/s_lock.h +0 -1110
  809. data/ext/pg_query/include/storage/sharedfileset.h +0 -37
  810. data/ext/pg_query/include/storage/shm_mq.h +0 -86
  811. data/ext/pg_query/include/storage/shm_toc.h +0 -58
  812. data/ext/pg_query/include/storage/shmem.h +0 -81
  813. data/ext/pg_query/include/storage/sinval.h +0 -153
  814. data/ext/pg_query/include/storage/sinvaladt.h +0 -43
  815. data/ext/pg_query/include/storage/smgr.h +0 -111
  816. data/ext/pg_query/include/storage/spin.h +0 -77
  817. data/ext/pg_query/include/storage/standby.h +0 -98
  818. data/ext/pg_query/include/storage/standbydefs.h +0 -74
  819. data/ext/pg_query/include/storage/sync.h +0 -66
  820. data/ext/pg_query/include/tcop/cmdtag.h +0 -58
  821. data/ext/pg_query/include/tcop/cmdtaglist.h +0 -218
  822. data/ext/pg_query/include/tcop/deparse_utility.h +0 -108
  823. data/ext/pg_query/include/tcop/dest.h +0 -149
  824. data/ext/pg_query/include/tcop/fastpath.h +0 -20
  825. data/ext/pg_query/include/tcop/pquery.h +0 -51
  826. data/ext/pg_query/include/tcop/tcopprot.h +0 -97
  827. data/ext/pg_query/include/tcop/utility.h +0 -112
  828. data/ext/pg_query/include/tsearch/ts_cache.h +0 -98
  829. data/ext/pg_query/include/utils/acl.h +0 -333
  830. data/ext/pg_query/include/utils/aclchk_internal.h +0 -45
  831. data/ext/pg_query/include/utils/array.h +0 -464
  832. data/ext/pg_query/include/utils/backend_progress.h +0 -44
  833. data/ext/pg_query/include/utils/backend_status.h +0 -321
  834. data/ext/pg_query/include/utils/builtins.h +0 -127
  835. data/ext/pg_query/include/utils/bytea.h +0 -28
  836. data/ext/pg_query/include/utils/catcache.h +0 -231
  837. data/ext/pg_query/include/utils/date.h +0 -90
  838. data/ext/pg_query/include/utils/datetime.h +0 -344
  839. data/ext/pg_query/include/utils/datum.h +0 -76
  840. data/ext/pg_query/include/utils/dsa.h +0 -123
  841. data/ext/pg_query/include/utils/dynahash.h +0 -20
  842. data/ext/pg_query/include/utils/elog.h +0 -470
  843. data/ext/pg_query/include/utils/errcodes.h +0 -354
  844. data/ext/pg_query/include/utils/expandeddatum.h +0 -159
  845. data/ext/pg_query/include/utils/expandedrecord.h +0 -231
  846. data/ext/pg_query/include/utils/float.h +0 -356
  847. data/ext/pg_query/include/utils/fmgroids.h +0 -3261
  848. data/ext/pg_query/include/utils/fmgrprotos.h +0 -2829
  849. data/ext/pg_query/include/utils/fmgrtab.h +0 -49
  850. data/ext/pg_query/include/utils/guc.h +0 -469
  851. data/ext/pg_query/include/utils/guc_tables.h +0 -276
  852. data/ext/pg_query/include/utils/hsearch.h +0 -153
  853. data/ext/pg_query/include/utils/inval.h +0 -68
  854. data/ext/pg_query/include/utils/lsyscache.h +0 -208
  855. data/ext/pg_query/include/utils/memdebug.h +0 -82
  856. data/ext/pg_query/include/utils/memutils.h +0 -230
  857. data/ext/pg_query/include/utils/numeric.h +0 -90
  858. data/ext/pg_query/include/utils/palloc.h +0 -158
  859. data/ext/pg_query/include/utils/partcache.h +0 -102
  860. data/ext/pg_query/include/utils/pg_locale.h +0 -127
  861. data/ext/pg_query/include/utils/pg_lsn.h +0 -29
  862. data/ext/pg_query/include/utils/pgstat_internal.h +0 -784
  863. data/ext/pg_query/include/utils/pidfile.h +0 -56
  864. data/ext/pg_query/include/utils/plancache.h +0 -236
  865. data/ext/pg_query/include/utils/portal.h +0 -252
  866. data/ext/pg_query/include/utils/probes.h +0 -114
  867. data/ext/pg_query/include/utils/ps_status.h +0 -25
  868. data/ext/pg_query/include/utils/queryenvironment.h +0 -74
  869. data/ext/pg_query/include/utils/queryjumble.h +0 -88
  870. data/ext/pg_query/include/utils/regproc.h +0 -39
  871. data/ext/pg_query/include/utils/rel.h +0 -695
  872. data/ext/pg_query/include/utils/relcache.h +0 -153
  873. data/ext/pg_query/include/utils/reltrigger.h +0 -81
  874. data/ext/pg_query/include/utils/resowner.h +0 -86
  875. data/ext/pg_query/include/utils/rls.h +0 -50
  876. data/ext/pg_query/include/utils/ruleutils.h +0 -47
  877. data/ext/pg_query/include/utils/sharedtuplestore.h +0 -61
  878. data/ext/pg_query/include/utils/snapmgr.h +0 -179
  879. data/ext/pg_query/include/utils/snapshot.h +0 -219
  880. data/ext/pg_query/include/utils/sortsupport.h +0 -391
  881. data/ext/pg_query/include/utils/syscache.h +0 -224
  882. data/ext/pg_query/include/utils/timeout.h +0 -95
  883. data/ext/pg_query/include/utils/timestamp.h +0 -117
  884. data/ext/pg_query/include/utils/tuplesort.h +0 -291
  885. data/ext/pg_query/include/utils/tuplestore.h +0 -91
  886. data/ext/pg_query/include/utils/typcache.h +0 -209
  887. data/ext/pg_query/include/utils/tzparser.h +0 -39
  888. data/ext/pg_query/include/utils/varlena.h +0 -41
  889. data/ext/pg_query/include/utils/wait_event.h +0 -289
  890. data/ext/pg_query/include/utils/xml.h +0 -84
  891. data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2201
  892. data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -371
  893. data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1116
  894. data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1993
  895. data/ext/pg_query/src_common_pg_prng.c +0 -152
  896. data/ext/pg_query/src_common_string.c +0 -92
  897. data/ext/pg_query/src_port_pgsleep.c +0 -69
  898. data/ext/pg_query/src_port_strnlen.c +0 -39
  899. /data/ext/pg_query/{pg_query_ruby.sym → ext_symbols.sym} +0 -0
  900. /data/ext/pg_query/include/{access → postgres/access}/rmgr.h +0 -0
  901. /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
@@ -1,1391 +0,0 @@
1
- /*-------------------------------------------------------------------------
2
- *
3
- * c.h
4
- * Fundamental C definitions. This is included by every .c file in
5
- * PostgreSQL (via either postgres.h or postgres_fe.h, as appropriate).
6
- *
7
- * Note that the definitions here are not intended to be exposed to clients
8
- * of the frontend interface libraries --- so we don't worry much about
9
- * polluting the namespace with lots of stuff...
10
- *
11
- *
12
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
13
- * Portions Copyright (c) 1994, Regents of the University of California
14
- *
15
- * src/include/c.h
16
- *
17
- *-------------------------------------------------------------------------
18
- */
19
- /*
20
- *----------------------------------------------------------------
21
- * TABLE OF CONTENTS
22
- *
23
- * When adding stuff to this file, please try to put stuff
24
- * into the relevant section, or add new sections as appropriate.
25
- *
26
- * section description
27
- * ------- ------------------------------------------------
28
- * 0) pg_config.h and standard system headers
29
- * 1) compiler characteristics
30
- * 2) bool, true, false
31
- * 3) standard system types
32
- * 4) IsValid macros for system types
33
- * 5) offsetof, lengthof, alignment
34
- * 6) assertions
35
- * 7) widely useful macros
36
- * 8) random stuff
37
- * 9) system-specific hacks
38
- *
39
- * NOTE: since this file is included by both frontend and backend modules,
40
- * it's usually wrong to put an "extern" declaration here, unless it's
41
- * ifdef'd so that it's seen in only one case or the other.
42
- * typedefs and macros are the kind of thing that might go here.
43
- *
44
- *----------------------------------------------------------------
45
- */
46
- #ifndef C_H
47
- #define C_H
48
-
49
- #include "postgres_ext.h"
50
-
51
- /* Must undef pg_config_ext.h symbols before including pg_config.h */
52
- #undef PG_INT64_TYPE
53
-
54
- #include "pg_config.h"
55
- #include "pg_config_manual.h" /* must be after pg_config.h */
56
- #include "pg_config_os.h" /* must be before any system header files */
57
-
58
- /* System header files that should be available everywhere in Postgres */
59
- #include <stdio.h>
60
- #include <stdlib.h>
61
- #include <string.h>
62
- #include <stddef.h>
63
- #include <stdarg.h>
64
- #ifdef HAVE_STRINGS_H
65
- #include <strings.h>
66
- #endif
67
- #include <stdint.h>
68
- #include <sys/types.h>
69
- #include <errno.h>
70
- #if defined(WIN32) || defined(__CYGWIN__)
71
- #include <fcntl.h> /* ensure O_BINARY is available */
72
- #endif
73
- #include <locale.h>
74
- #ifdef ENABLE_NLS
75
- #include <libintl.h>
76
- #endif
77
-
78
-
79
- /* ----------------------------------------------------------------
80
- * Section 1: compiler characteristics
81
- *
82
- * type prefixes (const, signed, volatile, inline) are handled in pg_config.h.
83
- * ----------------------------------------------------------------
84
- */
85
-
86
- /*
87
- * Disable "inline" if PG_FORCE_DISABLE_INLINE is defined.
88
- * This is used to work around compiler bugs and might also be useful for
89
- * investigatory purposes.
90
- */
91
- #ifdef PG_FORCE_DISABLE_INLINE
92
- #undef inline
93
- #define inline
94
- #endif
95
-
96
- /*
97
- * Attribute macros
98
- *
99
- * GCC: https://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html
100
- * GCC: https://gcc.gnu.org/onlinedocs/gcc/Type-Attributes.html
101
- * Clang: https://clang.llvm.org/docs/AttributeReference.html
102
- * Sunpro: https://docs.oracle.com/cd/E18659_01/html/821-1384/gjzke.html
103
- * XLC: https://www.ibm.com/support/knowledgecenter/SSGH2K_13.1.2/com.ibm.xlc131.aix.doc/language_ref/function_attributes.html
104
- * XLC: https://www.ibm.com/support/knowledgecenter/SSGH2K_13.1.2/com.ibm.xlc131.aix.doc/language_ref/type_attrib.html
105
- */
106
-
107
- /*
108
- * For compilers which don't support __has_attribute, we just define
109
- * __has_attribute(x) to 0 so that we can define macros for various
110
- * __attribute__s more easily below.
111
- */
112
- #ifndef __has_attribute
113
- #define __has_attribute(attribute) 0
114
- #endif
115
-
116
- /* only GCC supports the unused attribute */
117
- #ifdef __GNUC__
118
- #define pg_attribute_unused() __attribute__((unused))
119
- #else
120
- #define pg_attribute_unused()
121
- #endif
122
-
123
- /*
124
- * pg_nodiscard means the compiler should warn if the result of a function
125
- * call is ignored. The name "nodiscard" is chosen in alignment with
126
- * (possibly future) C and C++ standards. For maximum compatibility, use it
127
- * as a function declaration specifier, so it goes before the return type.
128
- */
129
- #ifdef __GNUC__
130
- #define pg_nodiscard __attribute__((warn_unused_result))
131
- #else
132
- #define pg_nodiscard
133
- #endif
134
-
135
- /*
136
- * Place this macro before functions that should be allowed to make misaligned
137
- * accesses. Think twice before using it on non-x86-specific code!
138
- * Testing can be done with "-fsanitize=alignment -fsanitize-trap=alignment"
139
- * on clang, or "-fsanitize=alignment -fno-sanitize-recover=alignment" on gcc.
140
- */
141
- #if __clang_major__ >= 7 || __GNUC__ >= 8
142
- #define pg_attribute_no_sanitize_alignment() __attribute__((no_sanitize("alignment")))
143
- #else
144
- #define pg_attribute_no_sanitize_alignment()
145
- #endif
146
-
147
- /*
148
- * Append PG_USED_FOR_ASSERTS_ONLY to definitions of variables that are only
149
- * used in assert-enabled builds, to avoid compiler warnings about unused
150
- * variables in assert-disabled builds.
151
- */
152
- #ifdef USE_ASSERT_CHECKING
153
- #define PG_USED_FOR_ASSERTS_ONLY
154
- #else
155
- #define PG_USED_FOR_ASSERTS_ONLY pg_attribute_unused()
156
- #endif
157
-
158
- /* GCC and XLC support format attributes */
159
- #if defined(__GNUC__) || defined(__IBMC__)
160
- #define pg_attribute_format_arg(a) __attribute__((format_arg(a)))
161
- #define pg_attribute_printf(f,a) __attribute__((format(PG_PRINTF_ATTRIBUTE, f, a)))
162
- #else
163
- #define pg_attribute_format_arg(a)
164
- #define pg_attribute_printf(f,a)
165
- #endif
166
-
167
- /* GCC, Sunpro and XLC support aligned, packed and noreturn */
168
- #if defined(__GNUC__) || defined(__SUNPRO_C) || defined(__IBMC__)
169
- #define pg_attribute_aligned(a) __attribute__((aligned(a)))
170
- #define pg_attribute_noreturn() __attribute__((noreturn))
171
- #define pg_attribute_packed() __attribute__((packed))
172
- #define HAVE_PG_ATTRIBUTE_NORETURN 1
173
- #else
174
- /*
175
- * NB: aligned and packed are not given default definitions because they
176
- * affect code functionality; they *must* be implemented by the compiler
177
- * if they are to be used.
178
- */
179
- #define pg_attribute_noreturn()
180
- #endif
181
-
182
- /*
183
- * Use "pg_attribute_always_inline" in place of "inline" for functions that
184
- * we wish to force inlining of, even when the compiler's heuristics would
185
- * choose not to. But, if possible, don't force inlining in unoptimized
186
- * debug builds.
187
- */
188
- #if (defined(__GNUC__) && __GNUC__ > 3 && defined(__OPTIMIZE__)) || defined(__SUNPRO_C) || defined(__IBMC__)
189
- /* GCC > 3, Sunpro and XLC support always_inline via __attribute__ */
190
- #define pg_attribute_always_inline __attribute__((always_inline)) inline
191
- #elif defined(_MSC_VER)
192
- /* MSVC has a special keyword for this */
193
- #define pg_attribute_always_inline __forceinline
194
- #else
195
- /* Otherwise, the best we can do is to say "inline" */
196
- #define pg_attribute_always_inline inline
197
- #endif
198
-
199
- /*
200
- * Forcing a function not to be inlined can be useful if it's the slow path of
201
- * a performance-critical function, or should be visible in profiles to allow
202
- * for proper cost attribution. Note that unlike the pg_attribute_XXX macros
203
- * above, this should be placed before the function's return type and name.
204
- */
205
- /* GCC, Sunpro and XLC support noinline via __attribute__ */
206
- #if (defined(__GNUC__) && __GNUC__ > 2) || defined(__SUNPRO_C) || defined(__IBMC__)
207
- #define pg_noinline __attribute__((noinline))
208
- /* msvc via declspec */
209
- #elif defined(_MSC_VER)
210
- #define pg_noinline __declspec(noinline)
211
- #else
212
- #define pg_noinline
213
- #endif
214
-
215
- /*
216
- * For now, just define pg_attribute_cold and pg_attribute_hot to be empty
217
- * macros on minGW 8.1. There appears to be a compiler bug that results in
218
- * compilation failure. At this time, we still have at least one buildfarm
219
- * animal running that compiler, so this should make that green again. It's
220
- * likely this compiler is not popular enough to warrant keeping this code
221
- * around forever, so let's just remove it once the last buildfarm animal
222
- * upgrades.
223
- */
224
- #if defined(__MINGW64__) && __GNUC__ == 8 && __GNUC_MINOR__ == 1
225
-
226
- #define pg_attribute_cold
227
- #define pg_attribute_hot
228
-
229
- #else
230
- /*
231
- * Marking certain functions as "hot" or "cold" can be useful to assist the
232
- * compiler in arranging the assembly code in a more efficient way.
233
- */
234
- #if __has_attribute (cold)
235
- #define pg_attribute_cold __attribute__((cold))
236
- #else
237
- #define pg_attribute_cold
238
- #endif
239
-
240
- #if __has_attribute (hot)
241
- #define pg_attribute_hot __attribute__((hot))
242
- #else
243
- #define pg_attribute_hot
244
- #endif
245
-
246
- #endif /* defined(__MINGW64__) && __GNUC__ == 8 &&
247
- * __GNUC_MINOR__ == 1 */
248
- /*
249
- * Mark a point as unreachable in a portable fashion. This should preferably
250
- * be something that the compiler understands, to aid code generation.
251
- * In assert-enabled builds, we prefer abort() for debugging reasons.
252
- */
253
- #if defined(HAVE__BUILTIN_UNREACHABLE) && !defined(USE_ASSERT_CHECKING)
254
- #define pg_unreachable() __builtin_unreachable()
255
- #elif defined(_MSC_VER) && !defined(USE_ASSERT_CHECKING)
256
- #define pg_unreachable() __assume(0)
257
- #else
258
- #define pg_unreachable() abort()
259
- #endif
260
-
261
- /*
262
- * Hints to the compiler about the likelihood of a branch. Both likely() and
263
- * unlikely() return the boolean value of the contained expression.
264
- *
265
- * These should only be used sparingly, in very hot code paths. It's very easy
266
- * to mis-estimate likelihoods.
267
- */
268
- #if __GNUC__ >= 3
269
- #define likely(x) __builtin_expect((x) != 0, 1)
270
- #define unlikely(x) __builtin_expect((x) != 0, 0)
271
- #else
272
- #define likely(x) ((x) != 0)
273
- #define unlikely(x) ((x) != 0)
274
- #endif
275
-
276
- /*
277
- * CppAsString
278
- * Convert the argument to a string, using the C preprocessor.
279
- * CppAsString2
280
- * Convert the argument to a string, after one round of macro expansion.
281
- * CppConcat
282
- * Concatenate two arguments together, using the C preprocessor.
283
- *
284
- * Note: There used to be support here for pre-ANSI C compilers that didn't
285
- * support # and ##. Nowadays, these macros are just for clarity and/or
286
- * backward compatibility with existing PostgreSQL code.
287
- */
288
- #define CppAsString(identifier) #identifier
289
- #define CppAsString2(x) CppAsString(x)
290
- #define CppConcat(x, y) x##y
291
-
292
- /*
293
- * VA_ARGS_NARGS
294
- * Returns the number of macro arguments it is passed.
295
- *
296
- * An empty argument still counts as an argument, so effectively, this is
297
- * "one more than the number of commas in the argument list".
298
- *
299
- * This works for up to 63 arguments. Internally, VA_ARGS_NARGS_() is passed
300
- * 64+N arguments, and the C99 standard only requires macros to allow up to
301
- * 127 arguments, so we can't portably go higher. The implementation is
302
- * pretty trivial: VA_ARGS_NARGS_() returns its 64th argument, and we set up
303
- * the call so that that is the appropriate one of the list of constants.
304
- * This idea is due to Laurent Deniau.
305
- */
306
- #define VA_ARGS_NARGS(...) \
307
- VA_ARGS_NARGS_(__VA_ARGS__, \
308
- 63,62,61,60, \
309
- 59,58,57,56,55,54,53,52,51,50, \
310
- 49,48,47,46,45,44,43,42,41,40, \
311
- 39,38,37,36,35,34,33,32,31,30, \
312
- 29,28,27,26,25,24,23,22,21,20, \
313
- 19,18,17,16,15,14,13,12,11,10, \
314
- 9, 8, 7, 6, 5, 4, 3, 2, 1, 0)
315
- #define VA_ARGS_NARGS_( \
316
- _01,_02,_03,_04,_05,_06,_07,_08,_09,_10, \
317
- _11,_12,_13,_14,_15,_16,_17,_18,_19,_20, \
318
- _21,_22,_23,_24,_25,_26,_27,_28,_29,_30, \
319
- _31,_32,_33,_34,_35,_36,_37,_38,_39,_40, \
320
- _41,_42,_43,_44,_45,_46,_47,_48,_49,_50, \
321
- _51,_52,_53,_54,_55,_56,_57,_58,_59,_60, \
322
- _61,_62,_63, N, ...) \
323
- (N)
324
-
325
- /*
326
- * dummyret is used to set return values in macros that use ?: to make
327
- * assignments. gcc wants these to be void, other compilers like char
328
- */
329
- #ifdef __GNUC__ /* GNU cc */
330
- #define dummyret void
331
- #else
332
- #define dummyret char
333
- #endif
334
-
335
- /*
336
- * Generic function pointer. This can be used in the rare cases where it's
337
- * necessary to cast a function pointer to a seemingly incompatible function
338
- * pointer type while avoiding gcc's -Wcast-function-type warnings.
339
- */
340
- typedef void (*pg_funcptr_t) (void);
341
-
342
- /*
343
- * We require C99, hence the compiler should understand flexible array
344
- * members. However, for documentation purposes we still consider it to be
345
- * project style to write "field[FLEXIBLE_ARRAY_MEMBER]" not just "field[]".
346
- * When computing the size of such an object, use "offsetof(struct s, f)"
347
- * for portability. Don't use "offsetof(struct s, f[0])", as this doesn't
348
- * work with MSVC and with C++ compilers.
349
- */
350
- #define FLEXIBLE_ARRAY_MEMBER /* empty */
351
-
352
- /* Which __func__ symbol do we have, if any? */
353
- #ifdef HAVE_FUNCNAME__FUNC
354
- #define PG_FUNCNAME_MACRO __func__
355
- #else
356
- #ifdef HAVE_FUNCNAME__FUNCTION
357
- #define PG_FUNCNAME_MACRO __FUNCTION__
358
- #else
359
- #define PG_FUNCNAME_MACRO NULL
360
- #endif
361
- #endif
362
-
363
-
364
- /* ----------------------------------------------------------------
365
- * Section 2: bool, true, false
366
- * ----------------------------------------------------------------
367
- */
368
-
369
- /*
370
- * bool
371
- * Boolean value, either true or false.
372
- *
373
- * We use stdbool.h if available and its bool has size 1. That's useful for
374
- * better compiler and debugger output and for compatibility with third-party
375
- * libraries. But PostgreSQL currently cannot deal with bool of other sizes;
376
- * there are static assertions around the code to prevent that.
377
- *
378
- * For C++ compilers, we assume the compiler has a compatible built-in
379
- * definition of bool.
380
- *
381
- * See also the version of this code in src/interfaces/ecpg/include/ecpglib.h.
382
- */
383
-
384
- #ifndef __cplusplus
385
-
386
- #ifdef PG_USE_STDBOOL
387
- #include <stdbool.h>
388
- #else
389
-
390
- #ifndef bool
391
- typedef unsigned char bool;
392
- #endif
393
-
394
- #ifndef true
395
- #define true ((bool) 1)
396
- #endif
397
-
398
- #ifndef false
399
- #define false ((bool) 0)
400
- #endif
401
-
402
- #endif /* not PG_USE_STDBOOL */
403
- #endif /* not C++ */
404
-
405
-
406
- /* ----------------------------------------------------------------
407
- * Section 3: standard system types
408
- * ----------------------------------------------------------------
409
- */
410
-
411
- /*
412
- * Pointer
413
- * Variable holding address of any memory resident object.
414
- *
415
- * XXX Pointer arithmetic is done with this, so it can't be void *
416
- * under "true" ANSI compilers.
417
- */
418
- typedef char *Pointer;
419
-
420
- /*
421
- * intN
422
- * Signed integer, EXACTLY N BITS IN SIZE,
423
- * used for numerical computations and the
424
- * frontend/backend protocol.
425
- */
426
- #ifndef HAVE_INT8
427
- typedef signed char int8; /* == 8 bits */
428
- typedef signed short int16; /* == 16 bits */
429
- typedef signed int int32; /* == 32 bits */
430
- #endif /* not HAVE_INT8 */
431
-
432
- /*
433
- * uintN
434
- * Unsigned integer, EXACTLY N BITS IN SIZE,
435
- * used for numerical computations and the
436
- * frontend/backend protocol.
437
- */
438
- #ifndef HAVE_UINT8
439
- typedef unsigned char uint8; /* == 8 bits */
440
- typedef unsigned short uint16; /* == 16 bits */
441
- typedef unsigned int uint32; /* == 32 bits */
442
- #endif /* not HAVE_UINT8 */
443
-
444
- /*
445
- * bitsN
446
- * Unit of bitwise operation, AT LEAST N BITS IN SIZE.
447
- */
448
- typedef uint8 bits8; /* >= 8 bits */
449
- typedef uint16 bits16; /* >= 16 bits */
450
- typedef uint32 bits32; /* >= 32 bits */
451
-
452
- /*
453
- * 64-bit integers
454
- */
455
- #ifdef HAVE_LONG_INT_64
456
- /* Plain "long int" fits, use it */
457
-
458
- #ifndef HAVE_INT64
459
- typedef long int int64;
460
- #endif
461
- #ifndef HAVE_UINT64
462
- typedef unsigned long int uint64;
463
- #endif
464
- #define INT64CONST(x) (x##L)
465
- #define UINT64CONST(x) (x##UL)
466
- #elif defined(HAVE_LONG_LONG_INT_64)
467
- /* We have working support for "long long int", use that */
468
-
469
- #ifndef HAVE_INT64
470
- typedef long long int int64;
471
- #endif
472
- #ifndef HAVE_UINT64
473
- typedef unsigned long long int uint64;
474
- #endif
475
- #define INT64CONST(x) (x##LL)
476
- #define UINT64CONST(x) (x##ULL)
477
- #else
478
- /* neither HAVE_LONG_INT_64 nor HAVE_LONG_LONG_INT_64 */
479
- #error must have a working 64-bit integer datatype
480
- #endif
481
-
482
- /* snprintf format strings to use for 64-bit integers */
483
- #define INT64_FORMAT "%" INT64_MODIFIER "d"
484
- #define UINT64_FORMAT "%" INT64_MODIFIER "u"
485
-
486
- /*
487
- * 128-bit signed and unsigned integers
488
- * There currently is only limited support for such types.
489
- * E.g. 128bit literals and snprintf are not supported; but math is.
490
- * Also, because we exclude such types when choosing MAXIMUM_ALIGNOF,
491
- * it must be possible to coerce the compiler to allocate them on no
492
- * more than MAXALIGN boundaries.
493
- */
494
- #if defined(PG_INT128_TYPE)
495
- #if defined(pg_attribute_aligned) || ALIGNOF_PG_INT128_TYPE <= MAXIMUM_ALIGNOF
496
- #define HAVE_INT128 1
497
-
498
- typedef PG_INT128_TYPE int128
499
- #if defined(pg_attribute_aligned)
500
- pg_attribute_aligned(MAXIMUM_ALIGNOF)
501
- #endif
502
- ;
503
-
504
- typedef unsigned PG_INT128_TYPE uint128
505
- #if defined(pg_attribute_aligned)
506
- pg_attribute_aligned(MAXIMUM_ALIGNOF)
507
- #endif
508
- ;
509
-
510
- #endif
511
- #endif
512
-
513
- /*
514
- * stdint.h limits aren't guaranteed to have compatible types with our fixed
515
- * width types. So just define our own.
516
- */
517
- #define PG_INT8_MIN (-0x7F-1)
518
- #define PG_INT8_MAX (0x7F)
519
- #define PG_UINT8_MAX (0xFF)
520
- #define PG_INT16_MIN (-0x7FFF-1)
521
- #define PG_INT16_MAX (0x7FFF)
522
- #define PG_UINT16_MAX (0xFFFF)
523
- #define PG_INT32_MIN (-0x7FFFFFFF-1)
524
- #define PG_INT32_MAX (0x7FFFFFFF)
525
- #define PG_UINT32_MAX (0xFFFFFFFFU)
526
- #define PG_INT64_MIN (-INT64CONST(0x7FFFFFFFFFFFFFFF) - 1)
527
- #define PG_INT64_MAX INT64CONST(0x7FFFFFFFFFFFFFFF)
528
- #define PG_UINT64_MAX UINT64CONST(0xFFFFFFFFFFFFFFFF)
529
-
530
- /*
531
- * We now always use int64 timestamps, but keep this symbol defined for the
532
- * benefit of external code that might test it.
533
- */
534
- #define HAVE_INT64_TIMESTAMP
535
-
536
- /*
537
- * Size
538
- * Size of any memory resident object, as returned by sizeof.
539
- */
540
- typedef size_t Size;
541
-
542
- /*
543
- * Index
544
- * Index into any memory resident array.
545
- *
546
- * Note:
547
- * Indices are non negative.
548
- */
549
- typedef unsigned int Index;
550
-
551
- /*
552
- * Offset
553
- * Offset into any memory resident array.
554
- *
555
- * Note:
556
- * This differs from an Index in that an Index is always
557
- * non negative, whereas Offset may be negative.
558
- */
559
- typedef signed int Offset;
560
-
561
- /*
562
- * Common Postgres datatype names (as used in the catalogs)
563
- */
564
- typedef float float4;
565
- typedef double float8;
566
-
567
- #ifdef USE_FLOAT8_BYVAL
568
- #define FLOAT8PASSBYVAL true
569
- #else
570
- #define FLOAT8PASSBYVAL false
571
- #endif
572
-
573
- /*
574
- * Oid, RegProcedure, TransactionId, SubTransactionId, MultiXactId,
575
- * CommandId
576
- */
577
-
578
- /* typedef Oid is in postgres_ext.h */
579
-
580
- /*
581
- * regproc is the type name used in the include/catalog headers, but
582
- * RegProcedure is the preferred name in C code.
583
- */
584
- typedef Oid regproc;
585
- typedef regproc RegProcedure;
586
-
587
- typedef uint32 TransactionId;
588
-
589
- typedef uint32 LocalTransactionId;
590
-
591
- typedef uint32 SubTransactionId;
592
-
593
- #define InvalidSubTransactionId ((SubTransactionId) 0)
594
- #define TopSubTransactionId ((SubTransactionId) 1)
595
-
596
- /* MultiXactId must be equivalent to TransactionId, to fit in t_xmax */
597
- typedef TransactionId MultiXactId;
598
-
599
- typedef uint32 MultiXactOffset;
600
-
601
- typedef uint32 CommandId;
602
-
603
- #define FirstCommandId ((CommandId) 0)
604
- #define InvalidCommandId (~(CommandId)0)
605
-
606
-
607
- /* ----------------
608
- * Variable-length datatypes all share the 'struct varlena' header.
609
- *
610
- * NOTE: for TOASTable types, this is an oversimplification, since the value
611
- * may be compressed or moved out-of-line. However datatype-specific routines
612
- * are mostly content to deal with de-TOASTed values only, and of course
613
- * client-side routines should never see a TOASTed value. But even in a
614
- * de-TOASTed value, beware of touching vl_len_ directly, as its
615
- * representation is no longer convenient. It's recommended that code always
616
- * use macros VARDATA_ANY, VARSIZE_ANY, VARSIZE_ANY_EXHDR, VARDATA, VARSIZE,
617
- * and SET_VARSIZE instead of relying on direct mentions of the struct fields.
618
- * See postgres.h for details of the TOASTed form.
619
- * ----------------
620
- */
621
- struct varlena
622
- {
623
- char vl_len_[4]; /* Do not touch this field directly! */
624
- char vl_dat[FLEXIBLE_ARRAY_MEMBER]; /* Data content is here */
625
- };
626
-
627
- #define VARHDRSZ ((int32) sizeof(int32))
628
-
629
- /*
630
- * These widely-used datatypes are just a varlena header and the data bytes.
631
- * There is no terminating null or anything like that --- the data length is
632
- * always VARSIZE_ANY_EXHDR(ptr).
633
- */
634
- typedef struct varlena bytea;
635
- typedef struct varlena text;
636
- typedef struct varlena BpChar; /* blank-padded char, ie SQL char(n) */
637
- typedef struct varlena VarChar; /* var-length char, ie SQL varchar(n) */
638
-
639
- /*
640
- * Specialized array types. These are physically laid out just the same
641
- * as regular arrays (so that the regular array subscripting code works
642
- * with them). They exist as distinct types mostly for historical reasons:
643
- * they have nonstandard I/O behavior which we don't want to change for fear
644
- * of breaking applications that look at the system catalogs. There is also
645
- * an implementation issue for oidvector: it's part of the primary key for
646
- * pg_proc, and we can't use the normal btree array support routines for that
647
- * without circularity.
648
- */
649
- typedef struct
650
- {
651
- int32 vl_len_; /* these fields must match ArrayType! */
652
- int ndim; /* always 1 for int2vector */
653
- int32 dataoffset; /* always 0 for int2vector */
654
- Oid elemtype;
655
- int dim1;
656
- int lbound1;
657
- int16 values[FLEXIBLE_ARRAY_MEMBER];
658
- } int2vector;
659
-
660
- typedef struct
661
- {
662
- int32 vl_len_; /* these fields must match ArrayType! */
663
- int ndim; /* always 1 for oidvector */
664
- int32 dataoffset; /* always 0 for oidvector */
665
- Oid elemtype;
666
- int dim1;
667
- int lbound1;
668
- Oid values[FLEXIBLE_ARRAY_MEMBER];
669
- } oidvector;
670
-
671
- /*
672
- * Representation of a Name: effectively just a C string, but null-padded to
673
- * exactly NAMEDATALEN bytes. The use of a struct is historical.
674
- */
675
- typedef struct nameData
676
- {
677
- char data[NAMEDATALEN];
678
- } NameData;
679
- typedef NameData *Name;
680
-
681
- #define NameStr(name) ((name).data)
682
-
683
-
684
- /* ----------------------------------------------------------------
685
- * Section 4: IsValid macros for system types
686
- * ----------------------------------------------------------------
687
- */
688
- /*
689
- * BoolIsValid
690
- * True iff bool is valid.
691
- */
692
- #define BoolIsValid(boolean) ((boolean) == false || (boolean) == true)
693
-
694
- /*
695
- * PointerIsValid
696
- * True iff pointer is valid.
697
- */
698
- #define PointerIsValid(pointer) ((const void*)(pointer) != NULL)
699
-
700
- /*
701
- * PointerIsAligned
702
- * True iff pointer is properly aligned to point to the given type.
703
- */
704
- #define PointerIsAligned(pointer, type) \
705
- (((uintptr_t)(pointer) % (sizeof (type))) == 0)
706
-
707
- #define OffsetToPointer(base, offset) \
708
- ((void *)((char *) base + offset))
709
-
710
- #define OidIsValid(objectId) ((bool) ((objectId) != InvalidOid))
711
-
712
- #define RegProcedureIsValid(p) OidIsValid(p)
713
-
714
-
715
- /* ----------------------------------------------------------------
716
- * Section 5: offsetof, lengthof, alignment
717
- * ----------------------------------------------------------------
718
- */
719
- /*
720
- * offsetof
721
- * Offset of a structure/union field within that structure/union.
722
- *
723
- * XXX This is supposed to be part of stddef.h, but isn't on
724
- * some systems (like SunOS 4).
725
- */
726
- #ifndef offsetof
727
- #define offsetof(type, field) ((long) &((type *)0)->field)
728
- #endif /* offsetof */
729
-
730
- /*
731
- * lengthof
732
- * Number of elements in an array.
733
- */
734
- #define lengthof(array) (sizeof (array) / sizeof ((array)[0]))
735
-
736
- /* ----------------
737
- * Alignment macros: align a length or address appropriately for a given type.
738
- * The fooALIGN() macros round up to a multiple of the required alignment,
739
- * while the fooALIGN_DOWN() macros round down. The latter are more useful
740
- * for problems like "how many X-sized structures will fit in a page?".
741
- *
742
- * NOTE: TYPEALIGN[_DOWN] will not work if ALIGNVAL is not a power of 2.
743
- * That case seems extremely unlikely to be needed in practice, however.
744
- *
745
- * NOTE: MAXIMUM_ALIGNOF, and hence MAXALIGN(), intentionally exclude any
746
- * larger-than-8-byte types the compiler might have.
747
- * ----------------
748
- */
749
-
750
- #define TYPEALIGN(ALIGNVAL,LEN) \
751
- (((uintptr_t) (LEN) + ((ALIGNVAL) - 1)) & ~((uintptr_t) ((ALIGNVAL) - 1)))
752
-
753
- #define SHORTALIGN(LEN) TYPEALIGN(ALIGNOF_SHORT, (LEN))
754
- #define INTALIGN(LEN) TYPEALIGN(ALIGNOF_INT, (LEN))
755
- #define LONGALIGN(LEN) TYPEALIGN(ALIGNOF_LONG, (LEN))
756
- #define DOUBLEALIGN(LEN) TYPEALIGN(ALIGNOF_DOUBLE, (LEN))
757
- #define MAXALIGN(LEN) TYPEALIGN(MAXIMUM_ALIGNOF, (LEN))
758
- /* MAXALIGN covers only built-in types, not buffers */
759
- #define BUFFERALIGN(LEN) TYPEALIGN(ALIGNOF_BUFFER, (LEN))
760
- #define CACHELINEALIGN(LEN) TYPEALIGN(PG_CACHE_LINE_SIZE, (LEN))
761
-
762
- #define TYPEALIGN_DOWN(ALIGNVAL,LEN) \
763
- (((uintptr_t) (LEN)) & ~((uintptr_t) ((ALIGNVAL) - 1)))
764
-
765
- #define SHORTALIGN_DOWN(LEN) TYPEALIGN_DOWN(ALIGNOF_SHORT, (LEN))
766
- #define INTALIGN_DOWN(LEN) TYPEALIGN_DOWN(ALIGNOF_INT, (LEN))
767
- #define LONGALIGN_DOWN(LEN) TYPEALIGN_DOWN(ALIGNOF_LONG, (LEN))
768
- #define DOUBLEALIGN_DOWN(LEN) TYPEALIGN_DOWN(ALIGNOF_DOUBLE, (LEN))
769
- #define MAXALIGN_DOWN(LEN) TYPEALIGN_DOWN(MAXIMUM_ALIGNOF, (LEN))
770
- #define BUFFERALIGN_DOWN(LEN) TYPEALIGN_DOWN(ALIGNOF_BUFFER, (LEN))
771
-
772
- /*
773
- * The above macros will not work with types wider than uintptr_t, like with
774
- * uint64 on 32-bit platforms. That's not problem for the usual use where a
775
- * pointer or a length is aligned, but for the odd case that you need to
776
- * align something (potentially) wider, use TYPEALIGN64.
777
- */
778
- #define TYPEALIGN64(ALIGNVAL,LEN) \
779
- (((uint64) (LEN) + ((ALIGNVAL) - 1)) & ~((uint64) ((ALIGNVAL) - 1)))
780
-
781
- /* we don't currently need wider versions of the other ALIGN macros */
782
- #define MAXALIGN64(LEN) TYPEALIGN64(MAXIMUM_ALIGNOF, (LEN))
783
-
784
-
785
- /* ----------------------------------------------------------------
786
- * Section 6: assertions
787
- * ----------------------------------------------------------------
788
- */
789
-
790
- /*
791
- * USE_ASSERT_CHECKING, if defined, turns on all the assertions.
792
- * - plai 9/5/90
793
- *
794
- * It should _NOT_ be defined in releases or in benchmark copies
795
- */
796
-
797
- /*
798
- * Assert() can be used in both frontend and backend code. In frontend code it
799
- * just calls the standard assert, if it's available. If use of assertions is
800
- * not configured, it does nothing.
801
- */
802
- #ifndef USE_ASSERT_CHECKING
803
-
804
- #define Assert(condition) ((void)true)
805
- #define AssertMacro(condition) ((void)true)
806
- #define AssertArg(condition) ((void)true)
807
- #define AssertState(condition) ((void)true)
808
- #define AssertPointerAlignment(ptr, bndr) ((void)true)
809
- #define Trap(condition, errorType) ((void)true)
810
- #define TrapMacro(condition, errorType) (true)
811
-
812
- #elif defined(FRONTEND)
813
-
814
- #include <assert.h>
815
- #define Assert(p) assert(p)
816
- #define AssertMacro(p) ((void) assert(p))
817
- #define AssertArg(condition) assert(condition)
818
- #define AssertState(condition) assert(condition)
819
- #define AssertPointerAlignment(ptr, bndr) ((void)true)
820
-
821
- #else /* USE_ASSERT_CHECKING && !FRONTEND */
822
-
823
- /*
824
- * Trap
825
- * Generates an exception if the given condition is true.
826
- */
827
- #define Trap(condition, errorType) \
828
- do { \
829
- if (condition) \
830
- ExceptionalCondition(#condition, (errorType), \
831
- __FILE__, __LINE__); \
832
- } while (0)
833
-
834
- /*
835
- * TrapMacro is the same as Trap but it's intended for use in macros:
836
- *
837
- * #define foo(x) (AssertMacro(x != 0), bar(x))
838
- *
839
- * Isn't CPP fun?
840
- */
841
- #define TrapMacro(condition, errorType) \
842
- ((bool) (! (condition) || \
843
- (ExceptionalCondition(#condition, (errorType), \
844
- __FILE__, __LINE__), 0)))
845
-
846
- #define Assert(condition) \
847
- do { \
848
- if (!(condition)) \
849
- ExceptionalCondition(#condition, "FailedAssertion", \
850
- __FILE__, __LINE__); \
851
- } while (0)
852
-
853
- #define AssertMacro(condition) \
854
- ((void) ((condition) || \
855
- (ExceptionalCondition(#condition, "FailedAssertion", \
856
- __FILE__, __LINE__), 0)))
857
-
858
- #define AssertArg(condition) \
859
- do { \
860
- if (!(condition)) \
861
- ExceptionalCondition(#condition, "BadArgument", \
862
- __FILE__, __LINE__); \
863
- } while (0)
864
-
865
- #define AssertState(condition) \
866
- do { \
867
- if (!(condition)) \
868
- ExceptionalCondition(#condition, "BadState", \
869
- __FILE__, __LINE__); \
870
- } while (0)
871
-
872
- /*
873
- * Check that `ptr' is `bndr' aligned.
874
- */
875
- #define AssertPointerAlignment(ptr, bndr) \
876
- Trap(TYPEALIGN(bndr, (uintptr_t)(ptr)) != (uintptr_t)(ptr), \
877
- "UnalignedPointer")
878
-
879
- #endif /* USE_ASSERT_CHECKING && !FRONTEND */
880
-
881
- /*
882
- * ExceptionalCondition is compiled into the backend whether or not
883
- * USE_ASSERT_CHECKING is defined, so as to support use of extensions
884
- * that are built with that #define with a backend that isn't. Hence,
885
- * we should declare it as long as !FRONTEND.
886
- */
887
- #ifndef FRONTEND
888
- extern void ExceptionalCondition(const char *conditionName,
889
- const char *errorType,
890
- const char *fileName, int lineNumber) pg_attribute_noreturn();
891
- #endif
892
-
893
- /*
894
- * Macros to support compile-time assertion checks.
895
- *
896
- * If the "condition" (a compile-time-constant expression) evaluates to false,
897
- * throw a compile error using the "errmessage" (a string literal).
898
- *
899
- * gcc 4.6 and up supports _Static_assert(), but there are bizarre syntactic
900
- * placement restrictions. Macros StaticAssertStmt() and StaticAssertExpr()
901
- * make it safe to use as a statement or in an expression, respectively.
902
- * The macro StaticAssertDecl() is suitable for use at file scope (outside of
903
- * any function).
904
- *
905
- * Otherwise we fall back on a kluge that assumes the compiler will complain
906
- * about a negative width for a struct bit-field. This will not include a
907
- * helpful error message, but it beats not getting an error at all.
908
- */
909
- #ifndef __cplusplus
910
- #ifdef HAVE__STATIC_ASSERT
911
- #define StaticAssertStmt(condition, errmessage) \
912
- do { _Static_assert(condition, errmessage); } while(0)
913
- #define StaticAssertExpr(condition, errmessage) \
914
- ((void) ({ StaticAssertStmt(condition, errmessage); true; }))
915
- #define StaticAssertDecl(condition, errmessage) \
916
- _Static_assert(condition, errmessage)
917
- #else /* !HAVE__STATIC_ASSERT */
918
- #define StaticAssertStmt(condition, errmessage) \
919
- ((void) sizeof(struct { int static_assert_failure : (condition) ? 1 : -1; }))
920
- #define StaticAssertExpr(condition, errmessage) \
921
- StaticAssertStmt(condition, errmessage)
922
- #define StaticAssertDecl(condition, errmessage) \
923
- extern void static_assert_func(int static_assert_failure[(condition) ? 1 : -1])
924
- #endif /* HAVE__STATIC_ASSERT */
925
- #else /* C++ */
926
- #if defined(__cpp_static_assert) && __cpp_static_assert >= 200410
927
- #define StaticAssertStmt(condition, errmessage) \
928
- static_assert(condition, errmessage)
929
- #define StaticAssertExpr(condition, errmessage) \
930
- ({ static_assert(condition, errmessage); })
931
- #define StaticAssertDecl(condition, errmessage) \
932
- static_assert(condition, errmessage)
933
- #else /* !__cpp_static_assert */
934
- #define StaticAssertStmt(condition, errmessage) \
935
- do { struct static_assert_struct { int static_assert_failure : (condition) ? 1 : -1; }; } while(0)
936
- #define StaticAssertExpr(condition, errmessage) \
937
- ((void) ({ StaticAssertStmt(condition, errmessage); }))
938
- #define StaticAssertDecl(condition, errmessage) \
939
- extern void static_assert_func(int static_assert_failure[(condition) ? 1 : -1])
940
- #endif /* __cpp_static_assert */
941
- #endif /* C++ */
942
-
943
-
944
- /*
945
- * Compile-time checks that a variable (or expression) has the specified type.
946
- *
947
- * AssertVariableIsOfType() can be used as a statement.
948
- * AssertVariableIsOfTypeMacro() is intended for use in macros, eg
949
- * #define foo(x) (AssertVariableIsOfTypeMacro(x, int), bar(x))
950
- *
951
- * If we don't have __builtin_types_compatible_p, we can still assert that
952
- * the types have the same size. This is far from ideal (especially on 32-bit
953
- * platforms) but it provides at least some coverage.
954
- */
955
- #ifdef HAVE__BUILTIN_TYPES_COMPATIBLE_P
956
- #define AssertVariableIsOfType(varname, typename) \
957
- StaticAssertStmt(__builtin_types_compatible_p(__typeof__(varname), typename), \
958
- CppAsString(varname) " does not have type " CppAsString(typename))
959
- #define AssertVariableIsOfTypeMacro(varname, typename) \
960
- (StaticAssertExpr(__builtin_types_compatible_p(__typeof__(varname), typename), \
961
- CppAsString(varname) " does not have type " CppAsString(typename)))
962
- #else /* !HAVE__BUILTIN_TYPES_COMPATIBLE_P */
963
- #define AssertVariableIsOfType(varname, typename) \
964
- StaticAssertStmt(sizeof(varname) == sizeof(typename), \
965
- CppAsString(varname) " does not have type " CppAsString(typename))
966
- #define AssertVariableIsOfTypeMacro(varname, typename) \
967
- (StaticAssertExpr(sizeof(varname) == sizeof(typename), \
968
- CppAsString(varname) " does not have type " CppAsString(typename)))
969
- #endif /* HAVE__BUILTIN_TYPES_COMPATIBLE_P */
970
-
971
-
972
- /* ----------------------------------------------------------------
973
- * Section 7: widely useful macros
974
- * ----------------------------------------------------------------
975
- */
976
- /*
977
- * Max
978
- * Return the maximum of two numbers.
979
- */
980
- #define Max(x, y) ((x) > (y) ? (x) : (y))
981
-
982
- /*
983
- * Min
984
- * Return the minimum of two numbers.
985
- */
986
- #define Min(x, y) ((x) < (y) ? (x) : (y))
987
-
988
- /*
989
- * Abs
990
- * Return the absolute value of the argument.
991
- */
992
- #define Abs(x) ((x) >= 0 ? (x) : -(x))
993
-
994
-
995
- /* Get a bit mask of the bits set in non-long aligned addresses */
996
- #define LONG_ALIGN_MASK (sizeof(long) - 1)
997
-
998
- /*
999
- * MemSet
1000
- * Exactly the same as standard library function memset(), but considerably
1001
- * faster for zeroing small word-aligned structures (such as parsetree nodes).
1002
- * This has to be a macro because the main point is to avoid function-call
1003
- * overhead. However, we have also found that the loop is faster than
1004
- * native libc memset() on some platforms, even those with assembler
1005
- * memset() functions. More research needs to be done, perhaps with
1006
- * MEMSET_LOOP_LIMIT tests in configure.
1007
- */
1008
- #define MemSet(start, val, len) \
1009
- do \
1010
- { \
1011
- /* must be void* because we don't know if it is integer aligned yet */ \
1012
- void *_vstart = (void *) (start); \
1013
- int _val = (val); \
1014
- Size _len = (len); \
1015
- \
1016
- if ((((uintptr_t) _vstart) & LONG_ALIGN_MASK) == 0 && \
1017
- (_len & LONG_ALIGN_MASK) == 0 && \
1018
- _val == 0 && \
1019
- _len <= MEMSET_LOOP_LIMIT && \
1020
- /* \
1021
- * If MEMSET_LOOP_LIMIT == 0, optimizer should find \
1022
- * the whole "if" false at compile time. \
1023
- */ \
1024
- MEMSET_LOOP_LIMIT != 0) \
1025
- { \
1026
- long *_start = (long *) _vstart; \
1027
- long *_stop = (long *) ((char *) _start + _len); \
1028
- while (_start < _stop) \
1029
- *_start++ = 0; \
1030
- } \
1031
- else \
1032
- memset(_vstart, _val, _len); \
1033
- } while (0)
1034
-
1035
- /*
1036
- * MemSetAligned is the same as MemSet except it omits the test to see if
1037
- * "start" is word-aligned. This is okay to use if the caller knows a-priori
1038
- * that the pointer is suitably aligned (typically, because he just got it
1039
- * from palloc(), which always delivers a max-aligned pointer).
1040
- */
1041
- #define MemSetAligned(start, val, len) \
1042
- do \
1043
- { \
1044
- long *_start = (long *) (start); \
1045
- int _val = (val); \
1046
- Size _len = (len); \
1047
- \
1048
- if ((_len & LONG_ALIGN_MASK) == 0 && \
1049
- _val == 0 && \
1050
- _len <= MEMSET_LOOP_LIMIT && \
1051
- MEMSET_LOOP_LIMIT != 0) \
1052
- { \
1053
- long *_stop = (long *) ((char *) _start + _len); \
1054
- while (_start < _stop) \
1055
- *_start++ = 0; \
1056
- } \
1057
- else \
1058
- memset(_start, _val, _len); \
1059
- } while (0)
1060
-
1061
-
1062
- /*
1063
- * MemSetTest/MemSetLoop are a variant version that allow all the tests in
1064
- * MemSet to be done at compile time in cases where "val" and "len" are
1065
- * constants *and* we know the "start" pointer must be word-aligned.
1066
- * If MemSetTest succeeds, then it is okay to use MemSetLoop, otherwise use
1067
- * MemSetAligned. Beware of multiple evaluations of the arguments when using
1068
- * this approach.
1069
- */
1070
- #define MemSetTest(val, len) \
1071
- ( ((len) & LONG_ALIGN_MASK) == 0 && \
1072
- (len) <= MEMSET_LOOP_LIMIT && \
1073
- MEMSET_LOOP_LIMIT != 0 && \
1074
- (val) == 0 )
1075
-
1076
- #define MemSetLoop(start, val, len) \
1077
- do \
1078
- { \
1079
- long * _start = (long *) (start); \
1080
- long * _stop = (long *) ((char *) _start + (Size) (len)); \
1081
- \
1082
- while (_start < _stop) \
1083
- *_start++ = 0; \
1084
- } while (0)
1085
-
1086
- /*
1087
- * Macros for range-checking float values before converting to integer.
1088
- * We must be careful here that the boundary values are expressed exactly
1089
- * in the float domain. PG_INTnn_MIN is an exact power of 2, so it will
1090
- * be represented exactly; but PG_INTnn_MAX isn't, and might get rounded
1091
- * off, so avoid using that.
1092
- * The input must be rounded to an integer beforehand, typically with rint(),
1093
- * else we might draw the wrong conclusion about close-to-the-limit values.
1094
- * These macros will do the right thing for Inf, but not necessarily for NaN,
1095
- * so check isnan(num) first if that's a possibility.
1096
- */
1097
- #define FLOAT4_FITS_IN_INT16(num) \
1098
- ((num) >= (float4) PG_INT16_MIN && (num) < -((float4) PG_INT16_MIN))
1099
- #define FLOAT4_FITS_IN_INT32(num) \
1100
- ((num) >= (float4) PG_INT32_MIN && (num) < -((float4) PG_INT32_MIN))
1101
- #define FLOAT4_FITS_IN_INT64(num) \
1102
- ((num) >= (float4) PG_INT64_MIN && (num) < -((float4) PG_INT64_MIN))
1103
- #define FLOAT8_FITS_IN_INT16(num) \
1104
- ((num) >= (float8) PG_INT16_MIN && (num) < -((float8) PG_INT16_MIN))
1105
- #define FLOAT8_FITS_IN_INT32(num) \
1106
- ((num) >= (float8) PG_INT32_MIN && (num) < -((float8) PG_INT32_MIN))
1107
- #define FLOAT8_FITS_IN_INT64(num) \
1108
- ((num) >= (float8) PG_INT64_MIN && (num) < -((float8) PG_INT64_MIN))
1109
-
1110
-
1111
- /* ----------------------------------------------------------------
1112
- * Section 8: random stuff
1113
- * ----------------------------------------------------------------
1114
- */
1115
-
1116
- #ifdef HAVE_STRUCT_SOCKADDR_UN
1117
- #define HAVE_UNIX_SOCKETS 1
1118
- #endif
1119
-
1120
- /*
1121
- * Invert the sign of a qsort-style comparison result, ie, exchange negative
1122
- * and positive integer values, being careful not to get the wrong answer
1123
- * for INT_MIN. The argument should be an integral variable.
1124
- */
1125
- #define INVERT_COMPARE_RESULT(var) \
1126
- ((var) = ((var) < 0) ? 1 : -(var))
1127
-
1128
- /*
1129
- * Use this, not "char buf[BLCKSZ]", to declare a field or local variable
1130
- * holding a page buffer, if that page might be accessed as a page and not
1131
- * just a string of bytes. Otherwise the variable might be under-aligned,
1132
- * causing problems on alignment-picky hardware. (In some places, we use
1133
- * this to declare buffers even though we only pass them to read() and
1134
- * write(), because copying to/from aligned buffers is usually faster than
1135
- * using unaligned buffers.) We include both "double" and "int64" in the
1136
- * union to ensure that the compiler knows the value must be MAXALIGN'ed
1137
- * (cf. configure's computation of MAXIMUM_ALIGNOF).
1138
- */
1139
- typedef union PGAlignedBlock
1140
- {
1141
- char data[BLCKSZ];
1142
- double force_align_d;
1143
- int64 force_align_i64;
1144
- } PGAlignedBlock;
1145
-
1146
- /* Same, but for an XLOG_BLCKSZ-sized buffer */
1147
- typedef union PGAlignedXLogBlock
1148
- {
1149
- char data[XLOG_BLCKSZ];
1150
- double force_align_d;
1151
- int64 force_align_i64;
1152
- } PGAlignedXLogBlock;
1153
-
1154
- /* msb for char */
1155
- #define HIGHBIT (0x80)
1156
- #define IS_HIGHBIT_SET(ch) ((unsigned char)(ch) & HIGHBIT)
1157
-
1158
- /*
1159
- * Support macros for escaping strings. escape_backslash should be true
1160
- * if generating a non-standard-conforming string. Prefixing a string
1161
- * with ESCAPE_STRING_SYNTAX guarantees it is non-standard-conforming.
1162
- * Beware of multiple evaluation of the "ch" argument!
1163
- */
1164
- #define SQL_STR_DOUBLE(ch, escape_backslash) \
1165
- ((ch) == '\'' || ((ch) == '\\' && (escape_backslash)))
1166
-
1167
- #define ESCAPE_STRING_SYNTAX 'E'
1168
-
1169
-
1170
- #define STATUS_OK (0)
1171
- #define STATUS_ERROR (-1)
1172
- #define STATUS_EOF (-2)
1173
-
1174
- /*
1175
- * gettext support
1176
- */
1177
-
1178
- #ifndef ENABLE_NLS
1179
- /* stuff we'd otherwise get from <libintl.h> */
1180
- #define gettext(x) (x)
1181
- #define dgettext(d,x) (x)
1182
- #define ngettext(s,p,n) ((n) == 1 ? (s) : (p))
1183
- #define dngettext(d,s,p,n) ((n) == 1 ? (s) : (p))
1184
- #endif
1185
-
1186
- #define _(x) gettext(x)
1187
-
1188
- /*
1189
- * Use this to mark string constants as needing translation at some later
1190
- * time, rather than immediately. This is useful for cases where you need
1191
- * access to the original string and translated string, and for cases where
1192
- * immediate translation is not possible, like when initializing global
1193
- * variables.
1194
- *
1195
- * https://www.gnu.org/software/gettext/manual/html_node/Special-cases.html
1196
- */
1197
- #define gettext_noop(x) (x)
1198
-
1199
- /*
1200
- * To better support parallel installations of major PostgreSQL
1201
- * versions as well as parallel installations of major library soname
1202
- * versions, we mangle the gettext domain name by appending those
1203
- * version numbers. The coding rule ought to be that wherever the
1204
- * domain name is mentioned as a literal, it must be wrapped into
1205
- * PG_TEXTDOMAIN(). The macros below do not work on non-literals; but
1206
- * that is somewhat intentional because it avoids having to worry
1207
- * about multiple states of premangling and postmangling as the values
1208
- * are being passed around.
1209
- *
1210
- * Make sure this matches the installation rules in nls-global.mk.
1211
- */
1212
- #ifdef SO_MAJOR_VERSION
1213
- #define PG_TEXTDOMAIN(domain) (domain CppAsString2(SO_MAJOR_VERSION) "-" PG_MAJORVERSION)
1214
- #else
1215
- #define PG_TEXTDOMAIN(domain) (domain "-" PG_MAJORVERSION)
1216
- #endif
1217
-
1218
- /*
1219
- * Macro that allows to cast constness and volatile away from an expression, but doesn't
1220
- * allow changing the underlying type. Enforcement of the latter
1221
- * currently only works for gcc like compilers.
1222
- *
1223
- * Please note IT IS NOT SAFE to cast constness away if the result will ever
1224
- * be modified (it would be undefined behaviour). Doing so anyway can cause
1225
- * compiler misoptimizations or runtime crashes (modifying readonly memory).
1226
- * It is only safe to use when the result will not be modified, but API
1227
- * design or language restrictions prevent you from declaring that
1228
- * (e.g. because a function returns both const and non-const variables).
1229
- *
1230
- * Note that this only works in function scope, not for global variables (it'd
1231
- * be nice, but not trivial, to improve that).
1232
- */
1233
- #if defined(HAVE__BUILTIN_TYPES_COMPATIBLE_P)
1234
- #define unconstify(underlying_type, expr) \
1235
- (StaticAssertExpr(__builtin_types_compatible_p(__typeof(expr), const underlying_type), \
1236
- "wrong cast"), \
1237
- (underlying_type) (expr))
1238
- #define unvolatize(underlying_type, expr) \
1239
- (StaticAssertExpr(__builtin_types_compatible_p(__typeof(expr), volatile underlying_type), \
1240
- "wrong cast"), \
1241
- (underlying_type) (expr))
1242
- #else
1243
- #define unconstify(underlying_type, expr) \
1244
- ((underlying_type) (expr))
1245
- #define unvolatize(underlying_type, expr) \
1246
- ((underlying_type) (expr))
1247
- #endif
1248
-
1249
- /* ----------------------------------------------------------------
1250
- * Section 9: system-specific hacks
1251
- *
1252
- * This should be limited to things that absolutely have to be
1253
- * included in every source file. The port-specific header file
1254
- * is usually a better place for this sort of thing.
1255
- * ----------------------------------------------------------------
1256
- */
1257
-
1258
- /*
1259
- * NOTE: this is also used for opening text files.
1260
- * WIN32 treats Control-Z as EOF in files opened in text mode.
1261
- * Therefore, we open files in binary mode on Win32 so we can read
1262
- * literal control-Z. The other affect is that we see CRLF, but
1263
- * that is OK because we can already handle those cleanly.
1264
- */
1265
- #if defined(WIN32) || defined(__CYGWIN__)
1266
- #define PG_BINARY O_BINARY
1267
- #define PG_BINARY_A "ab"
1268
- #define PG_BINARY_R "rb"
1269
- #define PG_BINARY_W "wb"
1270
- #else
1271
- #define PG_BINARY 0
1272
- #define PG_BINARY_A "a"
1273
- #define PG_BINARY_R "r"
1274
- #define PG_BINARY_W "w"
1275
- #endif
1276
-
1277
- /*
1278
- * Provide prototypes for routines not present in a particular machine's
1279
- * standard C library.
1280
- */
1281
-
1282
- #if defined(HAVE_FDATASYNC) && !HAVE_DECL_FDATASYNC
1283
- extern int fdatasync(int fildes);
1284
- #endif
1285
-
1286
- /* Older platforms may provide strto[u]ll functionality under other names */
1287
- #if !defined(HAVE_STRTOLL) && defined(HAVE___STRTOLL)
1288
- #define strtoll __strtoll
1289
- #define HAVE_STRTOLL 1
1290
- #endif
1291
-
1292
- #if !defined(HAVE_STRTOLL) && defined(HAVE_STRTOQ)
1293
- #define strtoll strtoq
1294
- #define HAVE_STRTOLL 1
1295
- #endif
1296
-
1297
- #if !defined(HAVE_STRTOULL) && defined(HAVE___STRTOULL)
1298
- #define strtoull __strtoull
1299
- #define HAVE_STRTOULL 1
1300
- #endif
1301
-
1302
- #if !defined(HAVE_STRTOULL) && defined(HAVE_STRTOUQ)
1303
- #define strtoull strtouq
1304
- #define HAVE_STRTOULL 1
1305
- #endif
1306
-
1307
- #if defined(HAVE_STRTOLL) && !HAVE_DECL_STRTOLL
1308
- extern long long strtoll(const char *str, char **endptr, int base);
1309
- #endif
1310
-
1311
- #if defined(HAVE_STRTOULL) && !HAVE_DECL_STRTOULL
1312
- extern unsigned long long strtoull(const char *str, char **endptr, int base);
1313
- #endif
1314
-
1315
- /*
1316
- * Thin wrappers that convert strings to exactly 64-bit integers, matching our
1317
- * definition of int64. (For the naming, compare that POSIX has
1318
- * strtoimax()/strtoumax() which return intmax_t/uintmax_t.)
1319
- */
1320
- #ifdef HAVE_LONG_INT_64
1321
- #define strtoi64(str, endptr, base) ((int64) strtol(str, endptr, base))
1322
- #define strtou64(str, endptr, base) ((uint64) strtoul(str, endptr, base))
1323
- #else
1324
- #define strtoi64(str, endptr, base) ((int64) strtoll(str, endptr, base))
1325
- #define strtou64(str, endptr, base) ((uint64) strtoull(str, endptr, base))
1326
- #endif
1327
-
1328
- /*
1329
- * Use "extern PGDLLIMPORT ..." to declare variables that are defined
1330
- * in the core backend and need to be accessible by loadable modules.
1331
- * No special marking is required on most ports.
1332
- */
1333
- #ifndef PGDLLIMPORT
1334
- #define PGDLLIMPORT
1335
- #endif
1336
-
1337
- /*
1338
- * Use "extern PGDLLEXPORT ..." to declare functions that are defined in
1339
- * loadable modules and need to be callable by the core backend. (Usually,
1340
- * this is not necessary because our build process automatically exports
1341
- * such symbols, but sometimes manual marking is required.)
1342
- * No special marking is required on most ports.
1343
- */
1344
- #ifndef PGDLLEXPORT
1345
- #define PGDLLEXPORT
1346
- #endif
1347
-
1348
- /*
1349
- * The following is used as the arg list for signal handlers. Any ports
1350
- * that take something other than an int argument should override this in
1351
- * their pg_config_os.h file. Note that variable names are required
1352
- * because it is used in both the prototypes as well as the definitions.
1353
- * Note also the long name. We expect that this won't collide with
1354
- * other names causing compiler warnings.
1355
- */
1356
-
1357
- #ifndef SIGNAL_ARGS
1358
- #define SIGNAL_ARGS int postgres_signal_arg
1359
- #endif
1360
-
1361
- /*
1362
- * When there is no sigsetjmp, its functionality is provided by plain
1363
- * setjmp. We now support the case only on Windows. However, it seems
1364
- * that MinGW-64 has some longstanding issues in its setjmp support,
1365
- * so on that toolchain we cheat and use gcc's builtins.
1366
- */
1367
- #ifdef WIN32
1368
- #ifdef __MINGW64__
1369
- typedef intptr_t sigjmp_buf[5];
1370
- #define sigsetjmp(x,y) __builtin_setjmp(x)
1371
- #define siglongjmp __builtin_longjmp
1372
- #else /* !__MINGW64__ */
1373
- #define sigjmp_buf jmp_buf
1374
- #define sigsetjmp(x,y) setjmp(x)
1375
- #define siglongjmp longjmp
1376
- #endif /* __MINGW64__ */
1377
- #endif /* WIN32 */
1378
-
1379
- /* EXEC_BACKEND defines */
1380
- #ifdef EXEC_BACKEND
1381
- #define NON_EXEC_STATIC
1382
- #else
1383
- #define NON_EXEC_STATIC static
1384
- #endif
1385
-
1386
- /* /port compatibility functions */
1387
- #include "port.h"
1388
-
1389
- #endif /* C_H */
1390
- #undef StaticAssertDecl
1391
- #define StaticAssertDecl(condition, errmessage)