duckdb 1.1.2-dev6.0 → 1.1.4-dev11.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 (1747) hide show
  1. package/.github/workflows/NodeJS.yml +5 -54
  2. package/binding.gyp +73 -52
  3. package/package.json +2 -2
  4. package/src/duckdb/{src → extension}/core_functions/aggregate/algebraic/avg.cpp +2 -2
  5. package/src/duckdb/{src → extension}/core_functions/aggregate/algebraic/corr.cpp +4 -4
  6. package/src/duckdb/{src → extension}/core_functions/aggregate/algebraic/covar.cpp +2 -2
  7. package/src/duckdb/{src → extension}/core_functions/aggregate/algebraic/stddev.cpp +2 -2
  8. package/src/duckdb/{src → extension}/core_functions/aggregate/distributive/approx_count.cpp +1 -1
  9. package/src/duckdb/{src → extension}/core_functions/aggregate/distributive/arg_min_max.cpp +66 -18
  10. package/src/duckdb/{src → extension}/core_functions/aggregate/distributive/bitagg.cpp +1 -1
  11. package/src/duckdb/{src → extension}/core_functions/aggregate/distributive/bitstring_agg.cpp +5 -7
  12. package/src/duckdb/{src → extension}/core_functions/aggregate/distributive/bool.cpp +3 -1
  13. package/src/duckdb/{src → extension}/core_functions/aggregate/distributive/kurtosis.cpp +1 -1
  14. package/src/duckdb/{src → extension}/core_functions/aggregate/distributive/product.cpp +1 -1
  15. package/src/duckdb/{src → extension}/core_functions/aggregate/distributive/skew.cpp +2 -2
  16. package/src/duckdb/{src → extension}/core_functions/aggregate/distributive/string_agg.cpp +1 -1
  17. package/src/duckdb/{src → extension}/core_functions/aggregate/distributive/sum.cpp +13 -2
  18. package/src/duckdb/{src → extension}/core_functions/aggregate/holistic/approx_top_k.cpp +3 -3
  19. package/src/duckdb/{src → extension}/core_functions/aggregate/holistic/approximate_quantile.cpp +51 -15
  20. package/src/duckdb/{src → extension}/core_functions/aggregate/holistic/mad.cpp +25 -10
  21. package/src/duckdb/{src → extension}/core_functions/aggregate/holistic/mode.cpp +215 -71
  22. package/src/duckdb/{src → extension}/core_functions/aggregate/holistic/quantile.cpp +58 -31
  23. package/src/duckdb/{src → extension}/core_functions/aggregate/holistic/reservoir_quantile.cpp +2 -2
  24. package/src/duckdb/{src → extension}/core_functions/aggregate/nested/binned_histogram.cpp +9 -4
  25. package/src/duckdb/{src → extension}/core_functions/aggregate/nested/histogram.cpp +4 -2
  26. package/src/duckdb/{src → extension}/core_functions/aggregate/nested/list.cpp +1 -1
  27. package/src/duckdb/{src → extension}/core_functions/aggregate/regression/regr_avg.cpp +1 -1
  28. package/src/duckdb/{src → extension}/core_functions/aggregate/regression/regr_count.cpp +2 -2
  29. package/src/duckdb/{src → extension}/core_functions/aggregate/regression/regr_intercept.cpp +6 -2
  30. package/src/duckdb/{src → extension}/core_functions/aggregate/regression/regr_r2.cpp +2 -2
  31. package/src/duckdb/{src → extension}/core_functions/aggregate/regression/regr_slope.cpp +2 -2
  32. package/src/duckdb/{src → extension}/core_functions/aggregate/regression/regr_sxx_syy.cpp +2 -2
  33. package/src/duckdb/{src → extension}/core_functions/aggregate/regression/regr_sxy.cpp +3 -3
  34. package/src/duckdb/extension/core_functions/core_functions_extension.cpp +85 -0
  35. package/src/duckdb/{src → extension}/core_functions/function_list.cpp +30 -51
  36. package/src/duckdb/{src/include/duckdb → extension/core_functions/include}/core_functions/aggregate/algebraic/corr.hpp +3 -7
  37. package/src/duckdb/{src/include/duckdb → extension/core_functions/include}/core_functions/aggregate/algebraic_functions.hpp +1 -1
  38. package/src/duckdb/{src/include/duckdb → extension/core_functions/include}/core_functions/aggregate/distributive_functions.hpp +16 -21
  39. package/src/duckdb/{src/include/duckdb → extension/core_functions/include}/core_functions/aggregate/histogram_helpers.hpp +1 -1
  40. package/src/duckdb/{src/include/duckdb → extension/core_functions/include}/core_functions/aggregate/holistic_functions.hpp +1 -1
  41. package/src/duckdb/{src/include/duckdb → extension/core_functions/include}/core_functions/aggregate/nested_functions.hpp +1 -1
  42. package/src/duckdb/{src/include/duckdb → extension/core_functions/include}/core_functions/aggregate/quantile_helpers.hpp +2 -2
  43. package/src/duckdb/{src/include/duckdb → extension/core_functions/include}/core_functions/aggregate/quantile_sort_tree.hpp +140 -58
  44. package/src/duckdb/{src/include/duckdb → extension/core_functions/include}/core_functions/aggregate/quantile_state.hpp +50 -43
  45. package/src/duckdb/{src/include/duckdb → extension/core_functions/include}/core_functions/aggregate/regression/regr_count.hpp +2 -2
  46. package/src/duckdb/{src/include/duckdb → extension/core_functions/include}/core_functions/aggregate/regression/regr_slope.hpp +3 -7
  47. package/src/duckdb/{src/include/duckdb → extension/core_functions/include}/core_functions/aggregate/regression_functions.hpp +1 -1
  48. package/src/duckdb/{src/include/duckdb → extension/core_functions/include}/core_functions/scalar/array_functions.hpp +1 -1
  49. package/src/duckdb/{src/include/duckdb → extension/core_functions/include}/core_functions/scalar/bit_functions.hpp +1 -1
  50. package/src/duckdb/{src/include/duckdb → extension/core_functions/include}/core_functions/scalar/blob_functions.hpp +1 -10
  51. package/src/duckdb/{src/include/duckdb → extension/core_functions/include}/core_functions/scalar/date_functions.hpp +22 -55
  52. package/src/duckdb/{src/include/duckdb → extension/core_functions/include}/core_functions/scalar/debug_functions.hpp +1 -1
  53. package/src/duckdb/{src/include/duckdb → extension/core_functions/include}/core_functions/scalar/enum_functions.hpp +1 -1
  54. package/src/duckdb/{src/include/duckdb → extension/core_functions/include}/core_functions/scalar/generic_functions.hpp +1 -10
  55. package/src/duckdb/{src/include/duckdb → extension/core_functions/include}/core_functions/scalar/list_functions.hpp +4 -4
  56. package/src/duckdb/{src/include/duckdb → extension/core_functions/include}/core_functions/scalar/map_functions.hpp +1 -10
  57. package/src/duckdb/{src/include/duckdb → extension/core_functions/include}/core_functions/scalar/math_functions.hpp +1 -1
  58. package/src/duckdb/{src/include/duckdb → extension/core_functions/include}/core_functions/scalar/operators_functions.hpp +1 -1
  59. package/src/duckdb/{src/include/duckdb → extension/core_functions/include}/core_functions/scalar/random_functions.hpp +1 -1
  60. package/src/duckdb/{src/include/duckdb → extension/core_functions/include}/core_functions/scalar/string_functions.hpp +10 -103
  61. package/src/duckdb/{src/include/duckdb → extension/core_functions/include}/core_functions/scalar/struct_functions.hpp +1 -19
  62. package/src/duckdb/{src/include/duckdb → extension/core_functions/include}/core_functions/scalar/union_functions.hpp +1 -1
  63. package/src/duckdb/extension/core_functions/include/core_functions_extension.hpp +22 -0
  64. package/src/duckdb/{src → extension}/core_functions/lambda_functions.cpp +1 -1
  65. package/src/duckdb/{src → extension}/core_functions/scalar/array/array_functions.cpp +11 -4
  66. package/src/duckdb/{src → extension}/core_functions/scalar/array/array_value.cpp +2 -2
  67. package/src/duckdb/{src → extension}/core_functions/scalar/bit/bitstring.cpp +12 -5
  68. package/src/duckdb/{src → extension}/core_functions/scalar/blob/base64.cpp +4 -2
  69. package/src/duckdb/{src → extension}/core_functions/scalar/blob/encode.cpp +4 -2
  70. package/src/duckdb/{src → extension}/core_functions/scalar/date/age.cpp +9 -3
  71. package/src/duckdb/extension/core_functions/scalar/date/current.cpp +29 -0
  72. package/src/duckdb/{src → extension}/core_functions/scalar/date/date_diff.cpp +1 -1
  73. package/src/duckdb/{src → extension}/core_functions/scalar/date/date_part.cpp +42 -9
  74. package/src/duckdb/{src → extension}/core_functions/scalar/date/date_sub.cpp +1 -1
  75. package/src/duckdb/{src → extension}/core_functions/scalar/date/date_trunc.cpp +4 -1
  76. package/src/duckdb/{src → extension}/core_functions/scalar/date/epoch.cpp +19 -3
  77. package/src/duckdb/{src → extension}/core_functions/scalar/date/make_date.cpp +40 -5
  78. package/src/duckdb/{src → extension}/core_functions/scalar/date/time_bucket.cpp +4 -1
  79. package/src/duckdb/{src → extension}/core_functions/scalar/date/to_interval.cpp +54 -28
  80. package/src/duckdb/{src → extension}/core_functions/scalar/debug/vector_type.cpp +1 -1
  81. package/src/duckdb/{src → extension}/core_functions/scalar/enum/enum_functions.cpp +2 -7
  82. package/src/duckdb/{src → extension}/core_functions/scalar/generic/alias.cpp +2 -2
  83. package/src/duckdb/{src/function → extension/core_functions}/scalar/generic/binning.cpp +4 -3
  84. package/src/duckdb/{src → extension}/core_functions/scalar/generic/can_implicitly_cast.cpp +1 -1
  85. package/src/duckdb/{src → extension}/core_functions/scalar/generic/current_setting.cpp +1 -1
  86. package/src/duckdb/{src → extension}/core_functions/scalar/generic/hash.cpp +1 -1
  87. package/src/duckdb/{src → extension}/core_functions/scalar/generic/least.cpp +30 -10
  88. package/src/duckdb/{src → extension}/core_functions/scalar/generic/stats.cpp +1 -1
  89. package/src/duckdb/{src → extension}/core_functions/scalar/generic/system_functions.cpp +1 -1
  90. package/src/duckdb/{src → extension}/core_functions/scalar/generic/typeof.cpp +1 -1
  91. package/src/duckdb/{src → extension}/core_functions/scalar/list/array_slice.cpp +93 -88
  92. package/src/duckdb/{src → extension}/core_functions/scalar/list/flatten.cpp +1 -1
  93. package/src/duckdb/{src → extension}/core_functions/scalar/list/list_aggregates.cpp +7 -3
  94. package/src/duckdb/{src → extension}/core_functions/scalar/list/list_distance.cpp +8 -2
  95. package/src/duckdb/{src → extension}/core_functions/scalar/list/list_filter.cpp +3 -3
  96. package/src/duckdb/{src → extension}/core_functions/scalar/list/list_has_any_or_all.cpp +3 -3
  97. package/src/duckdb/{src → extension}/core_functions/scalar/list/list_reduce.cpp +5 -5
  98. package/src/duckdb/{src → extension}/core_functions/scalar/list/list_sort.cpp +1 -1
  99. package/src/duckdb/{src → extension}/core_functions/scalar/list/list_transform.cpp +3 -3
  100. package/src/duckdb/{src → extension}/core_functions/scalar/list/list_value.cpp +3 -3
  101. package/src/duckdb/{src → extension}/core_functions/scalar/list/range.cpp +7 -1
  102. package/src/duckdb/{src → extension}/core_functions/scalar/map/cardinality.cpp +1 -1
  103. package/src/duckdb/{src → extension}/core_functions/scalar/map/map.cpp +5 -4
  104. package/src/duckdb/{src → extension}/core_functions/scalar/map/map_concat.cpp +1 -1
  105. package/src/duckdb/{src → extension}/core_functions/scalar/map/map_entries.cpp +1 -1
  106. package/src/duckdb/{src → extension}/core_functions/scalar/map/map_extract.cpp +13 -25
  107. package/src/duckdb/{src → extension}/core_functions/scalar/map/map_from_entries.cpp +2 -1
  108. package/src/duckdb/{src → extension}/core_functions/scalar/map/map_keys_values.cpp +11 -9
  109. package/src/duckdb/{src → extension}/core_functions/scalar/math/numeric.cpp +83 -37
  110. package/src/duckdb/{src → extension}/core_functions/scalar/operators/bitwise.cpp +19 -1
  111. package/src/duckdb/{src → extension}/core_functions/scalar/random/random.cpp +4 -3
  112. package/src/duckdb/{src → extension}/core_functions/scalar/random/setseed.cpp +2 -1
  113. package/src/duckdb/{src → extension}/core_functions/scalar/string/ascii.cpp +1 -1
  114. package/src/duckdb/{src → extension}/core_functions/scalar/string/bar.cpp +6 -4
  115. package/src/duckdb/{src → extension}/core_functions/scalar/string/chr.cpp +1 -1
  116. package/src/duckdb/{src → extension}/core_functions/scalar/string/damerau_levenshtein.cpp +1 -1
  117. package/src/duckdb/{src → extension}/core_functions/scalar/string/format_bytes.cpp +1 -1
  118. package/src/duckdb/{src → extension}/core_functions/scalar/string/hamming.cpp +1 -1
  119. package/src/duckdb/{src → extension}/core_functions/scalar/string/hex.cpp +7 -3
  120. package/src/duckdb/{src → extension}/core_functions/scalar/string/instr.cpp +4 -4
  121. package/src/duckdb/{src → extension}/core_functions/scalar/string/jaccard.cpp +1 -1
  122. package/src/duckdb/extension/core_functions/scalar/string/jaro_winkler.cpp +112 -0
  123. package/src/duckdb/{src → extension}/core_functions/scalar/string/left_right.cpp +6 -6
  124. package/src/duckdb/{src → extension}/core_functions/scalar/string/levenshtein.cpp +1 -1
  125. package/src/duckdb/{src → extension}/core_functions/scalar/string/pad.cpp +9 -5
  126. package/src/duckdb/{src → extension}/core_functions/scalar/string/parse_path.cpp +4 -4
  127. package/src/duckdb/{src → extension}/core_functions/scalar/string/printf.cpp +3 -1
  128. package/src/duckdb/{src → extension}/core_functions/scalar/string/repeat.cpp +4 -1
  129. package/src/duckdb/{src → extension}/core_functions/scalar/string/replace.cpp +1 -1
  130. package/src/duckdb/{src → extension}/core_functions/scalar/string/reverse.cpp +1 -1
  131. package/src/duckdb/{src → extension}/core_functions/scalar/string/starts_with.cpp +5 -3
  132. package/src/duckdb/{src → extension}/core_functions/scalar/string/to_base.cpp +1 -1
  133. package/src/duckdb/{src → extension}/core_functions/scalar/string/translate.cpp +1 -1
  134. package/src/duckdb/{src → extension}/core_functions/scalar/string/trim.cpp +1 -1
  135. package/src/duckdb/{src → extension}/core_functions/scalar/string/unicode.cpp +1 -1
  136. package/src/duckdb/{src → extension}/core_functions/scalar/string/url_encode.cpp +1 -1
  137. package/src/duckdb/{src → extension}/core_functions/scalar/struct/struct_insert.cpp +25 -31
  138. package/src/duckdb/{src → extension}/core_functions/scalar/union/union_extract.cpp +1 -1
  139. package/src/duckdb/{src → extension}/core_functions/scalar/union/union_tag.cpp +1 -1
  140. package/src/duckdb/{src → extension}/core_functions/scalar/union/union_value.cpp +3 -3
  141. package/src/duckdb/extension/icu/icu-dateadd.cpp +16 -11
  142. package/src/duckdb/extension/icu/icu-datefunc.cpp +2 -2
  143. package/src/duckdb/extension/icu/icu-datepart.cpp +8 -5
  144. package/src/duckdb/extension/icu/icu-datesub.cpp +2 -2
  145. package/src/duckdb/extension/icu/icu-datetrunc.cpp +8 -1
  146. package/src/duckdb/extension/icu/icu-list-range.cpp +2 -2
  147. package/src/duckdb/extension/icu/icu-makedate.cpp +18 -7
  148. package/src/duckdb/extension/icu/icu-strptime.cpp +9 -3
  149. package/src/duckdb/extension/icu/icu-table-range.cpp +2 -2
  150. package/src/duckdb/extension/icu/icu-timebucket.cpp +4 -1
  151. package/src/duckdb/extension/icu/icu-timezone.cpp +67 -1
  152. package/src/duckdb/extension/icu/icu_extension.cpp +60 -5
  153. package/src/duckdb/extension/icu/include/icu-datefunc.hpp +2 -1
  154. package/src/duckdb/extension/icu/third_party/icu/common/bytestriebuilder.cpp +1 -1
  155. package/src/duckdb/extension/icu/third_party/icu/common/dtintrv.cpp +1 -1
  156. package/src/duckdb/extension/icu/third_party/icu/common/filteredbrk.cpp +1 -1
  157. package/src/duckdb/extension/icu/third_party/icu/common/locid.cpp +1 -1
  158. package/src/duckdb/extension/icu/third_party/icu/common/lsr.cpp +1 -1
  159. package/src/duckdb/extension/icu/third_party/icu/common/lsr.h +2 -2
  160. package/src/duckdb/extension/icu/third_party/icu/common/messagepattern.cpp +2 -2
  161. package/src/duckdb/extension/icu/third_party/icu/common/normlzr.cpp +1 -1
  162. package/src/duckdb/extension/icu/third_party/icu/common/rbbinode.h +1 -1
  163. package/src/duckdb/extension/icu/third_party/icu/common/schriter.cpp +1 -1
  164. package/src/duckdb/extension/icu/third_party/icu/common/stringtriebuilder.cpp +8 -8
  165. package/src/duckdb/extension/icu/third_party/icu/common/ucharstriebuilder.cpp +1 -1
  166. package/src/duckdb/extension/icu/third_party/icu/common/uchriter.cpp +1 -1
  167. package/src/duckdb/extension/icu/third_party/icu/common/unicode/brkiter.h +2 -2
  168. package/src/duckdb/extension/icu/third_party/icu/common/unicode/bytestriebuilder.h +1 -1
  169. package/src/duckdb/extension/icu/third_party/icu/common/unicode/chariter.h +3 -3
  170. package/src/duckdb/extension/icu/third_party/icu/common/unicode/dtintrv.h +3 -3
  171. package/src/duckdb/extension/icu/third_party/icu/common/unicode/locid.h +3 -3
  172. package/src/duckdb/extension/icu/third_party/icu/common/unicode/messagepattern.h +4 -4
  173. package/src/duckdb/extension/icu/third_party/icu/common/unicode/normlzr.h +3 -3
  174. package/src/duckdb/extension/icu/third_party/icu/common/unicode/parsepos.h +4 -4
  175. package/src/duckdb/extension/icu/third_party/icu/common/unicode/rbbi.h +2 -2
  176. package/src/duckdb/extension/icu/third_party/icu/common/unicode/schriter.h +1 -1
  177. package/src/duckdb/extension/icu/third_party/icu/common/unicode/strenum.h +2 -2
  178. package/src/duckdb/extension/icu/third_party/icu/common/unicode/stringpiece.h +1 -1
  179. package/src/duckdb/extension/icu/third_party/icu/common/unicode/stringtriebuilder.h +9 -9
  180. package/src/duckdb/extension/icu/third_party/icu/common/unicode/ucharstriebuilder.h +1 -1
  181. package/src/duckdb/extension/icu/third_party/icu/common/unicode/uchriter.h +1 -1
  182. package/src/duckdb/extension/icu/third_party/icu/common/unicode/uniset.h +3 -3
  183. package/src/duckdb/extension/icu/third_party/icu/common/unicode/unistr.h +12 -12
  184. package/src/duckdb/extension/icu/third_party/icu/common/unicode/uobject.h +2 -2
  185. package/src/duckdb/extension/icu/third_party/icu/common/unifiedcache.h +4 -4
  186. package/src/duckdb/extension/icu/third_party/icu/common/uniset.cpp +1 -1
  187. package/src/duckdb/extension/icu/third_party/icu/common/ustr_titlecase_brkiter.cpp +1 -1
  188. package/src/duckdb/extension/icu/third_party/icu/common/ustrenum.cpp +2 -2
  189. package/src/duckdb/extension/icu/third_party/icu/common/uvector.cpp +1 -1
  190. package/src/duckdb/extension/icu/third_party/icu/common/uvector.h +3 -3
  191. package/src/duckdb/extension/icu/third_party/icu/common/uvectr32.cpp +1 -1
  192. package/src/duckdb/extension/icu/third_party/icu/common/uvectr32.h +3 -3
  193. package/src/duckdb/extension/icu/third_party/icu/common/uvectr64.cpp +1 -1
  194. package/src/duckdb/extension/icu/third_party/icu/common/uvectr64.h +3 -3
  195. package/src/duckdb/extension/icu/third_party/icu/i18n/alphaindex.cpp +2 -2
  196. package/src/duckdb/extension/icu/third_party/icu/i18n/calendar.cpp +1 -1
  197. package/src/duckdb/extension/icu/third_party/icu/i18n/choicfmt.cpp +1 -1
  198. package/src/duckdb/extension/icu/third_party/icu/i18n/coleitr.cpp +2 -2
  199. package/src/duckdb/extension/icu/third_party/icu/i18n/coll.cpp +2 -2
  200. package/src/duckdb/extension/icu/third_party/icu/i18n/collationiterator.cpp +1 -1
  201. package/src/duckdb/extension/icu/third_party/icu/i18n/collationiterator.h +2 -2
  202. package/src/duckdb/extension/icu/third_party/icu/i18n/collationsettings.cpp +1 -1
  203. package/src/duckdb/extension/icu/third_party/icu/i18n/collationsettings.h +2 -2
  204. package/src/duckdb/extension/icu/third_party/icu/i18n/currpinf.cpp +1 -1
  205. package/src/duckdb/extension/icu/third_party/icu/i18n/datefmt.cpp +2 -2
  206. package/src/duckdb/extension/icu/third_party/icu/i18n/dcfmtsym.cpp +1 -1
  207. package/src/duckdb/extension/icu/third_party/icu/i18n/decimfmt.cpp +1 -1
  208. package/src/duckdb/extension/icu/third_party/icu/i18n/dtfmtsym.cpp +1 -1
  209. package/src/duckdb/extension/icu/third_party/icu/i18n/dtitvfmt.cpp +1 -1
  210. package/src/duckdb/extension/icu/third_party/icu/i18n/dtitvinf.cpp +1 -1
  211. package/src/duckdb/extension/icu/third_party/icu/i18n/dtptngen.cpp +2 -2
  212. package/src/duckdb/extension/icu/third_party/icu/i18n/dtptngen_impl.h +4 -4
  213. package/src/duckdb/extension/icu/third_party/icu/i18n/dtrule.cpp +2 -2
  214. package/src/duckdb/extension/icu/third_party/icu/i18n/fmtable.cpp +1 -1
  215. package/src/duckdb/extension/icu/third_party/icu/i18n/format.cpp +1 -1
  216. package/src/duckdb/extension/icu/third_party/icu/i18n/fpositer.cpp +1 -1
  217. package/src/duckdb/extension/icu/third_party/icu/i18n/measfmt.cpp +1 -1
  218. package/src/duckdb/extension/icu/third_party/icu/i18n/measunit.cpp +1 -1
  219. package/src/duckdb/extension/icu/third_party/icu/i18n/measure.cpp +1 -1
  220. package/src/duckdb/extension/icu/third_party/icu/i18n/msgfmt.cpp +2 -2
  221. package/src/duckdb/extension/icu/third_party/icu/i18n/nfrs.cpp +1 -1
  222. package/src/duckdb/extension/icu/third_party/icu/i18n/nfrs.h +2 -2
  223. package/src/duckdb/extension/icu/third_party/icu/i18n/nfrule.cpp +1 -1
  224. package/src/duckdb/extension/icu/third_party/icu/i18n/nfrule.h +2 -2
  225. package/src/duckdb/extension/icu/third_party/icu/i18n/nfsubs.cpp +9 -9
  226. package/src/duckdb/extension/icu/third_party/icu/i18n/nfsubs.h +2 -2
  227. package/src/duckdb/extension/icu/third_party/icu/i18n/number_asformat.cpp +1 -1
  228. package/src/duckdb/extension/icu/third_party/icu/i18n/number_asformat.h +1 -1
  229. package/src/duckdb/extension/icu/third_party/icu/i18n/numfmt.cpp +1 -1
  230. package/src/duckdb/extension/icu/third_party/icu/i18n/olsontz.cpp +1 -1
  231. package/src/duckdb/extension/icu/third_party/icu/i18n/olsontz.h +1 -1
  232. package/src/duckdb/extension/icu/third_party/icu/i18n/plurfmt.cpp +2 -2
  233. package/src/duckdb/extension/icu/third_party/icu/i18n/plurrule.cpp +1 -1
  234. package/src/duckdb/extension/icu/third_party/icu/i18n/rbnf.cpp +4 -4
  235. package/src/duckdb/extension/icu/third_party/icu/i18n/rbtz.cpp +2 -2
  236. package/src/duckdb/extension/icu/third_party/icu/i18n/region.cpp +2 -2
  237. package/src/duckdb/extension/icu/third_party/icu/i18n/reldtfmt.cpp +1 -1
  238. package/src/duckdb/extension/icu/third_party/icu/i18n/reldtfmt.h +1 -1
  239. package/src/duckdb/extension/icu/third_party/icu/i18n/rulebasedcollator.cpp +1 -1
  240. package/src/duckdb/extension/icu/third_party/icu/i18n/selfmt.cpp +2 -2
  241. package/src/duckdb/extension/icu/third_party/icu/i18n/simpletz.cpp +1 -1
  242. package/src/duckdb/extension/icu/third_party/icu/i18n/smpdtfmt.cpp +1 -1
  243. package/src/duckdb/extension/icu/third_party/icu/i18n/sortkey.cpp +1 -1
  244. package/src/duckdb/extension/icu/third_party/icu/i18n/timezone.cpp +1 -1
  245. package/src/duckdb/extension/icu/third_party/icu/i18n/tmutamt.cpp +1 -1
  246. package/src/duckdb/extension/icu/third_party/icu/i18n/tzfmt.cpp +1 -1
  247. package/src/duckdb/extension/icu/third_party/icu/i18n/tzgnames.cpp +1 -1
  248. package/src/duckdb/extension/icu/third_party/icu/i18n/tzgnames.h +2 -2
  249. package/src/duckdb/extension/icu/third_party/icu/i18n/tznames.cpp +3 -3
  250. package/src/duckdb/extension/icu/third_party/icu/i18n/tznames_impl.cpp +2 -2
  251. package/src/duckdb/extension/icu/third_party/icu/i18n/tznames_impl.h +2 -2
  252. package/src/duckdb/extension/icu/third_party/icu/i18n/tzrule.cpp +8 -8
  253. package/src/duckdb/extension/icu/third_party/icu/i18n/tztrans.cpp +2 -2
  254. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/alphaindex.h +2 -2
  255. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/calendar.h +2 -2
  256. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/choicfmt.h +1 -1
  257. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/coleitr.h +2 -2
  258. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/coll.h +2 -2
  259. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/currpinf.h +3 -3
  260. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/datefmt.h +1 -1
  261. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/dcfmtsym.h +2 -2
  262. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/decimfmt.h +1 -1
  263. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/dtfmtsym.h +2 -2
  264. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/dtitvfmt.h +3 -3
  265. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/dtitvinf.h +3 -3
  266. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/dtptngen.h +2 -2
  267. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/dtrule.h +2 -2
  268. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/fieldpos.h +4 -4
  269. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/fmtable.h +2 -2
  270. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/format.h +2 -2
  271. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/fpositer.h +2 -2
  272. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/measfmt.h +1 -1
  273. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/measunit.h +2 -2
  274. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/measure.h +1 -1
  275. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/msgfmt.h +2 -2
  276. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/numfmt.h +1 -1
  277. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/plurfmt.h +2 -2
  278. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/plurrule.h +2 -2
  279. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/rbnf.h +1 -1
  280. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/rbtz.h +2 -2
  281. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/region.h +2 -2
  282. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/search.h +2 -2
  283. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/selfmt.h +2 -2
  284. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/simpletz.h +1 -1
  285. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/smpdtfmt.h +1 -1
  286. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/sortkey.h +3 -3
  287. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/stsearch.h +1 -1
  288. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/tblcoll.h +1 -1
  289. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/timezone.h +2 -2
  290. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/tmutamt.h +3 -3
  291. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/tmutfmt.h +2 -2
  292. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/tzfmt.h +1 -1
  293. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/tznames.h +2 -2
  294. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/tzrule.h +8 -8
  295. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/tztrans.h +2 -2
  296. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/vtzone.h +2 -2
  297. package/src/duckdb/extension/icu/third_party/icu/i18n/utf16collationiterator.cpp +2 -2
  298. package/src/duckdb/extension/icu/third_party/icu/i18n/utf16collationiterator.h +2 -2
  299. package/src/duckdb/extension/icu/third_party/icu/i18n/vtzone.cpp +2 -2
  300. package/src/duckdb/extension/json/buffered_json_reader.cpp +6 -1
  301. package/src/duckdb/extension/json/include/buffered_json_reader.hpp +2 -0
  302. package/src/duckdb/extension/json/include/json_common.hpp +14 -10
  303. package/src/duckdb/extension/json/include/json_scan.hpp +48 -7
  304. package/src/duckdb/extension/json/include/json_structure.hpp +2 -1
  305. package/src/duckdb/extension/json/include/json_transform.hpp +5 -2
  306. package/src/duckdb/extension/json/json_functions/copy_json.cpp +1 -1
  307. package/src/duckdb/extension/json/json_functions/json_create.cpp +57 -20
  308. package/src/duckdb/extension/json/json_functions/json_serialize_plan.cpp +7 -6
  309. package/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp +6 -5
  310. package/src/duckdb/extension/json/json_functions/json_structure.cpp +20 -17
  311. package/src/duckdb/extension/json/json_functions/json_transform.cpp +48 -17
  312. package/src/duckdb/extension/json/json_functions/read_json.cpp +83 -34
  313. package/src/duckdb/extension/json/json_functions/read_json_objects.cpp +3 -3
  314. package/src/duckdb/extension/json/json_functions.cpp +14 -16
  315. package/src/duckdb/extension/json/json_scan.cpp +36 -16
  316. package/src/duckdb/extension/json/json_serializer.cpp +1 -1
  317. package/src/duckdb/extension/json/serialize_json.cpp +2 -2
  318. package/src/duckdb/extension/parquet/column_reader.cpp +136 -116
  319. package/src/duckdb/extension/parquet/column_writer.cpp +870 -604
  320. package/src/duckdb/extension/parquet/geo_parquet.cpp +4 -5
  321. package/src/duckdb/extension/parquet/include/boolean_column_reader.hpp +0 -4
  322. package/src/duckdb/extension/parquet/include/column_reader.hpp +24 -19
  323. package/src/duckdb/extension/parquet/include/column_writer.hpp +7 -5
  324. package/src/duckdb/extension/parquet/include/decode_utils.hpp +138 -18
  325. package/src/duckdb/extension/parquet/include/geo_parquet.hpp +4 -3
  326. package/src/duckdb/extension/parquet/include/null_column_reader.hpp +1 -14
  327. package/src/duckdb/extension/parquet/include/parquet_bss_encoder.hpp +45 -0
  328. package/src/duckdb/extension/parquet/include/parquet_crypto.hpp +1 -1
  329. package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +101 -90
  330. package/src/duckdb/extension/parquet/include/parquet_dbp_encoder.hpp +179 -0
  331. package/src/duckdb/extension/parquet/include/parquet_decimal_utils.hpp +2 -3
  332. package/src/duckdb/extension/parquet/include/parquet_dlba_encoder.hpp +48 -0
  333. package/src/duckdb/extension/parquet/include/parquet_extension.hpp +8 -0
  334. package/src/duckdb/extension/parquet/include/parquet_file_metadata_cache.hpp +2 -2
  335. package/src/duckdb/extension/parquet/include/parquet_metadata.hpp +5 -0
  336. package/src/duckdb/extension/parquet/include/parquet_reader.hpp +22 -18
  337. package/src/duckdb/extension/parquet/include/parquet_rle_bp_decoder.hpp +1 -5
  338. package/src/duckdb/extension/parquet/include/parquet_statistics.hpp +87 -3
  339. package/src/duckdb/extension/parquet/include/parquet_writer.hpp +30 -16
  340. package/src/duckdb/extension/parquet/include/resizable_buffer.hpp +1 -0
  341. package/src/duckdb/extension/parquet/include/string_column_reader.hpp +0 -8
  342. package/src/duckdb/extension/parquet/include/struct_column_reader.hpp +1 -1
  343. package/src/duckdb/extension/parquet/include/templated_column_reader.hpp +1 -42
  344. package/src/duckdb/extension/parquet/include/thrift_tools.hpp +13 -1
  345. package/src/duckdb/extension/parquet/include/zstd_file_system.hpp +4 -0
  346. package/src/duckdb/extension/parquet/parquet_extension.cpp +240 -197
  347. package/src/duckdb/extension/parquet/parquet_metadata.cpp +138 -6
  348. package/src/duckdb/extension/parquet/parquet_reader.cpp +155 -79
  349. package/src/duckdb/extension/parquet/parquet_statistics.cpp +258 -38
  350. package/src/duckdb/extension/parquet/parquet_timestamp.cpp +17 -3
  351. package/src/duckdb/extension/parquet/parquet_writer.cpp +65 -34
  352. package/src/duckdb/extension/parquet/serialize_parquet.cpp +4 -0
  353. package/src/duckdb/extension/parquet/zstd_file_system.cpp +13 -0
  354. package/src/duckdb/src/catalog/catalog.cpp +272 -97
  355. package/src/duckdb/src/catalog/catalog_entry/duck_index_entry.cpp +9 -4
  356. package/src/duckdb/src/catalog/catalog_entry/duck_schema_entry.cpp +8 -0
  357. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +145 -95
  358. package/src/duckdb/src/catalog/catalog_entry/scalar_function_catalog_entry.cpp +9 -3
  359. package/src/duckdb/src/catalog/catalog_entry/schema_catalog_entry.cpp +15 -0
  360. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +40 -24
  361. package/src/duckdb/src/catalog/catalog_entry/table_function_catalog_entry.cpp +1 -1
  362. package/src/duckdb/src/catalog/catalog_entry/type_catalog_entry.cpp +2 -2
  363. package/src/duckdb/src/catalog/catalog_entry.cpp +3 -0
  364. package/src/duckdb/src/catalog/catalog_entry_retriever.cpp +60 -5
  365. package/src/duckdb/src/catalog/catalog_search_path.cpp +27 -14
  366. package/src/duckdb/src/catalog/catalog_set.cpp +75 -31
  367. package/src/duckdb/src/catalog/default/default_functions.cpp +13 -8
  368. package/src/duckdb/src/catalog/default/default_views.cpp +1 -0
  369. package/src/duckdb/src/catalog/dependency_manager.cpp +133 -5
  370. package/src/duckdb/src/catalog/duck_catalog.cpp +17 -9
  371. package/src/duckdb/src/common/adbc/adbc.cpp +18 -0
  372. package/src/duckdb/src/common/allocator.cpp +3 -1
  373. package/src/duckdb/src/common/arrow/arrow_appender.cpp +30 -9
  374. package/src/duckdb/src/common/arrow/arrow_converter.cpp +63 -82
  375. package/src/duckdb/src/common/arrow/arrow_merge_event.cpp +4 -3
  376. package/src/duckdb/src/common/arrow/arrow_type_extension.cpp +361 -0
  377. package/src/duckdb/src/common/arrow/arrow_util.cpp +10 -6
  378. package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +6 -2
  379. package/src/duckdb/src/common/arrow/physical_arrow_collector.cpp +2 -1
  380. package/src/duckdb/src/common/arrow/schema_metadata.cpp +27 -14
  381. package/src/duckdb/src/common/assert.cpp +1 -2
  382. package/src/duckdb/src/common/bind_helpers.cpp +1 -1
  383. package/src/duckdb/src/common/box_renderer.cpp +316 -26
  384. package/src/duckdb/src/common/cgroups.cpp +7 -1
  385. package/src/duckdb/src/common/compressed_file_system.cpp +1 -1
  386. package/src/duckdb/src/common/enum_util.cpp +2865 -6882
  387. package/src/duckdb/src/common/enums/compression_type.cpp +12 -0
  388. package/src/duckdb/src/common/enums/metric_type.cpp +24 -0
  389. package/src/duckdb/src/common/enums/optimizer_type.cpp +4 -0
  390. package/src/duckdb/src/common/enums/physical_operator_type.cpp +2 -0
  391. package/src/duckdb/src/common/error_data.cpp +23 -6
  392. package/src/duckdb/src/common/exception/binder_exception.cpp +1 -1
  393. package/src/duckdb/src/common/exception.cpp +20 -28
  394. package/src/duckdb/src/common/extra_type_info.cpp +85 -20
  395. package/src/duckdb/src/common/file_buffer.cpp +5 -2
  396. package/src/duckdb/src/common/file_system.cpp +8 -3
  397. package/src/duckdb/src/common/fsst.cpp +3 -3
  398. package/src/duckdb/src/common/hive_partitioning.cpp +1 -1
  399. package/src/duckdb/src/common/local_file_system.cpp +169 -60
  400. package/src/duckdb/src/common/multi_file_list.cpp +4 -1
  401. package/src/duckdb/src/common/multi_file_reader.cpp +240 -63
  402. package/src/duckdb/src/common/opener_file_system.cpp +37 -0
  403. package/src/duckdb/src/common/operator/cast_operators.cpp +77 -11
  404. package/src/duckdb/src/common/operator/string_cast.cpp +6 -2
  405. package/src/duckdb/src/common/pipe_file_system.cpp +4 -4
  406. package/src/duckdb/src/common/progress_bar/progress_bar.cpp +25 -14
  407. package/src/duckdb/src/common/radix_partitioning.cpp +17 -16
  408. package/src/duckdb/src/common/random_engine.cpp +39 -3
  409. package/src/duckdb/src/common/render_tree.cpp +3 -19
  410. package/src/duckdb/src/common/row_operations/row_external.cpp +1 -1
  411. package/src/duckdb/src/common/row_operations/row_gather.cpp +2 -58
  412. package/src/duckdb/src/common/row_operations/row_matcher.cpp +2 -2
  413. package/src/duckdb/src/common/row_operations/row_radix_scatter.cpp +2 -0
  414. package/src/duckdb/src/common/row_operations/row_scatter.cpp +20 -19
  415. package/src/duckdb/src/common/serializer/buffered_file_writer.cpp +1 -1
  416. package/src/duckdb/src/common/serializer/memory_stream.cpp +36 -0
  417. package/src/duckdb/src/common/sort/comparators.cpp +7 -7
  418. package/src/duckdb/src/common/sort/partition_state.cpp +2 -2
  419. package/src/duckdb/src/common/stacktrace.cpp +127 -0
  420. package/src/duckdb/src/common/string_util.cpp +157 -32
  421. package/src/duckdb/src/common/tree_renderer/text_tree_renderer.cpp +15 -3
  422. package/src/duckdb/src/common/types/column/column_data_allocator.cpp +4 -0
  423. package/src/duckdb/src/common/types/column/column_data_collection.cpp +71 -8
  424. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +27 -6
  425. package/src/duckdb/src/common/types/conflict_manager.cpp +21 -7
  426. package/src/duckdb/src/common/types/date.cpp +39 -25
  427. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +4 -11
  428. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +21 -7
  429. package/src/duckdb/src/common/types/row/tuple_data_collection.cpp +10 -1
  430. package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +17 -17
  431. package/src/duckdb/src/common/types/timestamp.cpp +70 -33
  432. package/src/duckdb/src/common/types/uuid.cpp +11 -0
  433. package/src/duckdb/src/common/types/validity_mask.cpp +16 -5
  434. package/src/duckdb/src/common/types/value.cpp +357 -199
  435. package/src/duckdb/src/common/types/varint.cpp +64 -18
  436. package/src/duckdb/src/common/types/vector.cpp +78 -38
  437. package/src/duckdb/src/common/types.cpp +199 -92
  438. package/src/duckdb/src/common/vector_operations/comparison_operators.cpp +2 -1
  439. package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +32 -5
  440. package/src/duckdb/src/common/vector_operations/vector_hash.cpp +3 -1
  441. package/src/duckdb/src/execution/adaptive_filter.cpp +6 -2
  442. package/src/duckdb/src/execution/aggregate_hashtable.cpp +410 -111
  443. package/src/duckdb/src/execution/column_binding_resolver.cpp +2 -2
  444. package/src/duckdb/src/execution/expression_executor/execute_between.cpp +6 -0
  445. package/src/duckdb/src/execution/expression_executor/execute_cast.cpp +4 -3
  446. package/src/duckdb/src/execution/expression_executor/execute_comparison.cpp +2 -2
  447. package/src/duckdb/src/execution/expression_executor/execute_conjunction.cpp +2 -2
  448. package/src/duckdb/src/execution/expression_executor/execute_function.cpp +1 -0
  449. package/src/duckdb/src/execution/expression_executor/execute_operator.cpp +5 -4
  450. package/src/duckdb/src/execution/expression_executor.cpp +5 -3
  451. package/src/duckdb/src/execution/index/art/art.cpp +208 -72
  452. package/src/duckdb/src/execution/index/art/base_leaf.cpp +1 -1
  453. package/src/duckdb/src/execution/index/art/leaf.cpp +12 -7
  454. package/src/duckdb/src/execution/index/art/node.cpp +2 -1
  455. package/src/duckdb/src/execution/index/art/node256_leaf.cpp +6 -6
  456. package/src/duckdb/src/execution/index/art/plan_art.cpp +50 -55
  457. package/src/duckdb/src/execution/index/art/prefix.cpp +7 -13
  458. package/src/duckdb/src/execution/index/bound_index.cpp +30 -5
  459. package/src/duckdb/src/execution/index/fixed_size_allocator.cpp +3 -5
  460. package/src/duckdb/src/execution/index/fixed_size_buffer.cpp +14 -9
  461. package/src/duckdb/src/execution/join_hashtable.cpp +254 -158
  462. package/src/duckdb/src/execution/operator/aggregate/grouped_aggregate_data.cpp +1 -1
  463. package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +7 -7
  464. package/src/duckdb/src/execution/operator/aggregate/physical_partitioned_aggregate.cpp +226 -0
  465. package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +3 -3
  466. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +3 -3
  467. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +77 -70
  468. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +114 -50
  469. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer.cpp +2 -2
  470. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer_manager.cpp +19 -10
  471. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_file_handle.cpp +22 -15
  472. package/src/duckdb/src/execution/operator/csv_scanner/encode/csv_encoder.cpp +95 -0
  473. package/src/duckdb/src/execution/operator/csv_scanner/scanner/column_count_scanner.cpp +6 -1
  474. package/src/duckdb/src/execution/operator/csv_scanner/scanner/csv_schema.cpp +75 -2
  475. package/src/duckdb/src/execution/operator/csv_scanner/scanner/scanner_boundary.cpp +40 -12
  476. package/src/duckdb/src/execution/operator/csv_scanner/scanner/string_value_scanner.cpp +395 -163
  477. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/csv_sniffer.cpp +20 -23
  478. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/dialect_detection.cpp +115 -49
  479. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/header_detection.cpp +66 -12
  480. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_detection.cpp +20 -23
  481. package/src/duckdb/src/execution/operator/csv_scanner/state_machine/csv_state_machine_cache.cpp +220 -46
  482. package/src/duckdb/src/execution/operator/csv_scanner/table_function/csv_file_scanner.cpp +43 -32
  483. package/src/duckdb/src/execution/operator/csv_scanner/table_function/global_csv_state.cpp +54 -119
  484. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_error.cpp +184 -20
  485. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_reader_options.cpp +83 -21
  486. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_validator.cpp +63 -0
  487. package/src/duckdb/src/execution/operator/helper/physical_reservoir_sample.cpp +7 -4
  488. package/src/duckdb/src/execution/operator/helper/physical_set.cpp +1 -1
  489. package/src/duckdb/src/execution/operator/helper/physical_vacuum.cpp +3 -2
  490. package/src/duckdb/src/execution/operator/helper/physical_verify_vector.cpp +9 -1
  491. package/src/duckdb/src/execution/operator/join/perfect_hash_join_executor.cpp +132 -15
  492. package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +64 -55
  493. package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +284 -154
  494. package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +40 -55
  495. package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +0 -1
  496. package/src/duckdb/src/execution/operator/order/physical_order.cpp +7 -3
  497. package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +298 -227
  498. package/src/duckdb/src/execution/operator/persistent/csv_rejects_table.cpp +5 -2
  499. package/src/duckdb/src/execution/operator/persistent/physical_batch_copy_to_file.cpp +3 -4
  500. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +32 -19
  501. package/src/duckdb/src/execution/operator/persistent/physical_copy_database.cpp +1 -0
  502. package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +6 -0
  503. package/src/duckdb/src/execution/operator/persistent/physical_delete.cpp +58 -19
  504. package/src/duckdb/src/execution/operator/persistent/physical_export.cpp +11 -27
  505. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +308 -119
  506. package/src/duckdb/src/execution/operator/persistent/physical_update.cpp +105 -55
  507. package/src/duckdb/src/execution/operator/projection/physical_tableinout_function.cpp +6 -2
  508. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +1 -1
  509. package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +15 -6
  510. package/src/duckdb/src/execution/operator/scan/physical_table_scan.cpp +92 -50
  511. package/src/duckdb/src/execution/operator/schema/physical_alter.cpp +0 -1
  512. package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +8 -4
  513. package/src/duckdb/src/execution/operator/schema/physical_create_art_index.cpp +54 -22
  514. package/src/duckdb/src/execution/operator/set/physical_union.cpp +5 -1
  515. package/src/duckdb/src/execution/physical_operator.cpp +15 -9
  516. package/src/duckdb/src/execution/physical_plan/plan_aggregate.cpp +101 -12
  517. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +11 -140
  518. package/src/duckdb/src/execution/physical_plan/plan_create_index.cpp +11 -13
  519. package/src/duckdb/src/execution/physical_plan/plan_cte.cpp +1 -1
  520. package/src/duckdb/src/execution/physical_plan/plan_delete.cpp +1 -1
  521. package/src/duckdb/src/execution/physical_plan/plan_delim_join.cpp +1 -1
  522. package/src/duckdb/src/execution/physical_plan/plan_distinct.cpp +6 -5
  523. package/src/duckdb/src/execution/physical_plan/plan_export.cpp +0 -4
  524. package/src/duckdb/src/execution/physical_plan/plan_filter.cpp +1 -1
  525. package/src/duckdb/src/execution/physical_plan/plan_get.cpp +16 -13
  526. package/src/duckdb/src/execution/physical_plan/plan_insert.cpp +1 -1
  527. package/src/duckdb/src/execution/physical_plan/plan_order.cpp +7 -7
  528. package/src/duckdb/src/execution/physical_plan/plan_prepare.cpp +2 -2
  529. package/src/duckdb/src/execution/physical_plan/plan_projection.cpp +1 -1
  530. package/src/duckdb/src/execution/physical_plan/plan_sample.cpp +8 -3
  531. package/src/duckdb/src/execution/physical_plan/plan_set_operation.cpp +1 -2
  532. package/src/duckdb/src/execution/physical_plan/plan_simple.cpp +1 -2
  533. package/src/duckdb/src/execution/physical_plan/plan_top_n.cpp +3 -2
  534. package/src/duckdb/src/execution/physical_plan_generator.cpp +0 -22
  535. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +136 -116
  536. package/src/duckdb/src/execution/sample/base_reservoir_sample.cpp +136 -0
  537. package/src/duckdb/src/execution/sample/reservoir_sample.cpp +930 -0
  538. package/src/duckdb/src/function/aggregate/distributive/count.cpp +6 -12
  539. package/src/duckdb/src/function/aggregate/distributive/{first.cpp → first_last_any.cpp} +37 -18
  540. package/src/duckdb/src/{core_functions → function}/aggregate/distributive/minmax.cpp +19 -12
  541. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +72 -13
  542. package/src/duckdb/src/function/built_in_functions.cpp +85 -2
  543. package/src/duckdb/src/function/cast/decimal_cast.cpp +1 -1
  544. package/src/duckdb/src/function/cast/string_cast.cpp +1 -1
  545. package/src/duckdb/src/function/cast/struct_cast.cpp +81 -49
  546. package/src/duckdb/src/function/cast/union/from_struct.cpp +7 -5
  547. package/src/duckdb/src/function/compression_config.cpp +6 -0
  548. package/src/duckdb/src/function/encoding_function.cpp +134 -0
  549. package/src/duckdb/src/function/function.cpp +8 -13
  550. package/src/duckdb/src/function/function_binder.cpp +100 -21
  551. package/src/duckdb/src/function/function_list.cpp +178 -0
  552. package/src/duckdb/src/function/macro_function.cpp +4 -4
  553. package/src/duckdb/src/function/pragma/pragma_functions.cpp +0 -2
  554. package/src/duckdb/src/function/pragma/pragma_queries.cpp +0 -4
  555. package/src/duckdb/src/{core_functions/core_functions.cpp → function/register_function_list.cpp} +12 -8
  556. package/src/duckdb/src/function/scalar/compressed_materialization/compress_integral.cpp +62 -23
  557. package/src/duckdb/src/function/scalar/compressed_materialization/compress_string.cpp +33 -16
  558. package/src/duckdb/src/function/scalar/compressed_materialization_utils.cpp +21 -0
  559. package/src/duckdb/src/{core_functions/scalar/blob → function/scalar}/create_sort_key.cpp +86 -23
  560. package/src/duckdb/src/{core_functions → function}/scalar/date/strftime.cpp +6 -4
  561. package/src/duckdb/src/function/scalar/generic/constant_or_null.cpp +5 -7
  562. package/src/duckdb/src/{core_functions → function}/scalar/generic/error.cpp +3 -1
  563. package/src/duckdb/src/function/scalar/generic/getvariable.cpp +2 -2
  564. package/src/duckdb/src/function/scalar/list/contains_or_position.cpp +1 -7
  565. package/src/duckdb/src/function/scalar/list/list_extract.cpp +27 -21
  566. package/src/duckdb/src/function/scalar/list/list_resize.cpp +8 -12
  567. package/src/duckdb/src/function/scalar/list/list_select.cpp +1 -4
  568. package/src/duckdb/src/function/scalar/list/list_zip.cpp +6 -6
  569. package/src/duckdb/src/{core_functions → function}/scalar/map/map_contains.cpp +2 -2
  570. package/src/duckdb/src/function/scalar/nested_functions.cpp +0 -11
  571. package/src/duckdb/src/function/scalar/{operators → operator}/add.cpp +2 -1
  572. package/src/duckdb/src/function/scalar/{operators → operator}/arithmetic.cpp +195 -127
  573. package/src/duckdb/src/function/scalar/sequence/nextval.cpp +30 -21
  574. package/src/duckdb/src/function/scalar/strftime_format.cpp +10 -0
  575. package/src/duckdb/src/function/scalar/string/caseconvert.cpp +11 -41
  576. package/src/duckdb/src/function/scalar/string/concat.cpp +22 -20
  577. package/src/duckdb/src/function/scalar/string/concat_ws.cpp +2 -2
  578. package/src/duckdb/src/function/scalar/string/contains.cpp +16 -19
  579. package/src/duckdb/src/function/scalar/string/length.cpp +38 -24
  580. package/src/duckdb/src/function/scalar/string/like.cpp +80 -47
  581. package/src/duckdb/src/{core_functions → function}/scalar/string/md5.cpp +2 -2
  582. package/src/duckdb/src/function/scalar/string/nfc_normalize.cpp +2 -6
  583. package/src/duckdb/src/function/scalar/string/prefix.cpp +0 -4
  584. package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +2 -1
  585. package/src/duckdb/src/function/scalar/string/regexp.cpp +17 -7
  586. package/src/duckdb/src/{core_functions → function}/scalar/string/regexp_escape.cpp +2 -2
  587. package/src/duckdb/src/{core_functions → function}/scalar/string/sha1.cpp +1 -1
  588. package/src/duckdb/src/{core_functions → function}/scalar/string/sha256.cpp +1 -1
  589. package/src/duckdb/src/{core_functions → function}/scalar/string/string_split.cpp +4 -5
  590. package/src/duckdb/src/function/scalar/string/strip_accents.cpp +3 -6
  591. package/src/duckdb/src/function/scalar/string/substring.cpp +14 -13
  592. package/src/duckdb/src/function/scalar/string/suffix.cpp +0 -4
  593. package/src/duckdb/src/function/scalar/struct/struct_concat.cpp +115 -0
  594. package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +35 -31
  595. package/src/duckdb/src/{core_functions → function}/scalar/struct/struct_pack.cpp +7 -7
  596. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +5 -8
  597. package/src/duckdb/src/function/scalar/system/write_log.cpp +170 -0
  598. package/src/duckdb/src/function/scalar_function.cpp +5 -5
  599. package/src/duckdb/src/function/table/arrow/arrow_array_scan_state.cpp +3 -2
  600. package/src/duckdb/src/function/table/arrow/arrow_duck_schema.cpp +287 -1
  601. package/src/duckdb/src/function/table/arrow/arrow_type_info.cpp +6 -6
  602. package/src/duckdb/src/function/table/arrow.cpp +32 -352
  603. package/src/duckdb/src/function/table/arrow_conversion.cpp +43 -7
  604. package/src/duckdb/src/function/table/copy_csv.cpp +38 -23
  605. package/src/duckdb/src/function/table/glob.cpp +1 -1
  606. package/src/duckdb/src/function/table/query_function.cpp +12 -7
  607. package/src/duckdb/src/function/table/read_csv.cpp +114 -46
  608. package/src/duckdb/src/function/table/read_file.cpp +26 -6
  609. package/src/duckdb/src/function/table/sniff_csv.cpp +25 -5
  610. package/src/duckdb/src/function/table/system/duckdb_columns.cpp +1 -1
  611. package/src/duckdb/src/function/table/system/duckdb_constraints.cpp +1 -1
  612. package/src/duckdb/src/function/table/system/duckdb_dependencies.cpp +6 -7
  613. package/src/duckdb/src/function/table/system/duckdb_extensions.cpp +1 -1
  614. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +141 -16
  615. package/src/duckdb/src/function/table/system/duckdb_log.cpp +64 -0
  616. package/src/duckdb/src/function/table/system/duckdb_log_contexts.cpp +65 -0
  617. package/src/duckdb/src/function/table/system/duckdb_memory.cpp +0 -1
  618. package/src/duckdb/src/function/table/system/duckdb_settings.cpp +1 -1
  619. package/src/duckdb/src/function/table/system/duckdb_tables.cpp +1 -13
  620. package/src/duckdb/src/function/table/system/duckdb_types.cpp +1 -1
  621. package/src/duckdb/src/function/table/system/pragma_storage_info.cpp +17 -0
  622. package/src/duckdb/src/function/table/system/pragma_table_info.cpp +6 -0
  623. package/src/duckdb/src/function/table/system/pragma_table_sample.cpp +95 -0
  624. package/src/duckdb/src/function/table/system/test_all_types.cpp +56 -46
  625. package/src/duckdb/src/function/table/system_functions.cpp +3 -0
  626. package/src/duckdb/src/function/table/table_scan.cpp +487 -289
  627. package/src/duckdb/src/function/table/version/pragma_version.cpp +3 -3
  628. package/src/duckdb/src/function/table_function.cpp +10 -6
  629. package/src/duckdb/src/function/window/window_aggregate_function.cpp +248 -0
  630. package/src/duckdb/src/function/window/window_aggregate_states.cpp +48 -0
  631. package/src/duckdb/src/function/window/window_aggregator.cpp +88 -0
  632. package/src/duckdb/src/function/window/window_boundaries_state.cpp +854 -0
  633. package/src/duckdb/src/function/window/window_collection.cpp +146 -0
  634. package/src/duckdb/src/function/window/window_constant_aggregator.cpp +357 -0
  635. package/src/duckdb/src/function/window/window_custom_aggregator.cpp +146 -0
  636. package/src/duckdb/src/function/window/window_distinct_aggregator.cpp +758 -0
  637. package/src/duckdb/src/function/window/window_executor.cpp +99 -0
  638. package/src/duckdb/src/function/window/window_index_tree.cpp +63 -0
  639. package/src/duckdb/src/function/window/window_merge_sort_tree.cpp +275 -0
  640. package/src/duckdb/src/function/window/window_naive_aggregator.cpp +361 -0
  641. package/src/duckdb/src/function/window/window_rank_function.cpp +288 -0
  642. package/src/duckdb/src/function/window/window_rownumber_function.cpp +191 -0
  643. package/src/duckdb/src/function/window/window_segment_tree.cpp +594 -0
  644. package/src/duckdb/src/function/window/window_shared_expressions.cpp +50 -0
  645. package/src/duckdb/src/function/window/window_token_tree.cpp +142 -0
  646. package/src/duckdb/src/function/window/window_value_function.cpp +566 -0
  647. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +74 -17
  648. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_index_entry.hpp +1 -1
  649. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_schema_entry.hpp +2 -0
  650. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +9 -0
  651. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/function_entry.hpp +4 -10
  652. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/pragma_function_catalog_entry.hpp +1 -1
  653. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/scalar_function_catalog_entry.hpp +2 -2
  654. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/schema_catalog_entry.hpp +2 -0
  655. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +18 -3
  656. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_function_catalog_entry.hpp +1 -1
  657. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/type_catalog_entry.hpp +2 -1
  658. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +5 -2
  659. package/src/duckdb/src/include/duckdb/catalog/catalog_entry_retriever.hpp +21 -18
  660. package/src/duckdb/src/include/duckdb/catalog/catalog_search_path.hpp +3 -2
  661. package/src/duckdb/src/include/duckdb/catalog/catalog_set.hpp +10 -2
  662. package/src/duckdb/src/include/duckdb/catalog/dependency_manager.hpp +11 -0
  663. package/src/duckdb/src/include/duckdb/catalog/duck_catalog.hpp +9 -4
  664. package/src/duckdb/src/include/duckdb/common/allocator.hpp +3 -0
  665. package/src/duckdb/src/include/duckdb/common/array_ptr.hpp +8 -0
  666. package/src/duckdb/src/include/duckdb/common/arrow/appender/append_data.hpp +4 -1
  667. package/src/duckdb/src/include/duckdb/common/arrow/appender/list_data.hpp +3 -1
  668. package/src/duckdb/src/include/duckdb/common/arrow/appender/list_view_data.hpp +3 -1
  669. package/src/duckdb/src/include/duckdb/common/arrow/appender/varchar_data.hpp +2 -1
  670. package/src/duckdb/src/include/duckdb/common/arrow/arrow_appender.hpp +7 -3
  671. package/src/duckdb/src/include/duckdb/common/arrow/arrow_converter.hpp +26 -3
  672. package/src/duckdb/src/include/duckdb/common/arrow/arrow_query_result.hpp +1 -1
  673. package/src/duckdb/src/include/duckdb/common/arrow/arrow_type_extension.hpp +144 -0
  674. package/src/duckdb/src/include/duckdb/common/arrow/arrow_util.hpp +5 -2
  675. package/src/duckdb/src/include/duckdb/common/arrow/result_arrow_wrapper.hpp +2 -0
  676. package/src/duckdb/src/include/duckdb/common/arrow/schema_metadata.hpp +11 -4
  677. package/src/duckdb/src/include/duckdb/common/assert.hpp +12 -1
  678. package/src/duckdb/src/include/duckdb/common/atomic_ptr.hpp +102 -0
  679. package/src/duckdb/src/include/duckdb/common/box_renderer.hpp +65 -6
  680. package/src/duckdb/src/include/duckdb/common/chrono.hpp +1 -0
  681. package/src/duckdb/src/include/duckdb/common/column_index.hpp +72 -0
  682. package/src/duckdb/src/include/duckdb/common/enum_util.hpp +120 -0
  683. package/src/duckdb/src/include/duckdb/{core_functions/core_functions.hpp → common/enums/collation_type.hpp} +2 -7
  684. package/src/duckdb/src/include/duckdb/common/enums/compression_type.hpp +5 -2
  685. package/src/duckdb/src/include/duckdb/common/enums/function_errors.hpp +18 -0
  686. package/src/duckdb/src/include/duckdb/common/enums/memory_tag.hpp +3 -2
  687. package/src/duckdb/src/include/duckdb/common/enums/metric_type.hpp +7 -2
  688. package/src/duckdb/src/include/duckdb/common/enums/optimizer_type.hpp +4 -0
  689. package/src/duckdb/src/include/duckdb/common/enums/order_preservation_type.hpp +1 -1
  690. package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +1 -0
  691. package/src/duckdb/src/include/duckdb/common/enums/profiler_format.hpp +1 -1
  692. package/src/duckdb/src/include/duckdb/{core_functions/aggregate → common/enums}/quantile_enum.hpp +3 -1
  693. package/src/duckdb/src/include/duckdb/common/enums/scan_vector_type.hpp +2 -0
  694. package/src/duckdb/src/include/duckdb/common/error_data.hpp +1 -0
  695. package/src/duckdb/src/include/duckdb/common/exception/parser_exception.hpp +4 -0
  696. package/src/duckdb/src/include/duckdb/common/exception.hpp +1 -1
  697. package/src/duckdb/src/include/duckdb/common/extension_type_info.hpp +37 -0
  698. package/src/duckdb/src/include/duckdb/common/extra_operator_info.hpp +7 -2
  699. package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +9 -3
  700. package/src/duckdb/src/include/duckdb/common/fast_mem.hpp +6 -6
  701. package/src/duckdb/src/include/duckdb/common/file_buffer.hpp +19 -10
  702. package/src/duckdb/src/include/duckdb/common/file_opener.hpp +2 -0
  703. package/src/duckdb/src/include/duckdb/common/file_system.hpp +6 -1
  704. package/src/duckdb/src/include/duckdb/common/fsst.hpp +2 -2
  705. package/src/duckdb/src/include/duckdb/common/helper.hpp +6 -0
  706. package/src/duckdb/src/include/duckdb/common/hugeint.hpp +10 -0
  707. package/src/duckdb/src/include/duckdb/common/insertion_order_preserving_map.hpp +12 -2
  708. package/src/duckdb/src/include/duckdb/common/local_file_system.hpp +3 -0
  709. package/src/duckdb/src/include/duckdb/common/multi_file_list.hpp +2 -1
  710. package/src/duckdb/src/include/duckdb/common/multi_file_reader.hpp +147 -27
  711. package/src/duckdb/src/include/duckdb/common/multi_file_reader_options.hpp +4 -0
  712. package/src/duckdb/src/include/duckdb/common/numeric_utils.hpp +2 -7
  713. package/src/duckdb/src/include/duckdb/common/opener_file_system.hpp +16 -5
  714. package/src/duckdb/src/include/duckdb/common/operator/cast_operators.hpp +16 -0
  715. package/src/duckdb/src/include/duckdb/common/optional_idx.hpp +4 -0
  716. package/src/duckdb/src/include/duckdb/common/platform.hpp +34 -3
  717. package/src/duckdb/src/include/duckdb/common/radix_partitioning.hpp +10 -13
  718. package/src/duckdb/src/include/duckdb/common/random_engine.hpp +8 -3
  719. package/src/duckdb/src/include/duckdb/common/row_operations/row_operations.hpp +0 -2
  720. package/src/duckdb/src/include/duckdb/common/serializer/buffered_file_writer.hpp +1 -1
  721. package/src/duckdb/src/include/duckdb/common/serializer/memory_stream.hpp +7 -0
  722. package/src/duckdb/src/include/duckdb/common/serializer/serialization_traits.hpp +1 -0
  723. package/src/duckdb/src/include/duckdb/common/serializer/serializer.hpp +1 -0
  724. package/src/duckdb/src/include/duckdb/common/stacktrace.hpp +25 -0
  725. package/src/duckdb/src/include/duckdb/common/string_util.hpp +30 -2
  726. package/src/duckdb/src/include/duckdb/common/tree_renderer/graphviz_tree_renderer.hpp +1 -1
  727. package/src/duckdb/src/include/duckdb/common/tree_renderer/html_tree_renderer.hpp +1 -1
  728. package/src/duckdb/src/include/duckdb/common/tree_renderer/json_tree_renderer.hpp +1 -1
  729. package/src/duckdb/src/include/duckdb/common/tree_renderer/text_tree_renderer.hpp +3 -2
  730. package/src/duckdb/src/include/duckdb/common/tree_renderer.hpp +2 -0
  731. package/src/duckdb/src/include/duckdb/common/type_util.hpp +8 -0
  732. package/src/duckdb/src/include/duckdb/common/types/column/column_data_allocator.hpp +8 -0
  733. package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection.hpp +13 -2
  734. package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection_segment.hpp +2 -1
  735. package/src/duckdb/src/include/duckdb/common/types/conflict_manager.hpp +21 -4
  736. package/src/duckdb/src/include/duckdb/common/types/data_chunk.hpp +4 -1
  737. package/src/duckdb/src/include/duckdb/common/types/date.hpp +9 -4
  738. package/src/duckdb/src/include/duckdb/common/types/date_lookup_cache.hpp +1 -1
  739. package/src/duckdb/src/include/duckdb/common/types/interval.hpp +58 -10
  740. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +0 -4
  741. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_allocator.hpp +4 -0
  742. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_collection.hpp +4 -0
  743. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +10 -0
  744. package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +43 -16
  745. package/src/duckdb/src/include/duckdb/common/types/uuid.hpp +3 -1
  746. package/src/duckdb/src/include/duckdb/common/types/validity_mask.hpp +63 -21
  747. package/src/duckdb/src/include/duckdb/common/types/value.hpp +62 -16
  748. package/src/duckdb/src/include/duckdb/common/types/varint.hpp +13 -0
  749. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +34 -7
  750. package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +15 -0
  751. package/src/duckdb/src/include/duckdb/common/types.hpp +12 -7
  752. package/src/duckdb/src/include/duckdb/common/uhugeint.hpp +10 -0
  753. package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +12 -13
  754. package/src/duckdb/src/include/duckdb/common/vector_operations/binary_executor.hpp +27 -0
  755. package/src/duckdb/src/include/duckdb/common/vector_operations/unary_executor.hpp +111 -4
  756. package/src/duckdb/src/include/duckdb/common/vector_operations/vector_operations.hpp +0 -1
  757. package/src/duckdb/src/include/duckdb/execution/adaptive_filter.hpp +2 -0
  758. package/src/duckdb/src/include/duckdb/execution/aggregate_hashtable.hpp +48 -10
  759. package/src/duckdb/src/include/duckdb/execution/executor.hpp +2 -1
  760. package/src/duckdb/src/include/duckdb/execution/expression_executor.hpp +0 -1
  761. package/src/duckdb/src/include/duckdb/execution/ht_entry.hpp +25 -27
  762. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +28 -18
  763. package/src/duckdb/src/include/duckdb/execution/index/art/node.hpp +1 -0
  764. package/src/duckdb/src/include/duckdb/execution/index/art/prefix.hpp +2 -2
  765. package/src/duckdb/src/include/duckdb/execution/index/bound_index.hpp +23 -16
  766. package/src/duckdb/src/include/duckdb/execution/index/fixed_size_allocator.hpp +4 -0
  767. package/src/duckdb/src/include/duckdb/execution/index/fixed_size_buffer.hpp +2 -2
  768. package/src/duckdb/src/include/duckdb/execution/join_hashtable.hpp +25 -16
  769. package/src/duckdb/src/include/duckdb/execution/merge_sort_tree.hpp +15 -10
  770. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_hash_aggregate.hpp +1 -1
  771. package/src/duckdb/src/include/duckdb/execution/operator/{persistent/physical_fixed_batch_copy.hpp → aggregate/physical_partitioned_aggregate.hpp} +25 -27
  772. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_ungrouped_aggregate.hpp +1 -2
  773. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_window.hpp +5 -4
  774. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/ungrouped_aggregate_state.hpp +21 -1
  775. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/base_scanner.hpp +38 -9
  776. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_buffer.hpp +8 -9
  777. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_buffer_manager.hpp +7 -1
  778. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_error.hpp +29 -23
  779. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_file_handle.hpp +15 -13
  780. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_file_scanner.hpp +13 -5
  781. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_option.hpp +2 -1
  782. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_reader_options.hpp +24 -10
  783. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_schema.hpp +36 -1
  784. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_state.hpp +21 -13
  785. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_state_machine.hpp +52 -22
  786. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_state_machine_cache.hpp +6 -6
  787. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_validator.hpp +58 -0
  788. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/encode/csv_encoder.hpp +62 -0
  789. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/global_csv_state.hpp +6 -3
  790. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/scanner_boundary.hpp +16 -6
  791. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/sniffer/csv_sniffer.hpp +9 -4
  792. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/state_machine_options.hpp +8 -4
  793. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/string_value_scanner.hpp +55 -10
  794. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_batch_collector.hpp +2 -2
  795. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_buffered_batch_collector.hpp +2 -2
  796. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_limit.hpp +2 -2
  797. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_reservoir_sample.hpp +1 -1
  798. package/src/duckdb/src/include/duckdb/execution/operator/join/join_filter_pushdown.hpp +28 -7
  799. package/src/duckdb/src/include/duckdb/execution/operator/join/perfect_hash_join_executor.hpp +6 -9
  800. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_hash_join.hpp +17 -16
  801. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_iejoin.hpp +1 -1
  802. package/src/duckdb/src/include/duckdb/execution/operator/order/physical_order.hpp +7 -3
  803. package/src/duckdb/src/include/duckdb/execution/operator/order/physical_top_n.hpp +5 -1
  804. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_copy_to_file.hpp +2 -2
  805. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_insert.hpp +2 -2
  806. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_insert.hpp +55 -4
  807. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_update.hpp +2 -0
  808. package/src/duckdb/src/include/duckdb/execution/operator/projection/physical_tableinout_function.hpp +2 -2
  809. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_positional_scan.hpp +2 -1
  810. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_table_scan.hpp +10 -9
  811. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_art_index.hpp +16 -13
  812. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_cte.hpp +0 -4
  813. package/src/duckdb/src/include/duckdb/execution/partition_info.hpp +79 -0
  814. package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +20 -9
  815. package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +1 -11
  816. package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +0 -2
  817. package/src/duckdb/src/include/duckdb/execution/progress_data.hpp +58 -0
  818. package/src/duckdb/src/include/duckdb/execution/radix_partitioned_hashtable.hpp +2 -1
  819. package/src/duckdb/src/include/duckdb/execution/reservoir_sample.hpp +160 -31
  820. package/src/duckdb/src/include/duckdb/function/aggregate/distributive_function_utils.hpp +31 -0
  821. package/src/duckdb/src/include/duckdb/function/aggregate/distributive_functions.hpp +61 -10
  822. package/src/duckdb/src/include/duckdb/{core_functions → function}/aggregate/minmax_n_helpers.hpp +1 -1
  823. package/src/duckdb/src/include/duckdb/{core_functions → function}/aggregate/sort_key_helpers.hpp +2 -2
  824. package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +47 -27
  825. package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +2 -0
  826. package/src/duckdb/src/include/duckdb/function/built_in_functions.hpp +3 -10
  827. package/src/duckdb/src/include/duckdb/function/cast/bound_cast_data.hpp +13 -6
  828. package/src/duckdb/src/include/duckdb/function/compression/compression.hpp +15 -0
  829. package/src/duckdb/src/include/duckdb/function/compression_function.hpp +29 -6
  830. package/src/duckdb/src/include/duckdb/{core_functions → function}/create_sort_key.hpp +4 -1
  831. package/src/duckdb/src/include/duckdb/function/encoding_function.hpp +78 -0
  832. package/src/duckdb/src/include/duckdb/function/function.hpp +22 -1
  833. package/src/duckdb/src/include/duckdb/function/function_binder.hpp +3 -0
  834. package/src/duckdb/src/include/duckdb/function/function_list.hpp +39 -0
  835. package/src/duckdb/src/include/duckdb/function/function_set.hpp +13 -7
  836. package/src/duckdb/src/include/duckdb/{core_functions → function}/lambda_functions.hpp +1 -1
  837. package/src/duckdb/src/include/duckdb/function/partition_stats.hpp +36 -0
  838. package/src/duckdb/src/include/duckdb/function/register_function_list_helper.hpp +69 -0
  839. package/src/duckdb/src/include/duckdb/function/scalar/compressed_materialization_functions.hpp +154 -23
  840. package/src/duckdb/src/include/duckdb/function/scalar/compressed_materialization_utils.hpp +45 -0
  841. package/src/duckdb/src/include/duckdb/function/scalar/date_functions.hpp +45 -0
  842. package/src/duckdb/src/include/duckdb/function/scalar/generic_common.hpp +36 -0
  843. package/src/duckdb/src/include/duckdb/function/scalar/generic_functions.hpp +32 -23
  844. package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +1 -1
  845. package/src/duckdb/src/include/duckdb/function/scalar/list_functions.hpp +156 -0
  846. package/src/duckdb/src/include/duckdb/function/scalar/map_functions.hpp +27 -0
  847. package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +4 -45
  848. package/src/duckdb/src/include/duckdb/function/scalar/operator_functions.hpp +102 -0
  849. package/src/duckdb/src/include/duckdb/function/scalar/operators.hpp +2 -16
  850. package/src/duckdb/src/include/duckdb/function/scalar/sequence_functions.hpp +16 -25
  851. package/src/duckdb/src/include/duckdb/function/scalar/sequence_utils.hpp +38 -0
  852. package/src/duckdb/src/include/duckdb/function/scalar/strftime_format.hpp +1 -0
  853. package/src/duckdb/src/include/duckdb/function/scalar/string_common.hpp +49 -0
  854. package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +401 -76
  855. package/src/duckdb/src/include/duckdb/function/scalar/struct_functions.hpp +63 -0
  856. package/src/duckdb/src/include/duckdb/function/scalar/struct_utils.hpp +33 -0
  857. package/src/duckdb/src/include/duckdb/function/scalar/system_functions.hpp +45 -0
  858. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +17 -8
  859. package/src/duckdb/src/include/duckdb/function/table/arrow/arrow_duck_schema.hpp +59 -6
  860. package/src/duckdb/src/include/duckdb/function/table/arrow/arrow_type_info.hpp +12 -9
  861. package/src/duckdb/src/include/duckdb/function/table/arrow/enum/arrow_type_info_type.hpp +2 -0
  862. package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +18 -13
  863. package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +7 -4
  864. package/src/duckdb/src/include/duckdb/function/table/system_functions.hpp +14 -0
  865. package/src/duckdb/src/include/duckdb/function/table/table_scan.hpp +15 -10
  866. package/src/duckdb/src/include/duckdb/function/table_function.hpp +94 -18
  867. package/src/duckdb/src/include/duckdb/{core_functions → function}/to_interval.hpp +1 -1
  868. package/src/duckdb/src/include/duckdb/function/window/window_aggregate_function.hpp +44 -0
  869. package/src/duckdb/src/include/duckdb/function/window/window_aggregate_states.hpp +56 -0
  870. package/src/duckdb/src/include/duckdb/function/window/window_aggregator.hpp +194 -0
  871. package/src/duckdb/src/include/duckdb/function/window/window_boundaries_state.hpp +153 -0
  872. package/src/duckdb/src/include/duckdb/function/window/window_collection.hpp +146 -0
  873. package/src/duckdb/src/include/duckdb/function/window/window_constant_aggregator.hpp +38 -0
  874. package/src/duckdb/src/include/duckdb/function/window/window_custom_aggregator.hpp +32 -0
  875. package/src/duckdb/src/include/duckdb/function/window/window_distinct_aggregator.hpp +39 -0
  876. package/src/duckdb/src/include/duckdb/function/window/window_executor.hpp +122 -0
  877. package/src/duckdb/src/include/duckdb/function/window/window_index_tree.hpp +42 -0
  878. package/src/duckdb/src/include/duckdb/function/window/window_merge_sort_tree.hpp +108 -0
  879. package/src/duckdb/src/include/duckdb/function/window/window_naive_aggregator.hpp +33 -0
  880. package/src/duckdb/src/include/duckdb/function/window/window_rank_function.hpp +63 -0
  881. package/src/duckdb/src/include/duckdb/function/window/window_rownumber_function.hpp +43 -0
  882. package/src/duckdb/src/include/duckdb/function/window/window_segment_tree.hpp +31 -0
  883. package/src/duckdb/src/include/duckdb/function/window/window_shared_expressions.hpp +76 -0
  884. package/src/duckdb/src/include/duckdb/function/window/window_token_tree.hpp +46 -0
  885. package/src/duckdb/src/include/duckdb/function/window/window_value_function.hpp +79 -0
  886. package/src/duckdb/src/include/duckdb/logging/http_logger.hpp +2 -0
  887. package/src/duckdb/src/include/duckdb/logging/log_manager.hpp +81 -0
  888. package/src/duckdb/src/include/duckdb/logging/log_storage.hpp +127 -0
  889. package/src/duckdb/src/include/duckdb/logging/logger.hpp +287 -0
  890. package/src/duckdb/src/include/duckdb/logging/logging.hpp +83 -0
  891. package/src/duckdb/src/include/duckdb/main/appender.hpp +41 -18
  892. package/src/duckdb/src/include/duckdb/main/attached_database.hpp +6 -3
  893. package/src/duckdb/src/include/duckdb/main/capi/capi_internal.hpp +7 -2
  894. package/src/duckdb/src/include/duckdb/main/capi/extension_api.hpp +317 -231
  895. package/src/duckdb/src/include/duckdb/main/client_config.hpp +17 -1
  896. package/src/duckdb/src/include/duckdb/main/client_context.hpp +28 -6
  897. package/src/duckdb/src/include/duckdb/main/client_context_file_opener.hpp +1 -0
  898. package/src/duckdb/src/include/duckdb/main/client_context_wrapper.hpp +5 -0
  899. package/src/duckdb/src/include/duckdb/main/client_data.hpp +3 -2
  900. package/src/duckdb/src/include/duckdb/main/client_properties.hpp +8 -3
  901. package/src/duckdb/src/include/duckdb/main/config.hpp +52 -8
  902. package/src/duckdb/src/include/duckdb/main/connection.hpp +18 -3
  903. package/src/duckdb/src/include/duckdb/main/database.hpp +8 -7
  904. package/src/duckdb/src/include/duckdb/main/database_file_opener.hpp +5 -1
  905. package/src/duckdb/src/include/duckdb/main/database_manager.hpp +3 -0
  906. package/src/duckdb/src/include/duckdb/main/db_instance_cache.hpp +1 -0
  907. package/src/duckdb/src/include/duckdb/main/extension.hpp +8 -2
  908. package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +548 -9
  909. package/src/duckdb/src/include/duckdb/main/extension_helper.hpp +18 -0
  910. package/src/duckdb/src/include/duckdb/main/extension_util.hpp +12 -7
  911. package/src/duckdb/src/include/duckdb/main/prepared_statement.hpp +3 -3
  912. package/src/duckdb/src/include/duckdb/main/profiling_info.hpp +2 -2
  913. package/src/duckdb/src/include/duckdb/main/query_profiler.hpp +8 -4
  914. package/src/duckdb/src/include/duckdb/main/relation/create_table_relation.hpp +3 -1
  915. package/src/duckdb/src/include/duckdb/main/relation/delete_relation.hpp +2 -2
  916. package/src/duckdb/src/include/duckdb/main/relation/subquery_relation.hpp +1 -4
  917. package/src/duckdb/src/include/duckdb/main/relation/table_function_relation.hpp +3 -1
  918. package/src/duckdb/src/include/duckdb/main/relation/table_relation.hpp +3 -0
  919. package/src/duckdb/src/include/duckdb/main/relation/update_relation.hpp +3 -2
  920. package/src/duckdb/src/include/duckdb/main/relation/value_relation.hpp +7 -0
  921. package/src/duckdb/src/include/duckdb/main/relation/view_relation.hpp +1 -0
  922. package/src/duckdb/src/include/duckdb/main/relation/write_parquet_relation.hpp +1 -1
  923. package/src/duckdb/src/include/duckdb/main/relation.hpp +45 -9
  924. package/src/duckdb/src/include/duckdb/main/secret/secret_storage.hpp +20 -22
  925. package/src/duckdb/src/include/duckdb/main/settings.hpp +613 -378
  926. package/src/duckdb/src/include/duckdb/main/table_description.hpp +14 -4
  927. package/src/duckdb/src/include/duckdb/optimizer/build_probe_side_optimizer.hpp +1 -3
  928. package/src/duckdb/src/include/duckdb/optimizer/column_lifetime_analyzer.hpp +14 -7
  929. package/src/duckdb/src/include/duckdb/optimizer/common_aggregate_optimizer.hpp +2 -2
  930. package/src/duckdb/src/include/duckdb/optimizer/empty_result_pullup.hpp +27 -0
  931. package/src/duckdb/src/include/duckdb/optimizer/expression_heuristics.hpp +1 -1
  932. package/src/duckdb/src/include/duckdb/optimizer/filter_combiner.hpp +6 -1
  933. package/src/duckdb/src/include/duckdb/optimizer/filter_pushdown.hpp +2 -0
  934. package/src/duckdb/src/include/duckdb/optimizer/in_clause_rewriter.hpp +3 -0
  935. package/src/duckdb/src/include/duckdb/optimizer/join_filter_pushdown_optimizer.hpp +5 -0
  936. package/src/duckdb/src/include/duckdb/optimizer/join_order/plan_enumerator.hpp +2 -0
  937. package/src/duckdb/src/include/duckdb/optimizer/join_order/relation_statistics_helper.hpp +2 -2
  938. package/src/duckdb/src/include/duckdb/optimizer/late_materialization.hpp +45 -0
  939. package/src/duckdb/src/include/duckdb/optimizer/matcher/expression_matcher.hpp +23 -0
  940. package/src/duckdb/src/include/duckdb/optimizer/matcher/type_matcher.hpp +18 -0
  941. package/src/duckdb/src/include/duckdb/optimizer/optimizer.hpp +9 -0
  942. package/src/duckdb/src/include/duckdb/optimizer/remove_unused_columns.hpp +33 -11
  943. package/src/duckdb/src/include/duckdb/optimizer/rule/distinct_aggregate_optimizer.hpp +34 -0
  944. package/src/duckdb/src/include/duckdb/optimizer/sampling_pushdown.hpp +25 -0
  945. package/src/duckdb/src/include/duckdb/optimizer/statistics_propagator.hpp +3 -1
  946. package/src/duckdb/src/include/duckdb/optimizer/sum_rewriter.hpp +37 -0
  947. package/src/duckdb/src/include/duckdb/optimizer/topn_optimizer.hpp +4 -0
  948. package/src/duckdb/src/include/duckdb/parallel/event.hpp +3 -0
  949. package/src/duckdb/src/include/duckdb/parallel/pipeline.hpp +1 -1
  950. package/src/duckdb/src/include/duckdb/parallel/pipeline_executor.hpp +26 -8
  951. package/src/duckdb/src/include/duckdb/parallel/thread_context.hpp +3 -0
  952. package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +51 -3
  953. package/src/duckdb/src/include/duckdb/parser/constraints/unique_constraint.hpp +28 -44
  954. package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +3 -0
  955. package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +2 -2
  956. package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +1 -1
  957. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +2 -2
  958. package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +6 -6
  959. package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +11 -1
  960. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +12 -0
  961. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_info.hpp +1 -0
  962. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_scalar_function_info.hpp +3 -2
  963. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +22 -1
  964. package/src/duckdb/src/include/duckdb/parser/parsed_data/attach_info.hpp +3 -4
  965. package/src/duckdb/src/include/duckdb/parser/parsed_data/comment_on_column_info.hpp +1 -1
  966. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_function_info.hpp +16 -12
  967. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_index_info.hpp +3 -3
  968. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_type_info.hpp +5 -5
  969. package/src/duckdb/src/include/duckdb/parser/parsed_data/sample_options.hpp +12 -3
  970. package/src/duckdb/src/include/duckdb/parser/parser.hpp +3 -0
  971. package/src/duckdb/src/include/duckdb/parser/qualified_name.hpp +17 -57
  972. package/src/duckdb/src/include/duckdb/parser/qualified_name_set.hpp +19 -3
  973. package/src/duckdb/src/include/duckdb/parser/simplified_token.hpp +2 -1
  974. package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +12 -9
  975. package/src/duckdb/src/include/duckdb/parser/tokens.hpp +1 -1
  976. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +2 -2
  977. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +45 -28
  978. package/src/duckdb/src/include/duckdb/planner/binder.hpp +23 -11
  979. package/src/duckdb/src/include/duckdb/planner/binding_alias.hpp +44 -0
  980. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +1 -0
  981. package/src/duckdb/src/include/duckdb/planner/collation_binding.hpp +4 -3
  982. package/src/duckdb/src/include/duckdb/planner/constraints/bound_unique_constraint.hpp +11 -10
  983. package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +2 -0
  984. package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +1 -0
  985. package/src/duckdb/src/include/duckdb/planner/expression/bound_subquery_expression.hpp +4 -4
  986. package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +6 -0
  987. package/src/duckdb/src/include/duckdb/planner/expression.hpp +2 -0
  988. package/src/duckdb/src/include/duckdb/planner/expression_binder/having_binder.hpp +2 -0
  989. package/src/duckdb/src/include/duckdb/planner/expression_binder/index_binder.hpp +9 -4
  990. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +8 -2
  991. package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +1 -2
  992. package/src/duckdb/src/include/duckdb/planner/filter/dynamic_filter.hpp +48 -0
  993. package/src/duckdb/src/include/duckdb/planner/filter/in_filter.hpp +37 -0
  994. package/src/duckdb/src/include/duckdb/planner/filter/optional_filter.hpp +35 -0
  995. package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +4 -0
  996. package/src/duckdb/src/include/duckdb/planner/logical_operator_visitor.hpp +3 -0
  997. package/src/duckdb/src/include/duckdb/planner/operator/logical_comparison_join.hpp +2 -0
  998. package/src/duckdb/src/include/duckdb/planner/operator/logical_create_index.hpp +9 -9
  999. package/src/duckdb/src/include/duckdb/planner/operator/logical_filter.hpp +4 -0
  1000. package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +16 -7
  1001. package/src/duckdb/src/include/duckdb/planner/operator/logical_insert.hpp +2 -0
  1002. package/src/duckdb/src/include/duckdb/planner/operator/logical_join.hpp +4 -0
  1003. package/src/duckdb/src/include/duckdb/planner/operator/logical_order.hpp +5 -1
  1004. package/src/duckdb/src/include/duckdb/planner/operator/logical_top_n.hpp +5 -3
  1005. package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +14 -6
  1006. package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +12 -8
  1007. package/src/duckdb/src/include/duckdb/storage/arena_allocator.hpp +1 -0
  1008. package/src/duckdb/src/include/duckdb/storage/block_manager.hpp +3 -0
  1009. package/src/duckdb/src/include/duckdb/storage/buffer/block_handle.hpp +82 -26
  1010. package/src/duckdb/src/include/duckdb/storage/buffer/buffer_handle.hpp +1 -1
  1011. package/src/duckdb/src/include/duckdb/storage/buffer/buffer_pool.hpp +10 -3
  1012. package/src/duckdb/src/include/duckdb/storage/buffer_manager.hpp +2 -1
  1013. package/src/duckdb/src/include/duckdb/storage/checkpoint/string_checkpoint_state.hpp +4 -13
  1014. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_compress.hpp +14 -15
  1015. package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_constants.hpp +1 -1
  1016. package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_compress.hpp +13 -15
  1017. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_compress.hpp +1 -1
  1018. package/src/duckdb/src/include/duckdb/storage/compression/dictionary/analyze.hpp +46 -0
  1019. package/src/duckdb/src/include/duckdb/storage/compression/dictionary/common.hpp +60 -0
  1020. package/src/duckdb/src/include/duckdb/storage/compression/dictionary/compression.hpp +61 -0
  1021. package/src/duckdb/src/include/duckdb/storage/compression/dictionary/decompression.hpp +50 -0
  1022. package/src/duckdb/src/include/duckdb/storage/compression/empty_validity.hpp +100 -0
  1023. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +1 -1
  1024. package/src/duckdb/src/include/duckdb/storage/compression/roaring/appender.hpp +150 -0
  1025. package/src/duckdb/src/include/duckdb/storage/compression/roaring/roaring.hpp +618 -0
  1026. package/src/duckdb/src/include/duckdb/storage/data_table.hpp +53 -31
  1027. package/src/duckdb/src/include/duckdb/storage/index.hpp +2 -3
  1028. package/src/duckdb/src/include/duckdb/storage/object_cache.hpp +0 -1
  1029. package/src/duckdb/src/include/duckdb/storage/segment/uncompressed.hpp +4 -1
  1030. package/src/duckdb/src/include/duckdb/storage/standard_buffer_manager.hpp +3 -3
  1031. package/src/duckdb/src/include/duckdb/storage/statistics/column_statistics.hpp +1 -1
  1032. package/src/duckdb/src/include/duckdb/storage/statistics/distinct_statistics.hpp +5 -4
  1033. package/src/duckdb/src/include/duckdb/storage/statistics/numeric_stats.hpp +16 -1
  1034. package/src/duckdb/src/include/duckdb/storage/statistics/string_stats.hpp +2 -1
  1035. package/src/duckdb/src/include/duckdb/storage/storage_index.hpp +70 -0
  1036. package/src/duckdb/src/include/duckdb/storage/storage_info.hpp +5 -7
  1037. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +4 -3
  1038. package/src/duckdb/src/include/duckdb/storage/storage_options.hpp +23 -0
  1039. package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +34 -6
  1040. package/src/duckdb/src/include/duckdb/storage/table/append_state.hpp +2 -0
  1041. package/src/duckdb/src/include/duckdb/storage/table/array_column_data.hpp +2 -2
  1042. package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +2 -1
  1043. package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +39 -10
  1044. package/src/duckdb/src/include/duckdb/storage/table/column_data_checkpointer.hpp +56 -14
  1045. package/src/duckdb/src/include/duckdb/storage/table/column_segment.hpp +35 -29
  1046. package/src/duckdb/src/include/duckdb/storage/table/delete_state.hpp +1 -1
  1047. package/src/duckdb/src/include/duckdb/storage/table/list_column_data.hpp +1 -1
  1048. package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +7 -1
  1049. package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +19 -6
  1050. package/src/duckdb/src/include/duckdb/storage/table/row_version_manager.hpp +2 -1
  1051. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +29 -6
  1052. package/src/duckdb/src/include/duckdb/storage/table/segment_tree.hpp +10 -10
  1053. package/src/duckdb/src/include/duckdb/storage/table/standard_column_data.hpp +5 -0
  1054. package/src/duckdb/src/include/duckdb/storage/table/table_index_list.hpp +26 -19
  1055. package/src/duckdb/src/include/duckdb/storage/table/table_statistics.hpp +8 -1
  1056. package/src/duckdb/src/include/duckdb/storage/table/update_segment.hpp +16 -14
  1057. package/src/duckdb/src/include/duckdb/storage/table/validity_column_data.hpp +2 -0
  1058. package/src/duckdb/src/include/duckdb/storage/table_io_manager.hpp +3 -0
  1059. package/src/duckdb/src/include/duckdb/storage/table_storage_info.hpp +1 -0
  1060. package/src/duckdb/src/include/duckdb/storage/temporary_file_manager.hpp +228 -61
  1061. package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +14 -10
  1062. package/src/duckdb/src/include/duckdb/transaction/commit_state.hpp +3 -1
  1063. package/src/duckdb/src/include/duckdb/transaction/duck_transaction.hpp +3 -2
  1064. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +1 -0
  1065. package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +19 -17
  1066. package/src/duckdb/src/include/duckdb/transaction/rollback_state.hpp +5 -2
  1067. package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +1 -2
  1068. package/src/duckdb/src/include/duckdb/transaction/undo_buffer.hpp +13 -8
  1069. package/src/duckdb/src/include/duckdb/transaction/undo_buffer_allocator.hpp +79 -0
  1070. package/src/duckdb/src/include/duckdb/transaction/update_info.hpp +43 -13
  1071. package/src/duckdb/src/include/duckdb/transaction/wal_write_state.hpp +4 -1
  1072. package/src/duckdb/src/include/duckdb/verification/copied_statement_verifier.hpp +4 -2
  1073. package/src/duckdb/src/include/duckdb/verification/deserialized_statement_verifier.hpp +4 -2
  1074. package/src/duckdb/src/include/duckdb/verification/external_statement_verifier.hpp +4 -2
  1075. package/src/duckdb/src/include/duckdb/verification/fetch_row_verifier.hpp +4 -2
  1076. package/src/duckdb/src/include/duckdb/verification/no_operator_caching_verifier.hpp +4 -2
  1077. package/src/duckdb/src/include/duckdb/verification/parsed_statement_verifier.hpp +4 -2
  1078. package/src/duckdb/src/include/duckdb/verification/prepared_statement_verifier.hpp +7 -3
  1079. package/src/duckdb/src/include/duckdb/verification/statement_verifier.hpp +11 -5
  1080. package/src/duckdb/src/include/duckdb/verification/unoptimized_statement_verifier.hpp +4 -2
  1081. package/src/duckdb/src/include/duckdb.h +424 -41
  1082. package/src/duckdb/src/include/duckdb_extension.h +301 -195
  1083. package/src/duckdb/src/logging/log_manager.cpp +157 -0
  1084. package/src/duckdb/src/logging/log_storage.cpp +209 -0
  1085. package/src/duckdb/src/logging/logger.cpp +211 -0
  1086. package/src/duckdb/src/logging/logging.cpp +42 -0
  1087. package/src/duckdb/src/main/appender.cpp +187 -45
  1088. package/src/duckdb/src/main/attached_database.cpp +16 -8
  1089. package/src/duckdb/src/main/capi/appender-c.cpp +47 -4
  1090. package/src/duckdb/src/main/capi/arrow-c.cpp +9 -4
  1091. package/src/duckdb/src/main/capi/config-c.cpp +17 -4
  1092. package/src/duckdb/src/main/capi/datetime-c.cpp +15 -0
  1093. package/src/duckdb/src/main/capi/duckdb-c.cpp +54 -13
  1094. package/src/duckdb/src/main/capi/duckdb_value-c.cpp +212 -4
  1095. package/src/duckdb/src/main/capi/helper-c.cpp +3 -0
  1096. package/src/duckdb/src/main/capi/prepared-c.cpp +26 -7
  1097. package/src/duckdb/src/main/capi/replacement_scan-c.cpp +1 -1
  1098. package/src/duckdb/src/main/capi/result-c.cpp +3 -0
  1099. package/src/duckdb/src/main/capi/table_description-c.cpp +43 -10
  1100. package/src/duckdb/src/main/capi/threading-c.cpp +4 -4
  1101. package/src/duckdb/src/main/client_context.cpp +125 -51
  1102. package/src/duckdb/src/main/client_context_file_opener.cpp +4 -0
  1103. package/src/duckdb/src/main/client_context_wrapper.cpp +4 -0
  1104. package/src/duckdb/src/main/client_data.cpp +1 -1
  1105. package/src/duckdb/src/main/client_verify.cpp +39 -20
  1106. package/src/duckdb/src/main/config.cpp +266 -74
  1107. package/src/duckdb/src/main/connection.cpp +53 -13
  1108. package/src/duckdb/src/main/database.cpp +39 -18
  1109. package/src/duckdb/src/main/database_manager.cpp +12 -11
  1110. package/src/duckdb/src/main/db_instance_cache.cpp +14 -7
  1111. package/src/duckdb/src/main/extension/extension_helper.cpp +24 -23
  1112. package/src/duckdb/src/main/extension/extension_install.cpp +19 -7
  1113. package/src/duckdb/src/main/extension/extension_load.cpp +91 -41
  1114. package/src/duckdb/src/main/extension/extension_util.cpp +40 -19
  1115. package/src/duckdb/src/main/extension.cpp +20 -11
  1116. package/src/duckdb/src/main/profiling_info.cpp +19 -5
  1117. package/src/duckdb/src/main/query_profiler.cpp +135 -36
  1118. package/src/duckdb/src/main/query_result.cpp +2 -1
  1119. package/src/duckdb/src/main/relation/aggregate_relation.cpp +3 -3
  1120. package/src/duckdb/src/main/relation/create_table_relation.cpp +5 -4
  1121. package/src/duckdb/src/main/relation/create_view_relation.cpp +2 -2
  1122. package/src/duckdb/src/main/relation/cross_product_relation.cpp +2 -2
  1123. package/src/duckdb/src/main/relation/delete_relation.cpp +2 -2
  1124. package/src/duckdb/src/main/relation/delim_get_relation.cpp +1 -1
  1125. package/src/duckdb/src/main/relation/distinct_relation.cpp +1 -1
  1126. package/src/duckdb/src/main/relation/explain_relation.cpp +1 -1
  1127. package/src/duckdb/src/main/relation/filter_relation.cpp +1 -1
  1128. package/src/duckdb/src/main/relation/insert_relation.cpp +1 -1
  1129. package/src/duckdb/src/main/relation/join_relation.cpp +5 -5
  1130. package/src/duckdb/src/main/relation/order_relation.cpp +1 -1
  1131. package/src/duckdb/src/main/relation/projection_relation.cpp +3 -3
  1132. package/src/duckdb/src/main/relation/query_relation.cpp +1 -1
  1133. package/src/duckdb/src/main/relation/read_csv_relation.cpp +58 -20
  1134. package/src/duckdb/src/main/relation/setop_relation.cpp +2 -2
  1135. package/src/duckdb/src/main/relation/subquery_relation.cpp +3 -8
  1136. package/src/duckdb/src/main/relation/table_function_relation.cpp +10 -1
  1137. package/src/duckdb/src/main/relation/table_relation.cpp +19 -3
  1138. package/src/duckdb/src/main/relation/update_relation.cpp +2 -2
  1139. package/src/duckdb/src/main/relation/value_relation.cpp +42 -2
  1140. package/src/duckdb/src/main/relation/view_relation.cpp +8 -2
  1141. package/src/duckdb/src/main/relation/write_csv_relation.cpp +1 -1
  1142. package/src/duckdb/src/main/relation/write_parquet_relation.cpp +1 -1
  1143. package/src/duckdb/src/main/relation.cpp +49 -28
  1144. package/src/duckdb/src/main/secret/secret_manager.cpp +1 -1
  1145. package/src/duckdb/src/main/secret/secret_storage.cpp +6 -4
  1146. package/src/duckdb/src/main/settings/autogenerated_settings.cpp +1102 -0
  1147. package/src/duckdb/src/main/settings/custom_settings.cpp +1343 -0
  1148. package/src/duckdb/src/optimizer/build_probe_side_optimizer.cpp +60 -37
  1149. package/src/duckdb/src/optimizer/column_binding_replacer.cpp +1 -1
  1150. package/src/duckdb/src/optimizer/column_lifetime_analyzer.cpp +126 -72
  1151. package/src/duckdb/src/optimizer/common_aggregate_optimizer.cpp +22 -6
  1152. package/src/duckdb/src/optimizer/compressed_materialization/compress_aggregate.cpp +3 -3
  1153. package/src/duckdb/src/optimizer/compressed_materialization/compress_distinct.cpp +2 -2
  1154. package/src/duckdb/src/optimizer/compressed_materialization.cpp +3 -3
  1155. package/src/duckdb/src/optimizer/cse_optimizer.cpp +7 -7
  1156. package/src/duckdb/src/optimizer/deliminator.cpp +6 -5
  1157. package/src/duckdb/src/optimizer/empty_result_pullup.cpp +96 -0
  1158. package/src/duckdb/src/optimizer/expression_heuristics.cpp +11 -3
  1159. package/src/duckdb/src/optimizer/expression_rewriter.cpp +9 -2
  1160. package/src/duckdb/src/optimizer/filter_combiner.cpp +190 -88
  1161. package/src/duckdb/src/optimizer/filter_pushdown.cpp +6 -5
  1162. package/src/duckdb/src/optimizer/in_clause_rewriter.cpp +25 -9
  1163. package/src/duckdb/src/optimizer/join_filter_pushdown_optimizer.cpp +170 -72
  1164. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +5 -4
  1165. package/src/duckdb/src/optimizer/join_order/plan_enumerator.cpp +3 -1
  1166. package/src/duckdb/src/optimizer/join_order/query_graph_manager.cpp +7 -7
  1167. package/src/duckdb/src/optimizer/join_order/relation_manager.cpp +15 -6
  1168. package/src/duckdb/src/optimizer/join_order/relation_statistics_helper.cpp +37 -22
  1169. package/src/duckdb/src/optimizer/late_materialization.cpp +414 -0
  1170. package/src/duckdb/src/optimizer/limit_pushdown.cpp +1 -0
  1171. package/src/duckdb/src/optimizer/matcher/expression_matcher.cpp +30 -2
  1172. package/src/duckdb/src/optimizer/optimizer.cpp +67 -7
  1173. package/src/duckdb/src/optimizer/pullup/pullup_filter.cpp +3 -3
  1174. package/src/duckdb/src/optimizer/pullup/pullup_projection.cpp +2 -2
  1175. package/src/duckdb/src/optimizer/pullup/pullup_set_operation.cpp +1 -1
  1176. package/src/duckdb/src/optimizer/pushdown/pushdown_aggregate.cpp +2 -2
  1177. package/src/duckdb/src/optimizer/pushdown/pushdown_filter.cpp +1 -1
  1178. package/src/duckdb/src/optimizer/pushdown/pushdown_left_join.cpp +1 -1
  1179. package/src/duckdb/src/optimizer/pushdown/pushdown_mark_join.cpp +3 -3
  1180. package/src/duckdb/src/optimizer/pushdown/pushdown_projection.cpp +5 -3
  1181. package/src/duckdb/src/optimizer/pushdown/pushdown_set_operation.cpp +1 -1
  1182. package/src/duckdb/src/optimizer/pushdown/pushdown_unnest.cpp +52 -0
  1183. package/src/duckdb/src/optimizer/pushdown/pushdown_window.cpp +2 -2
  1184. package/src/duckdb/src/optimizer/regex_range_filter.cpp +1 -1
  1185. package/src/duckdb/src/optimizer/remove_duplicate_groups.cpp +1 -1
  1186. package/src/duckdb/src/optimizer/remove_unused_columns.cpp +168 -38
  1187. package/src/duckdb/src/optimizer/rule/arithmetic_simplification.cpp +2 -1
  1188. package/src/duckdb/src/optimizer/rule/comparison_simplification.cpp +8 -5
  1189. package/src/duckdb/src/optimizer/rule/conjunction_simplification.cpp +2 -2
  1190. package/src/duckdb/src/optimizer/rule/constant_folding.cpp +2 -2
  1191. package/src/duckdb/src/optimizer/rule/distinct_aggregate_optimizer.cpp +65 -0
  1192. package/src/duckdb/src/optimizer/rule/distributivity.cpp +2 -2
  1193. package/src/duckdb/src/optimizer/rule/enum_comparison.cpp +2 -1
  1194. package/src/duckdb/src/optimizer/rule/equal_or_null_simplification.cpp +4 -3
  1195. package/src/duckdb/src/optimizer/rule/in_clause_simplification_rule.cpp +3 -3
  1196. package/src/duckdb/src/optimizer/rule/like_optimizations.cpp +3 -1
  1197. package/src/duckdb/src/optimizer/rule/move_constants.cpp +9 -9
  1198. package/src/duckdb/src/optimizer/rule/regex_optimizations.cpp +4 -3
  1199. package/src/duckdb/src/optimizer/rule/timestamp_comparison.cpp +1 -1
  1200. package/src/duckdb/src/optimizer/sampling_pushdown.cpp +24 -0
  1201. package/src/duckdb/src/optimizer/statistics/expression/propagate_comparison.cpp +1 -1
  1202. package/src/duckdb/src/optimizer/statistics/expression/propagate_conjunction.cpp +1 -1
  1203. package/src/duckdb/src/optimizer/statistics/expression/propagate_operator.cpp +1 -1
  1204. package/src/duckdb/src/optimizer/statistics/operator/propagate_aggregate.cpp +74 -0
  1205. package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +10 -7
  1206. package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +3 -3
  1207. package/src/duckdb/src/optimizer/statistics/operator/propagate_join.cpp +3 -3
  1208. package/src/duckdb/src/optimizer/statistics/operator/propagate_window.cpp +3 -0
  1209. package/src/duckdb/src/optimizer/sum_rewriter.cpp +174 -0
  1210. package/src/duckdb/src/optimizer/topn_optimizer.cpp +71 -0
  1211. package/src/duckdb/src/optimizer/unnest_rewriter.cpp +5 -5
  1212. package/src/duckdb/src/parallel/event.cpp +4 -0
  1213. package/src/duckdb/src/parallel/executor.cpp +11 -29
  1214. package/src/duckdb/src/parallel/executor_task.cpp +8 -3
  1215. package/src/duckdb/src/parallel/pipeline.cpp +15 -8
  1216. package/src/duckdb/src/parallel/pipeline_executor.cpp +67 -43
  1217. package/src/duckdb/src/parallel/thread_context.cpp +12 -1
  1218. package/src/duckdb/src/parser/column_definition.cpp +3 -3
  1219. package/src/duckdb/src/parser/constraints/unique_constraint.cpp +72 -9
  1220. package/src/duckdb/src/parser/expression/columnref_expression.cpp +15 -3
  1221. package/src/duckdb/src/parser/expression/conjunction_expression.cpp +1 -1
  1222. package/src/duckdb/src/parser/expression/function_expression.cpp +1 -1
  1223. package/src/duckdb/src/parser/expression/lambda_expression.cpp +3 -3
  1224. package/src/duckdb/src/parser/expression/lambdaref_expression.cpp +1 -1
  1225. package/src/duckdb/src/parser/expression/star_expression.cpp +46 -2
  1226. package/src/duckdb/src/parser/expression/window_expression.cpp +24 -1
  1227. package/src/duckdb/src/parser/parsed_data/alter_info.cpp +26 -2
  1228. package/src/duckdb/src/parser/parsed_data/alter_scalar_function_info.cpp +5 -3
  1229. package/src/duckdb/src/parser/parsed_data/alter_table_info.cpp +29 -1
  1230. package/src/duckdb/src/parser/parsed_data/attach_info.cpp +6 -6
  1231. package/src/duckdb/src/parser/parsed_data/create_aggregate_function_info.cpp +1 -1
  1232. package/src/duckdb/src/parser/parsed_data/create_function_info.cpp +17 -0
  1233. package/src/duckdb/src/parser/parsed_data/create_index_info.cpp +16 -15
  1234. package/src/duckdb/src/parser/parsed_data/create_macro_info.cpp +1 -1
  1235. package/src/duckdb/src/parser/parsed_data/create_pragma_function_info.cpp +1 -1
  1236. package/src/duckdb/src/parser/parsed_data/create_scalar_function_info.cpp +3 -2
  1237. package/src/duckdb/src/parser/parsed_data/create_schema_info.cpp +1 -1
  1238. package/src/duckdb/src/parser/parsed_data/create_table_function_info.cpp +1 -1
  1239. package/src/duckdb/src/parser/parsed_data/create_table_info.cpp +1 -0
  1240. package/src/duckdb/src/parser/parsed_data/create_type_info.cpp +4 -4
  1241. package/src/duckdb/src/parser/parsed_data/load_info.cpp +1 -0
  1242. package/src/duckdb/src/parser/parsed_data/sample_options.cpp +31 -1
  1243. package/src/duckdb/src/parser/parsed_expression.cpp +1 -1
  1244. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +4 -1
  1245. package/src/duckdb/src/parser/parser.cpp +129 -0
  1246. package/src/duckdb/src/parser/qualified_name.cpp +99 -0
  1247. package/src/duckdb/src/parser/query_error_context.cpp +35 -6
  1248. package/src/duckdb/src/parser/query_node/select_node.cpp +4 -4
  1249. package/src/duckdb/src/parser/statement/delete_statement.cpp +6 -1
  1250. package/src/duckdb/src/parser/statement/insert_statement.cpp +4 -3
  1251. package/src/duckdb/src/parser/statement/update_statement.cpp +6 -1
  1252. package/src/duckdb/src/parser/tableref/pivotref.cpp +2 -2
  1253. package/src/duckdb/src/parser/tableref.cpp +2 -2
  1254. package/src/duckdb/src/parser/transform/constraint/transform_constraint.cpp +16 -24
  1255. package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +1 -1
  1256. package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +5 -5
  1257. package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +61 -13
  1258. package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +10 -4
  1259. package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +2 -2
  1260. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +30 -3
  1261. package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +1 -1
  1262. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +25 -6
  1263. package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +1 -1
  1264. package/src/duckdb/src/parser/transform/helpers/transform_sample.cpp +10 -3
  1265. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +4 -3
  1266. package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +18 -3
  1267. package/src/duckdb/src/parser/transform/statement/transform_comment_on.cpp +1 -1
  1268. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +0 -1
  1269. package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +5 -5
  1270. package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +26 -12
  1271. package/src/duckdb/src/parser/transform/statement/transform_create_table_as.cpp +11 -3
  1272. package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +1 -1
  1273. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +2 -0
  1274. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +3 -3
  1275. package/src/duckdb/src/parser/transform/statement/transform_prepare.cpp +4 -4
  1276. package/src/duckdb/src/parser/transform/statement/transform_set.cpp +2 -2
  1277. package/src/duckdb/src/parser/transform/statement/transform_show.cpp +21 -3
  1278. package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +8 -6
  1279. package/src/duckdb/src/parser/transformer.cpp +2 -2
  1280. package/src/duckdb/src/planner/bind_context.cpp +308 -136
  1281. package/src/duckdb/src/planner/binder/expression/bind_aggregate_expression.cpp +30 -31
  1282. package/src/duckdb/src/planner/binder/expression/bind_between_expression.cpp +4 -2
  1283. package/src/duckdb/src/planner/binder/expression/bind_columnref_expression.cpp +102 -94
  1284. package/src/duckdb/src/planner/binder/expression/bind_comparison_expression.cpp +7 -5
  1285. package/src/duckdb/src/planner/binder/expression/bind_conjunction_expression.cpp +1 -1
  1286. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +7 -7
  1287. package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +10 -10
  1288. package/src/duckdb/src/planner/binder/expression/bind_macro_expression.cpp +24 -6
  1289. package/src/duckdb/src/planner/binder/expression/bind_operator_expression.cpp +23 -15
  1290. package/src/duckdb/src/planner/binder/expression/bind_parameter_expression.cpp +1 -1
  1291. package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +97 -19
  1292. package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +74 -16
  1293. package/src/duckdb/src/planner/binder/expression/bind_unnest_expression.cpp +6 -6
  1294. package/src/duckdb/src/planner/binder/expression/bind_window_expression.cpp +49 -15
  1295. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +32 -23
  1296. package/src/duckdb/src/planner/binder/query_node/bind_setop_node.cpp +20 -3
  1297. package/src/duckdb/src/planner/binder/query_node/bind_table_macro_node.cpp +2 -2
  1298. package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +3 -0
  1299. package/src/duckdb/src/planner/binder/query_node/plan_setop.cpp +6 -5
  1300. package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +38 -19
  1301. package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +2 -12
  1302. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +117 -412
  1303. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +423 -144
  1304. package/src/duckdb/src/planner/binder/statement/bind_delete.cpp +1 -1
  1305. package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +5 -0
  1306. package/src/duckdb/src/planner/binder/statement/bind_execute.cpp +1 -1
  1307. package/src/duckdb/src/planner/binder/statement/bind_export.cpp +0 -4
  1308. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +31 -13
  1309. package/src/duckdb/src/planner/binder/statement/bind_pragma.cpp +1 -1
  1310. package/src/duckdb/src/planner/binder/statement/bind_simple.cpp +96 -27
  1311. package/src/duckdb/src/planner/binder/statement/bind_summarize.cpp +1 -1
  1312. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +5 -3
  1313. package/src/duckdb/src/planner/binder/statement/bind_vacuum.cpp +7 -6
  1314. package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +36 -9
  1315. package/src/duckdb/src/planner/binder/tableref/bind_joinref.cpp +34 -34
  1316. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +72 -35
  1317. package/src/duckdb/src/planner/binder/tableref/bind_showref.cpp +99 -18
  1318. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +23 -11
  1319. package/src/duckdb/src/planner/binder/tableref/plan_joinref.cpp +22 -19
  1320. package/src/duckdb/src/planner/binder.cpp +23 -45
  1321. package/src/duckdb/src/planner/binding_alias.cpp +69 -0
  1322. package/src/duckdb/src/planner/bound_parameter_map.cpp +1 -1
  1323. package/src/duckdb/src/planner/bound_result_modifier.cpp +6 -2
  1324. package/src/duckdb/src/planner/collation_binding.cpp +38 -4
  1325. package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +17 -5
  1326. package/src/duckdb/src/planner/expression/bound_expression.cpp +1 -1
  1327. package/src/duckdb/src/planner/expression/bound_function_expression.cpp +8 -1
  1328. package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +2 -2
  1329. package/src/duckdb/src/planner/expression/bound_window_expression.cpp +24 -4
  1330. package/src/duckdb/src/planner/expression.cpp +7 -1
  1331. package/src/duckdb/src/planner/expression_binder/aggregate_binder.cpp +1 -1
  1332. package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +2 -2
  1333. package/src/duckdb/src/planner/expression_binder/group_binder.cpp +2 -2
  1334. package/src/duckdb/src/planner/expression_binder/having_binder.cpp +16 -0
  1335. package/src/duckdb/src/planner/expression_binder/index_binder.cpp +53 -1
  1336. package/src/duckdb/src/planner/expression_binder/lateral_binder.cpp +3 -3
  1337. package/src/duckdb/src/planner/expression_binder/order_binder.cpp +8 -8
  1338. package/src/duckdb/src/planner/expression_binder/relation_binder.cpp +1 -1
  1339. package/src/duckdb/src/planner/expression_binder/select_bind_state.cpp +2 -2
  1340. package/src/duckdb/src/planner/expression_binder/table_function_binder.cpp +1 -1
  1341. package/src/duckdb/src/planner/expression_binder/update_binder.cpp +1 -1
  1342. package/src/duckdb/src/planner/expression_binder.cpp +7 -7
  1343. package/src/duckdb/src/planner/expression_iterator.cpp +6 -3
  1344. package/src/duckdb/src/planner/filter/constant_filter.cpp +17 -2
  1345. package/src/duckdb/src/planner/filter/dynamic_filter.cpp +68 -0
  1346. package/src/duckdb/src/planner/filter/in_filter.cpp +84 -0
  1347. package/src/duckdb/src/planner/filter/null_filter.cpp +1 -2
  1348. package/src/duckdb/src/planner/filter/optional_filter.cpp +29 -0
  1349. package/src/duckdb/src/planner/filter/struct_filter.cpp +11 -6
  1350. package/src/duckdb/src/planner/joinside.cpp +6 -5
  1351. package/src/duckdb/src/planner/logical_operator.cpp +4 -1
  1352. package/src/duckdb/src/planner/logical_operator_visitor.cpp +68 -2
  1353. package/src/duckdb/src/planner/operator/logical_comparison_join.cpp +23 -0
  1354. package/src/duckdb/src/planner/operator/logical_create_index.cpp +16 -12
  1355. package/src/duckdb/src/planner/operator/logical_filter.cpp +1 -1
  1356. package/src/duckdb/src/planner/operator/logical_get.cpp +48 -25
  1357. package/src/duckdb/src/planner/operator/logical_insert.cpp +1 -1
  1358. package/src/duckdb/src/planner/operator/logical_join.cpp +1 -1
  1359. package/src/duckdb/src/planner/operator/logical_order.cpp +4 -11
  1360. package/src/duckdb/src/planner/operator/logical_top_n.cpp +7 -0
  1361. package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +33 -5
  1362. package/src/duckdb/src/planner/subquery/rewrite_correlated_expressions.cpp +2 -2
  1363. package/src/duckdb/src/planner/table_binding.cpp +74 -36
  1364. package/src/duckdb/src/planner/table_filter.cpp +5 -8
  1365. package/src/duckdb/src/storage/arena_allocator.cpp +5 -4
  1366. package/src/duckdb/src/storage/buffer/block_handle.cpp +88 -17
  1367. package/src/duckdb/src/storage/buffer/block_manager.cpp +34 -26
  1368. package/src/duckdb/src/storage/buffer/buffer_handle.cpp +2 -2
  1369. package/src/duckdb/src/storage/buffer/buffer_pool.cpp +70 -49
  1370. package/src/duckdb/src/storage/buffer_manager.cpp +4 -0
  1371. package/src/duckdb/src/storage/checkpoint_manager.cpp +24 -5
  1372. package/src/duckdb/src/storage/compression/bitpacking.cpp +14 -16
  1373. package/src/duckdb/src/storage/compression/dictionary/analyze.cpp +54 -0
  1374. package/src/duckdb/src/storage/compression/dictionary/common.cpp +90 -0
  1375. package/src/duckdb/src/storage/compression/dictionary/compression.cpp +174 -0
  1376. package/src/duckdb/src/storage/compression/dictionary/decompression.cpp +115 -0
  1377. package/src/duckdb/src/storage/compression/dictionary_compression.cpp +53 -545
  1378. package/src/duckdb/src/storage/compression/empty_validity.cpp +15 -0
  1379. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +25 -16
  1380. package/src/duckdb/src/storage/compression/fsst.cpp +101 -47
  1381. package/src/duckdb/src/storage/compression/numeric_constant.cpp +92 -2
  1382. package/src/duckdb/src/storage/compression/rle.cpp +216 -46
  1383. package/src/duckdb/src/storage/compression/roaring/analyze.cpp +179 -0
  1384. package/src/duckdb/src/storage/compression/roaring/common.cpp +282 -0
  1385. package/src/duckdb/src/storage/compression/roaring/compress.cpp +481 -0
  1386. package/src/duckdb/src/storage/compression/roaring/metadata.cpp +262 -0
  1387. package/src/duckdb/src/storage/compression/roaring/scan.cpp +364 -0
  1388. package/src/duckdb/src/storage/compression/string_uncompressed.cpp +47 -65
  1389. package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +102 -39
  1390. package/src/duckdb/src/storage/compression/zstd.cpp +1049 -0
  1391. package/src/duckdb/src/storage/data_table.cpp +312 -172
  1392. package/src/duckdb/src/storage/local_storage.cpp +104 -46
  1393. package/src/duckdb/src/storage/metadata/metadata_manager.cpp +1 -1
  1394. package/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +7 -3
  1395. package/src/duckdb/src/storage/serialization/serialize_nodes.cpp +138 -58
  1396. package/src/duckdb/src/storage/serialization/serialize_parse_info.cpp +14 -0
  1397. package/src/duckdb/src/storage/serialization/serialize_parsed_expression.cpp +19 -8
  1398. package/src/duckdb/src/storage/serialization/serialize_statement.cpp +2 -0
  1399. package/src/duckdb/src/storage/serialization/serialize_table_filter.cpp +43 -0
  1400. package/src/duckdb/src/storage/serialization/serialize_types.cpp +32 -5
  1401. package/src/duckdb/src/storage/single_file_block_manager.cpp +6 -8
  1402. package/src/duckdb/src/storage/standard_buffer_manager.cpp +82 -71
  1403. package/src/duckdb/src/storage/statistics/column_statistics.cpp +3 -3
  1404. package/src/duckdb/src/storage/statistics/distinct_statistics.cpp +18 -17
  1405. package/src/duckdb/src/storage/statistics/numeric_stats.cpp +34 -22
  1406. package/src/duckdb/src/storage/statistics/string_stats.cpp +14 -3
  1407. package/src/duckdb/src/storage/storage_info.cpp +72 -10
  1408. package/src/duckdb/src/storage/storage_manager.cpp +41 -47
  1409. package/src/duckdb/src/storage/table/array_column_data.cpp +7 -1
  1410. package/src/duckdb/src/storage/table/column_checkpoint_state.cpp +10 -9
  1411. package/src/duckdb/src/storage/table/column_data.cpp +105 -43
  1412. package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +307 -132
  1413. package/src/duckdb/src/storage/table/column_segment.cpp +36 -13
  1414. package/src/duckdb/src/storage/table/list_column_data.cpp +4 -4
  1415. package/src/duckdb/src/storage/table/row_group.cpp +159 -66
  1416. package/src/duckdb/src/storage/table/row_group_collection.cpp +157 -68
  1417. package/src/duckdb/src/storage/table/row_version_manager.cpp +33 -10
  1418. package/src/duckdb/src/storage/table/scan_state.cpp +21 -7
  1419. package/src/duckdb/src/storage/table/standard_column_data.cpp +68 -5
  1420. package/src/duckdb/src/storage/table/struct_column_data.cpp +42 -4
  1421. package/src/duckdb/src/storage/table/table_statistics.cpp +91 -5
  1422. package/src/duckdb/src/storage/table/update_segment.cpp +287 -210
  1423. package/src/duckdb/src/storage/table_index_list.cpp +55 -58
  1424. package/src/duckdb/src/storage/temporary_file_manager.cpp +412 -149
  1425. package/src/duckdb/src/storage/wal_replay.cpp +132 -48
  1426. package/src/duckdb/src/storage/write_ahead_log.cpp +75 -48
  1427. package/src/duckdb/src/transaction/cleanup_state.cpp +0 -1
  1428. package/src/duckdb/src/transaction/commit_state.cpp +23 -14
  1429. package/src/duckdb/src/transaction/duck_transaction.cpp +29 -25
  1430. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +18 -6
  1431. package/src/duckdb/src/transaction/meta_transaction.cpp +3 -2
  1432. package/src/duckdb/src/transaction/rollback_state.cpp +5 -2
  1433. package/src/duckdb/src/transaction/transaction_context.cpp +9 -1
  1434. package/src/duckdb/src/transaction/undo_buffer.cpp +35 -27
  1435. package/src/duckdb/src/transaction/undo_buffer_allocator.cpp +72 -0
  1436. package/src/duckdb/src/transaction/wal_write_state.cpp +12 -10
  1437. package/src/duckdb/src/verification/copied_statement_verifier.cpp +7 -4
  1438. package/src/duckdb/src/verification/deserialized_statement_verifier.cpp +7 -5
  1439. package/src/duckdb/src/verification/external_statement_verifier.cpp +7 -4
  1440. package/src/duckdb/src/verification/fetch_row_verifier.cpp +7 -4
  1441. package/src/duckdb/src/verification/no_operator_caching_verifier.cpp +8 -4
  1442. package/src/duckdb/src/verification/parsed_statement_verifier.cpp +7 -4
  1443. package/src/duckdb/src/verification/prepared_statement_verifier.cpp +16 -12
  1444. package/src/duckdb/src/verification/statement_verifier.cpp +20 -15
  1445. package/src/duckdb/src/verification/unoptimized_statement_verifier.cpp +7 -4
  1446. package/src/duckdb/third_party/fsst/libfsst.hpp +1 -0
  1447. package/src/duckdb/third_party/httplib/httplib.hpp +15 -22
  1448. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +4 -2
  1449. package/src/duckdb/third_party/libpg_query/pg_functions.cpp +2 -4
  1450. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +14278 -13832
  1451. package/src/duckdb/third_party/parquet/parquet_types.cpp +3410 -1686
  1452. package/src/duckdb/third_party/parquet/parquet_types.h +1585 -1204
  1453. package/src/duckdb/third_party/skiplist/SkipList.h +0 -1
  1454. package/src/duckdb/third_party/snappy/snappy-stubs-internal.h +13 -15
  1455. package/src/duckdb/third_party/zstd/common/debug.cpp +36 -0
  1456. package/src/duckdb/third_party/zstd/common/entropy_common.cpp +173 -49
  1457. package/src/duckdb/third_party/zstd/common/error_private.cpp +11 -3
  1458. package/src/duckdb/third_party/zstd/common/fse_decompress.cpp +126 -97
  1459. package/src/duckdb/third_party/zstd/common/pool.cpp +376 -0
  1460. package/src/duckdb/third_party/zstd/common/threading.cpp +193 -0
  1461. package/src/duckdb/third_party/zstd/common/xxhash.cpp +18 -14
  1462. package/src/duckdb/third_party/zstd/common/zstd_common.cpp +3 -38
  1463. package/src/duckdb/third_party/zstd/compress/fse_compress.cpp +93 -165
  1464. package/src/duckdb/third_party/zstd/compress/hist.cpp +28 -31
  1465. package/src/duckdb/third_party/zstd/compress/huf_compress.cpp +957 -291
  1466. package/src/duckdb/third_party/zstd/compress/zstd_compress.cpp +3988 -1124
  1467. package/src/duckdb/third_party/zstd/compress/zstd_compress_literals.cpp +120 -43
  1468. package/src/duckdb/third_party/zstd/compress/zstd_compress_sequences.cpp +47 -23
  1469. package/src/duckdb/third_party/zstd/compress/zstd_compress_superblock.cpp +274 -424
  1470. package/src/duckdb/third_party/zstd/compress/zstd_double_fast.cpp +403 -153
  1471. package/src/duckdb/third_party/zstd/compress/zstd_fast.cpp +741 -268
  1472. package/src/duckdb/third_party/zstd/compress/zstd_lazy.cpp +1339 -278
  1473. package/src/duckdb/third_party/zstd/compress/zstd_ldm.cpp +334 -222
  1474. package/src/duckdb/third_party/zstd/compress/zstd_opt.cpp +674 -298
  1475. package/src/duckdb/third_party/zstd/compress/zstdmt_compress.cpp +1885 -0
  1476. package/src/duckdb/third_party/zstd/decompress/huf_decompress.cpp +1247 -586
  1477. package/src/duckdb/third_party/zstd/decompress/zstd_ddict.cpp +18 -17
  1478. package/src/duckdb/third_party/zstd/decompress/zstd_decompress.cpp +724 -270
  1479. package/src/duckdb/third_party/zstd/decompress/zstd_decompress_block.cpp +1193 -393
  1480. package/src/duckdb/third_party/zstd/deprecated/zbuff_common.cpp +30 -0
  1481. package/src/duckdb/third_party/zstd/deprecated/zbuff_compress.cpp +171 -0
  1482. package/src/duckdb/third_party/zstd/deprecated/zbuff_decompress.cpp +80 -0
  1483. package/src/duckdb/third_party/zstd/dict/cover.cpp +1271 -0
  1484. package/src/duckdb/third_party/zstd/dict/divsufsort.cpp +1916 -0
  1485. package/src/duckdb/third_party/zstd/dict/fastcover.cpp +775 -0
  1486. package/src/duckdb/third_party/zstd/dict/zdict.cpp +1139 -0
  1487. package/src/duckdb/third_party/zstd/include/zdict.h +473 -0
  1488. package/src/duckdb/third_party/zstd/include/zstd/common/allocations.h +58 -0
  1489. package/src/duckdb/third_party/zstd/include/zstd/common/bits.h +204 -0
  1490. package/src/duckdb/third_party/zstd/include/zstd/common/bitstream.h +88 -85
  1491. package/src/duckdb/third_party/zstd/include/zstd/common/compiler.h +243 -47
  1492. package/src/duckdb/third_party/zstd/include/zstd/common/cpu.h +253 -0
  1493. package/src/duckdb/third_party/zstd/include/zstd/common/debug.h +31 -31
  1494. package/src/duckdb/third_party/zstd/include/zstd/common/error_private.h +94 -6
  1495. package/src/duckdb/third_party/zstd/include/zstd/common/fse.h +424 -64
  1496. package/src/duckdb/third_party/zstd/include/zstd/common/huf.h +255 -70
  1497. package/src/duckdb/third_party/zstd/include/zstd/common/mem.h +125 -85
  1498. package/src/duckdb/third_party/zstd/include/zstd/common/pool.h +84 -0
  1499. package/src/duckdb/third_party/zstd/include/zstd/common/portability_macros.h +158 -0
  1500. package/src/duckdb/third_party/zstd/include/zstd/common/threading.h +152 -0
  1501. package/src/duckdb/third_party/zstd/include/zstd/common/{xxhash.h → xxhash.hpp} +0 -1
  1502. package/src/duckdb/third_party/zstd/include/zstd/common/{xxhash_static.h → xxhash_static.hpp} +1 -1
  1503. package/src/duckdb/third_party/zstd/include/zstd/common/zstd_deps.h +122 -0
  1504. package/src/duckdb/third_party/zstd/include/zstd/common/zstd_internal.h +143 -174
  1505. package/src/duckdb/third_party/zstd/include/zstd/common/zstd_trace.h +159 -0
  1506. package/src/duckdb/third_party/zstd/include/zstd/compress/clevels.h +136 -0
  1507. package/src/duckdb/third_party/zstd/include/zstd/compress/hist.h +4 -4
  1508. package/src/duckdb/third_party/zstd/include/zstd/compress/zstd_compress_internal.h +631 -220
  1509. package/src/duckdb/third_party/zstd/include/zstd/compress/zstd_compress_literals.h +17 -7
  1510. package/src/duckdb/third_party/zstd/include/zstd/compress/zstd_compress_sequences.h +2 -2
  1511. package/src/duckdb/third_party/zstd/include/zstd/compress/zstd_compress_superblock.h +3 -2
  1512. package/src/duckdb/third_party/zstd/include/zstd/compress/zstd_cwksp.h +256 -153
  1513. package/src/duckdb/third_party/zstd/include/zstd/compress/zstd_double_fast.h +16 -3
  1514. package/src/duckdb/third_party/zstd/include/zstd/compress/zstd_fast.h +4 -3
  1515. package/src/duckdb/third_party/zstd/include/zstd/compress/zstd_lazy.h +145 -11
  1516. package/src/duckdb/third_party/zstd/include/zstd/compress/zstd_ldm.h +14 -6
  1517. package/src/duckdb/third_party/zstd/include/zstd/compress/zstd_ldm_geartab.h +110 -0
  1518. package/src/duckdb/third_party/zstd/include/zstd/compress/zstd_opt.h +33 -9
  1519. package/src/duckdb/third_party/zstd/include/zstd/compress/zstdmt_compress.h +107 -0
  1520. package/src/duckdb/third_party/zstd/include/zstd/decompress/zstd_ddict.h +4 -3
  1521. package/src/duckdb/third_party/zstd/include/zstd/decompress/zstd_decompress_block.h +20 -6
  1522. package/src/duckdb/third_party/zstd/include/zstd/decompress/zstd_decompress_internal.h +88 -16
  1523. package/src/duckdb/third_party/zstd/include/zstd/deprecated/zbuff.h +214 -0
  1524. package/src/duckdb/third_party/zstd/include/zstd/dict/cover.h +156 -0
  1525. package/src/duckdb/third_party/zstd/include/zstd/dict/divsufsort.h +62 -0
  1526. package/src/duckdb/third_party/zstd/include/zstd.h +2171 -93
  1527. package/src/duckdb/third_party/zstd/include/{zstd/common/zstd_errors.h → zstd_errors.h} +32 -10
  1528. package/src/duckdb/ub_extension_core_functions_aggregate_algebraic.cpp +8 -0
  1529. package/src/duckdb/ub_extension_core_functions_aggregate_distributive.cpp +20 -0
  1530. package/src/duckdb/ub_extension_core_functions_aggregate_holistic.cpp +12 -0
  1531. package/src/duckdb/ub_extension_core_functions_aggregate_nested.cpp +6 -0
  1532. package/src/duckdb/ub_extension_core_functions_aggregate_regression.cpp +14 -0
  1533. package/src/duckdb/ub_extension_core_functions_scalar_array.cpp +4 -0
  1534. package/src/duckdb/ub_extension_core_functions_scalar_bit.cpp +2 -0
  1535. package/src/duckdb/ub_extension_core_functions_scalar_blob.cpp +4 -0
  1536. package/src/duckdb/ub_extension_core_functions_scalar_date.cpp +20 -0
  1537. package/src/duckdb/ub_extension_core_functions_scalar_debug.cpp +2 -0
  1538. package/src/duckdb/ub_extension_core_functions_scalar_enum.cpp +2 -0
  1539. package/src/duckdb/ub_extension_core_functions_scalar_generic.cpp +18 -0
  1540. package/src/duckdb/ub_extension_core_functions_scalar_list.cpp +22 -0
  1541. package/src/duckdb/ub_extension_core_functions_scalar_map.cpp +14 -0
  1542. package/src/duckdb/ub_extension_core_functions_scalar_math.cpp +2 -0
  1543. package/src/duckdb/ub_extension_core_functions_scalar_operators.cpp +2 -0
  1544. package/src/duckdb/ub_extension_core_functions_scalar_random.cpp +4 -0
  1545. package/src/duckdb/ub_extension_core_functions_scalar_string.cpp +48 -0
  1546. package/src/duckdb/ub_extension_core_functions_scalar_struct.cpp +2 -0
  1547. package/src/duckdb/ub_extension_core_functions_scalar_union.cpp +6 -0
  1548. package/src/duckdb/ub_src_common.cpp +4 -0
  1549. package/src/duckdb/ub_src_common_arrow.cpp +3 -1
  1550. package/src/duckdb/ub_src_execution.cpp +0 -6
  1551. package/src/duckdb/ub_src_execution_operator_aggregate.cpp +2 -0
  1552. package/src/duckdb/ub_src_execution_operator_csv_scanner_encode.cpp +2 -0
  1553. package/src/duckdb/ub_src_execution_operator_csv_scanner_util.cpp +2 -0
  1554. package/src/duckdb/ub_src_execution_sample.cpp +4 -0
  1555. package/src/duckdb/ub_src_function.cpp +6 -0
  1556. package/src/duckdb/ub_src_function_aggregate.cpp +0 -2
  1557. package/src/duckdb/ub_src_function_aggregate_distributive.cpp +3 -1
  1558. package/src/duckdb/ub_src_function_scalar.cpp +2 -8
  1559. package/src/duckdb/ub_src_function_scalar_date.cpp +2 -0
  1560. package/src/duckdb/ub_src_function_scalar_generic.cpp +2 -2
  1561. package/src/duckdb/ub_src_function_scalar_map.cpp +2 -0
  1562. package/src/duckdb/ub_src_function_scalar_operator.cpp +8 -0
  1563. package/src/duckdb/ub_src_function_scalar_string.cpp +10 -0
  1564. package/src/duckdb/ub_src_function_scalar_struct.cpp +4 -0
  1565. package/src/duckdb/ub_src_function_scalar_system.cpp +2 -0
  1566. package/src/duckdb/ub_src_function_table_system.cpp +6 -0
  1567. package/src/duckdb/ub_src_function_window.cpp +36 -0
  1568. package/src/duckdb/ub_src_logging.cpp +8 -0
  1569. package/src/duckdb/ub_src_main_settings.cpp +3 -1
  1570. package/src/duckdb/ub_src_optimizer.cpp +8 -0
  1571. package/src/duckdb/ub_src_optimizer_pushdown.cpp +2 -0
  1572. package/src/duckdb/ub_src_optimizer_rule.cpp +2 -0
  1573. package/src/duckdb/ub_src_parser.cpp +2 -0
  1574. package/src/duckdb/ub_src_parser_parsed_data.cpp +2 -0
  1575. package/src/duckdb/ub_src_planner.cpp +2 -0
  1576. package/src/duckdb/ub_src_planner_filter.cpp +6 -0
  1577. package/src/duckdb/ub_src_storage_compression.cpp +4 -0
  1578. package/src/duckdb/ub_src_storage_compression_dictionary.cpp +8 -0
  1579. package/src/duckdb/ub_src_storage_compression_roaring.cpp +10 -0
  1580. package/src/duckdb/ub_src_transaction.cpp +2 -0
  1581. package/vendor.py +1 -1
  1582. package/src/duckdb/extension/json/yyjson/include/yyjson.hpp +0 -6003
  1583. package/src/duckdb/extension/json/yyjson/yyjson.cpp +0 -8218
  1584. package/src/duckdb/src/common/arrow/appender/list_data.cpp +0 -78
  1585. package/src/duckdb/src/common/arrow/appender/map_data.cpp +0 -91
  1586. package/src/duckdb/src/common/cycle_counter.cpp +0 -76
  1587. package/src/duckdb/src/common/field_writer.cpp +0 -97
  1588. package/src/duckdb/src/common/http_state.cpp +0 -95
  1589. package/src/duckdb/src/common/preserved_error.cpp +0 -87
  1590. package/src/duckdb/src/common/row_operations/row_match.cpp +0 -359
  1591. package/src/duckdb/src/common/serializer/buffered_deserializer.cpp +0 -27
  1592. package/src/duckdb/src/common/serializer/buffered_serializer.cpp +0 -36
  1593. package/src/duckdb/src/common/serializer/format_serializer.cpp +0 -15
  1594. package/src/duckdb/src/common/serializer.cpp +0 -24
  1595. package/src/duckdb/src/common/types/chunk_collection.cpp +0 -190
  1596. package/src/duckdb/src/core_functions/aggregate/distributive/entropy.cpp +0 -183
  1597. package/src/duckdb/src/core_functions/scalar/date/current.cpp +0 -54
  1598. package/src/duckdb/src/core_functions/scalar/list/list_cosine_similarity.cpp +0 -78
  1599. package/src/duckdb/src/core_functions/scalar/list/list_inner_product.cpp +0 -70
  1600. package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +0 -412
  1601. package/src/duckdb/src/core_functions/scalar/secret/which_secret.cpp +0 -28
  1602. package/src/duckdb/src/core_functions/scalar/string/jaro_winkler.cpp +0 -71
  1603. package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +0 -238
  1604. package/src/duckdb/src/execution/index/art/node16.cpp +0 -196
  1605. package/src/duckdb/src/execution/index/art/node4.cpp +0 -189
  1606. package/src/duckdb/src/execution/index/unknown_index.cpp +0 -65
  1607. package/src/duckdb/src/execution/operator/csv_scanner/base_csv_reader.cpp +0 -595
  1608. package/src/duckdb/src/execution/operator/csv_scanner/buffered_csv_reader.cpp +0 -434
  1609. package/src/duckdb/src/execution/operator/csv_scanner/csv_buffer.cpp +0 -89
  1610. package/src/duckdb/src/execution/operator/csv_scanner/csv_buffer_manager.cpp +0 -90
  1611. package/src/duckdb/src/execution/operator/csv_scanner/csv_file_handle.cpp +0 -95
  1612. package/src/duckdb/src/execution/operator/csv_scanner/csv_reader_options.cpp +0 -494
  1613. package/src/duckdb/src/execution/operator/csv_scanner/csv_state_machine.cpp +0 -35
  1614. package/src/duckdb/src/execution/operator/csv_scanner/csv_state_machine_cache.cpp +0 -99
  1615. package/src/duckdb/src/execution/operator/csv_scanner/parallel_csv_reader.cpp +0 -689
  1616. package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +0 -242
  1617. package/src/duckdb/src/execution/operator/persistent/base_csv_reader.cpp +0 -695
  1618. package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +0 -1487
  1619. package/src/duckdb/src/execution/operator/persistent/csv_buffer.cpp +0 -72
  1620. package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +0 -158
  1621. package/src/duckdb/src/execution/operator/persistent/csv_reader_options.cpp +0 -280
  1622. package/src/duckdb/src/execution/operator/persistent/parallel_csv_reader.cpp +0 -666
  1623. package/src/duckdb/src/execution/operator/persistent/physical_fixed_batch_copy.cpp +0 -499
  1624. package/src/duckdb/src/execution/operator/schema/physical_create_index.cpp +0 -207
  1625. package/src/duckdb/src/execution/partitionable_hashtable.cpp +0 -207
  1626. package/src/duckdb/src/execution/physical_plan/plan_limit_percent.cpp +0 -18
  1627. package/src/duckdb/src/execution/physical_plan/plan_show_select.cpp +0 -47
  1628. package/src/duckdb/src/execution/reservoir_sample.cpp +0 -324
  1629. package/src/duckdb/src/execution/window_executor.cpp +0 -1830
  1630. package/src/duckdb/src/execution/window_segment_tree.cpp +0 -2073
  1631. package/src/duckdb/src/extension_forward_decl/icu.cpp +0 -59
  1632. package/src/duckdb/src/function/aggregate/distributive_functions.cpp +0 -15
  1633. package/src/duckdb/src/function/scalar/compressed_materialization_functions.cpp +0 -29
  1634. package/src/duckdb/src/function/scalar/generic_functions.cpp +0 -11
  1635. package/src/duckdb/src/function/scalar/list/list_concat.cpp +0 -143
  1636. package/src/duckdb/src/function/scalar/operators.cpp +0 -14
  1637. package/src/duckdb/src/function/scalar/sequence_functions.cpp +0 -10
  1638. package/src/duckdb/src/function/scalar/string_functions.cpp +0 -22
  1639. package/src/duckdb/src/function/table/pragma_detailed_profiling_output.cpp +0 -173
  1640. package/src/duckdb/src/function/table/pragma_last_profiling_output.cpp +0 -101
  1641. package/src/duckdb/src/include/duckdb/catalog/mapping_value.hpp +0 -92
  1642. package/src/duckdb/src/include/duckdb/common/arrow/arrow_types_extension.hpp +0 -42
  1643. package/src/duckdb/src/include/duckdb/common/cycle_counter.hpp +0 -68
  1644. package/src/duckdb/src/include/duckdb/common/enums/index_type.hpp +0 -34
  1645. package/src/duckdb/src/include/duckdb/common/http_state.hpp +0 -113
  1646. package/src/duckdb/src/include/duckdb/common/platform.h +0 -58
  1647. package/src/duckdb/src/include/duckdb/common/preserved_error.hpp +0 -59
  1648. package/src/duckdb/src/include/duckdb/common/serializer/deserialization_data.hpp +0 -192
  1649. package/src/duckdb/src/include/duckdb/common/types/chunk_collection.hpp +0 -137
  1650. package/src/duckdb/src/include/duckdb/execution/index/art/node16.hpp +0 -65
  1651. package/src/duckdb/src/include/duckdb/execution/index/art/node4.hpp +0 -63
  1652. package/src/duckdb/src/include/duckdb/execution/index/unknown_index.hpp +0 -65
  1653. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/buffer_manager/csv_buffer.hpp +0 -103
  1654. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/buffer_manager/csv_buffer_manager.hpp +0 -74
  1655. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/buffer_manager/csv_file_handle.hpp +0 -60
  1656. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_sniffer.hpp +0 -253
  1657. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/options/csv_option.hpp +0 -155
  1658. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/options/csv_reader_options.hpp +0 -163
  1659. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/options/state_machine_options.hpp +0 -35
  1660. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/scanner/base_scanner.hpp +0 -228
  1661. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/scanner/column_count_scanner.hpp +0 -70
  1662. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/scanner/scanner_boundary.hpp +0 -93
  1663. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/scanner/skip_scanner.hpp +0 -60
  1664. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/scanner/string_value_scanner.hpp +0 -197
  1665. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/sniffer/quote_rules.hpp +0 -21
  1666. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/state_machine/csv_state.hpp +0 -30
  1667. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/state_machine/csv_state_machine.hpp +0 -99
  1668. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/state_machine/csv_state_machine_cache.hpp +0 -87
  1669. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/table_function/csv_file_scanner.hpp +0 -70
  1670. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/table_function/global_csv_state.hpp +0 -80
  1671. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/util/csv_casting.hpp +0 -137
  1672. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/util/csv_error.hpp +0 -104
  1673. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_index_join.hpp +0 -79
  1674. package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/base_csv_reader.hpp +0 -119
  1675. package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/buffered_csv_reader.hpp +0 -72
  1676. package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/csv_buffer.hpp +0 -110
  1677. package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/csv_buffer_manager.hpp +0 -103
  1678. package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/csv_file_handle.hpp +0 -59
  1679. package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/csv_line_info.hpp +0 -46
  1680. package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/csv_reader_options.hpp +0 -210
  1681. package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/csv_sniffer.hpp +0 -131
  1682. package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/csv_state.hpp +0 -28
  1683. package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/csv_state_machine.hpp +0 -70
  1684. package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/csv_state_machine_cache.hpp +0 -65
  1685. package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/parallel_csv_reader.hpp +0 -167
  1686. package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/quote_rules.hpp +0 -21
  1687. package/src/duckdb/src/include/duckdb/execution/window_executor.hpp +0 -343
  1688. package/src/duckdb/src/include/duckdb/execution/window_segment_tree.hpp +0 -165
  1689. package/src/duckdb/src/include/duckdb/optimizer/column_lifetime_optimizer.hpp +0 -45
  1690. package/src/duckdb/src/include/duckdb/optimizer/join_order/estimated_properties.hpp +0 -57
  1691. package/src/duckdb/src/include/duckdb/parser/parsed_data/comment_on_info.hpp +0 -45
  1692. package/src/duckdb/src/include/duckdb/parser/statement/show_statement.hpp +0 -32
  1693. package/src/duckdb/src/include/duckdb/planner/operator/logical_limit_percent.hpp +0 -49
  1694. package/src/duckdb/src/include/duckdb/planner/operator/logical_show.hpp +0 -42
  1695. package/src/duckdb/src/main/settings/settings.cpp +0 -2056
  1696. package/src/duckdb/src/optimizer/join_order/estimated_properties.cpp +0 -36
  1697. package/src/duckdb/src/parser/parsed_data/comment_on_info.cpp +0 -19
  1698. package/src/duckdb/src/parser/statement/show_statement.cpp +0 -15
  1699. package/src/duckdb/src/planner/binder/statement/bind_show.cpp +0 -30
  1700. package/src/duckdb/src/planner/operator/logical_limit_percent.cpp +0 -14
  1701. package/src/duckdb/src/storage/statistics/numeric_stats_union.cpp +0 -70
  1702. package/src/duckdb/third_party/fsst/fsst_avx512.cpp +0 -140
  1703. package/src/duckdb/third_party/fsst/fsst_avx512.inc +0 -57
  1704. package/src/duckdb/third_party/fsst/fsst_avx512_unroll1.inc +0 -57
  1705. package/src/duckdb/third_party/fsst/fsst_avx512_unroll2.inc +0 -114
  1706. package/src/duckdb/third_party/fsst/fsst_avx512_unroll3.inc +0 -171
  1707. package/src/duckdb/third_party/fsst/fsst_avx512_unroll4.inc +0 -228
  1708. package/src/duckdb/third_party/parquet/parquet_constants.cpp +0 -17
  1709. package/src/duckdb/third_party/parquet/parquet_constants.h +0 -24
  1710. package/src/duckdb/third_party/re2/util/pod_array.h +0 -55
  1711. package/src/duckdb/third_party/re2/util/sparse_array.h +0 -392
  1712. package/src/duckdb/third_party/re2/util/sparse_set.h +0 -264
  1713. package/src/duckdb/third_party/zstd/include/zstd/common/fse_static.h +0 -421
  1714. package/src/duckdb/third_party/zstd/include/zstd/common/huf_static.h +0 -238
  1715. package/src/duckdb/third_party/zstd/include/zstd_static.h +0 -1070
  1716. package/src/duckdb/ub_src_core_functions.cpp +0 -6
  1717. package/src/duckdb/ub_src_core_functions_aggregate_algebraic.cpp +0 -8
  1718. package/src/duckdb/ub_src_core_functions_aggregate_distributive.cpp +0 -24
  1719. package/src/duckdb/ub_src_core_functions_aggregate_holistic.cpp +0 -12
  1720. package/src/duckdb/ub_src_core_functions_aggregate_nested.cpp +0 -6
  1721. package/src/duckdb/ub_src_core_functions_aggregate_regression.cpp +0 -14
  1722. package/src/duckdb/ub_src_core_functions_scalar_array.cpp +0 -4
  1723. package/src/duckdb/ub_src_core_functions_scalar_bit.cpp +0 -2
  1724. package/src/duckdb/ub_src_core_functions_scalar_blob.cpp +0 -6
  1725. package/src/duckdb/ub_src_core_functions_scalar_date.cpp +0 -22
  1726. package/src/duckdb/ub_src_core_functions_scalar_debug.cpp +0 -2
  1727. package/src/duckdb/ub_src_core_functions_scalar_enum.cpp +0 -2
  1728. package/src/duckdb/ub_src_core_functions_scalar_generic.cpp +0 -18
  1729. package/src/duckdb/ub_src_core_functions_scalar_list.cpp +0 -22
  1730. package/src/duckdb/ub_src_core_functions_scalar_map.cpp +0 -16
  1731. package/src/duckdb/ub_src_core_functions_scalar_math.cpp +0 -2
  1732. package/src/duckdb/ub_src_core_functions_scalar_operators.cpp +0 -2
  1733. package/src/duckdb/ub_src_core_functions_scalar_random.cpp +0 -4
  1734. package/src/duckdb/ub_src_core_functions_scalar_secret.cpp +0 -2
  1735. package/src/duckdb/ub_src_core_functions_scalar_string.cpp +0 -58
  1736. package/src/duckdb/ub_src_core_functions_scalar_struct.cpp +0 -4
  1737. package/src/duckdb/ub_src_core_functions_scalar_union.cpp +0 -6
  1738. package/src/duckdb/ub_src_execution_operator_csv_scanner.cpp +0 -18
  1739. package/src/duckdb/ub_src_function_scalar_operators.cpp +0 -8
  1740. /package/src/duckdb/{src/include/duckdb → extension/core_functions/include}/core_functions/aggregate/algebraic/covar.hpp +0 -0
  1741. /package/src/duckdb/{src/include/duckdb → extension/core_functions/include}/core_functions/aggregate/algebraic/stddev.hpp +0 -0
  1742. /package/src/duckdb/{src/include/duckdb → extension/core_functions/include}/core_functions/aggregate/sum_helpers.hpp +0 -0
  1743. /package/src/duckdb/{src/include/duckdb → extension/core_functions/include}/core_functions/array_kernels.hpp +0 -0
  1744. /package/src/duckdb/{src/include/duckdb → extension/core_functions/include}/core_functions/function_list.hpp +0 -0
  1745. /package/src/duckdb/{src/include/duckdb → extension/core_functions/include}/core_functions/scalar/secret_functions.hpp +0 -0
  1746. /package/src/duckdb/src/function/scalar/{operators → operator}/multiply.cpp +0 -0
  1747. /package/src/duckdb/src/function/scalar/{operators → operator}/subtract.cpp +0 -0
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Autogenerated by Thrift Compiler (0.11.0)
2
+ * Autogenerated by Thrift Compiler (0.21.0)
3
3
  *
