yb_ddl_parser 0.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 (926) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +177 -0
  3. data/LICENSES/Apache-2.0.txt +4 -0
  4. data/LICENSES/PostgreSQL.txt +24 -0
  5. data/README.md +93 -0
  6. data/THIRD_PARTY_NOTICES.md +47 -0
  7. data/VERSION +1 -0
  8. data/ext/yb_ddl_parser/extconf.rb +41 -0
  9. data/ext/yb_ddl_parser/vendor/compat/postgres/pg_config.h +1021 -0
  10. data/ext/yb_ddl_parser/vendor/compat/postgres/pg_config_ext.h +8 -0
  11. data/ext/yb_ddl_parser/vendor/compat/postgres/pg_config_os.h +8 -0
  12. data/ext/yb_ddl_parser/vendor/compat/postgres/yb/yql/pggate/util/ybc_util.h +53 -0
  13. data/ext/yb_ddl_parser/vendor/compat/postgres/yb/yql/pggate/ybc_dist_trace.h +12 -0
  14. data/ext/yb_ddl_parser/vendor/compat/postgres/yb/yql/pggate/ybc_gflags.h +17 -0
  15. data/ext/yb_ddl_parser/vendor/compat/postgres/yb/yql/pggate/ybc_pg_typedefs.h +184 -0
  16. data/ext/yb_ddl_parser/vendor/compat/postgres/yb/yql/pggate/ybc_pggate.h +6 -0
  17. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/backend/nodes/list.c +1676 -0
  18. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/backend/nodes/makefuncs.c +824 -0
  19. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/backend/nodes/nodes.c +31 -0
  20. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/backend/nodes/outfuncs.c +4948 -0
  21. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/backend/nodes/value.c +83 -0
  22. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/backend/parser/gram.c +52142 -0
  23. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/backend/parser/gram.h +1135 -0
  24. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/backend/parser/parser.c +501 -0
  25. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/backend/parser/scan.c +9319 -0
  26. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/backend/parser/scansup.c +127 -0
  27. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/common/keywords.c +48 -0
  28. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/common/kwlist_d.h +1128 -0
  29. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/common/kwlookup.c +85 -0
  30. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/amapi.h +399 -0
  31. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/amvalidate.h +40 -0
  32. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/attmap.h +53 -0
  33. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/attnum.h +64 -0
  34. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/brin.h +55 -0
  35. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/brin_internal.h +115 -0
  36. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/brin_page.h +96 -0
  37. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/brin_pageops.h +38 -0
  38. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/brin_revmap.h +41 -0
  39. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/brin_tuple.h +112 -0
  40. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/brin_xlog.h +151 -0
  41. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/bufmask.h +32 -0
  42. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/clog.h +63 -0
  43. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/commit_ts.h +74 -0
  44. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/detoast.h +82 -0
  45. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/genam.h +267 -0
  46. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/generic_xlog.h +45 -0
  47. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/gin.h +78 -0
  48. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/gin_private.h +500 -0
  49. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/ginblock.h +346 -0
  50. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/ginxlog.h +216 -0
  51. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/gist.h +248 -0
  52. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/gist_private.h +571 -0
  53. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/gistscan.h +24 -0
  54. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/gistxlog.h +114 -0
  55. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/hash.h +485 -0
  56. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/hash_xlog.h +267 -0
  57. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/heapam.h +242 -0
  58. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/heapam_xlog.h +420 -0
  59. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/heaptoast.h +151 -0
  60. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/hio.h +43 -0
  61. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/htup.h +90 -0
  62. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/htup_details.h +812 -0
  63. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/itup.h +181 -0
  64. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/multixact.h +164 -0
  65. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/nbtree.h +1293 -0
  66. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/nbtxlog.h +351 -0
  67. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/parallel.h +82 -0
  68. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/printsimple.h +23 -0
  69. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/printtup.h +35 -0
  70. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/relation.h +28 -0
  71. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/reloptions.h +275 -0
  72. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/relscan.h +242 -0
  73. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/rewriteheap.h +57 -0
  74. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/rmgr.h +62 -0
  75. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/rmgrlist.h +49 -0
  76. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/sdir.h +58 -0
  77. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/session.h +44 -0
  78. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/skey.h +229 -0
  79. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/slru.h +174 -0
  80. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/spgist.h +229 -0
  81. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/spgist_private.h +549 -0
  82. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/spgxlog.h +257 -0
  83. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/stratnum.h +85 -0
  84. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/subtrans.h +29 -0
  85. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/syncscan.h +25 -0
  86. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/sysattr.h +45 -0
  87. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/table.h +28 -0
  88. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/tableam.h +2127 -0
  89. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/timeline.h +44 -0
  90. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/toast_compression.h +73 -0
  91. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/toast_helper.h +116 -0
  92. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/toast_internals.h +63 -0
  93. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/transam.h +403 -0
  94. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/tsmapi.h +82 -0
  95. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/tupconvert.h +54 -0
  96. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/tupdesc.h +154 -0
  97. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/tupdesc_details.h +28 -0
  98. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/tupmacs.h +247 -0
  99. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/twophase.h +65 -0
  100. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/twophase_rmgr.h +40 -0
  101. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/valid.h +69 -0
  102. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/visibilitymap.h +42 -0
  103. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/visibilitymapdefs.h +25 -0
  104. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/xact.h +586 -0
  105. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/xlog.h +305 -0
  106. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/xlog_internal.h +366 -0
  107. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/xlogarchive.h +35 -0
  108. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/xlogdefs.h +101 -0
  109. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/xloginsert.h +66 -0
  110. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/xlogprefetcher.h +55 -0
  111. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/xlogreader.h +450 -0
  112. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/xlogrecord.h +236 -0
  113. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/xlogrecovery.h +157 -0
  114. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/xlogstats.h +43 -0
  115. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/xlogutils.h +118 -0
  116. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/yb_pg_inherits_scan.h +36 -0
  117. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/yb_scan.h +421 -0
  118. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/yb_sys_scan_base.h +41 -0
  119. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/ybgin.h +75 -0
  120. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/access/ybgin_private.h +51 -0
  121. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/backup/backup_manifest.h +54 -0
  122. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/backup/basebackup.h +39 -0
  123. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/backup/basebackup_sink.h +301 -0
  124. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/backup/basebackup_target.h +66 -0
  125. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/bootstrap/bootstrap.h +62 -0
  126. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/bootstrap/yb_bootstrap.h +44 -0
  127. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/c.h +1424 -0
  128. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/binary_upgrade.h +42 -0
  129. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/catalog.h +70 -0
  130. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/catversion.h +59 -0
  131. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/dependency.h +296 -0
  132. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/genbki.h +143 -0
  133. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/heap.h +165 -0
  134. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/index.h +268 -0
  135. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/indexing.h +57 -0
  136. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/namespace.h +190 -0
  137. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/objectaccess.h +265 -0
  138. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/objectaddress.h +93 -0
  139. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/partition.h +34 -0
  140. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_aggregate.h +180 -0
  141. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_aggregate_d.h +78 -0
  142. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_am.h +63 -0
  143. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_am_d.h +49 -0
  144. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_amop.h +102 -0
  145. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_amop_d.h +44 -0
  146. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_amproc.h +73 -0
  147. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_amproc_d.h +35 -0
  148. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_attrdef.h +70 -0
  149. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_attrdef_d.h +33 -0
  150. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_attribute.h +221 -0
  151. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_attribute_d.h +62 -0
  152. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_auth_members.h +48 -0
  153. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_auth_members_d.h +34 -0
  154. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_authid.h +63 -0
  155. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_authid_d.h +60 -0
  156. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_cast.h +102 -0
  157. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_cast_d.h +64 -0
  158. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_class.h +240 -0
  159. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_class_d.h +142 -0
  160. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_collation.h +98 -0
  161. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_collation_d.h +62 -0
  162. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_constraint.h +276 -0
  163. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_constraint_d.h +73 -0
  164. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_control.h +250 -0
  165. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_conversion.h +75 -0
  166. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_conversion_d.h +38 -0
  167. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_database.h +121 -0
  168. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_database_d.h +51 -0
  169. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_db_role_setting.h +61 -0
  170. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_db_role_setting_d.h +33 -0
  171. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_default_acl.h +73 -0
  172. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_default_acl_d.h +47 -0
  173. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_depend.h +77 -0
  174. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_depend_d.h +36 -0
  175. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_description.h +73 -0
  176. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_description_d.h +32 -0
  177. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_enum.h +66 -0
  178. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_enum_d.h +34 -0
  179. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_event_trigger.h +57 -0
  180. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_event_trigger_d.h +36 -0
  181. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_extension.h +59 -0
  182. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_extension_d.h +37 -0
  183. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_foreign_data_wrapper.h +58 -0
  184. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_foreign_data_wrapper_d.h +36 -0
  185. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_foreign_server.h +55 -0
  186. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_foreign_server_d.h +37 -0
  187. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_foreign_table.h +49 -0
  188. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_foreign_table_d.h +31 -0
  189. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_index.h +93 -0
  190. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_index_d.h +62 -0
  191. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_inherits.h +66 -0
  192. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_inherits_d.h +33 -0
  193. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_init_privs.h +83 -0
  194. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_init_privs_d.h +33 -0
  195. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_language.h +72 -0
  196. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_language_d.h +41 -0
  197. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_largeobject.h +53 -0
  198. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_largeobject_d.h +31 -0
  199. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_largeobject_metadata.h +51 -0
  200. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_largeobject_metadata_d.h +31 -0
  201. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_namespace.h +64 -0
  202. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_namespace_d.h +36 -0
  203. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_opclass.h +88 -0
  204. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_opclass_d.h +65 -0
  205. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_operator.h +107 -0
  206. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_operator_d.h +142 -0
  207. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_opfamily.h +63 -0
  208. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_opfamily_d.h +59 -0
  209. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_parameter_acl.h +60 -0
  210. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_parameter_acl_d.h +34 -0
  211. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_partitioned_table.h +74 -0
  212. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_partitioned_table_d.h +36 -0
  213. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_policy.h +58 -0
  214. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_policy_d.h +37 -0
  215. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_proc.h +220 -0
  216. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_proc_d.h +101 -0
  217. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_publication.h +168 -0
  218. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_publication_d.h +38 -0
  219. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_publication_namespace.h +47 -0
  220. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_publication_namespace_d.h +32 -0
  221. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_publication_rel.h +54 -0
  222. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_publication_rel_d.h +35 -0
  223. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_range.h +72 -0
  224. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_range_d.h +36 -0
  225. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_replication_origin.h +62 -0
  226. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_replication_origin_d.h +33 -0
  227. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_rewrite.h +59 -0
  228. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_rewrite_d.h +37 -0
  229. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_seclabel.h +45 -0
  230. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_seclabel_d.h +33 -0
  231. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_sequence.h +44 -0
  232. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_sequence_d.h +36 -0
  233. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_shdepend.h +78 -0
  234. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_shdepend_d.h +36 -0
  235. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_shdescription.h +65 -0
  236. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_shdescription_d.h +33 -0
  237. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_shseclabel.h +46 -0
  238. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_shseclabel_d.h +35 -0
  239. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_statistic.h +282 -0
  240. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_statistic_d.h +195 -0
  241. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_statistic_ext.h +88 -0
  242. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_statistic_ext_d.h +45 -0
  243. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_statistic_ext_data.h +60 -0
  244. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_statistic_ext_data_d.h +34 -0
  245. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_subscription.h +131 -0
  246. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_subscription_d.h +46 -0
  247. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_subscription_rel.h +94 -0
  248. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_subscription_rel_d.h +51 -0
  249. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_tablespace.h +55 -0
  250. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_tablespace_d.h +38 -0
  251. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_transform.h +48 -0
  252. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_transform_d.h +34 -0
  253. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_trigger.h +153 -0
  254. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_trigger_d.h +109 -0
  255. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_ts_config.h +53 -0
  256. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_ts_config_d.h +34 -0
  257. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_ts_config_map.h +49 -0
  258. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_ts_config_map_d.h +32 -0
  259. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_ts_dict.h +59 -0
  260. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_ts_dict_d.h +35 -0
  261. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_ts_parser.h +60 -0
  262. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_ts_parser_d.h +37 -0
  263. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_ts_template.h +51 -0
  264. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_ts_template_d.h +34 -0
  265. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_type.h +411 -0
  266. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_type_d.h +324 -0
  267. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_user_mapping.h +55 -0
  268. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_user_mapping_d.h +33 -0
  269. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_yb_catalog_version.h +53 -0
  270. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_yb_catalog_version_d.h +32 -0
  271. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_yb_invalidation_messages.h +55 -0
  272. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_yb_invalidation_messages_d.h +33 -0
  273. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_yb_logical_client_version.h +46 -0
  274. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_yb_logical_client_version_d.h +31 -0
  275. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_yb_migration.h +58 -0
  276. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_yb_migration_d.h +32 -0
  277. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_yb_profile.h +47 -0
  278. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_yb_profile_d.h +34 -0
  279. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_yb_role_profile.h +58 -0
  280. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_yb_role_profile_d.h +35 -0
  281. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_yb_tablegroup.h +50 -0
  282. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/pg_yb_tablegroup_d.h +35 -0
  283. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/schemapg.h +276 -0
  284. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/storage.h +50 -0
  285. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/storage_xlog.h +59 -0
  286. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/system_fk_info.h +253 -0
  287. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/toasting.h +30 -0
  288. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/yb_catalog_version.h +65 -0
  289. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/yb_logical_client_version.h +40 -0
  290. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/yb_oid_assignment.h +39 -0
  291. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/catalog/yb_type.h +68 -0
  292. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/alter.h +35 -0
  293. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/async.h +62 -0
  294. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/cluster.h +55 -0
  295. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/collationcmds.h +25 -0
  296. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/comment.h +45 -0
  297. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/conversioncmds.h +23 -0
  298. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/copy.h +120 -0
  299. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/copyfrom_internal.h +176 -0
  300. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/createas.h +34 -0
  301. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/dbcommands.h +36 -0
  302. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/dbcommands_xlog.h +60 -0
  303. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/defrem.h +169 -0
  304. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/discard.h +20 -0
  305. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/event_trigger.h +96 -0
  306. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/explain.h +159 -0
  307. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/extension.h +55 -0
  308. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/lockcmds.h +24 -0
  309. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/matview.h +34 -0
  310. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/policy.h +41 -0
  311. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/portalcmds.h +34 -0
  312. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/prepare.h +62 -0
  313. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/proclang.h +23 -0
  314. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/progress.h +173 -0
  315. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/publicationcmds.h +39 -0
  316. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/schemacmds.h +29 -0
  317. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/seclabel.h +34 -0
  318. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/sequence.h +70 -0
  319. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/subscriptioncmds.h +29 -0
  320. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/tablecmds.h +108 -0
  321. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/tablespace.h +82 -0
  322. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/trigger.h +323 -0
  323. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/typecmds.h +61 -0
  324. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/user.h +37 -0
  325. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/vacuum.h +340 -0
  326. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/variable.h +50 -0
  327. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/view.h +25 -0
  328. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/yb_cmds.h +168 -0
  329. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/yb_profile.h +51 -0
  330. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/commands/yb_tablegroup.h +45 -0
  331. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/archive.h +21 -0
  332. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/base64.h +19 -0
  333. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/checksum_helper.h +72 -0
  334. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/compression.h +45 -0
  335. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/config_info.h +21 -0
  336. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/connect.h +28 -0
  337. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/controldata_utils.h +19 -0
  338. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/cryptohash.h +39 -0
  339. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/fe_memutils.h +73 -0
  340. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/file_perm.h +56 -0
  341. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/file_utils.h +40 -0
  342. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/hashfn.h +104 -0
  343. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/hmac.h +30 -0
  344. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/int.h +441 -0
  345. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/int128.h +276 -0
  346. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/ip.h +31 -0
  347. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/jsonapi.h +169 -0
  348. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/keywords.h +29 -0
  349. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/kwlookup.h +44 -0
  350. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/link-canary.h +17 -0
  351. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/logging.h +158 -0
  352. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/md5.h +37 -0
  353. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/openssl.h +49 -0
  354. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/pg_lzcompress.h +93 -0
  355. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/pg_prng.h +60 -0
  356. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/pg_yb_common.h +160 -0
  357. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/pg_yb_param_status_flags.h +33 -0
  358. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/relpath.h +90 -0
  359. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/restricted_token.h +24 -0
  360. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/saslprep.h +30 -0
  361. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/scram-common.h +62 -0
  362. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/sha1.h +21 -0
  363. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/sha2.h +32 -0
  364. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/shortest_dec.h +63 -0
  365. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/string.h +42 -0
  366. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/unicode_combining_table.h +308 -0
  367. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/unicode_east_asian_fw_table.h +125 -0
  368. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/unicode_norm.h +39 -0
  369. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/unicode_norm_hashfunc.h +2956 -0
  370. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/unicode_norm_table.h +9042 -0
  371. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/unicode_normprops_table.h +7849 -0
  372. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/common/username.h +15 -0
  373. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/datatype/timestamp.h +236 -0
  374. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/execAsync.h +25 -0
  375. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/execExpr.h +792 -0
  376. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/execParallel.h +51 -0
  377. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/execPartition.h +134 -0
  378. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/execdebug.h +130 -0
  379. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/execdesc.h +77 -0
  380. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/executor.h +718 -0
  381. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/functions.h +61 -0
  382. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/hashjoin.h +363 -0
  383. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/instrument.h +154 -0
  384. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeAgg.h +333 -0
  385. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeAppend.h +30 -0
  386. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeBitmapAnd.h +24 -0
  387. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeBitmapHeapscan.h +32 -0
  388. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeBitmapIndexscan.h +24 -0
  389. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeBitmapOr.h +24 -0
  390. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeCtescan.h +23 -0
  391. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeCustom.h +42 -0
  392. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeForeignscan.h +44 -0
  393. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeFunctionscan.h +23 -0
  394. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeGather.h +24 -0
  395. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeGatherMerge.h +26 -0
  396. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeGroup.h +23 -0
  397. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeHash.h +79 -0
  398. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeHashjoin.h +34 -0
  399. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeIncrementalSort.h +28 -0
  400. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeIndexonlyscan.h +36 -0
  401. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeIndexscan.h +47 -0
  402. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeLimit.h +23 -0
  403. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeLockRows.h +26 -0
  404. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeMaterial.h +25 -0
  405. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeMemoize.h +32 -0
  406. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeMergeAppend.h +23 -0
  407. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeMergejoin.h +23 -0
  408. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeModifyTable.h +33 -0
  409. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeNamedtuplestorescan.h +23 -0
  410. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeNestloop.h +23 -0
  411. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeProjectSet.h +23 -0
  412. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeRecursiveunion.h +23 -0
  413. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeResult.h +25 -0
  414. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeSamplescan.h +23 -0
  415. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeSeqscan.h +31 -0
  416. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeSetOp.h +23 -0
  417. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeSort.h +32 -0
  418. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeSubplan.h +29 -0
  419. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeSubqueryscan.h +23 -0
  420. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeTableFuncscan.h +23 -0
  421. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeTidrangescan.h +24 -0
  422. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeTidscan.h +23 -0
  423. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeUnique.h +23 -0
  424. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeValuesscan.h +23 -0
  425. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeWindowAgg.h +23 -0
  426. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeWorktablescan.h +23 -0
  427. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeYbBatchedNestloop.h +33 -0
  428. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeYbBitmapIndexscan.h +24 -0
  429. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeYbBitmapTablescan.h +22 -0
  430. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/nodeYbSeqscan.h +45 -0
  431. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/spi.h +214 -0
  432. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/spi_priv.h +105 -0
  433. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/tablefunc.h +67 -0
  434. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/tqueue.h +32 -0
  435. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/tstoreReceiver.h +31 -0
  436. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/tuptable.h +515 -0
  437. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/ybExpr.h +64 -0
  438. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/ybFunction.h +41 -0
  439. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/ybModifyTable.h +281 -0
  440. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/executor/ybOptimizeModifyTable.h +40 -0
  441. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/fe_utils/archive.h +21 -0
  442. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/fe_utils/cancel.h +32 -0
  443. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/fe_utils/conditional.h +102 -0
  444. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/fe_utils/connect_utils.h +48 -0
  445. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/fe_utils/mbprint.h +29 -0
  446. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/fe_utils/option_utils.h +26 -0
  447. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/fe_utils/parallel_slot.h +77 -0
  448. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/fe_utils/print.h +220 -0
  449. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/fe_utils/psqlscan.h +90 -0
  450. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/fe_utils/psqlscan_int.h +157 -0
  451. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/fe_utils/query_utils.h +26 -0
  452. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/fe_utils/recovery_gen.h +28 -0
  453. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/fe_utils/simple_list.h +70 -0
  454. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/fe_utils/string_utils.h +69 -0
  455. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/fmgr.h +788 -0
  456. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/foreign/fdwapi.h +294 -0
  457. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/foreign/foreign.h +84 -0
  458. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/funcapi.h +409 -0
  459. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/getaddrinfo.h +162 -0
  460. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/getopt_long.h +36 -0
  461. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/jit/SectionMemoryManager.h +226 -0
  462. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/jit/jit.h +105 -0
  463. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/jit/llvmjit.h +169 -0
  464. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/jit/llvmjit_backport.h +25 -0
  465. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/jit/llvmjit_emit.h +336 -0
  466. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/lib/binaryheap.h +54 -0
  467. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/lib/bipartite_match.h +46 -0
  468. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/lib/bloomfilter.h +27 -0
  469. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/lib/dshash.h +112 -0
  470. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/lib/hyperloglog.h +68 -0
  471. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/lib/ilist.h +746 -0
  472. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/lib/integerset.h +24 -0
  473. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/lib/knapsack.h +16 -0
  474. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/lib/pairingheap.h +102 -0
  475. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/lib/qunique.h +67 -0
  476. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/lib/rbtree.h +79 -0
  477. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/lib/simplehash.h +1187 -0
  478. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/lib/sort_template.h +441 -0
  479. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/lib/stringinfo.h +161 -0
  480. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/libpq/auth.h +31 -0
  481. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/libpq/be-fsstubs.h +32 -0
  482. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/libpq/be-gssapi-common.h +30 -0
  483. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/libpq/crypt.h +53 -0
  484. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/libpq/hba.h +191 -0
  485. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/libpq/ifaddr.h +30 -0
  486. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/libpq/libpq-be.h +365 -0
  487. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/libpq/libpq-fs.h +24 -0
  488. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/libpq/libpq.h +147 -0
  489. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/libpq/pqcomm.h +194 -0
  490. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/libpq/pqformat.h +210 -0
  491. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/libpq/pqmq.h +24 -0
  492. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/libpq/pqsignal.h +42 -0
  493. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/libpq/sasl.h +136 -0
  494. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/libpq/scram.h +30 -0
  495. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/libpq/yb_pqcomm_extensions.h +24 -0
  496. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/mb/pg_wchar.h +703 -0
  497. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/mb/stringinfo_mb.h +24 -0
  498. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/miscadmin.h +558 -0
  499. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/nodes/bitmapset.h +122 -0
  500. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/nodes/execnodes.h +3130 -0
  501. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/nodes/extensible.h +162 -0
  502. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/nodes/lockoptions.h +61 -0
  503. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/nodes/makefuncs.h +109 -0
  504. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/nodes/memnodes.h +113 -0
  505. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/nodes/nodeFuncs.h +165 -0
  506. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/nodes/nodes.h +897 -0
  507. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/nodes/params.h +170 -0
  508. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/nodes/parsenodes.h +3955 -0
  509. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/nodes/pathnodes.h +2984 -0
  510. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/nodes/pg_list.h +621 -0
  511. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/nodes/plannodes.h +1681 -0
  512. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/nodes/primnodes.h +1608 -0
  513. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/nodes/print.h +34 -0
  514. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/nodes/readfuncs.h +40 -0
  515. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/nodes/replnodes.h +111 -0
  516. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/nodes/subscripting.h +167 -0
  517. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/nodes/supportnodes.h +302 -0
  518. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/nodes/tidbitmap.h +84 -0
  519. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/nodes/value.h +80 -0
  520. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/nodes/ybbitmatrix.h +54 -0
  521. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/nodes/ybtidbitmap.h +89 -0
  522. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/optimizer/appendinfo.h +50 -0
  523. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/optimizer/clauses.h +62 -0
  524. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/optimizer/cost.h +309 -0
  525. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/optimizer/geqo.h +90 -0
  526. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/optimizer/geqo_copy.h +30 -0
  527. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/optimizer/geqo_gene.h +45 -0
  528. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/optimizer/geqo_misc.h +34 -0
  529. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/optimizer/geqo_mutation.h +30 -0
  530. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/optimizer/geqo_pool.h +40 -0
  531. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/optimizer/geqo_random.h +40 -0
  532. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/optimizer/geqo_recombination.h +89 -0
  533. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/optimizer/geqo_selection.h +33 -0
  534. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/optimizer/inherit.h +29 -0
  535. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/optimizer/joininfo.h +30 -0
  536. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/optimizer/optimizer.h +206 -0
  537. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/optimizer/orclauses.h +21 -0
  538. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/optimizer/paramassign.h +34 -0
  539. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/optimizer/pathnode.h +359 -0
  540. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/optimizer/paths.h +292 -0
  541. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/optimizer/placeholder.h +32 -0
  542. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/optimizer/plancat.h +82 -0
  543. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/optimizer/planmain.h +136 -0
  544. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/optimizer/planner.h +70 -0
  545. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/optimizer/prep.h +57 -0
  546. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/optimizer/restrictinfo.h +62 -0
  547. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/optimizer/subselect.h +40 -0
  548. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/optimizer/tlist.h +56 -0
  549. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/optimizer/yb_merge_scan.h +52 -0
  550. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/optimizer/ybplan.h +59 -0
  551. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/parser/analyze.h +64 -0
  552. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/parser/gramparse.h +75 -0
  553. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/parser/kwlist.h +502 -0
  554. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/parser/parse_agg.h +63 -0
  555. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/parser/parse_clause.h +54 -0
  556. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/parser/parse_coerce.h +103 -0
  557. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/parser/parse_collate.h +27 -0
  558. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/parser/parse_cte.h +24 -0
  559. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/parser/parse_enr.h +22 -0
  560. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/parser/parse_expr.h +25 -0
  561. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/parser/parse_func.h +74 -0
  562. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/parser/parse_merge.h +21 -0
  563. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/parser/parse_node.h +339 -0
  564. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/parser/parse_oper.h +65 -0
  565. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/parser/parse_param.h +25 -0
  566. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/parser/parse_relation.h +124 -0
  567. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/parser/parse_target.h +58 -0
  568. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/parser/parse_type.h +60 -0
  569. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/parser/parse_utilcmd.h +57 -0
  570. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/parser/parser.h +68 -0
  571. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/parser/parsetree.h +61 -0
  572. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/parser/scanner.h +150 -0
  573. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/parser/scansup.h +27 -0
  574. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/partitioning/partbounds.h +146 -0
  575. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/partitioning/partdefs.h +26 -0
  576. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/partitioning/partdesc.h +53 -0
  577. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/partitioning/partprune.h +85 -0
  578. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/pg_config_manual.h +410 -0
  579. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/pg_getopt.h +56 -0
  580. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/pg_trace.h +17 -0
  581. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/pg_yb_utils.h +1645 -0
  582. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/pgstat.h +900 -0
  583. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/pgtar.h +45 -0
  584. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/pgtime.h +94 -0
  585. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/aix.h +14 -0
  586. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/atomics/arch-arm.h +32 -0
  587. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/atomics/arch-hppa.h +17 -0
  588. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/atomics/arch-ia64.h +29 -0
  589. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/atomics/arch-ppc.h +254 -0
  590. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/atomics/arch-x86.h +252 -0
  591. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/atomics/fallback.h +170 -0
  592. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/atomics/generic-acc.h +106 -0
  593. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/atomics/generic-gcc.h +286 -0
  594. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/atomics/generic-msvc.h +101 -0
  595. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/atomics/generic-sunpro.h +106 -0
  596. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/atomics/generic.h +401 -0
  597. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/atomics.h +524 -0
  598. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/cygwin.h +23 -0
  599. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/darwin.h +8 -0
  600. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/freebsd.h +10 -0
  601. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/hpux.h +3 -0
  602. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/linux.h +22 -0
  603. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/netbsd.h +1 -0
  604. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/openbsd.h +1 -0
  605. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/pg_bitutils.h +302 -0
  606. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/pg_bswap.h +161 -0
  607. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/pg_crc32c.h +101 -0
  608. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/pg_iovec.h +54 -0
  609. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/pg_pthread.h +41 -0
  610. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/solaris.h +26 -0
  611. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/win32/arpa/inet.h +3 -0
  612. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/win32/dlfcn.h +1 -0
  613. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/win32/grp.h +1 -0
  614. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/win32/netdb.h +1 -0
  615. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/win32/netinet/in.h +3 -0
  616. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/win32/pwd.h +3 -0
  617. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/win32/sys/socket.h +33 -0
  618. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/win32/sys/wait.h +3 -0
  619. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/win32.h +81 -0
  620. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/win32_msvc/dirent.h +34 -0
  621. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/win32_msvc/sys/file.h +1 -0
  622. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/win32_msvc/sys/param.h +1 -0
  623. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/win32_msvc/sys/time.h +1 -0
  624. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/win32_msvc/unistd.h +9 -0
  625. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/win32_msvc/utime.h +3 -0
  626. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/win32_port.h +572 -0
  627. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port/win32ntdll.h +32 -0
  628. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/port.h +589 -0
  629. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/portability/instr_time.h +256 -0
  630. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/portability/mem.h +48 -0
  631. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/postgres.h +819 -0
  632. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/postgres_ext.h +74 -0
  633. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/postgres_fe.h +29 -0
  634. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/postmaster/autovacuum.h +83 -0
  635. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/postmaster/auxprocess.h +20 -0
  636. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/postmaster/bgworker.h +176 -0
  637. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/postmaster/bgworker_internals.h +64 -0
  638. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/postmaster/bgwriter.h +45 -0
  639. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/postmaster/fork_process.h +17 -0
  640. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/postmaster/interrupt.h +32 -0
  641. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/postmaster/pgarch.h +73 -0
  642. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/postmaster/postmaster.h +86 -0
  643. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/postmaster/startup.h +41 -0
  644. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/postmaster/syslogger.h +103 -0
  645. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/postmaster/walwriter.h +21 -0
  646. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/regex/regcustom.h +104 -0
  647. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/regex/regerrs.h +87 -0
  648. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/regex/regex.h +269 -0
  649. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/regex/regexport.h +61 -0
  650. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/regex/regguts.h +552 -0
  651. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/replication/decode.h +34 -0
  652. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/replication/logical.h +178 -0
  653. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/replication/logicallauncher.h +29 -0
  654. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/replication/logicalproto.h +256 -0
  655. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/replication/logicalrelation.h +50 -0
  656. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/replication/logicalworker.h +19 -0
  657. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/replication/message.h +41 -0
  658. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/replication/origin.h +73 -0
  659. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/replication/output_plugin.h +271 -0
  660. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/replication/pgoutput.h +34 -0
  661. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/replication/reorderbuffer.h +706 -0
  662. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/replication/slot.h +290 -0
  663. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/replication/snapbuild.h +101 -0
  664. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/replication/syncrep.h +118 -0
  665. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/replication/walreceiver.h +472 -0
  666. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/replication/walsender.h +92 -0
  667. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/replication/walsender_private.h +131 -0
  668. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/replication/worker_internal.h +112 -0
  669. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/replication/yb_decode.h +33 -0
  670. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/replication/yb_virtual_wal_client.h +46 -0
  671. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/replication/yb_virtual_wal_client_typedefs.h +31 -0
  672. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/rewrite/prs2lock.h +46 -0
  673. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/rewrite/rewriteDefine.h +44 -0
  674. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/rewrite/rewriteHandler.h +35 -0
  675. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/rewrite/rewriteManip.h +87 -0
  676. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/rewrite/rewriteRemove.h +21 -0
  677. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/rewrite/rewriteSearchCycle.h +21 -0
  678. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/rewrite/rewriteSupport.h +26 -0
  679. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/rewrite/rowsecurity.h +49 -0
  680. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/rusagestub.h +34 -0
  681. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/header.h +67 -0
  682. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/api.h +32 -0
  683. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/header.h +61 -0
  684. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_ISO_8859_1_basque.h +15 -0
  685. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_ISO_8859_1_catalan.h +15 -0
  686. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_ISO_8859_1_danish.h +15 -0
  687. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_ISO_8859_1_dutch.h +15 -0
  688. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_ISO_8859_1_english.h +15 -0
  689. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_ISO_8859_1_finnish.h +15 -0
  690. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_ISO_8859_1_french.h +15 -0
  691. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_ISO_8859_1_german.h +15 -0
  692. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_ISO_8859_1_indonesian.h +15 -0
  693. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_ISO_8859_1_irish.h +15 -0
  694. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_ISO_8859_1_italian.h +15 -0
  695. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_ISO_8859_1_norwegian.h +15 -0
  696. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_ISO_8859_1_porter.h +15 -0
  697. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_ISO_8859_1_portuguese.h +15 -0
  698. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_ISO_8859_1_spanish.h +15 -0
  699. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_ISO_8859_1_swedish.h +15 -0
  700. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_ISO_8859_2_hungarian.h +15 -0
  701. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_ISO_8859_2_romanian.h +15 -0
  702. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_KOI8_R_russian.h +15 -0
  703. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_UTF_8_arabic.h +15 -0
  704. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_UTF_8_armenian.h +15 -0
  705. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_UTF_8_basque.h +15 -0
  706. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_UTF_8_catalan.h +15 -0
  707. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_UTF_8_danish.h +15 -0
  708. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_UTF_8_dutch.h +15 -0
  709. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_UTF_8_english.h +15 -0
  710. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_UTF_8_finnish.h +15 -0
  711. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_UTF_8_french.h +15 -0
  712. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_UTF_8_german.h +15 -0
  713. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_UTF_8_greek.h +15 -0
  714. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_UTF_8_hindi.h +15 -0
  715. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_UTF_8_hungarian.h +15 -0
  716. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_UTF_8_indonesian.h +15 -0
  717. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_UTF_8_irish.h +15 -0
  718. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_UTF_8_italian.h +15 -0
  719. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_UTF_8_lithuanian.h +15 -0
  720. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_UTF_8_nepali.h +15 -0
  721. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_UTF_8_norwegian.h +15 -0
  722. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_UTF_8_porter.h +15 -0
  723. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_UTF_8_portuguese.h +15 -0
  724. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_UTF_8_romanian.h +15 -0
  725. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_UTF_8_russian.h +15 -0
  726. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_UTF_8_serbian.h +15 -0
  727. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_UTF_8_spanish.h +15 -0
  728. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_UTF_8_swedish.h +15 -0
  729. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_UTF_8_tamil.h +15 -0
  730. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_UTF_8_turkish.h +15 -0
  731. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/snowball/libstemmer/stem_UTF_8_yiddish.h +15 -0
  732. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/statistics/extended_stats_internal.h +130 -0
  733. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/statistics/stat_utils.h +41 -0
  734. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/statistics/statistics.h +130 -0
  735. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/backendid.h +37 -0
  736. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/barrier.h +46 -0
  737. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/block.h +115 -0
  738. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/buf.h +46 -0
  739. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/buf_internals.h +345 -0
  740. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/buffile.h +57 -0
  741. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/bufmgr.h +297 -0
  742. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/bufpage.h +457 -0
  743. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/checksum.h +24 -0
  744. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/checksum_impl.h +215 -0
  745. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/condition_variable.h +86 -0
  746. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/copydir.h +19 -0
  747. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/dsm.h +64 -0
  748. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/dsm_impl.h +76 -0
  749. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/fd.h +198 -0
  750. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/fileset.h +40 -0
  751. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/freespace.h +39 -0
  752. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/fsm_internals.h +72 -0
  753. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/indexfsm.h +26 -0
  754. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/ipc.h +87 -0
  755. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/item.h +19 -0
  756. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/itemid.h +184 -0
  757. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/itemptr.h +208 -0
  758. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/large_object.h +100 -0
  759. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/latch.h +189 -0
  760. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/lmgr.h +119 -0
  761. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/lock.h +621 -0
  762. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/lockdefs.h +61 -0
  763. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/lwlock.h +220 -0
  764. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/lwlocknames.h +50 -0
  765. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/md.h +52 -0
  766. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/off.h +57 -0
  767. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/pg_sema.h +61 -0
  768. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/pg_shmem.h +95 -0
  769. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/pmsignal.h +105 -0
  770. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/predicate.h +87 -0
  771. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/predicate_internals.h +494 -0
  772. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/proc.h +530 -0
  773. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/procarray.h +101 -0
  774. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/proclist.h +219 -0
  775. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/proclist_types.h +51 -0
  776. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/procsignal.h +81 -0
  777. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/reinit.h +28 -0
  778. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/relfilenode.h +99 -0
  779. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/s_lock.h +1110 -0
  780. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/sharedfileset.h +37 -0
  781. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/shm_mq.h +86 -0
  782. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/shm_toc.h +58 -0
  783. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/shmem.h +81 -0
  784. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/sinval.h +219 -0
  785. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/sinvaladt.h +48 -0
  786. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/smgr.h +114 -0
  787. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/spin.h +96 -0
  788. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/standby.h +106 -0
  789. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/standbydefs.h +74 -0
  790. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/storage/sync.h +66 -0
  791. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/tcop/cmdtag.h +58 -0
  792. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/tcop/cmdtaglist.h +225 -0
  793. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/tcop/deparse_utility.h +108 -0
  794. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/tcop/dest.h +149 -0
  795. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/tcop/fastpath.h +20 -0
  796. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/tcop/pquery.h +60 -0
  797. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/tcop/tcopprot.h +108 -0
  798. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/tcop/utility.h +112 -0
  799. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/tsearch/dicts/regis.h +49 -0
  800. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/tsearch/dicts/spell.h +247 -0
  801. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/tsearch/ts_cache.h +98 -0
  802. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/tsearch/ts_locale.h +63 -0
  803. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/tsearch/ts_public.h +159 -0
  804. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/tsearch/ts_type.h +242 -0
  805. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/tsearch/ts_utils.h +266 -0
  806. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/acl.h +340 -0
  807. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/aclchk_internal.h +45 -0
  808. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/array.h +472 -0
  809. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/arrayaccess.h +118 -0
  810. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/ascii.h +68 -0
  811. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/attoptcache.h +28 -0
  812. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/backend_progress.h +44 -0
  813. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/backend_status.h +379 -0
  814. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/builtins.h +130 -0
  815. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/bytea.h +28 -0
  816. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/cash.h +25 -0
  817. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/catcache.h +268 -0
  818. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/combocid.h +28 -0
  819. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/date.h +90 -0
  820. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/datetime.h +344 -0
  821. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/datum.h +76 -0
  822. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/dsa.h +123 -0
  823. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/dynahash.h +20 -0
  824. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/elog.h +517 -0
  825. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/errcodes.h +363 -0
  826. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/evtcache.h +37 -0
  827. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/expandeddatum.h +159 -0
  828. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/expandedrecord.h +231 -0
  829. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/float.h +356 -0
  830. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/fmgroids.h +3337 -0
  831. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/fmgrprotos.h +2900 -0
  832. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/fmgrtab.h +53 -0
  833. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/formatting.h +35 -0
  834. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/freepage.h +99 -0
  835. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/geo_decls.h +221 -0
  836. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/guc.h +517 -0
  837. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/guc_tables.h +312 -0
  838. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/help_config.h +17 -0
  839. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/hsearch.h +153 -0
  840. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/index_selfuncs.h +74 -0
  841. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/inet.h +149 -0
  842. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/inval.h +74 -0
  843. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/json.h +24 -0
  844. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/jsonb.h +415 -0
  845. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/jsonfuncs.h +66 -0
  846. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/jsonpath.h +251 -0
  847. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/logtape.h +77 -0
  848. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/lsyscache.h +211 -0
  849. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/memdebug.h +82 -0
  850. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/memutils.h +306 -0
  851. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/multirangetypes.h +135 -0
  852. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/numeric.h +99 -0
  853. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/old_snapshot.h +75 -0
  854. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/palloc.h +222 -0
  855. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/partcache.h +105 -0
  856. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/pg_crc.h +107 -0
  857. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/pg_locale.h +129 -0
  858. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/pg_lsn.h +29 -0
  859. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/pg_rusage.h +37 -0
  860. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/pgstat_internal.h +803 -0
  861. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/pidfile.h +56 -0
  862. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/plancache.h +259 -0
  863. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/portal.h +252 -0
  864. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/ps_status.h +25 -0
  865. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/queryenvironment.h +74 -0
  866. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/queryjumble.h +88 -0
  867. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/rangetypes.h +151 -0
  868. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/regproc.h +39 -0
  869. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/rel.h +760 -0
  870. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/relcache.h +180 -0
  871. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/relfilenodemap.h +18 -0
  872. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/relmapper.h +72 -0
  873. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/relptr.h +93 -0
  874. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/reltrigger.h +81 -0
  875. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/resowner.h +86 -0
  876. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/resowner_private.h +123 -0
  877. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/rls.h +50 -0
  878. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/ruleutils.h +59 -0
  879. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/sampling.h +64 -0
  880. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/selfuncs.h +250 -0
  881. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/sharedtuplestore.h +61 -0
  882. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/snapmgr.h +189 -0
  883. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/snapshot.h +231 -0
  884. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/sortsupport.h +391 -0
  885. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/spccache.h +24 -0
  886. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/syscache.h +319 -0
  887. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/timeout.h +95 -0
  888. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/timestamp.h +120 -0
  889. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/tuplesort.h +291 -0
  890. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/tuplestore.h +91 -0
  891. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/typcache.h +209 -0
  892. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/tzparser.h +39 -0
  893. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/uuid.h +31 -0
  894. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/varbit.h +74 -0
  895. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/varlena.h +41 -0
  896. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/wait_event.h +351 -0
  897. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/xid8.h +22 -0
  898. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/xml.h +84 -0
  899. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/yb_inheritscache.h +49 -0
  900. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/yb_jumblefuncs.h +35 -0
  901. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/yb_like_support.h +37 -0
  902. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/yb_queryjumble.h +73 -0
  903. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/yb_rowtypes.h +24 -0
  904. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/utils/yb_tuplecache.h +66 -0
  905. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/windowapi.h +64 -0
  906. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/yb_ash.h +92 -0
  907. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/yb_file_utils.h +38 -0
  908. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/yb_overflow_utils.h +110 -0
  909. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/yb_qpm.h +45 -0
  910. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/yb_query_diagnostics.h +237 -0
  911. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/yb_tcmalloc_utils.h +41 -0
  912. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/yb_terminated_queries.h +35 -0
  913. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/yb_ysql_conn_mgr_helper.h +154 -0
  914. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/ybctid.h +55 -0
  915. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/ybgate/ybgate_api-test.h +78 -0
  916. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/ybgate/ybgate_api.h +283 -0
  917. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/ybgate/ybgate_cpp_util.h +78 -0
  918. data/ext/yb_ddl_parser/vendor/yugabyte-postgres/src/include/ybgate/ybgate_status.h +136 -0
  919. data/ext/yb_ddl_parser/yb_ddl_parser_ext.c +1740 -0
  920. data/ext/yb_ddl_parser/yb_parser_stubs.c +459 -0
  921. data/lib/yb_ddl_parser/ast.rb +276 -0
  922. data/lib/yb_ddl_parser/version.rb +6 -0
  923. data/lib/yb_ddl_parser.rb +32 -0
  924. data/test/test_helper.rb +5 -0
  925. data/test/yb_ddl_parser_test.rb +353 -0
  926. metadata +990 -0
