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,1676 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * list.c
4
+ * implementation for PostgreSQL generic list package
5
+ *
6
+ * See comments in pg_list.h.
7
+ *
8
+ *
9
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
10
+ * Portions Copyright (c) 1994, Regents of the University of California
11
+ *
12
+ *
13
+ * IDENTIFICATION
14
+ * src/backend/nodes/list.c
15
+ *
16
+ *-------------------------------------------------------------------------
17
+ */
18
+ #include "postgres.h"
19
+
20
+ #include "nodes/pg_list.h"
21
+ #include "port/pg_bitutils.h"
22
+ #include "utils/memdebug.h"
23
+ #include "utils/memutils.h"
24
+
25
+
26
+ /*
27
+ * The previous List implementation, since it used a separate palloc chunk
28
+ * for each cons cell, had the property that adding or deleting list cells
29
+ * did not move the storage of other existing cells in the list. Quite a
30
+ * bit of existing code depended on that, by retaining ListCell pointers
31
+ * across such operations on a list. There is no such guarantee in this
32
+ * implementation, so instead we have debugging support that is meant to
33
+ * help flush out now-broken assumptions. Defining DEBUG_LIST_MEMORY_USAGE
34
+ * while building this file causes the List operations to forcibly move
35
+ * all cells in a list whenever a cell is added or deleted. In combination
36
+ * with MEMORY_CONTEXT_CHECKING and/or Valgrind, this can usually expose
37
+ * broken code. It's a bit expensive though, as there's many more palloc
38
+ * cycles and a lot more data-copying than in a default build.
39
+ *
40
+ * By default, we enable this when building for Valgrind.
41
+ */
42
+ #ifdef USE_VALGRIND
43
+ #define DEBUG_LIST_MEMORY_USAGE
44
+ #endif
45
+
46
+ /* Overhead for the fixed part of a List header, measured in ListCells */
47
+ #define LIST_HEADER_OVERHEAD \
48
+ ((int) ((offsetof(List, initial_elements) - 1) / sizeof(ListCell) + 1))
49
+
50
+ /*
51
+ * Macros to simplify writing assertions about the type of a list; a
52
+ * NIL list is considered to be an empty list of any type.
53
+ */
54
+ #define IsPointerList(l) ((l) == NIL || IsA((l), List))
55
+ #define IsIntegerList(l) ((l) == NIL || IsA((l), IntList))
56
+ #define IsOidList(l) ((l) == NIL || IsA((l), OidList))
57
+
58
+ #ifdef USE_ASSERT_CHECKING
59
+ /*
60
+ * Check that the specified List is valid (so far as we can tell).
61
+ */
62
+ static void
63
+ check_list_invariants(const List *list)
64
+ {
65
+ if (list == NIL)
66
+ return;
67
+
68
+ Assert(list->length > 0);
69
+ Assert(list->length <= list->max_length);
70
+ Assert(list->elements != NULL);
71
+
72
+ Assert(list->type == T_List ||
73
+ list->type == T_IntList ||
74
+ list->type == T_OidList);
75
+ }
76
+ #else
77
+ #define check_list_invariants(l) ((void) 0)
78
+ #endif /* USE_ASSERT_CHECKING */
79
+
80
+ /*
81
+ * Return a freshly allocated List with room for at least min_size cells.
82
+ *
83
+ * Since empty non-NIL lists are invalid, new_list() sets the initial length
84
+ * to min_size, effectively marking that number of cells as valid; the caller
85
+ * is responsible for filling in their data.
86
+ */
87
+ static List *
88
+ new_list(NodeTag type, int min_size)
89
+ {
90
+ List *newlist;
91
+ int max_size;
92
+
93
+ Assert(min_size > 0);
94
+
95
+ /*
96
+ * We allocate all the requested cells, and possibly some more, as part of
97
+ * the same palloc request as the List header. This is a big win for the
98
+ * typical case of short fixed-length lists. It can lose if we allocate a
99
+ * moderately long list and then it gets extended; we'll be wasting more
100
+ * initial_elements[] space than if we'd made the header small. However,
101
+ * rounding up the request as we do in the normal code path provides some
102
+ * defense against small extensions.
103
+ */
104
+
105
+ #ifndef DEBUG_LIST_MEMORY_USAGE
106
+
107
+ /*
108
+ * Normally, we set up a list with some extra cells, to allow it to grow
109
+ * without a repalloc. Prefer cell counts chosen to make the total
110
+ * allocation a power-of-2, since palloc would round it up to that anyway.
111
+ * (That stops being true for very large allocations, but very long lists
112
+ * are infrequent, so it doesn't seem worth special logic for such cases.)
113
+ *
114
+ * The minimum allocation is 8 ListCell units, providing either 4 or 5
115
+ * available ListCells depending on the machine's word width. Counting
116
+ * palloc's overhead, this uses the same amount of space as a one-cell
117
+ * list did in the old implementation, and less space for any longer list.
118
+ *
119
+ * We needn't worry about integer overflow; no caller passes min_size
120
+ * that's more than twice the size of an existing list, so the size limits
121
+ * within palloc will ensure that we don't overflow here.
122
+ */
123
+ max_size = pg_nextpower2_32(Max(8, min_size + LIST_HEADER_OVERHEAD));
124
+ max_size -= LIST_HEADER_OVERHEAD;
125
+ #else
126
+
127
+ /*
128
+ * For debugging, don't allow any extra space. This forces any cell
129
+ * addition to go through enlarge_list() and thus move the existing data.
130
+ */
131
+ max_size = min_size;
132
+ #endif
133
+
134
+ newlist = (List *) palloc(offsetof(List, initial_elements) +
135
+ max_size * sizeof(ListCell));
136
+ newlist->type = type;
137
+ newlist->length = min_size;
138
+ newlist->max_length = max_size;
139
+ newlist->elements = newlist->initial_elements;
140
+
141
+ return newlist;
142
+ }
143
+
144
+ /*
145
+ * Enlarge an existing non-NIL List to have room for at least min_size cells.
146
+ *
147
+ * This does *not* update list->length, as some callers would find that
148
+ * inconvenient. (list->length had better be the correct number of existing
149
+ * valid cells, though.)
150
+ */
151
+ static void
152
+ enlarge_list(List *list, int min_size)
153
+ {
154
+ int new_max_len;
155
+
156
+ Assert(min_size > list->max_length); /* else we shouldn't be here */
157
+
158
+ #ifndef DEBUG_LIST_MEMORY_USAGE
159
+
160
+ /*
161
+ * As above, we prefer power-of-two total allocations; but here we need
162
+ * not account for list header overhead.
163
+ */
164
+
165
+ /* clamp the minimum value to 16, a semi-arbitrary small power of 2 */
166
+ new_max_len = pg_nextpower2_32(Max(16, min_size));
167
+
168
+ #else
169
+ /* As above, don't allocate anything extra */
170
+ new_max_len = min_size;
171
+ #endif
172
+
173
+ if (list->elements == list->initial_elements)
174
+ {
175
+ /*
176
+ * Replace original in-line allocation with a separate palloc block.
177
+ * Ensure it is in the same memory context as the List header. (The
178
+ * previous List implementation did not offer any guarantees about
179
+ * keeping all list cells in the same context, but it seems reasonable
180
+ * to create such a guarantee now.)
181
+ */
182
+ list->elements = (ListCell *)
183
+ MemoryContextAlloc(GetMemoryChunkContext(list),
184
+ new_max_len * sizeof(ListCell));
185
+ memcpy(list->elements, list->initial_elements,
186
+ list->length * sizeof(ListCell));
187
+
188
+ /*
189
+ * We must not move the list header, so it's unsafe to try to reclaim
190
+ * the initial_elements[] space via repalloc. In debugging builds,
191
+ * however, we can clear that space and/or mark it inaccessible.
192
+ * (wipe_mem includes VALGRIND_MAKE_MEM_NOACCESS.)
193
+ */
194
+ #ifdef CLOBBER_FREED_MEMORY
195
+ wipe_mem(list->initial_elements,
196
+ list->max_length * sizeof(ListCell));
197
+ #else
198
+ VALGRIND_MAKE_MEM_NOACCESS(list->initial_elements,
199
+ list->max_length * sizeof(ListCell));
200
+ #endif
201
+ }
202
+ else
203
+ {
204
+ #ifndef DEBUG_LIST_MEMORY_USAGE
205
+ /* Normally, let repalloc deal with enlargement */
206
+ list->elements = (ListCell *) repalloc(list->elements,
207
+ new_max_len * sizeof(ListCell));
208
+ #else
209
+ /*
210
+ * repalloc() might enlarge the space in-place, which we don't want
211
+ * for debugging purposes, so forcibly move the data somewhere else.
212
+ */
213
+ ListCell *newelements;
214
+
215
+ newelements = (ListCell *)
216
+ MemoryContextAlloc(GetMemoryChunkContext(list),
217
+ new_max_len * sizeof(ListCell));
218
+ memcpy(newelements, list->elements,
219
+ list->length * sizeof(ListCell));
220
+ pfree(list->elements);
221
+ list->elements = newelements;
222
+ #endif
223
+ }
224
+
225
+ list->max_length = new_max_len;
226
+ }
227
+
228
+ /*
229
+ * Convenience functions to construct short Lists from given values.
230
+ * (These are normally invoked via the list_makeN macros.)
231
+ */
232
+ List *
233
+ list_make1_impl(NodeTag t, ListCell datum1)
234
+ {
235
+ List *list = new_list(t, 1);
236
+
237
+ list->elements[0] = datum1;
238
+ check_list_invariants(list);
239
+ return list;
240
+ }
241
+
242
+ List *
243
+ list_make2_impl(NodeTag t, ListCell datum1, ListCell datum2)
244
+ {
245
+ List *list = new_list(t, 2);
246
+
247
+ list->elements[0] = datum1;
248
+ list->elements[1] = datum2;
249
+ check_list_invariants(list);
250
+ return list;
251
+ }
252
+
253
+ List *
254
+ list_make3_impl(NodeTag t, ListCell datum1, ListCell datum2,
255
+ ListCell datum3)
256
+ {
257
+ List *list = new_list(t, 3);
258
+
259
+ list->elements[0] = datum1;
260
+ list->elements[1] = datum2;
261
+ list->elements[2] = datum3;
262
+ check_list_invariants(list);
263
+ return list;
264
+ }
265
+
266
+ List *
267
+ list_make4_impl(NodeTag t, ListCell datum1, ListCell datum2,
268
+ ListCell datum3, ListCell datum4)
269
+ {
270
+ List *list = new_list(t, 4);
271
+
272
+ list->elements[0] = datum1;
273
+ list->elements[1] = datum2;
274
+ list->elements[2] = datum3;
275
+ list->elements[3] = datum4;
276
+ check_list_invariants(list);
277
+ return list;
278
+ }
279
+
280
+ List *
281
+ list_make5_impl(NodeTag t, ListCell datum1, ListCell datum2,
282
+ ListCell datum3, ListCell datum4, ListCell datum5)
283
+ {
284
+ List *list = new_list(t, 5);
285
+
286
+ list->elements[0] = datum1;
287
+ list->elements[1] = datum2;
288
+ list->elements[2] = datum3;
289
+ list->elements[3] = datum4;
290
+ list->elements[4] = datum5;
291
+ check_list_invariants(list);
292
+ return list;
293
+ }
294
+
295
+ /*
296
+ * Make room for a new head cell in the given (non-NIL) list.
297
+ *
298
+ * The data in the new head cell is undefined; the caller should be
299
+ * sure to fill it in
300
+ */
301
+ static void
302
+ new_head_cell(List *list)
303
+ {
304
+ /* Enlarge array if necessary */
305
+ if (list->length >= list->max_length)
306
+ enlarge_list(list, list->length + 1);
307
+ /* Now shove the existing data over */
308
+ memmove(&list->elements[1], &list->elements[0],
309
+ list->length * sizeof(ListCell));
310
+ list->length++;
311
+ }
312
+
313
+ /*
314
+ * Make room for a new tail cell in the given (non-NIL) list.
315
+ *
316
+ * The data in the new tail cell is undefined; the caller should be
317
+ * sure to fill it in
318
+ */
319
+ static void
320
+ new_tail_cell(List *list)
321
+ {
322
+ /* Enlarge array if necessary */
323
+ if (list->length >= list->max_length)
324
+ enlarge_list(list, list->length + 1);
325
+ list->length++;
326
+ }
327
+
328
+ /*
329
+ * Append a pointer to the list. A pointer to the modified list is
330
+ * returned. Note that this function may or may not destructively
331
+ * modify the list; callers should always use this function's return
332
+ * value, rather than continuing to use the pointer passed as the
333
+ * first argument.
334
+ */
335
+ List *
336
+ lappend(List *list, void *datum)
337
+ {
338
+ Assert(IsPointerList(list));
339
+
340
+ if (list == NIL)
341
+ list = new_list(T_List, 1);
342
+ else
343
+ new_tail_cell(list);
344
+
345
+ llast(list) = datum;
346
+ check_list_invariants(list);
347
+ return list;
348
+ }
349
+
350
+ /*
351
+ * Append an integer to the specified list. See lappend()
352
+ */
353
+ List *
354
+ lappend_int(List *list, int datum)
355
+ {
356
+ Assert(IsIntegerList(list));
357
+
358
+ if (list == NIL)
359
+ list = new_list(T_IntList, 1);
360
+ else
361
+ new_tail_cell(list);
362
+
363
+ llast_int(list) = datum;
364
+ check_list_invariants(list);
365
+ return list;
366
+ }
367
+
368
+ /*
369
+ * Append an OID to the specified list. See lappend()
370
+ */
371
+ List *
372
+ lappend_oid(List *list, Oid datum)
373
+ {
374
+ Assert(IsOidList(list));
375
+
376
+ if (list == NIL)
377
+ list = new_list(T_OidList, 1);
378
+ else
379
+ new_tail_cell(list);
380
+
381
+ llast_oid(list) = datum;
382
+ check_list_invariants(list);
383
+ return list;
384
+ }
385
+
386
+ /*
387
+ * Make room for a new cell at position 'pos' (measured from 0).
388
+ * The data in the cell is left undefined, and must be filled in by the
389
+ * caller. 'list' is assumed to be non-NIL, and 'pos' must be a valid
390
+ * list position, ie, 0 <= pos <= list's length.
391
+ * Returns address of the new cell.
392
+ */
393
+ static ListCell *
394
+ insert_new_cell(List *list, int pos)
395
+ {
396
+ Assert(pos >= 0 && pos <= list->length);
397
+
398
+ /* Enlarge array if necessary */
399
+ if (list->length >= list->max_length)
400
+ enlarge_list(list, list->length + 1);
401
+ /* Now shove the existing data over */
402
+ if (pos < list->length)
403
+ memmove(&list->elements[pos + 1], &list->elements[pos],
404
+ (list->length - pos) * sizeof(ListCell));
405
+ list->length++;
406
+
407
+ return &list->elements[pos];
408
+ }
409
+
410
+ /*
411
+ * Insert the given datum at position 'pos' (measured from 0) in the list.
412
+ * 'pos' must be valid, ie, 0 <= pos <= list's length.
413
+ *
414
+ * Note that this takes time proportional to the distance to the end of the
415
+ * list, since the following entries must be moved.
416
+ */
417
+ List *
418
+ list_insert_nth(List *list, int pos, void *datum)
419
+ {
420
+ if (list == NIL)
421
+ {
422
+ Assert(pos == 0);
423
+ return list_make1(datum);
424
+ }
425
+ Assert(IsPointerList(list));
426
+ lfirst(insert_new_cell(list, pos)) = datum;
427
+ check_list_invariants(list);
428
+ return list;
429
+ }
430
+
431
+ List *
432
+ list_insert_nth_int(List *list, int pos, int datum)
433
+ {
434
+ if (list == NIL)
435
+ {
436
+ Assert(pos == 0);
437
+ return list_make1_int(datum);
438
+ }
439
+ Assert(IsIntegerList(list));
440
+ lfirst_int(insert_new_cell(list, pos)) = datum;
441
+ check_list_invariants(list);
442
+ return list;
443
+ }
444
+
445
+ List *
446
+ list_insert_nth_oid(List *list, int pos, Oid datum)
447
+ {
448
+ if (list == NIL)
449
+ {
450
+ Assert(pos == 0);
451
+ return list_make1_oid(datum);
452
+ }
453
+ Assert(IsOidList(list));
454
+ lfirst_oid(insert_new_cell(list, pos)) = datum;
455
+ check_list_invariants(list);
456
+ return list;
457
+ }
458
+
459
+ /*
460
+ * Prepend a new element to the list. A pointer to the modified list
461
+ * is returned. Note that this function may or may not destructively
462
+ * modify the list; callers should always use this function's return
463
+ * value, rather than continuing to use the pointer passed as the
464
+ * second argument.
465
+ *
466
+ * Note that this takes time proportional to the length of the list,
467
+ * since the existing entries must be moved.
468
+ *
469
+ * Caution: before Postgres 8.0, the original List was unmodified and
470
+ * could be considered to retain its separate identity. This is no longer
471
+ * the case.
472
+ */
473
+ List *
474
+ lcons(void *datum, List *list)
475
+ {
476
+ Assert(IsPointerList(list));
477
+
478
+ if (list == NIL)
479
+ list = new_list(T_List, 1);
480
+ else
481
+ new_head_cell(list);
482
+
483
+ linitial(list) = datum;
484
+ check_list_invariants(list);
485
+ return list;
486
+ }
487
+
488
+ /*
489
+ * Prepend an integer to the list. See lcons()
490
+ */
491
+ List *
492
+ lcons_int(int datum, List *list)
493
+ {
494
+ Assert(IsIntegerList(list));
495
+
496
+ if (list == NIL)
497
+ list = new_list(T_IntList, 1);
498
+ else
499
+ new_head_cell(list);
500
+
501
+ linitial_int(list) = datum;
502
+ check_list_invariants(list);
503
+ return list;
504
+ }
505
+
506
+ /*
507
+ * Prepend an OID to the list. See lcons()
508
+ */
509
+ List *
510
+ lcons_oid(Oid datum, List *list)
511
+ {
512
+ Assert(IsOidList(list));
513
+
514
+ if (list == NIL)
515
+ list = new_list(T_OidList, 1);
516
+ else
517
+ new_head_cell(list);
518
+
519
+ linitial_oid(list) = datum;
520
+ check_list_invariants(list);
521
+ return list;
522
+ }
523
+
524
+ /*
525
+ * Concatenate list2 to the end of list1, and return list1.
526
+ *
527
+ * This is equivalent to lappend'ing each element of list2, in order, to list1.
528
+ * list1 is destructively changed, list2 is not. (However, in the case of
529
+ * pointer lists, list1 and list2 will point to the same structures.)
530
+ *
531
+ * Callers should be sure to use the return value as the new pointer to the
532
+ * concatenated list: the 'list1' input pointer may or may not be the same
533
+ * as the returned pointer.
534
+ *
535
+ * Note that this takes at least time proportional to the length of list2.
536
+ * It'd typically be the case that we have to enlarge list1's storage,
537
+ * probably adding time proportional to the length of list1.
538
+ */
539
+ List *
540
+ list_concat(List *list1, const List *list2)
541
+ {
542
+ int new_len;
543
+
544
+ if (list1 == NIL)
545
+ return list_copy(list2);
546
+ if (list2 == NIL)
547
+ return list1;
548
+
549
+ Assert(list1->type == list2->type);
550
+
551
+ new_len = list1->length + list2->length;
552
+ /* Enlarge array if necessary */
553
+ if (new_len > list1->max_length)
554
+ enlarge_list(list1, new_len);
555
+
556
+ /* Even if list1 == list2, using memcpy should be safe here */
557
+ memcpy(&list1->elements[list1->length], &list2->elements[0],
558
+ list2->length * sizeof(ListCell));
559
+ list1->length = new_len;
560
+
561
+ check_list_invariants(list1);
562
+ return list1;
563
+ }
564
+
565
+ /*
566
+ * Form a new list by concatenating the elements of list1 and list2.
567
+ *
568
+ * Neither input list is modified. (However, if they are pointer lists,
569
+ * the output list will point to the same structures.)
570
+ *
571
+ * This is equivalent to, but more efficient than,
572
+ * list_concat(list_copy(list1), list2).
573
+ * Note that some pre-v13 code might list_copy list2 as well, but that's
574
+ * pointless now.
575
+ */
576
+ List *
577
+ list_concat_copy(const List *list1, const List *list2)
578
+ {
579
+ List *result;
580
+ int new_len;
581
+
582
+ if (list1 == NIL)
583
+ return list_copy(list2);
584
+ if (list2 == NIL)
585
+ return list_copy(list1);
586
+
587
+ Assert(list1->type == list2->type);
588
+
589
+ new_len = list1->length + list2->length;
590
+ result = new_list(list1->type, new_len);
591
+ memcpy(result->elements, list1->elements,
592
+ list1->length * sizeof(ListCell));
593
+ memcpy(result->elements + list1->length, list2->elements,
594
+ list2->length * sizeof(ListCell));
595
+
596
+ check_list_invariants(result);
597
+ return result;
598
+ }
599
+
600
+ /*
601
+ * Truncate 'list' to contain no more than 'new_size' elements. This
602
+ * modifies the list in-place! Despite this, callers should use the
603
+ * pointer returned by this function to refer to the newly truncated
604
+ * list -- it may or may not be the same as the pointer that was
605
+ * passed.
606
+ *
607
+ * Note that any cells removed by list_truncate() are NOT pfree'd.
608
+ */
609
+ List *
610
+ list_truncate(List *list, int new_size)
611
+ {
612
+ if (new_size <= 0)
613
+ return NIL; /* truncate to zero length */
614
+
615
+ /* If asked to effectively extend the list, do nothing */
616
+ if (new_size < list_length(list))
617
+ list->length = new_size;
618
+
619
+ /*
620
+ * Note: unlike the individual-list-cell deletion functions, we don't move
621
+ * the list cells to new storage, even in DEBUG_LIST_MEMORY_USAGE mode.
622
+ * This is because none of them can move in this operation, so just like
623
+ * in the old cons-cell-based implementation, this function doesn't
624
+ * invalidate any pointers to cells of the list. This is also the reason
625
+ * for not wiping the memory of the deleted cells: the old code didn't
626
+ * free them either. Perhaps later we'll tighten this up.
627
+ */
628
+
629
+ return list;
630
+ }
631
+
632
+ /*
633
+ * Return true iff 'datum' is a member of the list. Equality is
634
+ * determined via equal(), so callers should ensure that they pass a
635
+ * Node as 'datum'.
636
+ *
637
+ * This does a simple linear search --- avoid using it on long lists.
638
+ */
639
+ bool
640
+ list_member(const List *list, const void *datum)
641
+ {
642
+ const ListCell *cell;
643
+
644
+ Assert(IsPointerList(list));
645
+ check_list_invariants(list);
646
+
647
+ foreach(cell, list)
648
+ {
649
+ if (equal(lfirst(cell), datum))
650
+ return true;
651
+ }
652
+
653
+ return false;
654
+ }
655
+
656
+ /*
657
+ * Return true iff 'datum' is a member of the list. Equality is
658
+ * determined by using simple pointer comparison.
659
+ */
660
+ bool
661
+ list_member_ptr(const List *list, const void *datum)
662
+ {
663
+ const ListCell *cell;
664
+
665
+ Assert(IsPointerList(list));
666
+ check_list_invariants(list);
667
+
668
+ foreach(cell, list)
669
+ {
670
+ if (lfirst(cell) == datum)
671
+ return true;
672
+ }
673
+
674
+ return false;
675
+ }
676
+
677
+ /*
678
+ * Return true iff the integer 'datum' is a member of the list.
679
+ */
680
+ bool
681
+ list_member_int(const List *list, int datum)
682
+ {
683
+ const ListCell *cell;
684
+
685
+ Assert(IsIntegerList(list));
686
+ check_list_invariants(list);
687
+
688
+ foreach(cell, list)
689
+ {
690
+ if (lfirst_int(cell) == datum)
691
+ return true;
692
+ }
693
+
694
+ return false;
695
+ }
696
+
697
+ /*
698
+ * Return true iff the OID 'datum' is a member of the list.
699
+ */
700
+ bool
701
+ list_member_oid(const List *list, Oid datum)
702
+ {
703
+ const ListCell *cell;
704
+
705
+ Assert(IsOidList(list));
706
+ check_list_invariants(list);
707
+
708
+ foreach(cell, list)
709
+ {
710
+ if (lfirst_oid(cell) == datum)
711
+ return true;
712
+ }
713
+
714
+ return false;
715
+ }
716
+
717
+ /*
718
+ * Delete the n'th cell (counting from 0) in list.
719
+ *
720
+ * The List is pfree'd if this was the last member.
721
+ *
722
+ * Note that this takes time proportional to the distance to the end of the
723
+ * list, since the following entries must be moved.
724
+ */
725
+ List *
726
+ list_delete_nth_cell(List *list, int n)
727
+ {
728
+ check_list_invariants(list);
729
+
730
+ Assert(n >= 0 && n < list->length);
731
+
732
+ /*
733
+ * If we're about to delete the last node from the list, free the whole
734
+ * list instead and return NIL, which is the only valid representation of
735
+ * a zero-length list.
736
+ */
737
+ if (list->length == 1)
738
+ {
739
+ list_free(list);
740
+ return NIL;
741
+ }
742
+
743
+ /*
744
+ * Otherwise, we normally just collapse out the removed element. But for
745
+ * debugging purposes, move the whole list contents someplace else.
746
+ *
747
+ * (Note that we *must* keep the contents in the same memory context.)
748
+ */
749
+ #ifndef DEBUG_LIST_MEMORY_USAGE
750
+ memmove(&list->elements[n], &list->elements[n + 1],
751
+ (list->length - 1 - n) * sizeof(ListCell));
752
+ list->length--;
753
+ #else
754
+ {
755
+ ListCell *newelems;
756
+ int newmaxlen = list->length - 1;
757
+
758
+ newelems = (ListCell *)
759
+ MemoryContextAlloc(GetMemoryChunkContext(list),
760
+ newmaxlen * sizeof(ListCell));
761
+ memcpy(newelems, list->elements, n * sizeof(ListCell));
762
+ memcpy(&newelems[n], &list->elements[n + 1],
763
+ (list->length - 1 - n) * sizeof(ListCell));
764
+ if (list->elements != list->initial_elements)
765
+ pfree(list->elements);
766
+ else
767
+ {
768
+ /*
769
+ * As in enlarge_list(), clear the initial_elements[] space and/or
770
+ * mark it inaccessible.
771
+ */
772
+ #ifdef CLOBBER_FREED_MEMORY
773
+ wipe_mem(list->initial_elements,
774
+ list->max_length * sizeof(ListCell));
775
+ #else
776
+ VALGRIND_MAKE_MEM_NOACCESS(list->initial_elements,
777
+ list->max_length * sizeof(ListCell));
778
+ #endif
779
+ }
780
+ list->elements = newelems;
781
+ list->max_length = newmaxlen;
782
+ list->length--;
783
+ check_list_invariants(list);
784
+ }
785
+ #endif
786
+
787
+ return list;
788
+ }
789
+
790
+ /*
791
+ * Delete 'cell' from 'list'.
792
+ *
793
+ * The List is pfree'd if this was the last member. However, we do not
794
+ * touch any data the cell might've been pointing to.
795
+ *
796
+ * Note that this takes time proportional to the distance to the end of the
797
+ * list, since the following entries must be moved.
798
+ */
799
+ List *
800
+ list_delete_cell(List *list, ListCell *cell)
801
+ {
802
+ return list_delete_nth_cell(list, cell - list->elements);
803
+ }
804
+
805
+ /*
806
+ * Delete the first cell in list that matches datum, if any.
807
+ * Equality is determined via equal().
808
+ *
809
+ * This does a simple linear search --- avoid using it on long lists.
810
+ */
811
+ List *
812
+ list_delete(List *list, void *datum)
813
+ {
814
+ ListCell *cell;
815
+
816
+ Assert(IsPointerList(list));
817
+ check_list_invariants(list);
818
+
819
+ foreach(cell, list)
820
+ {
821
+ if (equal(lfirst(cell), datum))
822
+ return list_delete_cell(list, cell);
823
+ }
824
+
825
+ /* Didn't find a match: return the list unmodified */
826
+ return list;
827
+ }
828
+
829
+ /* As above, but use simple pointer equality */
830
+ List *
831
+ list_delete_ptr(List *list, void *datum)
832
+ {
833
+ ListCell *cell;
834
+
835
+ Assert(IsPointerList(list));
836
+ check_list_invariants(list);
837
+
838
+ foreach(cell, list)
839
+ {
840
+ if (lfirst(cell) == datum)
841
+ return list_delete_cell(list, cell);
842
+ }
843
+
844
+ /* Didn't find a match: return the list unmodified */
845
+ return list;
846
+ }
847
+
848
+ /* As above, but for integers */
849
+ List *
850
+ list_delete_int(List *list, int datum)
851
+ {
852
+ ListCell *cell;
853
+
854
+ Assert(IsIntegerList(list));
855
+ check_list_invariants(list);
856
+
857
+ foreach(cell, list)
858
+ {
859
+ if (lfirst_int(cell) == datum)
860
+ return list_delete_cell(list, cell);
861
+ }
862
+
863
+ /* Didn't find a match: return the list unmodified */
864
+ return list;
865
+ }
866
+
867
+ /* As above, but for OIDs */
868
+ List *
869
+ list_delete_oid(List *list, Oid datum)
870
+ {
871
+ ListCell *cell;
872
+
873
+ Assert(IsOidList(list));
874
+ check_list_invariants(list);
875
+
876
+ foreach(cell, list)
877
+ {
878
+ if (lfirst_oid(cell) == datum)
879
+ return list_delete_cell(list, cell);
880
+ }
881
+
882
+ /* Didn't find a match: return the list unmodified */
883
+ return list;
884
+ }
885
+
886
+ /*
887
+ * Delete the first element of the list.
888
+ *
889
+ * This is useful to replace the Lisp-y code "list = lnext(list);" in cases
890
+ * where the intent is to alter the list rather than just traverse it.
891
+ * Beware that the list is modified, whereas the Lisp-y coding leaves
892
+ * the original list head intact in case there's another pointer to it.
893
+ *
894
+ * Note that this takes time proportional to the length of the list,
895
+ * since the remaining entries must be moved. Consider reversing the
896
+ * list order so that you can use list_delete_last() instead. However,
897
+ * if that causes you to replace lappend() with lcons(), you haven't
898
+ * improved matters. (In short, you can make an efficient stack from
899
+ * a List, but not an efficient FIFO queue.)
900
+ */
901
+ List *
902
+ list_delete_first(List *list)
903
+ {
904
+ check_list_invariants(list);
905
+
906
+ if (list == NIL)
907
+ return NIL; /* would an error be better? */
908
+
909
+ return list_delete_nth_cell(list, 0);
910
+ }
911
+
912
+ /*
913
+ * Delete the last element of the list.
914
+ */
915
+ List *
916
+ list_delete_last(List *list)
917
+ {
918
+ check_list_invariants(list);
919
+
920
+ if (list == NIL)
921
+ return NIL; /* would an error be better? */
922
+
923
+ /* list_truncate won't free list if it goes to empty, but this should */
924
+ if (list_length(list) <= 1)
925
+ {
926
+ list_free(list);
927
+ return NIL;
928
+ }
929
+
930
+ return list_truncate(list, list_length(list) - 1);
931
+ }
932
+
933
+ /*
934
+ * Delete the first N cells of the list.
935
+ *
936
+ * The List is pfree'd if the request causes all cells to be deleted.
937
+ *
938
+ * Note that this takes time proportional to the distance to the end of the
939
+ * list, since the following entries must be moved.
940
+ */
941
+ List *
942
+ list_delete_first_n(List *list, int n)
943
+ {
944
+ check_list_invariants(list);
945
+
946
+ /* No-op request? */
947
+ if (n <= 0)
948
+ return list;
949
+
950
+ /* Delete whole list? */
951
+ if (n >= list_length(list))
952
+ {
953
+ list_free(list);
954
+ return NIL;
955
+ }
956
+
957
+ /*
958
+ * Otherwise, we normally just collapse out the removed elements. But for
959
+ * debugging purposes, move the whole list contents someplace else.
960
+ *
961
+ * (Note that we *must* keep the contents in the same memory context.)
962
+ */
963
+ #ifndef DEBUG_LIST_MEMORY_USAGE
964
+ memmove(&list->elements[0], &list->elements[n],
965
+ (list->length - n) * sizeof(ListCell));
966
+ list->length -= n;
967
+ #else
968
+ {
969
+ ListCell *newelems;
970
+ int newmaxlen = list->length - n;
971
+
972
+ newelems = (ListCell *)
973
+ MemoryContextAlloc(GetMemoryChunkContext(list),
974
+ newmaxlen * sizeof(ListCell));
975
+ memcpy(newelems, &list->elements[n], newmaxlen * sizeof(ListCell));
976
+ if (list->elements != list->initial_elements)
977
+ pfree(list->elements);
978
+ else
979
+ {
980
+ /*
981
+ * As in enlarge_list(), clear the initial_elements[] space and/or
982
+ * mark it inaccessible.
983
+ */
984
+ #ifdef CLOBBER_FREED_MEMORY
985
+ wipe_mem(list->initial_elements,
986
+ list->max_length * sizeof(ListCell));
987
+ #else
988
+ VALGRIND_MAKE_MEM_NOACCESS(list->initial_elements,
989
+ list->max_length * sizeof(ListCell));
990
+ #endif
991
+ }
992
+ list->elements = newelems;
993
+ list->max_length = newmaxlen;
994
+ list->length = newmaxlen;
995
+ check_list_invariants(list);
996
+ }
997
+ #endif
998
+
999
+ return list;
1000
+ }
1001
+
1002
+ /*
1003
+ * Generate the union of two lists. This is calculated by copying
1004
+ * list1 via list_copy(), then adding to it all the members of list2
1005
+ * that aren't already in list1.
1006
+ *
1007
+ * Whether an element is already a member of the list is determined
1008
+ * via equal().
1009
+ *
1010
+ * The returned list is newly-allocated, although the content of the
1011
+ * cells is the same (i.e. any pointed-to objects are not copied).
1012
+ *
1013
+ * NB: this function will NOT remove any duplicates that are present
1014
+ * in list1 (so it only performs a "union" if list1 is known unique to
1015
+ * start with). Also, if you are about to write "x = list_union(x, y)"
1016
+ * you probably want to use list_concat_unique() instead to avoid wasting
1017
+ * the storage of the old x list.
1018
+ *
1019
+ * Note that this takes time proportional to the product of the list
1020
+ * lengths, so beware of using it on long lists. (We could probably
1021
+ * improve that, but really you should be using some other data structure
1022
+ * if this'd be a performance bottleneck.)
1023
+ */
1024
+ List *
1025
+ list_union(const List *list1, const List *list2)
1026
+ {
1027
+ List *result;
1028
+ const ListCell *cell;
1029
+
1030
+ Assert(IsPointerList(list1));
1031
+ Assert(IsPointerList(list2));
1032
+
1033
+ result = list_copy(list1);
1034
+ foreach(cell, list2)
1035
+ {
1036
+ if (!list_member(result, lfirst(cell)))
1037
+ result = lappend(result, lfirst(cell));
1038
+ }
1039
+
1040
+ check_list_invariants(result);
1041
+ return result;
1042
+ }
1043
+
1044
+ /*
1045
+ * This variant of list_union() determines duplicates via simple
1046
+ * pointer comparison.
1047
+ */
1048
+ List *
1049
+ list_union_ptr(const List *list1, const List *list2)
1050
+ {
1051
+ List *result;
1052
+ const ListCell *cell;
1053
+
1054
+ Assert(IsPointerList(list1));
1055
+ Assert(IsPointerList(list2));
1056
+
1057
+ result = list_copy(list1);
1058
+ foreach(cell, list2)
1059
+ {
1060
+ if (!list_member_ptr(result, lfirst(cell)))
1061
+ result = lappend(result, lfirst(cell));
1062
+ }
1063
+
1064
+ check_list_invariants(result);
1065
+ return result;
1066
+ }
1067
+
1068
+ /*
1069
+ * This variant of list_union() operates upon lists of integers.
1070
+ */
1071
+ List *
1072
+ list_union_int(const List *list1, const List *list2)
1073
+ {
1074
+ List *result;
1075
+ const ListCell *cell;
1076
+
1077
+ Assert(IsIntegerList(list1));
1078
+ Assert(IsIntegerList(list2));
1079
+
1080
+ result = list_copy(list1);
1081
+ foreach(cell, list2)
1082
+ {
1083
+ if (!list_member_int(result, lfirst_int(cell)))
1084
+ result = lappend_int(result, lfirst_int(cell));
1085
+ }
1086
+
1087
+ check_list_invariants(result);
1088
+ return result;
1089
+ }
1090
+
1091
+ /*
1092
+ * This variant of list_union() operates upon lists of OIDs.
1093
+ */
1094
+ List *
1095
+ list_union_oid(const List *list1, const List *list2)
1096
+ {
1097
+ List *result;
1098
+ const ListCell *cell;
1099
+
1100
+ Assert(IsOidList(list1));
1101
+ Assert(IsOidList(list2));
1102
+
1103
+ result = list_copy(list1);
1104
+ foreach(cell, list2)
1105
+ {
1106
+ if (!list_member_oid(result, lfirst_oid(cell)))
1107
+ result = lappend_oid(result, lfirst_oid(cell));
1108
+ }
1109
+
1110
+ check_list_invariants(result);
1111
+ return result;
1112
+ }
1113
+
1114
+ /*
1115
+ * Return a list that contains all the cells that are in both list1 and
1116
+ * list2. The returned list is freshly allocated via palloc(), but the
1117
+ * cells themselves point to the same objects as the cells of the
1118
+ * input lists.
1119
+ *
1120
+ * Duplicate entries in list1 will not be suppressed, so it's only a true
1121
+ * "intersection" if list1 is known unique beforehand.
1122
+ *
1123
+ * This variant works on lists of pointers, and determines list
1124
+ * membership via equal(). Note that the list1 member will be pointed
1125
+ * to in the result.
1126
+ *
1127
+ * Note that this takes time proportional to the product of the list
1128
+ * lengths, so beware of using it on long lists. (We could probably
1129
+ * improve that, but really you should be using some other data structure
1130
+ * if this'd be a performance bottleneck.)
1131
+ */
1132
+ List *
1133
+ list_intersection(const List *list1, const List *list2)
1134
+ {
1135
+ List *result;
1136
+ const ListCell *cell;
1137
+
1138
+ if (list1 == NIL || list2 == NIL)
1139
+ return NIL;
1140
+
1141
+ Assert(IsPointerList(list1));
1142
+ Assert(IsPointerList(list2));
1143
+
1144
+ result = NIL;
1145
+ foreach(cell, list1)
1146
+ {
1147
+ if (list_member(list2, lfirst(cell)))
1148
+ result = lappend(result, lfirst(cell));
1149
+ }
1150
+
1151
+ check_list_invariants(result);
1152
+ return result;
1153
+ }
1154
+
1155
+ /*
1156
+ * As list_intersection but operates on lists of integers.
1157
+ */
1158
+ List *
1159
+ list_intersection_int(const List *list1, const List *list2)
1160
+ {
1161
+ List *result;
1162
+ const ListCell *cell;
1163
+
1164
+ if (list1 == NIL || list2 == NIL)
1165
+ return NIL;
1166
+
1167
+ Assert(IsIntegerList(list1));
1168
+ Assert(IsIntegerList(list2));
1169
+
1170
+ result = NIL;
1171
+ foreach(cell, list1)
1172
+ {
1173
+ if (list_member_int(list2, lfirst_int(cell)))
1174
+ result = lappend_int(result, lfirst_int(cell));
1175
+ }
1176
+
1177
+ check_list_invariants(result);
1178
+ return result;
1179
+ }
1180
+
1181
+ /*
1182
+ * Return a list that contains all the cells in list1 that are not in
1183
+ * list2. The returned list is freshly allocated via palloc(), but the
1184
+ * cells themselves point to the same objects as the cells of the
1185
+ * input lists.
1186
+ *
1187
+ * This variant works on lists of pointers, and determines list
1188
+ * membership via equal()
1189
+ *
1190
+ * Note that this takes time proportional to the product of the list
1191
+ * lengths, so beware of using it on long lists. (We could probably
1192
+ * improve that, but really you should be using some other data structure
1193
+ * if this'd be a performance bottleneck.)
1194
+ */
1195
+ List *
1196
+ list_difference(const List *list1, const List *list2)
1197
+ {
1198
+ const ListCell *cell;
1199
+ List *result = NIL;
1200
+
1201
+ Assert(IsPointerList(list1));
1202
+ Assert(IsPointerList(list2));
1203
+
1204
+ if (list2 == NIL)
1205
+ return list_copy(list1);
1206
+
1207
+ foreach(cell, list1)
1208
+ {
1209
+ if (!list_member(list2, lfirst(cell)))
1210
+ result = lappend(result, lfirst(cell));
1211
+ }
1212
+
1213
+ check_list_invariants(result);
1214
+ return result;
1215
+ }
1216
+
1217
+ /*
1218
+ * This variant of list_difference() determines list membership via
1219
+ * simple pointer equality.
1220
+ */
1221
+ List *
1222
+ list_difference_ptr(const List *list1, const List *list2)
1223
+ {
1224
+ const ListCell *cell;
1225
+ List *result = NIL;
1226
+
1227
+ Assert(IsPointerList(list1));
1228
+ Assert(IsPointerList(list2));
1229
+
1230
+ if (list2 == NIL)
1231
+ return list_copy(list1);
1232
+
1233
+ foreach(cell, list1)
1234
+ {
1235
+ if (!list_member_ptr(list2, lfirst(cell)))
1236
+ result = lappend(result, lfirst(cell));
1237
+ }
1238
+
1239
+ check_list_invariants(result);
1240
+ return result;
1241
+ }
1242
+
1243
+ /*
1244
+ * This variant of list_difference() operates upon lists of integers.
1245
+ */
1246
+ List *
1247
+ list_difference_int(const List *list1, const List *list2)
1248
+ {
1249
+ const ListCell *cell;
1250
+ List *result = NIL;
1251
+
1252
+ Assert(IsIntegerList(list1));
1253
+ Assert(IsIntegerList(list2));
1254
+
1255
+ if (list2 == NIL)
1256
+ return list_copy(list1);
1257
+
1258
+ foreach(cell, list1)
1259
+ {
1260
+ if (!list_member_int(list2, lfirst_int(cell)))
1261
+ result = lappend_int(result, lfirst_int(cell));
1262
+ }
1263
+
1264
+ check_list_invariants(result);
1265
+ return result;
1266
+ }
1267
+
1268
+ /*
1269
+ * This variant of list_difference() operates upon lists of OIDs.
1270
+ */
1271
+ List *
1272
+ list_difference_oid(const List *list1, const List *list2)
1273
+ {
1274
+ const ListCell *cell;
1275
+ List *result = NIL;
1276
+
1277
+ Assert(IsOidList(list1));
1278
+ Assert(IsOidList(list2));
1279
+
1280
+ if (list2 == NIL)
1281
+ return list_copy(list1);
1282
+
1283
+ foreach(cell, list1)
1284
+ {
1285
+ if (!list_member_oid(list2, lfirst_oid(cell)))
1286
+ result = lappend_oid(result, lfirst_oid(cell));
1287
+ }
1288
+
1289
+ check_list_invariants(result);
1290
+ return result;
1291
+ }
1292
+
1293
+ /*
1294
+ * Append datum to list, but only if it isn't already in the list.
1295
+ *
1296
+ * Whether an element is already a member of the list is determined
1297
+ * via equal().
1298
+ *
1299
+ * This does a simple linear search --- avoid using it on long lists.
1300
+ */
1301
+ List *
1302
+ list_append_unique(List *list, void *datum)
1303
+ {
1304
+ if (list_member(list, datum))
1305
+ return list;
1306
+ else
1307
+ return lappend(list, datum);
1308
+ }
1309
+
1310
+ /*
1311
+ * This variant of list_append_unique() determines list membership via
1312
+ * simple pointer equality.
1313
+ */
1314
+ List *
1315
+ list_append_unique_ptr(List *list, void *datum)
1316
+ {
1317
+ if (list_member_ptr(list, datum))
1318
+ return list;
1319
+ else
1320
+ return lappend(list, datum);
1321
+ }
1322
+
1323
+ /*
1324
+ * This variant of list_append_unique() operates upon lists of integers.
1325
+ */
1326
+ List *
1327
+ list_append_unique_int(List *list, int datum)
1328
+ {
1329
+ if (list_member_int(list, datum))
1330
+ return list;
1331
+ else
1332
+ return lappend_int(list, datum);
1333
+ }
1334
+
1335
+ /*
1336
+ * This variant of list_append_unique() operates upon lists of OIDs.
1337
+ */
1338
+ List *
1339
+ list_append_unique_oid(List *list, Oid datum)
1340
+ {
1341
+ if (list_member_oid(list, datum))
1342
+ return list;
1343
+ else
1344
+ return lappend_oid(list, datum);
1345
+ }
1346
+
1347
+ /*
1348
+ * Append to list1 each member of list2 that isn't already in list1.
1349
+ *
1350
+ * Whether an element is already a member of the list is determined
1351
+ * via equal().
1352
+ *
1353
+ * This is almost the same functionality as list_union(), but list1 is
1354
+ * modified in-place rather than being copied. However, callers of this
1355
+ * function may have strict ordering expectations -- i.e. that the relative
1356
+ * order of those list2 elements that are not duplicates is preserved.
1357
+ *
1358
+ * Note that this takes time proportional to the product of the list
1359
+ * lengths, so beware of using it on long lists. (We could probably
1360
+ * improve that, but really you should be using some other data structure
1361
+ * if this'd be a performance bottleneck.)
1362
+ */
1363
+ List *
1364
+ list_concat_unique(List *list1, const List *list2)
1365
+ {
1366
+ ListCell *cell;
1367
+
1368
+ Assert(IsPointerList(list1));
1369
+ Assert(IsPointerList(list2));
1370
+
1371
+ foreach(cell, list2)
1372
+ {
1373
+ if (!list_member(list1, lfirst(cell)))
1374
+ list1 = lappend(list1, lfirst(cell));
1375
+ }
1376
+
1377
+ check_list_invariants(list1);
1378
+ return list1;
1379
+ }
1380
+
1381
+ /*
1382
+ * This variant of list_concat_unique() determines list membership via
1383
+ * simple pointer equality.
1384
+ */
1385
+ List *
1386
+ list_concat_unique_ptr(List *list1, const List *list2)
1387
+ {
1388
+ ListCell *cell;
1389
+
1390
+ Assert(IsPointerList(list1));
1391
+ Assert(IsPointerList(list2));
1392
+
1393
+ foreach(cell, list2)
1394
+ {
1395
+ if (!list_member_ptr(list1, lfirst(cell)))
1396
+ list1 = lappend(list1, lfirst(cell));
1397
+ }
1398
+
1399
+ check_list_invariants(list1);
1400
+ return list1;
1401
+ }
1402
+
1403
+ /*
1404
+ * This variant of list_concat_unique() operates upon lists of integers.
1405
+ */
1406
+ List *
1407
+ list_concat_unique_int(List *list1, const List *list2)
1408
+ {
1409
+ ListCell *cell;
1410
+
1411
+ Assert(IsIntegerList(list1));
1412
+ Assert(IsIntegerList(list2));
1413
+
1414
+ foreach(cell, list2)
1415
+ {
1416
+ if (!list_member_int(list1, lfirst_int(cell)))
1417
+ list1 = lappend_int(list1, lfirst_int(cell));
1418
+ }
1419
+
1420
+ check_list_invariants(list1);
1421
+ return list1;
1422
+ }
1423
+
1424
+ /*
1425
+ * This variant of list_concat_unique() operates upon lists of OIDs.
1426
+ */
1427
+ List *
1428
+ list_concat_unique_oid(List *list1, const List *list2)
1429
+ {
1430
+ ListCell *cell;
1431
+
1432
+ Assert(IsOidList(list1));
1433
+ Assert(IsOidList(list2));
1434
+
1435
+ foreach(cell, list2)
1436
+ {
1437
+ if (!list_member_oid(list1, lfirst_oid(cell)))
1438
+ list1 = lappend_oid(list1, lfirst_oid(cell));
1439
+ }
1440
+
1441
+ check_list_invariants(list1);
1442
+ return list1;
1443
+ }
1444
+
1445
+ /*
1446
+ * Remove adjacent duplicates in a list of OIDs.
1447
+ *
1448
+ * It is caller's responsibility to have sorted the list to bring duplicates
1449
+ * together, perhaps via list_sort(list, list_oid_cmp).
1450
+ *
1451
+ * Note that this takes time proportional to the length of the list.
1452
+ */
1453
+ void
1454
+ list_deduplicate_oid(List *list)
1455
+ {
1456
+ int len;
1457
+
1458
+ Assert(IsOidList(list));
1459
+ len = list_length(list);
1460
+ if (len > 1)
1461
+ {
1462
+ ListCell *elements = list->elements;
1463
+ int i = 0;
1464
+
1465
+ for (int j = 1; j < len; j++)
1466
+ {
1467
+ if (elements[i].oid_value != elements[j].oid_value)
1468
+ elements[++i].oid_value = elements[j].oid_value;
1469
+ }
1470
+ list->length = i + 1;
1471
+ }
1472
+ check_list_invariants(list);
1473
+ }
1474
+
1475
+ /*
1476
+ * Free all storage in a list, and optionally the pointed-to elements
1477
+ */
1478
+ static void
1479
+ list_free_private(List *list, bool deep)
1480
+ {
1481
+ if (list == NIL)
1482
+ return; /* nothing to do */
1483
+
1484
+ check_list_invariants(list);
1485
+
1486
+ if (deep)
1487
+ {
1488
+ for (int i = 0; i < list->length; i++)
1489
+ pfree(lfirst(&list->elements[i]));
1490
+ }
1491
+ if (list->elements != list->initial_elements)
1492
+ pfree(list->elements);
1493
+ pfree(list);
1494
+ }
1495
+
1496
+ /*
1497
+ * Free all the cells of the list, as well as the list itself. Any
1498
+ * objects that are pointed-to by the cells of the list are NOT
1499
+ * free'd.
1500
+ *
1501
+ * On return, the argument to this function has been freed, so the
1502
+ * caller would be wise to set it to NIL for safety's sake.
1503
+ */
1504
+ void
1505
+ list_free(List *list)
1506
+ {
1507
+ list_free_private(list, false);
1508
+ }
1509
+
1510
+ /*
1511
+ * Free all the cells of the list, the list itself, and all the
1512
+ * objects pointed-to by the cells of the list (each element in the
1513
+ * list must contain a pointer to a palloc()'d region of memory!)
1514
+ *
1515
+ * On return, the argument to this function has been freed, so the
1516
+ * caller would be wise to set it to NIL for safety's sake.
1517
+ */
1518
+ void
1519
+ list_free_deep(List *list)
1520
+ {
1521
+ /*
1522
+ * A "deep" free operation only makes sense on a list of pointers.
1523
+ */
1524
+ Assert(IsPointerList(list));
1525
+ list_free_private(list, true);
1526
+ }
1527
+
1528
+ /*
1529
+ * Return a shallow copy of the specified list.
1530
+ */
1531
+ List *
1532
+ list_copy(const List *oldlist)
1533
+ {
1534
+ List *newlist;
1535
+
1536
+ if (oldlist == NIL)
1537
+ return NIL;
1538
+
1539
+ newlist = new_list(oldlist->type, oldlist->length);
1540
+ memcpy(newlist->elements, oldlist->elements,
1541
+ newlist->length * sizeof(ListCell));
1542
+
1543
+ check_list_invariants(newlist);
1544
+ return newlist;
1545
+ }
1546
+
1547
+ /*
1548
+ * Return a shallow copy of the specified list containing only the first 'len'
1549
+ * elements. If oldlist is shorter than 'len' then we copy the entire list.
1550
+ */
1551
+ List *
1552
+ list_copy_head(const List *oldlist, int len)
1553
+ {
1554
+ List *newlist;
1555
+
1556
+ if (oldlist == NIL || len <= 0)
1557
+ return NIL;
1558
+
1559
+ len = Min(oldlist->length, len);
1560
+
1561
+ newlist = new_list(oldlist->type, len);
1562
+ memcpy(newlist->elements, oldlist->elements, len * sizeof(ListCell));
1563
+
1564
+ check_list_invariants(newlist);
1565
+ return newlist;
1566
+ }
1567
+
1568
+ /*
1569
+ * Return a shallow copy of the specified list, without the first N elements.
1570
+ */
1571
+ List *
1572
+ list_copy_tail(const List *oldlist, int nskip)
1573
+ {
1574
+ List *newlist;
1575
+
1576
+ if (nskip < 0)
1577
+ nskip = 0; /* would it be better to elog? */
1578
+
1579
+ if (oldlist == NIL || nskip >= oldlist->length)
1580
+ return NIL;
1581
+
1582
+ newlist = new_list(oldlist->type, oldlist->length - nskip);
1583
+ memcpy(newlist->elements, &oldlist->elements[nskip],
1584
+ newlist->length * sizeof(ListCell));
1585
+
1586
+ check_list_invariants(newlist);
1587
+ return newlist;
1588
+ }
1589
+
1590
+ /*
1591
+ * Return a deep copy of the specified list.
1592
+ *
1593
+ * The list elements are copied via copyObject(), so that this function's
1594
+ * idea of a "deep" copy is considerably deeper than what list_free_deep()
1595
+ * means by the same word.
1596
+ */
1597
+ List *
1598
+ list_copy_deep(const List *oldlist)
1599
+ {
1600
+ List *newlist;
1601
+
1602
+ if (oldlist == NIL)
1603
+ return NIL;
1604
+
1605
+ /* This is only sensible for pointer Lists */
1606
+ Assert(IsA(oldlist, List));
1607
+
1608
+ newlist = new_list(oldlist->type, oldlist->length);
1609
+ for (int i = 0; i < newlist->length; i++)
1610
+ lfirst(&newlist->elements[i]) =
1611
+ copyObjectImpl(lfirst(&oldlist->elements[i]));
1612
+
1613
+ check_list_invariants(newlist);
1614
+ return newlist;
1615
+ }
1616
+
1617
+ /*
1618
+ * Sort a list according to the specified comparator function.
1619
+ *
1620
+ * The list is sorted in-place.
1621
+ *
1622
+ * The comparator function is declared to receive arguments of type
1623
+ * const ListCell *; this allows it to use lfirst() and variants
1624
+ * without casting its arguments. Otherwise it behaves the same as
1625
+ * the comparator function for standard qsort().
1626
+ *
1627
+ * Like qsort(), this provides no guarantees about sort stability
1628
+ * for equal keys.
1629
+ *
1630
+ * This is based on qsort(), so it likewise has O(N log N) runtime.
1631
+ */
1632
+ void
1633
+ list_sort(List *list, list_sort_comparator cmp)
1634
+ {
1635
+ typedef int (*qsort_comparator) (const void *a, const void *b);
1636
+ int len;
1637
+
1638
+ check_list_invariants(list);
1639
+
1640
+ /* Nothing to do if there's less than two elements */
1641
+ len = list_length(list);
1642
+ if (len > 1)
1643
+ qsort(list->elements, len, sizeof(ListCell), (qsort_comparator) cmp);
1644
+ }
1645
+
1646
+ /*
1647
+ * list_sort comparator for sorting a list into ascending int order.
1648
+ */
1649
+ int
1650
+ list_int_cmp(const ListCell *p1, const ListCell *p2)
1651
+ {
1652
+ int v1 = lfirst_int(p1);
1653
+ int v2 = lfirst_int(p2);
1654
+
1655
+ if (v1 < v2)
1656
+ return -1;
1657
+ if (v1 > v2)
1658
+ return 1;
1659
+ return 0;
1660
+ }
1661
+
1662
+ /*
1663
+ * list_sort comparator for sorting a list into ascending OID order.
1664
+ */
1665
+ int
1666
+ list_oid_cmp(const ListCell *p1, const ListCell *p2)
1667
+ {
1668
+ Oid v1 = lfirst_oid(p1);
1669
+ Oid v2 = lfirst_oid(p2);
1670
+
1671
+ if (v1 < v2)
1672
+ return -1;
1673
+ if (v1 > v2)
1674
+ return 1;
1675
+ return 0;
1676
+ }