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
@@ -0,0 +1,793 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * pg_wchar.h
4
+ * multibyte-character support
5
+ *
6
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1994, Regents of the University of California
8
+ *
9
+ * src/include/mb/pg_wchar.h
10
+ *
11
+ * NOTES
12
+ * This is used both by the backend and by frontends, but should not be
13
+ * included by libpq client programs. In particular, a libpq client
14
+ * should not assume that the encoding IDs used by the version of libpq
15
+ * it's linked to match up with the IDs declared here.
16
+ * To help prevent mistakes, relevant functions that are exported by
17
+ * libpq have a physically different name when being referenced
18
+ * statically.
19
+ *
20
+ *-------------------------------------------------------------------------
21
+ */
22
+ #ifndef PG_WCHAR_H
23
+ #define PG_WCHAR_H
24
+
25
+ /*
26
+ * The pg_wchar type
27
+ */
28
+ typedef unsigned int pg_wchar;
29
+
30
+ /*
31
+ * Maximum byte length of multibyte characters in any backend encoding
32
+ */
33
+ #define MAX_MULTIBYTE_CHAR_LEN 4
34
+
35
+ /*
36
+ * various definitions for EUC
37
+ */
38
+ #define SS2 0x8e /* single shift 2 (JIS0201) */
39
+ #define SS3 0x8f /* single shift 3 (JIS0212) */
40
+
41
+ /*
42
+ * SJIS validation macros
43
+ */
44
+ #define ISSJISHEAD(c) (((c) >= 0x81 && (c) <= 0x9f) || ((c) >= 0xe0 && (c) <= 0xfc))
45
+ #define ISSJISTAIL(c) (((c) >= 0x40 && (c) <= 0x7e) || ((c) >= 0x80 && (c) <= 0xfc))
46
+
47
+ /*----------------------------------------------------
48
+ * MULE Internal Encoding (MIC)
49
+ *
50
+ * This encoding follows the design used within XEmacs; it is meant to
51
+ * subsume many externally-defined character sets. Each character includes
52
+ * identification of the character set it belongs to, so the encoding is
53
+ * general but somewhat bulky.
54
+ *
55
+ * Currently PostgreSQL supports 5 types of MULE character sets:
56
+ *
57
+ * 1) 1-byte ASCII characters. Each byte is below 0x80.
58
+ *
59
+ * 2) "Official" single byte charsets such as ISO-8859-1 (Latin1).
60
+ * Each MULE character consists of 2 bytes: LC1 + C1, where LC1 is
61
+ * an identifier for the charset (in the range 0x81 to 0x8d) and C1
62
+ * is the character code (in the range 0xa0 to 0xff).
63
+ *
64
+ * 3) "Private" single byte charsets such as SISHENG. Each MULE
65
+ * character consists of 3 bytes: LCPRV1 + LC12 + C1, where LCPRV1
66
+ * is a private-charset flag, LC12 is an identifier for the charset,
67
+ * and C1 is the character code (in the range 0xa0 to 0xff).
68
+ * LCPRV1 is either 0x9a (if LC12 is in the range 0xa0 to 0xdf)
69
+ * or 0x9b (if LC12 is in the range 0xe0 to 0xef).
70
+ *
71
+ * 4) "Official" multibyte charsets such as JIS X0208. Each MULE
72
+ * character consists of 3 bytes: LC2 + C1 + C2, where LC2 is
73
+ * an identifier for the charset (in the range 0x90 to 0x99) and C1
74
+ * and C2 form the character code (each in the range 0xa0 to 0xff).
75
+ *
76
+ * 5) "Private" multibyte charsets such as CNS 11643-1992 Plane 3.
77
+ * Each MULE character consists of 4 bytes: LCPRV2 + LC22 + C1 + C2,
78
+ * where LCPRV2 is a private-charset flag, LC22 is an identifier for
79
+ * the charset, and C1 and C2 form the character code (each in the range
80
+ * 0xa0 to 0xff). LCPRV2 is either 0x9c (if LC22 is in the range 0xf0
81
+ * to 0xf4) or 0x9d (if LC22 is in the range 0xf5 to 0xfe).
82
+ *
83
+ * "Official" encodings are those that have been assigned code numbers by
84
+ * the XEmacs project; "private" encodings have Postgres-specific charset
85
+ * identifiers.
86
+ *
87
+ * See the "XEmacs Internals Manual", available at http://www.xemacs.org,
88
+ * for more details. Note that for historical reasons, Postgres'
89
+ * private-charset flag values do not match what XEmacs says they should be,
90
+ * so this isn't really exactly MULE (not that private charsets would be
91
+ * interoperable anyway).
92
+ *
93
+ * Note that XEmacs's implementation is different from what emacs does.
94
+ * We follow emacs's implementation, rather than XEmacs's.
95
+ *----------------------------------------------------
96
+ */
97
+
98
+ /*
99
+ * Charset identifiers (also called "leading bytes" in the MULE documentation)
100
+ */
101
+
102
+ /*
103
+ * Charset IDs for official single byte encodings (0x81-0x8e)
104
+ */
105
+ #define LC_ISO8859_1 0x81 /* ISO8859 Latin 1 */
106
+ #define LC_ISO8859_2 0x82 /* ISO8859 Latin 2 */
107
+ #define LC_ISO8859_3 0x83 /* ISO8859 Latin 3 */
108
+ #define LC_ISO8859_4 0x84 /* ISO8859 Latin 4 */
109
+ #define LC_TIS620 0x85 /* Thai (not supported yet) */
110
+ #define LC_ISO8859_7 0x86 /* Greek (not supported yet) */
111
+ #define LC_ISO8859_6 0x87 /* Arabic (not supported yet) */
112
+ #define LC_ISO8859_8 0x88 /* Hebrew (not supported yet) */
113
+ #define LC_JISX0201K 0x89 /* Japanese 1 byte kana */
114
+ #define LC_JISX0201R 0x8a /* Japanese 1 byte Roman */
115
+ /* Note that 0x8b seems to be unused as of Emacs 20.7.
116
+ * However, there might be a chance that 0x8b could be used
117
+ * in later versions of Emacs.
118
+ */
119
+ #define LC_KOI8_R 0x8b /* Cyrillic KOI8-R */
120
+ #define LC_ISO8859_5 0x8c /* ISO8859 Cyrillic */
121
+ #define LC_ISO8859_9 0x8d /* ISO8859 Latin 5 (not supported yet) */
122
+ #define LC_ISO8859_15 0x8e /* ISO8859 Latin 15 (not supported yet) */
123
+ /* #define CONTROL_1 0x8f control characters (unused) */
124
+
125
+ /* Is a leading byte for "official" single byte encodings? */
126
+ #define IS_LC1(c) ((unsigned char)(c) >= 0x81 && (unsigned char)(c) <= 0x8d)
127
+
128
+ /*
129
+ * Charset IDs for official multibyte encodings (0x90-0x99)
130
+ * 0x9a-0x9d are free. 0x9e and 0x9f are reserved.
131
+ */
132
+ #define LC_JISX0208_1978 0x90 /* Japanese Kanji, old JIS (not supported) */
133
+ #define LC_GB2312_80 0x91 /* Chinese */
134
+ #define LC_JISX0208 0x92 /* Japanese Kanji (JIS X 0208) */
135
+ #define LC_KS5601 0x93 /* Korean */
136
+ #define LC_JISX0212 0x94 /* Japanese Kanji (JIS X 0212) */
137
+ #define LC_CNS11643_1 0x95 /* CNS 11643-1992 Plane 1 */
138
+ #define LC_CNS11643_2 0x96 /* CNS 11643-1992 Plane 2 */
139
+ #define LC_JISX0213_1 0x97 /* Japanese Kanji (JIS X 0213 Plane 1)
140
+ * (not supported) */
141
+ #define LC_BIG5_1 0x98 /* Plane 1 Chinese traditional (not
142
+ * supported) */
143
+ #define LC_BIG5_2 0x99 /* Plane 1 Chinese traditional (not
144
+ * supported) */
145
+
146
+ /* Is a leading byte for "official" multibyte encodings? */
147
+ #define IS_LC2(c) ((unsigned char)(c) >= 0x90 && (unsigned char)(c) <= 0x99)
148
+
149
+ /*
150
+ * Postgres-specific prefix bytes for "private" single byte encodings
151
+ * (According to the MULE docs, we should be using 0x9e for this)
152
+ */
153
+ #define LCPRV1_A 0x9a
154
+ #define LCPRV1_B 0x9b
155
+ #define IS_LCPRV1(c) ((unsigned char)(c) == LCPRV1_A || (unsigned char)(c) == LCPRV1_B)
156
+ #define IS_LCPRV1_A_RANGE(c) \
157
+ ((unsigned char)(c) >= 0xa0 && (unsigned char)(c) <= 0xdf)
158
+ #define IS_LCPRV1_B_RANGE(c) \
159
+ ((unsigned char)(c) >= 0xe0 && (unsigned char)(c) <= 0xef)
160
+
161
+ /*
162
+ * Postgres-specific prefix bytes for "private" multibyte encodings
163
+ * (According to the MULE docs, we should be using 0x9f for this)
164
+ */
165
+ #define LCPRV2_A 0x9c
166
+ #define LCPRV2_B 0x9d
167
+ #define IS_LCPRV2(c) ((unsigned char)(c) == LCPRV2_A || (unsigned char)(c) == LCPRV2_B)
168
+ #define IS_LCPRV2_A_RANGE(c) \
169
+ ((unsigned char)(c) >= 0xf0 && (unsigned char)(c) <= 0xf4)
170
+ #define IS_LCPRV2_B_RANGE(c) \
171
+ ((unsigned char)(c) >= 0xf5 && (unsigned char)(c) <= 0xfe)
172
+
173
+ /*
174
+ * Charset IDs for private single byte encodings (0xa0-0xef)
175
+ */
176
+ #define LC_SISHENG 0xa0 /* Chinese SiSheng characters for
177
+ * PinYin/ZhuYin (not supported) */
178
+ #define LC_IPA 0xa1 /* IPA (International Phonetic
179
+ * Association) (not supported) */
180
+ #define LC_VISCII_LOWER 0xa2 /* Vietnamese VISCII1.1 lower-case (not
181
+ * supported) */
182
+ #define LC_VISCII_UPPER 0xa3 /* Vietnamese VISCII1.1 upper-case (not
183
+ * supported) */
184
+ #define LC_ARABIC_DIGIT 0xa4 /* Arabic digit (not supported) */
185
+ #define LC_ARABIC_1_COLUMN 0xa5 /* Arabic 1-column (not supported) */
186
+ #define LC_ASCII_RIGHT_TO_LEFT 0xa6 /* ASCII (left half of ISO8859-1) with
187
+ * right-to-left direction (not
188
+ * supported) */
189
+ #define LC_LAO 0xa7 /* Lao characters (ISO10646 0E80..0EDF)
190
+ * (not supported) */
191
+ #define LC_ARABIC_2_COLUMN 0xa8 /* Arabic 1-column (not supported) */
192
+
193
+ /*
194
+ * Charset IDs for private multibyte encodings (0xf0-0xff)
195
+ */
196
+ #define LC_INDIAN_1_COLUMN 0xf0 /* Indian charset for 1-column width
197
+ * glyphs (not supported) */
198
+ #define LC_TIBETAN_1_COLUMN 0xf1 /* Tibetan 1-column width glyphs (not
199
+ * supported) */
200
+ #define LC_UNICODE_SUBSET_2 0xf2 /* Unicode characters of the range
201
+ * U+2500..U+33FF. (not supported) */
202
+ #define LC_UNICODE_SUBSET_3 0xf3 /* Unicode characters of the range
203
+ * U+E000..U+FFFF. (not supported) */
204
+ #define LC_UNICODE_SUBSET 0xf4 /* Unicode characters of the range
205
+ * U+0100..U+24FF. (not supported) */
206
+ #define LC_ETHIOPIC 0xf5 /* Ethiopic characters (not supported) */
207
+ #define LC_CNS11643_3 0xf6 /* CNS 11643-1992 Plane 3 */
208
+ #define LC_CNS11643_4 0xf7 /* CNS 11643-1992 Plane 4 */
209
+ #define LC_CNS11643_5 0xf8 /* CNS 11643-1992 Plane 5 */
210
+ #define LC_CNS11643_6 0xf9 /* CNS 11643-1992 Plane 6 */
211
+ #define LC_CNS11643_7 0xfa /* CNS 11643-1992 Plane 7 */
212
+ #define LC_INDIAN_2_COLUMN 0xfb /* Indian charset for 2-column width
213
+ * glyphs (not supported) */
214
+ #define LC_TIBETAN 0xfc /* Tibetan (not supported) */
215
+ /* #define FREE 0xfd free (unused) */
216
+ /* #define FREE 0xfe free (unused) */
217
+ /* #define FREE 0xff free (unused) */
218
+
219
+ /*----------------------------------------------------
220
+ * end of MULE stuff
221
+ *----------------------------------------------------
222
+ */
223
+
224
+ /*
225
+ * PostgreSQL encoding identifiers
226
+ *
227
+ * WARNING: If you add some encoding don't forget to update
228
+ * the pg_enc2name_tbl[] array (in src/common/encnames.c),
229
+ * the pg_enc2gettext_tbl[] array (in src/common/encnames.c) and
230
+ * the pg_wchar_table[] array (in src/common/wchar.c) and to check
231
+ * PG_ENCODING_BE_LAST macro.
232
+ *
233
+ * PG_SQL_ASCII is default encoding and must be = 0.
234
+ *
235
+ * XXX We must avoid renumbering any backend encoding until libpq's major
236
+ * version number is increased beyond 5; it turns out that the backend
237
+ * encoding IDs are effectively part of libpq's ABI as far as 8.2 initdb and
238
+ * psql are concerned.
239
+ */
240
+ typedef enum pg_enc
241
+ {
242
+ PG_SQL_ASCII = 0, /* SQL/ASCII */
243
+ PG_EUC_JP, /* EUC for Japanese */
244
+ PG_EUC_CN, /* EUC for Chinese */
245
+ PG_EUC_KR, /* EUC for Korean */
246
+ PG_EUC_TW, /* EUC for Taiwan */
247
+ PG_EUC_JIS_2004, /* EUC-JIS-2004 */
248
+ PG_UTF8, /* Unicode UTF8 */
249
+ PG_MULE_INTERNAL, /* Mule internal code */
250
+ PG_LATIN1, /* ISO-8859-1 Latin 1 */
251
+ PG_LATIN2, /* ISO-8859-2 Latin 2 */
252
+ PG_LATIN3, /* ISO-8859-3 Latin 3 */
253
+ PG_LATIN4, /* ISO-8859-4 Latin 4 */
254
+ PG_LATIN5, /* ISO-8859-9 Latin 5 */
255
+ PG_LATIN6, /* ISO-8859-10 Latin6 */
256
+ PG_LATIN7, /* ISO-8859-13 Latin7 */
257
+ PG_LATIN8, /* ISO-8859-14 Latin8 */
258
+ PG_LATIN9, /* ISO-8859-15 Latin9 */
259
+ PG_LATIN10, /* ISO-8859-16 Latin10 */
260
+ PG_WIN1256, /* windows-1256 */
261
+ PG_WIN1258, /* Windows-1258 */
262
+ PG_WIN866, /* (MS-DOS CP866) */
263
+ PG_WIN874, /* windows-874 */
264
+ PG_KOI8R, /* KOI8-R */
265
+ PG_WIN1251, /* windows-1251 */
266
+ PG_WIN1252, /* windows-1252 */
267
+ PG_ISO_8859_5, /* ISO-8859-5 */
268
+ PG_ISO_8859_6, /* ISO-8859-6 */
269
+ PG_ISO_8859_7, /* ISO-8859-7 */
270
+ PG_ISO_8859_8, /* ISO-8859-8 */
271
+ PG_WIN1250, /* windows-1250 */
272
+ PG_WIN1253, /* windows-1253 */
273
+ PG_WIN1254, /* windows-1254 */
274
+ PG_WIN1255, /* windows-1255 */
275
+ PG_WIN1257, /* windows-1257 */
276
+ PG_KOI8U, /* KOI8-U */
277
+ /* PG_ENCODING_BE_LAST points to the above entry */
278
+
279
+ /* followings are for client encoding only */
280
+ PG_SJIS, /* Shift JIS (Windows-932) */
281
+ PG_BIG5, /* Big5 (Windows-950) */
282
+ PG_GBK, /* GBK (Windows-936) */
283
+ PG_UHC, /* UHC (Windows-949) */
284
+ PG_GB18030, /* GB18030 */
285
+ PG_JOHAB, /* EUC for Korean JOHAB */
286
+ PG_SHIFT_JIS_2004, /* Shift-JIS-2004 */
287
+ _PG_LAST_ENCODING_ /* mark only */
288
+
289
+ } pg_enc;
290
+
291
+ #define PG_ENCODING_BE_LAST PG_KOI8U
292
+
293
+ /*
294
+ * Please use these tests before access to pg_enc2name_tbl[]
295
+ * or to other places...
296
+ */
297
+ #define PG_VALID_BE_ENCODING(_enc) \
298
+ ((_enc) >= 0 && (_enc) <= PG_ENCODING_BE_LAST)
299
+
300
+ #define PG_ENCODING_IS_CLIENT_ONLY(_enc) \
301
+ ((_enc) > PG_ENCODING_BE_LAST && (_enc) < _PG_LAST_ENCODING_)
302
+
303
+ #define PG_VALID_ENCODING(_enc) \
304
+ ((_enc) >= 0 && (_enc) < _PG_LAST_ENCODING_)
305
+
306
+ /* On FE are possible all encodings */
307
+ #define PG_VALID_FE_ENCODING(_enc) PG_VALID_ENCODING(_enc)
308
+
309
+ /*
310
+ * When converting strings between different encodings, we assume that space
311
+ * for converted result is 4-to-1 growth in the worst case. The rate for
312
+ * currently supported encoding pairs are within 3 (SJIS JIS X0201 half width
313
+ * kana -> UTF8 is the worst case). So "4" should be enough for the moment.
314
+ *
315
+ * Note that this is not the same as the maximum character width in any
316
+ * particular encoding.
317
+ */
318
+ #define MAX_CONVERSION_GROWTH 4
319
+
320
+ /*
321
+ * Maximum byte length of a string that's required in any encoding to convert
322
+ * at least one character to any other encoding. In other words, if you feed
323
+ * MAX_CONVERSION_INPUT_LENGTH bytes to any encoding conversion function, it
324
+ * is guaranteed to be able to convert something without needing more input
325
+ * (assuming the input is valid).
326
+ *
327
+ * Currently, the maximum case is the conversion UTF8 -> SJIS JIS X0201 half
328
+ * width kana, where a pair of UTF-8 characters is converted into a single
329
+ * SHIFT_JIS_2004 character (the reverse of the worst case for
330
+ * MAX_CONVERSION_GROWTH). It needs 6 bytes of input. In theory, a
331
+ * user-defined conversion function might have more complicated cases, although
332
+ * for the reverse mapping you would probably also need to bump up
333
+ * MAX_CONVERSION_GROWTH. But there is no need to be stingy here, so make it
334
+ * generous.
335
+ */
336
+ #define MAX_CONVERSION_INPUT_LENGTH 16
337
+
338
+ /*
339
+ * Maximum byte length of the string equivalent to any one Unicode code point,
340
+ * in any backend encoding. The current value assumes that a 4-byte UTF-8
341
+ * character might expand by MAX_CONVERSION_GROWTH, which is a huge
342
+ * overestimate. But in current usage we don't allocate large multiples of
343
+ * this, so there's little point in being stingy.
344
+ */
345
+ #define MAX_UNICODE_EQUIVALENT_STRING 16
346
+
347
+ /*
348
+ * Table for mapping an encoding number to official encoding name and
349
+ * possibly other subsidiary data. Be careful to check encoding number
350
+ * before accessing a table entry!
351
+ *
352
+ * if (PG_VALID_ENCODING(encoding))
353
+ * pg_enc2name_tbl[ encoding ];
354
+ */
355
+ typedef struct pg_enc2name
356
+ {
357
+ const char *name;
358
+ pg_enc encoding;
359
+ #ifdef WIN32
360
+ unsigned codepage; /* codepage for WIN32 */
361
+ #endif
362
+ } pg_enc2name;
363
+
364
+ extern PGDLLIMPORT const pg_enc2name pg_enc2name_tbl[];
365
+
366
+ /*
367
+ * Encoding names for gettext
368
+ */
369
+ extern PGDLLIMPORT const char *pg_enc2gettext_tbl[];
370
+
371
+ /*
372
+ * pg_wchar stuff
373
+ */
374
+ typedef int (*mb2wchar_with_len_converter) (const unsigned char *from,
375
+ pg_wchar *to,
376
+ int len);
377
+
378
+ typedef int (*wchar2mb_with_len_converter) (const pg_wchar *from,
379
+ unsigned char *to,
380
+ int len);
381
+
382
+ typedef int (*mblen_converter) (const unsigned char *mbstr);
383
+
384
+ typedef int (*mbdisplaylen_converter) (const unsigned char *mbstr);
385
+
386
+ typedef bool (*mbcharacter_incrementer) (unsigned char *mbstr, int len);
387
+
388
+ typedef int (*mbchar_verifier) (const unsigned char *mbstr, int len);
389
+
390
+ typedef int (*mbstr_verifier) (const unsigned char *mbstr, int len);
391
+
392
+ typedef struct
393
+ {
394
+ mb2wchar_with_len_converter mb2wchar_with_len; /* convert a multibyte
395
+ * string to a wchar */
396
+ wchar2mb_with_len_converter wchar2mb_with_len; /* convert a wchar string
397
+ * to a multibyte */
398
+ mblen_converter mblen; /* get byte length of a char */
399
+ mbdisplaylen_converter dsplen; /* get display width of a char */
400
+ mbchar_verifier mbverifychar; /* verify multibyte character */
401
+ mbstr_verifier mbverifystr; /* verify multibyte string */
402
+ int maxmblen; /* max bytes for a char in this encoding */
403
+ } pg_wchar_tbl;
404
+
405
+ extern PGDLLIMPORT const pg_wchar_tbl pg_wchar_table[];
406
+
407
+ /*
408
+ * Data structures for conversions between UTF-8 and other encodings
409
+ * (UtfToLocal() and LocalToUtf()). In these data structures, characters of
410
+ * either encoding are represented by uint32 words; hence we can only support
411
+ * characters up to 4 bytes long. For example, the byte sequence 0xC2 0x89
412
+ * would be represented by 0x0000C289, and 0xE8 0xA2 0xB4 by 0x00E8A2B4.
413
+ *
414
+ * There are three possible ways a character can be mapped:
415
+ *
416
+ * 1. Using a radix tree, from source to destination code.
417
+ * 2. Using a sorted array of source -> destination code pairs. This
418
+ * method is used for "combining" characters. There are so few of
419
+ * them that building a radix tree would be wasteful.
420
+ * 3. Using a conversion function.
421
+ */
422
+
423
+ /*
424
+ * Radix tree for character conversion.
425
+ *
426
+ * Logically, this is actually four different radix trees, for 1-byte,
427
+ * 2-byte, 3-byte and 4-byte inputs. The 1-byte tree is a simple lookup
428
+ * table from source to target code. The 2-byte tree consists of two levels:
429
+ * one lookup table for the first byte, where the value in the lookup table
430
+ * points to a lookup table for the second byte. And so on.
431
+ *
432
+ * Physically, all the trees are stored in one big array, in 'chars16' or
433
+ * 'chars32', depending on the maximum value that needs to be represented. For
434
+ * each level in each tree, we also store lower and upper bound of allowed
435
+ * values - values outside those bounds are considered invalid, and are left
436
+ * out of the tables.
437
+ *
438
+ * In the intermediate levels of the trees, the values stored are offsets
439
+ * into the chars[16|32] array.
440
+ *
441
+ * In the beginning of the chars[16|32] array, there is always a number of
442
+ * zeros, so that you safely follow an index from an intermediate table
443
+ * without explicitly checking for a zero. Following a zero any number of
444
+ * times will always bring you to the dummy, all-zeros table in the
445
+ * beginning. This helps to shave some cycles when looking up values.
446
+ */
447
+ typedef struct
448
+ {
449
+ /*
450
+ * Array containing all the values. Only one of chars16 or chars32 is
451
+ * used, depending on how wide the values we need to represent are.
452
+ */
453
+ const uint16 *chars16;
454
+ const uint32 *chars32;
455
+
456
+ /* Radix tree for 1-byte inputs */
457
+ uint32 b1root; /* offset of table in the chars[16|32] array */
458
+ uint8 b1_lower; /* min allowed value for a single byte input */
459
+ uint8 b1_upper; /* max allowed value for a single byte input */
460
+
461
+ /* Radix tree for 2-byte inputs */
462
+ uint32 b2root; /* offset of 1st byte's table */
463
+ uint8 b2_1_lower; /* min/max allowed value for 1st input byte */
464
+ uint8 b2_1_upper;
465
+ uint8 b2_2_lower; /* min/max allowed value for 2nd input byte */
466
+ uint8 b2_2_upper;
467
+
468
+ /* Radix tree for 3-byte inputs */
469
+ uint32 b3root; /* offset of 1st byte's table */
470
+ uint8 b3_1_lower; /* min/max allowed value for 1st input byte */
471
+ uint8 b3_1_upper;
472
+ uint8 b3_2_lower; /* min/max allowed value for 2nd input byte */
473
+ uint8 b3_2_upper;
474
+ uint8 b3_3_lower; /* min/max allowed value for 3rd input byte */
475
+ uint8 b3_3_upper;
476
+
477
+ /* Radix tree for 4-byte inputs */
478
+ uint32 b4root; /* offset of 1st byte's table */
479
+ uint8 b4_1_lower; /* min/max allowed value for 1st input byte */
480
+ uint8 b4_1_upper;
481
+ uint8 b4_2_lower; /* min/max allowed value for 2nd input byte */
482
+ uint8 b4_2_upper;
483
+ uint8 b4_3_lower; /* min/max allowed value for 3rd input byte */
484
+ uint8 b4_3_upper;
485
+ uint8 b4_4_lower; /* min/max allowed value for 4th input byte */
486
+ uint8 b4_4_upper;
487
+
488
+ } pg_mb_radix_tree;
489
+
490
+ /*
491
+ * UTF-8 to local code conversion map (for combined characters)
492
+ */
493
+ typedef struct
494
+ {
495
+ uint32 utf1; /* UTF-8 code 1 */
496
+ uint32 utf2; /* UTF-8 code 2 */
497
+ uint32 code; /* local code */
498
+ } pg_utf_to_local_combined;
499
+
500
+ /*
501
+ * local code to UTF-8 conversion map (for combined characters)
502
+ */
503
+ typedef struct
504
+ {
505
+ uint32 code; /* local code */
506
+ uint32 utf1; /* UTF-8 code 1 */
507
+ uint32 utf2; /* UTF-8 code 2 */
508
+ } pg_local_to_utf_combined;
509
+
510
+ /*
511
+ * callback function for algorithmic encoding conversions (in either direction)
512
+ *
513
+ * if function returns zero, it does not know how to convert the code
514
+ */
515
+ typedef uint32 (*utf_local_conversion_func) (uint32 code);
516
+
517
+ /*
518
+ * Support macro for encoding conversion functions to validate their
519
+ * arguments. (This could be made more compact if we included fmgr.h
520
+ * here, but we don't want to do that because this header file is also
521
+ * used by frontends.)
522
+ */
523
+ #define CHECK_ENCODING_CONVERSION_ARGS(srcencoding,destencoding) \
524
+ check_encoding_conversion_args(PG_GETARG_INT32(0), \
525
+ PG_GETARG_INT32(1), \
526
+ PG_GETARG_INT32(4), \
527
+ (srcencoding), \
528
+ (destencoding))
529
+
530
+
531
+ /*
532
+ * Some handy functions for Unicode-specific tests.
533
+ */
534
+ static inline bool
535
+ is_valid_unicode_codepoint(pg_wchar c)
536
+ {
537
+ return (c > 0 && c <= 0x10FFFF);
538
+ }
539
+
540
+ static inline bool
541
+ is_utf16_surrogate_first(pg_wchar c)
542
+ {
543
+ return (c >= 0xD800 && c <= 0xDBFF);
544
+ }
545
+
546
+ static inline bool
547
+ is_utf16_surrogate_second(pg_wchar c)
548
+ {
549
+ return (c >= 0xDC00 && c <= 0xDFFF);
550
+ }
551
+
552
+ static inline pg_wchar
553
+ surrogate_pair_to_codepoint(pg_wchar first, pg_wchar second)
554
+ {
555
+ return ((first & 0x3FF) << 10) + 0x10000 + (second & 0x3FF);
556
+ }
557
+
558
+ /*
559
+ * Convert a UTF-8 character to a Unicode code point.
560
+ * This is a one-character version of pg_utf2wchar_with_len.
561
+ *
562
+ * No error checks here, c must point to a long-enough string.
563
+ */
564
+ static inline pg_wchar
565
+ utf8_to_unicode(const unsigned char *c)
566
+ {
567
+ if ((*c & 0x80) == 0)
568
+ return (pg_wchar) c[0];
569
+ else if ((*c & 0xe0) == 0xc0)
570
+ return (pg_wchar) (((c[0] & 0x1f) << 6) |
571
+ (c[1] & 0x3f));
572
+ else if ((*c & 0xf0) == 0xe0)
573
+ return (pg_wchar) (((c[0] & 0x0f) << 12) |
574
+ ((c[1] & 0x3f) << 6) |
575
+ (c[2] & 0x3f));
576
+ else if ((*c & 0xf8) == 0xf0)
577
+ return (pg_wchar) (((c[0] & 0x07) << 18) |
578
+ ((c[1] & 0x3f) << 12) |
579
+ ((c[2] & 0x3f) << 6) |
580
+ (c[3] & 0x3f));
581
+ else
582
+ /* that is an invalid code on purpose */
583
+ return 0xffffffff;
584
+ }
585
+
586
+ /*
587
+ * Map a Unicode code point to UTF-8. utf8string must have at least
588
+ * unicode_utf8len(c) bytes available.
589
+ */
590
+ static inline unsigned char *
591
+ unicode_to_utf8(pg_wchar c, unsigned char *utf8string)
592
+ {
593
+ if (c <= 0x7F)
594
+ {
595
+ utf8string[0] = c;
596
+ }
597
+ else if (c <= 0x7FF)
598
+ {
599
+ utf8string[0] = 0xC0 | ((c >> 6) & 0x1F);
600
+ utf8string[1] = 0x80 | (c & 0x3F);
601
+ }
602
+ else if (c <= 0xFFFF)
603
+ {
604
+ utf8string[0] = 0xE0 | ((c >> 12) & 0x0F);
605
+ utf8string[1] = 0x80 | ((c >> 6) & 0x3F);
606
+ utf8string[2] = 0x80 | (c & 0x3F);
607
+ }
608
+ else
609
+ {
610
+ utf8string[0] = 0xF0 | ((c >> 18) & 0x07);
611
+ utf8string[1] = 0x80 | ((c >> 12) & 0x3F);
612
+ utf8string[2] = 0x80 | ((c >> 6) & 0x3F);
613
+ utf8string[3] = 0x80 | (c & 0x3F);
614
+ }
615
+
616
+ return utf8string;
617
+ }
618
+
619
+ /*
620
+ * Number of bytes needed to represent the given char in UTF8.
621
+ */
622
+ static inline int
623
+ unicode_utf8len(pg_wchar c)
624
+ {
625
+ if (c <= 0x7F)
626
+ return 1;
627
+ else if (c <= 0x7FF)
628
+ return 2;
629
+ else if (c <= 0xFFFF)
630
+ return 3;
631
+ else
632
+ return 4;
633
+ }
634
+
635
+ /*
636
+ * The functions in this list are exported by libpq, and we need to be sure
637
+ * that we know which calls are satisfied by libpq and which are satisfied
638
+ * by static linkage to libpgcommon. (This is because we might be using a
639
+ * libpq.so that's of a different major version and has encoding IDs that
640
+ * differ from the current version's.) The nominal function names are what
641
+ * are actually used in and exported by libpq, while the names exported by
642
+ * libpgcommon.a and libpgcommon_srv.a end in "_private".
643
+ */
644
+ #if defined(USE_PRIVATE_ENCODING_FUNCS) || !defined(FRONTEND)
645
+ #define pg_char_to_encoding pg_char_to_encoding_private
646
+ #define pg_encoding_to_char pg_encoding_to_char_private
647
+ #define pg_valid_server_encoding pg_valid_server_encoding_private
648
+ #define pg_valid_server_encoding_id pg_valid_server_encoding_id_private
649
+ #define pg_utf_mblen pg_utf_mblen_private
650
+ #endif
651
+
652
+ /*
653
+ * These functions are considered part of libpq's exported API and
654
+ * are also declared in libpq-fe.h.
655
+ */
656
+ extern int pg_char_to_encoding(const char *name);
657
+ extern const char *pg_encoding_to_char(int encoding);
658
+ extern int pg_valid_server_encoding_id(int encoding);
659
+
660
+ /*
661
+ * These functions are available to frontend code that links with libpgcommon
662
+ * (in addition to the ones just above). The constant tables declared
663
+ * earlier in this file are also available from libpgcommon.
664
+ */
665
+ extern void pg_encoding_set_invalid(int encoding, char *dst);
666
+ extern int pg_encoding_mblen(int encoding, const char *mbstr);
667
+ extern int pg_encoding_mblen_bounded(int encoding, const char *mbstr);
668
+ extern int pg_encoding_dsplen(int encoding, const char *mbstr);
669
+ extern int pg_encoding_verifymbchar(int encoding, const char *mbstr, int len);
670
+ extern int pg_encoding_verifymbstr(int encoding, const char *mbstr, int len);
671
+ extern int pg_encoding_max_length(int encoding);
672
+ extern int pg_valid_client_encoding(const char *name);
673
+ extern int pg_valid_server_encoding(const char *name);
674
+ extern bool is_encoding_supported_by_icu(int encoding);
675
+ extern const char *get_encoding_name_for_icu(int encoding);
676
+
677
+ extern unsigned char *unicode_to_utf8(pg_wchar c, unsigned char *utf8string);
678
+ extern pg_wchar utf8_to_unicode(const unsigned char *c);
679
+ extern bool pg_utf8_islegal(const unsigned char *source, int length);
680
+ extern int pg_utf_mblen(const unsigned char *s);
681
+ extern int pg_mule_mblen(const unsigned char *s);
682
+
683
+ /*
684
+ * The remaining functions are backend-only.
685
+ */
686
+ extern int pg_mb2wchar(const char *from, pg_wchar *to);
687
+ extern int pg_mb2wchar_with_len(const char *from, pg_wchar *to, int len);
688
+ extern int pg_encoding_mb2wchar_with_len(int encoding,
689
+ const char *from, pg_wchar *to, int len);
690
+ extern int pg_wchar2mb(const pg_wchar *from, char *to);
691
+ extern int pg_wchar2mb_with_len(const pg_wchar *from, char *to, int len);
692
+ extern int pg_encoding_wchar2mb_with_len(int encoding,
693
+ const pg_wchar *from, char *to, int len);
694
+ extern int pg_char_and_wchar_strcmp(const char *s1, const pg_wchar *s2);
695
+ extern int pg_wchar_strncmp(const pg_wchar *s1, const pg_wchar *s2, size_t n);
696
+ extern int pg_char_and_wchar_strncmp(const char *s1, const pg_wchar *s2, size_t n);
697
+ extern size_t pg_wchar_strlen(const pg_wchar *str);
698
+ extern int pg_mblen(const char *mbstr);
699
+ extern int pg_dsplen(const char *mbstr);
700
+ extern int pg_mbstrlen(const char *mbstr);
701
+ extern int pg_mbstrlen_with_len(const char *mbstr, int limit);
702
+ extern int pg_mbcliplen(const char *mbstr, int len, int limit);
703
+ extern int pg_encoding_mbcliplen(int encoding, const char *mbstr,
704
+ int len, int limit);
705
+ extern int pg_mbcharcliplen(const char *mbstr, int len, int limit);
706
+ extern int pg_database_encoding_max_length(void);
707
+ extern mbcharacter_incrementer pg_database_encoding_character_incrementer(void);
708
+
709
+ extern int PrepareClientEncoding(int encoding);
710
+ extern int SetClientEncoding(int encoding);
711
+ extern void InitializeClientEncoding(void);
712
+ extern int pg_get_client_encoding(void);
713
+ extern const char *pg_get_client_encoding_name(void);
714
+
715
+ extern void SetDatabaseEncoding(int encoding);
716
+ extern int GetDatabaseEncoding(void);
717
+ extern const char *GetDatabaseEncodingName(void);
718
+ extern void SetMessageEncoding(int encoding);
719
+ extern int GetMessageEncoding(void);
720
+
721
+ #ifdef ENABLE_NLS
722
+ extern int pg_bind_textdomain_codeset(const char *domainname);
723
+ #endif
724
+
725
+ extern unsigned char *pg_do_encoding_conversion(unsigned char *src, int len,
726
+ int src_encoding,
727
+ int dest_encoding);
728
+ extern int pg_do_encoding_conversion_buf(Oid proc,
729
+ int src_encoding,
730
+ int dest_encoding,
731
+ unsigned char *src, int srclen,
732
+ unsigned char *dest, int destlen,
733
+ bool noError);
734
+
735
+ extern char *pg_client_to_server(const char *s, int len);
736
+ extern char *pg_server_to_client(const char *s, int len);
737
+ extern char *pg_any_to_server(const char *s, int len, int encoding);
738
+ extern char *pg_server_to_any(const char *s, int len, int encoding);
739
+
740
+ extern void pg_unicode_to_server(pg_wchar c, unsigned char *s);
741
+ extern bool pg_unicode_to_server_noerror(pg_wchar c, unsigned char *s);
742
+
743
+ extern unsigned short BIG5toCNS(unsigned short big5, unsigned char *lc);
744
+ extern unsigned short CNStoBIG5(unsigned short cns, unsigned char lc);
745
+
746
+ extern int UtfToLocal(const unsigned char *utf, int len,
747
+ unsigned char *iso,
748
+ const pg_mb_radix_tree *map,
749
+ const pg_utf_to_local_combined *cmap, int cmapsize,
750
+ utf_local_conversion_func conv_func,
751
+ int encoding, bool noError);
752
+ extern int LocalToUtf(const unsigned char *iso, int len,
753
+ unsigned char *utf,
754
+ const pg_mb_radix_tree *map,
755
+ const pg_local_to_utf_combined *cmap, int cmapsize,
756
+ utf_local_conversion_func conv_func,
757
+ int encoding, bool noError);
758
+
759
+ extern bool pg_verifymbstr(const char *mbstr, int len, bool noError);
760
+ extern bool pg_verify_mbstr(int encoding, const char *mbstr, int len,
761
+ bool noError);
762
+ extern int pg_verify_mbstr_len(int encoding, const char *mbstr, int len,
763
+ bool noError);
764
+
765
+ extern void check_encoding_conversion_args(int src_encoding,
766
+ int dest_encoding,
767
+ int len,
768
+ int expected_src_encoding,
769
+ int expected_dest_encoding);
770
+
771
+ extern void report_invalid_encoding(int encoding, const char *mbstr, int len) pg_attribute_noreturn();
772
+ extern void report_untranslatable_char(int src_encoding, int dest_encoding,
773
+ const char *mbstr, int len) pg_attribute_noreturn();
774
+
775
+ extern int local2local(const unsigned char *l, unsigned char *p, int len,
776
+ int src_encoding, int dest_encoding,
777
+ const unsigned char *tab, bool noError);
778
+ extern int latin2mic(const unsigned char *l, unsigned char *p, int len,
779
+ int lc, int encoding, bool noError);
780
+ extern int mic2latin(const unsigned char *mic, unsigned char *p, int len,
781
+ int lc, int encoding, bool noError);
782
+ extern int latin2mic_with_table(const unsigned char *l, unsigned char *p,
783
+ int len, int lc, int encoding,
784
+ const unsigned char *tab, bool noError);
785
+ extern int mic2latin_with_table(const unsigned char *mic, unsigned char *p,
786
+ int len, int lc, int encoding,
787
+ const unsigned char *tab, bool noError);
788
+
789
+ #ifdef WIN32
790
+ extern WCHAR *pgwin32_message_to_UTF16(const char *str, int len, int *utf16len);
791
+ #endif
792
+
793
+ #endif /* PG_WCHAR_H */