4
4
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
5
5
  * @generated
@@ -9,20 +9,27 @@
9
9
 
10
10
  #include <iosfwd>
11
11
 
12
- #include "duckdb/common/vector.hpp"
12
+ #include <thrift/Thrift.h>
13
+ #include <thrift/TApplicationException.h>
14
+ #include <thrift/TBase.h>
15
+ #include <thrift/protocol/TProtocol.h>
16
+ #include <thrift/transport/TTransport.h>
13
17
 
14
- #include "thrift/Thrift.h"
15
- #include "thrift/TApplicationException.h"
16
- #include "thrift/TBase.h"
17
- #include "thrift/protocol/TProtocol.h"
18
- #include "thrift/transport/TTransport.h"
18
+ #include <functional>
19
+ #include <memory>
19
20
 
20
- #include "thrift/stdcxx.h"
21
21
 
22
22
  #include "windows_compatibility.h"
23
+ namespace apache = duckdb_apache;
23
24
 
24
- namespace duckdb_parquet { namespace format {
25
+ namespace duckdb_parquet {
25
26
 
27
+ /**
28
+ * Types supported by Parquet. These types are intended to be used in combination
29
+ * with the encodings to control the on disk storage format.
30
+ * For example INT16 is not included as a type since a good encoding of INT32
31
+ * would handle this.
32
+ */
26
33
  struct Type {
27
34
  enum type {
28
35
  BOOLEAN = 0,
@@ -36,66 +43,263 @@ struct Type {
36
43
  };
37
44
  };
38
45
 
46
+ extern const std::map<int, const char*> _Type_VALUES_TO_NAMES;
47
+
39
48
  std::ostream& operator<<(std::ostream& out, const Type::type& val);
40
49
 
50
+ std::string to_string(const Type::type& val);
51
+
52
+ /**
53
+ * DEPRECATED: Common types used by frameworks(e.g. hive, pig) using parquet.
54
+ * ConvertedType is superseded by LogicalType. This enum should not be extended.
55
+ *
56
+ * See LogicalTypes.md for conversion between ConvertedType and LogicalType.
57
+ */
41
58
  struct ConvertedType {
42
59
  enum type {
60
+ /**
61
+ * a BYTE_ARRAY actually contains UTF8 encoded chars
62
+ */
43
63
  UTF8 = 0,
64
+ /**
65
+ * a map is converted as an optional field containing a repeated key/value pair
66
+ */
44
67
  MAP = 1,
68
+ /**
69
+ * a key/value pair is converted into a group of two fields
70
+ */
45
71
  MAP_KEY_VALUE = 2,
72
+ /**
73
+ * a list is converted into an optional field containing a repeated field for its
74
+ * values
75
+ */
46
76
  LIST = 3,
77
+ /**
78
+ * an enum is converted into a BYTE_ARRAY field
79
+ */
47
80
  ENUM = 4,
81
+ /**
82
+ * A decimal value.
83
+ *
84
+ * This may be used to annotate BYTE_ARRAY or FIXED_LEN_BYTE_ARRAY primitive
85
+ * types. The underlying byte array stores the unscaled value encoded as two's
86
+ * complement using big-endian byte order (the most significant byte is the
87
+ * zeroth element). The value of the decimal is the value * 10^{-scale}.
88
+ *
89
+ * This must be accompanied by a (maximum) precision and a scale in the
90
+ * SchemaElement. The precision specifies the number of digits in the decimal
91
+ * and the scale stores the location of the decimal point. For example 1.23
92
+ * would have precision 3 (3 total digits) and scale 2 (the decimal point is
93
+ * 2 digits over).
94
+ */
48
95
  DECIMAL = 5,
96
+ /**
97
+ * A Date
98
+ *
99
+ * Stored as days since Unix epoch, encoded as the INT32 physical type.
100
+ *
101
+ */
49
102
  DATE = 6,
103
+ /**
104
+ * A time
105
+ *
106
+ * The total number of milliseconds since midnight. The value is stored
107
+ * as an INT32 physical type.
108
+ */
50
109
  TIME_MILLIS = 7,
110
+ /**
111
+ * A time.
112
+ *
113
+ * The total number of microseconds since midnight. The value is stored as
114
+ * an INT64 physical type.
115
+ */
51
116
  TIME_MICROS = 8,
117
+ /**
118
+ * A date/time combination
119
+ *
120
+ * Date and time recorded as milliseconds since the Unix epoch. Recorded as
121
+ * a physical type of INT64.
122
+ */
52
123
  TIMESTAMP_MILLIS = 9,
124
+ /**
125
+ * A date/time combination
126
+ *
127
+ * Date and time recorded as microseconds since the Unix epoch. The value is
128
+ * stored as an INT64 physical type.
129
+ */
53
130
  TIMESTAMP_MICROS = 10,
131
+ /**
132
+ * An unsigned integer value.
133
+ *
134
+ * The number describes the maximum number of meaningful data bits in
135
+ * the stored value. 8, 16 and 32 bit values are stored using the
136
+ * INT32 physical type. 64 bit values are stored using the INT64
137
+ * physical type.
138
+ *
139
+ */
54
140
  UINT_8 = 11,
55
141
  UINT_16 = 12,
56
142
  UINT_32 = 13,
57
143
  UINT_64 = 14,
144
+ /**
145
+ * A signed integer value.
146
+ *
147
+ * The number describes the maximum number of meaningful data bits in
148
+ * the stored value. 8, 16 and 32 bit values are stored using the
149
+ * INT32 physical type. 64 bit values are stored using the INT64
150
+ * physical type.
151
+ *
152
+ */
58
153
  INT_8 = 15,
59
154
  INT_16 = 16,
60
155
  INT_32 = 17,
61
156
  INT_64 = 18,
157
+ /**
158
+ * An embedded JSON document
159
+ *
160
+ * A JSON document embedded within a single UTF8 column.
161
+ */
62
162
  JSON = 19,
163
+ /**
164
+ * An embedded BSON document
165
+ *
166
+ * A BSON document embedded within a single BYTE_ARRAY column.
167
+ */
63
168
  BSON = 20,
64
- INTERVAL = 21,
65
- NULL_TYPE = 24
169
+ /**
170
+ * An interval of time
171
+ *
172
+ * This type annotates data stored as a FIXED_LEN_BYTE_ARRAY of length 12
173
+ * This data is composed of three separate little endian unsigned
174
+ * integers. Each stores a component of a duration of time. The first
175
+ * integer identifies the number of months associated with the duration,
176
+ * the second identifies the number of days associated with the duration
177
+ * and the third identifies the number of milliseconds associated with
178
+ * the provided duration. This duration of time is independent of any
179
+ * particular timezone or date.
180
+ */
181
+ INTERVAL = 21
66
182
  };
67
183
  };
68
184
 
185
+ extern const std::map<int, const char*> _ConvertedType_VALUES_TO_NAMES;
186
+
69
187
  std::ostream& operator<<(std::ostream& out, const ConvertedType::type& val);
70
188
 
189
+ std::string to_string(const ConvertedType::type& val);
190
+
191
+ /**
192
+ * Representation of Schemas
193
+ */
71
194
  struct FieldRepetitionType {
72
195
  enum type {
196
+ /**
197
+ * This field is required (can not be null) and each row has exactly 1 value.
198
+ */
73
199
  REQUIRED = 0,
200
+ /**
201
+ * The field is optional (can be null) and each row has 0 or 1 values.
202
+ */
74
203
  OPTIONAL = 1,
204
+ /**
205
+ * The field is repeated and can contain 0 or more values
206
+ */
75
207
  REPEATED = 2
76
208
  };
77
209
  };
78
210
 
211
+ extern const std::map<int, const char*> _FieldRepetitionType_VALUES_TO_NAMES;
212
+
79
213
  std::ostream& operator<<(std::ostream& out, const FieldRepetitionType::type& val);
80
214
 
215
+ std::string to_string(const FieldRepetitionType::type& val);
216
+
217
+ /**
218
+ * Encodings supported by Parquet. Not all encodings are valid for all types. These
219
+ * enums are also used to specify the encoding of definition and repetition levels.
220
+ * See the accompanying doc for the details of the more complicated encodings.
221
+ */
81
222
  struct Encoding {
82
223
  enum type {
224
+ /**
225
+ * Default encoding.
226
+ * BOOLEAN - 1 bit per value. 0 is false; 1 is true.
227
+ * INT32 - 4 bytes per value. Stored as little-endian.
228
+ * INT64 - 8 bytes per value. Stored as little-endian.
229
+ * FLOAT - 4 bytes per value. IEEE. Stored as little-endian.
230
+ * DOUBLE - 8 bytes per value. IEEE. Stored as little-endian.
231
+ * BYTE_ARRAY - 4 byte length stored as little endian, followed by bytes.
232
+ * FIXED_LEN_BYTE_ARRAY - Just the bytes.
233
+ */
83
234
  PLAIN = 0,
235
+ /**
236
+ * Deprecated: Dictionary encoding. The values in the dictionary are encoded in the
237
+ * plain type.
238
+ * in a data page use RLE_DICTIONARY instead.
239
+ * in a Dictionary page use PLAIN instead
240
+ */
84
241
  PLAIN_DICTIONARY = 2,
242
+ /**
243
+ * Group packed run length encoding. Usable for definition/repetition levels
244
+ * encoding and Booleans (on one bit: 0 is false; 1 is true.)
245
+ */
85
246
  RLE = 3,
247
+ /**
248
+ * Bit packed encoding. This can only be used if the data has a known max
249
+ * width. Usable for definition/repetition levels encoding.
250
+ */
86
251
  BIT_PACKED = 4,
252
+ /**
253
+ * Delta encoding for integers. This can be used for int columns and works best
254
+ * on sorted data
255
+ */
87
256
  DELTA_BINARY_PACKED = 5,
257
+ /**
258
+ * Encoding for byte arrays to separate the length values and the data. The lengths
259
+ * are encoded using DELTA_BINARY_PACKED
260
+ */
88
261
  DELTA_LENGTH_BYTE_ARRAY = 6,
262
+ /**
263
+ * Incremental-encoded byte array. Prefix lengths are encoded using DELTA_BINARY_PACKED.
264
+ * Suffixes are stored as delta length byte arrays.
265
+ */
89
266
  DELTA_BYTE_ARRAY = 7,
267
+ /**
268
+ * Dictionary encoding: the ids are encoded using the RLE encoding
269
+ */
90
270
  RLE_DICTIONARY = 8,
91
- BYTE_STREAM_SPLIT = 9,
271
+ /**
272
+ * Encoding for fixed-width data (FLOAT, DOUBLE, INT32, INT64, FIXED_LEN_BYTE_ARRAY).
273
+ * K byte-streams are created where K is the size in bytes of the data type.
274
+ * The individual bytes of a value are scattered to the corresponding stream and
275
+ * the streams are concatenated.
276
+ * This itself does not reduce the size of the data but can lead to better compression
277
+ * afterwards.
278
+ *
279
+ * Added in 2.8 for FLOAT and DOUBLE.
280
+ * Support for INT32, INT64 and FIXED_LEN_BYTE_ARRAY added in 2.11.
281
+ */
282
+ BYTE_STREAM_SPLIT = 9
92
283
  };
93
284
  };
94
285
 
286
+ extern const std::map<int, const char*> _Encoding_VALUES_TO_NAMES;
287
+
95
288
  std::ostream& operator<<(std::ostream& out, const Encoding::type& val);
96
289
 
290
+ std::string to_string(const Encoding::type& val);
291
+
292
+ /**
293
+ * Supported compression algorithms.
294
+ *
295
+ * Codecs added in format version X.Y can be read by readers based on X.Y and later.
296
+ * Codec support may vary between readers based on the format version and
297
+ * libraries available at runtime.
298
+ *
299
+ * See Compression.md for a detailed specification of these algorithms.
300
+ */
97
301
  struct CompressionCodec {
98
- enum type : uint8_t {
302
+ enum type {
99
303
  UNCOMPRESSED = 0,
100
304
  SNAPPY = 1,
101
305
  GZIP = 2,
@@ -103,12 +307,16 @@ struct CompressionCodec {
103
307
  BROTLI = 4,
104
308
  LZ4 = 5,
105
309
  ZSTD = 6,
106
- LZ4_RAW = 7
310
+ LZ4_RAW = 7
107
311
  };
108
312
  };
109
313
 
314
+ extern const std::map<int, const char*> _CompressionCodec_VALUES_TO_NAMES;
315
+
110
316
  std::ostream& operator<<(std::ostream& out, const CompressionCodec::type& val);
111
317
 
318
+ std::string to_string(const CompressionCodec::type& val);
319
+
112
320
  struct PageType {
113
321
  enum type {
114
322
  DATA_PAGE = 0,
@@ -118,8 +326,16 @@ struct PageType {
118
326
  };
119
327
  };
120
328
 
329
+ extern const std::map<int, const char*> _PageType_VALUES_TO_NAMES;
330
+
121
331
  std::ostream& operator<<(std::ostream& out, const PageType::type& val);
122
332
 
333
+ std::string to_string(const PageType::type& val);
334
+
335
+ /**
336
+ * Enum to annotate whether lists of min/max elements inside ColumnIndex
337
+ * are ordered and if so, in which direction.
338
+ */
123
339
  struct BoundaryOrder {
124
340
  enum type {
125
341
  UNORDERED = 0,
@@ -128,8 +344,14 @@ struct BoundaryOrder {
128
344
  };
129
345
  };
130
346
 
347
+ extern const std::map<int, const char*> _BoundaryOrder_VALUES_TO_NAMES;
348
+
131
349
  std::ostream& operator<<(std::ostream& out, const BoundaryOrder::type& val);
132
350
 
351
+ std::string to_string(const BoundaryOrder::type& val);
352
+
353
+ class SizeStatistics;
354
+
133
355
  class Statistics;
134
356
 
135
357
  class StringType;
@@ -144,6 +366,8 @@ class EnumType;
144
366
 
145
367
  class DateType;
146
368
 
369
+ class Float16Type;
370
+
147
371
  class NullType;
148
372
 
149
373
  class DecimalType;
@@ -178,6 +402,20 @@ class DictionaryPageHeader;
178
402
 
179
403
  class DataPageHeaderV2;
180
404
 
405
+ class SplitBlockAlgorithm;
406
+
407
+ class BloomFilterAlgorithm;
408
+
409
+ class XxHash;
410
+
411
+ class BloomFilterHash;
412
+
413
+ class Uncompressed;
414
+
415
+ class BloomFilterCompression;
416
+
417
+ class BloomFilterHeader;
418
+
181
419
  class PageHeader;
182
420
 
183
421
  class KeyValue;
@@ -218,31 +456,159 @@ class FileMetaData;
218
456
 
219
457
  class FileCryptoMetaData;
220
458
 
459
+ typedef struct _SizeStatistics__isset {
460
+ _SizeStatistics__isset() : unencoded_byte_array_data_bytes(false), repetition_level_histogram(false), definition_level_histogram(false) {}
461
+ bool unencoded_byte_array_data_bytes :1;
462
+ bool repetition_level_histogram :1;
463
+ bool definition_level_histogram :1;
464
+ } _SizeStatistics__isset;
465
+
466
+ /**
467
+ * A structure for capturing metadata for estimating the unencoded,
468
+ * uncompressed size of data written. This is useful for readers to estimate
469
+ * how much memory is needed to reconstruct data in their memory model and for
470
+ * fine grained filter pushdown on nested structures (the histograms contained
471
+ * in this structure can help determine the number of nulls at a particular
472
+ * nesting level and maximum length of lists).
473
+ */
474
+ class SizeStatistics : public virtual ::apache::thrift::TBase {
475
+ public:
476
+
477
+ SizeStatistics(const SizeStatistics&);
478
+ SizeStatistics& operator=(const SizeStatistics&);
479
+ SizeStatistics() noexcept;
480
+
481
+ virtual ~SizeStatistics() noexcept;
482
+ /**
483
+ * The number of physical bytes stored for BYTE_ARRAY data values assuming
484
+ * no encoding. This is exclusive of the bytes needed to store the length of
485
+ * each byte array. In other words, this field is equivalent to the `(size
486
+ * of PLAIN-ENCODING the byte array values) - (4 bytes * number of values
487
+ * written)`. To determine unencoded sizes of other types readers can use
488
+ * schema information multiplied by the number of non-null and null values.
489
+ * The number of null/non-null values can be inferred from the histograms
490
+ * below.
491
+ *
492
+ * For example, if a column chunk is dictionary-encoded with dictionary
493
+ * ["a", "bc", "cde"], and a data page contains the indices [0, 0, 1, 2],
494
+ * then this value for that data page should be 7 (1 + 1 + 2 + 3).
495
+ *
496
+ * This field should only be set for types that use BYTE_ARRAY as their
497
+ * physical type.
498
+ */
499
+ int64_t unencoded_byte_array_data_bytes;
500
+ /**
501
+ * When present, there is expected to be one element corresponding to each
502
+ * repetition (i.e. size=max repetition_level+1) where each element
503
+ * represents the number of times the repetition level was observed in the
504
+ * data.
505
+ *
506
+ * This field may be omitted if max_repetition_level is 0 without loss
507
+ * of information.
508
+ *
509
+ */
510
+ duckdb::vector<int64_t> repetition_level_histogram;
511
+ /**
512
+ * Same as repetition_level_histogram except for definition levels.
513
+ *
514
+ * This field may be omitted if max_definition_level is 0 or 1 without
515
+ * loss of information.
516
+ *
517
+ */
518
+ duckdb::vector<int64_t> definition_level_histogram;
519
+
520
+ _SizeStatistics__isset __isset;
521
+
522
+ void __set_unencoded_byte_array_data_bytes(const int64_t val);
523
+
524
+ void __set_repetition_level_histogram(const duckdb::vector<int64_t> & val);
525
+
526
+ void __set_definition_level_histogram(const duckdb::vector<int64_t> & val);
527
+
528
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
529
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
530
+
531
+ virtual void printTo(std::ostream& out) const;
532
+ };
533
+
534
+ void swap(SizeStatistics &a, SizeStatistics &b);
535
+
536
+ std::ostream& operator<<(std::ostream& out, const SizeStatistics& obj);
537
+
221
538
  typedef struct _Statistics__isset {
222
- _Statistics__isset() : max(false), min(false), null_count(false), distinct_count(false), max_value(false), min_value(false) {}
539
+ _Statistics__isset() : max(false), min(false), null_count(false), distinct_count(false), max_value(false), min_value(false), is_max_value_exact(false), is_min_value_exact(false) {}
223
540
  bool max :1;
224
541
  bool min :1;
225
542
  bool null_count :1;
226
543
  bool distinct_count :1;
227
544
  bool max_value :1;
228
545
  bool min_value :1;
546
+ bool is_max_value_exact :1;
547
+ bool is_min_value_exact :1;
229
548
  } _Statistics__isset;
230
549
 
231
- class Statistics : public virtual ::duckdb_apache::thrift::TBase {
550
+ /**
551
+ * Statistics per row group and per page
552
+ * All fields are optional.
553
+ */
554
+ class Statistics : public virtual ::apache::thrift::TBase {
232
555
  public:
233
556
 
234
557
  Statistics(const Statistics&);
235
558
  Statistics& operator=(const Statistics&);
236
- Statistics() : max(), min(), null_count(0), distinct_count(0), max_value(), min_value() {
237
- }
238
-
239
- virtual ~Statistics() throw();
559
+ Statistics() noexcept;
560
+
561
+ virtual ~Statistics() noexcept;
562
+ /**
563
+ * DEPRECATED: min and max value of the column. Use min_value and max_value.
564
+ *
565
+ * Values are encoded using PLAIN encoding, except that variable-length byte
566
+ * arrays do not include a length prefix.
567
+ *
568
+ * These fields encode min and max values determined by signed comparison
569
+ * only. New files should use the correct order for a column's logical type
570
+ * and store the values in the min_value and max_value fields.
571
+ *
572
+ * To support older readers, these may be set when the column order is
573
+ * signed.
574
+ */
240
575
  std::string max;
241
576
  std::string min;
577
+ /**
578
+ * Count of null values in the column.
579
+ *
580
+ * Writers SHOULD always write this field even if it is zero (i.e. no null value)
581
+ * or the column is not nullable.
582
+ * Readers MUST distinguish between null_count not being present and null_count == 0.
583
+ * If null_count is not present, readers MUST NOT assume null_count == 0.
584
+ */
242
585
  int64_t null_count;
586
+ /**
587
+ * count of distinct values occurring
588
+ */
243
589
  int64_t distinct_count;
590
+ /**
591
+ * Lower and upper bound values for the column, determined by its ColumnOrder.
592
+ *
593
+ * These may be the actual minimum and maximum values found on a page or column
594
+ * chunk, but can also be (more compact) values that do not exist on a page or
595
+ * column chunk. For example, instead of storing "Blart Versenwald III", a writer
596
+ * may set min_value="B", max_value="C". Such more compact values must still be
597
+ * valid values within the column's logical type.
598
+ *
599
+ * Values are encoded using PLAIN encoding, except that variable-length byte
600
+ * arrays do not include a length prefix.
601
+ */
244
602
  std::string max_value;
245
603
  std::string min_value;
604
+ /**
605
+ * If true, max_value is the actual maximum value for a column
606
+ */
607
+ bool is_max_value_exact;
608
+ /**
609
+ * If true, min_value is the actual minimum value for a column
610
+ */
611
+ bool is_min_value_exact;
246
612
 
247
613
  _Statistics__isset __isset;
248
614
 
@@ -258,42 +624,12 @@ class Statistics : public virtual ::duckdb_apache::thrift::TBase {
258
624
 
259
625
  void __set_min_value(const std::string& val);
260
626
 
261
- bool operator == (const Statistics & rhs) const
262
- {
263
- if (__isset.max != rhs.__isset.max)
264
- return false;
265
- else if (__isset.max && !(max == rhs.max))
266
- return false;
267
- if (__isset.min != rhs.__isset.min)
268
- return false;
269
- else if (__isset.min && !(min == rhs.min))
270
- return false;
271
- if (__isset.null_count != rhs.__isset.null_count)
272
- return false;
273
- else if (__isset.null_count && !(null_count == rhs.null_count))
274
- return false;
275
- if (__isset.distinct_count != rhs.__isset.distinct_count)
276
- return false;
277
- else if (__isset.distinct_count && !(distinct_count == rhs.distinct_count))
278
- return false;
279
- if (__isset.max_value != rhs.__isset.max_value)
280
- return false;
281
- else if (__isset.max_value && !(max_value == rhs.max_value))
282
- return false;
283
- if (__isset.min_value != rhs.__isset.min_value)
284
- return false;
285
- else if (__isset.min_value && !(min_value == rhs.min_value))
286
- return false;
287
- return true;
288
- }
289
- bool operator != (const Statistics &rhs) const {
290
- return !(*this == rhs);
291
- }
292
-
293
- bool operator < (const Statistics & ) const;
294
-
295
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
296
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
627
+ void __set_is_max_value_exact(const bool val);
628
+
629
+ void __set_is_min_value_exact(const bool val);
630
+
631
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
632
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
297
633
 
298
634
  virtual void printTo(std::ostream& out) const;
299
635
  };
@@ -303,28 +639,20 @@ void swap(Statistics &a, Statistics &b);
303
639
  std::ostream& operator<<(std::ostream& out, const Statistics& obj);
304
640
 
305
641
 
306
- class StringType : public virtual ::duckdb_apache::thrift::TBase {
642
+ /**
643
+ * Empty structs to use as logical type annotations
644
+ */
645
+ class StringType : public virtual ::apache::thrift::TBase {
307
646
  public:
308
647
 
309
- StringType(const StringType&);
310
- StringType& operator=(const StringType&);
311
- StringType() {
312
- }
648
+ StringType(const StringType&) noexcept;
649
+ StringType& operator=(const StringType&) noexcept;
650
+ StringType() noexcept;
313
651
 
314
- virtual ~StringType() throw();
652
+ virtual ~StringType() noexcept;
315
653
 
316
- bool operator == (const StringType & /* rhs */) const
317
- {
318
- return true;
319
- }
320
- bool operator != (const StringType &rhs) const {
321
- return !(*this == rhs);
322
- }
323
-
324
- bool operator < (const StringType & ) const;
325
-
326
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
327
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
654
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
655
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
328
656
 
329
657
  virtual void printTo(std::ostream& out) const;
330
658
  };
@@ -334,28 +662,17 @@ void swap(StringType &a, StringType &b);
334
662
  std::ostream& operator<<(std::ostream& out, const StringType& obj);
335
663
 
336
664
 
337
- class UUIDType : public virtual ::duckdb_apache::thrift::TBase {
665
+ class UUIDType : public virtual ::apache::thrift::TBase {
338
666
  public:
339
667
 
340
- UUIDType(const UUIDType&);
341
- UUIDType& operator=(const UUIDType&);
342
- UUIDType() {
343
- }
344
-
345
- virtual ~UUIDType() throw();
346
-
347
- bool operator == (const UUIDType & /* rhs */) const
348
- {
349
- return true;
350
- }
351
- bool operator != (const UUIDType &rhs) const {
352
- return !(*this == rhs);
353
- }
668
+ UUIDType(const UUIDType&) noexcept;
669
+ UUIDType& operator=(const UUIDType&) noexcept;
670
+ UUIDType() noexcept;
354
671
 
355
- bool operator < (const UUIDType & ) const;
672
+ virtual ~UUIDType() noexcept;
356
673
 
357
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
358
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
674
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
675
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
359
676
 
360
677
  virtual void printTo(std::ostream& out) const;
361
678
  };
@@ -365,28 +682,17 @@ void swap(UUIDType &a, UUIDType &b);
365
682
  std::ostream& operator<<(std::ostream& out, const UUIDType& obj);
366
683
 
367
684
 
368
- class MapType : public virtual ::duckdb_apache::thrift::TBase {
685
+ class MapType : public virtual ::apache::thrift::TBase {
369
686
  public:
370
687
 
371
- MapType(const MapType&);
372
- MapType& operator=(const MapType&);
373
- MapType() {
374
- }
688
+ MapType(const MapType&) noexcept;
689
+ MapType& operator=(const MapType&) noexcept;
690
+ MapType() noexcept;
375
691
 
376
- virtual ~MapType() throw();
692
+ virtual ~MapType() noexcept;
377
693
 
378
- bool operator == (const MapType & /* rhs */) const
379
- {
380
- return true;
381
- }
382
- bool operator != (const MapType &rhs) const {
383
- return !(*this == rhs);
384
- }
385
-
386
- bool operator < (const MapType & ) const;
387
-
388
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
389
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
694
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
695
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
390
696
 
391
697
  virtual void printTo(std::ostream& out) const;
392
698
  };
@@ -396,28 +702,17 @@ void swap(MapType &a, MapType &b);
396
702
  std::ostream& operator<<(std::ostream& out, const MapType& obj);
397
703
 
398
704
 
399
- class ListType : public virtual ::duckdb_apache::thrift::TBase {
705
+ class ListType : public virtual ::apache::thrift::TBase {
400
706
  public:
401
707
 
402
- ListType(const ListType&);
403
- ListType& operator=(const ListType&);
404
- ListType() {
405
- }
406
-
407
- virtual ~ListType() throw();
408
-
409
- bool operator == (const ListType & /* rhs */) const
410
- {
411
- return true;
412
- }
413
- bool operator != (const ListType &rhs) const {
414
- return !(*this == rhs);
415
- }
708
+ ListType(const ListType&) noexcept;
709
+ ListType& operator=(const ListType&) noexcept;
710
+ ListType() noexcept;
416
711
 
417
- bool operator < (const ListType & ) const;
712
+ virtual ~ListType() noexcept;
418
713
 
419
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
420
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
714
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
715
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
421
716
 
422
717
  virtual void printTo(std::ostream& out) const;
423
718
  };
@@ -427,28 +722,17 @@ void swap(ListType &a, ListType &b);
427
722
  std::ostream& operator<<(std::ostream& out, const ListType& obj);
428
723
 
429
724
 
430
- class EnumType : public virtual ::duckdb_apache::thrift::TBase {
725
+ class EnumType : public virtual ::apache::thrift::TBase {
431
726
  public:
432
727
 
433
- EnumType(const EnumType&);
434
- EnumType& operator=(const EnumType&);
435
- EnumType() {
436
- }
728
+ EnumType(const EnumType&) noexcept;
729
+ EnumType& operator=(const EnumType&) noexcept;
730
+ EnumType() noexcept;
437
731
 
438
- virtual ~EnumType() throw();
732
+ virtual ~EnumType() noexcept;
439
733
 
440
- bool operator == (const EnumType & /* rhs */) const
441
- {
442
- return true;
443
- }
444
- bool operator != (const EnumType &rhs) const {
445
- return !(*this == rhs);
446
- }
447
-
448
- bool operator < (const EnumType & ) const;
449
-
450
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
451
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
734
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
735
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
452
736
 
453
737
  virtual void printTo(std::ostream& out) const;
454
738
  };
@@ -458,28 +742,17 @@ void swap(EnumType &a, EnumType &b);
458
742
  std::ostream& operator<<(std::ostream& out, const EnumType& obj);
459
743
 
460
744
 
461
- class DateType : public virtual ::duckdb_apache::thrift::TBase {
745
+ class DateType : public virtual ::apache::thrift::TBase {
462
746
  public:
463
747
 
464
- DateType(const DateType&);
465
- DateType& operator=(const DateType&);
466
- DateType() {
467
- }
468
-
469
- virtual ~DateType() throw();
470
-
471
- bool operator == (const DateType & /* rhs */) const
472
- {
473
- return true;
474
- }
475
- bool operator != (const DateType &rhs) const {
476
- return !(*this == rhs);
477
- }
748
+ DateType(const DateType&) noexcept;
749
+ DateType& operator=(const DateType&) noexcept;
750
+ DateType() noexcept;
478
751
 
479
- bool operator < (const DateType & ) const;
752
+ virtual ~DateType() noexcept;
480
753
 
481
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
482
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
754
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
755
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
483
756
 
484
757
  virtual void printTo(std::ostream& out) const;
485
758
  };
@@ -489,28 +762,44 @@ void swap(DateType &a, DateType &b);
489
762
  std::ostream& operator<<(std::ostream& out, const DateType& obj);
490
763
 
491
764
 
492
- class NullType : public virtual ::duckdb_apache::thrift::TBase {
765
+ class Float16Type : public virtual ::apache::thrift::TBase {
493
766
  public:
494
767
 
495
- NullType(const NullType&);
496
- NullType& operator=(const NullType&);
497
- NullType() {
498
- }
768
+ Float16Type(const Float16Type&) noexcept;
769
+ Float16Type& operator=(const Float16Type&) noexcept;
770
+ Float16Type() noexcept;
499
771
 
500
- virtual ~NullType() throw();
772
+ virtual ~Float16Type() noexcept;
501
773
 
502
- bool operator == (const NullType & /* rhs */) const
503
- {
504
- return true;
505
- }
506
- bool operator != (const NullType &rhs) const {
507
- return !(*this == rhs);
508
- }
774
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
775
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
509
776
 
510
- bool operator < (const NullType & ) const;
777
+ virtual void printTo(std::ostream& out) const;
778
+ };
779
+
780
+ void swap(Float16Type &a, Float16Type &b);
781
+
782
+ std::ostream& operator<<(std::ostream& out, const Float16Type& obj);
783
+
784
+
785
+ /**
786
+ * Logical type to annotate a column that is always null.
787
+ *
788
+ * Sometimes when discovering the schema of existing data, values are always
789
+ * null and the physical type can't be determined. This annotation signals
790
+ * the case where the physical type was guessed from all null values.
791
+ */
792
+ class NullType : public virtual ::apache::thrift::TBase {
793
+ public:
511
794
 
512
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
513
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
795
+ NullType(const NullType&) noexcept;
796
+ NullType& operator=(const NullType&) noexcept;
797
+ NullType() noexcept;
798
+
799
+ virtual ~NullType() noexcept;
800
+
801
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
802
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
514
803
 
515
804
  virtual void printTo(std::ostream& out) const;
516
805
  };
@@ -520,15 +809,25 @@ void swap(NullType &a, NullType &b);
520
809
  std::ostream& operator<<(std::ostream& out, const NullType& obj);
521
810
 
522
811
 
523
- class DecimalType : public virtual ::duckdb_apache::thrift::TBase {
812
+ /**
813
+ * Decimal logical type annotation
814
+ *
815
+ * Scale must be zero or a positive integer less than or equal to the precision.
816
+ * Precision must be a non-zero positive integer.
817
+ *
818
+ * To maintain forward-compatibility in v1, implementations using this logical
819
+ * type must also set scale and precision on the annotated SchemaElement.
820
+ *
821
+ * Allowed for physical types: INT32, INT64, FIXED_LEN_BYTE_ARRAY, and BYTE_ARRAY.
822
+ */
823
+ class DecimalType : public virtual ::apache::thrift::TBase {
524
824
  public:
525
825
 
526
- DecimalType(const DecimalType&);
527
- DecimalType& operator=(const DecimalType&);
528
- DecimalType() : scale(0), precision(0) {
529
- }
826
+ DecimalType(const DecimalType&) noexcept;
827
+ DecimalType& operator=(const DecimalType&) noexcept;
828
+ DecimalType() noexcept;
530
829
 
531
- virtual ~DecimalType() throw();
830
+ virtual ~DecimalType() noexcept;
532
831
  int32_t scale;
533
832
  int32_t precision;
534
833
 
@@ -536,22 +835,8 @@ class DecimalType : public virtual ::duckdb_apache::thrift::TBase {
536
835
 
537
836
  void __set_precision(const int32_t val);
538
837
 
539
- bool operator == (const DecimalType & rhs) const
540
- {
541
- if (!(scale == rhs.scale))
542
- return false;
543
- if (!(precision == rhs.precision))
544
- return false;
545
- return true;
546
- }
547
- bool operator != (const DecimalType &rhs) const {
548
- return !(*this == rhs);
549
- }
550
-
551
- bool operator < (const DecimalType & ) const;
552
-
553
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
554
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
838
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
839
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
555
840
 
556
841
  virtual void printTo(std::ostream& out) const;
557
842
  };
@@ -561,28 +846,20 @@ void swap(DecimalType &a, DecimalType &b);
561
846
  std::ostream& operator<<(std::ostream& out, const DecimalType& obj);
562
847
 
563
848
 
564
- class MilliSeconds : public virtual ::duckdb_apache::thrift::TBase {
849
+ /**
850
+ * Time units for logical types
851
+ */
852
+ class MilliSeconds : public virtual ::apache::thrift::TBase {
565
853
  public:
566
854
 
567
- MilliSeconds(const MilliSeconds&);
568
- MilliSeconds& operator=(const MilliSeconds&);
569
- MilliSeconds() {
570
- }
855
+ MilliSeconds(const MilliSeconds&) noexcept;
856
+ MilliSeconds& operator=(const MilliSeconds&) noexcept;
857
+ MilliSeconds() noexcept;
571
858
 
572
- virtual ~MilliSeconds() throw();
859
+ virtual ~MilliSeconds() noexcept;
573
860
 
574
- bool operator == (const MilliSeconds & /* rhs */) const
575
- {
576
- return true;
577
- }
578
- bool operator != (const MilliSeconds &rhs) const {
579
- return !(*this == rhs);
580
- }
581
-
582
- bool operator < (const MilliSeconds & ) const;
583
-
584
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
585
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
861
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
862
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
586
863
 
587
864
  virtual void printTo(std::ostream& out) const;
588
865
  };
@@ -592,28 +869,17 @@ void swap(MilliSeconds &a, MilliSeconds &b);
592
869
  std::ostream& operator<<(std::ostream& out, const MilliSeconds& obj);
593
870
 
594
871
 
595
- class MicroSeconds : public virtual ::duckdb_apache::thrift::TBase {
872
+ class MicroSeconds : public virtual ::apache::thrift::TBase {
596
873
  public:
597
874
 
598
- MicroSeconds(const MicroSeconds&);
599
- MicroSeconds& operator=(const MicroSeconds&);
600
- MicroSeconds() {
601
- }
602
-
603
- virtual ~MicroSeconds() throw();
604
-
605
- bool operator == (const MicroSeconds & /* rhs */) const
606
- {
607
- return true;
608
- }
609
- bool operator != (const MicroSeconds &rhs) const {
610
- return !(*this == rhs);
611
- }
875
+ MicroSeconds(const MicroSeconds&) noexcept;
876
+ MicroSeconds& operator=(const MicroSeconds&) noexcept;
877
+ MicroSeconds() noexcept;
612
878
 
613
- bool operator < (const MicroSeconds & ) const;
879
+ virtual ~MicroSeconds() noexcept;
614
880
 
615
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
616
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
881
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
882
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
617
883
 
618
884
  virtual void printTo(std::ostream& out) const;
619
885
  };
@@ -623,28 +889,17 @@ void swap(MicroSeconds &a, MicroSeconds &b);
623
889
  std::ostream& operator<<(std::ostream& out, const MicroSeconds& obj);
624
890
 
625
891
 
626
- class NanoSeconds : public virtual ::duckdb_apache::thrift::TBase {
892
+ class NanoSeconds : public virtual ::apache::thrift::TBase {
627
893
  public:
628
894
 
629
- NanoSeconds(const NanoSeconds&);
630
- NanoSeconds& operator=(const NanoSeconds&);
631
- NanoSeconds() {
632
- }
895
+ NanoSeconds(const NanoSeconds&) noexcept;
896
+ NanoSeconds& operator=(const NanoSeconds&) noexcept;
897
+ NanoSeconds() noexcept;
633
898
 
634
- virtual ~NanoSeconds() throw();
899
+ virtual ~NanoSeconds() noexcept;
635
900
 
636
- bool operator == (const NanoSeconds & /* rhs */) const
637
- {
638
- return true;
639
- }
640
- bool operator != (const NanoSeconds &rhs) const {
641
- return !(*this == rhs);
642
- }
643
-
644
- bool operator < (const NanoSeconds & ) const;
645
-
646
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
647
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
901
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
902
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
648
903
 
649
904
  virtual void printTo(std::ostream& out) const;
650
905
  };
@@ -660,15 +915,14 @@ typedef struct _TimeUnit__isset {
660
915
  bool NANOS :1;
661
916
  } _TimeUnit__isset;
662
917
 
663
- class TimeUnit : public virtual ::duckdb_apache::thrift::TBase {
918
+ class TimeUnit : public virtual ::apache::thrift::TBase {
664
919
  public:
665
920
 
666
- TimeUnit(const TimeUnit&);
667
- TimeUnit& operator=(const TimeUnit&);
668
- TimeUnit() {
669
- }
921
+ TimeUnit(const TimeUnit&) noexcept;
922
+ TimeUnit& operator=(const TimeUnit&) noexcept;
923
+ TimeUnit() noexcept;
670
924
 
671
- virtual ~TimeUnit() throw();
925
+ virtual ~TimeUnit() noexcept;
672
926
  MilliSeconds MILLIS;
673
927
  MicroSeconds MICROS;
674
928
  NanoSeconds NANOS;
@@ -681,30 +935,8 @@ class TimeUnit : public virtual ::duckdb_apache::thrift::TBase {
681
935
 
682
936
  void __set_NANOS(const NanoSeconds& val);
683
937
 
684
- bool operator == (const TimeUnit & rhs) const
685
- {
686
- if (__isset.MILLIS != rhs.__isset.MILLIS)
687
- return false;
688
- else if (__isset.MILLIS && !(MILLIS == rhs.MILLIS))
689
- return false;
690
- if (__isset.MICROS != rhs.__isset.MICROS)
691
- return false;
692
- else if (__isset.MICROS && !(MICROS == rhs.MICROS))
693
- return false;
694
- if (__isset.NANOS != rhs.__isset.NANOS)
695
- return false;
696
- else if (__isset.NANOS && !(NANOS == rhs.NANOS))
697
- return false;
698
- return true;
699
- }
700
- bool operator != (const TimeUnit &rhs) const {
701
- return !(*this == rhs);
702
- }
703
-
704
- bool operator < (const TimeUnit & ) const;
705
-
706
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
707
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
938
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
939
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
708
940
 
709
941
  virtual void printTo(std::ostream& out) const;
710
942
  };
@@ -714,15 +946,19 @@ void swap(TimeUnit &a, TimeUnit &b);
714
946
  std::ostream& operator<<(std::ostream& out, const TimeUnit& obj);
715
947
 
716
948
 
717
- class TimestampType : public virtual ::duckdb_apache::thrift::TBase {
949
+ /**
950
+ * Timestamp logical type annotation
951
+ *
952
+ * Allowed for physical types: INT64
953
+ */
954
+ class TimestampType : public virtual ::apache::thrift::TBase {
718
955
  public:
719
956
 
720
- TimestampType(const TimestampType&);
721
- TimestampType& operator=(const TimestampType&);
722
- TimestampType() : isAdjustedToUTC(0) {
723
- }
957
+ TimestampType(const TimestampType&) noexcept;
958
+ TimestampType& operator=(const TimestampType&) noexcept;
959
+ TimestampType() noexcept;
724
960
 
725
- virtual ~TimestampType() throw();
961
+ virtual ~TimestampType() noexcept;
726
962
  bool isAdjustedToUTC;
727
963
  TimeUnit unit;
728
964
 
@@ -730,22 +966,8 @@ class TimestampType : public virtual ::duckdb_apache::thrift::TBase {
730
966
 
731
967
  void __set_unit(const TimeUnit& val);
732
968
 
733
- bool operator == (const TimestampType & rhs) const
734
- {
735
- if (!(isAdjustedToUTC == rhs.isAdjustedToUTC))
736
- return false;
737
- if (!(unit == rhs.unit))
738
- return false;
739
- return true;
740
- }
741
- bool operator != (const TimestampType &rhs) const {
742
- return !(*this == rhs);
743
- }
744
-
745
- bool operator < (const TimestampType & ) const;
746
-
747
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
748
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
969
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
970
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
749
971
 
750
972
  virtual void printTo(std::ostream& out) const;
751
973
  };
@@ -755,15 +977,19 @@ void swap(TimestampType &a, TimestampType &b);
755
977
  std::ostream& operator<<(std::ostream& out, const TimestampType& obj);
756
978
 
757
979
 
758
- class TimeType : public virtual ::duckdb_apache::thrift::TBase {
980
+ /**
981
+ * Time logical type annotation
982
+ *
983
+ * Allowed for physical types: INT32 (millis), INT64 (micros, nanos)
984
+ */
985
+ class TimeType : public virtual ::apache::thrift::TBase {
759
986
  public:
760
987
 
761
- TimeType(const TimeType&);
762
- TimeType& operator=(const TimeType&);
763
- TimeType() : isAdjustedToUTC(0) {
764
- }
988
+ TimeType(const TimeType&) noexcept;
989
+ TimeType& operator=(const TimeType&) noexcept;
990
+ TimeType() noexcept;
765
991
 
766
- virtual ~TimeType() throw();
992
+ virtual ~TimeType() noexcept;
767
993
  bool isAdjustedToUTC;
768
994
  TimeUnit unit;
769
995
 
@@ -771,22 +997,8 @@ class TimeType : public virtual ::duckdb_apache::thrift::TBase {
771
997
 
772
998
  void __set_unit(const TimeUnit& val);
773
999
 
774
- bool operator == (const TimeType & rhs) const
775
- {
776
- if (!(isAdjustedToUTC == rhs.isAdjustedToUTC))
777
- return false;
778
- if (!(unit == rhs.unit))
779
- return false;
780
- return true;
781
- }
782
- bool operator != (const TimeType &rhs) const {
783
- return !(*this == rhs);
784
- }
785
-
786
- bool operator < (const TimeType & ) const;
787
-
788
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
789
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
1000
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
1001
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
790
1002
 
791
1003
  virtual void printTo(std::ostream& out) const;
792
1004
  };
@@ -796,15 +1008,21 @@ void swap(TimeType &a, TimeType &b);
796
1008
  std::ostream& operator<<(std::ostream& out, const TimeType& obj);
797
1009
 
798
1010
 
799
- class IntType : public virtual ::duckdb_apache::thrift::TBase {
1011
+ /**
1012
+ * Integer logical type annotation
1013
+ *
1014
+ * bitWidth must be 8, 16, 32, or 64.
1015
+ *
1016
+ * Allowed for physical types: INT32, INT64
1017
+ */
1018
+ class IntType : public virtual ::apache::thrift::TBase {
800
1019
  public:
801
1020
 
802
- IntType(const IntType&);
803
- IntType& operator=(const IntType&);
804
- IntType() : bitWidth(0), isSigned(0) {
805
- }
1021
+ IntType(const IntType&) noexcept;
1022
+ IntType& operator=(const IntType&) noexcept;
1023
+ IntType() noexcept;
806
1024
 
807
- virtual ~IntType() throw();
1025
+ virtual ~IntType() noexcept;
808
1026
  int8_t bitWidth;
809
1027
  bool isSigned;
810
1028
 
@@ -812,22 +1030,8 @@ class IntType : public virtual ::duckdb_apache::thrift::TBase {
812
1030
 
813
1031
  void __set_isSigned(const bool val);
814
1032
 
815
- bool operator == (const IntType & rhs) const
816
- {
817
- if (!(bitWidth == rhs.bitWidth))
818
- return false;
819
- if (!(isSigned == rhs.isSigned))
820
- return false;
821
- return true;
822
- }
823
- bool operator != (const IntType &rhs) const {
824
- return !(*this == rhs);
825
- }
826
-
827
- bool operator < (const IntType & ) const;
828
-
829
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
830
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
1033
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
1034
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
831
1035
 
832
1036
  virtual void printTo(std::ostream& out) const;
833
1037
  };
@@ -837,28 +1041,22 @@ void swap(IntType &a, IntType &b);
837
1041
  std::ostream& operator<<(std::ostream& out, const IntType& obj);
838
1042
 
839
1043
 
840
- class JsonType : public virtual ::duckdb_apache::thrift::TBase {
1044
+ /**
1045
+ * Embedded JSON logical type annotation
1046
+ *
1047
+ * Allowed for physical types: BYTE_ARRAY
1048
+ */
1049
+ class JsonType : public virtual ::apache::thrift::TBase {
841
1050
  public:
842
1051
 
843
- JsonType(const JsonType&);
844
- JsonType& operator=(const JsonType&);
845
- JsonType() {
846
- }
847
-
848
- virtual ~JsonType() throw();
1052
+ JsonType(const JsonType&) noexcept;
1053
+ JsonType& operator=(const JsonType&) noexcept;
1054
+ JsonType() noexcept;
849
1055
 
850
- bool operator == (const JsonType & /* rhs */) const
851
- {
852
- return true;
853
- }
854
- bool operator != (const JsonType &rhs) const {
855
- return !(*this == rhs);
856
- }
1056
+ virtual ~JsonType() noexcept;
857
1057
 
858
- bool operator < (const JsonType & ) const;
859
-
860
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
861
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
1058
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
1059
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
862
1060
 
863
1061
  virtual void printTo(std::ostream& out) const;
864
1062
  };
@@ -868,28 +1066,22 @@ void swap(JsonType &a, JsonType &b);
868
1066
  std::ostream& operator<<(std::ostream& out, const JsonType& obj);
869
1067
 
870
1068
 
871
- class BsonType : public virtual ::duckdb_apache::thrift::TBase {
1069
+ /**
1070
+ * Embedded BSON logical type annotation
1071
+ *
1072
+ * Allowed for physical types: BYTE_ARRAY
1073
+ */
1074
+ class BsonType : public virtual ::apache::thrift::TBase {
872
1075
  public:
873
1076
 
874
- BsonType(const BsonType&);
875
- BsonType& operator=(const BsonType&);
876
- BsonType() {
877
- }
878
-
879
- virtual ~BsonType() throw();
1077
+ BsonType(const BsonType&) noexcept;
1078
+ BsonType& operator=(const BsonType&) noexcept;
1079
+ BsonType() noexcept;
880
1080
 
881
- bool operator == (const BsonType & /* rhs */) const
882
- {
883
- return true;
884
- }
885
- bool operator != (const BsonType &rhs) const {
886
- return !(*this == rhs);
887
- }
1081
+ virtual ~BsonType() noexcept;
888
1082
 
889
- bool operator < (const BsonType & ) const;
890
-
891
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
892
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
1083
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
1084
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
893
1085
 
894
1086
  virtual void printTo(std::ostream& out) const;
895
1087
  };
@@ -899,7 +1091,7 @@ void swap(BsonType &a, BsonType &b);
899
1091
  std::ostream& operator<<(std::ostream& out, const BsonType& obj);
900
1092
 
901
1093
  typedef struct _LogicalType__isset {
902
- _LogicalType__isset() : STRING(false), MAP(false), LIST(false), ENUM(false), DECIMAL(false), DATE(false), TIME(false), TIMESTAMP(false), INTEGER(false), UNKNOWN(false), JSON(false), BSON(false), UUID(false) {}
1094
+ _LogicalType__isset() : STRING(false), MAP(false), LIST(false), ENUM(false), DECIMAL(false), DATE(false), TIME(false), TIMESTAMP(false), INTEGER(false), UNKNOWN(false), JSON(false), BSON(false), UUID(false), FLOAT16(false) {}
903
1095
  bool STRING :1;
904
1096
  bool MAP :1;
905
1097
  bool LIST :1;
@@ -913,17 +1105,24 @@ typedef struct _LogicalType__isset {
913
1105
  bool JSON :1;
914
1106
  bool BSON :1;
915
1107
  bool UUID :1;
1108
+ bool FLOAT16 :1;
916
1109
  } _LogicalType__isset;
917
1110
 
918
- class LogicalType : public virtual ::duckdb_apache::thrift::TBase {
1111
+ /**
1112
+ * LogicalType annotations to replace ConvertedType.
1113
+ *
1114
+ * To maintain compatibility, implementations using LogicalType for a
1115
+ * SchemaElement must also set the corresponding ConvertedType (if any)
1116
+ * from the following table.
1117
+ */
1118
+ class LogicalType : public virtual ::apache::thrift::TBase {
919
1119
  public:
920
1120
 
921
- LogicalType(const LogicalType&);
922
- LogicalType& operator=(const LogicalType&);
923
- LogicalType() {
924
- }
1121
+ LogicalType(const LogicalType&) noexcept;
1122
+ LogicalType& operator=(const LogicalType&) noexcept;
1123
+ LogicalType() noexcept;
925
1124
 
926
- virtual ~LogicalType() throw();
1125
+ virtual ~LogicalType() noexcept;
927
1126
  StringType STRING;
928
1127
  MapType MAP;
929
1128
  ListType LIST;
@@ -937,6 +1136,7 @@ class LogicalType : public virtual ::duckdb_apache::thrift::TBase {
937
1136
  JsonType JSON;
938
1137
  BsonType BSON;
939
1138
  UUIDType UUID;
1139
+ Float16Type FLOAT16;
940
1140
 
941
1141
  _LogicalType__isset __isset;
942
1142
 
@@ -966,70 +1166,10 @@ class LogicalType : public virtual ::duckdb_apache::thrift::TBase {
966
1166
 
967
1167
  void __set_UUID(const UUIDType& val);
968
1168
 
969
- bool operator == (const LogicalType & rhs) const
970
- {
971
- if (__isset.STRING != rhs.__isset.STRING)
972
- return false;
973
- else if (__isset.STRING && !(STRING == rhs.STRING))
974
- return false;
975
- if (__isset.MAP != rhs.__isset.MAP)
976
- return false;
977
- else if (__isset.MAP && !(MAP == rhs.MAP))
978
- return false;
979
- if (__isset.LIST != rhs.__isset.LIST)
980
- return false;
981
- else if (__isset.LIST && !(LIST == rhs.LIST))
982
- return false;
983
- if (__isset.ENUM != rhs.__isset.ENUM)
984
- return false;
985
- else if (__isset.ENUM && !(ENUM == rhs.ENUM))
986
- return false;
987
- if (__isset.DECIMAL != rhs.__isset.DECIMAL)
988
- return false;
989
- else if (__isset.DECIMAL && !(DECIMAL == rhs.DECIMAL))
990
- return false;
991
- if (__isset.DATE != rhs.__isset.DATE)
992
- return false;
993
- else if (__isset.DATE && !(DATE == rhs.DATE))
994
- return false;
995
- if (__isset.TIME != rhs.__isset.TIME)
996
- return false;
997
- else if (__isset.TIME && !(TIME == rhs.TIME))
998
- return false;
999
- if (__isset.TIMESTAMP != rhs.__isset.TIMESTAMP)
1000
- return false;
1001
- else if (__isset.TIMESTAMP && !(TIMESTAMP == rhs.TIMESTAMP))
1002
- return false;
1003
- if (__isset.INTEGER != rhs.__isset.INTEGER)
1004
- return false;
1005
- else if (__isset.INTEGER && !(INTEGER == rhs.INTEGER))
1006
- return false;
1007
- if (__isset.UNKNOWN != rhs.__isset.UNKNOWN)
1008
- return false;
1009
- else if (__isset.UNKNOWN && !(UNKNOWN == rhs.UNKNOWN))
1010
- return false;
1011
- if (__isset.JSON != rhs.__isset.JSON)
1012
- return false;
1013
- else if (__isset.JSON && !(JSON == rhs.JSON))
1014
- return false;
1015
- if (__isset.BSON != rhs.__isset.BSON)
1016
- return false;
1017
- else if (__isset.BSON && !(BSON == rhs.BSON))
1018
- return false;
1019
- if (__isset.UUID != rhs.__isset.UUID)
1020
- return false;
1021
- else if (__isset.UUID && !(UUID == rhs.UUID))
1022
- return false;
1023
- return true;
1024
- }
1025
- bool operator != (const LogicalType &rhs) const {
1026
- return !(*this == rhs);
1027
- }
1028
-
1029
- bool operator < (const LogicalType & ) const;
1030
-
1031
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
1032
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
1169
+ void __set_FLOAT16(const Float16Type& val);
1170
+
1171
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
1172
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
1033
1173
 
1034
1174
  virtual void printTo(std::ostream& out) const;
1035
1175
  };
@@ -1051,24 +1191,79 @@ typedef struct _SchemaElement__isset {
1051
1191
  bool logicalType :1;
1052
1192
  } _SchemaElement__isset;
1053
1193
 
1054
- class SchemaElement : public virtual ::duckdb_apache::thrift::TBase {
1194
+ /**
1195
+ * Represents a element inside a schema definition.
1196
+ * - if it is a group (inner node) then type is undefined and num_children is defined
1197
+ * - if it is a primitive type (leaf) then type is defined and num_children is undefined
1198
+ * the nodes are listed in depth first traversal order.
1199
+ */
1200
+ class SchemaElement : public virtual ::apache::thrift::TBase {
1055
1201
  public:
1056
1202
 
1057
1203
  SchemaElement(const SchemaElement&);
1058
1204
  SchemaElement& operator=(const SchemaElement&);
1059
- SchemaElement() : type((Type::type)0), type_length(0), repetition_type((FieldRepetitionType::type)0), name(), num_children(0), converted_type((ConvertedType::type)0), scale(0), precision(0), field_id(0) {
1060
- }
1061
-
1062
- virtual ~SchemaElement() throw();
1205
+ SchemaElement() noexcept;
1206
+
1207
+ virtual ~SchemaElement() noexcept;
1208
+ /**
1209
+ * Data type for this field. Not set if the current element is a non-leaf node
1210
+ *
1211
+ * @see Type
1212
+ */
1063
1213
  Type::type type;
1214
+ /**
1215
+ * If type is FIXED_LEN_BYTE_ARRAY, this is the byte length of the values.
1216
+ * Otherwise, if specified, this is the maximum bit length to store any of the values.
1217
+ * (e.g. a low cardinality INT col could have this set to 3). Note that this is
1218
+ * in the schema, and therefore fixed for the entire file.
1219
+ */
1064
1220
  int32_t type_length;
1221
+ /**
1222
+ * repetition of the field. The root of the schema does not have a repetition_type.
1223
+ * All other nodes must have one
1224
+ *
1225
+ * @see FieldRepetitionType
1226
+ */
1065
1227
  FieldRepetitionType::type repetition_type;
1228
+ /**
1229
+ * Name of the field in the schema
1230
+ */
1066
1231
  std::string name;
1232
+ /**
1233
+ * Nested fields. Since thrift does not support nested fields,
1234
+ * the nesting is flattened to a single list by a depth-first traversal.
1235
+ * The children count is used to construct the nested relationship.
1236
+ * This field is not set when the element is a primitive type
1237
+ */
1067
1238
  int32_t num_children;
1239
+ /**
1240
+ * DEPRECATED: When the schema is the result of a conversion from another model.
1241
+ * Used to record the original type to help with cross conversion.
1242
+ *
1243
+ * This is superseded by logicalType.
1244
+ *
1245
+ * @see ConvertedType
1246
+ */
1068
1247
  ConvertedType::type converted_type;
1248
+ /**
1249
+ * DEPRECATED: Used when this column contains decimal data.
1250
+ * See the DECIMAL converted type for more details.
1251
+ *
1252
+ * This is superseded by using the DecimalType annotation in logicalType.
1253
+ */
1069
1254
  int32_t scale;
1070
1255
  int32_t precision;
1256
+ /**
1257
+ * When the original schema supports field ids, this will save the
1258
+ * original field id in the parquet schema
1259
+ */
1071
1260
  int32_t field_id;
1261
+ /**
1262
+ * The logical type of this SchemaElement
1263
+ *
1264
+ * LogicalType replaces ConvertedType, but ConvertedType is still required
1265
+ * for some logical types to ensure forward-compatibility in format v1.
1266
+ */
1072
1267
  LogicalType logicalType;
1073
1268
 
1074
1269
  _SchemaElement__isset __isset;
@@ -1093,56 +1288,8 @@ class SchemaElement : public virtual ::duckdb_apache::thrift::TBase {
1093
1288
 
1094
1289
  void __set_logicalType(const LogicalType& val);
1095
1290
 
1096
- bool operator == (const SchemaElement & rhs) const
1097
- {
1098
- if (__isset.type != rhs.__isset.type)
1099
- return false;
1100
- else if (__isset.type && !(type == rhs.type))
1101
- return false;
1102
- if (__isset.type_length != rhs.__isset.type_length)
1103
- return false;
1104
- else if (__isset.type_length && !(type_length == rhs.type_length))
1105
- return false;
1106
- if (__isset.repetition_type != rhs.__isset.repetition_type)
1107
- return false;
1108
- else if (__isset.repetition_type && !(repetition_type == rhs.repetition_type))
1109
- return false;
1110
- if (!(name == rhs.name))
1111
- return false;
1112
- if (__isset.num_children != rhs.__isset.num_children)
1113
- return false;
1114
- else if (__isset.num_children && !(num_children == rhs.num_children))
1115
- return false;
1116
- if (__isset.converted_type != rhs.__isset.converted_type)
1117
- return false;
1118
- else if (__isset.converted_type && !(converted_type == rhs.converted_type))
1119
- return false;
1120
- if (__isset.scale != rhs.__isset.scale)
1121
- return false;
1122
- else if (__isset.scale && !(scale == rhs.scale))
1123
- return false;
1124
- if (__isset.precision != rhs.__isset.precision)
1125
- return false;
1126
- else if (__isset.precision && !(precision == rhs.precision))
1127
- return false;
1128
- if (__isset.field_id != rhs.__isset.field_id)
1129
- return false;
1130
- else if (__isset.field_id && !(field_id == rhs.field_id))
1131
- return false;
1132
- if (__isset.logicalType != rhs.__isset.logicalType)
1133
- return false;
1134
- else if (__isset.logicalType && !(logicalType == rhs.logicalType))
1135
- return false;
1136
- return true;
1137
- }
1138
- bool operator != (const SchemaElement &rhs) const {
1139
- return !(*this == rhs);
1140
- }
1141
-
1142
- bool operator < (const SchemaElement & ) const;
1143
-
1144
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
1145
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
1291
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
1292
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
1146
1293
 
1147
1294
  virtual void printTo(std::ostream& out) const;
1148
1295
  };
@@ -1156,19 +1303,47 @@ typedef struct _DataPageHeader__isset {
1156
1303
  bool statistics :1;
1157
1304
  } _DataPageHeader__isset;
1158
1305
 
1159
- class DataPageHeader : public virtual ::duckdb_apache::thrift::TBase {
1306
+ /**
1307
+ * Data page header
1308
+ */
1309
+ class DataPageHeader : public virtual ::apache::thrift::TBase {
1160
1310
  public:
1161
1311
 
1162
1312
  DataPageHeader(const DataPageHeader&);
1163
1313
  DataPageHeader& operator=(const DataPageHeader&);
1164
- DataPageHeader() : num_values(0), encoding((Encoding::type)0), definition_level_encoding((Encoding::type)0), repetition_level_encoding((Encoding::type)0) {
1165
- }
1166
-
1167
- virtual ~DataPageHeader() throw();
1314
+ DataPageHeader() noexcept;
1315
+
1316
+ virtual ~DataPageHeader() noexcept;
1317
+ /**
1318
+ * Number of values, including NULLs, in this data page.
1319
+ *
1320
+ * If a OffsetIndex is present, a page must begin at a row
1321
+ * boundary (repetition_level = 0). Otherwise, pages may begin
1322
+ * within a row (repetition_level > 0).
1323
+ *
1324
+ */
1168
1325
  int32_t num_values;
1326
+ /**
1327
+ * Encoding used for this data page *
1328
+ *
1329
+ * @see Encoding
1330
+ */
1169
1331
  Encoding::type encoding;
1332
+ /**
1333
+ * Encoding used for definition levels *
1334
+ *
1335
+ * @see Encoding
1336
+ */
1170
1337
  Encoding::type definition_level_encoding;
1338
+ /**
1339
+ * Encoding used for repetition levels *
1340
+ *
1341
+ * @see Encoding
1342
+ */
1171
1343
  Encoding::type repetition_level_encoding;
1344
+ /**
1345
+ * Optional statistics for the data in this page *
1346
+ */
1172
1347
  Statistics statistics;
1173
1348
 
1174
1349
  _DataPageHeader__isset __isset;
@@ -1183,30 +1358,8 @@ class DataPageHeader : public virtual ::duckdb_apache::thrift::TBase {
1183
1358
 
1184
1359
  void __set_statistics(const Statistics& val);
1185
1360
 
1186
- bool operator == (const DataPageHeader & rhs) const
1187
- {
1188
- if (!(num_values == rhs.num_values))
1189
- return false;
1190
- if (!(encoding == rhs.encoding))
1191
- return false;
1192
- if (!(definition_level_encoding == rhs.definition_level_encoding))
1193
- return false;
1194
- if (!(repetition_level_encoding == rhs.repetition_level_encoding))
1195
- return false;
1196
- if (__isset.statistics != rhs.__isset.statistics)
1197
- return false;
1198
- else if (__isset.statistics && !(statistics == rhs.statistics))
1199
- return false;
1200
- return true;
1201
- }
1202
- bool operator != (const DataPageHeader &rhs) const {
1203
- return !(*this == rhs);
1204
- }
1205
-
1206
- bool operator < (const DataPageHeader & ) const;
1207
-
1208
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
1209
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
1361
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
1362
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
1210
1363
 
1211
1364
  virtual void printTo(std::ostream& out) const;
1212
1365
  };
@@ -1216,28 +1369,17 @@ void swap(DataPageHeader &a, DataPageHeader &b);
1216
1369
  std::ostream& operator<<(std::ostream& out, const DataPageHeader& obj);
1217
1370
 
1218
1371
 
1219
- class IndexPageHeader : public virtual ::duckdb_apache::thrift::TBase {
1372
+ class IndexPageHeader : public virtual ::apache::thrift::TBase {
1220
1373
  public:
1221
1374
 
1222
- IndexPageHeader(const IndexPageHeader&);
1223
- IndexPageHeader& operator=(const IndexPageHeader&);
1224
- IndexPageHeader() {
1225
- }
1226
-
1227
- virtual ~IndexPageHeader() throw();
1228
-
1229
- bool operator == (const IndexPageHeader & /* rhs */) const
1230
- {
1231
- return true;
1232
- }
1233
- bool operator != (const IndexPageHeader &rhs) const {
1234
- return !(*this == rhs);
1235
- }
1375
+ IndexPageHeader(const IndexPageHeader&) noexcept;
1376
+ IndexPageHeader& operator=(const IndexPageHeader&) noexcept;
1377
+ IndexPageHeader() noexcept;
1236
1378
 
1237
- bool operator < (const IndexPageHeader & ) const;
1379
+ virtual ~IndexPageHeader() noexcept;
1238
1380
 
1239
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
1240
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
1381
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
1382
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
1241
1383
 
1242
1384
  virtual void printTo(std::ostream& out) const;
1243
1385
  };
@@ -1251,17 +1393,33 @@ typedef struct _DictionaryPageHeader__isset {
1251
1393
  bool is_sorted :1;
1252
1394
  } _DictionaryPageHeader__isset;
1253
1395
 
1254
- class DictionaryPageHeader : public virtual ::duckdb_apache::thrift::TBase {
1396
+ /**
1397
+ * The dictionary page must be placed at the first position of the column chunk
1398
+ * if it is partly or completely dictionary encoded. At most one dictionary page
1399
+ * can be placed in a column chunk.
1400
+ *
1401
+ */
1402
+ class DictionaryPageHeader : public virtual ::apache::thrift::TBase {
1255
1403
  public:
1256
1404
 
1257
- DictionaryPageHeader(const DictionaryPageHeader&);
1258
- DictionaryPageHeader& operator=(const DictionaryPageHeader&);
1259
- DictionaryPageHeader() : num_values(0), encoding((Encoding::type)0), is_sorted(0) {
1260
- }
1405
+ DictionaryPageHeader(const DictionaryPageHeader&) noexcept;
1406
+ DictionaryPageHeader& operator=(const DictionaryPageHeader&) noexcept;
1407
+ DictionaryPageHeader() noexcept;
1261
1408
 
1262
- virtual ~DictionaryPageHeader() throw();
1409
+ virtual ~DictionaryPageHeader() noexcept;
1410
+ /**
1411
+ * Number of values in the dictionary *
1412
+ */
1263
1413
  int32_t num_values;
1414
+ /**
1415
+ * Encoding using this dictionary page *
1416
+ *
1417
+ * @see Encoding
1418
+ */
1264
1419
  Encoding::type encoding;
1420
+ /**
1421
+ * If true, the entries in the dictionary are sorted in ascending order *
1422
+ */
1265
1423
  bool is_sorted;
1266
1424
 
1267
1425
  _DictionaryPageHeader__isset __isset;
@@ -1272,26 +1430,8 @@ class DictionaryPageHeader : public virtual ::duckdb_apache::thrift::TBase {
1272
1430
 
1273
1431
  void __set_is_sorted(const bool val);
1274
1432
 
1275
- bool operator == (const DictionaryPageHeader & rhs) const
1276
- {
1277
- if (!(num_values == rhs.num_values))
1278
- return false;
1279
- if (!(encoding == rhs.encoding))
1280
- return false;
1281
- if (__isset.is_sorted != rhs.__isset.is_sorted)
1282
- return false;
1283
- else if (__isset.is_sorted && !(is_sorted == rhs.is_sorted))
1284
- return false;
1285
- return true;
1286
- }
1287
- bool operator != (const DictionaryPageHeader &rhs) const {
1288
- return !(*this == rhs);
1289
- }
1290
-
1291
- bool operator < (const DictionaryPageHeader & ) const;
1292
-
1293
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
1294
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
1433
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
1434
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
1295
1435
 
1296
1436
  virtual void printTo(std::ostream& out) const;
1297
1437
  };
@@ -1306,22 +1446,61 @@ typedef struct _DataPageHeaderV2__isset {
1306
1446
  bool statistics :1;
1307
1447
  } _DataPageHeaderV2__isset;
1308
1448
 
1309
- class DataPageHeaderV2 : public virtual ::duckdb_apache::thrift::TBase {
1449
+ /**
1450
+ * New page format allowing reading levels without decompressing the data
1451
+ * Repetition and definition levels are uncompressed
1452
+ * The remaining section containing the data is compressed if is_compressed is true
1453
+ *
1454
+ */
1455
+ class DataPageHeaderV2 : public virtual ::apache::thrift::TBase {
1310
1456
  public:
1311
1457
 
1312
1458
  DataPageHeaderV2(const DataPageHeaderV2&);
1313
1459
  DataPageHeaderV2& operator=(const DataPageHeaderV2&);
1314
- DataPageHeaderV2() : num_values(0), num_nulls(0), num_rows(0), encoding((Encoding::type)0), definition_levels_byte_length(0), repetition_levels_byte_length(0), is_compressed(true) {
1315
- }
1460
+ DataPageHeaderV2() noexcept;
1316
1461
 
1317
- virtual ~DataPageHeaderV2() throw();
1462
+ virtual ~DataPageHeaderV2() noexcept;
1463
+ /**
1464
+ * Number of values, including NULLs, in this data page. *
1465
+ */
1318
1466
  int32_t num_values;
1467
+ /**
1468
+ * Number of NULL values, in this data page.
1469
+ * Number of non-null = num_values - num_nulls which is also the number of values in the data section *
1470
+ */
1319
1471
  int32_t num_nulls;
1472
+ /**
1473
+ * Number of rows in this data page. Every page must begin at a
1474
+ * row boundary (repetition_level = 0): rows must **not** be
1475
+ * split across page boundaries when using V2 data pages.
1476
+ *
1477
+ */
1320
1478
  int32_t num_rows;
1479
+ /**
1480
+ * Encoding used for data in this page *
1481
+ *
1482
+ * @see Encoding
1483
+ */
1321
1484
  Encoding::type encoding;
1485
+ /**
1486
+ * Length of the definition levels
1487
+ */
1322
1488
  int32_t definition_levels_byte_length;
1489
+ /**
1490
+ * Length of the repetition levels
1491
+ */
1323
1492
  int32_t repetition_levels_byte_length;
1493
+ /**
1494
+ * Whether the values are compressed.
1495
+ * Which means the section of the page between
1496
+ * definition_levels_byte_length + repetition_levels_byte_length + 1 and compressed_page_size (included)
1497
+ * is compressed with the compression_codec.
1498
+ * If missing it is considered compressed
1499
+ */
1324
1500
  bool is_compressed;
1501
+ /**
1502
+ * Optional statistics for the data in this page *
1503
+ */
1325
1504
  Statistics statistics;
1326
1505
 
1327
1506
  _DataPageHeaderV2__isset __isset;
@@ -1342,38 +1521,8 @@ class DataPageHeaderV2 : public virtual ::duckdb_apache::thrift::TBase {
1342
1521
 
1343
1522
  void __set_statistics(const Statistics& val);
1344
1523
 
1345
- bool operator == (const DataPageHeaderV2 & rhs) const
1346
- {
1347
- if (!(num_values == rhs.num_values))
1348
- return false;
1349
- if (!(num_nulls == rhs.num_nulls))
1350
- return false;
1351
- if (!(num_rows == rhs.num_rows))
1352
- return false;
1353
- if (!(encoding == rhs.encoding))
1354
- return false;
1355
- if (!(definition_levels_byte_length == rhs.definition_levels_byte_length))
1356
- return false;
1357
- if (!(repetition_levels_byte_length == rhs.repetition_levels_byte_length))
1358
- return false;
1359
- if (__isset.is_compressed != rhs.__isset.is_compressed)
1360
- return false;
1361
- else if (__isset.is_compressed && !(is_compressed == rhs.is_compressed))
1362
- return false;
1363
- if (__isset.statistics != rhs.__isset.statistics)
1364
- return false;
1365
- else if (__isset.statistics && !(statistics == rhs.statistics))
1366
- return false;
1367
- return true;
1368
- }
1369
- bool operator != (const DataPageHeaderV2 &rhs) const {
1370
- return !(*this == rhs);
1371
- }
1372
-
1373
- bool operator < (const DataPageHeaderV2 & ) const;
1374
-
1375
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
1376
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
1524
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
1525
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
1377
1526
 
1378
1527
  virtual void printTo(std::ostream& out) const;
1379
1528
  };
@@ -1382,6 +1531,228 @@ void swap(DataPageHeaderV2 &a, DataPageHeaderV2 &b);
1382
1531
 
1383
1532
  std::ostream& operator<<(std::ostream& out, const DataPageHeaderV2& obj);
1384
1533
 
1534
+
1535
+ /**
1536
+ * Block-based algorithm type annotation. *
1537
+ */
1538
+ class SplitBlockAlgorithm : public virtual ::apache::thrift::TBase {
1539
+ public:
1540
+
1541
+ SplitBlockAlgorithm(const SplitBlockAlgorithm&) noexcept;
1542
+ SplitBlockAlgorithm& operator=(const SplitBlockAlgorithm&) noexcept;
1543
+ SplitBlockAlgorithm() noexcept;
1544
+
1545
+ virtual ~SplitBlockAlgorithm() noexcept;
1546
+
1547
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
1548
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
1549
+
1550
+ virtual void printTo(std::ostream& out) const;
1551
+ };
1552
+
1553
+ void swap(SplitBlockAlgorithm &a, SplitBlockAlgorithm &b);
1554
+
1555
+ std::ostream& operator<<(std::ostream& out, const SplitBlockAlgorithm& obj);
1556
+
1557
+ typedef struct _BloomFilterAlgorithm__isset {
1558
+ _BloomFilterAlgorithm__isset() : BLOCK(false) {}
1559
+ bool BLOCK :1;
1560
+ } _BloomFilterAlgorithm__isset;
1561
+
1562
+ /**
1563
+ * The algorithm used in Bloom filter. *
1564
+ */
1565
+ class BloomFilterAlgorithm : public virtual ::apache::thrift::TBase {
1566
+ public:
1567
+
1568
+ BloomFilterAlgorithm(const BloomFilterAlgorithm&) noexcept;
1569
+ BloomFilterAlgorithm& operator=(const BloomFilterAlgorithm&) noexcept;
1570
+ BloomFilterAlgorithm() noexcept;
1571
+
1572
+ virtual ~BloomFilterAlgorithm() noexcept;
1573
+ /**
1574
+ * Block-based Bloom filter. *
1575
+ */
1576
+ SplitBlockAlgorithm BLOCK;
1577
+
1578
+ _BloomFilterAlgorithm__isset __isset;
1579
+
1580
+ void __set_BLOCK(const SplitBlockAlgorithm& val);
1581
+
1582
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
1583
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
1584
+
1585
+ virtual void printTo(std::ostream& out) const;
1586
+ };
1587
+
1588
+ void swap(BloomFilterAlgorithm &a, BloomFilterAlgorithm &b);
1589
+
1590
+ std::ostream& operator<<(std::ostream& out, const BloomFilterAlgorithm& obj);
1591
+
1592
+
1593
+ /**
1594
+ * Hash strategy type annotation. xxHash is an extremely fast non-cryptographic hash
1595
+ * algorithm. It uses 64 bits version of xxHash.
1596
+ *
1597
+ */
1598
+ class XxHash : public virtual ::apache::thrift::TBase {
1599
+ public:
1600
+
1601
+ XxHash(const XxHash&) noexcept;
1602
+ XxHash& operator=(const XxHash&) noexcept;
1603
+ XxHash() noexcept;
1604
+
1605
+ virtual ~XxHash() noexcept;
1606
+
1607
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
1608
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
1609
+
1610
+ virtual void printTo(std::ostream& out) const;
1611
+ };
1612
+
1613
+ void swap(XxHash &a, XxHash &b);
1614
+
1615
+ std::ostream& operator<<(std::ostream& out, const XxHash& obj);
1616
+
1617
+ typedef struct _BloomFilterHash__isset {
1618
+ _BloomFilterHash__isset() : XXHASH(false) {}
1619
+ bool XXHASH :1;
1620
+ } _BloomFilterHash__isset;
1621
+
1622
+ /**
1623
+ * The hash function used in Bloom filter. This function takes the hash of a column value
1624
+ * using plain encoding.
1625
+ *
1626
+ */
1627
+ class BloomFilterHash : public virtual ::apache::thrift::TBase {
1628
+ public:
1629
+
1630
+ BloomFilterHash(const BloomFilterHash&) noexcept;
1631
+ BloomFilterHash& operator=(const BloomFilterHash&) noexcept;
1632
+ BloomFilterHash() noexcept;
1633
+
1634
+ virtual ~BloomFilterHash() noexcept;
1635
+ /**
1636
+ * xxHash Strategy. *
1637
+ */
1638
+ XxHash XXHASH;
1639
+
1640
+ _BloomFilterHash__isset __isset;
1641
+
1642
+ void __set_XXHASH(const XxHash& val);
1643
+
1644
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
1645
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
1646
+
1647
+ virtual void printTo(std::ostream& out) const;
1648
+ };
1649
+
1650
+ void swap(BloomFilterHash &a, BloomFilterHash &b);
1651
+
1652
+ std::ostream& operator<<(std::ostream& out, const BloomFilterHash& obj);
1653
+
1654
+
1655
+ /**
1656
+ * The compression used in the Bloom filter.
1657
+ *
1658
+ */
1659
+ class Uncompressed : public virtual ::apache::thrift::TBase {
1660
+ public:
1661
+
1662
+ Uncompressed(const Uncompressed&) noexcept;
1663
+ Uncompressed& operator=(const Uncompressed&) noexcept;
1664
+ Uncompressed() noexcept;
1665
+
1666
+ virtual ~Uncompressed() noexcept;
1667
+
1668
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
1669
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
1670
+
1671
+ virtual void printTo(std::ostream& out) const;
1672
+ };
1673
+
1674
+ void swap(Uncompressed &a, Uncompressed &b);
1675
+
1676
+ std::ostream& operator<<(std::ostream& out, const Uncompressed& obj);
1677
+
1678
+ typedef struct _BloomFilterCompression__isset {
1679
+ _BloomFilterCompression__isset() : UNCOMPRESSED(false) {}
1680
+ bool UNCOMPRESSED :1;
1681
+ } _BloomFilterCompression__isset;
1682
+
1683
+ class BloomFilterCompression : public virtual ::apache::thrift::TBase {
1684
+ public:
1685
+
1686
+ BloomFilterCompression(const BloomFilterCompression&) noexcept;
1687
+ BloomFilterCompression& operator=(const BloomFilterCompression&) noexcept;
1688
+ BloomFilterCompression() noexcept;
1689
+
1690
+ virtual ~BloomFilterCompression() noexcept;
1691
+ Uncompressed UNCOMPRESSED;
1692
+
1693
+ _BloomFilterCompression__isset __isset;
1694
+
1695
+ void __set_UNCOMPRESSED(const Uncompressed& val);
1696
+
1697
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
1698
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
1699
+
1700
+ virtual void printTo(std::ostream& out) const;
1701
+ };
1702
+
1703
+ void swap(BloomFilterCompression &a, BloomFilterCompression &b);
1704
+
1705
+ std::ostream& operator<<(std::ostream& out, const BloomFilterCompression& obj);
1706
+
1707
+
1708
+ /**
1709
+ * Bloom filter header is stored at beginning of Bloom filter data of each column
1710
+ * and followed by its bitset.
1711
+ *
1712
+ */
1713
+ class BloomFilterHeader : public virtual ::apache::thrift::TBase {
1714
+ public:
1715
+
1716
+ BloomFilterHeader(const BloomFilterHeader&) noexcept;
1717
+ BloomFilterHeader& operator=(const BloomFilterHeader&) noexcept;
1718
+ BloomFilterHeader() noexcept;
1719
+
1720
+ virtual ~BloomFilterHeader() noexcept;
1721
+ /**
1722
+ * The size of bitset in bytes *
1723
+ */
1724
+ int32_t numBytes;
1725
+ /**
1726
+ * The algorithm for setting bits. *
1727
+ */
1728
+ BloomFilterAlgorithm algorithm;
1729
+ /**
1730
+ * The hash function used for Bloom filter. *
1731
+ */
1732
+ BloomFilterHash hash;
1733
+ /**
1734
+ * The compression used in the Bloom filter *
1735
+ */
1736
+ BloomFilterCompression compression;
1737
+
1738
+ void __set_numBytes(const int32_t val);
1739
+
1740
+ void __set_algorithm(const BloomFilterAlgorithm& val);
1741
+
1742
+ void __set_hash(const BloomFilterHash& val);
1743
+
1744
+ void __set_compression(const BloomFilterCompression& val);
1745
+
1746
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
1747
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
1748
+
1749
+ virtual void printTo(std::ostream& out) const;
1750
+ };
1751
+
1752
+ void swap(BloomFilterHeader &a, BloomFilterHeader &b);
1753
+
1754
+ std::ostream& operator<<(std::ostream& out, const BloomFilterHeader& obj);
1755
+
1385
1756
  typedef struct _PageHeader__isset {
1386
1757
  _PageHeader__isset() : crc(false), data_page_header(false), index_page_header(false), dictionary_page_header(false), data_page_header_v2(false) {}
1387
1758
  bool crc :1;
@@ -1391,18 +1762,46 @@ typedef struct _PageHeader__isset {
1391
1762
  bool data_page_header_v2 :1;
1392
1763
  } _PageHeader__isset;
1393
1764
 
1394
- class PageHeader : public virtual ::duckdb_apache::thrift::TBase {
1765
+ class PageHeader : public virtual ::apache::thrift::TBase {
1395
1766
  public:
1396
1767
 
1397
1768
  PageHeader(const PageHeader&);
1398
1769
  PageHeader& operator=(const PageHeader&);
1399
- PageHeader() : type((PageType::type)0), uncompressed_page_size(0), compressed_page_size(0), crc(0) {
1400
- }
1401
-
1402
- virtual ~PageHeader() throw();
1770
+ PageHeader() noexcept;
1771
+
1772
+ virtual ~PageHeader() noexcept;
1773
+ /**
1774
+ * the type of the page: indicates which of the *_header fields is set *
1775
+ *
1776
+ * @see PageType
1777
+ */
1403
1778
  PageType::type type;
1779
+ /**
1780
+ * Uncompressed page size in bytes (not including this header) *
1781
+ */
1404
1782
  int32_t uncompressed_page_size;
1783
+ /**
1784
+ * Compressed (and potentially encrypted) page size in bytes, not including this header *
1785
+ */
1405
1786
  int32_t compressed_page_size;
1787
+ /**
1788
+ * The 32-bit CRC checksum for the page, to be be calculated as follows:
1789
+ *
1790
+ * - The standard CRC32 algorithm is used (with polynomial 0x04C11DB7,
1791
+ * the same as in e.g. GZip).
1792
+ * - All page types can have a CRC (v1 and v2 data pages, dictionary pages,
1793
+ * etc.).
1794
+ * - The CRC is computed on the serialization binary representation of the page
1795
+ * (as written to disk), excluding the page header. For example, for v1
1796
+ * data pages, the CRC is computed on the concatenation of repetition levels,
1797
+ * definition levels and column values (optionally compressed, optionally
1798
+ * encrypted).
1799
+ * - The CRC computation therefore takes place after any compression
1800
+ * and encryption steps, if any.
1801
+ *
1802
+ * If enabled, this allows for disabling checksumming in HDFS if only a few
1803
+ * pages need to be read.
1804
+ */
1406
1805
  int32_t crc;
1407
1806
  DataPageHeader data_page_header;
1408
1807
  IndexPageHeader index_page_header;
@@ -1427,44 +1826,8 @@ class PageHeader : public virtual ::duckdb_apache::thrift::TBase {
1427
1826
 
1428
1827
  void __set_data_page_header_v2(const DataPageHeaderV2& val);
1429
1828
 
1430
- bool operator == (const PageHeader & rhs) const
1431
- {
1432
- if (!(type == rhs.type))
1433
- return false;
1434
- if (!(uncompressed_page_size == rhs.uncompressed_page_size))
1435
- return false;
1436
- if (!(compressed_page_size == rhs.compressed_page_size))
1437
- return false;
1438
- if (__isset.crc != rhs.__isset.crc)
1439
- return false;
1440
- else if (__isset.crc && !(crc == rhs.crc))
1441
- return false;
1442
- if (__isset.data_page_header != rhs.__isset.data_page_header)
1443
- return false;
1444
- else if (__isset.data_page_header && !(data_page_header == rhs.data_page_header))
1445
- return false;
1446
- if (__isset.index_page_header != rhs.__isset.index_page_header)
1447
- return false;
1448
- else if (__isset.index_page_header && !(index_page_header == rhs.index_page_header))
1449
- return false;
1450
- if (__isset.dictionary_page_header != rhs.__isset.dictionary_page_header)
1451
- return false;
1452
- else if (__isset.dictionary_page_header && !(dictionary_page_header == rhs.dictionary_page_header))
1453
- return false;
1454
- if (__isset.data_page_header_v2 != rhs.__isset.data_page_header_v2)
1455
- return false;
1456
- else if (__isset.data_page_header_v2 && !(data_page_header_v2 == rhs.data_page_header_v2))
1457
- return false;
1458
- return true;
1459
- }
1460
- bool operator != (const PageHeader &rhs) const {
1461
- return !(*this == rhs);
1462
- }
1463
-
1464
- bool operator < (const PageHeader & ) const;
1465
-
1466
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
1467
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
1829
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
1830
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
1468
1831
 
1469
1832
  virtual void printTo(std::ostream& out) const;
1470
1833
  };
@@ -1478,15 +1841,17 @@ typedef struct _KeyValue__isset {
1478
1841
  bool value :1;
1479
1842
  } _KeyValue__isset;
1480
1843
 
1481
- class KeyValue : public virtual ::duckdb_apache::thrift::TBase {
1844
+ /**
1845
+ * Wrapper struct to store key values
1846
+ */
1847
+ class KeyValue : public virtual ::apache::thrift::TBase {
1482
1848
  public:
1483
1849
 
1484
1850
  KeyValue(const KeyValue&);
1485
1851
  KeyValue& operator=(const KeyValue&);
1486
- KeyValue() : key(), value() {
1487
- }
1852
+ KeyValue() noexcept;
1488
1853
 
1489
- virtual ~KeyValue() throw();
1854
+ virtual ~KeyValue() noexcept;
1490
1855
  std::string key;
1491
1856
  std::string value;
1492
1857
 
@@ -1496,24 +1861,8 @@ class KeyValue : public virtual ::duckdb_apache::thrift::TBase {
1496
1861
 
1497
1862
  void __set_value(const std::string& val);
1498
1863
 
1499
- bool operator == (const KeyValue & rhs) const
1500
- {
1501
- if (!(key == rhs.key))
1502
- return false;
1503
- if (__isset.value != rhs.__isset.value)
1504
- return false;
1505
- else if (__isset.value && !(value == rhs.value))
1506
- return false;
1507
- return true;
1508
- }
1509
- bool operator != (const KeyValue &rhs) const {
1510
- return !(*this == rhs);
1511
- }
1512
-
1513
- bool operator < (const KeyValue & ) const;
1514
-
1515
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
1516
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
1864
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
1865
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
1517
1866
 
1518
1867
  virtual void printTo(std::ostream& out) const;
1519
1868
  };
@@ -1523,17 +1872,29 @@ void swap(KeyValue &a, KeyValue &b);
1523
1872
  std::ostream& operator<<(std::ostream& out, const KeyValue& obj);
1524
1873
 
1525
1874
 
1526
- class SortingColumn : public virtual ::duckdb_apache::thrift::TBase {
1875
+ /**
1876
+ * Sort order within a RowGroup of a leaf column
1877
+ */
1878
+ class SortingColumn : public virtual ::apache::thrift::TBase {
1527
1879
  public:
1528
1880
 
1529
- SortingColumn(const SortingColumn&);
1530
- SortingColumn& operator=(const SortingColumn&);
1531
- SortingColumn() : column_idx(0), descending(0), nulls_first(0) {
1532
- }
1881
+ SortingColumn(const SortingColumn&) noexcept;
1882
+ SortingColumn& operator=(const SortingColumn&) noexcept;
1883
+ SortingColumn() noexcept;
1533
1884
 
1534
- virtual ~SortingColumn() throw();
1885
+ virtual ~SortingColumn() noexcept;
1886
+ /**
1887
+ * The ordinal position of the column (in this row group) *
1888
+ */
1535
1889
  int32_t column_idx;
1890
+ /**
1891
+ * If true, indicates this column is sorted in descending order. *
1892
+ */
1536
1893
  bool descending;
1894
+ /**
1895
+ * If true, nulls will come before non-null values, otherwise,
1896
+ * nulls go at the end.
1897
+ */
1537
1898
  bool nulls_first;
1538
1899
 
1539
1900
  void __set_column_idx(const int32_t val);
@@ -1542,24 +1903,8 @@ class SortingColumn : public virtual ::duckdb_apache::thrift::TBase {
1542
1903
 
1543
1904
  void __set_nulls_first(const bool val);
1544
1905
 
1545
- bool operator == (const SortingColumn & rhs) const
1546
- {
1547
- if (!(column_idx == rhs.column_idx))
1548
- return false;
1549
- if (!(descending == rhs.descending))
1550
- return false;
1551
- if (!(nulls_first == rhs.nulls_first))
1552
- return false;
1553
- return true;
1554
- }
1555
- bool operator != (const SortingColumn &rhs) const {
1556
- return !(*this == rhs);
1557
- }
1558
-
1559
- bool operator < (const SortingColumn & ) const;
1560
-
1561
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
1562
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
1906
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
1907
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
1563
1908
 
1564
1909
  virtual void printTo(std::ostream& out) const;
1565
1910
  };
@@ -1569,17 +1914,32 @@ void swap(SortingColumn &a, SortingColumn &b);
1569
1914
  std::ostream& operator<<(std::ostream& out, const SortingColumn& obj);
1570
1915
 
1571
1916
 
1572
- class PageEncodingStats : public virtual ::duckdb_apache::thrift::TBase {
1917
+ /**
1918
+ * statistics of a given page type and encoding
1919
+ */
1920
+ class PageEncodingStats : public virtual ::apache::thrift::TBase {
1573
1921
  public:
1574
1922
 
1575
- PageEncodingStats(const PageEncodingStats&);
1576
- PageEncodingStats& operator=(const PageEncodingStats&);
1577
- PageEncodingStats() : page_type((PageType::type)0), encoding((Encoding::type)0), count(0) {
1578
- }
1923
+ PageEncodingStats(const PageEncodingStats&) noexcept;
1924
+ PageEncodingStats& operator=(const PageEncodingStats&) noexcept;
1925
+ PageEncodingStats() noexcept;
1579
1926
 
1580
- virtual ~PageEncodingStats() throw();
1927
+ virtual ~PageEncodingStats() noexcept;
1928
+ /**
1929
+ * the page type (data/dic/...) *
1930
+ *
1931
+ * @see PageType
1932
+ */
1581
1933
  PageType::type page_type;
1934
+ /**
1935
+ * encoding of the page *
1936
+ *
1937
+ * @see Encoding
1938
+ */
1582
1939
  Encoding::type encoding;
1940
+ /**
1941
+ * number of pages of this type with this encoding *
1942
+ */
1583
1943
  int32_t count;
1584
1944
 
1585
1945
  void __set_page_type(const PageType::type val);
@@ -1588,24 +1948,8 @@ class PageEncodingStats : public virtual ::duckdb_apache::thrift::TBase {
1588
1948
 
1589
1949
  void __set_count(const int32_t val);
1590
1950
 
1591
- bool operator == (const PageEncodingStats & rhs) const
1592
- {
1593
- if (!(page_type == rhs.page_type))
1594
- return false;
1595
- if (!(encoding == rhs.encoding))
1596
- return false;
1597
- if (!(count == rhs.count))
1598
- return false;
1599
- return true;
1600
- }
1601
- bool operator != (const PageEncodingStats &rhs) const {
1602
- return !(*this == rhs);
1603
- }
1604
-
1605
- bool operator < (const PageEncodingStats & ) const;
1606
-
1607
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
1608
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
1951
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
1952
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
1609
1953
 
1610
1954
  virtual void printTo(std::ostream& out) const;
1611
1955
  };
@@ -1615,36 +1959,107 @@ void swap(PageEncodingStats &a, PageEncodingStats &b);
1615
1959
  std::ostream& operator<<(std::ostream& out, const PageEncodingStats& obj);
1616
1960
 
1617
1961
  typedef struct _ColumnMetaData__isset {
1618
- _ColumnMetaData__isset() : key_value_metadata(false), index_page_offset(false), dictionary_page_offset(false), statistics(false), encoding_stats(false) {}
1962
+ _ColumnMetaData__isset() : key_value_metadata(false), index_page_offset(false), dictionary_page_offset(false), statistics(false), encoding_stats(false), bloom_filter_offset(false), bloom_filter_length(false), size_statistics(false) {}
1619
1963
  bool key_value_metadata :1;
1620
1964
  bool index_page_offset :1;
1621
1965
  bool dictionary_page_offset :1;
1622
1966
  bool statistics :1;
1623
1967
  bool encoding_stats :1;
1968
+ bool bloom_filter_offset :1;
1969
+ bool bloom_filter_length :1;
1970
+ bool size_statistics :1;
1624
1971
  } _ColumnMetaData__isset;
1625
1972
 
1626
- class ColumnMetaData : public virtual ::duckdb_apache::thrift::TBase {
1973
+ /**
1974
+ * Description for column metadata
1975
+ */
1976
+ class ColumnMetaData : public virtual ::apache::thrift::TBase {
1627
1977
  public:
1628
1978
 
1629
1979
  ColumnMetaData(const ColumnMetaData&);
1630
1980
  ColumnMetaData& operator=(const ColumnMetaData&);
1631
- ColumnMetaData() : type((Type::type)0), codec((CompressionCodec::type)0), num_values(0), total_uncompressed_size(0), total_compressed_size(0), data_page_offset(0), index_page_offset(0), dictionary_page_offset(0) {
1632
- }
1633
-
1634
- virtual ~ColumnMetaData() throw();
1981
+ ColumnMetaData() noexcept;
1982
+
1983
+ virtual ~ColumnMetaData() noexcept;
1984
+ /**
1985
+ * Type of this column *
1986
+ *
1987
+ * @see Type
1988
+ */
1635
1989
  Type::type type;
1990
+ /**
1991
+ * Set of all encodings used for this column. The purpose is to validate
1992
+ * whether we can decode those pages. *
1993
+ */
1636
1994
  duckdb::vector<Encoding::type> encodings;
1995
+ /**
1996
+ * Path in schema *
1997
+ */
1637
1998
  duckdb::vector<std::string> path_in_schema;
1999
+ /**
2000
+ * Compression codec *
2001
+ *
2002
+ * @see CompressionCodec
2003
+ */
1638
2004
  CompressionCodec::type codec;
2005
+ /**
2006
+ * Number of values in this column *
2007
+ */
1639
2008
  int64_t num_values;
2009
+ /**
2010
+ * total byte size of all uncompressed pages in this column chunk (including the headers) *
2011
+ */
1640
2012
  int64_t total_uncompressed_size;
2013
+ /**
2014
+ * total byte size of all compressed, and potentially encrypted, pages
2015
+ * in this column chunk (including the headers) *
2016
+ */
1641
2017
  int64_t total_compressed_size;
2018
+ /**
2019
+ * Optional key/value metadata *
2020
+ */
1642
2021
  duckdb::vector<KeyValue> key_value_metadata;
2022
+ /**
2023
+ * Byte offset from beginning of file to first data page *
2024
+ */
1643
2025
  int64_t data_page_offset;
2026
+ /**
2027
+ * Byte offset from beginning of file to root index page *
2028
+ */
1644
2029
  int64_t index_page_offset;
2030
+ /**
2031
+ * Byte offset from the beginning of file to first (only) dictionary page *
2032
+ */
1645
2033
  int64_t dictionary_page_offset;
2034
+ /**
2035
+ * optional statistics for this column chunk
2036
+ */
1646
2037
  Statistics statistics;
2038
+ /**
2039
+ * Set of all encodings used for pages in this column chunk.
2040
+ * This information can be used to determine if all data pages are
2041
+ * dictionary encoded for example *
2042
+ */
1647
2043
  duckdb::vector<PageEncodingStats> encoding_stats;
2044
+ /**
2045
+ * Byte offset from beginning of file to Bloom filter data. *
2046
+ */
2047
+ int64_t bloom_filter_offset;
2048
+ /**
2049
+ * Size of Bloom filter data including the serialized header, in bytes.
2050
+ * Added in 2.10 so readers may not read this field from old files and
2051
+ * it can be obtained after the BloomFilterHeader has been deserialized.
2052
+ * Writers should write this field so readers can read the bloom filter
2053
+ * in a single I/O.
2054
+ */
2055
+ int32_t bloom_filter_length;
2056
+ /**
2057
+ * Optional statistics to help estimate total memory when converted to in-memory
2058
+ * representations. The histograms contained in these statistics can
2059
+ * also be useful in some cases for more fine-grained nullability/list length
2060
+ * filter pushdown.
2061
+ */
2062
+ SizeStatistics size_statistics;
1648
2063
 
1649
2064
  _ColumnMetaData__isset __isset;
1650
2065
 
@@ -1674,54 +2089,14 @@ class ColumnMetaData : public virtual ::duckdb_apache::thrift::TBase {
1674
2089
 
1675
2090
  void __set_encoding_stats(const duckdb::vector<PageEncodingStats> & val);
1676
2091
 
1677
- bool operator == (const ColumnMetaData & rhs) const
1678
- {
1679
- if (!(type == rhs.type))
1680
- return false;
1681
- if (!(encodings == rhs.encodings))
1682
- return false;
1683
- if (!(path_in_schema == rhs.path_in_schema))
1684
- return false;
1685
- if (!(codec == rhs.codec))
1686
- return false;
1687
- if (!(num_values == rhs.num_values))
1688
- return false;
1689
- if (!(total_uncompressed_size == rhs.total_uncompressed_size))
1690
- return false;
1691
- if (!(total_compressed_size == rhs.total_compressed_size))
1692
- return false;
1693
- if (__isset.key_value_metadata != rhs.__isset.key_value_metadata)
1694
- return false;
1695
- else if (__isset.key_value_metadata && !(key_value_metadata == rhs.key_value_metadata))
1696
- return false;
1697
- if (!(data_page_offset == rhs.data_page_offset))
1698
- return false;
1699
- if (__isset.index_page_offset != rhs.__isset.index_page_offset)
1700
- return false;
1701
- else if (__isset.index_page_offset && !(index_page_offset == rhs.index_page_offset))
1702
- return false;
1703
- if (__isset.dictionary_page_offset != rhs.__isset.dictionary_page_offset)
1704
- return false;
1705
- else if (__isset.dictionary_page_offset && !(dictionary_page_offset == rhs.dictionary_page_offset))
1706
- return false;
1707
- if (__isset.statistics != rhs.__isset.statistics)
1708
- return false;
1709
- else if (__isset.statistics && !(statistics == rhs.statistics))
1710
- return false;
1711
- if (__isset.encoding_stats != rhs.__isset.encoding_stats)
1712
- return false;
1713
- else if (__isset.encoding_stats && !(encoding_stats == rhs.encoding_stats))
1714
- return false;
1715
- return true;
1716
- }
1717
- bool operator != (const ColumnMetaData &rhs) const {
1718
- return !(*this == rhs);
1719
- }
1720
-
1721
- bool operator < (const ColumnMetaData & ) const;
1722
-
1723
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
1724
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
2092
+ void __set_bloom_filter_offset(const int64_t val);
2093
+
2094
+ void __set_bloom_filter_length(const int32_t val);
2095
+
2096
+ void __set_size_statistics(const SizeStatistics& val);
2097
+
2098
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
2099
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
1725
2100
 
1726
2101
  virtual void printTo(std::ostream& out) const;
1727
2102
  };
@@ -1731,28 +2106,17 @@ void swap(ColumnMetaData &a, ColumnMetaData &b);
1731
2106
  std::ostream& operator<<(std::ostream& out, const ColumnMetaData& obj);
1732
2107
 
1733
2108
 
1734
- class EncryptionWithFooterKey : public virtual ::duckdb_apache::thrift::TBase {
2109
+ class EncryptionWithFooterKey : public virtual ::apache::thrift::TBase {
1735
2110
  public:
1736
2111
 
1737
- EncryptionWithFooterKey(const EncryptionWithFooterKey&);
1738
- EncryptionWithFooterKey& operator=(const EncryptionWithFooterKey&);
1739
- EncryptionWithFooterKey() {
1740
- }
1741
-
1742
- virtual ~EncryptionWithFooterKey() throw();
2112
+ EncryptionWithFooterKey(const EncryptionWithFooterKey&) noexcept;
2113
+ EncryptionWithFooterKey& operator=(const EncryptionWithFooterKey&) noexcept;
2114
+ EncryptionWithFooterKey() noexcept;
1743
2115
 
1744
- bool operator == (const EncryptionWithFooterKey & /* rhs */) const
1745
- {
1746
- return true;
1747
- }
1748
- bool operator != (const EncryptionWithFooterKey &rhs) const {
1749
- return !(*this == rhs);
1750
- }
2116
+ virtual ~EncryptionWithFooterKey() noexcept;
1751
2117
 
1752
- bool operator < (const EncryptionWithFooterKey & ) const;
1753
-
1754
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
1755
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
2118
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
2119
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
1756
2120
 
1757
2121
  virtual void printTo(std::ostream& out) const;
1758
2122
  };
@@ -1766,16 +2130,21 @@ typedef struct _EncryptionWithColumnKey__isset {
1766
2130
  bool key_metadata :1;
1767
2131
  } _EncryptionWithColumnKey__isset;
1768
2132
 
1769
- class EncryptionWithColumnKey : public virtual ::duckdb_apache::thrift::TBase {
2133
+ class EncryptionWithColumnKey : public virtual ::apache::thrift::TBase {
1770
2134
  public:
1771
2135
 
1772
2136
  EncryptionWithColumnKey(const EncryptionWithColumnKey&);
1773
2137
  EncryptionWithColumnKey& operator=(const EncryptionWithColumnKey&);
1774
- EncryptionWithColumnKey() : key_metadata() {
1775
- }
2138
+ EncryptionWithColumnKey() noexcept;
1776
2139
 
1777
- virtual ~EncryptionWithColumnKey() throw();
2140
+ virtual ~EncryptionWithColumnKey() noexcept;
2141
+ /**
2142
+ * Column path in schema *
2143
+ */
1778
2144
  duckdb::vector<std::string> path_in_schema;
2145
+ /**
2146
+ * Retrieval metadata of column encryption key *
2147
+ */
1779
2148
  std::string key_metadata;
1780
2149
 
1781
2150
  _EncryptionWithColumnKey__isset __isset;
@@ -1784,24 +2153,8 @@ class EncryptionWithColumnKey : public virtual ::duckdb_apache::thrift::TBase {
1784
2153
 
1785
2154
  void __set_key_metadata(const std::string& val);
1786
2155
 
1787
- bool operator == (const EncryptionWithColumnKey & rhs) const
1788
- {
1789
- if (!(path_in_schema == rhs.path_in_schema))
1790
- return false;
1791
- if (__isset.key_metadata != rhs.__isset.key_metadata)
1792
- return false;
1793
- else if (__isset.key_metadata && !(key_metadata == rhs.key_metadata))
1794
- return false;
1795
- return true;
1796
- }
1797
- bool operator != (const EncryptionWithColumnKey &rhs) const {
1798
- return !(*this == rhs);
1799
- }
1800
-
1801
- bool operator < (const EncryptionWithColumnKey & ) const;
1802
-
1803
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
1804
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
2156
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
2157
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
1805
2158
 
1806
2159
  virtual void printTo(std::ostream& out) const;
1807
2160
  };
@@ -1816,15 +2169,14 @@ typedef struct _ColumnCryptoMetaData__isset {
1816
2169
  bool ENCRYPTION_WITH_COLUMN_KEY :1;
1817
2170
  } _ColumnCryptoMetaData__isset;
1818
2171
 
1819
- class ColumnCryptoMetaData : public virtual ::duckdb_apache::thrift::TBase {
2172
+ class ColumnCryptoMetaData : public virtual ::apache::thrift::TBase {
1820
2173
  public:
1821
2174
 
1822
2175
  ColumnCryptoMetaData(const ColumnCryptoMetaData&);
1823
2176
  ColumnCryptoMetaData& operator=(const ColumnCryptoMetaData&);
1824
- ColumnCryptoMetaData() {
1825
- }
2177
+ ColumnCryptoMetaData() noexcept;
1826
2178
 
1827
- virtual ~ColumnCryptoMetaData() throw();
2179
+ virtual ~ColumnCryptoMetaData() noexcept;
1828
2180
  EncryptionWithFooterKey ENCRYPTION_WITH_FOOTER_KEY;
1829
2181
  EncryptionWithColumnKey ENCRYPTION_WITH_COLUMN_KEY;
1830
2182
 
@@ -1834,26 +2186,8 @@ class ColumnCryptoMetaData : public virtual ::duckdb_apache::thrift::TBase {
1834
2186
 
1835
2187
  void __set_ENCRYPTION_WITH_COLUMN_KEY(const EncryptionWithColumnKey& val);
1836
2188
 
1837
- bool operator == (const ColumnCryptoMetaData & rhs) const
1838
- {
1839
- if (__isset.ENCRYPTION_WITH_FOOTER_KEY != rhs.__isset.ENCRYPTION_WITH_FOOTER_KEY)
1840
- return false;
1841
- else if (__isset.ENCRYPTION_WITH_FOOTER_KEY && !(ENCRYPTION_WITH_FOOTER_KEY == rhs.ENCRYPTION_WITH_FOOTER_KEY))
1842
- return false;
1843
- if (__isset.ENCRYPTION_WITH_COLUMN_KEY != rhs.__isset.ENCRYPTION_WITH_COLUMN_KEY)
1844
- return false;
1845
- else if (__isset.ENCRYPTION_WITH_COLUMN_KEY && !(ENCRYPTION_WITH_COLUMN_KEY == rhs.ENCRYPTION_WITH_COLUMN_KEY))
1846
- return false;
1847
- return true;
1848
- }
1849
- bool operator != (const ColumnCryptoMetaData &rhs) const {
1850
- return !(*this == rhs);
1851
- }
1852
-
1853
- bool operator < (const ColumnCryptoMetaData & ) const;
1854
-
1855
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
1856
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
2189
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
2190
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
1857
2191
 
1858
2192
  virtual void printTo(std::ostream& out) const;
1859
2193
  };
@@ -1874,23 +2208,62 @@ typedef struct _ColumnChunk__isset {
1874
2208
  bool encrypted_column_metadata :1;
1875
2209
  } _ColumnChunk__isset;
1876
2210
 
1877
- class ColumnChunk : public virtual ::duckdb_apache::thrift::TBase {
2211
+ class ColumnChunk : public virtual ::apache::thrift::TBase {
1878
2212
  public:
1879
2213
 
1880
2214
  ColumnChunk(const ColumnChunk&);
1881
2215
  ColumnChunk& operator=(const ColumnChunk&);
1882
- ColumnChunk() : file_path(), file_offset(0), offset_index_offset(0), offset_index_length(0), column_index_offset(0), column_index_length(0), encrypted_column_metadata() {
1883
- }
1884
-
1885
- virtual ~ColumnChunk() throw();
2216
+ ColumnChunk() noexcept;
2217
+
2218
+ virtual ~ColumnChunk() noexcept;
2219
+ /**
2220
+ * File where column data is stored. If not set, assumed to be same file as
2221
+ * metadata. This path is relative to the current file.
2222
+ *
2223
+ */
1886
2224
  std::string file_path;
2225
+ /**
2226
+ * Deprecated: Byte offset in file_path to the ColumnMetaData
2227
+ *
2228
+ * Past use of this field has been inconsistent, with some implementations
2229
+ * using it to point to the ColumnMetaData and some using it to point to
2230
+ * the first page in the column chunk. In many cases, the ColumnMetaData at this
2231
+ * location is wrong. This field is now deprecated and should not be used.
2232
+ * Writers should set this field to 0 if no ColumnMetaData has been written outside
2233
+ * the footer.
2234
+ */
1887
2235
  int64_t file_offset;
2236
+ /**
2237
+ * Column metadata for this chunk. Some writers may also replicate this at the
2238
+ * location pointed to by file_path/file_offset.
2239
+ * Note: while marked as optional, this field is in fact required by most major
2240
+ * Parquet implementations. As such, writers MUST populate this field.
2241
+ *
2242
+ */
1888
2243
  ColumnMetaData meta_data;
2244
+ /**
2245
+ * File offset of ColumnChunk's OffsetIndex *
2246
+ */
1889
2247
  int64_t offset_index_offset;
2248
+ /**
2249
+ * Size of ColumnChunk's OffsetIndex, in bytes *
2250
+ */
1890
2251
  int32_t offset_index_length;
2252
+ /**
2253
+ * File offset of ColumnChunk's ColumnIndex *
2254
+ */
1891
2255
  int64_t column_index_offset;
2256
+ /**
2257
+ * Size of ColumnChunk's ColumnIndex, in bytes *
2258
+ */
1892
2259
  int32_t column_index_length;
2260
+ /**
2261
+ * Crypto metadata of encrypted columns *
2262
+ */
1893
2263
  ColumnCryptoMetaData crypto_metadata;
2264
+ /**
2265
+ * Encrypted column metadata for this chunk *
2266
+ */
1894
2267
  std::string encrypted_column_metadata;
1895
2268
 
1896
2269
  _ColumnChunk__isset __isset;
@@ -1913,52 +2286,8 @@ class ColumnChunk : public virtual ::duckdb_apache::thrift::TBase {
1913
2286
 
1914
2287
  void __set_encrypted_column_metadata(const std::string& val);
1915
2288
 
1916
- bool operator == (const ColumnChunk & rhs) const
1917
- {
1918
- if (__isset.file_path != rhs.__isset.file_path)
1919
- return false;
1920
- else if (__isset.file_path && !(file_path == rhs.file_path))
1921
- return false;
1922
- if (!(file_offset == rhs.file_offset))
1923
- return false;
1924
- if (__isset.meta_data != rhs.__isset.meta_data)
1925
- return false;
1926
- else if (__isset.meta_data && !(meta_data == rhs.meta_data))
1927
- return false;
1928
- if (__isset.offset_index_offset != rhs.__isset.offset_index_offset)
1929
- return false;
1930
- else if (__isset.offset_index_offset && !(offset_index_offset == rhs.offset_index_offset))
1931
- return false;
1932
- if (__isset.offset_index_length != rhs.__isset.offset_index_length)
1933
- return false;
1934
- else if (__isset.offset_index_length && !(offset_index_length == rhs.offset_index_length))
1935
- return false;
1936
- if (__isset.column_index_offset != rhs.__isset.column_index_offset)
1937
- return false;
1938
- else if (__isset.column_index_offset && !(column_index_offset == rhs.column_index_offset))
1939
- return false;
1940
- if (__isset.column_index_length != rhs.__isset.column_index_length)
1941
- return false;
1942
- else if (__isset.column_index_length && !(column_index_length == rhs.column_index_length))
1943
- return false;
1944
- if (__isset.crypto_metadata != rhs.__isset.crypto_metadata)
1945
- return false;
1946
- else if (__isset.crypto_metadata && !(crypto_metadata == rhs.crypto_metadata))
1947
- return false;
1948
- if (__isset.encrypted_column_metadata != rhs.__isset.encrypted_column_metadata)
1949
- return false;
1950
- else if (__isset.encrypted_column_metadata && !(encrypted_column_metadata == rhs.encrypted_column_metadata))
1951
- return false;
1952
- return true;
1953
- }
1954
- bool operator != (const ColumnChunk &rhs) const {
1955
- return !(*this == rhs);
1956
- }
1957
-
1958
- bool operator < (const ColumnChunk & ) const;
1959
-
1960
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
1961
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
2289
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
2290
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
1962
2291
 
1963
2292
  virtual void printTo(std::ostream& out) const;
1964
2293
  };
@@ -1975,21 +2304,46 @@ typedef struct _RowGroup__isset {
1975
2304
  bool ordinal :1;
1976
2305
  } _RowGroup__isset;
1977
2306
 
1978
- class RowGroup : public virtual ::duckdb_apache::thrift::TBase {
2307
+ class RowGroup : public virtual ::apache::thrift::TBase {
1979
2308
  public:
1980
2309
 
1981
2310
  RowGroup(const RowGroup&);
1982
2311
  RowGroup& operator=(const RowGroup&);
1983
- RowGroup() : total_byte_size(0), num_rows(0), file_offset(0), total_compressed_size(0), ordinal(0) {
1984
- }
1985
-
1986
- virtual ~RowGroup() throw();
2312
+ RowGroup() noexcept;
2313
+
2314
+ virtual ~RowGroup() noexcept;
2315
+ /**
2316
+ * Metadata for each column chunk in this row group.
2317
+ * This list must have the same order as the SchemaElement list in FileMetaData.
2318
+ *
2319
+ */
1987
2320
  duckdb::vector<ColumnChunk> columns;
2321
+ /**
2322
+ * Total byte size of all the uncompressed column data in this row group *
2323
+ */
1988
2324
  int64_t total_byte_size;
2325
+ /**
2326
+ * Number of rows in this row group *
2327
+ */
1989
2328
  int64_t num_rows;
2329
+ /**
2330
+ * If set, specifies a sort ordering of the rows in this RowGroup.
2331
+ * The sorting columns can be a subset of all the columns.
2332
+ */
1990
2333
  duckdb::vector<SortingColumn> sorting_columns;
2334
+ /**
2335
+ * Byte offset from beginning of file to first page (data or dictionary)
2336
+ * in this row group *
2337
+ */
1991
2338
  int64_t file_offset;
2339
+ /**
2340
+ * Total byte size of all compressed (and potentially encrypted) column data
2341
+ * in this row group *
2342
+ */
1992
2343
  int64_t total_compressed_size;
2344
+ /**
2345
+ * Row group ordinal in the file *
2346
+ */
1993
2347
  int16_t ordinal;
1994
2348
 
1995
2349
  _RowGroup__isset __isset;
@@ -2008,40 +2362,8 @@ class RowGroup : public virtual ::duckdb_apache::thrift::TBase {
2008
2362
 
2009
2363
  void __set_ordinal(const int16_t val);
2010
2364
 
2011
- bool operator == (const RowGroup & rhs) const
2012
- {
2013
- if (!(columns == rhs.columns))
2014
- return false;
2015
- if (!(total_byte_size == rhs.total_byte_size))
2016
- return false;
2017
- if (!(num_rows == rhs.num_rows))
2018
- return false;
2019
- if (__isset.sorting_columns != rhs.__isset.sorting_columns)
2020
- return false;
2021
- else if (__isset.sorting_columns && !(sorting_columns == rhs.sorting_columns))
2022
- return false;
2023
- if (__isset.file_offset != rhs.__isset.file_offset)
2024
- return false;
2025
- else if (__isset.file_offset && !(file_offset == rhs.file_offset))
2026
- return false;
2027
- if (__isset.total_compressed_size != rhs.__isset.total_compressed_size)
2028
- return false;
2029
- else if (__isset.total_compressed_size && !(total_compressed_size == rhs.total_compressed_size))
2030
- return false;
2031
- if (__isset.ordinal != rhs.__isset.ordinal)
2032
- return false;
2033
- else if (__isset.ordinal && !(ordinal == rhs.ordinal))
2034
- return false;
2035
- return true;
2036
- }
2037
- bool operator != (const RowGroup &rhs) const {
2038
- return !(*this == rhs);
2039
- }
2040
-
2041
- bool operator < (const RowGroup & ) const;
2042
-
2043
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
2044
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
2365
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
2366
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
2045
2367
 
2046
2368
  virtual void printTo(std::ostream& out) const;
2047
2369
  };
@@ -2051,28 +2373,20 @@ void swap(RowGroup &a, RowGroup &b);
2051
2373
  std::ostream& operator<<(std::ostream& out, const RowGroup& obj);
2052
2374
 
2053
2375
 
2054
- class TypeDefinedOrder : public virtual ::duckdb_apache::thrift::TBase {
2376
+ /**
2377
+ * Empty struct to signal the order defined by the physical or logical type
2378
+ */
2379
+ class TypeDefinedOrder : public virtual ::apache::thrift::TBase {
2055
2380
  public:
2056
2381
 
2057
- TypeDefinedOrder(const TypeDefinedOrder&);
2058
- TypeDefinedOrder& operator=(const TypeDefinedOrder&);
2059
- TypeDefinedOrder() {
2060
- }
2061
-
2062
- virtual ~TypeDefinedOrder() throw();
2382
+ TypeDefinedOrder(const TypeDefinedOrder&) noexcept;
2383
+ TypeDefinedOrder& operator=(const TypeDefinedOrder&) noexcept;
2384
+ TypeDefinedOrder() noexcept;
2063
2385
 
2064
- bool operator == (const TypeDefinedOrder & /* rhs */) const
2065
- {
2066
- return true;
2067
- }
2068
- bool operator != (const TypeDefinedOrder &rhs) const {
2069
- return !(*this == rhs);
2070
- }
2386
+ virtual ~TypeDefinedOrder() noexcept;
2071
2387
 
2072
- bool operator < (const TypeDefinedOrder & ) const;
2073
-
2074
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
2075
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
2388
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
2389
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
2076
2390
 
2077
2391
  virtual void printTo(std::ostream& out) const;
2078
2392
  };
@@ -2086,37 +2400,84 @@ typedef struct _ColumnOrder__isset {
2086
2400
  bool TYPE_ORDER :1;
2087
2401
  } _ColumnOrder__isset;
2088
2402
 
2089
- class ColumnOrder : public virtual ::duckdb_apache::thrift::TBase {
2403
+ /**
2404
+ * Union to specify the order used for the min_value and max_value fields for a
2405
+ * column. This union takes the role of an enhanced enum that allows rich
2406
+ * elements (which will be needed for a collation-based ordering in the future).
2407
+ *
2408
+ * Possible values are:
2409
+ * * TypeDefinedOrder - the column uses the order defined by its logical or
2410
+ * physical type (if there is no logical type).
2411
+ *
2412
+ * If the reader does not support the value of this union, min and max stats
2413
+ * for this column should be ignored.
2414
+ */
2415
+ class ColumnOrder : public virtual ::apache::thrift::TBase {
2090
2416
  public:
2091
2417
 
2092
- ColumnOrder(const ColumnOrder&);
2093
- ColumnOrder& operator=(const ColumnOrder&);
2094
- ColumnOrder() {
2095
- }
2096
-
2097
- virtual ~ColumnOrder() throw();
2418
+ ColumnOrder(const ColumnOrder&) noexcept;
2419
+ ColumnOrder& operator=(const ColumnOrder&) noexcept;
2420
+ ColumnOrder() noexcept;
2421
+
2422
+ virtual ~ColumnOrder() noexcept;
2423
+ /**
2424
+ * The sort orders for logical types are:
2425
+ * UTF8 - unsigned byte-wise comparison
2426
+ * INT8 - signed comparison
2427
+ * INT16 - signed comparison
2428
+ * INT32 - signed comparison
2429
+ * INT64 - signed comparison
2430
+ * UINT8 - unsigned comparison
2431
+ * UINT16 - unsigned comparison
2432
+ * UINT32 - unsigned comparison
2433
+ * UINT64 - unsigned comparison
2434
+ * DECIMAL - signed comparison of the represented value
2435
+ * DATE - signed comparison
2436
+ * TIME_MILLIS - signed comparison
2437
+ * TIME_MICROS - signed comparison
2438
+ * TIMESTAMP_MILLIS - signed comparison
2439
+ * TIMESTAMP_MICROS - signed comparison
2440
+ * INTERVAL - undefined
2441
+ * JSON - unsigned byte-wise comparison
2442
+ * BSON - unsigned byte-wise comparison
2443
+ * ENUM - unsigned byte-wise comparison
2444
+ * LIST - undefined
2445
+ * MAP - undefined
2446
+ *
2447
+ * In the absence of logical types, the sort order is determined by the physical type:
2448
+ * BOOLEAN - false, true
2449
+ * INT32 - signed comparison
2450
+ * INT64 - signed comparison
2451
+ * INT96 (only used for legacy timestamps) - undefined
2452
+ * FLOAT - signed comparison of the represented value (*)
2453
+ * DOUBLE - signed comparison of the represented value (*)
2454
+ * BYTE_ARRAY - unsigned byte-wise comparison
2455
+ * FIXED_LEN_BYTE_ARRAY - unsigned byte-wise comparison
2456
+ *
2457
+ * (*) Because the sorting order is not specified properly for floating
2458
+ * point values (relations vs. total ordering) the following
2459
+ * compatibility rules should be applied when reading statistics:
2460
+ * - If the min is a NaN, it should be ignored.
2461
+ * - If the max is a NaN, it should be ignored.
2462
+ * - If the min is +0, the row group may contain -0 values as well.
2463
+ * - If the max is -0, the row group may contain +0 values as well.
2464
+ * - When looking for NaN values, min and max should be ignored.
2465
+ *
2466
+ * When writing statistics the following rules should be followed:
2467
+ * - NaNs should not be written to min or max statistics fields.
2468
+ * - If the computed max value is zero (whether negative or positive),
2469
+ * `+0.0` should be written into the max statistics field.
2470
+ * - If the computed min value is zero (whether negative or positive),
2471
+ * `-0.0` should be written into the min statistics field.
2472
+ */
2098
2473
  TypeDefinedOrder TYPE_ORDER;
2099
2474
 
2100
2475
  _ColumnOrder__isset __isset;
2101
2476
 
2102
2477
  void __set_TYPE_ORDER(const TypeDefinedOrder& val);
2103
2478
 
2104
- bool operator == (const ColumnOrder & rhs) const
2105
- {
2106
- if (__isset.TYPE_ORDER != rhs.__isset.TYPE_ORDER)
2107
- return false;
2108
- else if (__isset.TYPE_ORDER && !(TYPE_ORDER == rhs.TYPE_ORDER))
2109
- return false;
2110
- return true;
2111
- }
2112
- bool operator != (const ColumnOrder &rhs) const {
2113
- return !(*this == rhs);
2114
- }
2115
-
2116
- bool operator < (const ColumnOrder & ) const;
2117
-
2118
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
2119
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
2479
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
2480
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
2120
2481
 
2121
2482
  virtual void printTo(std::ostream& out) const;
2122
2483
  };
@@ -2126,17 +2487,28 @@ void swap(ColumnOrder &a, ColumnOrder &b);
2126
2487
  std::ostream& operator<<(std::ostream& out, const ColumnOrder& obj);
2127
2488
 
2128
2489
 
2129
- class PageLocation : public virtual ::duckdb_apache::thrift::TBase {
2490
+ class PageLocation : public virtual ::apache::thrift::TBase {
2130
2491
  public:
2131
2492
 
2132
- PageLocation(const PageLocation&);
2133
- PageLocation& operator=(const PageLocation&);
2134
- PageLocation() : offset(0), compressed_page_size(0), first_row_index(0) {
2135
- }
2493
+ PageLocation(const PageLocation&) noexcept;
2494
+ PageLocation& operator=(const PageLocation&) noexcept;
2495
+ PageLocation() noexcept;
2136
2496
 
2137
- virtual ~PageLocation() throw();
2497
+ virtual ~PageLocation() noexcept;
2498
+ /**
2499
+ * Offset of the page in the file *
2500
+ */
2138
2501
  int64_t offset;
2502
+ /**
2503
+ * Size of the page, including header. Sum of compressed_page_size and header
2504
+ * length
2505
+ */
2139
2506
  int32_t compressed_page_size;
2507
+ /**
2508
+ * Index within the RowGroup of the first row of the page. When an
2509
+ * OffsetIndex is present, pages must begin on row boundaries
2510
+ * (repetition_level = 0).
2511
+ */
2140
2512
  int64_t first_row_index;
2141
2513
 
2142
2514
  void __set_offset(const int64_t val);
@@ -2145,24 +2517,8 @@ class PageLocation : public virtual ::duckdb_apache::thrift::TBase {
2145
2517
 
2146
2518
  void __set_first_row_index(const int64_t val);
2147
2519
 
2148
- bool operator == (const PageLocation & rhs) const
2149
- {
2150
- if (!(offset == rhs.offset))
2151
- return false;
2152
- if (!(compressed_page_size == rhs.compressed_page_size))
2153
- return false;
2154
- if (!(first_row_index == rhs.first_row_index))
2155
- return false;
2156
- return true;
2157
- }
2158
- bool operator != (const PageLocation &rhs) const {
2159
- return !(*this == rhs);
2160
- }
2161
-
2162
- bool operator < (const PageLocation & ) const;
2163
-
2164
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
2165
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
2520
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
2521
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
2166
2522
 
2167
2523
  virtual void printTo(std::ostream& out) const;
2168
2524
  };
@@ -2171,34 +2527,47 @@ void swap(PageLocation &a, PageLocation &b);
2171
2527
 
2172
2528
  std::ostream& operator<<(std::ostream& out, const PageLocation& obj);
2173
2529
 
2530
+ typedef struct _OffsetIndex__isset {
2531
+ _OffsetIndex__isset() : unencoded_byte_array_data_bytes(false) {}
2532
+ bool unencoded_byte_array_data_bytes :1;
2533
+ } _OffsetIndex__isset;
2174
2534
 
2175
- class OffsetIndex : public virtual ::duckdb_apache::thrift::TBase {
2535
+ /**
2536
+ * Optional offsets for each data page in a ColumnChunk.
2537
+ *
2538
+ * Forms part of the page index, along with ColumnIndex.
2539
+ *
2540
+ * OffsetIndex may be present even if ColumnIndex is not.
2541
+ */
2542
+ class OffsetIndex : public virtual ::apache::thrift::TBase {
2176
2543
  public:
2177
2544
 
2178
2545
  OffsetIndex(const OffsetIndex&);
2179
2546
  OffsetIndex& operator=(const OffsetIndex&);
2180
- OffsetIndex() {
2181
- }
2547
+ OffsetIndex() noexcept;
2182
2548
 
2183
- virtual ~OffsetIndex() throw();
2549
+ virtual ~OffsetIndex() noexcept;
2550
+ /**
2551
+ * PageLocations, ordered by increasing PageLocation.offset. It is required
2552
+ * that page_locations[i].first_row_index < page_locations[i+1].first_row_index.
2553
+ */
2184
2554
  duckdb::vector<PageLocation> page_locations;
2555
+ /**
2556
+ * Unencoded/uncompressed size for BYTE_ARRAY types.
2557
+ *
2558
+ * See documention for unencoded_byte_array_data_bytes in SizeStatistics for
2559
+ * more details on this field.
2560
+ */
2561
+ duckdb::vector<int64_t> unencoded_byte_array_data_bytes;
2185
2562
 
2186
- void __set_page_locations(const duckdb::vector<PageLocation> & val);
2563
+ _OffsetIndex__isset __isset;
2187
2564
 
2188
- bool operator == (const OffsetIndex & rhs) const
2189
- {
2190
- if (!(page_locations == rhs.page_locations))
2191
- return false;
2192
- return true;
2193
- }
2194
- bool operator != (const OffsetIndex &rhs) const {
2195
- return !(*this == rhs);
2196
- }
2565
+ void __set_page_locations(const duckdb::vector<PageLocation> & val);
2197
2566
 
2198
- bool operator < (const OffsetIndex & ) const;
2567
+ void __set_unencoded_byte_array_data_bytes(const duckdb::vector<int64_t> & val);
2199
2568
 
2200
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
2201
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
2569
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
2570
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
2202
2571
 
2203
2572
  virtual void printTo(std::ostream& out) const;
2204
2573
  };
@@ -2208,24 +2577,89 @@ void swap(OffsetIndex &a, OffsetIndex &b);
2208
2577
  std::ostream& operator<<(std::ostream& out, const OffsetIndex& obj);
2209
2578
 
2210
2579
  typedef struct _ColumnIndex__isset {
2211
- _ColumnIndex__isset() : null_counts(false) {}
2580
+ _ColumnIndex__isset() : null_counts(false), repetition_level_histograms(false), definition_level_histograms(false) {}
2212
2581
  bool null_counts :1;
2582
+ bool repetition_level_histograms :1;
2583
+ bool definition_level_histograms :1;
2213
2584
  } _ColumnIndex__isset;
2214
2585
 
2215
- class ColumnIndex : public virtual ::duckdb_apache::thrift::TBase {
2586
+ /**
2587
+ * Optional statistics for each data page in a ColumnChunk.
2588
+ *
2589
+ * Forms part the page index, along with OffsetIndex.
2590
+ *
2591
+ * If this structure is present, OffsetIndex must also be present.
2592
+ *
2593
+ * For each field in this structure, <field>[i] refers to the page at
2594
+ * OffsetIndex.page_locations[i]
2595
+ */
2596
+ class ColumnIndex : public virtual ::apache::thrift::TBase {
2216
2597
  public:
2217
2598
 
2218
2599
  ColumnIndex(const ColumnIndex&);
2219
2600
  ColumnIndex& operator=(const ColumnIndex&);
2220
- ColumnIndex() : boundary_order((BoundaryOrder::type)0) {
2221
- }
2222
-
2223
- virtual ~ColumnIndex() throw();
2601
+ ColumnIndex() noexcept;
2602
+
2603
+ virtual ~ColumnIndex() noexcept;
2604
+ /**
2605
+ * A list of Boolean values to determine the validity of the corresponding
2606
+ * min and max values. If true, a page contains only null values, and writers
2607
+ * have to set the corresponding entries in min_values and max_values to
2608
+ * byte[0], so that all lists have the same length. If false, the
2609
+ * corresponding entries in min_values and max_values must be valid.
2610
+ */
2224
2611
  duckdb::vector<bool> null_pages;
2612
+ /**
2613
+ * Two lists containing lower and upper bounds for the values of each page
2614
+ * determined by the ColumnOrder of the column. These may be the actual
2615
+ * minimum and maximum values found on a page, but can also be (more compact)
2616
+ * values that do not exist on a page. For example, instead of storing ""Blart
2617
+ * Versenwald III", a writer may set min_values[i]="B", max_values[i]="C".
2618
+ * Such more compact values must still be valid values within the column's
2619
+ * logical type. Readers must make sure that list entries are populated before
2620
+ * using them by inspecting null_pages.
2621
+ */
2225
2622
  duckdb::vector<std::string> min_values;
2226
2623
  duckdb::vector<std::string> max_values;
2624
+ /**
2625
+ * Stores whether both min_values and max_values are ordered and if so, in
2626
+ * which direction. This allows readers to perform binary searches in both
2627
+ * lists. Readers cannot assume that max_values[i] <= min_values[i+1], even
2628
+ * if the lists are ordered.
2629
+ *
2630
+ * @see BoundaryOrder
2631
+ */
2227
2632
  BoundaryOrder::type boundary_order;
2633
+ /**
2634
+ * A list containing the number of null values for each page
2635
+ *
2636
+ * Writers SHOULD always write this field even if no null values
2637
+ * are present or the column is not nullable.
2638
+ * Readers MUST distinguish between null_counts not being present
2639
+ * and null_count being 0.
2640
+ * If null_counts are not present, readers MUST NOT assume all
2641
+ * null counts are 0.
2642
+ */
2228
2643
  duckdb::vector<int64_t> null_counts;
2644
+ /**
2645
+ * Contains repetition level histograms for each page
2646
+ * concatenated together. The repetition_level_histogram field on
2647
+ * SizeStatistics contains more details.
2648
+ *
2649
+ * When present the length should always be (number of pages *
2650
+ * (max_repetition_level + 1)) elements.
2651
+ *
2652
+ * Element 0 is the first element of the histogram for the first page.
2653
+ * Element (max_repetition_level + 1) is the first element of the histogram
2654
+ * for the second page.
2655
+ *
2656
+ */
2657
+ duckdb::vector<int64_t> repetition_level_histograms;
2658
+ /**
2659
+ * Same as repetition_level_histograms except for definitions levels.
2660
+ *
2661
+ */
2662
+ duckdb::vector<int64_t> definition_level_histograms;
2229
2663
 
2230
2664
  _ColumnIndex__isset __isset;
2231
2665
 
@@ -2239,30 +2673,12 @@ class ColumnIndex : public virtual ::duckdb_apache::thrift::TBase {
2239
2673
 
2240
2674
  void __set_null_counts(const duckdb::vector<int64_t> & val);
2241
2675
 
2242
- bool operator == (const ColumnIndex & rhs) const
2243
- {
2244
- if (!(null_pages == rhs.null_pages))
2245
- return false;
2246
- if (!(min_values == rhs.min_values))
2247
- return false;
2248
- if (!(max_values == rhs.max_values))
2249
- return false;
2250
- if (!(boundary_order == rhs.boundary_order))
2251
- return false;
2252
- if (__isset.null_counts != rhs.__isset.null_counts)
2253
- return false;
2254
- else if (__isset.null_counts && !(null_counts == rhs.null_counts))
2255
- return false;
2256
- return true;
2257
- }
2258
- bool operator != (const ColumnIndex &rhs) const {
2259
- return !(*this == rhs);
2260
- }
2261
-
2262
- bool operator < (const ColumnIndex & ) const;
2263
-
2264
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
2265
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
2676
+ void __set_repetition_level_histograms(const duckdb::vector<int64_t> & val);
2677
+
2678
+ void __set_definition_level_histograms(const duckdb::vector<int64_t> & val);
2679
+
2680
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
2681
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
2266
2682
 
2267
2683
  virtual void printTo(std::ostream& out) const;
2268
2684
  };
@@ -2278,17 +2694,26 @@ typedef struct _AesGcmV1__isset {
2278
2694
  bool supply_aad_prefix :1;
2279
2695
  } _AesGcmV1__isset;
2280
2696
 
2281
- class AesGcmV1 : public virtual ::duckdb_apache::thrift::TBase {
2697
+ class AesGcmV1 : public virtual ::apache::thrift::TBase {
2282
2698
  public:
2283
2699
 
2284
2700
  AesGcmV1(const AesGcmV1&);
2285
2701
  AesGcmV1& operator=(const AesGcmV1&);
2286
- AesGcmV1() : aad_prefix(), aad_file_unique(), supply_aad_prefix(0) {
2287
- }
2702
+ AesGcmV1() noexcept;
2288
2703
 
2289
- virtual ~AesGcmV1() throw();
2704
+ virtual ~AesGcmV1() noexcept;
2705
+ /**
2706
+ * AAD prefix *
2707
+ */
2290
2708
  std::string aad_prefix;
2709
+ /**
2710
+ * Unique file identifier part of AAD suffix *
2711
+ */
2291
2712
  std::string aad_file_unique;
2713
+ /**
2714
+ * In files encrypted with AAD prefix without storing it,
2715
+ * readers must supply the prefix *
2716
+ */
2292
2717
  bool supply_aad_prefix;
2293
2718
 
2294
2719
  _AesGcmV1__isset __isset;
@@ -2299,30 +2724,8 @@ class AesGcmV1 : public virtual ::duckdb_apache::thrift::TBase {
2299
2724
 
2300
2725
  void __set_supply_aad_prefix(const bool val);
2301
2726
 
2302
- bool operator == (const AesGcmV1 & rhs) const
2303
- {
2304
- if (__isset.aad_prefix != rhs.__isset.aad_prefix)
2305
- return false;
2306
- else if (__isset.aad_prefix && !(aad_prefix == rhs.aad_prefix))
2307
- return false;
2308
- if (__isset.aad_file_unique != rhs.__isset.aad_file_unique)
2309
- return false;
2310
- else if (__isset.aad_file_unique && !(aad_file_unique == rhs.aad_file_unique))
2311
- return false;
2312
- if (__isset.supply_aad_prefix != rhs.__isset.supply_aad_prefix)
2313
- return false;
2314
- else if (__isset.supply_aad_prefix && !(supply_aad_prefix == rhs.supply_aad_prefix))
2315
- return false;
2316
- return true;
2317
- }
2318
- bool operator != (const AesGcmV1 &rhs) const {
2319
- return !(*this == rhs);
2320
- }
2321
-
2322
- bool operator < (const AesGcmV1 & ) const;
2323
-
2324
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
2325
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
2727
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
2728
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
2326
2729
 
2327
2730
  virtual void printTo(std::ostream& out) const;
2328
2731
  };
@@ -2338,17 +2741,26 @@ typedef struct _AesGcmCtrV1__isset {
2338
2741
  bool supply_aad_prefix :1;
2339
2742
  } _AesGcmCtrV1__isset;
2340
2743
 
2341
- class AesGcmCtrV1 : public virtual ::duckdb_apache::thrift::TBase {
2744
+ class AesGcmCtrV1 : public virtual ::apache::thrift::TBase {
2342
2745
  public:
2343
2746
 
2344
2747
  AesGcmCtrV1(const AesGcmCtrV1&);
2345
2748
  AesGcmCtrV1& operator=(const AesGcmCtrV1&);
2346
- AesGcmCtrV1() : aad_prefix(), aad_file_unique(), supply_aad_prefix(0) {
2347
- }
2749
+ AesGcmCtrV1() noexcept;
2348
2750
 
2349
- virtual ~AesGcmCtrV1() throw();
2751
+ virtual ~AesGcmCtrV1() noexcept;
2752
+ /**
2753
+ * AAD prefix *
2754
+ */
2350
2755
  std::string aad_prefix;
2756
+ /**
2757
+ * Unique file identifier part of AAD suffix *
2758
+ */
2351
2759
  std::string aad_file_unique;
2760
+ /**
2761
+ * In files encrypted with AAD prefix without storing it,
2762
+ * readers must supply the prefix *
2763
+ */
2352
2764
  bool supply_aad_prefix;
2353
2765
 
2354
2766
  _AesGcmCtrV1__isset __isset;
@@ -2359,30 +2771,8 @@ class AesGcmCtrV1 : public virtual ::duckdb_apache::thrift::TBase {
2359
2771
 
2360
2772
  void __set_supply_aad_prefix(const bool val);
2361
2773
 
2362
- bool operator == (const AesGcmCtrV1 & rhs) const
2363
- {
2364
- if (__isset.aad_prefix != rhs.__isset.aad_prefix)
2365
- return false;
2366
- else if (__isset.aad_prefix && !(aad_prefix == rhs.aad_prefix))
2367
- return false;
2368
- if (__isset.aad_file_unique != rhs.__isset.aad_file_unique)
2369
- return false;
2370
- else if (__isset.aad_file_unique && !(aad_file_unique == rhs.aad_file_unique))
2371
- return false;
2372
- if (__isset.supply_aad_prefix != rhs.__isset.supply_aad_prefix)
2373
- return false;
2374
- else if (__isset.supply_aad_prefix && !(supply_aad_prefix == rhs.supply_aad_prefix))
2375
- return false;
2376
- return true;
2377
- }
2378
- bool operator != (const AesGcmCtrV1 &rhs) const {
2379
- return !(*this == rhs);
2380
- }
2381
-
2382
- bool operator < (const AesGcmCtrV1 & ) const;
2383
-
2384
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
2385
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
2774
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
2775
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
2386
2776
 
2387
2777
  virtual void printTo(std::ostream& out) const;
2388
2778
  };
@@ -2397,15 +2787,14 @@ typedef struct _EncryptionAlgorithm__isset {
2397
2787
  bool AES_GCM_CTR_V1 :1;
2398
2788
  } _EncryptionAlgorithm__isset;
2399
2789
 
2400
- class EncryptionAlgorithm : public virtual ::duckdb_apache::thrift::TBase {
2790
+ class EncryptionAlgorithm : public virtual ::apache::thrift::TBase {
2401
2791
  public:
2402
2792
 
2403
2793
  EncryptionAlgorithm(const EncryptionAlgorithm&);
2404
2794
  EncryptionAlgorithm& operator=(const EncryptionAlgorithm&);
2405
- EncryptionAlgorithm() {
2406
- }
2795
+ EncryptionAlgorithm() noexcept;
2407
2796
 
2408
- virtual ~EncryptionAlgorithm() throw();
2797
+ virtual ~EncryptionAlgorithm() noexcept;
2409
2798
  AesGcmV1 AES_GCM_V1;
2410
2799
  AesGcmCtrV1 AES_GCM_CTR_V1;
2411
2800
 
@@ -2415,26 +2804,8 @@ class EncryptionAlgorithm : public virtual ::duckdb_apache::thrift::TBase {
2415
2804
 
2416
2805
  void __set_AES_GCM_CTR_V1(const AesGcmCtrV1& val);
2417
2806
 
2418
- bool operator == (const EncryptionAlgorithm & rhs) const
2419
- {
2420
- if (__isset.AES_GCM_V1 != rhs.__isset.AES_GCM_V1)
2421
- return false;
2422
- else if (__isset.AES_GCM_V1 && !(AES_GCM_V1 == rhs.AES_GCM_V1))
2423
- return false;
2424
- if (__isset.AES_GCM_CTR_V1 != rhs.__isset.AES_GCM_CTR_V1)
2425
- return false;
2426
- else if (__isset.AES_GCM_CTR_V1 && !(AES_GCM_CTR_V1 == rhs.AES_GCM_CTR_V1))
2427
- return false;
2428
- return true;
2429
- }
2430
- bool operator != (const EncryptionAlgorithm &rhs) const {
2431
- return !(*this == rhs);
2432
- }
2433
-
2434
- bool operator < (const EncryptionAlgorithm & ) const;
2435
-
2436
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
2437
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
2807
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
2808
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
2438
2809
 
2439
2810
  virtual void printTo(std::ostream& out) const;
2440
2811
  };
@@ -2452,23 +2823,76 @@ typedef struct _FileMetaData__isset {
2452
2823
  bool footer_signing_key_metadata :1;
2453
2824
  } _FileMetaData__isset;
2454
2825
 
2455
- class FileMetaData : public virtual ::duckdb_apache::thrift::TBase {
2826
+ /**
2827
+ * Description for file metadata
2828
+ */
2829
+ class FileMetaData : public virtual ::apache::thrift::TBase {
2456
2830
  public:
2457
2831
 
2458
2832
  FileMetaData(const FileMetaData&);
2459
2833
  FileMetaData& operator=(const FileMetaData&);
2460
- FileMetaData() : version(0), num_rows(0), created_by(), footer_signing_key_metadata() {
2461
- }
2834
+ FileMetaData() noexcept;
2462
2835
 
2463
- virtual ~FileMetaData() throw();
2836
+ virtual ~FileMetaData() noexcept;
2837
+ /**
2838
+ * Version of this file *
2839
+ */
2464
2840
  int32_t version;
2841
+ /**
2842
+ * Parquet schema for this file. This schema contains metadata for all the columns.
2843
+ * The schema is represented as a tree with a single root. The nodes of the tree
2844
+ * are flattened to a list by doing a depth-first traversal.
2845
+ * The column metadata contains the path in the schema for that column which can be
2846
+ * used to map columns to nodes in the schema.
2847
+ * The first element is the root *
2848
+ */
2465
2849
  duckdb::vector<SchemaElement> schema;
2850
+ /**
2851
+ * Number of rows in this file *
2852
+ */
2466
2853
  int64_t num_rows;
2854
+ /**
2855
+ * Row groups in this file *
2856
+ */
2467
2857
  duckdb::vector<RowGroup> row_groups;
2858
+ /**
2859
+ * Optional key/value metadata *
2860
+ */
2468
2861
  duckdb::vector<KeyValue> key_value_metadata;
2862
+ /**
2863
+ * String for application that wrote this file. This should be in the format
2864
+ * <Application> version <App Version> (build <App Build Hash>).
2865
+ * e.g. impala version 1.0 (build 6cf94d29b2b7115df4de2c06e2ab4326d721eb55)
2866
+ *
2867
+ */
2469
2868
  std::string created_by;
2869
+ /**
2870
+ * Sort order used for the min_value and max_value fields in the Statistics
2871
+ * objects and the min_values and max_values fields in the ColumnIndex
2872
+ * objects of each column in this file. Sort orders are listed in the order
2873
+ * matching the columns in the schema. The indexes are not necessary the same
2874
+ * though, because only leaf nodes of the schema are represented in the list
2875
+ * of sort orders.
2876
+ *
2877
+ * Without column_orders, the meaning of the min_value and max_value fields
2878
+ * in the Statistics object and the ColumnIndex object is undefined. To ensure
2879
+ * well-defined behaviour, if these fields are written to a Parquet file,
2880
+ * column_orders must be written as well.
2881
+ *
2882
+ * The obsolete min and max fields in the Statistics object are always sorted
2883
+ * by signed comparison regardless of column_orders.
2884
+ */
2470
2885
  duckdb::vector<ColumnOrder> column_orders;
2886
+ /**
2887
+ * Encryption algorithm. This field is set only in encrypted files
2888
+ * with plaintext footer. Files with encrypted footer store algorithm id
2889
+ * in FileCryptoMetaData structure.
2890
+ */
2471
2891
  EncryptionAlgorithm encryption_algorithm;
2892
+ /**
2893
+ * Retrieval metadata of key used for signing the footer.
2894
+ * Used only in encrypted files with plaintext footer.
2895
+ */
2472
2896
  std::string footer_signing_key_metadata;
2473
2897
 
2474
2898
  _FileMetaData__isset __isset;
@@ -2491,46 +2915,8 @@ class FileMetaData : public virtual ::duckdb_apache::thrift::TBase {
2491
2915
 
2492
2916
  void __set_footer_signing_key_metadata(const std::string& val);
2493
2917
 
2494
- bool operator == (const FileMetaData & rhs) const
2495
- {
2496
- if (!(version == rhs.version))
2497
- return false;
2498
- if (!(schema == rhs.schema))
2499
- return false;
2500
- if (!(num_rows == rhs.num_rows))
2501
- return false;
2502
- if (!(row_groups == rhs.row_groups))
2503
- return false;
2504
- if (__isset.key_value_metadata != rhs.__isset.key_value_metadata)
2505
- return false;
2506
- else if (__isset.key_value_metadata && !(key_value_metadata == rhs.key_value_metadata))
2507
- return false;
2508
- if (__isset.created_by != rhs.__isset.created_by)
2509
- return false;
2510
- else if (__isset.created_by && !(created_by == rhs.created_by))
2511
- return false;
2512
- if (__isset.column_orders != rhs.__isset.column_orders)
2513
- return false;
2514
- else if (__isset.column_orders && !(column_orders == rhs.column_orders))
2515
- return false;
2516
- if (__isset.encryption_algorithm != rhs.__isset.encryption_algorithm)
2517
- return false;
2518
- else if (__isset.encryption_algorithm && !(encryption_algorithm == rhs.encryption_algorithm))
2519
- return false;
2520
- if (__isset.footer_signing_key_metadata != rhs.__isset.footer_signing_key_metadata)
2521
- return false;
2522
- else if (__isset.footer_signing_key_metadata && !(footer_signing_key_metadata == rhs.footer_signing_key_metadata))
2523
- return false;
2524
- return true;
2525
- }
2526
- bool operator != (const FileMetaData &rhs) const {
2527
- return !(*this == rhs);
2528
- }
2529
-
2530
- bool operator < (const FileMetaData & ) const;
2531
-
2532
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
2533
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
2918
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
2919
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
2534
2920
 
2535
2921
  virtual void printTo(std::ostream& out) const;
2536
2922
  };
@@ -2544,16 +2930,27 @@ typedef struct _FileCryptoMetaData__isset {
2544
2930
  bool key_metadata :1;
2545
2931
  } _FileCryptoMetaData__isset;
2546
2932
 
2547
- class FileCryptoMetaData : public virtual ::duckdb_apache::thrift::TBase {
2933
+ /**
2934
+ * Crypto metadata for files with encrypted footer *
2935
+ */
2936
+ class FileCryptoMetaData : public virtual ::apache::thrift::TBase {
2548
2937
  public:
2549
2938
 
2550
2939
  FileCryptoMetaData(const FileCryptoMetaData&);
2551
2940
  FileCryptoMetaData& operator=(const FileCryptoMetaData&);
2552
- FileCryptoMetaData() : key_metadata() {
2553
- }
2554
-
2555
- virtual ~FileCryptoMetaData() throw();
2941
+ FileCryptoMetaData() noexcept;
2942
+
2943
+ virtual ~FileCryptoMetaData() noexcept;
2944
+ /**
2945
+ * Encryption algorithm. This field is only used for files
2946
+ * with encrypted footer. Files with plaintext footer store algorithm id
2947
+ * inside footer (FileMetaData structure).
2948
+ */
2556
2949
  EncryptionAlgorithm encryption_algorithm;
2950
+ /**
2951
+ * Retrieval metadata of key used for encryption of footer,
2952
+ * and (possibly) columns *
2953
+ */
2557
2954
  std::string key_metadata;
2558
2955
 
2559
2956
  _FileCryptoMetaData__isset __isset;
@@ -2562,24 +2959,8 @@ class FileCryptoMetaData : public virtual ::duckdb_apache::thrift::TBase {
2562
2959
 
2563
2960
  void __set_key_metadata(const std::string& val);
2564
2961
 
2565
- bool operator == (const FileCryptoMetaData & rhs) const
2566
- {
2567
- if (!(encryption_algorithm == rhs.encryption_algorithm))
2568
- return false;
2569
- if (__isset.key_metadata != rhs.__isset.key_metadata)
2570
- return false;
2571
- else if (__isset.key_metadata && !(key_metadata == rhs.key_metadata))
2572
- return false;
2573
- return true;
2574
- }
2575
- bool operator != (const FileCryptoMetaData &rhs) const {
2576
- return !(*this == rhs);
2577
- }
2578
-
2579
- bool operator < (const FileCryptoMetaData & ) const;
2580
-
2581
- uint32_t read(::duckdb_apache::thrift::protocol::TProtocol* iprot);
2582
- uint32_t write(::duckdb_apache::thrift::protocol::TProtocol* oprot) const;
2962
+ uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override;
2963
+ uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override;
2583
2964
 
2584
2965
  virtual void printTo(std::ostream& out) const;
2585
2966
  };
@@ -2588,6 +2969,6 @@ void swap(FileCryptoMetaData &a, FileCryptoMetaData &b);
2588
2969
 
2589
2970
  std::ostream& operator<<(std::ostream& out, const FileCryptoMetaData& obj);
2590
2971
 
2591
- }} // namespace
2972
+ } // namespace
2592
2973
 
2593
2974
  #endif