gitlab-pg_query 1.3.1 → 2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (480) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +217 -99
  3. data/README.md +92 -69
  4. data/Rakefile +85 -5
  5. data/ext/pg_query/extconf.rb +3 -40
  6. data/ext/pg_query/guc-file.c +0 -0
  7. data/ext/pg_query/include/access/amapi.h +246 -0
  8. data/ext/pg_query/include/access/attmap.h +52 -0
  9. data/ext/pg_query/include/access/attnum.h +64 -0
  10. data/ext/pg_query/include/access/clog.h +61 -0
  11. data/ext/pg_query/include/access/commit_ts.h +77 -0
  12. data/ext/pg_query/include/access/detoast.h +92 -0
  13. data/ext/pg_query/include/access/genam.h +228 -0
  14. data/ext/pg_query/include/access/gin.h +78 -0
  15. data/ext/pg_query/include/access/htup.h +89 -0
  16. data/ext/pg_query/include/access/htup_details.h +819 -0
  17. data/ext/pg_query/include/access/itup.h +161 -0
  18. data/ext/pg_query/include/access/parallel.h +82 -0
  19. data/ext/pg_query/include/access/printtup.h +35 -0
  20. data/ext/pg_query/include/access/relation.h +28 -0
  21. data/ext/pg_query/include/access/relscan.h +176 -0
  22. data/ext/pg_query/include/access/rmgr.h +35 -0
  23. data/ext/pg_query/include/access/rmgrlist.h +49 -0
  24. data/ext/pg_query/include/access/sdir.h +58 -0
  25. data/ext/pg_query/include/access/skey.h +151 -0
  26. data/ext/pg_query/include/access/stratnum.h +83 -0
  27. data/ext/pg_query/include/access/sysattr.h +29 -0
  28. data/ext/pg_query/include/access/table.h +27 -0
  29. data/ext/pg_query/include/access/tableam.h +1825 -0
  30. data/ext/pg_query/include/access/transam.h +265 -0
  31. data/ext/pg_query/include/access/tupconvert.h +51 -0
  32. data/ext/pg_query/include/access/tupdesc.h +154 -0
  33. data/ext/pg_query/include/access/tupmacs.h +247 -0
  34. data/ext/pg_query/include/access/twophase.h +61 -0
  35. data/ext/pg_query/include/access/xact.h +463 -0
  36. data/ext/pg_query/include/access/xlog.h +398 -0
  37. data/ext/pg_query/include/access/xlog_internal.h +330 -0
  38. data/ext/pg_query/include/access/xlogdefs.h +109 -0
  39. data/ext/pg_query/include/access/xloginsert.h +64 -0
  40. data/ext/pg_query/include/access/xlogreader.h +327 -0
  41. data/ext/pg_query/include/access/xlogrecord.h +227 -0
  42. data/ext/pg_query/include/bootstrap/bootstrap.h +62 -0
  43. data/ext/pg_query/include/c.h +1322 -0
  44. data/ext/pg_query/include/catalog/catalog.h +42 -0
  45. data/ext/pg_query/include/catalog/catversion.h +58 -0
  46. data/ext/pg_query/include/catalog/dependency.h +275 -0
  47. data/ext/pg_query/include/catalog/genbki.h +64 -0
  48. data/ext/pg_query/include/catalog/index.h +199 -0
  49. data/ext/pg_query/include/catalog/indexing.h +366 -0
  50. data/ext/pg_query/include/catalog/namespace.h +188 -0
  51. data/ext/pg_query/include/catalog/objectaccess.h +197 -0
  52. data/ext/pg_query/include/catalog/objectaddress.h +84 -0
  53. data/ext/pg_query/include/catalog/pg_aggregate.h +176 -0
  54. data/ext/pg_query/include/catalog/pg_aggregate_d.h +77 -0
  55. data/ext/pg_query/include/catalog/pg_am.h +60 -0
  56. data/ext/pg_query/include/catalog/pg_am_d.h +45 -0
  57. data/ext/pg_query/include/catalog/pg_attribute.h +204 -0
  58. data/ext/pg_query/include/catalog/pg_attribute_d.h +59 -0
  59. data/ext/pg_query/include/catalog/pg_authid.h +58 -0
  60. data/ext/pg_query/include/catalog/pg_authid_d.h +49 -0
  61. data/ext/pg_query/include/catalog/pg_class.h +200 -0
  62. data/ext/pg_query/include/catalog/pg_class_d.h +103 -0
  63. data/ext/pg_query/include/catalog/pg_collation.h +73 -0
  64. data/ext/pg_query/include/catalog/pg_collation_d.h +45 -0
  65. data/ext/pg_query/include/catalog/pg_constraint.h +247 -0
  66. data/ext/pg_query/include/catalog/pg_constraint_d.h +67 -0
  67. data/ext/pg_query/include/catalog/pg_control.h +250 -0
  68. data/ext/pg_query/include/catalog/pg_conversion.h +72 -0
  69. data/ext/pg_query/include/catalog/pg_conversion_d.h +35 -0
  70. data/ext/pg_query/include/catalog/pg_depend.h +73 -0
  71. data/ext/pg_query/include/catalog/pg_depend_d.h +34 -0
  72. data/ext/pg_query/include/catalog/pg_event_trigger.h +51 -0
  73. data/ext/pg_query/include/catalog/pg_event_trigger_d.h +34 -0
  74. data/ext/pg_query/include/catalog/pg_index.h +80 -0
  75. data/ext/pg_query/include/catalog/pg_index_d.h +56 -0
  76. data/ext/pg_query/include/catalog/pg_language.h +67 -0
  77. data/ext/pg_query/include/catalog/pg_language_d.h +39 -0
  78. data/ext/pg_query/include/catalog/pg_namespace.h +59 -0
  79. data/ext/pg_query/include/catalog/pg_namespace_d.h +34 -0
  80. data/ext/pg_query/include/catalog/pg_opclass.h +85 -0
  81. data/ext/pg_query/include/catalog/pg_opclass_d.h +49 -0
  82. data/ext/pg_query/include/catalog/pg_operator.h +102 -0
  83. data/ext/pg_query/include/catalog/pg_operator_d.h +106 -0
  84. data/ext/pg_query/include/catalog/pg_opfamily.h +60 -0
  85. data/ext/pg_query/include/catalog/pg_opfamily_d.h +47 -0
  86. data/ext/pg_query/include/catalog/pg_partitioned_table.h +63 -0
  87. data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +35 -0
  88. data/ext/pg_query/include/catalog/pg_proc.h +211 -0
  89. data/ext/pg_query/include/catalog/pg_proc_d.h +99 -0
  90. data/ext/pg_query/include/catalog/pg_publication.h +115 -0
  91. data/ext/pg_query/include/catalog/pg_publication_d.h +36 -0
  92. data/ext/pg_query/include/catalog/pg_replication_origin.h +57 -0
  93. data/ext/pg_query/include/catalog/pg_replication_origin_d.h +29 -0
  94. data/ext/pg_query/include/catalog/pg_statistic.h +275 -0
  95. data/ext/pg_query/include/catalog/pg_statistic_d.h +194 -0
  96. data/ext/pg_query/include/catalog/pg_statistic_ext.h +74 -0
  97. data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +40 -0
  98. data/ext/pg_query/include/catalog/pg_transform.h +45 -0
  99. data/ext/pg_query/include/catalog/pg_transform_d.h +32 -0
  100. data/ext/pg_query/include/catalog/pg_trigger.h +137 -0
  101. data/ext/pg_query/include/catalog/pg_trigger_d.h +106 -0
  102. data/ext/pg_query/include/catalog/pg_ts_config.h +50 -0
  103. data/ext/pg_query/include/catalog/pg_ts_config_d.h +32 -0
  104. data/ext/pg_query/include/catalog/pg_ts_dict.h +54 -0
  105. data/ext/pg_query/include/catalog/pg_ts_dict_d.h +33 -0
  106. data/ext/pg_query/include/catalog/pg_ts_parser.h +57 -0
  107. data/ext/pg_query/include/catalog/pg_ts_parser_d.h +35 -0
  108. data/ext/pg_query/include/catalog/pg_ts_template.h +48 -0
  109. data/ext/pg_query/include/catalog/pg_ts_template_d.h +32 -0
  110. data/ext/pg_query/include/catalog/pg_type.h +372 -0
  111. data/ext/pg_query/include/catalog/pg_type_d.h +285 -0
  112. data/ext/pg_query/include/catalog/storage.h +48 -0
  113. data/ext/pg_query/include/commands/async.h +54 -0
  114. data/ext/pg_query/include/commands/dbcommands.h +35 -0
  115. data/ext/pg_query/include/commands/defrem.h +173 -0
  116. data/ext/pg_query/include/commands/event_trigger.h +88 -0
  117. data/ext/pg_query/include/commands/explain.h +127 -0
  118. data/ext/pg_query/include/commands/prepare.h +61 -0
  119. data/ext/pg_query/include/commands/tablespace.h +67 -0
  120. data/ext/pg_query/include/commands/trigger.h +277 -0
  121. data/ext/pg_query/include/commands/user.h +37 -0
  122. data/ext/pg_query/include/commands/vacuum.h +293 -0
  123. data/ext/pg_query/include/commands/variable.h +38 -0
  124. data/ext/pg_query/include/common/file_perm.h +56 -0
  125. data/ext/pg_query/include/common/hashfn.h +104 -0
  126. data/ext/pg_query/include/common/ip.h +37 -0
  127. data/ext/pg_query/include/common/keywords.h +33 -0
  128. data/ext/pg_query/include/common/kwlookup.h +44 -0
  129. data/ext/pg_query/include/common/relpath.h +90 -0
  130. data/ext/pg_query/include/common/string.h +19 -0
  131. data/ext/pg_query/include/common/unicode_combining_table.h +196 -0
  132. data/ext/pg_query/include/datatype/timestamp.h +197 -0
  133. data/ext/pg_query/include/executor/execdesc.h +70 -0
  134. data/ext/pg_query/include/executor/executor.h +614 -0
  135. data/ext/pg_query/include/executor/functions.h +41 -0
  136. data/ext/pg_query/include/executor/instrument.h +101 -0
  137. data/ext/pg_query/include/executor/spi.h +175 -0
  138. data/ext/pg_query/include/executor/tablefunc.h +67 -0
  139. data/ext/pg_query/include/executor/tuptable.h +487 -0
  140. data/ext/pg_query/include/fmgr.h +775 -0
  141. data/ext/pg_query/include/funcapi.h +348 -0
  142. data/ext/pg_query/include/getaddrinfo.h +162 -0
  143. data/ext/pg_query/include/jit/jit.h +105 -0
  144. data/ext/pg_query/include/kwlist_d.h +1072 -0
  145. data/ext/pg_query/include/lib/ilist.h +727 -0
  146. data/ext/pg_query/include/lib/pairingheap.h +102 -0
  147. data/ext/pg_query/include/lib/simplehash.h +1059 -0
  148. data/ext/pg_query/include/lib/stringinfo.h +161 -0
  149. data/ext/pg_query/include/libpq/auth.h +29 -0
  150. data/ext/pg_query/include/libpq/crypt.h +46 -0
  151. data/ext/pg_query/include/libpq/hba.h +140 -0
  152. data/ext/pg_query/include/libpq/libpq-be.h +326 -0
  153. data/ext/pg_query/include/libpq/libpq.h +133 -0
  154. data/ext/pg_query/include/libpq/pqcomm.h +208 -0
  155. data/ext/pg_query/include/libpq/pqformat.h +210 -0
  156. data/ext/pg_query/include/libpq/pqsignal.h +42 -0
  157. data/ext/pg_query/include/mb/pg_wchar.h +672 -0
  158. data/ext/pg_query/include/mb/stringinfo_mb.h +24 -0
  159. data/ext/pg_query/include/miscadmin.h +476 -0
  160. data/ext/pg_query/include/nodes/bitmapset.h +122 -0
  161. data/ext/pg_query/include/nodes/execnodes.h +2520 -0
  162. data/ext/pg_query/include/nodes/extensible.h +160 -0
  163. data/ext/pg_query/include/nodes/lockoptions.h +61 -0
  164. data/ext/pg_query/include/nodes/makefuncs.h +108 -0
  165. data/ext/pg_query/include/nodes/memnodes.h +108 -0
  166. data/ext/pg_query/include/nodes/nodeFuncs.h +162 -0
  167. data/ext/pg_query/include/nodes/nodes.h +842 -0
  168. data/ext/pg_query/include/nodes/params.h +170 -0
  169. data/ext/pg_query/include/nodes/parsenodes.h +3579 -0
  170. data/ext/pg_query/include/nodes/pathnodes.h +2556 -0
  171. data/ext/pg_query/include/nodes/pg_list.h +605 -0
  172. data/ext/pg_query/include/nodes/plannodes.h +1251 -0
  173. data/ext/pg_query/include/nodes/primnodes.h +1541 -0
  174. data/ext/pg_query/include/nodes/print.h +34 -0
  175. data/ext/pg_query/include/nodes/tidbitmap.h +75 -0
  176. data/ext/pg_query/include/nodes/value.h +61 -0
  177. data/ext/pg_query/include/optimizer/cost.h +206 -0
  178. data/ext/pg_query/include/optimizer/geqo.h +88 -0
  179. data/ext/pg_query/include/optimizer/geqo_gene.h +45 -0
  180. data/ext/pg_query/include/optimizer/optimizer.h +199 -0
  181. data/ext/pg_query/include/optimizer/paths.h +249 -0
  182. data/ext/pg_query/include/optimizer/planmain.h +119 -0
  183. data/ext/pg_query/include/parser/analyze.h +49 -0
  184. data/ext/pg_query/include/parser/gram.h +1067 -0
  185. data/ext/pg_query/include/parser/gramparse.h +75 -0
  186. data/ext/pg_query/include/parser/kwlist.h +477 -0
  187. data/ext/pg_query/include/parser/parse_agg.h +68 -0
  188. data/ext/pg_query/include/parser/parse_clause.h +54 -0
  189. data/ext/pg_query/include/parser/parse_coerce.h +97 -0
  190. data/ext/pg_query/include/parser/parse_collate.h +27 -0
  191. data/ext/pg_query/include/parser/parse_expr.h +26 -0
  192. data/ext/pg_query/include/parser/parse_func.h +73 -0
  193. data/ext/pg_query/include/parser/parse_node.h +327 -0
  194. data/ext/pg_query/include/parser/parse_oper.h +67 -0
  195. data/ext/pg_query/include/parser/parse_relation.h +123 -0
  196. data/ext/pg_query/include/parser/parse_target.h +46 -0
  197. data/ext/pg_query/include/parser/parse_type.h +60 -0
  198. data/ext/pg_query/include/parser/parser.h +41 -0
  199. data/ext/pg_query/include/parser/parsetree.h +61 -0
  200. data/ext/pg_query/include/parser/scanner.h +152 -0
  201. data/ext/pg_query/include/parser/scansup.h +30 -0
  202. data/ext/pg_query/include/partitioning/partdefs.h +26 -0
  203. data/ext/pg_query/include/pg_config.h +989 -0
  204. data/ext/pg_query/include/pg_config_ext.h +8 -0
  205. data/ext/pg_query/include/pg_config_manual.h +350 -0
  206. data/ext/pg_query/include/pg_config_os.h +8 -0
  207. data/ext/pg_query/include/pg_getopt.h +56 -0
  208. data/ext/pg_query/include/pg_query.h +121 -0
  209. data/ext/pg_query/include/pg_query_enum_defs.c +2454 -0
  210. data/ext/pg_query/include/pg_query_fingerprint_conds.c +875 -0
  211. data/ext/pg_query/include/pg_query_fingerprint_defs.c +12413 -0
  212. data/ext/pg_query/include/pg_query_json_helper.c +61 -0
  213. data/ext/pg_query/include/pg_query_outfuncs_conds.c +686 -0
  214. data/ext/pg_query/include/pg_query_outfuncs_defs.c +2437 -0
  215. data/ext/pg_query/include/pg_query_readfuncs_conds.c +222 -0
  216. data/ext/pg_query/include/pg_query_readfuncs_defs.c +2878 -0
  217. data/ext/pg_query/include/pg_trace.h +17 -0
  218. data/ext/pg_query/include/pgstat.h +1487 -0
  219. data/ext/pg_query/include/pgtime.h +84 -0
  220. data/ext/pg_query/include/pl_gram.h +385 -0
  221. data/ext/pg_query/include/pl_reserved_kwlist.h +52 -0
  222. data/ext/pg_query/include/pl_reserved_kwlist_d.h +114 -0
  223. data/ext/pg_query/include/pl_unreserved_kwlist.h +112 -0
  224. data/ext/pg_query/include/pl_unreserved_kwlist_d.h +246 -0
  225. data/ext/pg_query/include/plerrcodes.h +990 -0
  226. data/ext/pg_query/include/plpgsql.h +1347 -0
  227. data/ext/pg_query/include/port.h +524 -0
  228. data/ext/pg_query/include/port/atomics.h +524 -0
  229. data/ext/pg_query/include/port/atomics/arch-arm.h +26 -0
  230. data/ext/pg_query/include/port/atomics/arch-ppc.h +254 -0
  231. data/ext/pg_query/include/port/atomics/arch-x86.h +252 -0
  232. data/ext/pg_query/include/port/atomics/fallback.h +170 -0
  233. data/ext/pg_query/include/port/atomics/generic-gcc.h +286 -0
  234. data/ext/pg_query/include/port/atomics/generic.h +401 -0
  235. data/ext/pg_query/include/port/pg_bitutils.h +226 -0
  236. data/ext/pg_query/include/port/pg_bswap.h +161 -0
  237. data/ext/pg_query/include/port/pg_crc32c.h +101 -0
  238. data/ext/pg_query/include/portability/instr_time.h +256 -0
  239. data/ext/pg_query/include/postgres.h +764 -0
  240. data/ext/pg_query/include/postgres_ext.h +74 -0
  241. data/ext/pg_query/include/postmaster/autovacuum.h +83 -0
  242. data/ext/pg_query/include/postmaster/bgworker.h +161 -0
  243. data/ext/pg_query/include/postmaster/bgworker_internals.h +64 -0
  244. data/ext/pg_query/include/postmaster/bgwriter.h +45 -0
  245. data/ext/pg_query/include/postmaster/fork_process.h +17 -0
  246. data/ext/pg_query/include/postmaster/interrupt.h +32 -0
  247. data/ext/pg_query/include/postmaster/pgarch.h +39 -0
  248. data/ext/pg_query/include/postmaster/postmaster.h +77 -0
  249. data/ext/pg_query/include/postmaster/syslogger.h +98 -0
  250. data/ext/pg_query/include/postmaster/walwriter.h +21 -0
  251. data/ext/pg_query/include/protobuf-c.h +1106 -0
  252. data/ext/pg_query/include/protobuf-c/protobuf-c.h +1106 -0
  253. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +10846 -0
  254. data/ext/pg_query/include/protobuf/pg_query.pb.h +124718 -0
  255. data/ext/pg_query/include/regex/regex.h +184 -0
  256. data/ext/pg_query/include/replication/logicallauncher.h +31 -0
  257. data/ext/pg_query/include/replication/logicalproto.h +110 -0
  258. data/ext/pg_query/include/replication/logicalworker.h +19 -0
  259. data/ext/pg_query/include/replication/origin.h +73 -0
  260. data/ext/pg_query/include/replication/reorderbuffer.h +467 -0
  261. data/ext/pg_query/include/replication/slot.h +219 -0
  262. data/ext/pg_query/include/replication/syncrep.h +115 -0
  263. data/ext/pg_query/include/replication/walreceiver.h +340 -0
  264. data/ext/pg_query/include/replication/walsender.h +74 -0
  265. data/ext/pg_query/include/rewrite/prs2lock.h +46 -0
  266. data/ext/pg_query/include/rewrite/rewriteHandler.h +40 -0
  267. data/ext/pg_query/include/rewrite/rewriteManip.h +87 -0
  268. data/ext/pg_query/include/rewrite/rewriteSupport.h +26 -0
  269. data/ext/pg_query/include/storage/backendid.h +37 -0
  270. data/ext/pg_query/include/storage/block.h +121 -0
  271. data/ext/pg_query/include/storage/buf.h +46 -0
  272. data/ext/pg_query/include/storage/bufmgr.h +292 -0
  273. data/ext/pg_query/include/storage/bufpage.h +459 -0
  274. data/ext/pg_query/include/storage/condition_variable.h +62 -0
  275. data/ext/pg_query/include/storage/dsm.h +61 -0
  276. data/ext/pg_query/include/storage/dsm_impl.h +75 -0
  277. data/ext/pg_query/include/storage/fd.h +168 -0
  278. data/ext/pg_query/include/storage/ipc.h +81 -0
  279. data/ext/pg_query/include/storage/item.h +19 -0
  280. data/ext/pg_query/include/storage/itemid.h +184 -0
  281. data/ext/pg_query/include/storage/itemptr.h +206 -0
  282. data/ext/pg_query/include/storage/large_object.h +100 -0
  283. data/ext/pg_query/include/storage/latch.h +190 -0
  284. data/ext/pg_query/include/storage/lmgr.h +114 -0
  285. data/ext/pg_query/include/storage/lock.h +612 -0
  286. data/ext/pg_query/include/storage/lockdefs.h +59 -0
  287. data/ext/pg_query/include/storage/lwlock.h +232 -0
  288. data/ext/pg_query/include/storage/lwlocknames.h +51 -0
  289. data/ext/pg_query/include/storage/off.h +57 -0
  290. data/ext/pg_query/include/storage/pg_sema.h +61 -0
  291. data/ext/pg_query/include/storage/pg_shmem.h +90 -0
  292. data/ext/pg_query/include/storage/pmsignal.h +94 -0
  293. data/ext/pg_query/include/storage/predicate.h +87 -0
  294. data/ext/pg_query/include/storage/proc.h +333 -0
  295. data/ext/pg_query/include/storage/proclist_types.h +51 -0
  296. data/ext/pg_query/include/storage/procsignal.h +75 -0
  297. data/ext/pg_query/include/storage/relfilenode.h +99 -0
  298. data/ext/pg_query/include/storage/s_lock.h +1047 -0
  299. data/ext/pg_query/include/storage/sharedfileset.h +45 -0
  300. data/ext/pg_query/include/storage/shm_mq.h +85 -0
  301. data/ext/pg_query/include/storage/shm_toc.h +58 -0
  302. data/ext/pg_query/include/storage/shmem.h +81 -0
  303. data/ext/pg_query/include/storage/sinval.h +153 -0
  304. data/ext/pg_query/include/storage/sinvaladt.h +43 -0
  305. data/ext/pg_query/include/storage/smgr.h +109 -0
  306. data/ext/pg_query/include/storage/spin.h +77 -0
  307. data/ext/pg_query/include/storage/standby.h +91 -0
  308. data/ext/pg_query/include/storage/standbydefs.h +74 -0
  309. data/ext/pg_query/include/storage/sync.h +62 -0
  310. data/ext/pg_query/include/tcop/cmdtag.h +58 -0
  311. data/ext/pg_query/include/tcop/cmdtaglist.h +217 -0
  312. data/ext/pg_query/include/tcop/deparse_utility.h +108 -0
  313. data/ext/pg_query/include/tcop/dest.h +149 -0
  314. data/ext/pg_query/include/tcop/fastpath.h +21 -0
  315. data/ext/pg_query/include/tcop/pquery.h +45 -0
  316. data/ext/pg_query/include/tcop/tcopprot.h +89 -0
  317. data/ext/pg_query/include/tcop/utility.h +108 -0
  318. data/ext/pg_query/include/tsearch/ts_cache.h +98 -0
  319. data/ext/pg_query/include/utils/acl.h +312 -0
  320. data/ext/pg_query/include/utils/aclchk_internal.h +45 -0
  321. data/ext/pg_query/include/utils/array.h +458 -0
  322. data/ext/pg_query/include/utils/builtins.h +127 -0
  323. data/ext/pg_query/include/utils/bytea.h +27 -0
  324. data/ext/pg_query/include/utils/catcache.h +231 -0
  325. data/ext/pg_query/include/utils/date.h +90 -0
  326. data/ext/pg_query/include/utils/datetime.h +343 -0
  327. data/ext/pg_query/include/utils/datum.h +68 -0
  328. data/ext/pg_query/include/utils/dsa.h +123 -0
  329. data/ext/pg_query/include/utils/dynahash.h +19 -0
  330. data/ext/pg_query/include/utils/elog.h +439 -0
  331. data/ext/pg_query/include/utils/errcodes.h +352 -0
  332. data/ext/pg_query/include/utils/expandeddatum.h +159 -0
  333. data/ext/pg_query/include/utils/expandedrecord.h +231 -0
  334. data/ext/pg_query/include/utils/float.h +356 -0
  335. data/ext/pg_query/include/utils/fmgroids.h +2657 -0
  336. data/ext/pg_query/include/utils/fmgrprotos.h +2646 -0
  337. data/ext/pg_query/include/utils/fmgrtab.h +48 -0
  338. data/ext/pg_query/include/utils/guc.h +443 -0
  339. data/ext/pg_query/include/utils/guc_tables.h +272 -0
  340. data/ext/pg_query/include/utils/hsearch.h +149 -0
  341. data/ext/pg_query/include/utils/inval.h +64 -0
  342. data/ext/pg_query/include/utils/lsyscache.h +197 -0
  343. data/ext/pg_query/include/utils/memdebug.h +82 -0
  344. data/ext/pg_query/include/utils/memutils.h +225 -0
  345. data/ext/pg_query/include/utils/numeric.h +76 -0
  346. data/ext/pg_query/include/utils/palloc.h +136 -0
  347. data/ext/pg_query/include/utils/partcache.h +102 -0
  348. data/ext/pg_query/include/utils/pg_locale.h +119 -0
  349. data/ext/pg_query/include/utils/pg_lsn.h +29 -0
  350. data/ext/pg_query/include/utils/pidfile.h +56 -0
  351. data/ext/pg_query/include/utils/plancache.h +235 -0
  352. data/ext/pg_query/include/utils/portal.h +241 -0
  353. data/ext/pg_query/include/utils/probes.h +114 -0
  354. data/ext/pg_query/include/utils/ps_status.h +25 -0
  355. data/ext/pg_query/include/utils/queryenvironment.h +74 -0
  356. data/ext/pg_query/include/utils/regproc.h +28 -0
  357. data/ext/pg_query/include/utils/rel.h +644 -0
  358. data/ext/pg_query/include/utils/relcache.h +151 -0
  359. data/ext/pg_query/include/utils/reltrigger.h +81 -0
  360. data/ext/pg_query/include/utils/resowner.h +86 -0
  361. data/ext/pg_query/include/utils/rls.h +50 -0
  362. data/ext/pg_query/include/utils/ruleutils.h +44 -0
  363. data/ext/pg_query/include/utils/sharedtuplestore.h +61 -0
  364. data/ext/pg_query/include/utils/snapmgr.h +158 -0
  365. data/ext/pg_query/include/utils/snapshot.h +206 -0
  366. data/ext/pg_query/include/utils/sortsupport.h +276 -0
  367. data/ext/pg_query/include/utils/syscache.h +219 -0
  368. data/ext/pg_query/include/utils/timeout.h +88 -0
  369. data/ext/pg_query/include/utils/timestamp.h +116 -0
  370. data/ext/pg_query/include/utils/tuplesort.h +277 -0
  371. data/ext/pg_query/include/utils/tuplestore.h +91 -0
  372. data/ext/pg_query/include/utils/typcache.h +202 -0
  373. data/ext/pg_query/include/utils/tzparser.h +39 -0
  374. data/ext/pg_query/include/utils/varlena.h +39 -0
  375. data/ext/pg_query/include/utils/xml.h +84 -0
  376. data/ext/pg_query/include/xxhash.h +5445 -0
  377. data/ext/pg_query/include/xxhash/xxhash.h +5445 -0
  378. data/ext/pg_query/pg_query.c +104 -0
  379. data/ext/pg_query/pg_query.pb-c.c +37628 -0
  380. data/ext/pg_query/pg_query_deparse.c +9959 -0
  381. data/ext/pg_query/pg_query_fingerprint.c +295 -0
  382. data/ext/pg_query/pg_query_fingerprint.h +8 -0
  383. data/ext/pg_query/pg_query_internal.h +24 -0
  384. data/ext/pg_query/pg_query_json_plpgsql.c +738 -0
  385. data/ext/pg_query/pg_query_json_plpgsql.h +9 -0
  386. data/ext/pg_query/pg_query_normalize.c +439 -0
  387. data/ext/pg_query/pg_query_outfuncs.h +10 -0
  388. data/ext/pg_query/pg_query_outfuncs_json.c +297 -0
  389. data/ext/pg_query/pg_query_outfuncs_protobuf.c +237 -0
  390. data/ext/pg_query/pg_query_parse.c +148 -0
  391. data/ext/pg_query/pg_query_parse_plpgsql.c +460 -0
  392. data/ext/pg_query/pg_query_readfuncs.h +11 -0
  393. data/ext/pg_query/pg_query_readfuncs_protobuf.c +142 -0
  394. data/ext/pg_query/pg_query_ruby.c +108 -12
  395. data/ext/pg_query/pg_query_scan.c +173 -0
  396. data/ext/pg_query/pg_query_split.c +221 -0
  397. data/ext/pg_query/protobuf-c.c +3660 -0
  398. data/ext/pg_query/src_backend_catalog_namespace.c +1051 -0
  399. data/ext/pg_query/src_backend_catalog_pg_proc.c +142 -0
  400. data/ext/pg_query/src_backend_commands_define.c +117 -0
  401. data/ext/pg_query/src_backend_libpq_pqcomm.c +651 -0
  402. data/ext/pg_query/src_backend_nodes_bitmapset.c +513 -0
  403. data/ext/pg_query/src_backend_nodes_copyfuncs.c +6013 -0
  404. data/ext/pg_query/src_backend_nodes_equalfuncs.c +4003 -0
  405. data/ext/pg_query/src_backend_nodes_extensible.c +99 -0
  406. data/ext/pg_query/src_backend_nodes_list.c +922 -0
  407. data/ext/pg_query/src_backend_nodes_makefuncs.c +417 -0
  408. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +1363 -0
  409. data/ext/pg_query/src_backend_nodes_value.c +84 -0
  410. data/ext/pg_query/src_backend_parser_gram.c +47456 -0
  411. data/ext/pg_query/src_backend_parser_parse_expr.c +313 -0
  412. data/ext/pg_query/src_backend_parser_parser.c +497 -0
  413. data/ext/pg_query/src_backend_parser_scan.c +7091 -0
  414. data/ext/pg_query/src_backend_parser_scansup.c +160 -0
  415. data/ext/pg_query/src_backend_postmaster_postmaster.c +2230 -0
  416. data/ext/pg_query/src_backend_storage_ipc_ipc.c +192 -0
  417. data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +370 -0
  418. data/ext/pg_query/src_backend_tcop_postgres.c +776 -0
  419. data/ext/pg_query/src_backend_utils_adt_datum.c +326 -0
  420. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +98 -0
  421. data/ext/pg_query/src_backend_utils_adt_format_type.c +136 -0
  422. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +1683 -0
  423. data/ext/pg_query/src_backend_utils_error_assert.c +74 -0
  424. data/ext/pg_query/src_backend_utils_error_elog.c +1748 -0
  425. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +570 -0
  426. data/ext/pg_query/src_backend_utils_hash_dynahash.c +1086 -0
  427. data/ext/pg_query/src_backend_utils_init_globals.c +168 -0
  428. data/ext/pg_query/src_backend_utils_mb_mbutils.c +839 -0
  429. data/ext/pg_query/src_backend_utils_misc_guc.c +1831 -0
  430. data/ext/pg_query/src_backend_utils_mmgr_aset.c +1560 -0
  431. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +1006 -0
  432. data/ext/pg_query/src_common_encnames.c +158 -0
  433. data/ext/pg_query/src_common_keywords.c +39 -0
  434. data/ext/pg_query/src_common_kwlist_d.h +1081 -0
  435. data/ext/pg_query/src_common_kwlookup.c +91 -0
  436. data/ext/pg_query/src_common_psprintf.c +158 -0
  437. data/ext/pg_query/src_common_string.c +86 -0
  438. data/ext/pg_query/src_common_stringinfo.c +336 -0
  439. data/ext/pg_query/src_common_wchar.c +1651 -0
  440. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +1133 -0
  441. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +877 -0
  442. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +6533 -0
  443. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +107 -0
  444. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +123 -0
  445. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +671 -0
  446. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +255 -0
  447. data/ext/pg_query/src_port_erand48.c +127 -0
  448. data/ext/pg_query/src_port_pg_bitutils.c +246 -0
  449. data/ext/pg_query/src_port_pgsleep.c +69 -0
  450. data/ext/pg_query/src_port_pgstrcasecmp.c +83 -0
  451. data/ext/pg_query/src_port_qsort.c +240 -0
  452. data/ext/pg_query/src_port_random.c +31 -0
  453. data/ext/pg_query/src_port_snprintf.c +1449 -0
  454. data/ext/pg_query/src_port_strerror.c +324 -0
  455. data/ext/pg_query/src_port_strnlen.c +39 -0
  456. data/ext/pg_query/xxhash.c +43 -0
  457. data/lib/pg_query.rb +7 -4
  458. data/lib/pg_query/constants.rb +21 -0
  459. data/lib/pg_query/deparse.rb +15 -1581
  460. data/lib/pg_query/filter_columns.rb +88 -85
  461. data/lib/pg_query/fingerprint.rb +122 -87
  462. data/lib/pg_query/json_field_names.rb +1402 -0
  463. data/lib/pg_query/node.rb +31 -0
  464. data/lib/pg_query/param_refs.rb +42 -37
  465. data/lib/pg_query/parse.rb +220 -203
  466. data/lib/pg_query/parse_error.rb +1 -1
  467. data/lib/pg_query/pg_query_pb.rb +3211 -0
  468. data/lib/pg_query/scan.rb +23 -0
  469. data/lib/pg_query/treewalker.rb +24 -40
  470. data/lib/pg_query/truncate.rb +71 -42
  471. data/lib/pg_query/version.rb +2 -2
  472. metadata +472 -11
  473. data/ext/pg_query/pg_query_ruby.h +0 -10
  474. data/lib/pg_query/deep_dup.rb +0 -16
  475. data/lib/pg_query/deparse/alter_table.rb +0 -42
  476. data/lib/pg_query/deparse/interval.rb +0 -105
  477. data/lib/pg_query/deparse/keywords.rb +0 -159
  478. data/lib/pg_query/deparse/rename.rb +0 -41
  479. data/lib/pg_query/legacy_parsetree.rb +0 -109
  480. data/lib/pg_query/node_types.rb +0 -296