@@ -0,0 +1,4948 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * outfuncs.c
4
+ * Output functions for Postgres tree nodes.
5
+ *
6
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1994, Regents of the University of California
8
+ *
9
+ *
10
+ * IDENTIFICATION
11
+ * src/backend/nodes/outfuncs.c
12
+ *
13
+ * NOTES
14
+ * Every node type that can appear in stored rules' parsetrees *must*
15
+ * have an output function defined here (as well as an input function
16
+ * in readfuncs.c). In addition, plan nodes should have input and
17
+ * output functions so that they can be sent to parallel workers.
18
+ *
19
+ * For use in debugging, we also provide output functions for nodes
20
+ * that appear in raw parsetrees and planner Paths. These node types
21
+ * need not have input functions. Output support for raw parsetrees
22
+ * is somewhat incomplete, too; in particular, utility statements are
23
+ * almost entirely unsupported. We try to support everything that can
24
+ * appear in a raw SELECT, though.
25
+ *
26
+ *-------------------------------------------------------------------------
27
+ */
28
+ #include "postgres.h"
29
+
30
+ #include <ctype.h>
31
+
32
+ #include "lib/stringinfo.h"
33
+ #include "miscadmin.h"
34
+ #include "nodes/extensible.h"
35
+ #include "nodes/pathnodes.h"
36
+ #include "nodes/plannodes.h"
37
+ #include "utils/datum.h"
38
+ #include "utils/rel.h"
39
+
40
+ /*
41
+ * YB: A global variable that controls whether a node should be serialized in a
42
+ * PG11-compatible way. This is required to support mixed mode pushdown for
43
+ * cases where the node serialization changed betwen major versions, such as
44
+ * ScalarOpArrayExpression, without disturbing any other PG functionality that
45
+ * depends on the serialization format.
46
+ */
47
+ int yb_serialize_expression_version = 0;
48
+
49
+ static void outChar(StringInfo str, char c);
50
+
51
+
52
+ /*
53
+ * Macros to simplify output of different kinds of fields. Use these
54
+ * wherever possible to reduce the chance for silly typos. Note that these
55
+ * hard-wire conventions about the names of the local variables in an Out
56
+ * routine.
57
+ */
58
+
59
+ /* Write the label for the node type */
60
+ #define WRITE_NODE_TYPE(nodelabel) \
61
+ appendStringInfoString(str, nodelabel)
62
+
63
+ /* Write an integer field (anything written as ":fldname %d") */
64
+ #define WRITE_INT_FIELD(fldname) \
65
+ appendStringInfo(str, " :" CppAsString(fldname) " %d", node->fldname)
66
+
67
+ /* Write an unsigned integer field (anything written as ":fldname %u") */
68
+ #define WRITE_UINT_FIELD(fldname) \
69
+ appendStringInfo(str, " :" CppAsString(fldname) " %u", node->fldname)
70
+
71
+ /* Write an unsigned integer field (anything written with UINT64_FORMAT) */
72
+ #define WRITE_UINT64_FIELD(fldname) \
73
+ appendStringInfo(str, " :" CppAsString(fldname) " " UINT64_FORMAT, \
74
+ node->fldname)
75
+
76
+ /* Write an OID field (don't hard-wire assumption that OID is same as uint) */
77
+ #define WRITE_OID_FIELD(fldname) \
78
+ appendStringInfo(str, " :" CppAsString(fldname) " %u", node->fldname)
79
+
80
+ /* Write a long-integer field */
81
+ #define WRITE_LONG_FIELD(fldname) \
82
+ appendStringInfo(str, " :" CppAsString(fldname) " %ld", node->fldname)
83
+
84
+ /* Write a char field (ie, one ascii character) */
85
+ #define WRITE_CHAR_FIELD(fldname) \
86
+ (appendStringInfo(str, " :" CppAsString(fldname) " "), \
87
+ outChar(str, node->fldname))
88
+
89
+ /* Write an enumerated-type field as an integer code */
90
+ #define WRITE_ENUM_FIELD(fldname, enumtype) \
91
+ appendStringInfo(str, " :" CppAsString(fldname) " %d", \
92
+ (int) node->fldname)
93
+
94
+ /* Write a float field --- caller must give format to define precision */
95
+ #define WRITE_FLOAT_FIELD(fldname,format) \
96
+ appendStringInfo(str, " :" CppAsString(fldname) " " format, node->fldname)
97
+
98
+ /* Write a boolean field */
99
+ #define WRITE_BOOL_FIELD(fldname) \
100
+ appendStringInfo(str, " :" CppAsString(fldname) " %s", \
101
+ booltostr(node->fldname))
102
+
103
+ /* Write a character-string (possibly NULL) field */
104
+ #define WRITE_STRING_FIELD(fldname) \
105
+ (appendStringInfoString(str, " :" CppAsString(fldname) " "), \
106
+ outToken(str, node->fldname))
107
+
108
+ /* Write a parse location field (actually same as INT case) */
109
+ #define WRITE_LOCATION_FIELD(fldname) \
110
+ appendStringInfo(str, " :" CppAsString(fldname) " %d", node->fldname)
111
+
112
+ /* Write a Node field */
113
+ #define WRITE_NODE_FIELD(fldname) \
114
+ (appendStringInfoString(str, " :" CppAsString(fldname) " "), \
115
+ outNode(str, node->fldname))
116
+
117
+ /* Write a bitmapset field */
118
+ #define WRITE_BITMAPSET_FIELD(fldname) \
119
+ (appendStringInfoString(str, " :" CppAsString(fldname) " "), \
120
+ outBitmapset(str, node->fldname))
121
+
122
+ #define WRITE_ATTRNUMBER_ARRAY(fldname, len) \
123
+ do { \
124
+ appendStringInfoString(str, " :" CppAsString(fldname) " "); \
125
+ for (int i = 0; i < len; i++) \
126
+ appendStringInfo(str, " %d", node->fldname[i]); \
127
+ } while(0)
128
+
129
+ #define WRITE_OID_ARRAY(fldname, len) \
130
+ do { \
131
+ appendStringInfoString(str, " :" CppAsString(fldname) " "); \
132
+ for (int i = 0; i < len; i++) \
133
+ appendStringInfo(str, " %u", node->fldname[i]); \
134
+ } while(0)
135
+
136
+ /*
137
+ * This macro supports the case that the field is NULL. For the other array
138
+ * macros, that is currently not needed.
139
+ */
140
+ #define WRITE_INDEX_ARRAY(fldname, len) \
141
+ do { \
142
+ appendStringInfoString(str, " :" CppAsString(fldname) " "); \
143
+ if (node->fldname) \
144
+ for (int i = 0; i < len; i++) \
145
+ appendStringInfo(str, " %u", node->fldname[i]); \
146
+ else \
147
+ appendStringInfoString(str, "<>"); \
148
+ } while(0)
149
+
150
+ #define WRITE_INT_ARRAY(fldname, len) \
151
+ do { \
152
+ appendStringInfoString(str, " :" CppAsString(fldname) " "); \
153
+ for (int i = 0; i < len; i++) \
154
+ appendStringInfo(str, " %d", node->fldname[i]); \
155
+ } while(0)
156
+
157
+ #define WRITE_BOOL_ARRAY(fldname, len) \
158
+ do { \
159
+ appendStringInfoString(str, " :" CppAsString(fldname) " "); \
160
+ for (int i = 0; i < len; i++) \
161
+ appendStringInfo(str, " %s", booltostr(node->fldname[i])); \
162
+ } while(0)
163
+
164
+
165
+ #define booltostr(x) ((x) ? "true" : "false")
166
+
167
+
168
+ /*
169
+ * outToken
170
+ * Convert an ordinary string (eg, an identifier) into a form that
171
+ * will be decoded back to a plain token by read.c's functions.
172
+ *
173
+ * If a null or empty string is given, it is encoded as "<>".
174
+ */
175
+ void
176
+ outToken(StringInfo str, const char *s)
177
+ {
178
+ if (s == NULL || *s == '\0')
179
+ {
180
+ appendStringInfoString(str, "<>");
181
+ return;
182
+ }
183
+
184
+ /*
185
+ * Look for characters or patterns that are treated specially by read.c
186
+ * (either in pg_strtok() or in nodeRead()), and therefore need a
187
+ * protective backslash.
188
+ */
189
+ /* These characters only need to be quoted at the start of the string */
190
+ if (*s == '<' ||
191
+ *s == '"' ||
192
+ isdigit((unsigned char) *s) ||
193
+ ((*s == '+' || *s == '-') &&
194
+ (isdigit((unsigned char) s[1]) || s[1] == '.')))
195
+ appendStringInfoChar(str, '\\');
196
+ while (*s)
197
+ {
198
+ /* These chars must be backslashed anywhere in the string */
199
+ if (*s == ' ' || *s == '\n' || *s == '\t' ||
200
+ *s == '(' || *s == ')' || *s == '{' || *s == '}' ||
201
+ *s == '\\')
202
+ appendStringInfoChar(str, '\\');
203
+ appendStringInfoChar(str, *s++);
204
+ }
205
+ }
206
+
207
+ /*
208
+ * Convert one char. Goes through outToken() so that special characters are
209
+ * escaped.
210
+ */
211
+ static void
212
+ outChar(StringInfo str, char c)
213
+ {
214
+ char in[2];
215
+
216
+ in[0] = c;
217
+ in[1] = '\0';
218
+
219
+ outToken(str, in);
220
+ }
221
+
222
+ static void
223
+ _outList(StringInfo str, const List *node)
224
+ {
225
+ const ListCell *lc;
226
+
227
+ appendStringInfoChar(str, '(');
228
+
229
+ if (IsA(node, IntList))
230
+ appendStringInfoChar(str, 'i');
231
+ else if (IsA(node, OidList))
232
+ appendStringInfoChar(str, 'o');
233
+
234
+ foreach(lc, node)
235
+ {
236
+ /*
237
+ * For the sake of backward compatibility, we emit a slightly
238
+ * different whitespace format for lists of nodes vs. other types of
239
+ * lists. XXX: is this necessary?
240
+ */
241
+ if (IsA(node, List))
242
+ {
243
+ outNode(str, lfirst(lc));
244
+ if (lnext(node, lc))
245
+ appendStringInfoChar(str, ' ');
246
+ }
247
+ else if (IsA(node, IntList))
248
+ appendStringInfo(str, " %d", lfirst_int(lc));
249
+ else if (IsA(node, OidList))
250
+ appendStringInfo(str, " %u", lfirst_oid(lc));
251
+ else
252
+ elog(ERROR, "unrecognized list node type: %d",
253
+ (int) node->type);
254
+ }
255
+
256
+ appendStringInfoChar(str, ')');
257
+ }
258
+
259
+ /*
260
+ * outBitmapset -
261
+ * converts a bitmap set of integers
262
+ *
263
+ * Note: the output format is "(b int int ...)", similar to an integer List.
264
+ */
265
+ void
266
+ outBitmapset(StringInfo str, const Bitmapset *bms)
267
+ {
268
+ int x;
269
+
270
+ appendStringInfoChar(str, '(');
271
+ appendStringInfoChar(str, 'b');
272
+ x = -1;
273
+ while ((x = bms_next_member(bms, x)) >= 0)
274
+ appendStringInfo(str, " %d", x);
275
+ appendStringInfoChar(str, ')');
276
+ }
277
+
278
+ /*
279
+ * Print the value of a Datum given its type.
280
+ */
281
+ void
282
+ outDatum(StringInfo str, Datum value, int typlen, bool typbyval)
283
+ {
284
+ Size length,
285
+ i;
286
+ char *s;
287
+
288
+ length = datumGetSize(value, typbyval, typlen);
289
+
290
+ if (typbyval)
291
+ {
292
+ s = (char *) (&value);
293
+ appendStringInfo(str, "%u [ ", (unsigned int) length);
294
+ for (i = 0; i < (Size) sizeof(Datum); i++)
295
+ appendStringInfo(str, "%d ", (int) (s[i]));
296
+ appendStringInfoChar(str, ']');
297
+ }
298
+ else
299
+ {
300
+ s = (char *) DatumGetPointer(value);
301
+ if (!PointerIsValid(s))
302
+ appendStringInfoString(str, "0 [ ]");
303
+ else
304
+ {
305
+ appendStringInfo(str, "%u [ ", (unsigned int) length);
306
+ for (i = 0; i < length; i++)
307
+ appendStringInfo(str, "%d ", (int) (s[i]));
308
+ appendStringInfoChar(str, ']');
309
+ }
310
+ }
311
+ }
312
+
313
+
314
+ /*
315
+ * Stuff from plannodes.h
316
+ */
317
+
318
+ static void
319
+ _outPlannedStmt(StringInfo str, const PlannedStmt *node)
320
+ {
321
+ WRITE_NODE_TYPE("PLANNEDSTMT");
322
+
323
+ WRITE_ENUM_FIELD(commandType, CmdType);
324
+ WRITE_UINT64_FIELD(queryId);
325
+ WRITE_BOOL_FIELD(hasReturning);
326
+ WRITE_BOOL_FIELD(hasModifyingCTE);
327
+ WRITE_BOOL_FIELD(canSetTag);
328
+ WRITE_BOOL_FIELD(transientPlan);
329
+ WRITE_BOOL_FIELD(dependsOnRole);
330
+ WRITE_BOOL_FIELD(parallelModeNeeded);
331
+ WRITE_INT_FIELD(jitFlags);
332
+ WRITE_NODE_FIELD(planTree);
333
+ WRITE_NODE_FIELD(rtable);
334
+ WRITE_NODE_FIELD(resultRelations);
335
+ WRITE_NODE_FIELD(appendRelations);
336
+ WRITE_NODE_FIELD(subplans);
337
+ WRITE_BITMAPSET_FIELD(rewindPlanIDs);
338
+ WRITE_NODE_FIELD(rowMarks);
339
+ WRITE_NODE_FIELD(relationOids);
340
+ WRITE_NODE_FIELD(invalItems);
341
+ WRITE_NODE_FIELD(paramExecTypes);
342
+ WRITE_NODE_FIELD(utilityStmt);
343
+ WRITE_LOCATION_FIELD(stmt_location);
344
+ WRITE_INT_FIELD(stmt_len);
345
+ WRITE_INT_FIELD(yb_num_referenced_relations);
346
+ WRITE_UINT64_FIELD(ybPlanId);
347
+ }
348
+
349
+ /*
350
+ * print the basic stuff of all nodes that inherit from Plan
351
+ */
352
+ static void
353
+ _outPlanInfo(StringInfo str, const Plan *node)
354
+ {
355
+ WRITE_FLOAT_FIELD(startup_cost, "%.2f");
356
+ WRITE_FLOAT_FIELD(total_cost, "%.2f");
357
+ WRITE_FLOAT_FIELD(plan_rows, "%.0f");
358
+ WRITE_INT_FIELD(plan_width);
359
+ WRITE_BOOL_FIELD(parallel_aware);
360
+ WRITE_BOOL_FIELD(parallel_safe);
361
+ WRITE_BOOL_FIELD(async_capable);
362
+ WRITE_INT_FIELD(plan_node_id);
363
+ WRITE_NODE_FIELD(targetlist);
364
+ WRITE_NODE_FIELD(qual);
365
+ WRITE_NODE_FIELD(lefttree);
366
+ WRITE_NODE_FIELD(righttree);
367
+ WRITE_NODE_FIELD(initPlan);
368
+ WRITE_BITMAPSET_FIELD(extParam);
369
+ WRITE_BITMAPSET_FIELD(allParam);
370
+ WRITE_STRING_FIELD(ybHintAlias);
371
+ WRITE_UINT_FIELD(ybUniqueId);
372
+ WRITE_STRING_FIELD(ybInheritedHintAlias);
373
+ WRITE_BOOL_FIELD(ybIsHinted);
374
+ WRITE_BOOL_FIELD(ybHasHintedUid);
375
+ }
376
+
377
+ /*
378
+ * print the basic stuff of all nodes that inherit from Scan
379
+ */
380
+ static void
381
+ _outScanInfo(StringInfo str, const Scan *node)
382
+ {
383
+ _outPlanInfo(str, (const Plan *) node);
384
+
385
+ WRITE_UINT_FIELD(scanrelid);
386
+
387
+ /* YB */
388
+ WRITE_STRING_FIELD(ybScannedObjectName);
389
+ }
390
+
391
+ /*
392
+ * print the basic stuff of all nodes that inherit from Join
393
+ */
394
+ static void
395
+ _outJoinPlanInfo(StringInfo str, const Join *node)
396
+ {
397
+ _outPlanInfo(str, (const Plan *) node);
398
+
399
+ WRITE_ENUM_FIELD(jointype, JoinType);
400
+ WRITE_BOOL_FIELD(inner_unique);
401
+ WRITE_NODE_FIELD(joinqual);
402
+ }
403
+
404
+
405
+ static void
406
+ _outPlan(StringInfo str, const Plan *node)
407
+ {
408
+ WRITE_NODE_TYPE("PLAN");
409
+
410
+ _outPlanInfo(str, (const Plan *) node);
411
+ }
412
+
413
+ static void
414
+ _outResult(StringInfo str, const Result *node)
415
+ {
416
+ WRITE_NODE_TYPE("RESULT");
417
+
418
+ _outPlanInfo(str, (const Plan *) node);
419
+
420
+ WRITE_NODE_FIELD(resconstantqual);
421
+ }
422
+
423
+ static void
424
+ _outProjectSet(StringInfo str, const ProjectSet *node)
425
+ {
426
+ WRITE_NODE_TYPE("PROJECTSET");
427
+
428
+ _outPlanInfo(str, (const Plan *) node);
429
+ }
430
+
431
+ static void
432
+ _outModifyTable(StringInfo str, const ModifyTable *node)
433
+ {
434
+ WRITE_NODE_TYPE("MODIFYTABLE");
435
+
436
+ _outPlanInfo(str, (const Plan *) node);
437
+
438
+ WRITE_ENUM_FIELD(operation, CmdType);
439
+ WRITE_BOOL_FIELD(canSetTag);
440
+ WRITE_UINT_FIELD(nominalRelation);
441
+ WRITE_UINT_FIELD(rootRelation);
442
+ WRITE_BOOL_FIELD(partColsUpdated);
443
+ WRITE_NODE_FIELD(resultRelations);
444
+ WRITE_NODE_FIELD(updateColnosLists);
445
+ WRITE_NODE_FIELD(withCheckOptionLists);
446
+ WRITE_NODE_FIELD(returningLists);
447
+ WRITE_NODE_FIELD(fdwPrivLists);
448
+ WRITE_BITMAPSET_FIELD(fdwDirectModifyPlans);
449
+ WRITE_NODE_FIELD(rowMarks);
450
+ WRITE_INT_FIELD(epqParam);
451
+ WRITE_ENUM_FIELD(onConflictAction, OnConflictAction);
452
+ WRITE_NODE_FIELD(arbiterIndexes);
453
+ WRITE_NODE_FIELD(onConflictSet);
454
+ WRITE_NODE_FIELD(onConflictCols);
455
+ WRITE_NODE_FIELD(onConflictWhere);
456
+ WRITE_UINT_FIELD(exclRelRTI);
457
+ WRITE_NODE_FIELD(exclRelTlist);
458
+ WRITE_NODE_FIELD(mergeActionLists);
459
+
460
+ WRITE_NODE_FIELD(ybPushdownTlist);
461
+ WRITE_NODE_FIELD(ybReturningColumns);
462
+ WRITE_NODE_FIELD(ybColumnRefs);
463
+ WRITE_NODE_FIELD(yb_skip_entities);
464
+ WRITE_NODE_FIELD(yb_update_affected_entities);
465
+ WRITE_BOOL_FIELD(no_row_trigger);
466
+ }
467
+
468
+ static void
469
+ _outAppend(StringInfo str, const Append *node)
470
+ {
471
+ WRITE_NODE_TYPE("APPEND");
472
+
473
+ _outPlanInfo(str, (const Plan *) node);
474
+
475
+ WRITE_BITMAPSET_FIELD(apprelids);
476
+ WRITE_NODE_FIELD(appendplans);
477
+ WRITE_INT_FIELD(nasyncplans);
478
+ WRITE_INT_FIELD(first_partial_plan);
479
+ WRITE_NODE_FIELD(part_prune_info);
480
+ }
481
+
482
+ static void
483
+ _outMergeAppend(StringInfo str, const MergeAppend *node)
484
+ {
485
+ WRITE_NODE_TYPE("MERGEAPPEND");
486
+
487
+ _outPlanInfo(str, (const Plan *) node);
488
+
489
+ WRITE_BITMAPSET_FIELD(apprelids);
490
+ WRITE_NODE_FIELD(mergeplans);
491
+ WRITE_INT_FIELD(numCols);
492
+ WRITE_ATTRNUMBER_ARRAY(sortColIdx, node->numCols);
493
+ WRITE_OID_ARRAY(sortOperators, node->numCols);
494
+ WRITE_OID_ARRAY(collations, node->numCols);
495
+ WRITE_BOOL_ARRAY(nullsFirst, node->numCols);
496
+ WRITE_NODE_FIELD(part_prune_info);
497
+ }
498
+
499
+ static void
500
+ _outRecursiveUnion(StringInfo str, const RecursiveUnion *node)
501
+ {
502
+ WRITE_NODE_TYPE("RECURSIVEUNION");
503
+
504
+ _outPlanInfo(str, (const Plan *) node);
505
+
506
+ WRITE_INT_FIELD(wtParam);
507
+ WRITE_INT_FIELD(numCols);
508
+ WRITE_ATTRNUMBER_ARRAY(dupColIdx, node->numCols);
509
+ WRITE_OID_ARRAY(dupOperators, node->numCols);
510
+ WRITE_OID_ARRAY(dupCollations, node->numCols);
511
+ WRITE_LONG_FIELD(numGroups);
512
+ }
513
+
514
+ static void
515
+ _outBitmapAnd(StringInfo str, const BitmapAnd *node)
516
+ {
517
+ WRITE_NODE_TYPE("BITMAPAND");
518
+
519
+ _outPlanInfo(str, (const Plan *) node);
520
+
521
+ WRITE_NODE_FIELD(bitmapplans);
522
+ }
523
+
524
+ static void
525
+ _outBitmapOr(StringInfo str, const BitmapOr *node)
526
+ {
527
+ WRITE_NODE_TYPE("BITMAPOR");
528
+
529
+ _outPlanInfo(str, (const Plan *) node);
530
+
531
+ WRITE_BOOL_FIELD(isshared);
532
+ WRITE_NODE_FIELD(bitmapplans);
533
+ }
534
+
535
+ static void
536
+ _outGather(StringInfo str, const Gather *node)
537
+ {
538
+ WRITE_NODE_TYPE("GATHER");
539
+
540
+ _outPlanInfo(str, (const Plan *) node);
541
+
542
+ WRITE_INT_FIELD(num_workers);
543
+ WRITE_INT_FIELD(rescan_param);
544
+ WRITE_BOOL_FIELD(single_copy);
545
+ WRITE_BOOL_FIELD(invisible);
546
+ WRITE_BITMAPSET_FIELD(initParam);
547
+ }
548
+
549
+ static void
550
+ _outGatherMerge(StringInfo str, const GatherMerge *node)
551
+ {
552
+ WRITE_NODE_TYPE("GATHERMERGE");
553
+
554
+ _outPlanInfo(str, (const Plan *) node);
555
+
556
+ WRITE_INT_FIELD(num_workers);
557
+ WRITE_INT_FIELD(rescan_param);
558
+ WRITE_INT_FIELD(numCols);
559
+ WRITE_ATTRNUMBER_ARRAY(sortColIdx, node->numCols);
560
+ WRITE_OID_ARRAY(sortOperators, node->numCols);
561
+ WRITE_OID_ARRAY(collations, node->numCols);
562
+ WRITE_BOOL_ARRAY(nullsFirst, node->numCols);
563
+ WRITE_BITMAPSET_FIELD(initParam);
564
+ }
565
+
566
+ static void
567
+ _outScan(StringInfo str, const Scan *node)
568
+ {
569
+ WRITE_NODE_TYPE("SCAN");
570
+
571
+ _outScanInfo(str, node);
572
+ }
573
+
574
+ static void
575
+ _outSeqScan(StringInfo str, const SeqScan *node)
576
+ {
577
+ WRITE_NODE_TYPE("SEQSCAN");
578
+
579
+ _outScanInfo(str, (const Scan *) node);
580
+ }
581
+
582
+ static void
583
+ _outYbSeqScan(StringInfo str, const YbSeqScan *node)
584
+ {
585
+ WRITE_NODE_TYPE("YBSEQSCAN");
586
+
587
+ _outScanInfo(str, (const Scan *) node);
588
+ WRITE_NODE_FIELD(yb_pushdown.quals);
589
+ WRITE_NODE_FIELD(yb_pushdown.colrefs);
590
+ }
591
+
592
+ static void
593
+ _outSampleScan(StringInfo str, const SampleScan *node)
594
+ {
595
+ WRITE_NODE_TYPE("SAMPLESCAN");
596
+
597
+ _outScanInfo(str, (const Scan *) node);
598
+
599
+ WRITE_NODE_FIELD(tablesample);
600
+ }
601
+
602
+ static void
603
+ _outIndexScan(StringInfo str, const IndexScan *node)
604
+ {
605
+ WRITE_NODE_TYPE("INDEXSCAN");
606
+
607
+ _outScanInfo(str, (const Scan *) node);
608
+
609
+ WRITE_OID_FIELD(indexid);
610
+ WRITE_NODE_FIELD(indexqual);
611
+ WRITE_NODE_FIELD(indexqualorig);
612
+ WRITE_NODE_FIELD(indexorderby);
613
+ WRITE_NODE_FIELD(indexorderbyorig);
614
+ WRITE_NODE_FIELD(indexorderbyops);
615
+ WRITE_NODE_FIELD(indextlist);
616
+ WRITE_ENUM_FIELD(indexorderdir, ScanDirection);
617
+ WRITE_NODE_FIELD(yb_idx_pushdown.quals);
618
+ WRITE_NODE_FIELD(yb_idx_pushdown.colrefs);
619
+ WRITE_NODE_FIELD(yb_rel_pushdown.quals);
620
+ WRITE_NODE_FIELD(yb_rel_pushdown.colrefs);
621
+ WRITE_INT_FIELD(yb_distinct_prefixlen);
622
+ WRITE_ENUM_FIELD(yb_lock_mechanism, YbLockMechanism);
623
+ }
624
+
625
+ static void
626
+ _outIndexOnlyScan(StringInfo str, const IndexOnlyScan *node)
627
+ {
628
+ WRITE_NODE_TYPE("INDEXONLYSCAN");
629
+
630
+ _outScanInfo(str, (const Scan *) node);
631
+
632
+ WRITE_OID_FIELD(indexid);
633
+ WRITE_NODE_FIELD(indexqual);
634
+ WRITE_NODE_FIELD(recheckqual);
635
+ WRITE_NODE_FIELD(indexorderby);
636
+ WRITE_NODE_FIELD(indextlist);
637
+ WRITE_ENUM_FIELD(indexorderdir, ScanDirection);
638
+ WRITE_NODE_FIELD(yb_pushdown.quals);
639
+ WRITE_NODE_FIELD(yb_pushdown.colrefs);
640
+ WRITE_INT_FIELD(yb_distinct_prefixlen);
641
+ WRITE_INT_FIELD(yb_num_decoded_pk_cols);
642
+ }
643
+
644
+ static void
645
+ _outBitmapIndexScan(StringInfo str, const BitmapIndexScan *node)
646
+ {
647
+ WRITE_NODE_TYPE("BITMAPINDEXSCAN");
648
+
649
+ _outScanInfo(str, (const Scan *) node);
650
+
651
+ WRITE_OID_FIELD(indexid);
652
+ WRITE_BOOL_FIELD(isshared);
653
+ WRITE_NODE_FIELD(indexqual);
654
+ WRITE_NODE_FIELD(indexqualorig);
655
+ }
656
+
657
+ static void
658
+ _outYbBitmapIndexScan(StringInfo str, const YbBitmapIndexScan *node)
659
+ {
660
+ WRITE_NODE_TYPE("YBBITMAPINDEXSCAN");
661
+
662
+ _outScanInfo(str, (const Scan *) node);
663
+
664
+ WRITE_OID_FIELD(indexid);
665
+ WRITE_BOOL_FIELD(isshared);
666
+ WRITE_NODE_FIELD(indexqual);
667
+ WRITE_NODE_FIELD(indexqualorig);
668
+
669
+ WRITE_NODE_FIELD(indextlist);
670
+
671
+ WRITE_NODE_FIELD(yb_idx_pushdown.quals);
672
+ WRITE_NODE_FIELD(yb_idx_pushdown.colrefs);
673
+ }
674
+
675
+ static void
676
+ _outBitmapHeapScan(StringInfo str, const BitmapHeapScan *node)
677
+ {
678
+ WRITE_NODE_TYPE("BITMAPHEAPSCAN");
679
+
680
+ _outScanInfo(str, (const Scan *) node);
681
+
682
+ WRITE_NODE_FIELD(bitmapqualorig);
683
+ }
684
+
685
+ static void
686
+ _outYbBitmapTableScan(StringInfo str, const YbBitmapTableScan *node)
687
+ {
688
+ WRITE_NODE_TYPE("YBBITMAPTABLESCAN");
689
+
690
+ _outScanInfo(str, (const Scan *) node);
691
+
692
+ WRITE_NODE_FIELD(rel_pushdown.quals);
693
+ WRITE_NODE_FIELD(rel_pushdown.colrefs);
694
+
695
+ WRITE_NODE_FIELD(recheck_pushdown.quals);
696
+ WRITE_NODE_FIELD(recheck_pushdown.colrefs);
697
+ WRITE_NODE_FIELD(recheck_local_quals);
698
+
699
+ WRITE_NODE_FIELD(fallback_pushdown.quals);
700
+ WRITE_NODE_FIELD(fallback_pushdown.colrefs);
701
+ WRITE_NODE_FIELD(fallback_local_quals);
702
+ }
703
+
704
+ static void
705
+ _outTidScan(StringInfo str, const TidScan *node)
706
+ {
707
+ WRITE_NODE_TYPE("TIDSCAN");
708
+
709
+ _outScanInfo(str, (const Scan *) node);
710
+
711
+ WRITE_NODE_FIELD(yb_rel_pushdown.quals);
712
+ WRITE_NODE_FIELD(yb_rel_pushdown.colrefs);
713
+ WRITE_NODE_FIELD(tidquals);
714
+ }
715
+
716
+ static void
717
+ _outTidRangeScan(StringInfo str, const TidRangeScan *node)
718
+ {
719
+ WRITE_NODE_TYPE("TIDRANGESCAN");
720
+
721
+ _outScanInfo(str, (const Scan *) node);
722
+
723
+ WRITE_NODE_FIELD(tidrangequals);
724
+ }
725
+
726
+ static void
727
+ _outSubqueryScan(StringInfo str, const SubqueryScan *node)
728
+ {
729
+ WRITE_NODE_TYPE("SUBQUERYSCAN");
730
+
731
+ _outScanInfo(str, (const Scan *) node);
732
+
733
+ WRITE_NODE_FIELD(subplan);
734
+ WRITE_ENUM_FIELD(scanstatus, SubqueryScanStatus);
735
+ }
736
+
737
+ static void
738
+ _outFunctionScan(StringInfo str, const FunctionScan *node)
739
+ {
740
+ WRITE_NODE_TYPE("FUNCTIONSCAN");
741
+
742
+ _outScanInfo(str, (const Scan *) node);
743
+
744
+ WRITE_NODE_FIELD(functions);
745
+ WRITE_BOOL_FIELD(funcordinality);
746
+ }
747
+
748
+ static void
749
+ _outTableFuncScan(StringInfo str, const TableFuncScan *node)
750
+ {
751
+ WRITE_NODE_TYPE("TABLEFUNCSCAN");
752
+
753
+ _outScanInfo(str, (const Scan *) node);
754
+
755
+ WRITE_NODE_FIELD(tablefunc);
756
+ }
757
+
758
+ static void
759
+ _outValuesScan(StringInfo str, const ValuesScan *node)
760
+ {
761
+ WRITE_NODE_TYPE("VALUESSCAN");
762
+
763
+ _outScanInfo(str, (const Scan *) node);
764
+
765
+ WRITE_NODE_FIELD(values_lists);
766
+ }
767
+
768
+ static void
769
+ _outCteScan(StringInfo str, const CteScan *node)
770
+ {
771
+ WRITE_NODE_TYPE("CTESCAN");
772
+
773
+ _outScanInfo(str, (const Scan *) node);
774
+
775
+ WRITE_INT_FIELD(ctePlanId);
776
+ WRITE_INT_FIELD(cteParam);
777
+ }
778
+
779
+ static void
780
+ _outNamedTuplestoreScan(StringInfo str, const NamedTuplestoreScan *node)
781
+ {
782
+ WRITE_NODE_TYPE("NAMEDTUPLESTORESCAN");
783
+
784
+ _outScanInfo(str, (const Scan *) node);
785
+
786
+ WRITE_STRING_FIELD(enrname);
787
+ }
788
+
789
+ static void
790
+ _outWorkTableScan(StringInfo str, const WorkTableScan *node)
791
+ {
792
+ WRITE_NODE_TYPE("WORKTABLESCAN");
793
+
794
+ _outScanInfo(str, (const Scan *) node);
795
+
796
+ WRITE_INT_FIELD(wtParam);
797
+ }
798
+
799
+ static void
800
+ _outForeignScan(StringInfo str, const ForeignScan *node)
801
+ {
802
+ WRITE_NODE_TYPE("FOREIGNSCAN");
803
+
804
+ _outScanInfo(str, (const Scan *) node);
805
+
806
+ WRITE_ENUM_FIELD(operation, CmdType);
807
+ WRITE_UINT_FIELD(resultRelation);
808
+ WRITE_OID_FIELD(fs_server);
809
+ WRITE_NODE_FIELD(fdw_exprs);
810
+ WRITE_NODE_FIELD(fdw_private);
811
+ WRITE_NODE_FIELD(fdw_scan_tlist);
812
+ WRITE_NODE_FIELD(fdw_recheck_quals);
813
+ WRITE_BITMAPSET_FIELD(fs_relids);
814
+ WRITE_BOOL_FIELD(fsSystemCol);
815
+ }
816
+
817
+ static void
818
+ _outCustomScan(StringInfo str, const CustomScan *node)
819
+ {
820
+ WRITE_NODE_TYPE("CUSTOMSCAN");
821
+
822
+ _outScanInfo(str, (const Scan *) node);
823
+
824
+ WRITE_UINT_FIELD(flags);
825
+ WRITE_NODE_FIELD(custom_plans);
826
+ WRITE_NODE_FIELD(custom_exprs);
827
+ WRITE_NODE_FIELD(custom_private);
828
+ WRITE_NODE_FIELD(custom_scan_tlist);
829
+ WRITE_BITMAPSET_FIELD(custom_relids);
830
+ /* CustomName is a key to lookup CustomScanMethods */
831
+ appendStringInfoString(str, " :methods ");
832
+ outToken(str, node->methods->CustomName);
833
+ }
834
+
835
+ static void
836
+ _outJoin(StringInfo str, const Join *node)
837
+ {
838
+ WRITE_NODE_TYPE("JOIN");
839
+
840
+ _outJoinPlanInfo(str, (const Join *) node);
841
+ }
842
+
843
+ static void
844
+ _outNestLoop(StringInfo str, const NestLoop *node)
845
+ {
846
+ WRITE_NODE_TYPE("NESTLOOP");
847
+
848
+ _outJoinPlanInfo(str, (const Join *) node);
849
+
850
+ WRITE_NODE_FIELD(nestParams);
851
+ }
852
+
853
+ static void
854
+ _outYbBatchedNestLoop(StringInfo str, const YbBatchedNestLoop *node)
855
+ {
856
+ WRITE_NODE_TYPE("YBBATCHEDNESTLOOP");
857
+
858
+ _outJoinPlanInfo(str, (const Join *) node);
859
+ WRITE_NODE_FIELD(nl.nestParams);
860
+ WRITE_INT_FIELD(num_hashClauseInfos);
861
+ appendStringInfoString(str, " :hashOps");
862
+ for (int i = 0; i < node->num_hashClauseInfos; i++)
863
+ appendStringInfo(str, " %u", node->hashClauseInfos[i].hashOp);
864
+
865
+ appendStringInfoString(str, " :innerHashAttNos");
866
+ for (int i = 0; i < node->num_hashClauseInfos; i++)
867
+ appendStringInfo(str, " %d", node->hashClauseInfos[i].innerHashAttNo);
868
+
869
+ appendStringInfoString(str, " :outerParamExprs");
870
+ for (int i = 0; i < node->num_hashClauseInfos; i++)
871
+ {
872
+ appendStringInfoString(str, " ");
873
+ outNode(str, node->hashClauseInfos[i].outerParamExpr);
874
+ }
875
+
876
+ appendStringInfoString(str, " :orig_expr");
877
+ for (int i = 0; i < node->num_hashClauseInfos; i++)
878
+ {
879
+ appendStringInfoString(str, " ");
880
+ outNode(str, node->hashClauseInfos[i].orig_expr);
881
+ }
882
+
883
+ WRITE_INT_FIELD(numSortCols);
884
+
885
+ appendStringInfoString(str, " :sortColIdx");
886
+ for (int i = 0; i < node->numSortCols; i++)
887
+ appendStringInfo(str, " %d", node->sortColIdx[i]);
888
+
889
+ appendStringInfoString(str, " :sortOperators");
890
+ for (int i = 0; i < node->numSortCols; i++)
891
+ appendStringInfo(str, " %u", node->sortOperators[i]);
892
+
893
+ appendStringInfoString(str, " :collations");
894
+ for (int i = 0; i < node->numSortCols; i++)
895
+ appendStringInfo(str, " %u", node->collations[i]);
896
+
897
+ appendStringInfoString(str, " :nullsFirst");
898
+ for (int i = 0; i < node->numSortCols; i++)
899
+ appendStringInfo(str, " %s", booltostr(node->nullsFirst[i]));
900
+ }
901
+
902
+ static void
903
+ _outMergeJoin(StringInfo str, const MergeJoin *node)
904
+ {
905
+ int numCols;
906
+
907
+ WRITE_NODE_TYPE("MERGEJOIN");
908
+
909
+ _outJoinPlanInfo(str, (const Join *) node);
910
+
911
+ WRITE_BOOL_FIELD(skip_mark_restore);
912
+ WRITE_NODE_FIELD(mergeclauses);
913
+
914
+ numCols = list_length(node->mergeclauses);
915
+
916
+ WRITE_OID_ARRAY(mergeFamilies, numCols);
917
+ WRITE_OID_ARRAY(mergeCollations, numCols);
918
+ WRITE_INT_ARRAY(mergeStrategies, numCols);
919
+ WRITE_BOOL_ARRAY(mergeNullsFirst, numCols);
920
+ }
921
+
922
+ static void
923
+ _outHashJoin(StringInfo str, const HashJoin *node)
924
+ {
925
+ WRITE_NODE_TYPE("HASHJOIN");
926
+
927
+ _outJoinPlanInfo(str, (const Join *) node);
928
+
929
+ WRITE_NODE_FIELD(hashclauses);
930
+ WRITE_NODE_FIELD(hashoperators);
931
+ WRITE_NODE_FIELD(hashcollations);
932
+ WRITE_NODE_FIELD(hashkeys);
933
+ }
934
+
935
+ static void
936
+ _outAgg(StringInfo str, const Agg *node)
937
+ {
938
+ WRITE_NODE_TYPE("AGG");
939
+
940
+ _outPlanInfo(str, (const Plan *) node);
941
+
942
+ WRITE_ENUM_FIELD(aggstrategy, AggStrategy);
943
+ WRITE_ENUM_FIELD(aggsplit, AggSplit);
944
+ WRITE_INT_FIELD(numCols);
945
+ WRITE_ATTRNUMBER_ARRAY(grpColIdx, node->numCols);
946
+ WRITE_OID_ARRAY(grpOperators, node->numCols);
947
+ WRITE_OID_ARRAY(grpCollations, node->numCols);
948
+ WRITE_LONG_FIELD(numGroups);
949
+ WRITE_UINT64_FIELD(transitionSpace);
950
+ WRITE_BITMAPSET_FIELD(aggParams);
951
+ WRITE_NODE_FIELD(groupingSets);
952
+ WRITE_NODE_FIELD(chain);
953
+ }
954
+
955
+ static void
956
+ _outWindowAgg(StringInfo str, const WindowAgg *node)
957
+ {
958
+ WRITE_NODE_TYPE("WINDOWAGG");
959
+
960
+ _outPlanInfo(str, (const Plan *) node);
961
+
962
+ WRITE_UINT_FIELD(winref);
963
+ WRITE_INT_FIELD(partNumCols);
964
+ WRITE_ATTRNUMBER_ARRAY(partColIdx, node->partNumCols);
965
+ WRITE_OID_ARRAY(partOperators, node->partNumCols);
966
+ WRITE_OID_ARRAY(partCollations, node->partNumCols);
967
+ WRITE_INT_FIELD(ordNumCols);
968
+ WRITE_ATTRNUMBER_ARRAY(ordColIdx, node->ordNumCols);
969
+ WRITE_OID_ARRAY(ordOperators, node->ordNumCols);
970
+ WRITE_OID_ARRAY(ordCollations, node->ordNumCols);
971
+ WRITE_INT_FIELD(frameOptions);
972
+ WRITE_NODE_FIELD(startOffset);
973
+ WRITE_NODE_FIELD(endOffset);
974
+ WRITE_NODE_FIELD(runCondition);
975
+ WRITE_NODE_FIELD(runConditionOrig);
976
+ WRITE_OID_FIELD(startInRangeFunc);
977
+ WRITE_OID_FIELD(endInRangeFunc);
978
+ WRITE_OID_FIELD(inRangeColl);
979
+ WRITE_BOOL_FIELD(inRangeAsc);
980
+ WRITE_BOOL_FIELD(inRangeNullsFirst);
981
+ WRITE_BOOL_FIELD(topWindow);
982
+ }
983
+
984
+ static void
985
+ _outGroup(StringInfo str, const Group *node)
986
+ {
987
+ WRITE_NODE_TYPE("GROUP");
988
+
989
+ _outPlanInfo(str, (const Plan *) node);
990
+
991
+ WRITE_INT_FIELD(numCols);
992
+ WRITE_ATTRNUMBER_ARRAY(grpColIdx, node->numCols);
993
+ WRITE_OID_ARRAY(grpOperators, node->numCols);
994
+ WRITE_OID_ARRAY(grpCollations, node->numCols);
995
+ }
996
+
997
+ static void
998
+ _outMaterial(StringInfo str, const Material *node)
999
+ {
1000
+ WRITE_NODE_TYPE("MATERIAL");
1001
+
1002
+ _outPlanInfo(str, (const Plan *) node);
1003
+ }
1004
+
1005
+ static void
1006
+ _outMemoize(StringInfo str, const Memoize *node)
1007
+ {
1008
+ WRITE_NODE_TYPE("MEMOIZE");
1009
+
1010
+ _outPlanInfo(str, (const Plan *) node);
1011
+
1012
+ WRITE_INT_FIELD(numKeys);
1013
+ WRITE_OID_ARRAY(hashOperators, node->numKeys);
1014
+ WRITE_OID_ARRAY(collations, node->numKeys);
1015
+ WRITE_NODE_FIELD(param_exprs);
1016
+ WRITE_BOOL_FIELD(singlerow);
1017
+ WRITE_BOOL_FIELD(binary_mode);
1018
+ WRITE_UINT_FIELD(est_entries);
1019
+ WRITE_BITMAPSET_FIELD(keyparamids);
1020
+ }
1021
+
1022
+ static void
1023
+ _outSortInfo(StringInfo str, const Sort *node)
1024
+ {
1025
+ _outPlanInfo(str, (const Plan *) node);
1026
+
1027
+ WRITE_INT_FIELD(numCols);
1028
+ WRITE_ATTRNUMBER_ARRAY(sortColIdx, node->numCols);
1029
+ WRITE_OID_ARRAY(sortOperators, node->numCols);
1030
+ WRITE_OID_ARRAY(collations, node->numCols);
1031
+ WRITE_BOOL_ARRAY(nullsFirst, node->numCols);
1032
+ }
1033
+
1034
+ static void
1035
+ _outSort(StringInfo str, const Sort *node)
1036
+ {
1037
+ WRITE_NODE_TYPE("SORT");
1038
+
1039
+ _outSortInfo(str, node);
1040
+ }
1041
+
1042
+ static void
1043
+ _outIncrementalSort(StringInfo str, const IncrementalSort *node)
1044
+ {
1045
+ WRITE_NODE_TYPE("INCREMENTALSORT");
1046
+
1047
+ _outSortInfo(str, (const Sort *) node);
1048
+
1049
+ WRITE_INT_FIELD(nPresortedCols);
1050
+ }
1051
+
1052
+ static void
1053
+ _outUnique(StringInfo str, const Unique *node)
1054
+ {
1055
+ WRITE_NODE_TYPE("UNIQUE");
1056
+
1057
+ _outPlanInfo(str, (const Plan *) node);
1058
+
1059
+ WRITE_INT_FIELD(numCols);
1060
+ WRITE_ATTRNUMBER_ARRAY(uniqColIdx, node->numCols);
1061
+ WRITE_OID_ARRAY(uniqOperators, node->numCols);
1062
+ WRITE_OID_ARRAY(uniqCollations, node->numCols);
1063
+ }
1064
+
1065
+ static void
1066
+ _outHash(StringInfo str, const Hash *node)
1067
+ {
1068
+ WRITE_NODE_TYPE("HASH");
1069
+
1070
+ _outPlanInfo(str, (const Plan *) node);
1071
+
1072
+ WRITE_NODE_FIELD(hashkeys);
1073
+ WRITE_OID_FIELD(skewTable);
1074
+ WRITE_INT_FIELD(skewColumn);
1075
+ WRITE_BOOL_FIELD(skewInherit);
1076
+ WRITE_FLOAT_FIELD(rows_total, "%.0f");
1077
+
1078
+ /* YB */
1079
+ WRITE_STRING_FIELD(ybSkewTableName);
1080
+ }
1081
+
1082
+ static void
1083
+ _outSetOp(StringInfo str, const SetOp *node)
1084
+ {
1085
+ WRITE_NODE_TYPE("SETOP");
1086
+
1087
+ _outPlanInfo(str, (const Plan *) node);
1088
+
1089
+ WRITE_ENUM_FIELD(cmd, SetOpCmd);
1090
+ WRITE_ENUM_FIELD(strategy, SetOpStrategy);
1091
+ WRITE_INT_FIELD(numCols);
1092
+ WRITE_ATTRNUMBER_ARRAY(dupColIdx, node->numCols);
1093
+ WRITE_OID_ARRAY(dupOperators, node->numCols);
1094
+ WRITE_OID_ARRAY(dupCollations, node->numCols);
1095
+ WRITE_INT_FIELD(flagColIdx);
1096
+ WRITE_INT_FIELD(firstFlag);
1097
+ WRITE_LONG_FIELD(numGroups);
1098
+ }
1099
+
1100
+ static void
1101
+ _outLockRows(StringInfo str, const LockRows *node)
1102
+ {
1103
+ WRITE_NODE_TYPE("LOCKROWS");
1104
+
1105
+ _outPlanInfo(str, (const Plan *) node);
1106
+
1107
+ WRITE_NODE_FIELD(rowMarks);
1108
+ WRITE_INT_FIELD(epqParam);
1109
+ }
1110
+
1111
+ static void
1112
+ _outLimit(StringInfo str, const Limit *node)
1113
+ {
1114
+ WRITE_NODE_TYPE("LIMIT");
1115
+
1116
+ _outPlanInfo(str, (const Plan *) node);
1117
+
1118
+ WRITE_NODE_FIELD(limitOffset);
1119
+ WRITE_NODE_FIELD(limitCount);
1120
+ WRITE_ENUM_FIELD(limitOption, LimitOption);
1121
+ WRITE_INT_FIELD(uniqNumCols);
1122
+ WRITE_ATTRNUMBER_ARRAY(uniqColIdx, node->uniqNumCols);
1123
+ WRITE_OID_ARRAY(uniqOperators, node->uniqNumCols);
1124
+ WRITE_OID_ARRAY(uniqCollations, node->uniqNumCols);
1125
+ }
1126
+
1127
+ static void
1128
+ _outNestLoopParam(StringInfo str, const NestLoopParam *node)
1129
+ {
1130
+ WRITE_NODE_TYPE("NESTLOOPPARAM");
1131
+
1132
+ WRITE_INT_FIELD(paramno);
1133
+ WRITE_NODE_FIELD(paramval);
1134
+ WRITE_INT_FIELD(yb_batch_size);
1135
+ }
1136
+
1137
+ static void
1138
+ _outPlanRowMark(StringInfo str, const PlanRowMark *node)
1139
+ {
1140
+ WRITE_NODE_TYPE("PLANROWMARK");
1141
+
1142
+ WRITE_UINT_FIELD(rti);
1143
+ WRITE_UINT_FIELD(prti);
1144
+ WRITE_UINT_FIELD(rowmarkId);
1145
+ WRITE_ENUM_FIELD(markType, RowMarkType);
1146
+ WRITE_INT_FIELD(allMarkTypes);
1147
+ WRITE_ENUM_FIELD(strength, LockClauseStrength);
1148
+ WRITE_ENUM_FIELD(waitPolicy, LockWaitPolicy);
1149
+ WRITE_BOOL_FIELD(isParent);
1150
+ }
1151
+
1152
+ static void
1153
+ _outPartitionPruneInfo(StringInfo str, const PartitionPruneInfo *node)
1154
+ {
1155
+ WRITE_NODE_TYPE("PARTITIONPRUNEINFO");
1156
+
1157
+ WRITE_NODE_FIELD(prune_infos);
1158
+ WRITE_BITMAPSET_FIELD(other_subplans);
1159
+ }
1160
+
1161
+ static void
1162
+ _outPartitionedRelPruneInfo(StringInfo str, const PartitionedRelPruneInfo *node)
1163
+ {
1164
+ WRITE_NODE_TYPE("PARTITIONEDRELPRUNEINFO");
1165
+
1166
+ WRITE_UINT_FIELD(rtindex);
1167
+ WRITE_BITMAPSET_FIELD(present_parts);
1168
+ WRITE_INT_FIELD(nparts);
1169
+ WRITE_INT_ARRAY(subplan_map, node->nparts);
1170
+ WRITE_INT_ARRAY(subpart_map, node->nparts);
1171
+ WRITE_OID_ARRAY(relid_map, node->nparts);
1172
+ WRITE_NODE_FIELD(initial_pruning_steps);
1173
+ WRITE_NODE_FIELD(exec_pruning_steps);
1174
+ WRITE_BITMAPSET_FIELD(execparamids);
1175
+ }
1176
+
1177
+ static void
1178
+ _outPartitionPruneStepOp(StringInfo str, const PartitionPruneStepOp *node)
1179
+ {
1180
+ WRITE_NODE_TYPE("PARTITIONPRUNESTEPOP");
1181
+
1182
+ WRITE_INT_FIELD(step.step_id);
1183
+ WRITE_INT_FIELD(opstrategy);
1184
+ WRITE_NODE_FIELD(exprs);
1185
+ WRITE_NODE_FIELD(cmpfns);
1186
+ WRITE_BITMAPSET_FIELD(nullkeys);
1187
+ }
1188
+
1189
+ static void
1190
+ _outYbPartitionPruneStepFuncOp(StringInfo str,
1191
+ const YbPartitionPruneStepFuncOp *node)
1192
+ {
1193
+ WRITE_NODE_TYPE("PARTITIONPRUNESTEPFUNCOP");
1194
+
1195
+ WRITE_INT_FIELD(step.step_id);
1196
+ WRITE_NODE_FIELD(exprs);
1197
+ }
1198
+
1199
+ static void
1200
+ _outPartitionPruneStepCombine(StringInfo str, const PartitionPruneStepCombine *node)
1201
+ {
1202
+ WRITE_NODE_TYPE("PARTITIONPRUNESTEPCOMBINE");
1203
+
1204
+ WRITE_INT_FIELD(step.step_id);
1205
+ WRITE_ENUM_FIELD(combineOp, PartitionPruneCombineOp);
1206
+ WRITE_NODE_FIELD(source_stepids);
1207
+ }
1208
+
1209
+ static void
1210
+ _outPlanInvalItem(StringInfo str, const PlanInvalItem *node)
1211
+ {
1212
+ WRITE_NODE_TYPE("PLANINVALITEM");
1213
+
1214
+ WRITE_INT_FIELD(cacheId);
1215
+ WRITE_UINT_FIELD(hashValue);
1216
+ }
1217
+
1218
+ /*****************************************************************************
1219
+ *
1220
+ * Stuff from primnodes.h.
1221
+ *
1222
+ *****************************************************************************/
1223
+
1224
+ static void
1225
+ _outAlias(StringInfo str, const Alias *node)
1226
+ {
1227
+ WRITE_NODE_TYPE("ALIAS");
1228
+
1229
+ WRITE_STRING_FIELD(aliasname);
1230
+ WRITE_NODE_FIELD(colnames);
1231
+ }
1232
+
1233
+ static void
1234
+ _outRangeVar(StringInfo str, const RangeVar *node)
1235
+ {
1236
+ WRITE_NODE_TYPE("RANGEVAR");
1237
+
1238
+ /*
1239
+ * we deliberately ignore catalogname here, since it is presently not
1240
+ * semantically meaningful
1241
+ */
1242
+ WRITE_STRING_FIELD(schemaname);
1243
+ WRITE_STRING_FIELD(relname);
1244
+ WRITE_BOOL_FIELD(inh);
1245
+ WRITE_CHAR_FIELD(relpersistence);
1246
+ WRITE_NODE_FIELD(alias);
1247
+ WRITE_LOCATION_FIELD(location);
1248
+ }
1249
+
1250
+ static void
1251
+ _outTableFunc(StringInfo str, const TableFunc *node)
1252
+ {
1253
+ WRITE_NODE_TYPE("TABLEFUNC");
1254
+
1255
+ WRITE_NODE_FIELD(ns_uris);
1256
+ WRITE_NODE_FIELD(ns_names);
1257
+ WRITE_NODE_FIELD(docexpr);
1258
+ WRITE_NODE_FIELD(rowexpr);
1259
+ WRITE_NODE_FIELD(colnames);
1260
+ WRITE_NODE_FIELD(coltypes);
1261
+ WRITE_NODE_FIELD(coltypmods);
1262
+ WRITE_NODE_FIELD(colcollations);
1263
+ WRITE_NODE_FIELD(colexprs);
1264
+ WRITE_NODE_FIELD(coldefexprs);
1265
+ WRITE_BITMAPSET_FIELD(notnulls);
1266
+ WRITE_INT_FIELD(ordinalitycol);
1267
+ WRITE_LOCATION_FIELD(location);
1268
+ }
1269
+
1270
+ static void
1271
+ _outIntoClause(StringInfo str, const IntoClause *node)
1272
+ {
1273
+ WRITE_NODE_TYPE("INTOCLAUSE");
1274
+
1275
+ WRITE_NODE_FIELD(rel);
1276
+ WRITE_NODE_FIELD(colNames);
1277
+ WRITE_STRING_FIELD(accessMethod);
1278
+ WRITE_NODE_FIELD(options);
1279
+ WRITE_ENUM_FIELD(onCommit, OnCommitAction);
1280
+ WRITE_STRING_FIELD(tableSpaceName);
1281
+ WRITE_NODE_FIELD(viewQuery);
1282
+ WRITE_BOOL_FIELD(skipData);
1283
+ }
1284
+
1285
+ static void
1286
+ _outVar(StringInfo str, const Var *node)
1287
+ {
1288
+ WRITE_NODE_TYPE("VAR");
1289
+
1290
+ WRITE_INT_FIELD(varno);
1291
+ WRITE_INT_FIELD(varattno);
1292
+ WRITE_OID_FIELD(vartype);
1293
+ WRITE_INT_FIELD(vartypmod);
1294
+ WRITE_OID_FIELD(varcollid);
1295
+ WRITE_UINT_FIELD(varlevelsup);
1296
+ WRITE_UINT_FIELD(varnosyn);
1297
+ WRITE_INT_FIELD(varattnosyn);
1298
+ WRITE_LOCATION_FIELD(location);
1299
+ }
1300
+
1301
+ static void
1302
+ _outYbBatchedExpr(StringInfo str, const YbBatchedExpr *node)
1303
+ {
1304
+ WRITE_NODE_TYPE("BATCHEDEXPR");
1305
+ outNode(str, node->orig_expr);
1306
+ }
1307
+
1308
+ static void
1309
+ _outConst(StringInfo str, const Const *node)
1310
+ {
1311
+ WRITE_NODE_TYPE("CONST");
1312
+
1313
+ WRITE_OID_FIELD(consttype);
1314
+ WRITE_INT_FIELD(consttypmod);
1315
+ WRITE_OID_FIELD(constcollid);
1316
+ WRITE_INT_FIELD(constlen);
1317
+ WRITE_BOOL_FIELD(constbyval);
1318
+ WRITE_BOOL_FIELD(constisnull);
1319
+ WRITE_LOCATION_FIELD(location);
1320
+
1321
+ appendStringInfoString(str, " :constvalue ");
1322
+ if (node->constisnull)
1323
+ appendStringInfoString(str, "<>");
1324
+ else
1325
+ outDatum(str, node->constvalue, node->constlen, node->constbyval);
1326
+ }
1327
+
1328
+ static void
1329
+ _outParam(StringInfo str, const Param *node)
1330
+ {
1331
+ WRITE_NODE_TYPE("PARAM");
1332
+
1333
+ WRITE_ENUM_FIELD(paramkind, ParamKind);
1334
+ WRITE_INT_FIELD(paramid);
1335
+ WRITE_OID_FIELD(paramtype);
1336
+ WRITE_INT_FIELD(paramtypmod);
1337
+ WRITE_OID_FIELD(paramcollid);
1338
+ WRITE_LOCATION_FIELD(location);
1339
+ }
1340
+
1341
+ static void
1342
+ _outAggref(StringInfo str, const Aggref *node)
1343
+ {
1344
+ WRITE_NODE_TYPE("AGGREF");
1345
+
1346
+ WRITE_OID_FIELD(aggfnoid);
1347
+ WRITE_OID_FIELD(aggtype);
1348
+ WRITE_OID_FIELD(aggcollid);
1349
+ WRITE_OID_FIELD(inputcollid);
1350
+ WRITE_OID_FIELD(aggtranstype);
1351
+ WRITE_NODE_FIELD(aggargtypes);
1352
+ WRITE_NODE_FIELD(aggdirectargs);
1353
+ WRITE_NODE_FIELD(args);
1354
+ WRITE_NODE_FIELD(aggorder);
1355
+ WRITE_NODE_FIELD(aggdistinct);
1356
+ WRITE_NODE_FIELD(aggfilter);
1357
+ WRITE_BOOL_FIELD(aggstar);
1358
+ WRITE_BOOL_FIELD(aggvariadic);
1359
+ WRITE_CHAR_FIELD(aggkind);
1360
+ WRITE_UINT_FIELD(agglevelsup);
1361
+ WRITE_ENUM_FIELD(aggsplit, AggSplit);
1362
+ WRITE_INT_FIELD(aggno);
1363
+ WRITE_INT_FIELD(aggtransno);
1364
+ WRITE_LOCATION_FIELD(location);
1365
+ }
1366
+
1367
+ static void
1368
+ _outGroupingFunc(StringInfo str, const GroupingFunc *node)
1369
+ {
1370
+ WRITE_NODE_TYPE("GROUPINGFUNC");
1371
+
1372
+ WRITE_NODE_FIELD(args);
1373
+ WRITE_NODE_FIELD(refs);
1374
+ WRITE_NODE_FIELD(cols);
1375
+ WRITE_UINT_FIELD(agglevelsup);
1376
+ WRITE_LOCATION_FIELD(location);
1377
+ }
1378
+
1379
+ static void
1380
+ _outWindowFunc(StringInfo str, const WindowFunc *node)
1381
+ {
1382
+ WRITE_NODE_TYPE("WINDOWFUNC");
1383
+
1384
+ WRITE_OID_FIELD(winfnoid);
1385
+ WRITE_OID_FIELD(wintype);
1386
+ WRITE_OID_FIELD(wincollid);
1387
+ WRITE_OID_FIELD(inputcollid);
1388
+ WRITE_NODE_FIELD(args);
1389
+ WRITE_NODE_FIELD(aggfilter);
1390
+ WRITE_UINT_FIELD(winref);
1391
+ WRITE_BOOL_FIELD(winstar);
1392
+ WRITE_BOOL_FIELD(winagg);
1393
+ WRITE_LOCATION_FIELD(location);
1394
+ }
1395
+
1396
+ static void
1397
+ _outSubscriptingRef(StringInfo str, const SubscriptingRef *node)
1398
+ {
1399
+ WRITE_NODE_TYPE("SUBSCRIPTINGREF");
1400
+
1401
+ WRITE_OID_FIELD(refcontainertype);
1402
+ WRITE_OID_FIELD(refelemtype);
1403
+ WRITE_OID_FIELD(refrestype);
1404
+ WRITE_INT_FIELD(reftypmod);
1405
+ WRITE_OID_FIELD(refcollid);
1406
+ WRITE_NODE_FIELD(refupperindexpr);
1407
+ WRITE_NODE_FIELD(reflowerindexpr);
1408
+ WRITE_NODE_FIELD(refexpr);
1409
+ WRITE_NODE_FIELD(refassgnexpr);
1410
+ }
1411
+
1412
+ static void
1413
+ _outFuncExpr(StringInfo str, const FuncExpr *node)
1414
+ {
1415
+ WRITE_NODE_TYPE("FUNCEXPR");
1416
+
1417
+ WRITE_OID_FIELD(funcid);
1418
+ WRITE_OID_FIELD(funcresulttype);
1419
+ WRITE_BOOL_FIELD(funcretset);
1420
+ WRITE_BOOL_FIELD(funcvariadic);
1421
+ WRITE_ENUM_FIELD(funcformat, CoercionForm);
1422
+ WRITE_OID_FIELD(funccollid);
1423
+ WRITE_OID_FIELD(inputcollid);
1424
+ WRITE_NODE_FIELD(args);
1425
+ WRITE_LOCATION_FIELD(location);
1426
+ }
1427
+
1428
+ static void
1429
+ _outNamedArgExpr(StringInfo str, const NamedArgExpr *node)
1430
+ {
1431
+ WRITE_NODE_TYPE("NAMEDARGEXPR");
1432
+
1433
+ WRITE_NODE_FIELD(arg);
1434
+ WRITE_STRING_FIELD(name);
1435
+ WRITE_INT_FIELD(argnumber);
1436
+ WRITE_LOCATION_FIELD(location);
1437
+ }
1438
+
1439
+ static void
1440
+ _outOpExpr(StringInfo str, const OpExpr *node)
1441
+ {
1442
+ WRITE_NODE_TYPE("OPEXPR");
1443
+
1444
+ WRITE_OID_FIELD(opno);
1445
+ WRITE_OID_FIELD(opfuncid);
1446
+ WRITE_OID_FIELD(opresulttype);
1447
+ WRITE_BOOL_FIELD(opretset);
1448
+ WRITE_OID_FIELD(opcollid);
1449
+ WRITE_OID_FIELD(inputcollid);
1450
+ WRITE_NODE_FIELD(args);
1451
+ WRITE_LOCATION_FIELD(location);
1452
+ }
1453
+
1454
+ static void
1455
+ _outDistinctExpr(StringInfo str, const DistinctExpr *node)
1456
+ {
1457
+ WRITE_NODE_TYPE("DISTINCTEXPR");
1458
+
1459
+ WRITE_OID_FIELD(opno);
1460
+ WRITE_OID_FIELD(opfuncid);
1461
+ WRITE_OID_FIELD(opresulttype);
1462
+ WRITE_BOOL_FIELD(opretset);
1463
+ WRITE_OID_FIELD(opcollid);
1464
+ WRITE_OID_FIELD(inputcollid);
1465
+ WRITE_NODE_FIELD(args);
1466
+ WRITE_LOCATION_FIELD(location);
1467
+ }
1468
+
1469
+ static void
1470
+ _outNullIfExpr(StringInfo str, const NullIfExpr *node)
1471
+ {
1472
+ WRITE_NODE_TYPE("NULLIFEXPR");
1473
+
1474
+ WRITE_OID_FIELD(opno);
1475
+ WRITE_OID_FIELD(opfuncid);
1476
+ WRITE_OID_FIELD(opresulttype);
1477
+ WRITE_BOOL_FIELD(opretset);
1478
+ WRITE_OID_FIELD(opcollid);
1479
+ WRITE_OID_FIELD(inputcollid);
1480
+ WRITE_NODE_FIELD(args);
1481
+ WRITE_LOCATION_FIELD(location);
1482
+ }
1483
+
1484
+ static void
1485
+ _outScalarArrayOpExpr(StringInfo str, const ScalarArrayOpExpr *node)
1486
+ {
1487
+ WRITE_NODE_TYPE("SCALARARRAYOPEXPR");
1488
+
1489
+ WRITE_OID_FIELD(opno);
1490
+ WRITE_OID_FIELD(opfuncid);
1491
+ if (yb_serialize_expression_version != 11)
1492
+ {
1493
+ WRITE_OID_FIELD(hashfuncid);
1494
+ WRITE_OID_FIELD(negfuncid);
1495
+ }
1496
+ WRITE_BOOL_FIELD(useOr);
1497
+ WRITE_OID_FIELD(inputcollid);
1498
+ WRITE_NODE_FIELD(args);
1499
+ WRITE_LOCATION_FIELD(location);
1500
+ }
1501
+
1502
+ static void
1503
+ _outBoolExpr(StringInfo str, const BoolExpr *node)
1504
+ {
1505
+ char *opstr = NULL;
1506
+
1507
+ WRITE_NODE_TYPE("BOOLEXPR");
1508
+
1509
+ /* do-it-yourself enum representation */
1510
+ switch (node->boolop)
1511
+ {
1512
+ case AND_EXPR:
1513
+ opstr = "and";
1514
+ break;
1515
+ case OR_EXPR:
1516
+ opstr = "or";
1517
+ break;
1518
+ case NOT_EXPR:
1519
+ opstr = "not";
1520
+ break;
1521
+ }
1522
+ appendStringInfoString(str, " :boolop ");
1523
+ outToken(str, opstr);
1524
+
1525
+ WRITE_NODE_FIELD(args);
1526
+ WRITE_LOCATION_FIELD(location);
1527
+ }
1528
+
1529
+ static void
1530
+ _outSubLink(StringInfo str, const SubLink *node)
1531
+ {
1532
+ WRITE_NODE_TYPE("SUBLINK");
1533
+
1534
+ WRITE_ENUM_FIELD(subLinkType, SubLinkType);
1535
+ WRITE_INT_FIELD(subLinkId);
1536
+ WRITE_NODE_FIELD(testexpr);
1537
+ WRITE_NODE_FIELD(operName);
1538
+ WRITE_NODE_FIELD(subselect);
1539
+ WRITE_LOCATION_FIELD(location);
1540
+ }
1541
+
1542
+ static void
1543
+ _outSubPlan(StringInfo str, const SubPlan *node)
1544
+ {
1545
+ WRITE_NODE_TYPE("SUBPLAN");
1546
+
1547
+ WRITE_ENUM_FIELD(subLinkType, SubLinkType);
1548
+ WRITE_NODE_FIELD(testexpr);
1549
+ WRITE_NODE_FIELD(paramIds);
1550
+ WRITE_INT_FIELD(plan_id);
1551
+ WRITE_STRING_FIELD(plan_name);
1552
+ WRITE_OID_FIELD(firstColType);
1553
+ WRITE_INT_FIELD(firstColTypmod);
1554
+ WRITE_OID_FIELD(firstColCollation);
1555
+ WRITE_BOOL_FIELD(useHashTable);
1556
+ WRITE_BOOL_FIELD(unknownEqFalse);
1557
+ WRITE_BOOL_FIELD(parallel_safe);
1558
+ WRITE_NODE_FIELD(setParam);
1559
+ WRITE_NODE_FIELD(parParam);
1560
+ WRITE_NODE_FIELD(args);
1561
+ WRITE_FLOAT_FIELD(startup_cost, "%.2f");
1562
+ WRITE_FLOAT_FIELD(per_call_cost, "%.2f");
1563
+ }
1564
+
1565
+ static void
1566
+ _outAlternativeSubPlan(StringInfo str, const AlternativeSubPlan *node)
1567
+ {
1568
+ WRITE_NODE_TYPE("ALTERNATIVESUBPLAN");
1569
+
1570
+ WRITE_NODE_FIELD(subplans);
1571
+ }
1572
+
1573
+ static void
1574
+ _outFieldSelect(StringInfo str, const FieldSelect *node)
1575
+ {
1576
+ WRITE_NODE_TYPE("FIELDSELECT");
1577
+
1578
+ WRITE_NODE_FIELD(arg);
1579
+ WRITE_INT_FIELD(fieldnum);
1580
+ WRITE_OID_FIELD(resulttype);
1581
+ WRITE_INT_FIELD(resulttypmod);
1582
+ WRITE_OID_FIELD(resultcollid);
1583
+ }
1584
+
1585
+ static void
1586
+ _outFieldStore(StringInfo str, const FieldStore *node)
1587
+ {
1588
+ WRITE_NODE_TYPE("FIELDSTORE");
1589
+
1590
+ WRITE_NODE_FIELD(arg);
1591
+ WRITE_NODE_FIELD(newvals);
1592
+ WRITE_NODE_FIELD(fieldnums);
1593
+ WRITE_OID_FIELD(resulttype);
1594
+ }
1595
+
1596
+ static void
1597
+ _outRelabelType(StringInfo str, const RelabelType *node)
1598
+ {
1599
+ WRITE_NODE_TYPE("RELABELTYPE");
1600
+
1601
+ WRITE_NODE_FIELD(arg);
1602
+ WRITE_OID_FIELD(resulttype);
1603
+ WRITE_INT_FIELD(resulttypmod);
1604
+ WRITE_OID_FIELD(resultcollid);
1605
+ WRITE_ENUM_FIELD(relabelformat, CoercionForm);
1606
+ WRITE_LOCATION_FIELD(location);
1607
+ }
1608
+
1609
+ static void
1610
+ _outCoerceViaIO(StringInfo str, const CoerceViaIO *node)
1611
+ {
1612
+ WRITE_NODE_TYPE("COERCEVIAIO");
1613
+
1614
+ WRITE_NODE_FIELD(arg);
1615
+ WRITE_OID_FIELD(resulttype);
1616
+ WRITE_OID_FIELD(resultcollid);
1617
+ WRITE_ENUM_FIELD(coerceformat, CoercionForm);
1618
+ WRITE_LOCATION_FIELD(location);
1619
+ }
1620
+
1621
+ static void
1622
+ _outArrayCoerceExpr(StringInfo str, const ArrayCoerceExpr *node)
1623
+ {
1624
+ WRITE_NODE_TYPE("ARRAYCOERCEEXPR");
1625
+
1626
+ WRITE_NODE_FIELD(arg);
1627
+ WRITE_NODE_FIELD(elemexpr);
1628
+ WRITE_OID_FIELD(resulttype);
1629
+ WRITE_INT_FIELD(resulttypmod);
1630
+ WRITE_OID_FIELD(resultcollid);
1631
+ WRITE_ENUM_FIELD(coerceformat, CoercionForm);
1632
+ WRITE_LOCATION_FIELD(location);
1633
+ }
1634
+
1635
+ static void
1636
+ _outConvertRowtypeExpr(StringInfo str, const ConvertRowtypeExpr *node)
1637
+ {
1638
+ WRITE_NODE_TYPE("CONVERTROWTYPEEXPR");
1639
+
1640
+ WRITE_NODE_FIELD(arg);
1641
+ WRITE_OID_FIELD(resulttype);
1642
+ WRITE_ENUM_FIELD(convertformat, CoercionForm);
1643
+ WRITE_LOCATION_FIELD(location);
1644
+ }
1645
+
1646
+ static void
1647
+ _outCollateExpr(StringInfo str, const CollateExpr *node)
1648
+ {
1649
+ WRITE_NODE_TYPE("COLLATEEXPR");
1650
+
1651
+ WRITE_NODE_FIELD(arg);
1652
+ WRITE_OID_FIELD(collOid);
1653
+ WRITE_LOCATION_FIELD(location);
1654
+ }
1655
+
1656
+ static void
1657
+ _outCaseExpr(StringInfo str, const CaseExpr *node)
1658
+ {
1659
+ WRITE_NODE_TYPE("CASEEXPR");
1660
+
1661
+ WRITE_OID_FIELD(casetype);
1662
+ WRITE_OID_FIELD(casecollid);
1663
+ WRITE_NODE_FIELD(arg);
1664
+ WRITE_NODE_FIELD(args);
1665
+ WRITE_NODE_FIELD(defresult);
1666
+ WRITE_LOCATION_FIELD(location);
1667
+ }
1668
+
1669
+ static void
1670
+ _outCaseWhen(StringInfo str, const CaseWhen *node)
1671
+ {
1672
+ WRITE_NODE_TYPE("CASEWHEN");
1673
+
1674
+ WRITE_NODE_FIELD(expr);
1675
+ WRITE_NODE_FIELD(result);
1676
+ WRITE_LOCATION_FIELD(location);
1677
+ }
1678
+
1679
+ static void
1680
+ _outCaseTestExpr(StringInfo str, const CaseTestExpr *node)
1681
+ {
1682
+ WRITE_NODE_TYPE("CASETESTEXPR");
1683
+
1684
+ WRITE_OID_FIELD(typeId);
1685
+ WRITE_INT_FIELD(typeMod);
1686
+ WRITE_OID_FIELD(collation);
1687
+ }
1688
+
1689
+ static void
1690
+ _outArrayExpr(StringInfo str, const ArrayExpr *node)
1691
+ {
1692
+ WRITE_NODE_TYPE("ARRAYEXPR");
1693
+
1694
+ WRITE_OID_FIELD(array_typeid);
1695
+ WRITE_OID_FIELD(array_collid);
1696
+ WRITE_OID_FIELD(element_typeid);
1697
+ WRITE_NODE_FIELD(elements);
1698
+ WRITE_BOOL_FIELD(multidims);
1699
+ WRITE_LOCATION_FIELD(location);
1700
+ }
1701
+
1702
+ static void
1703
+ _outRowExpr(StringInfo str, const RowExpr *node)
1704
+ {
1705
+ WRITE_NODE_TYPE("ROWEXPR");
1706
+
1707
+ WRITE_NODE_FIELD(args);
1708
+ WRITE_OID_FIELD(row_typeid);
1709
+ WRITE_ENUM_FIELD(row_format, CoercionForm);
1710
+ WRITE_NODE_FIELD(colnames);
1711
+ WRITE_LOCATION_FIELD(location);
1712
+ }
1713
+
1714
+ static void
1715
+ _outRowCompareExpr(StringInfo str, const RowCompareExpr *node)
1716
+ {
1717
+ WRITE_NODE_TYPE("ROWCOMPAREEXPR");
1718
+
1719
+ WRITE_ENUM_FIELD(rctype, RowCompareType);
1720
+ WRITE_NODE_FIELD(opnos);
1721
+ WRITE_NODE_FIELD(opfamilies);
1722
+ WRITE_NODE_FIELD(inputcollids);
1723
+ WRITE_NODE_FIELD(largs);
1724
+ WRITE_NODE_FIELD(rargs);
1725
+ }
1726
+
1727
+ static void
1728
+ _outCoalesceExpr(StringInfo str, const CoalesceExpr *node)
1729
+ {
1730
+ WRITE_NODE_TYPE("COALESCEEXPR");
1731
+
1732
+ WRITE_OID_FIELD(coalescetype);
1733
+ WRITE_OID_FIELD(coalescecollid);
1734
+ WRITE_NODE_FIELD(args);
1735
+ WRITE_LOCATION_FIELD(location);
1736
+ }
1737
+
1738
+ static void
1739
+ _outMinMaxExpr(StringInfo str, const MinMaxExpr *node)
1740
+ {
1741
+ WRITE_NODE_TYPE("MINMAXEXPR");
1742
+
1743
+ WRITE_OID_FIELD(minmaxtype);
1744
+ WRITE_OID_FIELD(minmaxcollid);
1745
+ WRITE_OID_FIELD(inputcollid);
1746
+ WRITE_ENUM_FIELD(op, MinMaxOp);
1747
+ WRITE_NODE_FIELD(args);
1748
+ WRITE_LOCATION_FIELD(location);
1749
+ }
1750
+
1751
+ static void
1752
+ _outSQLValueFunction(StringInfo str, const SQLValueFunction *node)
1753
+ {
1754
+ WRITE_NODE_TYPE("SQLVALUEFUNCTION");
1755
+
1756
+ WRITE_ENUM_FIELD(op, SQLValueFunctionOp);
1757
+ WRITE_OID_FIELD(type);
1758
+ WRITE_INT_FIELD(typmod);
1759
+ WRITE_LOCATION_FIELD(location);
1760
+ }
1761
+
1762
+ static void
1763
+ _outXmlExpr(StringInfo str, const XmlExpr *node)
1764
+ {
1765
+ WRITE_NODE_TYPE("XMLEXPR");
1766
+
1767
+ WRITE_ENUM_FIELD(op, XmlExprOp);
1768
+ WRITE_STRING_FIELD(name);
1769
+ WRITE_NODE_FIELD(named_args);
1770
+ WRITE_NODE_FIELD(arg_names);
1771
+ WRITE_NODE_FIELD(args);
1772
+ WRITE_ENUM_FIELD(xmloption, XmlOptionType);
1773
+ WRITE_OID_FIELD(type);
1774
+ WRITE_INT_FIELD(typmod);
1775
+ WRITE_LOCATION_FIELD(location);
1776
+ }
1777
+
1778
+ static void
1779
+ _outNullTest(StringInfo str, const NullTest *node)
1780
+ {
1781
+ WRITE_NODE_TYPE("NULLTEST");
1782
+
1783
+ WRITE_NODE_FIELD(arg);
1784
+ WRITE_ENUM_FIELD(nulltesttype, NullTestType);
1785
+ WRITE_BOOL_FIELD(argisrow);
1786
+ WRITE_LOCATION_FIELD(location);
1787
+ }
1788
+
1789
+ static void
1790
+ _outBooleanTest(StringInfo str, const BooleanTest *node)
1791
+ {
1792
+ WRITE_NODE_TYPE("BOOLEANTEST");
1793
+
1794
+ WRITE_NODE_FIELD(arg);
1795
+ WRITE_ENUM_FIELD(booltesttype, BoolTestType);
1796
+ WRITE_LOCATION_FIELD(location);
1797
+ }
1798
+
1799
+ static void
1800
+ _outCoerceToDomain(StringInfo str, const CoerceToDomain *node)
1801
+ {
1802
+ WRITE_NODE_TYPE("COERCETODOMAIN");
1803
+
1804
+ WRITE_NODE_FIELD(arg);
1805
+ WRITE_OID_FIELD(resulttype);
1806
+ WRITE_INT_FIELD(resulttypmod);
1807
+ WRITE_OID_FIELD(resultcollid);
1808
+ WRITE_ENUM_FIELD(coercionformat, CoercionForm);
1809
+ WRITE_LOCATION_FIELD(location);
1810
+ }
1811
+
1812
+ static void
1813
+ _outCoerceToDomainValue(StringInfo str, const CoerceToDomainValue *node)
1814
+ {
1815
+ WRITE_NODE_TYPE("COERCETODOMAINVALUE");
1816
+
1817
+ WRITE_OID_FIELD(typeId);
1818
+ WRITE_INT_FIELD(typeMod);
1819
+ WRITE_OID_FIELD(collation);
1820
+ WRITE_LOCATION_FIELD(location);
1821
+ }
1822
+
1823
+ static void
1824
+ _outSetToDefault(StringInfo str, const SetToDefault *node)
1825
+ {
1826
+ WRITE_NODE_TYPE("SETTODEFAULT");
1827
+
1828
+ WRITE_OID_FIELD(typeId);
1829
+ WRITE_INT_FIELD(typeMod);
1830
+ WRITE_OID_FIELD(collation);
1831
+ WRITE_LOCATION_FIELD(location);
1832
+ }
1833
+
1834
+ static void
1835
+ _outCurrentOfExpr(StringInfo str, const CurrentOfExpr *node)
1836
+ {
1837
+ WRITE_NODE_TYPE("CURRENTOFEXPR");
1838
+
1839
+ WRITE_UINT_FIELD(cvarno);
1840
+ WRITE_STRING_FIELD(cursor_name);
1841
+ WRITE_INT_FIELD(cursor_param);
1842
+ }
1843
+
1844
+ static void
1845
+ _outNextValueExpr(StringInfo str, const NextValueExpr *node)
1846
+ {
1847
+ WRITE_NODE_TYPE("NEXTVALUEEXPR");
1848
+
1849
+ WRITE_OID_FIELD(seqid);
1850
+ WRITE_OID_FIELD(typeId);
1851
+ }
1852
+
1853
+ static void
1854
+ _outInferenceElem(StringInfo str, const InferenceElem *node)
1855
+ {
1856
+ WRITE_NODE_TYPE("INFERENCEELEM");
1857
+
1858
+ WRITE_NODE_FIELD(expr);
1859
+ WRITE_OID_FIELD(infercollid);
1860
+ WRITE_OID_FIELD(inferopclass);
1861
+ }
1862
+
1863
+ static void
1864
+ _outTargetEntry(StringInfo str, const TargetEntry *node)
1865
+ {
1866
+ WRITE_NODE_TYPE("TARGETENTRY");
1867
+
1868
+ WRITE_NODE_FIELD(expr);
1869
+ WRITE_INT_FIELD(resno);
1870
+ WRITE_STRING_FIELD(resname);
1871
+ WRITE_UINT_FIELD(ressortgroupref);
1872
+ WRITE_OID_FIELD(resorigtbl);
1873
+ WRITE_INT_FIELD(resorigcol);
1874
+ WRITE_BOOL_FIELD(resjunk);
1875
+ }
1876
+
1877
+ static void
1878
+ _outRangeTblRef(StringInfo str, const RangeTblRef *node)
1879
+ {
1880
+ WRITE_NODE_TYPE("RANGETBLREF");
1881
+
1882
+ WRITE_INT_FIELD(rtindex);
1883
+ }
1884
+
1885
+ static void
1886
+ _outJoinExpr(StringInfo str, const JoinExpr *node)
1887
+ {
1888
+ WRITE_NODE_TYPE("JOINEXPR");
1889
+
1890
+ WRITE_ENUM_FIELD(jointype, JoinType);
1891
+ WRITE_BOOL_FIELD(isNatural);
1892
+ WRITE_NODE_FIELD(larg);
1893
+ WRITE_NODE_FIELD(rarg);
1894
+ WRITE_NODE_FIELD(usingClause);
1895
+ WRITE_NODE_FIELD(join_using_alias);
1896
+ WRITE_NODE_FIELD(quals);
1897
+ WRITE_NODE_FIELD(alias);
1898
+ WRITE_INT_FIELD(rtindex);
1899
+ }
1900
+
1901
+ static void
1902
+ _outFromExpr(StringInfo str, const FromExpr *node)
1903
+ {
1904
+ WRITE_NODE_TYPE("FROMEXPR");
1905
+
1906
+ WRITE_NODE_FIELD(fromlist);
1907
+ WRITE_NODE_FIELD(quals);
1908
+ }
1909
+
1910
+ static void
1911
+ _outOnConflictExpr(StringInfo str, const OnConflictExpr *node)
1912
+ {
1913
+ WRITE_NODE_TYPE("ONCONFLICTEXPR");
1914
+
1915
+ WRITE_ENUM_FIELD(action, OnConflictAction);
1916
+ WRITE_NODE_FIELD(arbiterElems);
1917
+ WRITE_NODE_FIELD(arbiterWhere);
1918
+ WRITE_OID_FIELD(constraint);
1919
+ WRITE_NODE_FIELD(onConflictSet);
1920
+ WRITE_NODE_FIELD(onConflictWhere);
1921
+ WRITE_INT_FIELD(exclRelIndex);
1922
+ WRITE_NODE_FIELD(exclRelTlist);
1923
+ }
1924
+
1925
+ /*****************************************************************************
1926
+ *
1927
+ * Stuff from pathnodes.h.
1928
+ *
1929
+ *****************************************************************************/
1930
+
1931
+ /*
1932
+ * print the basic stuff of all nodes that inherit from Path
1933
+ *
1934
+ * Note we do NOT print the parent, else we'd be in infinite recursion.
1935
+ * We can print the parent's relids for identification purposes, though.
1936
+ * We print the pathtarget only if it's not the default one for the rel.
1937
+ * We also do not print the whole of param_info, since it's printed by
1938
+ * _outRelOptInfo; it's sufficient and less cluttering to print just the
1939
+ * required outer relids.
1940
+ */
1941
+ static void
1942
+ _outPathInfo(StringInfo str, const Path *node)
1943
+ {
1944
+ WRITE_ENUM_FIELD(pathtype, NodeTag);
1945
+ appendStringInfoString(str, " :parent_relids ");
1946
+ outBitmapset(str, node->parent->relids);
1947
+ if (node->pathtarget != node->parent->reltarget)
1948
+ WRITE_NODE_FIELD(pathtarget);
1949
+ appendStringInfoString(str, " :required_outer ");
1950
+ if (node->param_info)
1951
+ outBitmapset(str, node->param_info->ppi_req_outer);
1952
+ else
1953
+ outBitmapset(str, NULL);
1954
+ WRITE_BOOL_FIELD(parallel_aware);
1955
+ WRITE_BOOL_FIELD(parallel_safe);
1956
+ WRITE_INT_FIELD(parallel_workers);
1957
+ WRITE_FLOAT_FIELD(rows, "%.0f");
1958
+ WRITE_FLOAT_FIELD(startup_cost, "%.2f");
1959
+ WRITE_FLOAT_FIELD(total_cost, "%.2f");
1960
+ WRITE_NODE_FIELD(pathkeys);
1961
+ }
1962
+
1963
+ /*
1964
+ * print the basic stuff of all nodes that inherit from JoinPath
1965
+ */
1966
+ static void
1967
+ _outJoinPathInfo(StringInfo str, const JoinPath *node)
1968
+ {
1969
+ _outPathInfo(str, (const Path *) node);
1970
+
1971
+ WRITE_ENUM_FIELD(jointype, JoinType);
1972
+ WRITE_BOOL_FIELD(inner_unique);
1973
+ WRITE_NODE_FIELD(outerjoinpath);
1974
+ WRITE_NODE_FIELD(innerjoinpath);
1975
+ WRITE_NODE_FIELD(joinrestrictinfo);
1976
+ }
1977
+
1978
+ static void
1979
+ _outPath(StringInfo str, const Path *node)
1980
+ {
1981
+ WRITE_NODE_TYPE("PATH");
1982
+
1983
+ _outPathInfo(str, (const Path *) node);
1984
+ }
1985
+
1986
+ static void
1987
+ _outIndexPath(StringInfo str, const IndexPath *node)
1988
+ {
1989
+ WRITE_NODE_TYPE("INDEXPATH");
1990
+
1991
+ _outPathInfo(str, (const Path *) node);
1992
+
1993
+ WRITE_NODE_FIELD(indexinfo);
1994
+ WRITE_NODE_FIELD(indexclauses);
1995
+ WRITE_NODE_FIELD(indexorderbys);
1996
+ WRITE_NODE_FIELD(indexorderbycols);
1997
+ WRITE_ENUM_FIELD(indexscandir, ScanDirection);
1998
+ WRITE_FLOAT_FIELD(indextotalcost, "%.2f");
1999
+ WRITE_FLOAT_FIELD(indexselectivity, "%.4f");
2000
+ WRITE_ENUM_FIELD(yb_index_path_info.yb_lock_mechanism, YbLockMechanism);
2001
+ }
2002
+
2003
+ static void
2004
+ _outBitmapHeapPath(StringInfo str, const BitmapHeapPath *node)
2005
+ {
2006
+ WRITE_NODE_TYPE("BITMAPHEAPPATH");
2007
+
2008
+ _outPathInfo(str, (const Path *) node);
2009
+
2010
+ WRITE_NODE_FIELD(bitmapqual);
2011
+ }
2012
+
2013
+ static void
2014
+ _outYbBitmapTablePath(StringInfo str, const YbBitmapTablePath *node)
2015
+ {
2016
+ WRITE_NODE_TYPE("YBBITMAPTABLEPATH");
2017
+
2018
+ _outPathInfo(str, (const Path *) node);
2019
+
2020
+ WRITE_NODE_FIELD(bitmapqual);
2021
+ }
2022
+
2023
+ static void
2024
+ _outBitmapAndPath(StringInfo str, const BitmapAndPath *node)
2025
+ {
2026
+ WRITE_NODE_TYPE("BITMAPANDPATH");
2027
+
2028
+ _outPathInfo(str, (const Path *) node);
2029
+
2030
+ WRITE_NODE_FIELD(bitmapquals);
2031
+ WRITE_FLOAT_FIELD(bitmapselectivity, "%.4f");
2032
+ }
2033
+
2034
+ static void
2035
+ _outBitmapOrPath(StringInfo str, const BitmapOrPath *node)
2036
+ {
2037
+ WRITE_NODE_TYPE("BITMAPORPATH");
2038
+
2039
+ _outPathInfo(str, (const Path *) node);
2040
+
2041
+ WRITE_NODE_FIELD(bitmapquals);
2042
+ WRITE_FLOAT_FIELD(bitmapselectivity, "%.4f");
2043
+ }
2044
+
2045
+ static void
2046
+ _outTidPath(StringInfo str, const TidPath *node)
2047
+ {
2048
+ WRITE_NODE_TYPE("TIDPATH");
2049
+
2050
+ _outPathInfo(str, (const Path *) node);
2051
+
2052
+ WRITE_NODE_FIELD(tidquals);
2053
+ }
2054
+
2055
+ static void
2056
+ _outTidRangePath(StringInfo str, const TidRangePath *node)
2057
+ {
2058
+ WRITE_NODE_TYPE("TIDRANGEPATH");
2059
+
2060
+ _outPathInfo(str, (const Path *) node);
2061
+
2062
+ WRITE_NODE_FIELD(tidrangequals);
2063
+ }
2064
+
2065
+ static void
2066
+ _outSubqueryScanPath(StringInfo str, const SubqueryScanPath *node)
2067
+ {
2068
+ WRITE_NODE_TYPE("SUBQUERYSCANPATH");
2069
+
2070
+ _outPathInfo(str, (const Path *) node);
2071
+
2072
+ WRITE_NODE_FIELD(subpath);
2073
+ }
2074
+
2075
+ static void
2076
+ _outForeignPath(StringInfo str, const ForeignPath *node)
2077
+ {
2078
+ WRITE_NODE_TYPE("FOREIGNPATH");
2079
+
2080
+ _outPathInfo(str, (const Path *) node);
2081
+
2082
+ WRITE_NODE_FIELD(fdw_outerpath);
2083
+ WRITE_NODE_FIELD(fdw_private);
2084
+ }
2085
+
2086
+ static void
2087
+ _outCustomPath(StringInfo str, const CustomPath *node)
2088
+ {
2089
+ WRITE_NODE_TYPE("CUSTOMPATH");
2090
+
2091
+ _outPathInfo(str, (const Path *) node);
2092
+
2093
+ WRITE_UINT_FIELD(flags);
2094
+ WRITE_NODE_FIELD(custom_paths);
2095
+ WRITE_NODE_FIELD(custom_private);
2096
+ appendStringInfoString(str, " :methods ");
2097
+ outToken(str, node->methods->CustomName);
2098
+ }
2099
+
2100
+ static void
2101
+ _outAppendPath(StringInfo str, const AppendPath *node)
2102
+ {
2103
+ WRITE_NODE_TYPE("APPENDPATH");
2104
+
2105
+ _outPathInfo(str, (const Path *) node);
2106
+
2107
+ WRITE_NODE_FIELD(subpaths);
2108
+ WRITE_INT_FIELD(first_partial_path);
2109
+ WRITE_FLOAT_FIELD(limit_tuples, "%.0f");
2110
+ }
2111
+
2112
+ static void
2113
+ _outMergeAppendPath(StringInfo str, const MergeAppendPath *node)
2114
+ {
2115
+ WRITE_NODE_TYPE("MERGEAPPENDPATH");
2116
+
2117
+ _outPathInfo(str, (const Path *) node);
2118
+
2119
+ WRITE_NODE_FIELD(subpaths);
2120
+ WRITE_FLOAT_FIELD(limit_tuples, "%.0f");
2121
+ }
2122
+
2123
+ static void
2124
+ _outGroupResultPath(StringInfo str, const GroupResultPath *node)
2125
+ {
2126
+ WRITE_NODE_TYPE("GROUPRESULTPATH");
2127
+
2128
+ _outPathInfo(str, (const Path *) node);
2129
+
2130
+ WRITE_NODE_FIELD(quals);
2131
+ }
2132
+
2133
+ static void
2134
+ _outMaterialPath(StringInfo str, const MaterialPath *node)
2135
+ {
2136
+ WRITE_NODE_TYPE("MATERIALPATH");
2137
+
2138
+ _outPathInfo(str, (const Path *) node);
2139
+
2140
+ WRITE_NODE_FIELD(subpath);
2141
+ }
2142
+
2143
+ static void
2144
+ _outMemoizePath(StringInfo str, const MemoizePath *node)
2145
+ {
2146
+ WRITE_NODE_TYPE("MEMOIZEPATH");
2147
+
2148
+ _outPathInfo(str, (const Path *) node);
2149
+
2150
+ WRITE_NODE_FIELD(subpath);
2151
+ WRITE_NODE_FIELD(hash_operators);
2152
+ WRITE_NODE_FIELD(param_exprs);
2153
+ WRITE_BOOL_FIELD(singlerow);
2154
+ WRITE_BOOL_FIELD(binary_mode);
2155
+ WRITE_FLOAT_FIELD(calls, "%.0f");
2156
+ WRITE_UINT_FIELD(est_entries);
2157
+ }
2158
+
2159
+ static void
2160
+ _outUniquePath(StringInfo str, const UniquePath *node)
2161
+ {
2162
+ WRITE_NODE_TYPE("UNIQUEPATH");
2163
+
2164
+ _outPathInfo(str, (const Path *) node);
2165
+
2166
+ WRITE_NODE_FIELD(subpath);
2167
+ WRITE_ENUM_FIELD(umethod, UniquePathMethod);
2168
+ WRITE_NODE_FIELD(in_operators);
2169
+ WRITE_NODE_FIELD(uniq_exprs);
2170
+ }
2171
+
2172
+ static void
2173
+ _outGatherPath(StringInfo str, const GatherPath *node)
2174
+ {
2175
+ WRITE_NODE_TYPE("GATHERPATH");
2176
+
2177
+ _outPathInfo(str, (const Path *) node);
2178
+
2179
+ WRITE_NODE_FIELD(subpath);
2180
+ WRITE_BOOL_FIELD(single_copy);
2181
+ WRITE_INT_FIELD(num_workers);
2182
+ }
2183
+
2184
+ static void
2185
+ _outProjectionPath(StringInfo str, const ProjectionPath *node)
2186
+ {
2187
+ WRITE_NODE_TYPE("PROJECTIONPATH");
2188
+
2189
+ _outPathInfo(str, (const Path *) node);
2190
+
2191
+ WRITE_NODE_FIELD(subpath);
2192
+ WRITE_BOOL_FIELD(dummypp);
2193
+ }
2194
+
2195
+ static void
2196
+ _outProjectSetPath(StringInfo str, const ProjectSetPath *node)
2197
+ {
2198
+ WRITE_NODE_TYPE("PROJECTSETPATH");
2199
+
2200
+ _outPathInfo(str, (const Path *) node);
2201
+
2202
+ WRITE_NODE_FIELD(subpath);
2203
+ }
2204
+
2205
+ static void
2206
+ _outSortPathInfo(StringInfo str, const SortPath *node)
2207
+ {
2208
+ _outPathInfo(str, (const Path *) node);
2209
+
2210
+ WRITE_NODE_FIELD(subpath);
2211
+ }
2212
+
2213
+ static void
2214
+ _outSortPath(StringInfo str, const SortPath *node)
2215
+ {
2216
+ WRITE_NODE_TYPE("SORTPATH");
2217
+
2218
+ _outSortPathInfo(str, node);
2219
+ }
2220
+
2221
+ static void
2222
+ _outIncrementalSortPath(StringInfo str, const IncrementalSortPath *node)
2223
+ {
2224
+ WRITE_NODE_TYPE("INCREMENTALSORTPATH");
2225
+
2226
+ _outSortPathInfo(str, (const SortPath *) node);
2227
+
2228
+ WRITE_INT_FIELD(nPresortedCols);
2229
+ }
2230
+
2231
+ static void
2232
+ _outGroupPath(StringInfo str, const GroupPath *node)
2233
+ {
2234
+ WRITE_NODE_TYPE("GROUPPATH");
2235
+
2236
+ _outPathInfo(str, (const Path *) node);
2237
+
2238
+ WRITE_NODE_FIELD(subpath);
2239
+ WRITE_NODE_FIELD(groupClause);
2240
+ WRITE_NODE_FIELD(qual);
2241
+ }
2242
+
2243
+ static void
2244
+ _outUpperUniquePath(StringInfo str, const UpperUniquePath *node)
2245
+ {
2246
+ WRITE_NODE_TYPE("UPPERUNIQUEPATH");
2247
+
2248
+ _outPathInfo(str, (const Path *) node);
2249
+
2250
+ WRITE_NODE_FIELD(subpath);
2251
+ WRITE_INT_FIELD(numkeys);
2252
+ }
2253
+
2254
+ static void
2255
+ _outAggPath(StringInfo str, const AggPath *node)
2256
+ {
2257
+ WRITE_NODE_TYPE("AGGPATH");
2258
+
2259
+ _outPathInfo(str, (const Path *) node);
2260
+
2261
+ WRITE_NODE_FIELD(subpath);
2262
+ WRITE_ENUM_FIELD(aggstrategy, AggStrategy);
2263
+ WRITE_ENUM_FIELD(aggsplit, AggSplit);
2264
+ WRITE_FLOAT_FIELD(numGroups, "%.0f");
2265
+ WRITE_UINT64_FIELD(transitionSpace);
2266
+ WRITE_NODE_FIELD(groupClause);
2267
+ WRITE_NODE_FIELD(qual);
2268
+ }
2269
+
2270
+ static void
2271
+ _outRollupData(StringInfo str, const RollupData *node)
2272
+ {
2273
+ WRITE_NODE_TYPE("ROLLUP");
2274
+
2275
+ WRITE_NODE_FIELD(groupClause);
2276
+ WRITE_NODE_FIELD(gsets);
2277
+ WRITE_NODE_FIELD(gsets_data);
2278
+ WRITE_FLOAT_FIELD(numGroups, "%.0f");
2279
+ WRITE_BOOL_FIELD(hashable);
2280
+ WRITE_BOOL_FIELD(is_hashed);
2281
+ }
2282
+
2283
+ static void
2284
+ _outGroupingSetData(StringInfo str, const GroupingSetData *node)
2285
+ {
2286
+ WRITE_NODE_TYPE("GSDATA");
2287
+
2288
+ WRITE_NODE_FIELD(set);
2289
+ WRITE_FLOAT_FIELD(numGroups, "%.0f");
2290
+ }
2291
+
2292
+ static void
2293
+ _outGroupingSetsPath(StringInfo str, const GroupingSetsPath *node)
2294
+ {
2295
+ WRITE_NODE_TYPE("GROUPINGSETSPATH");
2296
+
2297
+ _outPathInfo(str, (const Path *) node);
2298
+
2299
+ WRITE_NODE_FIELD(subpath);
2300
+ WRITE_ENUM_FIELD(aggstrategy, AggStrategy);
2301
+ WRITE_NODE_FIELD(rollups);
2302
+ WRITE_NODE_FIELD(qual);
2303
+ WRITE_UINT64_FIELD(transitionSpace);
2304
+ }
2305
+
2306
+ static void
2307
+ _outMinMaxAggPath(StringInfo str, const MinMaxAggPath *node)
2308
+ {
2309
+ WRITE_NODE_TYPE("MINMAXAGGPATH");
2310
+
2311
+ _outPathInfo(str, (const Path *) node);
2312
+
2313
+ WRITE_NODE_FIELD(mmaggregates);
2314
+ WRITE_NODE_FIELD(quals);
2315
+ }
2316
+
2317
+ static void
2318
+ _outWindowAggPath(StringInfo str, const WindowAggPath *node)
2319
+ {
2320
+ WRITE_NODE_TYPE("WINDOWAGGPATH");
2321
+
2322
+ _outPathInfo(str, (const Path *) node);
2323
+
2324
+ WRITE_NODE_FIELD(subpath);
2325
+ WRITE_NODE_FIELD(winclause);
2326
+ WRITE_NODE_FIELD(qual);
2327
+ WRITE_BOOL_FIELD(topwindow);
2328
+ }
2329
+
2330
+ static void
2331
+ _outSetOpPath(StringInfo str, const SetOpPath *node)
2332
+ {
2333
+ WRITE_NODE_TYPE("SETOPPATH");
2334
+
2335
+ _outPathInfo(str, (const Path *) node);
2336
+
2337
+ WRITE_NODE_FIELD(subpath);
2338
+ WRITE_ENUM_FIELD(cmd, SetOpCmd);
2339
+ WRITE_ENUM_FIELD(strategy, SetOpStrategy);
2340
+ WRITE_NODE_FIELD(distinctList);
2341
+ WRITE_INT_FIELD(flagColIdx);
2342
+ WRITE_INT_FIELD(firstFlag);
2343
+ WRITE_FLOAT_FIELD(numGroups, "%.0f");
2344
+ }
2345
+
2346
+ static void
2347
+ _outRecursiveUnionPath(StringInfo str, const RecursiveUnionPath *node)
2348
+ {
2349
+ WRITE_NODE_TYPE("RECURSIVEUNIONPATH");
2350
+
2351
+ _outPathInfo(str, (const Path *) node);
2352
+
2353
+ WRITE_NODE_FIELD(leftpath);
2354
+ WRITE_NODE_FIELD(rightpath);
2355
+ WRITE_NODE_FIELD(distinctList);
2356
+ WRITE_INT_FIELD(wtParam);
2357
+ WRITE_FLOAT_FIELD(numGroups, "%.0f");
2358
+ }
2359
+
2360
+ static void
2361
+ _outLockRowsPath(StringInfo str, const LockRowsPath *node)
2362
+ {
2363
+ WRITE_NODE_TYPE("LOCKROWSPATH");
2364
+
2365
+ _outPathInfo(str, (const Path *) node);
2366
+
2367
+ WRITE_NODE_FIELD(subpath);
2368
+ WRITE_NODE_FIELD(rowMarks);
2369
+ WRITE_INT_FIELD(epqParam);
2370
+ }
2371
+
2372
+ static void
2373
+ _outModifyTablePath(StringInfo str, const ModifyTablePath *node)
2374
+ {
2375
+ WRITE_NODE_TYPE("MODIFYTABLEPATH");
2376
+
2377
+ _outPathInfo(str, (const Path *) node);
2378
+
2379
+ WRITE_NODE_FIELD(subpath);
2380
+ WRITE_ENUM_FIELD(operation, CmdType);
2381
+ WRITE_BOOL_FIELD(canSetTag);
2382
+ WRITE_UINT_FIELD(nominalRelation);
2383
+ WRITE_UINT_FIELD(rootRelation);
2384
+ WRITE_BOOL_FIELD(partColsUpdated);
2385
+ WRITE_NODE_FIELD(resultRelations);
2386
+ WRITE_NODE_FIELD(updateColnosLists);
2387
+ WRITE_NODE_FIELD(withCheckOptionLists);
2388
+ WRITE_NODE_FIELD(returningLists);
2389
+ WRITE_NODE_FIELD(rowMarks);
2390
+ WRITE_NODE_FIELD(onconflict);
2391
+ WRITE_INT_FIELD(epqParam);
2392
+ WRITE_NODE_FIELD(mergeActionLists);
2393
+ }
2394
+
2395
+ static void
2396
+ _outLimitPath(StringInfo str, const LimitPath *node)
2397
+ {
2398
+ WRITE_NODE_TYPE("LIMITPATH");
2399
+
2400
+ _outPathInfo(str, (const Path *) node);
2401
+
2402
+ WRITE_NODE_FIELD(subpath);
2403
+ WRITE_NODE_FIELD(limitOffset);
2404
+ WRITE_NODE_FIELD(limitCount);
2405
+ WRITE_ENUM_FIELD(limitOption, LimitOption);
2406
+ }
2407
+
2408
+ static void
2409
+ _outGatherMergePath(StringInfo str, const GatherMergePath *node)
2410
+ {
2411
+ WRITE_NODE_TYPE("GATHERMERGEPATH");
2412
+
2413
+ _outPathInfo(str, (const Path *) node);
2414
+
2415
+ WRITE_NODE_FIELD(subpath);
2416
+ WRITE_INT_FIELD(num_workers);
2417
+ }
2418
+
2419
+ static void
2420
+ _outNestPath(StringInfo str, const NestPath *node)
2421
+ {
2422
+ WRITE_NODE_TYPE("NESTPATH");
2423
+
2424
+ _outJoinPathInfo(str, (const JoinPath *) node);
2425
+ }
2426
+
2427
+ static void
2428
+ _outMergePath(StringInfo str, const MergePath *node)
2429
+ {
2430
+ WRITE_NODE_TYPE("MERGEPATH");
2431
+
2432
+ _outJoinPathInfo(str, (const JoinPath *) node);
2433
+
2434
+ WRITE_NODE_FIELD(path_mergeclauses);
2435
+ WRITE_NODE_FIELD(outersortkeys);
2436
+ WRITE_NODE_FIELD(innersortkeys);
2437
+ WRITE_BOOL_FIELD(skip_mark_restore);
2438
+ WRITE_BOOL_FIELD(materialize_inner);
2439
+ }
2440
+
2441
+ static void
2442
+ _outHashPath(StringInfo str, const HashPath *node)
2443
+ {
2444
+ WRITE_NODE_TYPE("HASHPATH");
2445
+
2446
+ _outJoinPathInfo(str, (const JoinPath *) node);
2447
+
2448
+ WRITE_NODE_FIELD(path_hashclauses);
2449
+ WRITE_INT_FIELD(num_batches);
2450
+ WRITE_FLOAT_FIELD(inner_rows_total, "%.0f");
2451
+ }
2452
+
2453
+ static void
2454
+ _outPlannerGlobal(StringInfo str, const PlannerGlobal *node)
2455
+ {
2456
+ WRITE_NODE_TYPE("PLANNERGLOBAL");
2457
+
2458
+ /* NB: this isn't a complete set of fields */
2459
+ WRITE_NODE_FIELD(subplans);
2460
+ WRITE_BITMAPSET_FIELD(rewindPlanIDs);
2461
+ WRITE_NODE_FIELD(finalrtable);
2462
+ WRITE_NODE_FIELD(finalrowmarks);
2463
+ WRITE_NODE_FIELD(resultRelations);
2464
+ WRITE_NODE_FIELD(appendRelations);
2465
+ WRITE_NODE_FIELD(relationOids);
2466
+ WRITE_NODE_FIELD(invalItems);
2467
+ WRITE_NODE_FIELD(paramExecTypes);
2468
+ WRITE_UINT_FIELD(lastPHId);
2469
+ WRITE_UINT_FIELD(lastRowMarkId);
2470
+ WRITE_INT_FIELD(lastPlanNodeId);
2471
+ WRITE_BOOL_FIELD(transientPlan);
2472
+ WRITE_BOOL_FIELD(dependsOnRole);
2473
+ WRITE_BOOL_FIELD(parallelModeOK);
2474
+ WRITE_BOOL_FIELD(parallelModeNeeded);
2475
+ WRITE_CHAR_FIELD(maxParallelHazard);
2476
+ }
2477
+
2478
+ static void
2479
+ _outPlannerInfo(StringInfo str, const PlannerInfo *node)
2480
+ {
2481
+ WRITE_NODE_TYPE("PLANNERINFO");
2482
+
2483
+ /* NB: this isn't a complete set of fields */
2484
+ WRITE_NODE_FIELD(parse);
2485
+ WRITE_NODE_FIELD(glob);
2486
+ WRITE_UINT_FIELD(query_level);
2487
+ WRITE_NODE_FIELD(plan_params);
2488
+ WRITE_BITMAPSET_FIELD(outer_params);
2489
+ WRITE_BITMAPSET_FIELD(all_baserels);
2490
+ WRITE_BITMAPSET_FIELD(nullable_baserels);
2491
+ WRITE_NODE_FIELD(join_rel_list);
2492
+ WRITE_INT_FIELD(join_cur_level);
2493
+ WRITE_NODE_FIELD(init_plans);
2494
+ WRITE_NODE_FIELD(cte_plan_ids);
2495
+ WRITE_NODE_FIELD(multiexpr_params);
2496
+ WRITE_NODE_FIELD(eq_classes);
2497
+ WRITE_BOOL_FIELD(ec_merging_done);
2498
+ WRITE_NODE_FIELD(canon_pathkeys);
2499
+ WRITE_NODE_FIELD(left_join_clauses);
2500
+ WRITE_NODE_FIELD(right_join_clauses);
2501
+ WRITE_NODE_FIELD(full_join_clauses);
2502
+ WRITE_NODE_FIELD(join_info_list);
2503
+ WRITE_BITMAPSET_FIELD(all_result_relids);
2504
+ WRITE_BITMAPSET_FIELD(leaf_result_relids);
2505
+ WRITE_NODE_FIELD(append_rel_list);
2506
+ WRITE_NODE_FIELD(row_identity_vars);
2507
+ WRITE_NODE_FIELD(rowMarks);
2508
+ WRITE_NODE_FIELD(placeholder_list);
2509
+ WRITE_NODE_FIELD(fkey_list);
2510
+ WRITE_NODE_FIELD(query_pathkeys);
2511
+ WRITE_NODE_FIELD(group_pathkeys);
2512
+ WRITE_NODE_FIELD(window_pathkeys);
2513
+ WRITE_NODE_FIELD(distinct_pathkeys);
2514
+ WRITE_NODE_FIELD(sort_pathkeys);
2515
+ WRITE_NODE_FIELD(processed_tlist);
2516
+ WRITE_NODE_FIELD(update_colnos);
2517
+ WRITE_NODE_FIELD(minmax_aggs);
2518
+ WRITE_FLOAT_FIELD(total_table_pages, "%.0f");
2519
+ WRITE_FLOAT_FIELD(tuple_fraction, "%.4f");
2520
+ WRITE_FLOAT_FIELD(limit_tuples, "%.0f");
2521
+ WRITE_UINT_FIELD(qual_security_level);
2522
+ WRITE_BOOL_FIELD(hasJoinRTEs);
2523
+ WRITE_BOOL_FIELD(hasLateralRTEs);
2524
+ WRITE_BOOL_FIELD(hasHavingQual);
2525
+ WRITE_BOOL_FIELD(hasPseudoConstantQuals);
2526
+ WRITE_BOOL_FIELD(hasAlternativeSubPlans);
2527
+ WRITE_BOOL_FIELD(hasRecursion);
2528
+ WRITE_INT_FIELD(wt_param_id);
2529
+ WRITE_BITMAPSET_FIELD(curOuterRels);
2530
+ WRITE_NODE_FIELD(curOuterParams);
2531
+ WRITE_BOOL_FIELD(partColsUpdated);
2532
+ }
2533
+
2534
+ static void
2535
+ _outRelOptInfo(StringInfo str, const RelOptInfo *node)
2536
+ {
2537
+ WRITE_NODE_TYPE("RELOPTINFO");
2538
+
2539
+ /* NB: this isn't a complete set of fields */
2540
+ WRITE_ENUM_FIELD(reloptkind, RelOptKind);
2541
+ WRITE_BITMAPSET_FIELD(relids);
2542
+ WRITE_FLOAT_FIELD(rows, "%.0f");
2543
+ WRITE_BOOL_FIELD(consider_startup);
2544
+ WRITE_BOOL_FIELD(consider_param_startup);
2545
+ WRITE_BOOL_FIELD(consider_parallel);
2546
+ WRITE_NODE_FIELD(reltarget);
2547
+ WRITE_NODE_FIELD(pathlist);
2548
+ WRITE_NODE_FIELD(ppilist);
2549
+ WRITE_NODE_FIELD(partial_pathlist);
2550
+ WRITE_NODE_FIELD(cheapest_startup_path);
2551
+ WRITE_NODE_FIELD(cheapest_total_path);
2552
+ WRITE_NODE_FIELD(cheapest_unique_path);
2553
+ WRITE_NODE_FIELD(cheapest_parameterized_paths);
2554
+ WRITE_BITMAPSET_FIELD(direct_lateral_relids);
2555
+ WRITE_BITMAPSET_FIELD(lateral_relids);
2556
+ WRITE_UINT_FIELD(relid);
2557
+ WRITE_OID_FIELD(reltablespace);
2558
+ WRITE_ENUM_FIELD(rtekind, RTEKind);
2559
+ WRITE_INT_FIELD(min_attr);
2560
+ WRITE_INT_FIELD(max_attr);
2561
+ WRITE_NODE_FIELD(lateral_vars);
2562
+ WRITE_BITMAPSET_FIELD(lateral_referencers);
2563
+ WRITE_NODE_FIELD(indexlist);
2564
+ WRITE_NODE_FIELD(statlist);
2565
+ WRITE_UINT_FIELD(pages);
2566
+ WRITE_FLOAT_FIELD(tuples, "%.0f");
2567
+ WRITE_FLOAT_FIELD(allvisfrac, "%.6f");
2568
+ WRITE_BITMAPSET_FIELD(eclass_indexes);
2569
+ WRITE_NODE_FIELD(subroot);
2570
+ WRITE_NODE_FIELD(subplan_params);
2571
+ WRITE_INT_FIELD(rel_parallel_workers);
2572
+ WRITE_UINT_FIELD(amflags);
2573
+ WRITE_OID_FIELD(serverid);
2574
+ WRITE_OID_FIELD(userid);
2575
+ WRITE_BOOL_FIELD(useridiscurrent);
2576
+ /* we don't try to print fdwroutine or fdw_private */
2577
+ /* can't print unique_for_rels/non_unique_for_rels; BMSes aren't Nodes */
2578
+ WRITE_NODE_FIELD(baserestrictinfo);
2579
+ WRITE_UINT_FIELD(baserestrict_min_security);
2580
+ WRITE_NODE_FIELD(joininfo);
2581
+ WRITE_BOOL_FIELD(has_eclass_joins);
2582
+ WRITE_BOOL_FIELD(consider_partitionwise_join);
2583
+ WRITE_BITMAPSET_FIELD(top_parent_relids);
2584
+ WRITE_BOOL_FIELD(partbounds_merged);
2585
+ WRITE_BITMAPSET_FIELD(live_parts);
2586
+ WRITE_BITMAPSET_FIELD(all_partrels);
2587
+ }
2588
+
2589
+ static void
2590
+ _outIndexOptInfo(StringInfo str, const IndexOptInfo *node)
2591
+ {
2592
+ WRITE_NODE_TYPE("INDEXOPTINFO");
2593
+
2594
+ /* NB: this isn't a complete set of fields */
2595
+ WRITE_OID_FIELD(indexoid);
2596
+ /* Do NOT print rel field, else infinite recursion */
2597
+ WRITE_UINT_FIELD(pages);
2598
+ WRITE_FLOAT_FIELD(tuples, "%.0f");
2599
+ WRITE_INT_FIELD(tree_height);
2600
+ WRITE_INT_FIELD(ncolumns);
2601
+ /* array fields aren't really worth the trouble to print */
2602
+ WRITE_OID_FIELD(relam);
2603
+ /* indexprs is redundant since we print indextlist */
2604
+ WRITE_NODE_FIELD(indpred);
2605
+ WRITE_NODE_FIELD(indextlist);
2606
+ WRITE_NODE_FIELD(indrestrictinfo);
2607
+ WRITE_BOOL_FIELD(predOK);
2608
+ WRITE_BOOL_FIELD(unique);
2609
+ WRITE_BOOL_FIELD(immediate);
2610
+ WRITE_BOOL_FIELD(hypothetical);
2611
+ /* we don't bother with fields copied from the index AM's API struct */
2612
+ }
2613
+
2614
+ static void
2615
+ _outForeignKeyOptInfo(StringInfo str, const ForeignKeyOptInfo *node)
2616
+ {
2617
+ int i;
2618
+
2619
+ WRITE_NODE_TYPE("FOREIGNKEYOPTINFO");
2620
+
2621
+ WRITE_UINT_FIELD(con_relid);
2622
+ WRITE_UINT_FIELD(ref_relid);
2623
+ WRITE_INT_FIELD(nkeys);
2624
+ WRITE_ATTRNUMBER_ARRAY(conkey, node->nkeys);
2625
+ WRITE_ATTRNUMBER_ARRAY(confkey, node->nkeys);
2626
+ WRITE_OID_ARRAY(conpfeqop, node->nkeys);
2627
+ WRITE_INT_FIELD(nmatched_ec);
2628
+ WRITE_INT_FIELD(nconst_ec);
2629
+ WRITE_INT_FIELD(nmatched_rcols);
2630
+ WRITE_INT_FIELD(nmatched_ri);
2631
+ /* for compactness, just print the number of matches per column: */
2632
+ appendStringInfoString(str, " :eclass");
2633
+ for (i = 0; i < node->nkeys; i++)
2634
+ appendStringInfo(str, " %d", (node->eclass[i] != NULL));
2635
+ appendStringInfoString(str, " :rinfos");
2636
+ for (i = 0; i < node->nkeys; i++)
2637
+ appendStringInfo(str, " %d", list_length(node->rinfos[i]));
2638
+ }
2639
+
2640
+ static void
2641
+ _outStatisticExtInfo(StringInfo str, const StatisticExtInfo *node)
2642
+ {
2643
+ WRITE_NODE_TYPE("STATISTICEXTINFO");
2644
+
2645
+ /* NB: this isn't a complete set of fields */
2646
+ WRITE_OID_FIELD(statOid);
2647
+ /* don't write rel, leads to infinite recursion in plan tree dump */
2648
+ WRITE_CHAR_FIELD(kind);
2649
+ WRITE_BITMAPSET_FIELD(keys);
2650
+ }
2651
+
2652
+ static void
2653
+ _outEquivalenceClass(StringInfo str, const EquivalenceClass *node)
2654
+ {
2655
+ /*
2656
+ * To simplify reading, we just chase up to the topmost merged EC and
2657
+ * print that, without bothering to show the merge-ees separately.
2658
+ */
2659
+ while (node->ec_merged)
2660
+ node = node->ec_merged;
2661
+
2662
+ WRITE_NODE_TYPE("EQUIVALENCECLASS");
2663
+
2664
+ WRITE_NODE_FIELD(ec_opfamilies);
2665
+ WRITE_OID_FIELD(ec_collation);
2666
+ WRITE_NODE_FIELD(ec_members);
2667
+ WRITE_NODE_FIELD(ec_sources);
2668
+ WRITE_NODE_FIELD(ec_derives);
2669
+ WRITE_BITMAPSET_FIELD(ec_relids);
2670
+ WRITE_BOOL_FIELD(ec_has_const);
2671
+ WRITE_BOOL_FIELD(ec_has_volatile);
2672
+ WRITE_BOOL_FIELD(ec_below_outer_join);
2673
+ WRITE_BOOL_FIELD(ec_broken);
2674
+ WRITE_UINT_FIELD(ec_sortref);
2675
+ WRITE_UINT_FIELD(ec_min_security);
2676
+ WRITE_UINT_FIELD(ec_max_security);
2677
+ }
2678
+
2679
+ static void
2680
+ _outEquivalenceMember(StringInfo str, const EquivalenceMember *node)
2681
+ {
2682
+ WRITE_NODE_TYPE("EQUIVALENCEMEMBER");
2683
+
2684
+ WRITE_NODE_FIELD(em_expr);
2685
+ WRITE_BITMAPSET_FIELD(em_relids);
2686
+ WRITE_BITMAPSET_FIELD(em_nullable_relids);
2687
+ WRITE_BOOL_FIELD(em_is_const);
2688
+ WRITE_BOOL_FIELD(em_is_child);
2689
+ WRITE_OID_FIELD(em_datatype);
2690
+ }
2691
+
2692
+ static void
2693
+ _outPathKey(StringInfo str, const PathKey *node)
2694
+ {
2695
+ WRITE_NODE_TYPE("PATHKEY");
2696
+
2697
+ WRITE_NODE_FIELD(pk_eclass);
2698
+ WRITE_OID_FIELD(pk_opfamily);
2699
+ WRITE_INT_FIELD(pk_strategy);
2700
+ WRITE_BOOL_FIELD(pk_nulls_first);
2701
+ }
2702
+
2703
+ static void
2704
+ _outPathTarget(StringInfo str, const PathTarget *node)
2705
+ {
2706
+ WRITE_NODE_TYPE("PATHTARGET");
2707
+
2708
+ WRITE_NODE_FIELD(exprs);
2709
+ WRITE_INDEX_ARRAY(sortgrouprefs, list_length(node->exprs));
2710
+ WRITE_FLOAT_FIELD(cost.startup, "%.2f");
2711
+ WRITE_FLOAT_FIELD(cost.per_tuple, "%.2f");
2712
+ WRITE_INT_FIELD(width);
2713
+ WRITE_ENUM_FIELD(has_volatile_expr, VolatileFunctionStatus);
2714
+ }
2715
+
2716
+ static void
2717
+ _outParamPathInfo(StringInfo str, const ParamPathInfo *node)
2718
+ {
2719
+ WRITE_NODE_TYPE("PARAMPATHINFO");
2720
+
2721
+ WRITE_BITMAPSET_FIELD(ppi_req_outer);
2722
+ WRITE_FLOAT_FIELD(ppi_rows, "%.0f");
2723
+ WRITE_NODE_FIELD(ppi_clauses);
2724
+ }
2725
+
2726
+ static void
2727
+ _outRestrictInfo(StringInfo str, const RestrictInfo *node)
2728
+ {
2729
+ WRITE_NODE_TYPE("RESTRICTINFO");
2730
+
2731
+ /* NB: this isn't a complete set of fields */
2732
+ WRITE_NODE_FIELD(clause);
2733
+ WRITE_BOOL_FIELD(is_pushed_down);
2734
+ WRITE_BOOL_FIELD(outerjoin_delayed);
2735
+ WRITE_BOOL_FIELD(can_join);
2736
+ WRITE_BOOL_FIELD(pseudoconstant);
2737
+ WRITE_BOOL_FIELD(leakproof);
2738
+ WRITE_ENUM_FIELD(has_volatile, VolatileFunctionStatus);
2739
+ WRITE_UINT_FIELD(security_level);
2740
+ WRITE_BITMAPSET_FIELD(clause_relids);
2741
+ WRITE_BITMAPSET_FIELD(required_relids);
2742
+ WRITE_BITMAPSET_FIELD(outer_relids);
2743
+ WRITE_BITMAPSET_FIELD(nullable_relids);
2744
+ WRITE_BITMAPSET_FIELD(left_relids);
2745
+ WRITE_BITMAPSET_FIELD(right_relids);
2746
+ WRITE_NODE_FIELD(orclause);
2747
+ /* don't write parent_ec, leads to infinite recursion in plan tree dump */
2748
+ WRITE_FLOAT_FIELD(norm_selec, "%.4f");
2749
+ WRITE_FLOAT_FIELD(outer_selec, "%.4f");
2750
+ WRITE_NODE_FIELD(mergeopfamilies);
2751
+ /* don't write left_ec, leads to infinite recursion in plan tree dump */
2752
+ /* don't write right_ec, leads to infinite recursion in plan tree dump */
2753
+ WRITE_NODE_FIELD(left_em);
2754
+ WRITE_NODE_FIELD(right_em);
2755
+ WRITE_BOOL_FIELD(outer_is_left);
2756
+ WRITE_OID_FIELD(hashjoinoperator);
2757
+ WRITE_OID_FIELD(left_hasheqoperator);
2758
+ WRITE_OID_FIELD(right_hasheqoperator);
2759
+ }
2760
+
2761
+ static void
2762
+ _outIndexClause(StringInfo str, const IndexClause *node)
2763
+ {
2764
+ WRITE_NODE_TYPE("INDEXCLAUSE");
2765
+
2766
+ WRITE_NODE_FIELD(rinfo);
2767
+ WRITE_NODE_FIELD(indexquals);
2768
+ WRITE_BOOL_FIELD(lossy);
2769
+ WRITE_INT_FIELD(indexcol);
2770
+ WRITE_NODE_FIELD(indexcols);
2771
+ }
2772
+
2773
+ static void
2774
+ _outPlaceHolderVar(StringInfo str, const PlaceHolderVar *node)
2775
+ {
2776
+ WRITE_NODE_TYPE("PLACEHOLDERVAR");
2777
+
2778
+ WRITE_NODE_FIELD(phexpr);
2779
+ WRITE_BITMAPSET_FIELD(phrels);
2780
+ WRITE_UINT_FIELD(phid);
2781
+ WRITE_UINT_FIELD(phlevelsup);
2782
+ }
2783
+
2784
+ static void
2785
+ _outSpecialJoinInfo(StringInfo str, const SpecialJoinInfo *node)
2786
+ {
2787
+ WRITE_NODE_TYPE("SPECIALJOININFO");
2788
+
2789
+ WRITE_BITMAPSET_FIELD(min_lefthand);
2790
+ WRITE_BITMAPSET_FIELD(min_righthand);
2791
+ WRITE_BITMAPSET_FIELD(syn_lefthand);
2792
+ WRITE_BITMAPSET_FIELD(syn_righthand);
2793
+ WRITE_ENUM_FIELD(jointype, JoinType);
2794
+ WRITE_BOOL_FIELD(lhs_strict);
2795
+ WRITE_BOOL_FIELD(delay_upper_joins);
2796
+ WRITE_BOOL_FIELD(semi_can_btree);
2797
+ WRITE_BOOL_FIELD(semi_can_hash);
2798
+ WRITE_NODE_FIELD(semi_operators);
2799
+ WRITE_NODE_FIELD(semi_rhs_exprs);
2800
+ }
2801
+
2802
+ static void
2803
+ _outAppendRelInfo(StringInfo str, const AppendRelInfo *node)
2804
+ {
2805
+ WRITE_NODE_TYPE("APPENDRELINFO");
2806
+
2807
+ WRITE_UINT_FIELD(parent_relid);
2808
+ WRITE_UINT_FIELD(child_relid);
2809
+ WRITE_OID_FIELD(parent_reltype);
2810
+ WRITE_OID_FIELD(child_reltype);
2811
+ WRITE_NODE_FIELD(translated_vars);
2812
+ WRITE_INT_FIELD(num_child_cols);
2813
+ WRITE_ATTRNUMBER_ARRAY(parent_colnos, node->num_child_cols);
2814
+ WRITE_OID_FIELD(parent_reloid);
2815
+ }
2816
+
2817
+ static void
2818
+ _outRowIdentityVarInfo(StringInfo str, const RowIdentityVarInfo *node)
2819
+ {
2820
+ WRITE_NODE_TYPE("ROWIDENTITYVARINFO");
2821
+
2822
+ WRITE_NODE_FIELD(rowidvar);
2823
+ WRITE_INT_FIELD(rowidwidth);
2824
+ WRITE_STRING_FIELD(rowidname);
2825
+ WRITE_BITMAPSET_FIELD(rowidrels);
2826
+ }
2827
+
2828
+ static void
2829
+ _outPlaceHolderInfo(StringInfo str, const PlaceHolderInfo *node)
2830
+ {
2831
+ WRITE_NODE_TYPE("PLACEHOLDERINFO");
2832
+
2833
+ WRITE_UINT_FIELD(phid);
2834
+ WRITE_NODE_FIELD(ph_var);
2835
+ WRITE_BITMAPSET_FIELD(ph_eval_at);
2836
+ WRITE_BITMAPSET_FIELD(ph_lateral);
2837
+ WRITE_BITMAPSET_FIELD(ph_needed);
2838
+ WRITE_INT_FIELD(ph_width);
2839
+ }
2840
+
2841
+ static void
2842
+ _outMinMaxAggInfo(StringInfo str, const MinMaxAggInfo *node)
2843
+ {
2844
+ WRITE_NODE_TYPE("MINMAXAGGINFO");
2845
+
2846
+ WRITE_OID_FIELD(aggfnoid);
2847
+ WRITE_OID_FIELD(aggsortop);
2848
+ WRITE_NODE_FIELD(target);
2849
+ /* We intentionally omit subroot --- too large, not interesting enough */
2850
+ WRITE_NODE_FIELD(path);
2851
+ WRITE_FLOAT_FIELD(pathcost, "%.2f");
2852
+ WRITE_NODE_FIELD(param);
2853
+ }
2854
+
2855
+ static void
2856
+ _outPlannerParamItem(StringInfo str, const PlannerParamItem *node)
2857
+ {
2858
+ WRITE_NODE_TYPE("PLANNERPARAMITEM");
2859
+
2860
+ WRITE_NODE_FIELD(item);
2861
+ WRITE_INT_FIELD(paramId);
2862
+ }
2863
+
2864
+ /*****************************************************************************
2865
+ *
2866
+ * Stuff from extensible.h
2867
+ *
2868
+ *****************************************************************************/
2869
+
2870
+ static void
2871
+ _outExtensibleNode(StringInfo str, const ExtensibleNode *node)
2872
+ {
2873
+ const ExtensibleNodeMethods *methods;
2874
+
2875
+ methods = GetExtensibleNodeMethods(node->extnodename, false);
2876
+
2877
+ WRITE_NODE_TYPE("EXTENSIBLENODE");
2878
+
2879
+ WRITE_STRING_FIELD(extnodename);
2880
+
2881
+ /* serialize the private fields */
2882
+ methods->nodeOut(str, node);
2883
+ }
2884
+
2885
+ /*****************************************************************************
2886
+ *
2887
+ * Stuff from parsenodes.h.
2888
+ *
2889
+ *****************************************************************************/
2890
+
2891
+ /*
2892
+ * print the basic stuff of all nodes that inherit from CreateStmt
2893
+ */
2894
+ static void
2895
+ _outCreateStmtInfo(StringInfo str, const CreateStmt *node)
2896
+ {
2897
+ WRITE_NODE_FIELD(relation);
2898
+ WRITE_NODE_FIELD(tableElts);
2899
+ WRITE_NODE_FIELD(inhRelations);
2900
+ WRITE_NODE_FIELD(partspec);
2901
+ WRITE_NODE_FIELD(partbound);
2902
+ WRITE_NODE_FIELD(ofTypename);
2903
+ WRITE_NODE_FIELD(constraints);
2904
+ WRITE_NODE_FIELD(options);
2905
+ WRITE_ENUM_FIELD(oncommit, OnCommitAction);
2906
+ WRITE_STRING_FIELD(tablespacename);
2907
+ WRITE_STRING_FIELD(accessMethod);
2908
+ WRITE_BOOL_FIELD(if_not_exists);
2909
+ WRITE_NODE_FIELD(split_options);
2910
+ }
2911
+
2912
+ static void
2913
+ _outCreateStmt(StringInfo str, const CreateStmt *node)
2914
+ {
2915
+ WRITE_NODE_TYPE("CREATESTMT");
2916
+
2917
+ _outCreateStmtInfo(str, (const CreateStmt *) node);
2918
+ }
2919
+
2920
+ static void
2921
+ _outCreateForeignTableStmt(StringInfo str, const CreateForeignTableStmt *node)
2922
+ {
2923
+ WRITE_NODE_TYPE("CREATEFOREIGNTABLESTMT");
2924
+
2925
+ _outCreateStmtInfo(str, (const CreateStmt *) node);
2926
+
2927
+ WRITE_STRING_FIELD(servername);
2928
+ WRITE_NODE_FIELD(options);
2929
+ }
2930
+
2931
+ static void
2932
+ _outImportForeignSchemaStmt(StringInfo str, const ImportForeignSchemaStmt *node)
2933
+ {
2934
+ WRITE_NODE_TYPE("IMPORTFOREIGNSCHEMASTMT");
2935
+
2936
+ WRITE_STRING_FIELD(server_name);
2937
+ WRITE_STRING_FIELD(remote_schema);
2938
+ WRITE_STRING_FIELD(local_schema);
2939
+ WRITE_ENUM_FIELD(list_type, ImportForeignSchemaType);
2940
+ WRITE_NODE_FIELD(table_list);
2941
+ WRITE_NODE_FIELD(options);
2942
+ }
2943
+
2944
+ static void
2945
+ _outIndexStmt(StringInfo str, const IndexStmt *node)
2946
+ {
2947
+ WRITE_NODE_TYPE("INDEXSTMT");
2948
+
2949
+ WRITE_STRING_FIELD(idxname);
2950
+ WRITE_NODE_FIELD(relation);
2951
+ WRITE_STRING_FIELD(accessMethod);
2952
+ WRITE_STRING_FIELD(tableSpace);
2953
+ WRITE_NODE_FIELD(indexParams);
2954
+ WRITE_NODE_FIELD(indexIncludingParams);
2955
+ WRITE_NODE_FIELD(options);
2956
+ WRITE_NODE_FIELD(whereClause);
2957
+ WRITE_NODE_FIELD(excludeOpNames);
2958
+ WRITE_STRING_FIELD(idxcomment);
2959
+ WRITE_OID_FIELD(indexOid);
2960
+ WRITE_OID_FIELD(oldNode);
2961
+ WRITE_UINT_FIELD(oldCreateSubid);
2962
+ WRITE_UINT_FIELD(oldFirstRelfilenodeSubid);
2963
+ WRITE_BOOL_FIELD(unique);
2964
+ WRITE_BOOL_FIELD(nulls_not_distinct);
2965
+ WRITE_BOOL_FIELD(primary);
2966
+ WRITE_BOOL_FIELD(isconstraint);
2967
+ WRITE_BOOL_FIELD(deferrable);
2968
+ WRITE_BOOL_FIELD(initdeferred);
2969
+ WRITE_BOOL_FIELD(transformed);
2970
+ WRITE_BOOL_FIELD(concurrent);
2971
+ WRITE_BOOL_FIELD(if_not_exists);
2972
+ WRITE_BOOL_FIELD(reset_default_tblspc);
2973
+ }
2974
+
2975
+ static void
2976
+ _outCreateStatsStmt(StringInfo str, const CreateStatsStmt *node)
2977
+ {
2978
+ WRITE_NODE_TYPE("CREATESTATSSTMT");
2979
+
2980
+ WRITE_NODE_FIELD(defnames);
2981
+ WRITE_NODE_FIELD(stat_types);
2982
+ WRITE_NODE_FIELD(exprs);
2983
+ WRITE_NODE_FIELD(relations);
2984
+ WRITE_STRING_FIELD(stxcomment);
2985
+ WRITE_BOOL_FIELD(transformed);
2986
+ WRITE_BOOL_FIELD(if_not_exists);
2987
+ }
2988
+
2989
+ static void
2990
+ _outAlterStatsStmt(StringInfo str, const AlterStatsStmt *node)
2991
+ {
2992
+ WRITE_NODE_TYPE("ALTERSTATSSTMT");
2993
+
2994
+ WRITE_NODE_FIELD(defnames);
2995
+ WRITE_INT_FIELD(stxstattarget);
2996
+ WRITE_BOOL_FIELD(missing_ok);
2997
+ }
2998
+
2999
+ static void
3000
+ _outNotifyStmt(StringInfo str, const NotifyStmt *node)
3001
+ {
3002
+ WRITE_NODE_TYPE("NOTIFYSTMT");
3003
+
3004
+ WRITE_STRING_FIELD(conditionname);
3005
+ WRITE_STRING_FIELD(payload);
3006
+ }
3007
+
3008
+ static void
3009
+ _outDeclareCursorStmt(StringInfo str, const DeclareCursorStmt *node)
3010
+ {
3011
+ WRITE_NODE_TYPE("DECLARECURSORSTMT");
3012
+
3013
+ WRITE_STRING_FIELD(portalname);
3014
+ WRITE_INT_FIELD(options);
3015
+ WRITE_NODE_FIELD(query);
3016
+ }
3017
+
3018
+ static void
3019
+ _outSelectStmt(StringInfo str, const SelectStmt *node)
3020
+ {
3021
+ WRITE_NODE_TYPE("SELECT");
3022
+
3023
+ WRITE_NODE_FIELD(distinctClause);
3024
+ WRITE_NODE_FIELD(intoClause);
3025
+ WRITE_NODE_FIELD(targetList);
3026
+ WRITE_NODE_FIELD(fromClause);
3027
+ WRITE_NODE_FIELD(whereClause);
3028
+ WRITE_NODE_FIELD(groupClause);
3029
+ WRITE_BOOL_FIELD(groupDistinct);
3030
+ WRITE_NODE_FIELD(havingClause);
3031
+ WRITE_NODE_FIELD(windowClause);
3032
+ WRITE_NODE_FIELD(valuesLists);
3033
+ WRITE_NODE_FIELD(sortClause);
3034
+ WRITE_NODE_FIELD(limitOffset);
3035
+ WRITE_NODE_FIELD(limitCount);
3036
+ WRITE_ENUM_FIELD(limitOption, LimitOption);
3037
+ WRITE_NODE_FIELD(lockingClause);
3038
+ WRITE_NODE_FIELD(withClause);
3039
+ WRITE_ENUM_FIELD(op, SetOperation);
3040
+ WRITE_BOOL_FIELD(all);
3041
+ WRITE_NODE_FIELD(larg);
3042
+ WRITE_NODE_FIELD(rarg);
3043
+ }
3044
+
3045
+ static void
3046
+ _outReturnStmt(StringInfo str, const ReturnStmt *node)
3047
+ {
3048
+ WRITE_NODE_TYPE("RETURN");
3049
+
3050
+ WRITE_NODE_FIELD(returnval);
3051
+ }
3052
+
3053
+ static void
3054
+ _outPLAssignStmt(StringInfo str, const PLAssignStmt *node)
3055
+ {
3056
+ WRITE_NODE_TYPE("PLASSIGN");
3057
+
3058
+ WRITE_STRING_FIELD(name);
3059
+ WRITE_NODE_FIELD(indirection);
3060
+ WRITE_INT_FIELD(nnames);
3061
+ WRITE_NODE_FIELD(val);
3062
+ WRITE_LOCATION_FIELD(location);
3063
+ }
3064
+
3065
+ static void
3066
+ _outFuncCall(StringInfo str, const FuncCall *node)
3067
+ {
3068
+ WRITE_NODE_TYPE("FUNCCALL");
3069
+
3070
+ WRITE_NODE_FIELD(funcname);
3071
+ WRITE_NODE_FIELD(args);
3072
+ WRITE_NODE_FIELD(agg_order);
3073
+ WRITE_NODE_FIELD(agg_filter);
3074
+ WRITE_NODE_FIELD(over);
3075
+ WRITE_BOOL_FIELD(agg_within_group);
3076
+ WRITE_BOOL_FIELD(agg_star);
3077
+ WRITE_BOOL_FIELD(agg_distinct);
3078
+ WRITE_BOOL_FIELD(func_variadic);
3079
+ WRITE_ENUM_FIELD(funcformat, CoercionForm);
3080
+ WRITE_LOCATION_FIELD(location);
3081
+ }
3082
+
3083
+ static void
3084
+ _outDefElem(StringInfo str, const DefElem *node)
3085
+ {
3086
+ WRITE_NODE_TYPE("DEFELEM");
3087
+
3088
+ WRITE_STRING_FIELD(defnamespace);
3089
+ WRITE_STRING_FIELD(defname);
3090
+ WRITE_NODE_FIELD(arg);
3091
+ WRITE_ENUM_FIELD(defaction, DefElemAction);
3092
+ WRITE_LOCATION_FIELD(location);
3093
+ }
3094
+
3095
+ static void
3096
+ _outTableLikeClause(StringInfo str, const TableLikeClause *node)
3097
+ {
3098
+ WRITE_NODE_TYPE("TABLELIKECLAUSE");
3099
+
3100
+ WRITE_NODE_FIELD(relation);
3101
+ WRITE_UINT_FIELD(options);
3102
+ WRITE_OID_FIELD(relationOid);
3103
+ }
3104
+
3105
+ static void
3106
+ _outLockingClause(StringInfo str, const LockingClause *node)
3107
+ {
3108
+ WRITE_NODE_TYPE("LOCKINGCLAUSE");
3109
+
3110
+ WRITE_NODE_FIELD(lockedRels);
3111
+ WRITE_ENUM_FIELD(strength, LockClauseStrength);
3112
+ WRITE_ENUM_FIELD(waitPolicy, LockWaitPolicy);
3113
+ }
3114
+
3115
+ static void
3116
+ _outXmlSerialize(StringInfo str, const XmlSerialize *node)
3117
+ {
3118
+ WRITE_NODE_TYPE("XMLSERIALIZE");
3119
+
3120
+ WRITE_ENUM_FIELD(xmloption, XmlOptionType);
3121
+ WRITE_NODE_FIELD(expr);
3122
+ WRITE_NODE_FIELD(typeName);
3123
+ WRITE_LOCATION_FIELD(location);
3124
+ }
3125
+
3126
+ static void
3127
+ _outTriggerTransition(StringInfo str, const TriggerTransition *node)
3128
+ {
3129
+ WRITE_NODE_TYPE("TRIGGERTRANSITION");
3130
+
3131
+ WRITE_STRING_FIELD(name);
3132
+ WRITE_BOOL_FIELD(isNew);
3133
+ WRITE_BOOL_FIELD(isTable);
3134
+ }
3135
+
3136
+ static void
3137
+ _outColumnDef(StringInfo str, const ColumnDef *node)
3138
+ {
3139
+ WRITE_NODE_TYPE("COLUMNDEF");
3140
+
3141
+ WRITE_STRING_FIELD(colname);
3142
+ WRITE_NODE_FIELD(typeName);
3143
+ WRITE_STRING_FIELD(compression);
3144
+ WRITE_INT_FIELD(inhcount);
3145
+ WRITE_BOOL_FIELD(is_local);
3146
+ WRITE_BOOL_FIELD(is_not_null);
3147
+ WRITE_BOOL_FIELD(is_from_type);
3148
+ WRITE_CHAR_FIELD(storage);
3149
+ WRITE_NODE_FIELD(raw_default);
3150
+ WRITE_NODE_FIELD(cooked_default);
3151
+ WRITE_CHAR_FIELD(identity);
3152
+ WRITE_NODE_FIELD(identitySequence);
3153
+ WRITE_CHAR_FIELD(generated);
3154
+ WRITE_NODE_FIELD(collClause);
3155
+ WRITE_OID_FIELD(collOid);
3156
+ WRITE_NODE_FIELD(constraints);
3157
+ WRITE_NODE_FIELD(fdwoptions);
3158
+ WRITE_LOCATION_FIELD(location);
3159
+ }
3160
+
3161
+ static void
3162
+ _outTypeName(StringInfo str, const TypeName *node)
3163
+ {
3164
+ WRITE_NODE_TYPE("TYPENAME");
3165
+
3166
+ WRITE_NODE_FIELD(names);
3167
+ WRITE_OID_FIELD(typeOid);
3168
+ WRITE_BOOL_FIELD(setof);
3169
+ WRITE_BOOL_FIELD(pct_type);
3170
+ WRITE_NODE_FIELD(typmods);
3171
+ WRITE_INT_FIELD(typemod);
3172
+ WRITE_NODE_FIELD(arrayBounds);
3173
+ WRITE_LOCATION_FIELD(location);
3174
+ }
3175
+
3176
+ static void
3177
+ _outTypeCast(StringInfo str, const TypeCast *node)
3178
+ {
3179
+ WRITE_NODE_TYPE("TYPECAST");
3180
+
3181
+ WRITE_NODE_FIELD(arg);
3182
+ WRITE_NODE_FIELD(typeName);
3183
+ WRITE_LOCATION_FIELD(location);
3184
+ }
3185
+
3186
+ static void
3187
+ _outCollateClause(StringInfo str, const CollateClause *node)
3188
+ {
3189
+ WRITE_NODE_TYPE("COLLATECLAUSE");
3190
+
3191
+ WRITE_NODE_FIELD(arg);
3192
+ WRITE_NODE_FIELD(collname);
3193
+ WRITE_LOCATION_FIELD(location);
3194
+ }
3195
+
3196
+ static void
3197
+ _outIndexElem(StringInfo str, const IndexElem *node)
3198
+ {
3199
+ WRITE_NODE_TYPE("INDEXELEM");
3200
+
3201
+ WRITE_STRING_FIELD(name);
3202
+ WRITE_NODE_FIELD(expr);
3203
+ WRITE_STRING_FIELD(indexcolname);
3204
+ WRITE_NODE_FIELD(collation);
3205
+ WRITE_NODE_FIELD(opclass);
3206
+ WRITE_NODE_FIELD(opclassopts);
3207
+ WRITE_ENUM_FIELD(ordering, SortByDir);
3208
+ WRITE_ENUM_FIELD(nulls_ordering, SortByNulls);
3209
+ }
3210
+
3211
+ static void
3212
+ _outStatsElem(StringInfo str, const StatsElem *node)
3213
+ {
3214
+ WRITE_NODE_TYPE("STATSELEM");
3215
+
3216
+ WRITE_STRING_FIELD(name);
3217
+ WRITE_NODE_FIELD(expr);
3218
+ }
3219
+
3220
+ static void
3221
+ _outQuery(StringInfo str, const Query *node)
3222
+ {
3223
+ WRITE_NODE_TYPE("QUERY");
3224
+
3225
+ WRITE_ENUM_FIELD(commandType, CmdType);
3226
+ WRITE_ENUM_FIELD(querySource, QuerySource);
3227
+ /* we intentionally do not print the queryId field */
3228
+ WRITE_BOOL_FIELD(canSetTag);
3229
+
3230
+ /*
3231
+ * Hack to work around missing outfuncs routines for a lot of the
3232
+ * utility-statement node types. (The only one we actually *need* for
3233
+ * rules support is NotifyStmt.) Someday we ought to support 'em all, but
3234
+ * for the meantime do this to avoid getting lots of warnings when running
3235
+ * with debug_print_parse on.
3236
+ */
3237
+ if (node->utilityStmt)
3238
+ {
3239
+ switch (nodeTag(node->utilityStmt))
3240
+ {
3241
+ case T_CreateStmt:
3242
+ case T_IndexStmt:
3243
+ case T_NotifyStmt:
3244
+ case T_DeclareCursorStmt:
3245
+ WRITE_NODE_FIELD(utilityStmt);
3246
+ break;
3247
+ default:
3248
+ appendStringInfoString(str, " :utilityStmt ?");
3249
+ break;
3250
+ }
3251
+ }
3252
+ else
3253
+ appendStringInfoString(str, " :utilityStmt <>");
3254
+
3255
+ WRITE_INT_FIELD(resultRelation);
3256
+ WRITE_BOOL_FIELD(hasAggs);
3257
+ WRITE_BOOL_FIELD(hasWindowFuncs);
3258
+ WRITE_BOOL_FIELD(hasTargetSRFs);
3259
+ WRITE_BOOL_FIELD(hasSubLinks);
3260
+ WRITE_BOOL_FIELD(hasDistinctOn);
3261
+ WRITE_BOOL_FIELD(hasRecursive);
3262
+ WRITE_BOOL_FIELD(hasModifyingCTE);
3263
+ WRITE_BOOL_FIELD(hasForUpdate);
3264
+ WRITE_BOOL_FIELD(hasRowSecurity);
3265
+ WRITE_BOOL_FIELD(isReturn);
3266
+ WRITE_NODE_FIELD(cteList);
3267
+ WRITE_NODE_FIELD(rtable);
3268
+ WRITE_NODE_FIELD(jointree);
3269
+ WRITE_NODE_FIELD(targetList);
3270
+ WRITE_ENUM_FIELD(override, OverridingKind);
3271
+ WRITE_NODE_FIELD(onConflict);
3272
+ WRITE_NODE_FIELD(returningList);
3273
+ WRITE_NODE_FIELD(groupClause);
3274
+ WRITE_BOOL_FIELD(groupDistinct);
3275
+ WRITE_NODE_FIELD(groupingSets);
3276
+ WRITE_NODE_FIELD(havingQual);
3277
+ WRITE_NODE_FIELD(windowClause);
3278
+ WRITE_NODE_FIELD(distinctClause);
3279
+ WRITE_NODE_FIELD(sortClause);
3280
+ WRITE_NODE_FIELD(limitOffset);
3281
+ WRITE_NODE_FIELD(limitCount);
3282
+ WRITE_ENUM_FIELD(limitOption, LimitOption);
3283
+ WRITE_NODE_FIELD(rowMarks);
3284
+ WRITE_NODE_FIELD(setOperations);
3285
+ WRITE_NODE_FIELD(constraintDeps);
3286
+ WRITE_NODE_FIELD(withCheckOptions);
3287
+ WRITE_NODE_FIELD(mergeActionList);
3288
+ WRITE_BOOL_FIELD(mergeUseOuterJoin);
3289
+ WRITE_LOCATION_FIELD(stmt_location);
3290
+ WRITE_INT_FIELD(stmt_len);
3291
+ }
3292
+
3293
+ static void
3294
+ _outWithCheckOption(StringInfo str, const WithCheckOption *node)
3295
+ {
3296
+ WRITE_NODE_TYPE("WITHCHECKOPTION");
3297
+
3298
+ WRITE_ENUM_FIELD(kind, WCOKind);
3299
+ WRITE_STRING_FIELD(relname);
3300
+ WRITE_STRING_FIELD(polname);
3301
+ WRITE_NODE_FIELD(qual);
3302
+ WRITE_BOOL_FIELD(cascaded);
3303
+ }
3304
+
3305
+ static void
3306
+ _outSortGroupClause(StringInfo str, const SortGroupClause *node)
3307
+ {
3308
+ WRITE_NODE_TYPE("SORTGROUPCLAUSE");
3309
+
3310
+ WRITE_UINT_FIELD(tleSortGroupRef);
3311
+ WRITE_OID_FIELD(eqop);
3312
+ WRITE_OID_FIELD(sortop);
3313
+ WRITE_BOOL_FIELD(nulls_first);
3314
+ WRITE_BOOL_FIELD(hashable);
3315
+ }
3316
+
3317
+ static void
3318
+ _outGroupingSet(StringInfo str, const GroupingSet *node)
3319
+ {
3320
+ WRITE_NODE_TYPE("GROUPINGSET");
3321
+
3322
+ WRITE_ENUM_FIELD(kind, GroupingSetKind);
3323
+ WRITE_NODE_FIELD(content);
3324
+ WRITE_LOCATION_FIELD(location);
3325
+ }
3326
+
3327
+ static void
3328
+ _outWindowClause(StringInfo str, const WindowClause *node)
3329
+ {
3330
+ WRITE_NODE_TYPE("WINDOWCLAUSE");
3331
+
3332
+ WRITE_STRING_FIELD(name);
3333
+ WRITE_STRING_FIELD(refname);
3334
+ WRITE_NODE_FIELD(partitionClause);
3335
+ WRITE_NODE_FIELD(orderClause);
3336
+ WRITE_INT_FIELD(frameOptions);
3337
+ WRITE_NODE_FIELD(startOffset);
3338
+ WRITE_NODE_FIELD(endOffset);
3339
+ WRITE_NODE_FIELD(runCondition);
3340
+ WRITE_OID_FIELD(startInRangeFunc);
3341
+ WRITE_OID_FIELD(endInRangeFunc);
3342
+ WRITE_OID_FIELD(inRangeColl);
3343
+ WRITE_BOOL_FIELD(inRangeAsc);
3344
+ WRITE_BOOL_FIELD(inRangeNullsFirst);
3345
+ WRITE_UINT_FIELD(winref);
3346
+ WRITE_BOOL_FIELD(copiedOrder);
3347
+ }
3348
+
3349
+ static void
3350
+ _outRowMarkClause(StringInfo str, const RowMarkClause *node)
3351
+ {
3352
+ WRITE_NODE_TYPE("ROWMARKCLAUSE");
3353
+
3354
+ WRITE_UINT_FIELD(rti);
3355
+ WRITE_ENUM_FIELD(strength, LockClauseStrength);
3356
+ WRITE_ENUM_FIELD(waitPolicy, LockWaitPolicy);
3357
+ WRITE_BOOL_FIELD(pushedDown);
3358
+ }
3359
+
3360
+ static void
3361
+ _outWithClause(StringInfo str, const WithClause *node)
3362
+ {
3363
+ WRITE_NODE_TYPE("WITHCLAUSE");
3364
+
3365
+ WRITE_NODE_FIELD(ctes);
3366
+ WRITE_BOOL_FIELD(recursive);
3367
+ WRITE_LOCATION_FIELD(location);
3368
+ }
3369
+
3370
+ static void
3371
+ _outCTESearchClause(StringInfo str, const CTESearchClause *node)
3372
+ {
3373
+ WRITE_NODE_TYPE("CTESEARCHCLAUSE");
3374
+
3375
+ WRITE_NODE_FIELD(search_col_list);
3376
+ WRITE_BOOL_FIELD(search_breadth_first);
3377
+ WRITE_STRING_FIELD(search_seq_column);
3378
+ WRITE_LOCATION_FIELD(location);
3379
+ }
3380
+
3381
+ static void
3382
+ _outCTECycleClause(StringInfo str, const CTECycleClause *node)
3383
+ {
3384
+ WRITE_NODE_TYPE("CTECYCLECLAUSE");
3385
+
3386
+ WRITE_NODE_FIELD(cycle_col_list);
3387
+ WRITE_STRING_FIELD(cycle_mark_column);
3388
+ WRITE_NODE_FIELD(cycle_mark_value);
3389
+ WRITE_NODE_FIELD(cycle_mark_default);
3390
+ WRITE_STRING_FIELD(cycle_path_column);
3391
+ WRITE_LOCATION_FIELD(location);
3392
+ WRITE_OID_FIELD(cycle_mark_type);
3393
+ WRITE_INT_FIELD(cycle_mark_typmod);
3394
+ WRITE_OID_FIELD(cycle_mark_collation);
3395
+ WRITE_OID_FIELD(cycle_mark_neop);
3396
+ }
3397
+
3398
+ static void
3399
+ _outCommonTableExpr(StringInfo str, const CommonTableExpr *node)
3400
+ {
3401
+ WRITE_NODE_TYPE("COMMONTABLEEXPR");
3402
+
3403
+ WRITE_STRING_FIELD(ctename);
3404
+ WRITE_NODE_FIELD(aliascolnames);
3405
+ WRITE_ENUM_FIELD(ctematerialized, CTEMaterialize);
3406
+ WRITE_NODE_FIELD(ctequery);
3407
+ WRITE_NODE_FIELD(search_clause);
3408
+ WRITE_NODE_FIELD(cycle_clause);
3409
+ WRITE_LOCATION_FIELD(location);
3410
+ WRITE_BOOL_FIELD(cterecursive);
3411
+ WRITE_INT_FIELD(cterefcount);
3412
+ WRITE_NODE_FIELD(ctecolnames);
3413
+ WRITE_NODE_FIELD(ctecoltypes);
3414
+ WRITE_NODE_FIELD(ctecoltypmods);
3415
+ WRITE_NODE_FIELD(ctecolcollations);
3416
+ }
3417
+
3418
+ static void
3419
+ _outMergeWhenClause(StringInfo str, const MergeWhenClause *node)
3420
+ {
3421
+ WRITE_NODE_TYPE("MERGEWHENCLAUSE");
3422
+
3423
+ WRITE_BOOL_FIELD(matched);
3424
+ WRITE_ENUM_FIELD(commandType, CmdType);
3425
+ WRITE_ENUM_FIELD(override, OverridingKind);
3426
+ WRITE_NODE_FIELD(condition);
3427
+ WRITE_NODE_FIELD(targetList);
3428
+ WRITE_NODE_FIELD(values);
3429
+ }
3430
+
3431
+ static void
3432
+ _outMergeAction(StringInfo str, const MergeAction *node)
3433
+ {
3434
+ WRITE_NODE_TYPE("MERGEACTION");
3435
+
3436
+ WRITE_BOOL_FIELD(matched);
3437
+ WRITE_ENUM_FIELD(commandType, CmdType);
3438
+ WRITE_ENUM_FIELD(override, OverridingKind);
3439
+ WRITE_NODE_FIELD(qual);
3440
+ WRITE_NODE_FIELD(targetList);
3441
+ WRITE_NODE_FIELD(updateColnos);
3442
+ }
3443
+
3444
+ static void
3445
+ _outSetOperationStmt(StringInfo str, const SetOperationStmt *node)
3446
+ {
3447
+ WRITE_NODE_TYPE("SETOPERATIONSTMT");
3448
+
3449
+ WRITE_ENUM_FIELD(op, SetOperation);
3450
+ WRITE_BOOL_FIELD(all);
3451
+ WRITE_NODE_FIELD(larg);
3452
+ WRITE_NODE_FIELD(rarg);
3453
+ WRITE_NODE_FIELD(colTypes);
3454
+ WRITE_NODE_FIELD(colTypmods);
3455
+ WRITE_NODE_FIELD(colCollations);
3456
+ WRITE_NODE_FIELD(groupClauses);
3457
+ }
3458
+
3459
+ static void
3460
+ _outRangeTblEntry(StringInfo str, const RangeTblEntry *node)
3461
+ {
3462
+ WRITE_NODE_TYPE("RANGETBLENTRY");
3463
+
3464
+ /* put alias + eref first to make dump more legible */
3465
+ WRITE_NODE_FIELD(alias);
3466
+ WRITE_NODE_FIELD(eref);
3467
+ WRITE_ENUM_FIELD(rtekind, RTEKind);
3468
+
3469
+ switch (node->rtekind)
3470
+ {
3471
+ case RTE_RELATION:
3472
+ WRITE_OID_FIELD(relid);
3473
+ WRITE_CHAR_FIELD(relkind);
3474
+ WRITE_INT_FIELD(rellockmode);
3475
+ WRITE_NODE_FIELD(tablesample);
3476
+ break;
3477
+ case RTE_SUBQUERY:
3478
+ WRITE_NODE_FIELD(subquery);
3479
+ WRITE_BOOL_FIELD(security_barrier);
3480
+ break;
3481
+ case RTE_JOIN:
3482
+ WRITE_ENUM_FIELD(jointype, JoinType);
3483
+ WRITE_INT_FIELD(joinmergedcols);
3484
+ WRITE_NODE_FIELD(joinaliasvars);
3485
+ WRITE_NODE_FIELD(joinleftcols);
3486
+ WRITE_NODE_FIELD(joinrightcols);
3487
+ WRITE_NODE_FIELD(join_using_alias);
3488
+ break;
3489
+ case RTE_FUNCTION:
3490
+ WRITE_NODE_FIELD(functions);
3491
+ WRITE_BOOL_FIELD(funcordinality);
3492
+ break;
3493
+ case RTE_TABLEFUNC:
3494
+ WRITE_NODE_FIELD(tablefunc);
3495
+ break;
3496
+ case RTE_VALUES:
3497
+ WRITE_NODE_FIELD(values_lists);
3498
+ WRITE_NODE_FIELD(coltypes);
3499
+ WRITE_NODE_FIELD(coltypmods);
3500
+ WRITE_NODE_FIELD(colcollations);
3501
+ break;
3502
+ case RTE_CTE:
3503
+ WRITE_STRING_FIELD(ctename);
3504
+ WRITE_UINT_FIELD(ctelevelsup);
3505
+ WRITE_BOOL_FIELD(self_reference);
3506
+ WRITE_NODE_FIELD(coltypes);
3507
+ WRITE_NODE_FIELD(coltypmods);
3508
+ WRITE_NODE_FIELD(colcollations);
3509
+ break;
3510
+ case RTE_NAMEDTUPLESTORE:
3511
+ WRITE_STRING_FIELD(enrname);
3512
+ WRITE_FLOAT_FIELD(enrtuples, "%.0f");
3513
+ WRITE_OID_FIELD(relid);
3514
+ WRITE_NODE_FIELD(coltypes);
3515
+ WRITE_NODE_FIELD(coltypmods);
3516
+ WRITE_NODE_FIELD(colcollations);
3517
+ break;
3518
+ case RTE_RESULT:
3519
+ /* no extra fields */
3520
+ break;
3521
+ default:
3522
+ elog(ERROR, "unrecognized RTE kind: %d", (int) node->rtekind);
3523
+ break;
3524
+ }
3525
+
3526
+ WRITE_BOOL_FIELD(lateral);
3527
+ WRITE_BOOL_FIELD(inh);
3528
+ WRITE_BOOL_FIELD(inFromCl);
3529
+ WRITE_UINT_FIELD(requiredPerms);
3530
+ WRITE_OID_FIELD(checkAsUser);
3531
+ WRITE_BITMAPSET_FIELD(selectedCols);
3532
+ WRITE_BITMAPSET_FIELD(insertedCols);
3533
+ WRITE_BITMAPSET_FIELD(updatedCols);
3534
+ WRITE_BITMAPSET_FIELD(extraUpdatedCols);
3535
+ WRITE_NODE_FIELD(securityQuals);
3536
+ }
3537
+
3538
+ static void
3539
+ _outRangeTblFunction(StringInfo str, const RangeTblFunction *node)
3540
+ {
3541
+ WRITE_NODE_TYPE("RANGETBLFUNCTION");
3542
+
3543
+ WRITE_NODE_FIELD(funcexpr);
3544
+ WRITE_INT_FIELD(funccolcount);
3545
+ WRITE_NODE_FIELD(funccolnames);
3546
+ WRITE_NODE_FIELD(funccoltypes);
3547
+ WRITE_NODE_FIELD(funccoltypmods);
3548
+ WRITE_NODE_FIELD(funccolcollations);
3549
+ WRITE_BITMAPSET_FIELD(funcparams);
3550
+ }
3551
+
3552
+ static void
3553
+ _outTableSampleClause(StringInfo str, const TableSampleClause *node)
3554
+ {
3555
+ WRITE_NODE_TYPE("TABLESAMPLECLAUSE");
3556
+
3557
+ WRITE_OID_FIELD(tsmhandler);
3558
+ WRITE_NODE_FIELD(args);
3559
+ WRITE_NODE_FIELD(repeatable);
3560
+ }
3561
+
3562
+ static void
3563
+ _outA_Expr(StringInfo str, const A_Expr *node)
3564
+ {
3565
+ WRITE_NODE_TYPE("AEXPR");
3566
+
3567
+ switch (node->kind)
3568
+ {
3569
+ case AEXPR_OP:
3570
+ appendStringInfoChar(str, ' ');
3571
+ WRITE_NODE_FIELD(name);
3572
+ break;
3573
+ case AEXPR_OP_ANY:
3574
+ appendStringInfoChar(str, ' ');
3575
+ WRITE_NODE_FIELD(name);
3576
+ appendStringInfoString(str, " ANY ");
3577
+ break;
3578
+ case AEXPR_OP_ALL:
3579
+ appendStringInfoChar(str, ' ');
3580
+ WRITE_NODE_FIELD(name);
3581
+ appendStringInfoString(str, " ALL ");
3582
+ break;
3583
+ case AEXPR_DISTINCT:
3584
+ appendStringInfoString(str, " DISTINCT ");
3585
+ WRITE_NODE_FIELD(name);
3586
+ break;
3587
+ case AEXPR_NOT_DISTINCT:
3588
+ appendStringInfoString(str, " NOT_DISTINCT ");
3589
+ WRITE_NODE_FIELD(name);
3590
+ break;
3591
+ case AEXPR_NULLIF:
3592
+ appendStringInfoString(str, " NULLIF ");
3593
+ WRITE_NODE_FIELD(name);
3594
+ break;
3595
+ case AEXPR_IN:
3596
+ appendStringInfoString(str, " IN ");
3597
+ WRITE_NODE_FIELD(name);
3598
+ break;
3599
+ case AEXPR_LIKE:
3600
+ appendStringInfoString(str, " LIKE ");
3601
+ WRITE_NODE_FIELD(name);
3602
+ break;
3603
+ case AEXPR_ILIKE:
3604
+ appendStringInfoString(str, " ILIKE ");
3605
+ WRITE_NODE_FIELD(name);
3606
+ break;
3607
+ case AEXPR_SIMILAR:
3608
+ appendStringInfoString(str, " SIMILAR ");
3609
+ WRITE_NODE_FIELD(name);
3610
+ break;
3611
+ case AEXPR_BETWEEN:
3612
+ appendStringInfoString(str, " BETWEEN ");
3613
+ WRITE_NODE_FIELD(name);
3614
+ break;
3615
+ case AEXPR_NOT_BETWEEN:
3616
+ appendStringInfoString(str, " NOT_BETWEEN ");
3617
+ WRITE_NODE_FIELD(name);
3618
+ break;
3619
+ case AEXPR_BETWEEN_SYM:
3620
+ appendStringInfoString(str, " BETWEEN_SYM ");
3621
+ WRITE_NODE_FIELD(name);
3622
+ break;
3623
+ case AEXPR_NOT_BETWEEN_SYM:
3624
+ appendStringInfoString(str, " NOT_BETWEEN_SYM ");
3625
+ WRITE_NODE_FIELD(name);
3626
+ break;
3627
+ default:
3628
+ appendStringInfoString(str, " ??");
3629
+ break;
3630
+ }
3631
+
3632
+ WRITE_NODE_FIELD(lexpr);
3633
+ WRITE_NODE_FIELD(rexpr);
3634
+ WRITE_LOCATION_FIELD(location);
3635
+ }
3636
+
3637
+ static void
3638
+ _outInteger(StringInfo str, const Integer *node)
3639
+ {
3640
+ appendStringInfo(str, "%d", node->ival);
3641
+ }
3642
+
3643
+ static void
3644
+ _outFloat(StringInfo str, const Float *node)
3645
+ {
3646
+ /*
3647
+ * We assume the value is a valid numeric literal and so does not need
3648
+ * quoting.
3649
+ */
3650
+ appendStringInfoString(str, node->fval);
3651
+ }
3652
+
3653
+ static void
3654
+ _outBoolean(StringInfo str, const Boolean *node)
3655
+ {
3656
+ appendStringInfoString(str, node->boolval ? "true" : "false");
3657
+ }
3658
+
3659
+ static void
3660
+ _outString(StringInfo str, const String *node)
3661
+ {
3662
+ /*
3663
+ * We use outToken to provide escaping of the string's content, but we
3664
+ * don't want it to do anything with an empty string.
3665
+ */
3666
+ appendStringInfoChar(str, '"');
3667
+ if (node->sval[0] != '\0')
3668
+ outToken(str, node->sval);
3669
+ appendStringInfoChar(str, '"');
3670
+ }
3671
+
3672
+ static void
3673
+ _outBitString(StringInfo str, const BitString *node)
3674
+ {
3675
+ /* internal representation already has leading 'b' */
3676
+ appendStringInfoString(str, node->bsval);
3677
+ }
3678
+
3679
+ static void
3680
+ _outColumnRef(StringInfo str, const ColumnRef *node)
3681
+ {
3682
+ WRITE_NODE_TYPE("COLUMNREF");
3683
+
3684
+ WRITE_NODE_FIELD(fields);
3685
+ WRITE_LOCATION_FIELD(location);
3686
+ }
3687
+
3688
+ static void
3689
+ _outParamRef(StringInfo str, const ParamRef *node)
3690
+ {
3691
+ WRITE_NODE_TYPE("PARAMREF");
3692
+
3693
+ WRITE_INT_FIELD(number);
3694
+ WRITE_LOCATION_FIELD(location);
3695
+ }
3696
+
3697
+ /*
3698
+ * Node types found in raw parse trees (supported for debug purposes)
3699
+ */
3700
+
3701
+ static void
3702
+ _outRawStmt(StringInfo str, const RawStmt *node)
3703
+ {
3704
+ WRITE_NODE_TYPE("RAWSTMT");
3705
+
3706
+ WRITE_NODE_FIELD(stmt);
3707
+ WRITE_LOCATION_FIELD(stmt_location);
3708
+ WRITE_INT_FIELD(stmt_len);
3709
+ }
3710
+
3711
+ static void
3712
+ _outA_Const(StringInfo str, const A_Const *node)
3713
+ {
3714
+ WRITE_NODE_TYPE("A_CONST");
3715
+
3716
+ if (node->isnull)
3717
+ appendStringInfoString(str, " NULL");
3718
+ else
3719
+ {
3720
+ appendStringInfoString(str, " :val ");
3721
+ outNode(str, &node->val);
3722
+ }
3723
+ WRITE_LOCATION_FIELD(location);
3724
+ }
3725
+
3726
+ static void
3727
+ _outA_Star(StringInfo str, const A_Star *node)
3728
+ {
3729
+ WRITE_NODE_TYPE("A_STAR");
3730
+ }
3731
+
3732
+ static void
3733
+ _outA_Indices(StringInfo str, const A_Indices *node)
3734
+ {
3735
+ WRITE_NODE_TYPE("A_INDICES");
3736
+
3737
+ WRITE_BOOL_FIELD(is_slice);
3738
+ WRITE_NODE_FIELD(lidx);
3739
+ WRITE_NODE_FIELD(uidx);
3740
+ }
3741
+
3742
+ static void
3743
+ _outA_Indirection(StringInfo str, const A_Indirection *node)
3744
+ {
3745
+ WRITE_NODE_TYPE("A_INDIRECTION");
3746
+
3747
+ WRITE_NODE_FIELD(arg);
3748
+ WRITE_NODE_FIELD(indirection);
3749
+ }
3750
+
3751
+ static void
3752
+ _outA_ArrayExpr(StringInfo str, const A_ArrayExpr *node)
3753
+ {
3754
+ WRITE_NODE_TYPE("A_ARRAYEXPR");
3755
+
3756
+ WRITE_NODE_FIELD(elements);
3757
+ WRITE_LOCATION_FIELD(location);
3758
+ }
3759
+
3760
+ static void
3761
+ _outResTarget(StringInfo str, const ResTarget *node)
3762
+ {
3763
+ WRITE_NODE_TYPE("RESTARGET");
3764
+
3765
+ WRITE_STRING_FIELD(name);
3766
+ WRITE_NODE_FIELD(indirection);
3767
+ WRITE_NODE_FIELD(val);
3768
+ WRITE_LOCATION_FIELD(location);
3769
+ }
3770
+
3771
+ static void
3772
+ _outMultiAssignRef(StringInfo str, const MultiAssignRef *node)
3773
+ {
3774
+ WRITE_NODE_TYPE("MULTIASSIGNREF");
3775
+
3776
+ WRITE_NODE_FIELD(source);
3777
+ WRITE_INT_FIELD(colno);
3778
+ WRITE_INT_FIELD(ncolumns);
3779
+ }
3780
+
3781
+ static void
3782
+ _outSortBy(StringInfo str, const SortBy *node)
3783
+ {
3784
+ WRITE_NODE_TYPE("SORTBY");
3785
+
3786
+ WRITE_NODE_FIELD(node);
3787
+ WRITE_ENUM_FIELD(sortby_dir, SortByDir);
3788
+ WRITE_ENUM_FIELD(sortby_nulls, SortByNulls);
3789
+ WRITE_NODE_FIELD(useOp);
3790
+ WRITE_LOCATION_FIELD(location);
3791
+ }
3792
+
3793
+ static void
3794
+ _outWindowDef(StringInfo str, const WindowDef *node)
3795
+ {
3796
+ WRITE_NODE_TYPE("WINDOWDEF");
3797
+
3798
+ WRITE_STRING_FIELD(name);
3799
+ WRITE_STRING_FIELD(refname);
3800
+ WRITE_NODE_FIELD(partitionClause);
3801
+ WRITE_NODE_FIELD(orderClause);
3802
+ WRITE_INT_FIELD(frameOptions);
3803
+ WRITE_NODE_FIELD(startOffset);
3804
+ WRITE_NODE_FIELD(endOffset);
3805
+ WRITE_LOCATION_FIELD(location);
3806
+ }
3807
+
3808
+ static void
3809
+ _outRangeSubselect(StringInfo str, const RangeSubselect *node)
3810
+ {
3811
+ WRITE_NODE_TYPE("RANGESUBSELECT");
3812
+
3813
+ WRITE_BOOL_FIELD(lateral);
3814
+ WRITE_NODE_FIELD(subquery);
3815
+ WRITE_NODE_FIELD(alias);
3816
+ }
3817
+
3818
+ static void
3819
+ _outRangeFunction(StringInfo str, const RangeFunction *node)
3820
+ {
3821
+ WRITE_NODE_TYPE("RANGEFUNCTION");
3822
+
3823
+ WRITE_BOOL_FIELD(lateral);
3824
+ WRITE_BOOL_FIELD(ordinality);
3825
+ WRITE_BOOL_FIELD(is_rowsfrom);
3826
+ WRITE_NODE_FIELD(functions);
3827
+ WRITE_NODE_FIELD(alias);
3828
+ WRITE_NODE_FIELD(coldeflist);
3829
+ }
3830
+
3831
+ static void
3832
+ _outRangeTableSample(StringInfo str, const RangeTableSample *node)
3833
+ {
3834
+ WRITE_NODE_TYPE("RANGETABLESAMPLE");
3835
+
3836
+ WRITE_NODE_FIELD(relation);
3837
+ WRITE_NODE_FIELD(method);
3838
+ WRITE_NODE_FIELD(args);
3839
+ WRITE_NODE_FIELD(repeatable);
3840
+ WRITE_LOCATION_FIELD(location);
3841
+ }
3842
+
3843
+ static void
3844
+ _outRangeTableFunc(StringInfo str, const RangeTableFunc *node)
3845
+ {
3846
+ WRITE_NODE_TYPE("RANGETABLEFUNC");
3847
+
3848
+ WRITE_BOOL_FIELD(lateral);
3849
+ WRITE_NODE_FIELD(docexpr);
3850
+ WRITE_NODE_FIELD(rowexpr);
3851
+ WRITE_NODE_FIELD(namespaces);
3852
+ WRITE_NODE_FIELD(columns);
3853
+ WRITE_NODE_FIELD(alias);
3854
+ WRITE_LOCATION_FIELD(location);
3855
+ }
3856
+
3857
+ static void
3858
+ _outRangeTableFuncCol(StringInfo str, const RangeTableFuncCol *node)
3859
+ {
3860
+ WRITE_NODE_TYPE("RANGETABLEFUNCCOL");
3861
+
3862
+ WRITE_STRING_FIELD(colname);
3863
+ WRITE_NODE_FIELD(typeName);
3864
+ WRITE_BOOL_FIELD(for_ordinality);
3865
+ WRITE_BOOL_FIELD(is_not_null);
3866
+ WRITE_NODE_FIELD(colexpr);
3867
+ WRITE_NODE_FIELD(coldefexpr);
3868
+ WRITE_LOCATION_FIELD(location);
3869
+ }
3870
+
3871
+ static void
3872
+ _outConstraint(StringInfo str, const Constraint *node)
3873
+ {
3874
+ WRITE_NODE_TYPE("CONSTRAINT");
3875
+
3876
+ WRITE_STRING_FIELD(conname);
3877
+ WRITE_BOOL_FIELD(deferrable);
3878
+ WRITE_BOOL_FIELD(initdeferred);
3879
+ WRITE_LOCATION_FIELD(location);
3880
+
3881
+ appendStringInfoString(str, " :contype ");
3882
+ switch (node->contype)
3883
+ {
3884
+ case CONSTR_NULL:
3885
+ appendStringInfoString(str, "NULL");
3886
+ break;
3887
+
3888
+ case CONSTR_NOTNULL:
3889
+ appendStringInfoString(str, "NOT_NULL");
3890
+ break;
3891
+
3892
+ case CONSTR_DEFAULT:
3893
+ appendStringInfoString(str, "DEFAULT");
3894
+ WRITE_NODE_FIELD(raw_expr);
3895
+ WRITE_STRING_FIELD(cooked_expr);
3896
+ break;
3897
+
3898
+ case CONSTR_IDENTITY:
3899
+ appendStringInfoString(str, "IDENTITY");
3900
+ WRITE_NODE_FIELD(options);
3901
+ WRITE_CHAR_FIELD(generated_when);
3902
+ break;
3903
+
3904
+ case CONSTR_GENERATED:
3905
+ appendStringInfoString(str, "GENERATED");
3906
+ WRITE_NODE_FIELD(raw_expr);
3907
+ WRITE_STRING_FIELD(cooked_expr);
3908
+ WRITE_CHAR_FIELD(generated_when);
3909
+ break;
3910
+
3911
+ case CONSTR_CHECK:
3912
+ appendStringInfoString(str, "CHECK");
3913
+ WRITE_BOOL_FIELD(is_no_inherit);
3914
+ WRITE_NODE_FIELD(raw_expr);
3915
+ WRITE_STRING_FIELD(cooked_expr);
3916
+ WRITE_BOOL_FIELD(skip_validation);
3917
+ WRITE_BOOL_FIELD(initially_valid);
3918
+ break;
3919
+
3920
+ case CONSTR_PRIMARY:
3921
+ appendStringInfoString(str, "PRIMARY_KEY");
3922
+ WRITE_NODE_FIELD(keys);
3923
+ WRITE_NODE_FIELD(including);
3924
+ WRITE_NODE_FIELD(options);
3925
+ WRITE_STRING_FIELD(indexname);
3926
+ WRITE_STRING_FIELD(indexspace);
3927
+ WRITE_BOOL_FIELD(reset_default_tblspc);
3928
+ WRITE_NODE_FIELD(yb_index_params);
3929
+ /* access_method and where_clause not currently used */
3930
+ break;
3931
+
3932
+ case CONSTR_UNIQUE:
3933
+ appendStringInfoString(str, "UNIQUE");
3934
+ WRITE_BOOL_FIELD(nulls_not_distinct);
3935
+ WRITE_NODE_FIELD(keys);
3936
+ WRITE_NODE_FIELD(including);
3937
+ WRITE_NODE_FIELD(options);
3938
+ WRITE_STRING_FIELD(indexname);
3939
+ WRITE_STRING_FIELD(indexspace);
3940
+ WRITE_BOOL_FIELD(reset_default_tblspc);
3941
+ /* access_method and where_clause not currently used */
3942
+ break;
3943
+
3944
+ case CONSTR_EXCLUSION:
3945
+ appendStringInfoString(str, "EXCLUSION");
3946
+ WRITE_NODE_FIELD(exclusions);
3947
+ WRITE_NODE_FIELD(including);
3948
+ WRITE_NODE_FIELD(options);
3949
+ WRITE_STRING_FIELD(indexname);
3950
+ WRITE_STRING_FIELD(indexspace);
3951
+ WRITE_BOOL_FIELD(reset_default_tblspc);
3952
+ WRITE_STRING_FIELD(access_method);
3953
+ WRITE_NODE_FIELD(where_clause);
3954
+ break;
3955
+
3956
+ case CONSTR_FOREIGN:
3957
+ appendStringInfoString(str, "FOREIGN_KEY");
3958
+ WRITE_NODE_FIELD(pktable);
3959
+ WRITE_NODE_FIELD(fk_attrs);
3960
+ WRITE_NODE_FIELD(pk_attrs);
3961
+ WRITE_CHAR_FIELD(fk_matchtype);
3962
+ WRITE_CHAR_FIELD(fk_upd_action);
3963
+ WRITE_CHAR_FIELD(fk_del_action);
3964
+ WRITE_NODE_FIELD(fk_del_set_cols);
3965
+ WRITE_NODE_FIELD(old_conpfeqop);
3966
+ WRITE_OID_FIELD(old_pktable_oid);
3967
+ WRITE_BOOL_FIELD(skip_validation);
3968
+ WRITE_BOOL_FIELD(initially_valid);
3969
+ break;
3970
+
3971
+ case CONSTR_ATTR_DEFERRABLE:
3972
+ appendStringInfoString(str, "ATTR_DEFERRABLE");
3973
+ break;
3974
+
3975
+ case CONSTR_ATTR_NOT_DEFERRABLE:
3976
+ appendStringInfoString(str, "ATTR_NOT_DEFERRABLE");
3977
+ break;
3978
+
3979
+ case CONSTR_ATTR_DEFERRED:
3980
+ appendStringInfoString(str, "ATTR_DEFERRED");
3981
+ break;
3982
+
3983
+ case CONSTR_ATTR_IMMEDIATE:
3984
+ appendStringInfoString(str, "ATTR_IMMEDIATE");
3985
+ break;
3986
+
3987
+ default:
3988
+ appendStringInfo(str, "<unrecognized_constraint %d>",
3989
+ (int) node->contype);
3990
+ break;
3991
+ }
3992
+ }
3993
+
3994
+ static void
3995
+ _outForeignKeyCacheInfo(StringInfo str, const ForeignKeyCacheInfo *node)
3996
+ {
3997
+ WRITE_NODE_TYPE("FOREIGNKEYCACHEINFO");
3998
+
3999
+ WRITE_OID_FIELD(conoid);
4000
+ WRITE_OID_FIELD(conrelid);
4001
+ WRITE_OID_FIELD(confrelid);
4002
+ WRITE_INT_FIELD(nkeys);
4003
+ WRITE_ATTRNUMBER_ARRAY(conkey, node->nkeys);
4004
+ WRITE_ATTRNUMBER_ARRAY(confkey, node->nkeys);
4005
+ WRITE_OID_ARRAY(conpfeqop, node->nkeys);
4006
+ }
4007
+
4008
+ static void
4009
+ _outPartitionElem(StringInfo str, const PartitionElem *node)
4010
+ {
4011
+ WRITE_NODE_TYPE("PARTITIONELEM");
4012
+
4013
+ WRITE_STRING_FIELD(name);
4014
+ WRITE_NODE_FIELD(expr);
4015
+ WRITE_NODE_FIELD(collation);
4016
+ WRITE_NODE_FIELD(opclass);
4017
+ WRITE_LOCATION_FIELD(location);
4018
+ }
4019
+
4020
+ static void
4021
+ _outPartitionSpec(StringInfo str, const PartitionSpec *node)
4022
+ {
4023
+ WRITE_NODE_TYPE("PARTITIONSPEC");
4024
+
4025
+ WRITE_STRING_FIELD(strategy);
4026
+ WRITE_NODE_FIELD(partParams);
4027
+ WRITE_LOCATION_FIELD(location);
4028
+ }
4029
+
4030
+ static void
4031
+ _outPartitionBoundSpec(StringInfo str, const PartitionBoundSpec *node)
4032
+ {
4033
+ WRITE_NODE_TYPE("PARTITIONBOUNDSPEC");
4034
+
4035
+ WRITE_CHAR_FIELD(strategy);
4036
+ WRITE_BOOL_FIELD(is_default);
4037
+ WRITE_INT_FIELD(modulus);
4038
+ WRITE_INT_FIELD(remainder);
4039
+ WRITE_NODE_FIELD(listdatums);
4040
+ WRITE_NODE_FIELD(lowerdatums);
4041
+ WRITE_NODE_FIELD(upperdatums);
4042
+ WRITE_LOCATION_FIELD(location);
4043
+ }
4044
+
4045
+ static void
4046
+ _outPartitionRangeDatum(StringInfo str, const PartitionRangeDatum *node)
4047
+ {
4048
+ WRITE_NODE_TYPE("PARTITIONRANGEDATUM");
4049
+
4050
+ WRITE_ENUM_FIELD(kind, PartitionRangeDatumKind);
4051
+ WRITE_NODE_FIELD(value);
4052
+ WRITE_LOCATION_FIELD(location);
4053
+ }
4054
+
4055
+ static void
4056
+ _outYbExprColrefDesc(StringInfo str, const YbExprColrefDesc *node)
4057
+ {
4058
+ WRITE_NODE_TYPE("YBEXPRCOLREFDESC");
4059
+
4060
+ WRITE_INT_FIELD(attno);
4061
+ WRITE_OID_FIELD(typid);
4062
+ WRITE_INT_FIELD(typmod);
4063
+ WRITE_OID_FIELD(collid);
4064
+ }
4065
+
4066
+ static void
4067
+ _outYbSkippableEntities(StringInfo str, const YbSkippableEntities *node)
4068
+ {
4069
+ WRITE_NODE_TYPE("YBSKIPPABLEENTITIES");
4070
+
4071
+ WRITE_NODE_FIELD(index_list);
4072
+ WRITE_NODE_FIELD(referencing_fkey_list);
4073
+ WRITE_NODE_FIELD(referenced_fkey_list);
4074
+ }
4075
+
4076
+ static void
4077
+ _outYbUpdateAffectedEntities(StringInfo str, const YbUpdateAffectedEntities *node)
4078
+ {
4079
+ int nfields = node->matrix.nrows;
4080
+ int nentities = node->matrix.ncols;
4081
+
4082
+ WRITE_NODE_TYPE("YBUPDATEAFFECTEDENTITIES");
4083
+
4084
+ /* Write out the number of fields and entities to support deserialization */
4085
+ WRITE_INT_FIELD(matrix.nrows); /* Number of fields */
4086
+ WRITE_INT_FIELD(matrix.ncols); /* Number of entities */
4087
+
4088
+ for (int i = 0; i < nentities; i++)
4089
+ {
4090
+ WRITE_OID_FIELD(entity_list[i].oid);
4091
+ WRITE_ENUM_FIELD(entity_list[i].etype, YbSkippableEntityType);
4092
+ }
4093
+
4094
+ for (int i = 0; i < nfields; i++)
4095
+ {
4096
+ WRITE_INT_FIELD(col_info_list[i].attnum);
4097
+ WRITE_NODE_FIELD(col_info_list[i].entity_refs);
4098
+ }
4099
+
4100
+ WRITE_BITMAPSET_FIELD(matrix.data);
4101
+ }
4102
+
4103
+ static void
4104
+ _outYbMergeScanInfo(StringInfo str, const YbMergeScanInfo *node)
4105
+ {
4106
+ WRITE_NODE_TYPE("YBMERGESCANINFO");
4107
+
4108
+ WRITE_NODE_FIELD(saop_cols);
4109
+ WRITE_NODE_FIELD(sort_cols);
4110
+ }
4111
+
4112
+ static void
4113
+ _outYbMergeScanSaopColInfo(StringInfo str, const YbMergeScanSaopColInfo *node)
4114
+ {
4115
+ WRITE_NODE_TYPE("YBMERGESCANSAOPCOLINFO");
4116
+
4117
+ WRITE_NODE_FIELD(saop);
4118
+ WRITE_INT_FIELD(indexcol);
4119
+ WRITE_INT_FIELD(num_elems);
4120
+ }
4121
+
4122
+ static void
4123
+ _outYbSortInfo(StringInfo str, const YbSortInfo *node)
4124
+ {
4125
+ WRITE_NODE_TYPE("YBSORTINFO");
4126
+
4127
+ WRITE_INT_FIELD(numCols);
4128
+ WRITE_ATTRNUMBER_ARRAY(sortColIdx, node->numCols);
4129
+ WRITE_OID_ARRAY(sortOperators, node->numCols);
4130
+ WRITE_OID_ARRAY(collations, node->numCols);
4131
+ WRITE_BOOL_ARRAY(nullsFirst, node->numCols);
4132
+ }
4133
+
4134
+ /*
4135
+ * outNode -
4136
+ * converts a Node into ascii string and append it to 'str'
4137
+ */
4138
+ void
4139
+ outNode(StringInfo str, const void *obj)
4140
+ {
4141
+ /* Guard against stack overflow due to overly complex expressions */
4142
+ check_stack_depth();
4143
+
4144
+ if (obj == NULL)
4145
+ appendStringInfoString(str, "<>");
4146
+ else if (IsA(obj, List) || IsA(obj, IntList) || IsA(obj, OidList))
4147
+ _outList(str, obj);
4148
+ /* nodeRead does not want to see { } around these! */
4149
+ else if (IsA(obj, Integer))
4150
+ _outInteger(str, (Integer *) obj);
4151
+ else if (IsA(obj, Float))
4152
+ _outFloat(str, (Float *) obj);
4153
+ else if (IsA(obj, Boolean))
4154
+ _outBoolean(str, (Boolean *) obj);
4155
+ else if (IsA(obj, String))
4156
+ _outString(str, (String *) obj);
4157
+ else if (IsA(obj, BitString))
4158
+ _outBitString(str, (BitString *) obj);
4159
+ else
4160
+ {
4161
+ appendStringInfoChar(str, '{');
4162
+ switch (nodeTag(obj))
4163
+ {
4164
+ case T_PlannedStmt:
4165
+ _outPlannedStmt(str, obj);
4166
+ break;
4167
+ case T_Plan:
4168
+ _outPlan(str, obj);
4169
+ break;
4170
+ case T_Result:
4171
+ _outResult(str, obj);
4172
+ break;
4173
+ case T_ProjectSet:
4174
+ _outProjectSet(str, obj);
4175
+ break;
4176
+ case T_ModifyTable:
4177
+ _outModifyTable(str, obj);
4178
+ break;
4179
+ case T_Append:
4180
+ _outAppend(str, obj);
4181
+ break;
4182
+ case T_MergeAppend:
4183
+ _outMergeAppend(str, obj);
4184
+ break;
4185
+ case T_RecursiveUnion:
4186
+ _outRecursiveUnion(str, obj);
4187
+ break;
4188
+ case T_BitmapAnd:
4189
+ _outBitmapAnd(str, obj);
4190
+ break;
4191
+ case T_BitmapOr:
4192
+ _outBitmapOr(str, obj);
4193
+ break;
4194
+ case T_Gather:
4195
+ _outGather(str, obj);
4196
+ break;
4197
+ case T_GatherMerge:
4198
+ _outGatherMerge(str, obj);
4199
+ break;
4200
+ case T_Scan:
4201
+ _outScan(str, obj);
4202
+ break;
4203
+ case T_SeqScan:
4204
+ _outSeqScan(str, obj);
4205
+ break;
4206
+ case T_YbSeqScan:
4207
+ _outYbSeqScan(str, obj);
4208
+ break;
4209
+ case T_SampleScan:
4210
+ _outSampleScan(str, obj);
4211
+ break;
4212
+ case T_IndexScan:
4213
+ _outIndexScan(str, obj);
4214
+ break;
4215
+ case T_IndexOnlyScan:
4216
+ _outIndexOnlyScan(str, obj);
4217
+ break;
4218
+ case T_BitmapIndexScan:
4219
+ _outBitmapIndexScan(str, obj);
4220
+ break;
4221
+ case T_YbBitmapIndexScan:
4222
+ _outYbBitmapIndexScan(str, obj);
4223
+ break;
4224
+ case T_BitmapHeapScan:
4225
+ _outBitmapHeapScan(str, obj);
4226
+ break;
4227
+ case T_YbBitmapTableScan:
4228
+ _outYbBitmapTableScan(str, obj);
4229
+ break;
4230
+ case T_TidScan:
4231
+ _outTidScan(str, obj);
4232
+ break;
4233
+ case T_TidRangeScan:
4234
+ _outTidRangeScan(str, obj);
4235
+ break;
4236
+ case T_SubqueryScan:
4237
+ _outSubqueryScan(str, obj);
4238
+ break;
4239
+ case T_FunctionScan:
4240
+ _outFunctionScan(str, obj);
4241
+ break;
4242
+ case T_TableFuncScan:
4243
+ _outTableFuncScan(str, obj);
4244
+ break;
4245
+ case T_ValuesScan:
4246
+ _outValuesScan(str, obj);
4247
+ break;
4248
+ case T_CteScan:
4249
+ _outCteScan(str, obj);
4250
+ break;
4251
+ case T_NamedTuplestoreScan:
4252
+ _outNamedTuplestoreScan(str, obj);
4253
+ break;
4254
+ case T_WorkTableScan:
4255
+ _outWorkTableScan(str, obj);
4256
+ break;
4257
+ case T_ForeignScan:
4258
+ _outForeignScan(str, obj);
4259
+ break;
4260
+ case T_CustomScan:
4261
+ _outCustomScan(str, obj);
4262
+ break;
4263
+ case T_Join:
4264
+ _outJoin(str, obj);
4265
+ break;
4266
+ case T_NestLoop:
4267
+ _outNestLoop(str, obj);
4268
+ break;
4269
+ case T_YbBatchedNestLoop:
4270
+ _outYbBatchedNestLoop(str, obj);
4271
+ break;
4272
+ case T_MergeJoin:
4273
+ _outMergeJoin(str, obj);
4274
+ break;
4275
+ case T_HashJoin:
4276
+ _outHashJoin(str, obj);
4277
+ break;
4278
+ case T_Agg:
4279
+ _outAgg(str, obj);
4280
+ break;
4281
+ case T_WindowAgg:
4282
+ _outWindowAgg(str, obj);
4283
+ break;
4284
+ case T_Group:
4285
+ _outGroup(str, obj);
4286
+ break;
4287
+ case T_Material:
4288
+ _outMaterial(str, obj);
4289
+ break;
4290
+ case T_Memoize:
4291
+ _outMemoize(str, obj);
4292
+ break;
4293
+ case T_Sort:
4294
+ _outSort(str, obj);
4295
+ break;
4296
+ case T_IncrementalSort:
4297
+ _outIncrementalSort(str, obj);
4298
+ break;
4299
+ case T_Unique:
4300
+ _outUnique(str, obj);
4301
+ break;
4302
+ case T_Hash:
4303
+ _outHash(str, obj);
4304
+ break;
4305
+ case T_SetOp:
4306
+ _outSetOp(str, obj);
4307
+ break;
4308
+ case T_LockRows:
4309
+ _outLockRows(str, obj);
4310
+ break;
4311
+ case T_Limit:
4312
+ _outLimit(str, obj);
4313
+ break;
4314
+ case T_NestLoopParam:
4315
+ _outNestLoopParam(str, obj);
4316
+ break;
4317
+ case T_PlanRowMark:
4318
+ _outPlanRowMark(str, obj);
4319
+ break;
4320
+ case T_PartitionPruneInfo:
4321
+ _outPartitionPruneInfo(str, obj);
4322
+ break;
4323
+ case T_PartitionedRelPruneInfo:
4324
+ _outPartitionedRelPruneInfo(str, obj);
4325
+ break;
4326
+ case T_PartitionPruneStepOp:
4327
+ _outPartitionPruneStepOp(str, obj);
4328
+ break;
4329
+ case T_PartitionPruneStepCombine:
4330
+ _outPartitionPruneStepCombine(str, obj);
4331
+ break;
4332
+ case T_PlanInvalItem:
4333
+ _outPlanInvalItem(str, obj);
4334
+ break;
4335
+ case T_Alias:
4336
+ _outAlias(str, obj);
4337
+ break;
4338
+ case T_RangeVar:
4339
+ _outRangeVar(str, obj);
4340
+ break;
4341
+ case T_TableFunc:
4342
+ _outTableFunc(str, obj);
4343
+ break;
4344
+ case T_IntoClause:
4345
+ _outIntoClause(str, obj);
4346
+ break;
4347
+ case T_Var:
4348
+ _outVar(str, obj);
4349
+ break;
4350
+ case T_YbBatchedExpr:
4351
+ _outYbBatchedExpr(str, obj);
4352
+ break;
4353
+ case T_Const:
4354
+ _outConst(str, obj);
4355
+ break;
4356
+ case T_Param:
4357
+ _outParam(str, obj);
4358
+ break;
4359
+ case T_Aggref:
4360
+ _outAggref(str, obj);
4361
+ break;
4362
+ case T_GroupingFunc:
4363
+ _outGroupingFunc(str, obj);
4364
+ break;
4365
+ case T_WindowFunc:
4366
+ _outWindowFunc(str, obj);
4367
+ break;
4368
+ case T_SubscriptingRef:
4369
+ _outSubscriptingRef(str, obj);
4370
+ break;
4371
+ case T_FuncExpr:
4372
+ _outFuncExpr(str, obj);
4373
+ break;
4374
+ case T_NamedArgExpr:
4375
+ _outNamedArgExpr(str, obj);
4376
+ break;
4377
+ case T_OpExpr:
4378
+ _outOpExpr(str, obj);
4379
+ break;
4380
+ case T_DistinctExpr:
4381
+ _outDistinctExpr(str, obj);
4382
+ break;
4383
+ case T_NullIfExpr:
4384
+ _outNullIfExpr(str, obj);
4385
+ break;
4386
+ case T_ScalarArrayOpExpr:
4387
+ _outScalarArrayOpExpr(str, obj);
4388
+ break;
4389
+ case T_BoolExpr:
4390
+ _outBoolExpr(str, obj);
4391
+ break;
4392
+ case T_SubLink:
4393
+ _outSubLink(str, obj);
4394
+ break;
4395
+ case T_SubPlan:
4396
+ _outSubPlan(str, obj);
4397
+ break;
4398
+ case T_AlternativeSubPlan:
4399
+ _outAlternativeSubPlan(str, obj);
4400
+ break;
4401
+ case T_FieldSelect:
4402
+ _outFieldSelect(str, obj);
4403
+ break;
4404
+ case T_FieldStore:
4405
+ _outFieldStore(str, obj);
4406
+ break;
4407
+ case T_RelabelType:
4408
+ _outRelabelType(str, obj);
4409
+ break;
4410
+ case T_CoerceViaIO:
4411
+ _outCoerceViaIO(str, obj);
4412
+ break;
4413
+ case T_ArrayCoerceExpr:
4414
+ _outArrayCoerceExpr(str, obj);
4415
+ break;
4416
+ case T_ConvertRowtypeExpr:
4417
+ _outConvertRowtypeExpr(str, obj);
4418
+ break;
4419
+ case T_CollateExpr:
4420
+ _outCollateExpr(str, obj);
4421
+ break;
4422
+ case T_CaseExpr:
4423
+ _outCaseExpr(str, obj);
4424
+ break;
4425
+ case T_CaseWhen:
4426
+ _outCaseWhen(str, obj);
4427
+ break;
4428
+ case T_CaseTestExpr:
4429
+ _outCaseTestExpr(str, obj);
4430
+ break;
4431
+ case T_ArrayExpr:
4432
+ _outArrayExpr(str, obj);
4433
+ break;
4434
+ case T_RowExpr:
4435
+ _outRowExpr(str, obj);
4436
+ break;
4437
+ case T_RowCompareExpr:
4438
+ _outRowCompareExpr(str, obj);
4439
+ break;
4440
+ case T_CoalesceExpr:
4441
+ _outCoalesceExpr(str, obj);
4442
+ break;
4443
+ case T_MinMaxExpr:
4444
+ _outMinMaxExpr(str, obj);
4445
+ break;
4446
+ case T_SQLValueFunction:
4447
+ _outSQLValueFunction(str, obj);
4448
+ break;
4449
+ case T_XmlExpr:
4450
+ _outXmlExpr(str, obj);
4451
+ break;
4452
+ case T_NullTest:
4453
+ _outNullTest(str, obj);
4454
+ break;
4455
+ case T_BooleanTest:
4456
+ _outBooleanTest(str, obj);
4457
+ break;
4458
+ case T_CoerceToDomain:
4459
+ _outCoerceToDomain(str, obj);
4460
+ break;
4461
+ case T_CoerceToDomainValue:
4462
+ _outCoerceToDomainValue(str, obj);
4463
+ break;
4464
+ case T_SetToDefault:
4465
+ _outSetToDefault(str, obj);
4466
+ break;
4467
+ case T_CurrentOfExpr:
4468
+ _outCurrentOfExpr(str, obj);
4469
+ break;
4470
+ case T_NextValueExpr:
4471
+ _outNextValueExpr(str, obj);
4472
+ break;
4473
+ case T_InferenceElem:
4474
+ _outInferenceElem(str, obj);
4475
+ break;
4476
+ case T_TargetEntry:
4477
+ _outTargetEntry(str, obj);
4478
+ break;
4479
+ case T_RangeTblRef:
4480
+ _outRangeTblRef(str, obj);
4481
+ break;
4482
+ case T_JoinExpr:
4483
+ _outJoinExpr(str, obj);
4484
+ break;
4485
+ case T_FromExpr:
4486
+ _outFromExpr(str, obj);
4487
+ break;
4488
+ case T_OnConflictExpr:
4489
+ _outOnConflictExpr(str, obj);
4490
+ break;
4491
+ case T_Path:
4492
+ _outPath(str, obj);
4493
+ break;
4494
+ case T_IndexPath:
4495
+ _outIndexPath(str, obj);
4496
+ break;
4497
+ case T_BitmapHeapPath:
4498
+ _outBitmapHeapPath(str, obj);
4499
+ break;
4500
+ case T_YbBitmapTablePath:
4501
+ _outYbBitmapTablePath(str, obj);
4502
+ break;
4503
+ case T_BitmapAndPath:
4504
+ _outBitmapAndPath(str, obj);
4505
+ break;
4506
+ case T_BitmapOrPath:
4507
+ _outBitmapOrPath(str, obj);
4508
+ break;
4509
+ case T_TidPath:
4510
+ _outTidPath(str, obj);
4511
+ break;
4512
+ case T_TidRangePath:
4513
+ _outTidRangePath(str, obj);
4514
+ break;
4515
+ case T_SubqueryScanPath:
4516
+ _outSubqueryScanPath(str, obj);
4517
+ break;
4518
+ case T_ForeignPath:
4519
+ _outForeignPath(str, obj);
4520
+ break;
4521
+ case T_CustomPath:
4522
+ _outCustomPath(str, obj);
4523
+ break;
4524
+ case T_AppendPath:
4525
+ _outAppendPath(str, obj);
4526
+ break;
4527
+ case T_MergeAppendPath:
4528
+ _outMergeAppendPath(str, obj);
4529
+ break;
4530
+ case T_GroupResultPath:
4531
+ _outGroupResultPath(str, obj);
4532
+ break;
4533
+ case T_MaterialPath:
4534
+ _outMaterialPath(str, obj);
4535
+ break;
4536
+ case T_MemoizePath:
4537
+ _outMemoizePath(str, obj);
4538
+ break;
4539
+ case T_UniquePath:
4540
+ _outUniquePath(str, obj);
4541
+ break;
4542
+ case T_GatherPath:
4543
+ _outGatherPath(str, obj);
4544
+ break;
4545
+ case T_ProjectionPath:
4546
+ _outProjectionPath(str, obj);
4547
+ break;
4548
+ case T_ProjectSetPath:
4549
+ _outProjectSetPath(str, obj);
4550
+ break;
4551
+ case T_SortPath:
4552
+ _outSortPath(str, obj);
4553
+ break;
4554
+ case T_IncrementalSortPath:
4555
+ _outIncrementalSortPath(str, obj);
4556
+ break;
4557
+ case T_GroupPath:
4558
+ _outGroupPath(str, obj);
4559
+ break;
4560
+ case T_UpperUniquePath:
4561
+ _outUpperUniquePath(str, obj);
4562
+ break;
4563
+ case T_AggPath:
4564
+ _outAggPath(str, obj);
4565
+ break;
4566
+ case T_GroupingSetsPath:
4567
+ _outGroupingSetsPath(str, obj);
4568
+ break;
4569
+ case T_MinMaxAggPath:
4570
+ _outMinMaxAggPath(str, obj);
4571
+ break;
4572
+ case T_WindowAggPath:
4573
+ _outWindowAggPath(str, obj);
4574
+ break;
4575
+ case T_SetOpPath:
4576
+ _outSetOpPath(str, obj);
4577
+ break;
4578
+ case T_RecursiveUnionPath:
4579
+ _outRecursiveUnionPath(str, obj);
4580
+ break;
4581
+ case T_LockRowsPath:
4582
+ _outLockRowsPath(str, obj);
4583
+ break;
4584
+ case T_ModifyTablePath:
4585
+ _outModifyTablePath(str, obj);
4586
+ break;
4587
+ case T_LimitPath:
4588
+ _outLimitPath(str, obj);
4589
+ break;
4590
+ case T_GatherMergePath:
4591
+ _outGatherMergePath(str, obj);
4592
+ break;
4593
+ case T_NestPath:
4594
+ _outNestPath(str, obj);
4595
+ break;
4596
+ case T_MergePath:
4597
+ _outMergePath(str, obj);
4598
+ break;
4599
+ case T_HashPath:
4600
+ _outHashPath(str, obj);
4601
+ break;
4602
+ case T_PlannerGlobal:
4603
+ _outPlannerGlobal(str, obj);
4604
+ break;
4605
+ case T_PlannerInfo:
4606
+ _outPlannerInfo(str, obj);
4607
+ break;
4608
+ case T_RelOptInfo:
4609
+ _outRelOptInfo(str, obj);
4610
+ break;
4611
+ case T_IndexOptInfo:
4612
+ _outIndexOptInfo(str, obj);
4613
+ break;
4614
+ case T_ForeignKeyOptInfo:
4615
+ _outForeignKeyOptInfo(str, obj);
4616
+ break;
4617
+ case T_EquivalenceClass:
4618
+ _outEquivalenceClass(str, obj);
4619
+ break;
4620
+ case T_EquivalenceMember:
4621
+ _outEquivalenceMember(str, obj);
4622
+ break;
4623
+ case T_PathKey:
4624
+ _outPathKey(str, obj);
4625
+ break;
4626
+ case T_PathTarget:
4627
+ _outPathTarget(str, obj);
4628
+ break;
4629
+ case T_ParamPathInfo:
4630
+ _outParamPathInfo(str, obj);
4631
+ break;
4632
+ case T_RestrictInfo:
4633
+ _outRestrictInfo(str, obj);
4634
+ break;
4635
+ case T_IndexClause:
4636
+ _outIndexClause(str, obj);
4637
+ break;
4638
+ case T_PlaceHolderVar:
4639
+ _outPlaceHolderVar(str, obj);
4640
+ break;
4641
+ case T_SpecialJoinInfo:
4642
+ _outSpecialJoinInfo(str, obj);
4643
+ break;
4644
+ case T_AppendRelInfo:
4645
+ _outAppendRelInfo(str, obj);
4646
+ break;
4647
+ case T_RowIdentityVarInfo:
4648
+ _outRowIdentityVarInfo(str, obj);
4649
+ break;
4650
+ case T_PlaceHolderInfo:
4651
+ _outPlaceHolderInfo(str, obj);
4652
+ break;
4653
+ case T_MinMaxAggInfo:
4654
+ _outMinMaxAggInfo(str, obj);
4655
+ break;
4656
+ case T_PlannerParamItem:
4657
+ _outPlannerParamItem(str, obj);
4658
+ break;
4659
+ case T_RollupData:
4660
+ _outRollupData(str, obj);
4661
+ break;
4662
+ case T_GroupingSetData:
4663
+ _outGroupingSetData(str, obj);
4664
+ break;
4665
+ case T_StatisticExtInfo:
4666
+ _outStatisticExtInfo(str, obj);
4667
+ break;
4668
+ case T_ExtensibleNode:
4669
+ _outExtensibleNode(str, obj);
4670
+ break;
4671
+ case T_CreateStmt:
4672
+ _outCreateStmt(str, obj);
4673
+ break;
4674
+ case T_CreateForeignTableStmt:
4675
+ _outCreateForeignTableStmt(str, obj);
4676
+ break;
4677
+ case T_ImportForeignSchemaStmt:
4678
+ _outImportForeignSchemaStmt(str, obj);
4679
+ break;
4680
+ case T_IndexStmt:
4681
+ _outIndexStmt(str, obj);
4682
+ break;
4683
+ case T_CreateStatsStmt:
4684
+ _outCreateStatsStmt(str, obj);
4685
+ break;
4686
+ case T_AlterStatsStmt:
4687
+ _outAlterStatsStmt(str, obj);
4688
+ break;
4689
+ case T_NotifyStmt:
4690
+ _outNotifyStmt(str, obj);
4691
+ break;
4692
+ case T_DeclareCursorStmt:
4693
+ _outDeclareCursorStmt(str, obj);
4694
+ break;
4695
+ case T_SelectStmt:
4696
+ _outSelectStmt(str, obj);
4697
+ break;
4698
+ case T_ReturnStmt:
4699
+ _outReturnStmt(str, obj);
4700
+ break;
4701
+ case T_PLAssignStmt:
4702
+ _outPLAssignStmt(str, obj);
4703
+ break;
4704
+ case T_ColumnDef:
4705
+ _outColumnDef(str, obj);
4706
+ break;
4707
+ case T_TypeName:
4708
+ _outTypeName(str, obj);
4709
+ break;
4710
+ case T_TypeCast:
4711
+ _outTypeCast(str, obj);
4712
+ break;
4713
+ case T_CollateClause:
4714
+ _outCollateClause(str, obj);
4715
+ break;
4716
+ case T_IndexElem:
4717
+ _outIndexElem(str, obj);
4718
+ break;
4719
+ case T_StatsElem:
4720
+ _outStatsElem(str, obj);
4721
+ break;
4722
+ case T_Query:
4723
+ _outQuery(str, obj);
4724
+ break;
4725
+ case T_WithCheckOption:
4726
+ _outWithCheckOption(str, obj);
4727
+ break;
4728
+ case T_SortGroupClause:
4729
+ _outSortGroupClause(str, obj);
4730
+ break;
4731
+ case T_GroupingSet:
4732
+ _outGroupingSet(str, obj);
4733
+ break;
4734
+ case T_WindowClause:
4735
+ _outWindowClause(str, obj);
4736
+ break;
4737
+ case T_RowMarkClause:
4738
+ _outRowMarkClause(str, obj);
4739
+ break;
4740
+ case T_WithClause:
4741
+ _outWithClause(str, obj);
4742
+ break;
4743
+ case T_CTESearchClause:
4744
+ _outCTESearchClause(str, obj);
4745
+ break;
4746
+ case T_CTECycleClause:
4747
+ _outCTECycleClause(str, obj);
4748
+ break;
4749
+ case T_CommonTableExpr:
4750
+ _outCommonTableExpr(str, obj);
4751
+ break;
4752
+ case T_MergeWhenClause:
4753
+ _outMergeWhenClause(str, obj);
4754
+ break;
4755
+ case T_MergeAction:
4756
+ _outMergeAction(str, obj);
4757
+ break;
4758
+ case T_SetOperationStmt:
4759
+ _outSetOperationStmt(str, obj);
4760
+ break;
4761
+ case T_RangeTblEntry:
4762
+ _outRangeTblEntry(str, obj);
4763
+ break;
4764
+ case T_RangeTblFunction:
4765
+ _outRangeTblFunction(str, obj);
4766
+ break;
4767
+ case T_TableSampleClause:
4768
+ _outTableSampleClause(str, obj);
4769
+ break;
4770
+ case T_A_Expr:
4771
+ _outA_Expr(str, obj);
4772
+ break;
4773
+ case T_ColumnRef:
4774
+ _outColumnRef(str, obj);
4775
+ break;
4776
+ case T_ParamRef:
4777
+ _outParamRef(str, obj);
4778
+ break;
4779
+ case T_RawStmt:
4780
+ _outRawStmt(str, obj);
4781
+ break;
4782
+ case T_A_Const:
4783
+ _outA_Const(str, obj);
4784
+ break;
4785
+ case T_A_Star:
4786
+ _outA_Star(str, obj);
4787
+ break;
4788
+ case T_A_Indices:
4789
+ _outA_Indices(str, obj);
4790
+ break;
4791
+ case T_A_Indirection:
4792
+ _outA_Indirection(str, obj);
4793
+ break;
4794
+ case T_A_ArrayExpr:
4795
+ _outA_ArrayExpr(str, obj);
4796
+ break;
4797
+ case T_ResTarget:
4798
+ _outResTarget(str, obj);
4799
+ break;
4800
+ case T_MultiAssignRef:
4801
+ _outMultiAssignRef(str, obj);
4802
+ break;
4803
+ case T_SortBy:
4804
+ _outSortBy(str, obj);
4805
+ break;
4806
+ case T_WindowDef:
4807
+ _outWindowDef(str, obj);
4808
+ break;
4809
+ case T_RangeSubselect:
4810
+ _outRangeSubselect(str, obj);
4811
+ break;
4812
+ case T_RangeFunction:
4813
+ _outRangeFunction(str, obj);
4814
+ break;
4815
+ case T_RangeTableSample:
4816
+ _outRangeTableSample(str, obj);
4817
+ break;
4818
+ case T_RangeTableFunc:
4819
+ _outRangeTableFunc(str, obj);
4820
+ break;
4821
+ case T_RangeTableFuncCol:
4822
+ _outRangeTableFuncCol(str, obj);
4823
+ break;
4824
+ case T_Constraint:
4825
+ _outConstraint(str, obj);
4826
+ break;
4827
+ case T_FuncCall:
4828
+ _outFuncCall(str, obj);
4829
+ break;
4830
+ case T_DefElem:
4831
+ _outDefElem(str, obj);
4832
+ break;
4833
+ case T_TableLikeClause:
4834
+ _outTableLikeClause(str, obj);
4835
+ break;
4836
+ case T_LockingClause:
4837
+ _outLockingClause(str, obj);
4838
+ break;
4839
+ case T_XmlSerialize:
4840
+ _outXmlSerialize(str, obj);
4841
+ break;
4842
+ case T_ForeignKeyCacheInfo:
4843
+ _outForeignKeyCacheInfo(str, obj);
4844
+ break;
4845
+ case T_TriggerTransition:
4846
+ _outTriggerTransition(str, obj);
4847
+ break;
4848
+ case T_PartitionElem:
4849
+ _outPartitionElem(str, obj);
4850
+ break;
4851
+ case T_PartitionSpec:
4852
+ _outPartitionSpec(str, obj);
4853
+ break;
4854
+ case T_PartitionBoundSpec:
4855
+ _outPartitionBoundSpec(str, obj);
4856
+ break;
4857
+ case T_PartitionRangeDatum:
4858
+ _outPartitionRangeDatum(str, obj);
4859
+ break;
4860
+ case T_YbPartitionPruneStepFuncOp:
4861
+ _outYbPartitionPruneStepFuncOp(str, obj);
4862
+ break;
4863
+ case T_YbExprColrefDesc:
4864
+ _outYbExprColrefDesc(str, obj);
4865
+ break;
4866
+ case T_YbSkippableEntities:
4867
+ _outYbSkippableEntities(str, obj);
4868
+ break;
4869
+ case T_YbUpdateAffectedEntities:
4870
+ _outYbUpdateAffectedEntities(str, obj);
4871
+ break;
4872
+ case T_YbMergeScanInfo:
4873
+ _outYbMergeScanInfo(str, obj);
4874
+ break;
4875
+ case T_YbMergeScanSaopColInfo:
4876
+ _outYbMergeScanSaopColInfo(str, obj);
4877
+ break;
4878
+ case T_YbSortInfo:
4879
+ _outYbSortInfo(str, obj);
4880
+ break;
4881
+
4882
+ default:
4883
+
4884
+ /*
4885
+ * This should be an ERROR, but it's too useful to be able to
4886
+ * dump structures that outNode only understands part of.
4887
+ */
4888
+ elog(WARNING, "could not dump unrecognized node type: %d",
4889
+ (int) nodeTag(obj));
4890
+ break;
4891
+ }
4892
+ appendStringInfoChar(str, '}');
4893
+ }
4894
+ }
4895
+
4896
+ /*
4897
+ * nodeToString -
4898
+ * returns the ascii representation of the Node as a palloc'd string
4899
+ */
4900
+ char *
4901
+ nodeToString(const void *obj)
4902
+ {
4903
+ StringInfoData str;
4904
+
4905
+ /* see stringinfo.h for an explanation of this maneuver */
4906
+ initStringInfo(&str);
4907
+ outNode(&str, obj);
4908
+ return str.data;
4909
+ }
4910
+
4911
+ /*
4912
+ * bmsToString -
4913
+ * returns the ascii representation of the Bitmapset as a palloc'd string
4914
+ */
4915
+ char *
4916
+ bmsToString(const Bitmapset *bms)
4917
+ {
4918
+ StringInfoData str;
4919
+
4920
+ /* see stringinfo.h for an explanation of this maneuver */
4921
+ initStringInfo(&str);
4922
+ outBitmapset(&str, bms);
4923
+ return str.data;
4924
+ }
4925
+
4926
+ /*
4927
+ * ybSerializeNode -
4928
+ * calls nodeToString with yb_serialize_expression_version set appropriately
4929
+ */
4930
+ char *
4931
+ ybSerializeNode(const void *obj)
4932
+ {
4933
+ char *result;
4934
+
4935
+ yb_serialize_expression_version = yb_major_version_upgrade_compatibility;
4936
+
4937
+ PG_TRY();
4938
+ {
4939
+ result = nodeToString(obj);
4940
+ }
4941
+ PG_FINALLY();
4942
+ {
4943
+ yb_serialize_expression_version = 0;
4944
+ }
4945
+ PG_END_TRY();
4946
+
4947
+ return result;
4948
+ }