duckdb 0.8.1-dev65.0 → 0.8.1
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.
- package/binding.gyp +8 -8
- package/package.json +3 -1
- package/src/duckdb/extension/icu/icu-datepart.cpp +2 -2
- package/src/duckdb/extension/icu/icu-extension.cpp +1 -1
- package/src/duckdb/extension/icu/icu-makedate.cpp +5 -4
- package/src/duckdb/extension/icu/icu-strptime.cpp +1 -1
- package/src/duckdb/extension/icu/third_party/icu/i18n/nfsubs.cpp +0 -2
- package/src/duckdb/extension/json/buffered_json_reader.cpp +23 -14
- package/src/duckdb/extension/json/include/buffered_json_reader.hpp +6 -6
- package/src/duckdb/extension/json/include/json_common.hpp +13 -3
- package/src/duckdb/extension/json/include/json_executors.hpp +1 -1
- package/src/duckdb/extension/json/include/json_scan.hpp +5 -2
- package/src/duckdb/extension/json/json_functions/json_contains.cpp +5 -0
- package/src/duckdb/extension/json/json_functions/json_create.cpp +16 -16
- package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +3 -3
- package/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp +2 -2
- package/src/duckdb/extension/json/json_functions/json_structure.cpp +5 -3
- package/src/duckdb/extension/json/json_functions/json_transform.cpp +12 -12
- package/src/duckdb/extension/json/json_functions/read_json.cpp +2 -1
- package/src/duckdb/extension/json/json_functions.cpp +6 -3
- package/src/duckdb/extension/json/json_scan.cpp +43 -27
- package/src/duckdb/extension/parquet/column_reader.cpp +57 -52
- package/src/duckdb/extension/parquet/column_writer.cpp +57 -45
- package/src/duckdb/extension/parquet/include/cast_column_reader.hpp +1 -1
- package/src/duckdb/extension/parquet/include/column_reader.hpp +5 -4
- package/src/duckdb/extension/parquet/include/column_writer.hpp +24 -0
- package/src/duckdb/extension/parquet/include/decode_utils.hpp +6 -0
- package/src/duckdb/extension/parquet/include/list_column_reader.hpp +1 -1
- package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +4 -4
- package/src/duckdb/extension/parquet/include/parquet_rle_bp_decoder.hpp +4 -5
- package/src/duckdb/extension/parquet/include/resizable_buffer.hpp +4 -4
- package/src/duckdb/extension/parquet/include/row_number_column_reader.hpp +1 -1
- package/src/duckdb/extension/parquet/include/struct_column_reader.hpp +1 -1
- package/src/duckdb/extension/parquet/parquet-extension.cpp +27 -2
- package/src/duckdb/extension/parquet/parquet_metadata.cpp +1 -1
- package/src/duckdb/extension/parquet/parquet_reader.cpp +18 -18
- package/src/duckdb/extension/parquet/parquet_statistics.cpp +23 -26
- package/src/duckdb/extension/parquet/parquet_timestamp.cpp +2 -2
- package/src/duckdb/extension/parquet/parquet_writer.cpp +3 -3
- package/src/duckdb/extension/parquet/zstd_file_system.cpp +3 -3
- package/src/duckdb/src/catalog/catalog.cpp +5 -17
- package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +7 -1
- package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +121 -0
- package/src/duckdb/src/catalog/catalog_search_path.cpp +49 -12
- package/src/duckdb/src/catalog/catalog_set.cpp +1 -1
- package/src/duckdb/src/catalog/default/default_types.cpp +9 -84
- package/src/duckdb/src/catalog/dependency_manager.cpp +2 -2
- package/src/duckdb/src/common/adbc/adbc.cpp +118 -12
- package/src/duckdb/src/common/adbc/driver_manager.cpp +0 -20
- package/src/duckdb/src/common/arrow/arrow_appender.cpp +12 -12
- package/src/duckdb/src/common/arrow/arrow_converter.cpp +11 -12
- package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +11 -10
- package/src/duckdb/src/common/checksum.cpp +1 -1
- package/src/duckdb/src/common/compressed_file_system.cpp +6 -6
- package/src/duckdb/src/common/crypto/md5.cpp +9 -9
- package/src/duckdb/src/common/exception.cpp +4 -1
- package/src/duckdb/src/common/exception_format_value.cpp +24 -15
- package/src/duckdb/src/common/field_writer.cpp +1 -1
- package/src/duckdb/src/common/fsst.cpp +11 -6
- package/src/duckdb/src/common/gzip_file_system.cpp +8 -8
- package/src/duckdb/src/common/hive_partitioning.cpp +1 -1
- package/src/duckdb/src/common/local_file_system.cpp +11 -11
- package/src/duckdb/src/common/multi_file_reader.cpp +3 -0
- package/src/duckdb/src/common/operator/cast_operators.cpp +1 -1
- package/src/duckdb/src/common/pipe_file_system.cpp +2 -2
- package/src/duckdb/src/common/radix_partitioning.cpp +2 -2
- package/src/duckdb/src/common/random_engine.cpp +1 -1
- package/src/duckdb/src/common/row_operations/row_heap_gather.cpp +1 -1
- package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +5 -5
- package/src/duckdb/src/common/row_operations/row_match.cpp +1 -1
- package/src/duckdb/src/common/row_operations/row_radix_scatter.cpp +2 -2
- package/src/duckdb/src/common/row_operations/row_scatter.cpp +4 -4
- package/src/duckdb/src/common/serializer/binary_deserializer.cpp +1 -1
- package/src/duckdb/src/common/serializer/binary_serializer.cpp +3 -3
- package/src/duckdb/src/common/serializer.cpp +1 -1
- package/src/duckdb/src/common/sort/comparators.cpp +1 -1
- package/src/duckdb/src/common/sort/merge_sorter.cpp +7 -2
- package/src/duckdb/src/common/sort/partition_state.cpp +2 -2
- package/src/duckdb/src/common/types/bit.cpp +5 -5
- package/src/duckdb/src/common/types/blob.cpp +8 -8
- package/src/duckdb/src/common/types/column/column_data_allocator.cpp +4 -4
- package/src/duckdb/src/common/types/column/column_data_collection.cpp +3 -3
- package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +1 -1
- package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +2 -2
- package/src/duckdb/src/common/types/hash.cpp +2 -2
- package/src/duckdb/src/common/types/hyperloglog.cpp +22 -21
- package/src/duckdb/src/common/types/list_segment.cpp +77 -49
- package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +1 -1
- package/src/duckdb/src/common/types/row/row_data_collection_scanner.cpp +5 -4
- package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +5 -3
- package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +61 -24
- package/src/duckdb/src/common/types/string_heap.cpp +1 -1
- package/src/duckdb/src/common/types/time.cpp +2 -8
- package/src/duckdb/src/common/types/timestamp.cpp +37 -1
- package/src/duckdb/src/common/types/value.cpp +3 -2
- package/src/duckdb/src/common/types/vector.cpp +98 -101
- package/src/duckdb/src/common/types/vector_cache.cpp +6 -6
- package/src/duckdb/src/common/types/vector_constants.cpp +2 -1
- package/src/duckdb/src/common/types.cpp +48 -33
- package/src/duckdb/src/common/vector_operations/boolean_operators.cpp +2 -2
- package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +12 -12
- package/src/duckdb/src/common/vector_operations/vector_hash.cpp +13 -11
- package/src/duckdb/src/common/vector_operations/vector_storage.cpp +1 -1
- package/src/duckdb/src/core_functions/aggregate/algebraic/avg.cpp +30 -33
- package/src/duckdb/src/core_functions/aggregate/algebraic/covar.cpp +0 -4
- package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +33 -36
- package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +53 -66
- package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +48 -48
- package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +44 -44
- package/src/duckdb/src/core_functions/aggregate/distributive/bool.cpp +32 -32
- package/src/duckdb/src/core_functions/aggregate/distributive/entropy.cpp +34 -34
- package/src/duckdb/src/core_functions/aggregate/distributive/kurtosis.cpp +30 -31
- package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +91 -103
- package/src/duckdb/src/core_functions/aggregate/distributive/product.cpp +17 -17
- package/src/duckdb/src/core_functions/aggregate/distributive/skew.cpp +25 -27
- package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +37 -38
- package/src/duckdb/src/core_functions/aggregate/distributive/sum.cpp +22 -22
- package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +49 -85
- package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +49 -51
- package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +116 -134
- package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +63 -100
- package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +24 -26
- package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +22 -23
- package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +16 -18
- package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +22 -25
- package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +19 -24
- package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +18 -23
- package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +14 -18
- package/src/duckdb/src/core_functions/function_list.cpp +1 -0
- package/src/duckdb/src/core_functions/scalar/blob/base64.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +46 -46
- package/src/duckdb/src/core_functions/scalar/date/make_date.cpp +3 -0
- package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +2 -2
- package/src/duckdb/src/core_functions/scalar/generic/current_setting.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/generic/least.cpp +2 -2
- package/src/duckdb/src/core_functions/scalar/generic/stats.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/generic/system_functions.cpp +14 -0
- package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +4 -4
- package/src/duckdb/src/core_functions/scalar/list/flatten.cpp +2 -4
- package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +26 -9
- package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +7 -9
- package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/map/cardinality.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/map/map.cpp +2 -2
- package/src/duckdb/src/core_functions/scalar/map/map_concat.cpp +4 -1
- package/src/duckdb/src/core_functions/scalar/map/map_extract.cpp +5 -9
- package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +6 -6
- package/src/duckdb/src/core_functions/scalar/string/starts_with.cpp +3 -2
- package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +4 -4
- package/src/duckdb/src/core_functions/scalar/string/trim.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/union/union_extract.cpp +1 -1
- package/src/duckdb/src/execution/adaptive_filter.cpp +1 -1
- package/src/duckdb/src/execution/expression_executor/execute_case.cpp +10 -10
- package/src/duckdb/src/execution/expression_executor/execute_conjunction.cpp +7 -7
- package/src/duckdb/src/execution/expression_executor.cpp +28 -28
- package/src/duckdb/src/execution/index/art/art.cpp +110 -39
- package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +23 -5
- package/src/duckdb/src/execution/index/art/leaf.cpp +11 -11
- package/src/duckdb/src/execution/index/art/leaf_segment.cpp +10 -0
- package/src/duckdb/src/execution/index/art/node.cpp +48 -35
- package/src/duckdb/src/execution/index/art/node16.cpp +3 -0
- package/src/duckdb/src/execution/index/art/node256.cpp +1 -0
- package/src/duckdb/src/execution/index/art/node4.cpp +3 -0
- package/src/duckdb/src/execution/index/art/node48.cpp +2 -0
- package/src/duckdb/src/execution/index/art/prefix.cpp +2 -0
- package/src/duckdb/src/execution/join_hashtable.cpp +6 -4
- package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_inner.cpp +4 -4
- package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_mark.cpp +2 -2
- package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +1 -1
- package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +1 -1
- package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +2 -2
- package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +4 -4
- package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +26 -9
- package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +1 -1
- package/src/duckdb/src/execution/operator/helper/physical_reset.cpp +5 -2
- package/src/duckdb/src/execution/operator/helper/physical_set.cpp +5 -1
- package/src/duckdb/src/execution/operator/join/outer_join_marker.cpp +1 -1
- package/src/duckdb/src/execution/operator/join/perfect_hash_join_executor.cpp +1 -1
- package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +2 -2
- package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +4 -4
- package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +3 -6
- package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +3 -3
- package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +3 -3
- package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +3 -3
- package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +1 -1
- package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +2 -2
- package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +2 -2
- package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +2 -3
- package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -1
- package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +2 -2
- package/src/duckdb/src/execution/operator/projection/physical_projection.cpp +1 -1
- package/src/duckdb/src/execution/operator/projection/physical_tableinout_function.cpp +1 -0
- package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +10 -5
- package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +2 -1
- package/src/duckdb/src/execution/operator/scan/physical_expression_scan.cpp +1 -1
- package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +2 -2
- package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +0 -1
- package/src/duckdb/src/execution/operator/schema/physical_create_index.cpp +29 -3
- package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +1 -1
- package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +1 -1
- package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +1 -1
- package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +1 -1
- package/src/duckdb/src/execution/physical_plan_generator.cpp +2 -2
- package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +1 -1
- package/src/duckdb/src/execution/reservoir_sample.cpp +20 -6
- package/src/duckdb/src/execution/window_segment_tree.cpp +8 -6
- package/src/duckdb/src/function/aggregate/distributive/count.cpp +159 -21
- package/src/duckdb/src/function/aggregate/distributive/first.cpp +68 -75
- package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +14 -14
- package/src/duckdb/src/function/cast/cast_function_set.cpp +1 -1
- package/src/duckdb/src/function/cast/decimal_cast.cpp +1 -1
- package/src/duckdb/src/function/cast/enum_casts.cpp +2 -2
- package/src/duckdb/src/function/cast/list_casts.cpp +2 -4
- package/src/duckdb/src/function/cast/string_cast.cpp +11 -11
- package/src/duckdb/src/function/cast/union_casts.cpp +2 -2
- package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +3 -2
- package/src/duckdb/src/function/pragma/pragma_queries.cpp +33 -23
- package/src/duckdb/src/function/scalar/generic/constant_or_null.cpp +1 -1
- package/src/duckdb/src/function/scalar/list/list_concat.cpp +2 -2
- package/src/duckdb/src/function/scalar/list/list_extract.cpp +4 -4
- package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +3 -4
- package/src/duckdb/src/function/scalar/string/concat.cpp +8 -7
- package/src/duckdb/src/function/scalar/string/contains.cpp +4 -4
- package/src/duckdb/src/function/scalar/string/like.cpp +5 -5
- package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +4 -4
- package/src/duckdb/src/function/scalar/string/regexp/regexp_util.cpp +6 -2
- package/src/duckdb/src/function/scalar/string/regexp.cpp +3 -3
- package/src/duckdb/src/function/scalar/string/strip_accents.cpp +1 -1
- package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +1 -1
- package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +27 -25
- package/src/duckdb/src/function/scalar_function.cpp +3 -3
- package/src/duckdb/src/function/table/arrow.cpp +6 -6
- package/src/duckdb/src/function/table/arrow_conversion.cpp +67 -61
- package/src/duckdb/src/function/table/checkpoint.cpp +4 -1
- package/src/duckdb/src/function/table/copy_csv.cpp +11 -7
- package/src/duckdb/src/function/table/glob.cpp +1 -1
- package/src/duckdb/src/function/table/pragma_last_profiling_output.cpp +1 -1
- package/src/duckdb/src/function/table/range.cpp +4 -4
- package/src/duckdb/src/function/table/read_csv.cpp +19 -21
- package/src/duckdb/src/function/table/repeat.cpp +5 -2
- package/src/duckdb/src/function/table/repeat_row.cpp +10 -3
- package/src/duckdb/src/function/table/system/duckdb_functions.cpp +1 -1
- package/src/duckdb/src/function/table/system/pragma_storage_info.cpp +4 -4
- package/src/duckdb/src/function/table/system/test_vector_types.cpp +82 -26
- package/src/duckdb/src/function/table/table_scan.cpp +4 -4
- package/src/duckdb/src/function/table/unnest.cpp +1 -1
- package/src/duckdb/src/function/table/version/pragma_version.cpp +3 -3
- package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +2 -5
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +2 -0
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +11 -1
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +2 -2
- package/src/duckdb/src/include/duckdb/catalog/catalog_search_path.hpp +8 -2
- package/src/duckdb/src/include/duckdb/catalog/default/builtin_types/types.hpp +97 -0
- package/src/duckdb/src/include/duckdb/common/allocator.hpp +15 -4
- package/src/duckdb/src/include/duckdb/common/arrow/arrow_appender.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/arrow/arrow_buffer.hpp +7 -2
- package/src/duckdb/src/include/duckdb/common/arrow/arrow_converter.hpp +2 -3
- package/src/duckdb/src/include/duckdb/common/arrow/arrow_options.hpp +8 -1
- package/src/duckdb/src/include/duckdb/common/arrow/result_arrow_wrapper.hpp +0 -1
- package/src/duckdb/src/include/duckdb/common/bit_utils.hpp +16 -22
- package/src/duckdb/src/include/duckdb/common/crypto/md5.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/exception.hpp +5 -2
- package/src/duckdb/src/include/duckdb/common/field_writer.hpp +3 -3
- package/src/duckdb/src/include/duckdb/common/file_system.hpp +11 -0
- package/src/duckdb/src/include/duckdb/common/fsst.hpp +2 -3
- package/src/duckdb/src/include/duckdb/common/radix.hpp +3 -3
- package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +4 -1
- package/src/duckdb/src/include/duckdb/common/serializer.hpp +4 -4
- package/src/duckdb/src/include/duckdb/common/typedefs.hpp +30 -0
- package/src/duckdb/src/include/duckdb/common/types/column/partitioned_column_data.hpp +12 -0
- package/src/duckdb/src/include/duckdb/common/types/hyperloglog.hpp +6 -2
- package/src/duckdb/src/include/duckdb/common/types/null_value.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +12 -0
- package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +10 -10
- package/src/duckdb/src/include/duckdb/common/types/time.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +4 -14
- package/src/duckdb/src/include/duckdb/common/types/value.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/vector.hpp +9 -0
- package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +18 -6
- package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +112 -76
- package/src/duckdb/src/include/duckdb/common/vector_operations/binary_executor.hpp +16 -15
- package/src/duckdb/src/include/duckdb/common/vector_operations/generic_executor.hpp +11 -11
- package/src/duckdb/src/include/duckdb/common/vector_operations/ternary_executor.hpp +23 -19
- package/src/duckdb/src/include/duckdb/common/vector_operations/unary_executor.hpp +3 -3
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/corr.hpp +20 -24
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +36 -39
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/stddev.hpp +57 -53
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +8 -9
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +16 -18
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +7 -8
- package/src/duckdb/src/include/duckdb/core_functions/scalar/generic_functions.hpp +9 -0
- package/src/duckdb/src/include/duckdb/core_functions/scalar/map_functions.hpp +2 -6
- package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +16 -36
- package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +14 -2
- package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +13 -7
- package/src/duckdb/src/include/duckdb/execution/index/art/fixed_size_allocator.hpp +3 -0
- package/src/duckdb/src/include/duckdb/execution/index/art/leaf.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/index/art/leaf_segment.hpp +2 -0
- package/src/duckdb/src/include/duckdb/execution/index/art/node.hpp +13 -3
- package/src/duckdb/src/include/duckdb/execution/index/art/node48.hpp +1 -0
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_result_collector.hpp +3 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_buffer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +5 -2
- package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +12 -12
- package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +9 -30
- package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +95 -0
- package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +13 -2
- package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +4 -4
- package/src/duckdb/src/include/duckdb/function/compression_function.hpp +44 -0
- package/src/duckdb/src/include/duckdb/function/copy_function.hpp +6 -6
- package/src/duckdb/src/include/duckdb/function/function.hpp +3 -3
- package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +4 -2
- package/src/duckdb/src/include/duckdb/function/macro_function.hpp +2 -2
- package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +3 -3
- package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +4 -3
- package/src/duckdb/src/include/duckdb/function/table_function.hpp +9 -8
- package/src/duckdb/src/include/duckdb/main/attached_database.hpp +4 -1
- package/src/duckdb/src/include/duckdb/main/capi/capi_internal.hpp +3 -1
- package/src/duckdb/src/include/duckdb/main/capi/cast/utils.hpp +1 -1
- package/src/duckdb/src/include/duckdb/main/config.hpp +5 -0
- package/src/duckdb/src/include/duckdb/main/database_manager.hpp +1 -0
- package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +142 -136
- package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +3 -0
- package/src/duckdb/src/include/duckdb/main/pending_query_result.hpp +3 -0
- package/src/duckdb/src/include/duckdb/main/query_result.hpp +23 -0
- package/src/duckdb/src/include/duckdb/main/relation.hpp +12 -0
- package/src/duckdb/src/include/duckdb/main/settings.hpp +19 -0
- package/src/duckdb/src/include/duckdb/main/stream_query_result.hpp +3 -0
- package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +2 -2
- package/src/duckdb/src/include/duckdb/optimizer/unnest_rewriter.hpp +4 -0
- package/src/duckdb/src/include/duckdb/parallel/meta_pipeline.hpp +12 -3
- package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +6 -12
- package/src/duckdb/src/include/duckdb/parser/constraint.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression_map.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +5 -1
- package/src/duckdb/src/include/duckdb/parser/parser.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +36 -5
- package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +7 -4
- package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +3 -3
- package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref.hpp +4 -3
- package/src/duckdb/src/include/duckdb/parser/transformer.hpp +106 -92
- package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/bound_query_node.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +37 -1
- package/src/duckdb/src/include/duckdb/planner/bound_tableref.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_case_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_columnref_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_conjunction_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_constant_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_operator_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_reference_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_subquery_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_unnest_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression.hpp +5 -7
- package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +6 -0
- package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/filter/null_filter.hpp +6 -0
- package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +7 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp +6 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_execute.hpp +4 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_explain.hpp +5 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +5 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_pragma.hpp +6 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_prepare.hpp +4 -0
- package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +26 -0
- package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +17 -0
- package/src/duckdb/src/include/duckdb/planner/tableref/bound_pivotref.hpp +3 -0
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/byte_reader.hpp +4 -0
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_analyze.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_compress.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_analyze.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/data_table.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/in_memory_block_manager.hpp +13 -13
- package/src/duckdb/src/include/duckdb/storage/index.hpp +6 -4
- package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/storage_extension.hpp +0 -6
- package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +12 -0
- package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +25 -2
- package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +12 -0
- package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/list_column_data.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +22 -0
- package/src/duckdb/src/include/duckdb/storage/table/standard_column_data.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/table/struct_column_data.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/table_storage_info.hpp +0 -2
- package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +2 -2
- package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +2 -2
- package/src/duckdb/src/main/attached_database.cpp +8 -0
- package/src/duckdb/src/main/capi/appender-c.cpp +5 -5
- package/src/duckdb/src/main/capi/arrow-c.cpp +13 -13
- package/src/duckdb/src/main/capi/cast/from_decimal-c.cpp +1 -1
- package/src/duckdb/src/main/capi/cast/utils-c.cpp +1 -1
- package/src/duckdb/src/main/capi/config-c.cpp +3 -6
- package/src/duckdb/src/main/capi/data_chunk-c.cpp +17 -17
- package/src/duckdb/src/main/capi/duckdb-c.cpp +4 -4
- package/src/duckdb/src/main/capi/duckdb_value-c.cpp +4 -4
- package/src/duckdb/src/main/capi/logical_types-c.cpp +22 -21
- package/src/duckdb/src/main/capi/pending-c.cpp +6 -6
- package/src/duckdb/src/main/capi/prepared-c.cpp +10 -10
- package/src/duckdb/src/main/capi/replacement_scan-c.cpp +6 -6
- package/src/duckdb/src/main/capi/result-c.cpp +23 -23
- package/src/duckdb/src/main/capi/table_function-c.cpp +1 -1
- package/src/duckdb/src/main/client_context.cpp +7 -6
- package/src/duckdb/src/main/config.cpp +2 -0
- package/src/duckdb/src/main/database.cpp +1 -0
- package/src/duckdb/src/main/database_manager.cpp +22 -1
- package/src/duckdb/src/main/error_manager.cpp +1 -1
- package/src/duckdb/src/main/extension/extension_load.cpp +1 -1
- package/src/duckdb/src/main/query_result.cpp +6 -2
- package/src/duckdb/src/main/relation/create_table_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/create_view_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/delete_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/explain_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/insert_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/update_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/write_csv_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/write_parquet_relation.cpp +1 -1
- package/src/duckdb/src/main/relation.cpp +1 -1
- package/src/duckdb/src/main/settings/settings.cpp +41 -6
- package/src/duckdb/src/optimizer/deliminator.cpp +12 -12
- package/src/duckdb/src/optimizer/filter_combiner.cpp +3 -3
- package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +10 -10
- package/src/duckdb/src/optimizer/matcher/expression_matcher.cpp +1 -1
- package/src/duckdb/src/optimizer/pullup/pullup_projection.cpp +2 -2
- package/src/duckdb/src/optimizer/regex_range_filter.cpp +2 -4
- package/src/duckdb/src/optimizer/rule/distributivity.cpp +2 -2
- package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +6 -6
- package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +2 -2
- package/src/duckdb/src/optimizer/unnest_rewriter.cpp +27 -16
- package/src/duckdb/src/parallel/executor.cpp +39 -15
- package/src/duckdb/src/parallel/meta_pipeline.cpp +17 -3
- package/src/duckdb/src/parser/base_expression.cpp +2 -5
- package/src/duckdb/src/parser/column_definition.cpp +5 -8
- package/src/duckdb/src/parser/expression/between_expression.cpp +4 -4
- package/src/duckdb/src/parser/expression/case_expression.cpp +6 -6
- package/src/duckdb/src/parser/expression/cast_expression.cpp +4 -4
- package/src/duckdb/src/parser/expression/collate_expression.cpp +3 -3
- package/src/duckdb/src/parser/expression/columnref_expression.cpp +4 -4
- package/src/duckdb/src/parser/expression/comparison_expression.cpp +3 -3
- package/src/duckdb/src/parser/expression/conjunction_expression.cpp +2 -2
- package/src/duckdb/src/parser/expression/constant_expression.cpp +2 -2
- package/src/duckdb/src/parser/expression/function_expression.cpp +10 -14
- package/src/duckdb/src/parser/expression/lambda_expression.cpp +2 -2
- package/src/duckdb/src/parser/expression/operator_expression.cpp +4 -4
- package/src/duckdb/src/parser/expression/parameter_expression.cpp +2 -2
- package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +3 -3
- package/src/duckdb/src/parser/expression/star_expression.cpp +9 -9
- package/src/duckdb/src/parser/expression/subquery_expression.cpp +5 -5
- package/src/duckdb/src/parser/expression/window_expression.cpp +13 -24
- package/src/duckdb/src/parser/parsed_data/create_info.cpp +0 -3
- package/src/duckdb/src/parser/parsed_expression.cpp +34 -18
- package/src/duckdb/src/parser/parsed_expression_iterator.cpp +4 -4
- package/src/duckdb/src/parser/parser.cpp +98 -38
- package/src/duckdb/src/parser/query_node/select_node.cpp +6 -13
- package/src/duckdb/src/parser/query_node.cpp +7 -6
- package/src/duckdb/src/parser/result_modifier.cpp +25 -18
- package/src/duckdb/src/parser/statement/select_statement.cpp +3 -3
- package/src/duckdb/src/parser/tableref/basetableref.cpp +4 -4
- package/src/duckdb/src/parser/tableref/emptytableref.cpp +1 -1
- package/src/duckdb/src/parser/tableref/expressionlistref.cpp +5 -5
- package/src/duckdb/src/parser/tableref/joinref.cpp +6 -6
- package/src/duckdb/src/parser/tableref/pivotref.cpp +10 -15
- package/src/duckdb/src/parser/tableref/subqueryref.cpp +3 -3
- package/src/duckdb/src/parser/tableref/table_function.cpp +3 -3
- package/src/duckdb/src/parser/tableref.cpp +12 -3
- package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +7 -7
- package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +4 -4
- package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +4 -4
- package/src/duckdb/src/parser/transform/expression/transform_case.cpp +8 -10
- package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +7 -9
- package/src/duckdb/src/parser/transform/expression/transform_coalesce.cpp +3 -5
- package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +22 -22
- package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +2 -2
- package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +42 -44
- package/src/duckdb/src/parser/transform/expression/transform_function.cpp +70 -75
- package/src/duckdb/src/parser/transform/expression/transform_grouping_function.cpp +4 -4
- package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +7 -7
- package/src/duckdb/src/parser/transform/expression/transform_is_null.cpp +4 -5
- package/src/duckdb/src/parser/transform/expression/transform_lambda.cpp +5 -6
- package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +31 -29
- package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +13 -14
- package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +4 -4
- package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +9 -10
- package/src/duckdb/src/parser/transform/helpers/nodetype_to_string.cpp +0 -2
- package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +28 -32
- package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +18 -18
- package/src/duckdb/src/parser/transform/helpers/transform_sample.cpp +3 -3
- package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +27 -26
- package/src/duckdb/src/parser/transform/statement/transform_alter_sequence.cpp +11 -14
- package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +14 -16
- package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +8 -9
- package/src/duckdb/src/parser/transform/statement/transform_call.cpp +2 -5
- package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +4 -6
- package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +22 -23
- package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +14 -18
- package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +13 -15
- package/src/duckdb/src/parser/transform/statement/transform_create_schema.cpp +8 -10
- package/src/duckdb/src/parser/transform/statement/transform_create_sequence.cpp +8 -10
- package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +26 -28
- package/src/duckdb/src/parser/transform/statement/transform_create_table_as.cpp +8 -10
- package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +12 -15
- package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +13 -18
- package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +11 -13
- package/src/duckdb/src/parser/transform/statement/transform_detach.cpp +3 -4
- package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +20 -25
- package/src/duckdb/src/parser/transform/statement/transform_explain.cpp +5 -7
- package/src/duckdb/src/parser/transform/statement/transform_export.cpp +5 -6
- package/src/duckdb/src/parser/transform/statement/transform_import.cpp +2 -3
- package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +21 -24
- package/src/duckdb/src/parser/transform/statement/transform_load.cpp +4 -5
- package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +7 -7
- package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +7 -9
- package/src/duckdb/src/parser/transform/statement/transform_prepare.cpp +11 -19
- package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +12 -14
- package/src/duckdb/src/parser/transform/statement/transform_select.cpp +12 -9
- package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +34 -34
- package/src/duckdb/src/parser/transform/statement/transform_set.cpp +18 -19
- package/src/duckdb/src/parser/transform/statement/transform_show.cpp +5 -7
- package/src/duckdb/src/parser/transform/statement/transform_show_select.cpp +4 -5
- package/src/duckdb/src/parser/transform/statement/transform_transaction.cpp +3 -5
- package/src/duckdb/src/parser/transform/statement/transform_update.cpp +10 -13
- package/src/duckdb/src/parser/transform/statement/transform_upsert.cpp +4 -4
- package/src/duckdb/src/parser/transform/statement/transform_use.cpp +2 -3
- package/src/duckdb/src/parser/transform/statement/transform_vacuum.cpp +6 -10
- package/src/duckdb/src/parser/transform/tableref/transform_base_tableref.cpp +18 -18
- package/src/duckdb/src/parser/transform/tableref/transform_from.cpp +5 -5
- package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +11 -11
- package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +30 -27
- package/src/duckdb/src/parser/transform/tableref/transform_subquery.cpp +5 -5
- package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +13 -12
- package/src/duckdb/src/parser/transform/tableref/transform_tableref.cpp +8 -8
- package/src/duckdb/src/parser/transformer.cpp +45 -47
- package/src/duckdb/src/planner/bind_context.cpp +9 -10
- package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +1 -3
- package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +1 -1
- package/src/duckdb/src/planner/binder/expression/bind_positional_reference_expression.cpp +8 -3
- package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +1 -1
- package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +6 -3
- package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +39 -23
- package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +4 -4
- package/src/duckdb/src/planner/binder/statement/bind_create.cpp +1 -28
- package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +18 -1
- package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +0 -25
- package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +2 -2
- package/src/duckdb/src/planner/binder/statement/bind_update.cpp +2 -114
- package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +7 -2
- package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +7 -2
- package/src/duckdb/src/planner/binder.cpp +1 -1
- package/src/duckdb/src/planner/bound_result_modifier.cpp +30 -11
- package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +11 -10
- package/src/duckdb/src/planner/expression/bound_between_expression.cpp +5 -5
- package/src/duckdb/src/planner/expression/bound_case_expression.cpp +5 -5
- package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +3 -3
- package/src/duckdb/src/planner/expression/bound_columnref_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_comparison_expression.cpp +4 -4
- package/src/duckdb/src/planner/expression/bound_conjunction_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_constant_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_default_expression.cpp +7 -1
- package/src/duckdb/src/planner/expression/bound_expression.cpp +1 -1
- package/src/duckdb/src/planner/expression/bound_function_expression.cpp +3 -4
- package/src/duckdb/src/planner/expression/bound_lambda_expression.cpp +4 -5
- package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_operator_expression.cpp +3 -4
- package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_reference_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_subquery_expression.cpp +1 -1
- package/src/duckdb/src/planner/expression/bound_unnest_expression.cpp +3 -3
- package/src/duckdb/src/planner/expression/bound_window_expression.cpp +8 -21
- package/src/duckdb/src/planner/expression.cpp +18 -0
- package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +2 -2
- package/src/duckdb/src/planner/expression_binder.cpp +3 -2
- package/src/duckdb/src/planner/expression_iterator.cpp +2 -2
- package/src/duckdb/src/planner/filter/conjunction_filter.cpp +2 -2
- package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -1
- package/src/duckdb/src/planner/logical_operator.cpp +3 -4
- package/src/duckdb/src/planner/logical_operator_visitor.cpp +1 -1
- package/src/duckdb/src/planner/operator/logical_distinct.cpp +5 -4
- package/src/duckdb/src/planner/operator/logical_pivot.cpp +14 -2
- package/src/duckdb/src/planner/planner.cpp +5 -15
- package/src/duckdb/src/planner/table_filter.cpp +1 -1
- package/src/duckdb/src/storage/arena_allocator.cpp +2 -2
- package/src/duckdb/src/storage/buffer/block_handle.cpp +1 -1
- package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +2 -2
- package/src/duckdb/src/storage/checkpoint_manager.cpp +3 -3
- package/src/duckdb/src/storage/compression/bitpacking.cpp +8 -8
- package/src/duckdb/src/storage/compression/dictionary_compression.cpp +36 -36
- package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +11 -11
- package/src/duckdb/src/storage/compression/fsst.cpp +34 -34
- package/src/duckdb/src/storage/compression/rle.cpp +8 -8
- package/src/duckdb/src/storage/compression/string_uncompressed.cpp +13 -13
- package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +11 -11
- package/src/duckdb/src/storage/data_table.cpp +12 -10
- package/src/duckdb/src/storage/index.cpp +13 -0
- package/src/duckdb/src/storage/single_file_block_manager.cpp +3 -3
- package/src/duckdb/src/storage/standard_buffer_manager.cpp +3 -3
- package/src/duckdb/src/storage/statistics/list_stats.cpp +1 -1
- package/src/duckdb/src/storage/statistics/numeric_stats.cpp +1 -1
- package/src/duckdb/src/storage/statistics/string_stats.cpp +15 -14
- package/src/duckdb/src/storage/storage_manager.cpp +6 -0
- package/src/duckdb/src/storage/table/chunk_info.cpp +2 -2
- package/src/duckdb/src/storage/table/column_data.cpp +7 -3
- package/src/duckdb/src/storage/table/column_segment.cpp +3 -3
- package/src/duckdb/src/storage/table/list_column_data.cpp +8 -7
- package/src/duckdb/src/storage/table/row_group.cpp +8 -7
- package/src/duckdb/src/storage/table/row_group_collection.cpp +6 -3
- package/src/duckdb/src/storage/table/standard_column_data.cpp +5 -4
- package/src/duckdb/src/storage/table/struct_column_data.cpp +4 -3
- package/src/duckdb/src/storage/table/update_segment.cpp +12 -12
- package/src/duckdb/src/storage/wal_replay.cpp +5 -6
- package/src/duckdb/src/transaction/cleanup_state.cpp +3 -3
- package/src/duckdb/src/transaction/commit_state.cpp +8 -8
- package/src/duckdb/src/transaction/duck_transaction.cpp +9 -7
- package/src/duckdb/src/transaction/duck_transaction_manager.cpp +16 -16
- package/src/duckdb/src/transaction/rollback_state.cpp +3 -3
- package/src/duckdb/src/verification/prepared_statement_verifier.cpp +1 -1
- package/src/duckdb/src/verification/statement_verifier.cpp +3 -4
- package/src/duckdb/third_party/hyperloglog/hyperloglog.hpp +2 -2
- package/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp +0 -1
- package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +0 -14
- package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +12828 -12956
- package/src/duckdb/third_party/pcg/pcg_extras.hpp +1 -1
- package/src/duckdb/third_party/zstd/compress/zstd_compress.cpp +3 -0
- package/src/duckdb/third_party/zstd/include/zstd/compress/zstd_cwksp.h +4 -0
- package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +5 -5
- package/src/duckdb/ub_src_parser_transform_statement.cpp +0 -2
- package/test/extension.test.ts +11 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_database_info.hpp +0 -46
- package/src/duckdb/src/parser/transform/statement/transform_create_database.cpp +0 -28
@@ -58,7 +58,7 @@ static shared_ptr<ParquetFileMetadataCache> LoadMetadata(Allocator &allocator, F
|
|
58
58
|
auto current_time = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
|
59
59
|
|
60
60
|
auto proto = CreateThriftProtocol(allocator, file_handle, false);
|
61
|
-
auto &transport =
|
61
|
+
auto &transport = reinterpret_cast<ThriftFileTransport &>(*proto->getTransport());
|
62
62
|
auto file_size = transport.GetSize();
|
63
63
|
if (file_size < 12) {
|
64
64
|
throw InvalidInputException("File '%s' too small to be a Parquet file", file_handle.path);
|
@@ -71,11 +71,11 @@ static shared_ptr<ParquetFileMetadataCache> LoadMetadata(Allocator &allocator, F
|
|
71
71
|
transport.SetLocation(file_size - 8);
|
72
72
|
transport.read((uint8_t *)buf.ptr, 8);
|
73
73
|
|
74
|
-
if (
|
74
|
+
if (memcmp(buf.ptr + 4, "PAR1", 4) != 0) {
|
75
75
|
throw InvalidInputException("No magic bytes found at end of file '%s'", file_handle.path);
|
76
76
|
}
|
77
77
|
// read four-byte footer length from just before the end magic bytes
|
78
|
-
auto footer_len = *
|
78
|
+
auto footer_len = *reinterpret_cast<uint32_t *>(buf.ptr);
|
79
79
|
if (footer_len <= 0 || file_size < 12 + footer_len) {
|
80
80
|
throw InvalidInputException("Footer length error in file '%s'", file_handle.path);
|
81
81
|
}
|
@@ -484,7 +484,7 @@ unique_ptr<BaseStatistics> ParquetReader::ReadStatistics(const string &name) {
|
|
484
484
|
unique_ptr<BaseStatistics> column_stats;
|
485
485
|
auto file_meta_data = GetFileMetadata();
|
486
486
|
auto root_reader = CreateReader();
|
487
|
-
auto column_reader = (
|
487
|
+
auto column_reader = root_reader->Cast<StructColumnReader>().GetChildReader(file_col_idx);
|
488
488
|
|
489
489
|
for (idx_t row_group_idx = 0; row_group_idx < file_meta_data->row_groups.size(); row_group_idx++) {
|
490
490
|
auto &row_group = file_meta_data->row_groups[row_group_idx];
|
@@ -573,7 +573,7 @@ idx_t ParquetReader::GetGroupOffset(ParquetReaderScanState &state) {
|
|
573
573
|
void ParquetReader::PrepareRowGroupBuffer(ParquetReaderScanState &state, idx_t col_idx) {
|
574
574
|
auto &group = GetGroup(state);
|
575
575
|
auto column_id = reader_data.column_ids[col_idx];
|
576
|
-
auto column_reader =
|
576
|
+
auto column_reader = state.root_reader->Cast<StructColumnReader>().GetChildReader(column_id);
|
577
577
|
|
578
578
|
// TODO move this to columnreader too
|
579
579
|
if (reader_data.filters) {
|
@@ -760,14 +760,14 @@ static void FilterOperationSwitch(Vector &v, Value &constant, parquet_filter_t &
|
|
760
760
|
static void ApplyFilter(Vector &v, TableFilter &filter, parquet_filter_t &filter_mask, idx_t count) {
|
761
761
|
switch (filter.filter_type) {
|
762
762
|
case TableFilterType::CONJUNCTION_AND: {
|
763
|
-
auto &conjunction = (
|
763
|
+
auto &conjunction = filter.Cast<ConjunctionAndFilter>();
|
764
764
|
for (auto &child_filter : conjunction.child_filters) {
|
765
765
|
ApplyFilter(v, *child_filter, filter_mask, count);
|
766
766
|
}
|
767
767
|
break;
|
768
768
|
}
|
769
769
|
case TableFilterType::CONJUNCTION_OR: {
|
770
|
-
auto &conjunction = (
|
770
|
+
auto &conjunction = filter.Cast<ConjunctionOrFilter>();
|
771
771
|
parquet_filter_t or_mask;
|
772
772
|
for (auto &child_filter : conjunction.child_filters) {
|
773
773
|
parquet_filter_t child_mask = filter_mask;
|
@@ -778,7 +778,7 @@ static void ApplyFilter(Vector &v, TableFilter &filter, parquet_filter_t &filter
|
|
778
778
|
break;
|
779
779
|
}
|
780
780
|
case TableFilterType::CONSTANT_COMPARISON: {
|
781
|
-
auto &constant_filter = (
|
781
|
+
auto &constant_filter = filter.Cast<ConstantFilter>();
|
782
782
|
switch (constant_filter.comparison_type) {
|
783
783
|
case ExpressionType::COMPARE_EQUAL:
|
784
784
|
FilterOperationSwitch<Equals>(v, constant_filter.constant, filter_mask, count);
|
@@ -831,7 +831,7 @@ bool ParquetReader::ScanInternal(ParquetReaderScanState &state, DataChunk &resul
|
|
831
831
|
state.current_group++;
|
832
832
|
state.group_offset = 0;
|
833
833
|
|
834
|
-
auto &trans =
|
834
|
+
auto &trans = reinterpret_cast<ThriftFileTransport &>(*state.thrift_file_proto->getTransport());
|
835
835
|
trans.ClearPrefetch();
|
836
836
|
state.current_group_prefetched = false;
|
837
837
|
|
@@ -846,8 +846,8 @@ bool ParquetReader::ScanInternal(ParquetReaderScanState &state, DataChunk &resul
|
|
846
846
|
|
847
847
|
auto file_col_idx = reader_data.column_ids[col_idx];
|
848
848
|
|
849
|
-
auto root_reader =
|
850
|
-
to_scan_compressed_bytes += root_reader
|
849
|
+
auto &root_reader = state.root_reader->Cast<StructColumnReader>();
|
850
|
+
to_scan_compressed_bytes += root_reader.GetChildReader(file_col_idx)->TotalCompressedSize();
|
851
851
|
}
|
852
852
|
|
853
853
|
auto &group = GetGroup(state);
|
@@ -880,14 +880,14 @@ bool ParquetReader::ScanInternal(ParquetReaderScanState &state, DataChunk &resul
|
|
880
880
|
// Prefetch column-wise
|
881
881
|
for (idx_t col_idx = 0; col_idx < reader_data.column_ids.size(); col_idx++) {
|
882
882
|
auto file_col_idx = reader_data.column_ids[col_idx];
|
883
|
-
auto root_reader =
|
883
|
+
auto &root_reader = state.root_reader->Cast<StructColumnReader>();
|
884
884
|
|
885
885
|
bool has_filter = false;
|
886
886
|
if (reader_data.filters) {
|
887
887
|
auto entry = reader_data.filters->filters.find(reader_data.column_mapping[col_idx]);
|
888
888
|
has_filter = entry != reader_data.filters->filters.end();
|
889
889
|
}
|
890
|
-
root_reader
|
890
|
+
root_reader.GetChildReader(file_col_idx)->RegisterPrefetch(trans, !(lazy_fetch && !has_filter));
|
891
891
|
}
|
892
892
|
|
893
893
|
trans.FinalizeRegistration();
|
@@ -924,7 +924,7 @@ bool ParquetReader::ScanInternal(ParquetReaderScanState &state, DataChunk &resul
|
|
924
924
|
auto define_ptr = (uint8_t *)state.define_buf.ptr;
|
925
925
|
auto repeat_ptr = (uint8_t *)state.repeat_buf.ptr;
|
926
926
|
|
927
|
-
auto root_reader =
|
927
|
+
auto &root_reader = state.root_reader->Cast<StructColumnReader>();
|
928
928
|
|
929
929
|
if (reader_data.filters) {
|
930
930
|
vector<bool> need_to_read(reader_data.column_ids.size(), true);
|
@@ -947,7 +947,7 @@ bool ParquetReader::ScanInternal(ParquetReaderScanState &state, DataChunk &resul
|
|
947
947
|
auto result_idx = reader_data.column_mapping[id];
|
948
948
|
|
949
949
|
auto &result_vector = result.data[result_idx];
|
950
|
-
auto child_reader = root_reader
|
950
|
+
auto child_reader = root_reader.GetChildReader(file_col_idx);
|
951
951
|
child_reader->Read(result.size(), filter_mask, define_ptr, repeat_ptr, result_vector);
|
952
952
|
need_to_read[id] = false;
|
953
953
|
|
@@ -962,11 +962,11 @@ bool ParquetReader::ScanInternal(ParquetReaderScanState &state, DataChunk &resul
|
|
962
962
|
}
|
963
963
|
auto file_col_idx = reader_data.column_ids[col_idx];
|
964
964
|
if (filter_mask.none()) {
|
965
|
-
root_reader
|
965
|
+
root_reader.GetChildReader(file_col_idx)->Skip(result.size());
|
966
966
|
continue;
|
967
967
|
}
|
968
968
|
auto &result_vector = result.data[reader_data.column_mapping[col_idx]];
|
969
|
-
auto child_reader = root_reader
|
969
|
+
auto child_reader = root_reader.GetChildReader(file_col_idx);
|
970
970
|
child_reader->Read(result.size(), filter_mask, define_ptr, repeat_ptr, result_vector);
|
971
971
|
}
|
972
972
|
|
@@ -982,7 +982,7 @@ bool ParquetReader::ScanInternal(ParquetReaderScanState &state, DataChunk &resul
|
|
982
982
|
for (idx_t col_idx = 0; col_idx < reader_data.column_ids.size(); col_idx++) {
|
983
983
|
auto file_col_idx = reader_data.column_ids[col_idx];
|
984
984
|
auto &result_vector = result.data[reader_data.column_mapping[col_idx]];
|
985
|
-
auto child_reader = root_reader
|
985
|
+
auto child_reader = root_reader.GetChildReader(file_col_idx);
|
986
986
|
auto rows_read = child_reader->Read(result.size(), filter_mask, define_ptr, repeat_ptr, result_vector);
|
987
987
|
if (rows_read != result.size()) {
|
988
988
|
throw InvalidInputException("Mismatch in parquet read for column %llu, expected %llu rows, got %llu",
|
@@ -48,12 +48,13 @@ Value ParquetStatisticsUtils::ConvertValue(const LogicalType &type,
|
|
48
48
|
if (stats.empty()) {
|
49
49
|
return Value();
|
50
50
|
}
|
51
|
+
auto stats_data = const_data_ptr_cast(stats.c_str());
|
51
52
|
switch (type.id()) {
|
52
53
|
case LogicalTypeId::BOOLEAN: {
|
53
54
|
if (stats.size() != sizeof(bool)) {
|
54
55
|
throw InternalException("Incorrect stats size for type BOOLEAN");
|
55
56
|
}
|
56
|
-
return Value::BOOLEAN(Load<bool>(
|
57
|
+
return Value::BOOLEAN(Load<bool>(stats_data));
|
57
58
|
}
|
58
59
|
case LogicalTypeId::UTINYINT:
|
59
60
|
case LogicalTypeId::USMALLINT:
|
@@ -61,29 +62,29 @@ Value ParquetStatisticsUtils::ConvertValue(const LogicalType &type,
|
|
61
62
|
if (stats.size() != sizeof(uint32_t)) {
|
62
63
|
throw InternalException("Incorrect stats size for type UINTEGER");
|
63
64
|
}
|
64
|
-
return Value::UINTEGER(Load<uint32_t>(
|
65
|
+
return Value::UINTEGER(Load<uint32_t>(stats_data));
|
65
66
|
case LogicalTypeId::UBIGINT:
|
66
67
|
if (stats.size() != sizeof(uint64_t)) {
|
67
68
|
throw InternalException("Incorrect stats size for type UBIGINT");
|
68
69
|
}
|
69
|
-
return Value::UBIGINT(Load<uint64_t>(
|
70
|
+
return Value::UBIGINT(Load<uint64_t>(stats_data));
|
70
71
|
case LogicalTypeId::TINYINT:
|
71
72
|
case LogicalTypeId::SMALLINT:
|
72
73
|
case LogicalTypeId::INTEGER:
|
73
74
|
if (stats.size() != sizeof(int32_t)) {
|
74
75
|
throw InternalException("Incorrect stats size for type INTEGER");
|
75
76
|
}
|
76
|
-
return Value::INTEGER(Load<int32_t>(
|
77
|
+
return Value::INTEGER(Load<int32_t>(stats_data));
|
77
78
|
case LogicalTypeId::BIGINT:
|
78
79
|
if (stats.size() != sizeof(int64_t)) {
|
79
80
|
throw InternalException("Incorrect stats size for type BIGINT");
|
80
81
|
}
|
81
|
-
return Value::BIGINT(Load<int64_t>(
|
82
|
+
return Value::BIGINT(Load<int64_t>(stats_data));
|
82
83
|
case LogicalTypeId::FLOAT: {
|
83
84
|
if (stats.size() != sizeof(float)) {
|
84
85
|
throw InternalException("Incorrect stats size for type FLOAT");
|
85
86
|
}
|
86
|
-
auto val = Load<float>(
|
87
|
+
auto val = Load<float>(stats_data);
|
87
88
|
if (!Value::FloatIsFinite(val)) {
|
88
89
|
return Value();
|
89
90
|
}
|
@@ -93,7 +94,7 @@ Value ParquetStatisticsUtils::ConvertValue(const LogicalType &type,
|
|
93
94
|
if (stats.size() != sizeof(double)) {
|
94
95
|
throw InternalException("Incorrect stats size for type DOUBLE");
|
95
96
|
}
|
96
|
-
auto val = Load<double>(
|
97
|
+
auto val = Load<double>(stats_data);
|
97
98
|
if (!Value::DoubleIsFinite(val)) {
|
98
99
|
return Value();
|
99
100
|
}
|
@@ -107,13 +108,13 @@ Value ParquetStatisticsUtils::ConvertValue(const LogicalType &type,
|
|
107
108
|
if (stats.size() != sizeof(int32_t)) {
|
108
109
|
throw InternalException("Incorrect stats size for type %s", type.ToString());
|
109
110
|
}
|
110
|
-
return Value::DECIMAL(Load<int32_t>(
|
111
|
+
return Value::DECIMAL(Load<int32_t>(stats_data), width, scale);
|
111
112
|
}
|
112
113
|
case Type::INT64: {
|
113
114
|
if (stats.size() != sizeof(int64_t)) {
|
114
115
|
throw InternalException("Incorrect stats size for type %s", type.ToString());
|
115
116
|
}
|
116
|
-
return Value::DECIMAL(Load<int64_t>(
|
117
|
+
return Value::DECIMAL(Load<int64_t>(stats_data), width, scale);
|
117
118
|
}
|
118
119
|
case Type::BYTE_ARRAY:
|
119
120
|
case Type::FIXED_LEN_BYTE_ARRAY:
|
@@ -122,21 +123,17 @@ Value ParquetStatisticsUtils::ConvertValue(const LogicalType &type,
|
|
122
123
|
}
|
123
124
|
switch (type.InternalType()) {
|
124
125
|
case PhysicalType::INT16:
|
125
|
-
return Value::DECIMAL(
|
126
|
-
|
127
|
-
width, scale);
|
126
|
+
return Value::DECIMAL(ParquetDecimalUtils::ReadDecimalValue<int16_t>(stats_data, stats.size()), width,
|
127
|
+
scale);
|
128
128
|
case PhysicalType::INT32:
|
129
|
-
return Value::DECIMAL(
|
130
|
-
|
131
|
-
width, scale);
|
129
|
+
return Value::DECIMAL(ParquetDecimalUtils::ReadDecimalValue<int32_t>(stats_data, stats.size()), width,
|
130
|
+
scale);
|
132
131
|
case PhysicalType::INT64:
|
133
|
-
return Value::DECIMAL(
|
134
|
-
|
135
|
-
width, scale);
|
132
|
+
return Value::DECIMAL(ParquetDecimalUtils::ReadDecimalValue<int64_t>(stats_data, stats.size()), width,
|
133
|
+
scale);
|
136
134
|
case PhysicalType::INT128:
|
137
|
-
return Value::DECIMAL(
|
138
|
-
|
139
|
-
width, scale);
|
135
|
+
return Value::DECIMAL(ParquetDecimalUtils::ReadDecimalValue<hugeint_t>(stats_data, stats.size()), width,
|
136
|
+
scale);
|
140
137
|
default:
|
141
138
|
throw InternalException("Unsupported internal type for decimal");
|
142
139
|
}
|
@@ -155,14 +152,14 @@ Value ParquetStatisticsUtils::ConvertValue(const LogicalType &type,
|
|
155
152
|
if (stats.size() != sizeof(int32_t)) {
|
156
153
|
throw InternalException("Incorrect stats size for type DATE");
|
157
154
|
}
|
158
|
-
return Value::DATE(date_t(Load<int32_t>(
|
155
|
+
return Value::DATE(date_t(Load<int32_t>(stats_data)));
|
159
156
|
case LogicalTypeId::TIME:
|
160
157
|
case LogicalTypeId::TIME_TZ: {
|
161
158
|
int64_t val;
|
162
159
|
if (stats.size() == sizeof(int32_t)) {
|
163
|
-
val = Load<int32_t>(
|
160
|
+
val = Load<int32_t>(stats_data);
|
164
161
|
} else if (stats.size() == sizeof(int64_t)) {
|
165
|
-
val = Load<int64_t>(
|
162
|
+
val = Load<int64_t>(stats_data);
|
166
163
|
} else {
|
167
164
|
throw InternalException("Incorrect stats size for type TIME");
|
168
165
|
}
|
@@ -190,13 +187,13 @@ Value ParquetStatisticsUtils::ConvertValue(const LogicalType &type,
|
|
190
187
|
if (stats.size() != sizeof(Int96)) {
|
191
188
|
throw InternalException("Incorrect stats size for type TIMESTAMP");
|
192
189
|
}
|
193
|
-
return Value::TIMESTAMP(ImpalaTimestampToTimestamp(Load<Int96>(
|
190
|
+
return Value::TIMESTAMP(ImpalaTimestampToTimestamp(Load<Int96>(stats_data)));
|
194
191
|
} else {
|
195
192
|
D_ASSERT(schema_ele.type == Type::INT64);
|
196
193
|
if (stats.size() != sizeof(int64_t)) {
|
197
194
|
throw InternalException("Incorrect stats size for type TIMESTAMP");
|
198
195
|
}
|
199
|
-
auto val = Load<int64_t>(
|
196
|
+
auto val = Load<int64_t>(stats_data);
|
200
197
|
if (schema_ele.__isset.logicalType && schema_ele.logicalType.__isset.TIMESTAMP) {
|
201
198
|
// logical type
|
202
199
|
if (schema_ele.logicalType.TIMESTAMP.unit.__isset.MILLIS) {
|
@@ -17,7 +17,7 @@ static constexpr int64_t NANOSECONDS_PER_MICRO = 1000LL;
|
|
17
17
|
|
18
18
|
static int64_t ImpalaTimestampToMicroseconds(const Int96 &impala_timestamp) {
|
19
19
|
int64_t days_since_epoch = impala_timestamp.value[2] - JULIAN_TO_UNIX_EPOCH_DAYS;
|
20
|
-
auto nanoseconds = Load<int64_t>((
|
20
|
+
auto nanoseconds = Load<int64_t>(const_data_ptr_cast(impala_timestamp.value));
|
21
21
|
auto microseconds = nanoseconds / NANOSECONDS_PER_MICRO;
|
22
22
|
return days_since_epoch * MICROSECONDS_PER_DAY + microseconds;
|
23
23
|
}
|
@@ -35,7 +35,7 @@ Int96 TimestampToImpalaTimestamp(timestamp_t &ts) {
|
|
35
35
|
// first two uint32 in Int96 are nanoseconds since midnights
|
36
36
|
// last uint32 is number of days since year 4713 BC ("Julian date")
|
37
37
|
Int96 impala_ts;
|
38
|
-
Store<uint64_t>(ms_since_midnight * 1000000, (
|
38
|
+
Store<uint64_t>(ms_since_midnight * 1000000, data_ptr_cast(impala_ts.value));
|
39
39
|
impala_ts.value[2] = days_since_epoch + JULIAN_TO_UNIX_EPOCH_DAYS;
|
40
40
|
return impala_ts;
|
41
41
|
}
|
@@ -45,7 +45,7 @@ public:
|
|
45
45
|
}
|
46
46
|
|
47
47
|
void write_virt(const uint8_t *buf, uint32_t len) override {
|
48
|
-
serializer.WriteData((
|
48
|
+
serializer.WriteData(const_data_ptr_cast(buf), len);
|
49
49
|
}
|
50
50
|
|
51
51
|
private:
|
@@ -232,7 +232,7 @@ ParquetWriter::ParquetWriter(FileSystem &fs, string file_name_p, vector<LogicalT
|
|
232
232
|
writer = make_uniq<BufferedFileWriter>(fs, file_name.c_str(),
|
233
233
|
FileFlags::FILE_FLAGS_WRITE | FileFlags::FILE_FLAGS_FILE_CREATE_NEW);
|
234
234
|
// parquet files start with the string "PAR1"
|
235
|
-
writer->WriteData((
|
235
|
+
writer->WriteData(const_data_ptr_cast("PAR1"), 4);
|
236
236
|
TCompactProtocolFactoryT<MyTransport> tproto_factory;
|
237
237
|
protocol = tproto_factory.getProtocol(make_shared<MyTransport>(*writer));
|
238
238
|
|
@@ -327,7 +327,7 @@ void ParquetWriter::Finalize() {
|
|
327
327
|
writer->Write<uint32_t>(writer->GetTotalWritten() - start_offset);
|
328
328
|
|
329
329
|
// parquet files also end with the string "PAR1"
|
330
|
-
writer->WriteData((
|
330
|
+
writer->WriteData(const_data_ptr_cast("PAR1"), 4);
|
331
331
|
|
332
332
|
// flush to disk
|
333
333
|
writer->Sync();
|
@@ -61,9 +61,9 @@ bool ZstdStreamWrapper::Read(StreamData &sd) {
|
|
61
61
|
throw IOException(duckdb_zstd::ZSTD_getErrorName(res));
|
62
62
|
}
|
63
63
|
|
64
|
-
sd.in_buff_start = (data_ptr_t)in_buffer.src + in_buffer.pos;
|
65
|
-
sd.in_buff_end = (data_ptr_t)in_buffer.src + in_buffer.size;
|
66
|
-
sd.out_buff_end = (data_ptr_t)out_buffer.dst + out_buffer.pos;
|
64
|
+
sd.in_buff_start = (data_ptr_t)in_buffer.src + in_buffer.pos; // NOLINT
|
65
|
+
sd.in_buff_end = (data_ptr_t)in_buffer.src + in_buffer.size; // NOLINT
|
66
|
+
sd.out_buff_end = (data_ptr_t)out_buffer.dst + out_buffer.pos; // NOLINT
|
67
67
|
return false;
|
68
68
|
}
|
69
69
|
|
@@ -674,31 +674,19 @@ vector<reference<SchemaCatalogEntry>> Catalog::GetSchemas(ClientContext &context
|
|
674
674
|
return schemas;
|
675
675
|
}
|
676
676
|
|
677
|
-
bool Catalog::TypeExists(ClientContext &context, const string &catalog_name, const string &schema, const string &name) {
|
678
|
-
optional_ptr<CatalogEntry> entry;
|
679
|
-
entry = GetEntry(context, CatalogType::TYPE_ENTRY, catalog_name, schema, name, OnEntryNotFound::RETURN_NULL);
|
680
|
-
if (!entry) {
|
681
|
-
// look in the system catalog
|
682
|
-
entry = GetEntry(context, CatalogType::TYPE_ENTRY, SYSTEM_CATALOG, schema, name, OnEntryNotFound::RETURN_NULL);
|
683
|
-
if (!entry) {
|
684
|
-
return false;
|
685
|
-
}
|
686
|
-
}
|
687
|
-
return true;
|
688
|
-
}
|
689
|
-
|
690
677
|
vector<reference<SchemaCatalogEntry>> Catalog::GetSchemas(ClientContext &context, const string &catalog_name) {
|
691
678
|
vector<reference<Catalog>> catalogs;
|
692
679
|
if (IsInvalidCatalog(catalog_name)) {
|
693
|
-
|
680
|
+
reference_set_t<Catalog> inserted_catalogs;
|
694
681
|
|
695
682
|
auto &search_path = *context.client_data->catalog_search_path;
|
696
683
|
for (auto &entry : search_path.Get()) {
|
697
|
-
|
684
|
+
auto &catalog = Catalog::GetCatalog(context, entry.catalog);
|
685
|
+
if (inserted_catalogs.find(catalog) != inserted_catalogs.end()) {
|
698
686
|
continue;
|
699
687
|
}
|
700
|
-
|
701
|
-
catalogs.push_back(
|
688
|
+
inserted_catalogs.insert(catalog);
|
689
|
+
catalogs.push_back(catalog);
|
702
690
|
}
|
703
691
|
} else {
|
704
692
|
catalogs.push_back(Catalog::GetCatalog(context, catalog_name));
|
@@ -16,6 +16,9 @@
|
|
16
16
|
#include "duckdb/parser/constraints/list.hpp"
|
17
17
|
#include "duckdb/function/table/table_scan.hpp"
|
18
18
|
#include "duckdb/storage/table_storage_info.hpp"
|
19
|
+
#include "duckdb/planner/operator/logical_get.hpp"
|
20
|
+
#include "duckdb/planner/operator/logical_projection.hpp"
|
21
|
+
#include "duckdb/planner/operator/logical_update.hpp"
|
19
22
|
|
20
23
|
namespace duckdb {
|
21
24
|
|
@@ -714,10 +717,13 @@ TableFunction DuckTableEntry::GetScanFunction(ClientContext &context, unique_ptr
|
|
714
717
|
return TableScanFunction::GetFunction();
|
715
718
|
}
|
716
719
|
|
720
|
+
vector<ColumnSegmentInfo> DuckTableEntry::GetColumnSegmentInfo() {
|
721
|
+
return storage->GetColumnSegmentInfo();
|
722
|
+
}
|
723
|
+
|
717
724
|
TableStorageInfo DuckTableEntry::GetStorageInfo(ClientContext &context) {
|
718
725
|
TableStorageInfo result;
|
719
726
|
result.cardinality = storage->info->cardinality.load();
|
720
|
-
storage->GetStorageInfo(result);
|
721
727
|
storage->info->indexes.Scan([&](Index &index) {
|
722
728
|
IndexInfo info;
|
723
729
|
info.is_primary = index.IsPrimary();
|
@@ -9,6 +9,11 @@
|
|
9
9
|
#include "duckdb/main/database.hpp"
|
10
10
|
#include "duckdb/parser/constraints/list.hpp"
|
11
11
|
#include "duckdb/parser/parsed_data/create_table_info.hpp"
|
12
|
+
#include "duckdb/storage/table_storage_info.hpp"
|
13
|
+
#include "duckdb/planner/operator/logical_update.hpp"
|
14
|
+
#include "duckdb/planner/operator/logical_get.hpp"
|
15
|
+
#include "duckdb/planner/constraints/bound_check_constraint.hpp"
|
16
|
+
#include "duckdb/planner/operator/logical_projection.hpp"
|
12
17
|
|
13
18
|
#include <sstream>
|
14
19
|
|
@@ -214,6 +219,122 @@ DataTable &TableCatalogEntry::GetStorage() {
|
|
214
219
|
const vector<unique_ptr<BoundConstraint>> &TableCatalogEntry::GetBoundConstraints() {
|
215
220
|
throw InternalException("Calling GetBoundConstraints on a TableCatalogEntry that is not a DuckTableEntry");
|
216
221
|
}
|
222
|
+
|
217
223
|
// LCOV_EXCL_STOP
|
218
224
|
|
225
|
+
static void BindExtraColumns(TableCatalogEntry &table, LogicalGet &get, LogicalProjection &proj, LogicalUpdate &update,
|
226
|
+
physical_index_set_t &bound_columns) {
|
227
|
+
if (bound_columns.size() <= 1) {
|
228
|
+
return;
|
229
|
+
}
|
230
|
+
idx_t found_column_count = 0;
|
231
|
+
physical_index_set_t found_columns;
|
232
|
+
for (idx_t i = 0; i < update.columns.size(); i++) {
|
233
|
+
if (bound_columns.find(update.columns[i]) != bound_columns.end()) {
|
234
|
+
// this column is referenced in the CHECK constraint
|
235
|
+
found_column_count++;
|
236
|
+
found_columns.insert(update.columns[i]);
|
237
|
+
}
|
238
|
+
}
|
239
|
+
if (found_column_count > 0 && found_column_count != bound_columns.size()) {
|
240
|
+
// columns in this CHECK constraint were referenced, but not all were part of the UPDATE
|
241
|
+
// add them to the scan and update set
|
242
|
+
for (auto &check_column_id : bound_columns) {
|
243
|
+
if (found_columns.find(check_column_id) != found_columns.end()) {
|
244
|
+
// column is already projected
|
245
|
+
continue;
|
246
|
+
}
|
247
|
+
// column is not projected yet: project it by adding the clause "i=i" to the set of updated columns
|
248
|
+
auto &column = table.GetColumns().GetColumn(check_column_id);
|
249
|
+
update.expressions.push_back(make_uniq<BoundColumnRefExpression>(
|
250
|
+
column.Type(), ColumnBinding(proj.table_index, proj.expressions.size())));
|
251
|
+
proj.expressions.push_back(make_uniq<BoundColumnRefExpression>(
|
252
|
+
column.Type(), ColumnBinding(get.table_index, get.column_ids.size())));
|
253
|
+
get.column_ids.push_back(check_column_id.index);
|
254
|
+
update.columns.push_back(check_column_id);
|
255
|
+
}
|
256
|
+
}
|
257
|
+
}
|
258
|
+
|
259
|
+
static bool TypeSupportsRegularUpdate(const LogicalType &type) {
|
260
|
+
switch (type.id()) {
|
261
|
+
case LogicalTypeId::LIST:
|
262
|
+
case LogicalTypeId::MAP:
|
263
|
+
case LogicalTypeId::UNION:
|
264
|
+
// lists and maps and unions don't support updates directly
|
265
|
+
return false;
|
266
|
+
case LogicalTypeId::STRUCT: {
|
267
|
+
auto &child_types = StructType::GetChildTypes(type);
|
268
|
+
for (auto &entry : child_types) {
|
269
|
+
if (!TypeSupportsRegularUpdate(entry.second)) {
|
270
|
+
return false;
|
271
|
+
}
|
272
|
+
}
|
273
|
+
return true;
|
274
|
+
}
|
275
|
+
default:
|
276
|
+
return true;
|
277
|
+
}
|
278
|
+
}
|
279
|
+
|
280
|
+
vector<ColumnSegmentInfo> TableCatalogEntry::GetColumnSegmentInfo() {
|
281
|
+
return {};
|
282
|
+
}
|
283
|
+
|
284
|
+
void TableCatalogEntry::BindUpdateConstraints(LogicalGet &get, LogicalProjection &proj, LogicalUpdate &update,
|
285
|
+
ClientContext &context) {
|
286
|
+
// check the constraints and indexes of the table to see if we need to project any additional columns
|
287
|
+
// we do this for indexes with multiple columns and CHECK constraints in the UPDATE clause
|
288
|
+
// suppose we have a constraint CHECK(i + j < 10); now we need both i and j to check the constraint
|
289
|
+
// if we are only updating one of the two columns we add the other one to the UPDATE set
|
290
|
+
// with a "useless" update (i.e. i=i) so we can verify that the CHECK constraint is not violated
|
291
|
+
for (auto &constraint : GetBoundConstraints()) {
|
292
|
+
if (constraint->type == ConstraintType::CHECK) {
|
293
|
+
auto &check = constraint->Cast<BoundCheckConstraint>();
|
294
|
+
// check constraint! check if we need to add any extra columns to the UPDATE clause
|
295
|
+
BindExtraColumns(*this, get, proj, update, check.bound_columns);
|
296
|
+
}
|
297
|
+
}
|
298
|
+
if (update.return_chunk) {
|
299
|
+
physical_index_set_t all_columns;
|
300
|
+
for (auto &column : GetColumns().Physical()) {
|
301
|
+
all_columns.insert(column.Physical());
|
302
|
+
}
|
303
|
+
BindExtraColumns(*this, get, proj, update, all_columns);
|
304
|
+
}
|
305
|
+
// for index updates we always turn any update into an insert and a delete
|
306
|
+
// we thus need all the columns to be available, hence we check if the update touches any index columns
|
307
|
+
// If the returning keyword is used, we need access to the whole row in case the user requests it.
|
308
|
+
// Therefore switch the update to a delete and insert.
|
309
|
+
update.update_is_del_and_insert = false;
|
310
|
+
TableStorageInfo table_storage_info = GetStorageInfo(context);
|
311
|
+
for (auto index : table_storage_info.index_info) {
|
312
|
+
for (auto &column : update.columns) {
|
313
|
+
if (index.column_set.find(column.index) != index.column_set.end()) {
|
314
|
+
update.update_is_del_and_insert = true;
|
315
|
+
break;
|
316
|
+
}
|
317
|
+
}
|
318
|
+
};
|
319
|
+
|
320
|
+
// we also convert any updates on LIST columns into delete + insert
|
321
|
+
for (auto &col_index : update.columns) {
|
322
|
+
auto &column = GetColumns().GetColumn(col_index);
|
323
|
+
if (!TypeSupportsRegularUpdate(column.Type())) {
|
324
|
+
update.update_is_del_and_insert = true;
|
325
|
+
break;
|
326
|
+
}
|
327
|
+
}
|
328
|
+
|
329
|
+
if (update.update_is_del_and_insert) {
|
330
|
+
// the update updates a column required by an index or requires returning the updated rows,
|
331
|
+
// push projections for all columns
|
332
|
+
physical_index_set_t all_columns;
|
333
|
+
for (auto &column : GetColumns().Physical()) {
|
334
|
+
all_columns.insert(column.Physical());
|
335
|
+
}
|
336
|
+
BindExtraColumns(*this, get, proj, update, all_columns);
|
337
|
+
}
|
338
|
+
}
|
339
|
+
|
219
340
|
} // namespace duckdb
|
@@ -5,6 +5,7 @@
|
|
5
5
|
#include "duckdb/common/string_util.hpp"
|
6
6
|
#include "duckdb/main/client_context.hpp"
|
7
7
|
#include "duckdb/catalog/catalog.hpp"
|
8
|
+
#include "duckdb/main/database_manager.hpp"
|
8
9
|
|
9
10
|
namespace duckdb {
|
10
11
|
|
@@ -126,37 +127,57 @@ void CatalogSearchPath::Reset() {
|
|
126
127
|
SetPaths(empty);
|
127
128
|
}
|
128
129
|
|
129
|
-
|
130
|
-
|
131
|
-
|
130
|
+
string CatalogSearchPath::GetSetName(CatalogSetPathType set_type) {
|
131
|
+
switch (set_type) {
|
132
|
+
case CatalogSetPathType::SET_SCHEMA:
|
133
|
+
return "SET schema";
|
134
|
+
case CatalogSetPathType::SET_SCHEMAS:
|
135
|
+
return "SET search_path";
|
136
|
+
default:
|
137
|
+
throw InternalException("Unrecognized CatalogSetPathType");
|
138
|
+
}
|
139
|
+
}
|
140
|
+
|
141
|
+
void CatalogSearchPath::Set(vector<CatalogSearchEntry> new_paths, CatalogSetPathType set_type) {
|
142
|
+
if (set_type != CatalogSetPathType::SET_SCHEMAS && new_paths.size() != 1) {
|
143
|
+
throw CatalogException("%s can set only 1 schema. This has %d", GetSetName(set_type), new_paths.size());
|
132
144
|
}
|
133
145
|
for (auto &path : new_paths) {
|
134
|
-
|
146
|
+
auto schema_entry = Catalog::GetSchema(context, path.catalog, path.schema, OnEntryNotFound::RETURN_NULL);
|
147
|
+
if (schema_entry) {
|
148
|
+
// we are setting a schema - update the catalog and schema
|
135
149
|
if (path.catalog.empty()) {
|
136
|
-
|
137
|
-
|
150
|
+
path.catalog = GetDefault().catalog;
|
151
|
+
}
|
152
|
+
continue;
|
153
|
+
}
|
154
|
+
// only schema supplied - check if this is a catalog instead
|
155
|
+
if (path.catalog.empty()) {
|
156
|
+
auto catalog = Catalog::GetCatalogEntry(context, path.schema);
|
157
|
+
if (catalog) {
|
158
|
+
auto schema = catalog->GetSchema(context, DEFAULT_SCHEMA, OnEntryNotFound::RETURN_NULL);
|
138
159
|
if (schema) {
|
139
160
|
path.catalog = std::move(path.schema);
|
140
161
|
path.schema = schema->name;
|
141
162
|
continue;
|
142
163
|
}
|
143
164
|
}
|
144
|
-
throw CatalogException("SET %s: No catalog + schema named %s found.",
|
145
|
-
is_set_schema ? "schema" : "search_path", path.ToString());
|
146
165
|
}
|
166
|
+
throw CatalogException("%s: No catalog + schema named \"%s\" found.", GetSetName(set_type), path.ToString());
|
147
167
|
}
|
148
|
-
if (
|
168
|
+
if (set_type == CatalogSetPathType::SET_SCHEMA) {
|
149
169
|
if (new_paths[0].catalog == TEMP_CATALOG || new_paths[0].catalog == SYSTEM_CATALOG) {
|
150
|
-
throw CatalogException("
|
170
|
+
throw CatalogException("%s cannot be set to internal schema \"%s\"", GetSetName(set_type),
|
171
|
+
new_paths[0].catalog);
|
151
172
|
}
|
152
173
|
}
|
153
174
|
this->set_paths = std::move(new_paths);
|
154
175
|
SetPaths(set_paths);
|
155
176
|
}
|
156
177
|
|
157
|
-
void CatalogSearchPath::Set(CatalogSearchEntry new_value,
|
178
|
+
void CatalogSearchPath::Set(CatalogSearchEntry new_value, CatalogSetPathType set_type) {
|
158
179
|
vector<CatalogSearchEntry> new_paths {std::move(new_value)};
|
159
|
-
Set(std::move(new_paths),
|
180
|
+
Set(std::move(new_paths), set_type);
|
160
181
|
}
|
161
182
|
|
162
183
|
const vector<CatalogSearchEntry> &CatalogSearchPath::Get() {
|
@@ -225,4 +246,20 @@ void CatalogSearchPath::SetPaths(vector<CatalogSearchEntry> new_paths) {
|
|
225
246
|
paths.emplace_back(SYSTEM_CATALOG, "pg_catalog");
|
226
247
|
}
|
227
248
|
|
249
|
+
bool CatalogSearchPath::SchemaInSearchPath(ClientContext &context, const string &catalog_name,
|
250
|
+
const string &schema_name) {
|
251
|
+
for (auto &path : paths) {
|
252
|
+
if (path.schema != schema_name) {
|
253
|
+
continue;
|
254
|
+
}
|
255
|
+
if (path.catalog == catalog_name) {
|
256
|
+
return true;
|
257
|
+
}
|
258
|
+
if (IsInvalidCatalog(path.catalog) && catalog_name == DatabaseManager::GetDefaultDatabase(context)) {
|
259
|
+
return true;
|
260
|
+
}
|
261
|
+
}
|
262
|
+
return false;
|
263
|
+
}
|
264
|
+
|
228
265
|
} // namespace duckdb
|
@@ -42,7 +42,7 @@ private:
|
|
42
42
|
};
|
43
43
|
|
44
44
|
CatalogSet::CatalogSet(Catalog &catalog_p, unique_ptr<DefaultGenerator> defaults)
|
45
|
-
: catalog((
|
45
|
+
: catalog(catalog_p.Cast<DuckCatalog>()), defaults(std::move(defaults)) {
|
46
46
|
D_ASSERT(catalog_p.IsDuckCatalog());
|
47
47
|
}
|
48
48
|
CatalogSet::~CatalogSet() {
|