@@ -0,0 +1,133 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * libpq.h
4
+ * POSTGRES LIBPQ buffer structure definitions.
5
+ *
6
+ *
7
+ * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
8
+ * Portions Copyright (c) 1994, Regents of the University of California
9
+ *
10
+ * src/include/libpq/libpq.h
11
+ *
12
+ *-------------------------------------------------------------------------
13
+ */
14
+ #ifndef LIBPQ_H
15
+ #define LIBPQ_H
16
+
17
+ #include <netinet/in.h>
18
+
19
+ #include "lib/stringinfo.h"
20
+ #include "libpq/libpq-be.h"
21
+ #include "storage/latch.h"
22
+
23
+
24
+ typedef struct
25
+ {
26
+ void (*comm_reset) (void);
27
+ int (*flush) (void);
28
+ int (*flush_if_writable) (void);
29
+ bool (*is_send_pending) (void);
30
+ int (*putmessage) (char msgtype, const char *s, size_t len);
31
+ void (*putmessage_noblock) (char msgtype, const char *s, size_t len);
32
+ void (*startcopyout) (void);
33
+ void (*endcopyout) (bool errorAbort);
34
+ } PQcommMethods;
35
+
36
+ extern const PGDLLIMPORT PQcommMethods *PqCommMethods;
37
+
38
+ #define pq_comm_reset() (PqCommMethods->comm_reset())
39
+ #define pq_flush() (PqCommMethods->flush())
40
+ #define pq_flush_if_writable() (PqCommMethods->flush_if_writable())
41
+ #define pq_is_send_pending() (PqCommMethods->is_send_pending())
42
+ #define pq_putmessage(msgtype, s, len) \
43
+ (PqCommMethods->putmessage(msgtype, s, len))
44
+ #define pq_putmessage_noblock(msgtype, s, len) \
45
+ (PqCommMethods->putmessage_noblock(msgtype, s, len))
46
+ #define pq_startcopyout() (PqCommMethods->startcopyout())
47
+ #define pq_endcopyout(errorAbort) (PqCommMethods->endcopyout(errorAbort))
48
+
49
+ /*
50
+ * External functions.
51
+ */
52
+
53
+ /*
54
+ * prototypes for functions in pqcomm.c
55
+ */
56
+ extern WaitEventSet *FeBeWaitSet;
57
+
58
+ extern int StreamServerPort(int family, const char *hostName,
59
+ unsigned short portNumber, const char *unixSocketDir,
60
+ pgsocket ListenSocket[], int MaxListen);
61
+ extern int StreamConnection(pgsocket server_fd, Port *port);
62
+ extern void StreamClose(pgsocket sock);
63
+ extern void TouchSocketFiles(void);
64
+ extern void RemoveSocketFiles(void);
65
+ extern void pq_init(void);
66
+ extern int pq_getbytes(char *s, size_t len);
67
+ extern int pq_getstring(StringInfo s);
68
+ extern void pq_startmsgread(void);
69
+ extern void pq_endmsgread(void);
70
+ extern bool pq_is_reading_msg(void);
71
+ extern int pq_getmessage(StringInfo s, int maxlen);
72
+ extern int pq_getbyte(void);
73
+ extern int pq_peekbyte(void);
74
+ extern int pq_getbyte_if_available(unsigned char *c);
75
+ extern int pq_putbytes(const char *s, size_t len);
76
+
77
+ /*
78
+ * prototypes for functions in be-secure.c
79
+ */
80
+ extern char *ssl_library;
81
+ extern char *ssl_cert_file;
82
+ extern char *ssl_key_file;
83
+ extern char *ssl_ca_file;
84
+ extern char *ssl_crl_file;
85
+ extern char *ssl_dh_params_file;
86
+ extern PGDLLIMPORT char *ssl_passphrase_command;
87
+ extern PGDLLIMPORT bool ssl_passphrase_command_supports_reload;
88
+ #ifdef USE_SSL
89
+ extern bool ssl_loaded_verify_locations;
90
+ #endif
91
+
92
+ extern int secure_initialize(bool isServerStart);
93
+ extern bool secure_loaded_verify_locations(void);
94
+ extern void secure_destroy(void);
95
+ extern int secure_open_server(Port *port);
96
+ extern void secure_close(Port *port);
97
+ extern ssize_t secure_read(Port *port, void *ptr, size_t len);
98
+ extern ssize_t secure_write(Port *port, void *ptr, size_t len);
99
+ extern ssize_t secure_raw_read(Port *port, void *ptr, size_t len);
100
+ extern ssize_t secure_raw_write(Port *port, const void *ptr, size_t len);
101
+
102
+ /*
103
+ * prototypes for functions in be-secure-gssapi.c
104
+ */
105
+ #ifdef ENABLE_GSS
106
+ extern ssize_t secure_open_gssapi(Port *port);
107
+ #endif
108
+
109
+ /* GUCs */
110
+ extern char *SSLCipherSuites;
111
+ extern char *SSLECDHCurve;
112
+ extern bool SSLPreferServerCiphers;
113
+ extern int ssl_min_protocol_version;
114
+ extern int ssl_max_protocol_version;
115
+
116
+ enum ssl_protocol_versions
117
+ {
118
+ PG_TLS_ANY = 0,
119
+ PG_TLS1_VERSION,
120
+ PG_TLS1_1_VERSION,
121
+ PG_TLS1_2_VERSION,
122
+ PG_TLS1_3_VERSION,
123
+ };
124
+
125
+ /*
126
+ * prototypes for functions in be-secure-common.c
127
+ */
128
+ extern int run_ssl_passphrase_command(const char *prompt, bool is_server_start,
129
+ char *buf, int size);
130
+ extern bool check_ssl_key_file_permissions(const char *ssl_key_file,
131
+ bool isServerStart);
132
+
133
+ #endif /* LIBPQ_H */
@@ -0,0 +1,208 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * pqcomm.h
4
+ * Definitions common to frontends and backends.
5
+ *
6
+ * NOTE: for historical reasons, this does not correspond to pqcomm.c.
7
+ * pqcomm.c's routines are declared in libpq.h.
8
+ *
9
+ * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
10
+ * Portions Copyright (c) 1994, Regents of the University of California
11
+ *
12
+ * src/include/libpq/pqcomm.h
13
+ *
14
+ *-------------------------------------------------------------------------
15
+ */
16
+ #ifndef PQCOMM_H
17
+ #define PQCOMM_H
18
+
19
+ #include <sys/socket.h>
20
+ #include <netdb.h>
21
+ #ifdef HAVE_SYS_UN_H
22
+ #include <sys/un.h>
23
+ #endif
24
+ #include <netinet/in.h>
25
+
26
+ #ifdef HAVE_STRUCT_SOCKADDR_STORAGE
27
+
28
+ #ifndef HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY
29
+ #ifdef HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY
30
+ #define ss_family __ss_family
31
+ #else
32
+ #error struct sockaddr_storage does not provide an ss_family member
33
+ #endif
34
+ #endif
35
+
36
+ #ifdef HAVE_STRUCT_SOCKADDR_STORAGE___SS_LEN
37
+ #define ss_len __ss_len
38
+ #define HAVE_STRUCT_SOCKADDR_STORAGE_SS_LEN 1
39
+ #endif
40
+ #else /* !HAVE_STRUCT_SOCKADDR_STORAGE */
41
+
42
+ /* Define a struct sockaddr_storage if we don't have one. */
43
+
44
+ struct sockaddr_storage
45
+ {
46
+ union
47
+ {
48
+ struct sockaddr sa; /* get the system-dependent fields */
49
+ int64 ss_align; /* ensures struct is properly aligned */
50
+ char ss_pad[128]; /* ensures struct has desired size */
51
+ } ss_stuff;
52
+ };
53
+
54
+ #define ss_family ss_stuff.sa.sa_family
55
+ /* It should have an ss_len field if sockaddr has sa_len. */
56
+ #ifdef HAVE_STRUCT_SOCKADDR_SA_LEN
57
+ #define ss_len ss_stuff.sa.sa_len
58
+ #define HAVE_STRUCT_SOCKADDR_STORAGE_SS_LEN 1
59
+ #endif
60
+ #endif /* HAVE_STRUCT_SOCKADDR_STORAGE */
61
+
62
+ typedef struct
63
+ {
64
+ struct sockaddr_storage addr;
65
+ ACCEPT_TYPE_ARG3 salen;
66
+ } SockAddr;
67
+
68
+ /* Configure the UNIX socket location for the well known port. */
69
+
70
+ #define UNIXSOCK_PATH(path, port, sockdir) \
71
+ (AssertMacro(sockdir), \
72
+ AssertMacro(*(sockdir) != '\0'), \
73
+ snprintf(path, sizeof(path), "%s/.s.PGSQL.%d", \
74
+ (sockdir), (port)))
75
+
76
+ /*
77
+ * The maximum workable length of a socket path is what will fit into
78
+ * struct sockaddr_un. This is usually only 100 or so bytes :-(.
79
+ *
80
+ * For consistency, always pass a MAXPGPATH-sized buffer to UNIXSOCK_PATH(),
81
+ * then complain if the resulting string is >= UNIXSOCK_PATH_BUFLEN bytes.
82
+ * (Because the standard API for getaddrinfo doesn't allow it to complain in
83
+ * a useful way when the socket pathname is too long, we have to test for
84
+ * this explicitly, instead of just letting the subroutine return an error.)
85
+ */
86
+ #define UNIXSOCK_PATH_BUFLEN sizeof(((struct sockaddr_un *) NULL)->sun_path)
87
+
88
+
89
+ /*
90
+ * These manipulate the frontend/backend protocol version number.
91
+ *
92
+ * The major number should be incremented for incompatible changes. The minor
93
+ * number should be incremented for compatible changes (eg. additional
94
+ * functionality).
95
+ *
96
+ * If a backend supports version m.n of the protocol it must actually support
97
+ * versions m.[0..n]. Backend support for version m-1 can be dropped after a
98
+ * `reasonable' length of time.
99
+ *
100
+ * A frontend isn't required to support anything other than the current
101
+ * version.
102
+ */
103
+
104
+ #define PG_PROTOCOL_MAJOR(v) ((v) >> 16)
105
+ #define PG_PROTOCOL_MINOR(v) ((v) & 0x0000ffff)
106
+ #define PG_PROTOCOL(m,n) (((m) << 16) | (n))
107
+
108
+ /* The earliest and latest frontend/backend protocol version supported. */
109
+
110
+ #define PG_PROTOCOL_EARLIEST PG_PROTOCOL(2,0)
111
+ #define PG_PROTOCOL_LATEST PG_PROTOCOL(3,0)
112
+
113
+ typedef uint32 ProtocolVersion; /* FE/BE protocol version number */
114
+
115
+ typedef ProtocolVersion MsgType;
116
+
117
+
118
+ /*
119
+ * Packet lengths are 4 bytes in network byte order.
120
+ *
121
+ * The initial length is omitted from the packet layouts appearing below.
122
+ */
123
+
124
+ typedef uint32 PacketLen;
125
+
126
+
127
+ /*
128
+ * Old-style startup packet layout with fixed-width fields. This is used in
129
+ * protocol 1.0 and 2.0, but not in later versions. Note that the fields
130
+ * in this layout are '\0' terminated only if there is room.
131
+ */
132
+
133
+ #define SM_DATABASE 64
134
+ #define SM_USER 32
135
+ /* We append database name if db_user_namespace true. */
136
+ #define SM_DATABASE_USER (SM_DATABASE+SM_USER+1) /* +1 for @ */
137
+ #define SM_OPTIONS 64
138
+ #define SM_UNUSED 64
139
+ #define SM_TTY 64
140
+
141
+ typedef struct StartupPacket
142
+ {
143
+ ProtocolVersion protoVersion; /* Protocol version */
144
+ char database[SM_DATABASE]; /* Database name */
145
+ /* Db_user_namespace appends dbname */
146
+ char user[SM_USER]; /* User name */
147
+ char options[SM_OPTIONS]; /* Optional additional args */
148
+ char unused[SM_UNUSED]; /* Unused */
149
+ char tty[SM_TTY]; /* Tty for debug output */
150
+ } StartupPacket;
151
+
152
+ extern bool Db_user_namespace;
153
+
154
+ /*
155
+ * In protocol 3.0 and later, the startup packet length is not fixed, but
156
+ * we set an arbitrary limit on it anyway. This is just to prevent simple
157
+ * denial-of-service attacks via sending enough data to run the server
158
+ * out of memory.
159
+ */
160
+ #define MAX_STARTUP_PACKET_LENGTH 10000
161
+
162
+
163
+ /* These are the authentication request codes sent by the backend. */
164
+
165
+ #define AUTH_REQ_OK 0 /* User is authenticated */
166
+ #define AUTH_REQ_KRB4 1 /* Kerberos V4. Not supported any more. */
167
+ #define AUTH_REQ_KRB5 2 /* Kerberos V5. Not supported any more. */
168
+ #define AUTH_REQ_PASSWORD 3 /* Password */
169
+ #define AUTH_REQ_CRYPT 4 /* crypt password. Not supported any more. */
170
+ #define AUTH_REQ_MD5 5 /* md5 password */
171
+ #define AUTH_REQ_SCM_CREDS 6 /* transfer SCM credentials */
172
+ #define AUTH_REQ_GSS 7 /* GSSAPI without wrap() */
173
+ #define AUTH_REQ_GSS_CONT 8 /* Continue GSS exchanges */
174
+ #define AUTH_REQ_SSPI 9 /* SSPI negotiate without wrap() */
175
+ #define AUTH_REQ_SASL 10 /* Begin SASL authentication */
176
+ #define AUTH_REQ_SASL_CONT 11 /* Continue SASL authentication */
177
+ #define AUTH_REQ_SASL_FIN 12 /* Final SASL message */
178
+
179
+ typedef uint32 AuthRequest;
180
+
181
+
182
+ /*
183
+ * A client can also send a cancel-current-operation request to the postmaster.
184
+ * This is uglier than sending it directly to the client's backend, but it
185
+ * avoids depending on out-of-band communication facilities.
186
+ *
187
+ * The cancel request code must not match any protocol version number
188
+ * we're ever likely to use. This random choice should do.
189
+ */
190
+ #define CANCEL_REQUEST_CODE PG_PROTOCOL(1234,5678)
191
+
192
+ typedef struct CancelRequestPacket
193
+ {
194
+ /* Note that each field is stored in network byte order! */
195
+ MsgType cancelRequestCode; /* code to identify a cancel request */
196
+ uint32 backendPID; /* PID of client's backend */
197
+ uint32 cancelAuthCode; /* secret key to authorize cancel */
198
+ } CancelRequestPacket;
199
+
200
+
201
+ /*
202
+ * A client can also start by sending a SSL or GSSAPI negotiation request to
203
+ * get a secure channel.
204
+ */
205
+ #define NEGOTIATE_SSL_CODE PG_PROTOCOL(1234,5679)
206
+ #define NEGOTIATE_GSS_CODE PG_PROTOCOL(1234,5680)
207
+
208
+ #endif /* PQCOMM_H */
@@ -0,0 +1,210 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * pqformat.h
4
+ * Definitions for formatting and parsing frontend/backend messages
5
+ *
6
+ * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1994, Regents of the University of California
8
+ *
9
+ * src/include/libpq/pqformat.h
10
+ *
11
+ *-------------------------------------------------------------------------
12
+ */
13
+ #ifndef PQFORMAT_H
14
+ #define PQFORMAT_H
15
+
16
+ #include "lib/stringinfo.h"
17
+ #include "mb/pg_wchar.h"
18
+ #include "port/pg_bswap.h"
19
+
20
+ extern void pq_beginmessage(StringInfo buf, char msgtype);
21
+ extern void pq_beginmessage_reuse(StringInfo buf, char msgtype);
22
+ extern void pq_endmessage(StringInfo buf);
23
+ extern void pq_endmessage_reuse(StringInfo buf);
24
+
25
+ extern void pq_sendbytes(StringInfo buf, const char *data, int datalen);
26
+ extern void pq_sendcountedtext(StringInfo buf, const char *str, int slen,
27
+ bool countincludesself);
28
+ extern void pq_sendtext(StringInfo buf, const char *str, int slen);
29
+ extern void pq_sendstring(StringInfo buf, const char *str);
30
+ extern void pq_send_ascii_string(StringInfo buf, const char *str);
31
+ extern void pq_sendfloat4(StringInfo buf, float4 f);
32
+ extern void pq_sendfloat8(StringInfo buf, float8 f);
33
+
34
+ /*
35
+ * Append a [u]int8 to a StringInfo buffer, which already has enough space
36
+ * preallocated.
37
+ *
38
+ * The use of pg_restrict allows the compiler to optimize the code based on
39
+ * the assumption that buf, buf->len, buf->data and *buf->data don't
40
+ * overlap. Without the annotation buf->len etc cannot be kept in a register
41
+ * over subsequent pq_writeintN calls.
42
+ *
43
+ * The use of StringInfoData * rather than StringInfo is due to MSVC being
44
+ * overly picky and demanding a * before a restrict.
45
+ */
46
+ static inline void
47
+ pq_writeint8(StringInfoData *pg_restrict buf, uint8 i)
48
+ {
49
+ uint8 ni = i;
50
+
51
+ Assert(buf->len + (int) sizeof(uint8) <= buf->maxlen);
52
+ memcpy((char *pg_restrict) (buf->data + buf->len), &ni, sizeof(uint8));
53
+ buf->len += sizeof(uint8);
54
+ }
55
+
56
+ /*
57
+ * Append a [u]int16 to a StringInfo buffer, which already has enough space
58
+ * preallocated.
59
+ */
60
+ static inline void
61
+ pq_writeint16(StringInfoData *pg_restrict buf, uint16 i)
62
+ {
63
+ uint16 ni = pg_hton16(i);
64
+
65
+ Assert(buf->len + (int) sizeof(uint16) <= buf->maxlen);
66
+ memcpy((char *pg_restrict) (buf->data + buf->len), &ni, sizeof(uint16));
67
+ buf->len += sizeof(uint16);
68
+ }
69
+
70
+ /*
71
+ * Append a [u]int32 to a StringInfo buffer, which already has enough space
72
+ * preallocated.
73
+ */
74
+ static inline void
75
+ pq_writeint32(StringInfoData *pg_restrict buf, uint32 i)
76
+ {
77
+ uint32 ni = pg_hton32(i);
78
+
79
+ Assert(buf->len + (int) sizeof(uint32) <= buf->maxlen);
80
+ memcpy((char *pg_restrict) (buf->data + buf->len), &ni, sizeof(uint32));
81
+ buf->len += sizeof(uint32);
82
+ }
83
+
84
+ /*
85
+ * Append a [u]int64 to a StringInfo buffer, which already has enough space
86
+ * preallocated.
87
+ */
88
+ static inline void
89
+ pq_writeint64(StringInfoData *pg_restrict buf, uint64 i)
90
+ {
91
+ uint64 ni = pg_hton64(i);
92
+
93
+ Assert(buf->len + (int) sizeof(uint64) <= buf->maxlen);
94
+ memcpy((char *pg_restrict) (buf->data + buf->len), &ni, sizeof(uint64));
95
+ buf->len += sizeof(uint64);
96
+ }
97
+
98
+ /*
99
+ * Append a null-terminated text string (with conversion) to a buffer with
100
+ * preallocated space.
101
+ *
102
+ * NB: The pre-allocated space needs to be sufficient for the string after
103
+ * converting to client encoding.
104
+ *
105
+ * NB: passed text string must be null-terminated, and so is the data
106
+ * sent to the frontend.
107
+ */
108
+ static inline void
109
+ pq_writestring(StringInfoData *pg_restrict buf, const char *pg_restrict str)
110
+ {
111
+ int slen = strlen(str);
112
+ char *p;
113
+
114
+ p = pg_server_to_client(str, slen);
115
+ if (p != str) /* actual conversion has been done? */
116
+ slen = strlen(p);
117
+
118
+ Assert(buf->len + slen + 1 <= buf->maxlen);
119
+
120
+ memcpy(((char *pg_restrict) buf->data + buf->len), p, slen + 1);
121
+ buf->len += slen + 1;
122
+
123
+ if (p != str)
124
+ pfree(p);
125
+ }
126
+
127
+ /* append a binary [u]int8 to a StringInfo buffer */
128
+ static inline void
129
+ pq_sendint8(StringInfo buf, uint8 i)
130
+ {
131
+ enlargeStringInfo(buf, sizeof(uint8));
132
+ pq_writeint8(buf, i);
133
+ }
134
+
135
+ /* append a binary [u]int16 to a StringInfo buffer */
136
+ static inline void
137
+ pq_sendint16(StringInfo buf, uint16 i)
138
+ {
139
+ enlargeStringInfo(buf, sizeof(uint16));
140
+ pq_writeint16(buf, i);
141
+ }
142
+
143
+ /* append a binary [u]int32 to a StringInfo buffer */
144
+ static inline void
145
+ pq_sendint32(StringInfo buf, uint32 i)
146
+ {
147
+ enlargeStringInfo(buf, sizeof(uint32));
148
+ pq_writeint32(buf, i);
149
+ }
150
+
151
+ /* append a binary [u]int64 to a StringInfo buffer */
152
+ static inline void
153
+ pq_sendint64(StringInfo buf, uint64 i)
154
+ {
155
+ enlargeStringInfo(buf, sizeof(uint64));
156
+ pq_writeint64(buf, i);
157
+ }
158
+
159
+ /* append a binary byte to a StringInfo buffer */
160
+ static inline void
161
+ pq_sendbyte(StringInfo buf, uint8 byt)
162
+ {
163
+ pq_sendint8(buf, byt);
164
+ }
165
+
166
+ /*
167
+ * Append a binary integer to a StringInfo buffer
168
+ *
169
+ * This function is deprecated; prefer use of the functions above.
170
+ */
171
+ static inline void
172
+ pq_sendint(StringInfo buf, uint32 i, int b)
173
+ {
174
+ switch (b)
175
+ {
176
+ case 1:
177
+ pq_sendint8(buf, (uint8) i);
178
+ break;
179
+ case 2:
180
+ pq_sendint16(buf, (uint16) i);
181
+ break;
182
+ case 4:
183
+ pq_sendint32(buf, (uint32) i);
184
+ break;
185
+ default:
186
+ elog(ERROR, "unsupported integer size %d", b);
187
+ break;
188
+ }
189
+ }
190
+
191
+
192
+ extern void pq_begintypsend(StringInfo buf);
193
+ extern bytea *pq_endtypsend(StringInfo buf);
194
+
195
+ extern void pq_puttextmessage(char msgtype, const char *str);
196
+ extern void pq_putemptymessage(char msgtype);
197
+
198
+ extern int pq_getmsgbyte(StringInfo msg);
199
+ extern unsigned int pq_getmsgint(StringInfo msg, int b);
200
+ extern int64 pq_getmsgint64(StringInfo msg);
201
+ extern float4 pq_getmsgfloat4(StringInfo msg);
202
+ extern float8 pq_getmsgfloat8(StringInfo msg);
203
+ extern const char *pq_getmsgbytes(StringInfo msg, int datalen);
204
+ extern void pq_copymsgbytes(StringInfo msg, char *buf, int datalen);
205
+ extern char *pq_getmsgtext(StringInfo msg, int rawbytes, int *nbytes);
206
+ extern const char *pq_getmsgstring(StringInfo msg);
207
+ extern const char *pq_getmsgrawstring(StringInfo msg);
208
+ extern void pq_getmsgend(StringInfo msg);
209
+
210
+ #endif /* PQFORMAT_H */