duckdb 0.8.1-dev31.0 → 0.8.1-dev341.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.
- package/binding.gyp +8 -8
- package/package.json +1 -1
- package/src/duckdb/extension/icu/icu-datepart.cpp +1 -1
- package/src/duckdb/extension/icu/icu-makedate.cpp +5 -4
- 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 +3 -1
- 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 +40 -25
- 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 +25 -1
- 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 +113 -0
- package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +7 -0
- package/src/duckdb/src/catalog/catalog_entry.cpp +4 -4
- 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/catalog/duck_catalog.cpp +1 -0
- package/src/duckdb/src/common/adbc/adbc.cpp +301 -106
- package/src/duckdb/src/common/adbc/driver_manager.cpp +10 -22
- package/src/duckdb/src/common/arrow/arrow_appender.cpp +12 -12
- package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +7 -7
- 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 +19 -14
- package/src/duckdb/src/common/field_writer.cpp +1 -1
- package/src/duckdb/src/common/file_system.cpp +15 -2
- 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/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/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 +44 -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 +32 -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 +36 -37
- package/src/duckdb/src/core_functions/aggregate/distributive/sum.cpp +22 -22
- package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +48 -84
- package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +49 -51
- package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +115 -133
- package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +62 -99
- 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 +45 -45
- 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 +3 -3
- package/src/duckdb/src/core_functions/scalar/list/flatten.cpp +2 -4
- package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +3 -3
- package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +6 -7
- 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 +3 -3
- 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 +10 -11
- package/src/duckdb/src/execution/index/art/leaf_segment.cpp +10 -0
- package/src/duckdb/src/execution/index/art/node.cpp +47 -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 +4 -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_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_unnest.cpp +3 -3
- 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_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 +2 -2
- package/src/duckdb/src/execution/window_segment_tree.cpp +8 -6
- package/src/duckdb/src/function/aggregate/distributive/count.cpp +158 -20
- package/src/duckdb/src/function/aggregate/distributive/first.cpp +66 -74
- package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +13 -13
- 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 +3 -3
- package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +2 -3
- 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 +25 -23
- 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 +1 -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 +17 -20
- 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/test_vector_types.cpp +82 -26
- package/src/duckdb/src/function/table/table_scan.cpp +2 -2
- 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 +6 -0
- 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/adbc/adbc.hpp +5 -0
- package/src/duckdb/src/include/duckdb/common/allocator.hpp +15 -4
- package/src/duckdb/src/include/duckdb/common/arrow/arrow_buffer.hpp +7 -2
- 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/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 +8 -29
- 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 +3 -1
- 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_function.hpp +2 -2
- package/src/duckdb/src/include/duckdb/function/table_function.hpp +8 -7
- package/src/duckdb/src/include/duckdb/main/capi/cast/utils.hpp +1 -1
- package/src/duckdb/src/include/duckdb/main/config.hpp +2 -0
- 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 +17 -0
- package/src/duckdb/src/include/duckdb/main/relation.hpp +12 -0
- package/src/duckdb/src/include/duckdb/main/settings.hpp +9 -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/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 +1 -1
- 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 +34 -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/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/scan_state.hpp +22 -0
- 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/capi/appender-c.cpp +5 -5
- package/src/duckdb/src/main/capi/arrow-c.cpp +10 -10
- 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 +3 -3
- package/src/duckdb/src/main/config.cpp +1 -0
- package/src/duckdb/src/main/database_manager.cpp +1 -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/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 +22 -6
- package/src/duckdb/src/optimizer/deliminator.cpp +12 -12
- package/src/duckdb/src/optimizer/expression_heuristics.cpp +1 -0
- 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 +1 -1
- 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 +4 -4
- 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 +28 -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 -1
- 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 +8 -8
- 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 +4 -2
- package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +5 -2
- package/src/duckdb/src/planner/binder.cpp +1 -1
- package/src/duckdb/src/planner/bound_result_modifier.cpp +16 -11
- package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +5 -5
- 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_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 +15 -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_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 +8 -7
- package/src/duckdb/src/storage/index.cpp +14 -3
- package/src/duckdb/src/storage/local_storage.cpp +2 -1
- package/src/duckdb/src/storage/magic_bytes.cpp +1 -1
- 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/table/chunk_info.cpp +2 -2
- package/src/duckdb/src/storage/table/column_segment.cpp +3 -3
- package/src/duckdb/src/storage/table/list_column_data.cpp +3 -3
- package/src/duckdb/src/storage/table/row_group.cpp +4 -4
- package/src/duckdb/src/storage/table/standard_column_data.cpp +1 -1
- 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/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
@@ -40,7 +40,7 @@ unique_ptr<FunctionData> ListLambdaBindData::Copy() const {
|
|
40
40
|
|
41
41
|
bool ListLambdaBindData::Equals(const FunctionData &other_p) const {
|
42
42
|
auto &other = other_p.Cast<ListLambdaBindData>();
|
43
|
-
return lambda_expr->Equals(other.lambda_expr
|
43
|
+
return lambda_expr->Equals(*other.lambda_expr) && stype == other.stype;
|
44
44
|
}
|
45
45
|
|
46
46
|
ListLambdaBindData::~ListLambdaBindData() {
|
@@ -63,7 +63,7 @@ static void AppendFilteredToResult(Vector &lambda_vector, list_entry_t *result_e
|
|
63
63
|
UnifiedVectorFormat lambda_data;
|
64
64
|
lambda_vector.ToUnifiedFormat(elem_cnt, lambda_data);
|
65
65
|
|
66
|
-
auto lambda_values = (
|
66
|
+
auto lambda_values = UnifiedVectorFormat::GetData<bool>(lambda_data);
|
67
67
|
auto &lambda_validity = lambda_data.validity;
|
68
68
|
|
69
69
|
// compute the new lengths and offsets, and create a selection vector
|
@@ -167,7 +167,7 @@ static void ListLambdaFunction(DataChunk &args, ExpressionState &state, Vector &
|
|
167
167
|
// get the lists data
|
168
168
|
UnifiedVectorFormat lists_data;
|
169
169
|
lists.ToUnifiedFormat(count, lists_data);
|
170
|
-
auto list_entries = (
|
170
|
+
auto list_entries = UnifiedVectorFormat::GetData<list_entry_t>(lists_data);
|
171
171
|
|
172
172
|
// get the lambda expression
|
173
173
|
auto &func_expr = state.expr.Cast<BoundFunctionExpression>();
|
@@ -321,8 +321,7 @@ static void ListFilterFunction(DataChunk &args, ExpressionState &state, Vector &
|
|
321
321
|
template <int64_t LAMBDA_PARAM_CNT>
|
322
322
|
static unique_ptr<FunctionData> ListLambdaBind(ClientContext &context, ScalarFunction &bound_function,
|
323
323
|
vector<unique_ptr<Expression>> &arguments) {
|
324
|
-
|
325
|
-
auto &bound_lambda_expr = (BoundLambdaExpression &)*arguments[1];
|
324
|
+
auto &bound_lambda_expr = arguments[1]->Cast<BoundLambdaExpression>();
|
326
325
|
if (bound_lambda_expr.parameter_count != LAMBDA_PARAM_CNT) {
|
327
326
|
throw BinderException("Incorrect number of parameters in lambda function! " + bound_function.name +
|
328
327
|
" expects " + to_string(LAMBDA_PARAM_CNT) + " parameter(s).");
|
@@ -355,7 +354,7 @@ static unique_ptr<FunctionData> ListTransformBind(ClientContext &context, Scalar
|
|
355
354
|
throw BinderException("Invalid lambda expression!");
|
356
355
|
}
|
357
356
|
|
358
|
-
auto &bound_lambda_expr =
|
357
|
+
auto &bound_lambda_expr = arguments[1]->Cast<BoundLambdaExpression>();
|
359
358
|
bound_function.return_type = LogicalType::LIST(bound_lambda_expr.lambda_expr->return_type);
|
360
359
|
return ListLambdaBind<1>(context, bound_function, arguments);
|
361
360
|
}
|
@@ -370,7 +369,7 @@ static unique_ptr<FunctionData> ListFilterBind(ClientContext &context, ScalarFun
|
|
370
369
|
}
|
371
370
|
|
372
371
|
// try to cast to boolean, if the return type of the lambda filter expression is not already boolean
|
373
|
-
auto &bound_lambda_expr =
|
372
|
+
auto &bound_lambda_expr = arguments[1]->Cast<BoundLambdaExpression>();
|
374
373
|
if (bound_lambda_expr.lambda_expr->return_type != LogicalType::BOOLEAN) {
|
375
374
|
auto cast_lambda_expr =
|
376
375
|
BoundCastExpression::AddCastToType(context, std::move(bound_lambda_expr.lambda_expr), LogicalType::BOOLEAN);
|
@@ -132,7 +132,7 @@ static void ListSortFunction(DataChunk &args, ExpressionState &state, Vector &re
|
|
132
132
|
// get the lists data
|
133
133
|
UnifiedVectorFormat lists_data;
|
134
134
|
result.ToUnifiedFormat(count, lists_data);
|
135
|
-
auto list_entries = (
|
135
|
+
auto list_entries = UnifiedVectorFormat::GetData<list_entry_t>(lists_data);
|
136
136
|
|
137
137
|
// create the lists_indices vector, this contains an element for each list's entry,
|
138
138
|
// the element corresponds to the list's index, e.g. for [1, 2, 4], [5, 4]
|
@@ -16,7 +16,7 @@ static void CardinalityFunction(DataChunk &args, ExpressionState &state, Vector
|
|
16
16
|
|
17
17
|
map.ToUnifiedFormat(args.size(), map_data);
|
18
18
|
for (idx_t row = 0; row < args.size(); row++) {
|
19
|
-
auto list_entry = (
|
19
|
+
auto list_entry = UnifiedVectorFormat::GetData<list_entry_t>(map_data)[map_data.sel->get_index(row)];
|
20
20
|
result_data[row] = list_entry.length;
|
21
21
|
result_validity.Set(row, map_data.validity.RowIsValid(map_data.sel->get_index(row)));
|
22
22
|
}
|
@@ -55,8 +55,8 @@ static bool ListEntriesEqual(Vector &keys, Vector &values, idx_t count) {
|
|
55
55
|
keys.ToUnifiedFormat(count, keys_data);
|
56
56
|
values.ToUnifiedFormat(count, values_data);
|
57
57
|
|
58
|
-
auto keys_entries = (
|
59
|
-
auto values_entries = (
|
58
|
+
auto keys_entries = UnifiedVectorFormat::GetData<list_entry_t>(keys_data);
|
59
|
+
auto values_entries = UnifiedVectorFormat::GetData<list_entry_t>(values_data);
|
60
60
|
|
61
61
|
if (same_vector_type) {
|
62
62
|
const auto key_data = keys_data.data;
|
@@ -69,7 +69,7 @@ static void MapConcatFunction(DataChunk &args, ExpressionState &state, Vector &r
|
|
69
69
|
auto &keys = MapVector::GetKeys(args.data[map_idx]);
|
70
70
|
|
71
71
|
auto index = map_format.sel->get_index(i);
|
72
|
-
auto entry = (
|
72
|
+
auto entry = UnifiedVectorFormat::GetData<list_entry_t>(map_format)[index];
|
73
73
|
|
74
74
|
// Update the list for this row
|
75
75
|
for (idx_t list_idx = 0; list_idx < entry.length; list_idx++) {
|
@@ -153,6 +153,9 @@ static unique_ptr<FunctionData> MapConcatBind(ClientContext &context, ScalarFunc
|
|
153
153
|
// The maps are allowed to be NULL
|
154
154
|
continue;
|
155
155
|
}
|
156
|
+
if (map.id() != LogicalTypeId::MAP) {
|
157
|
+
throw InvalidInputException("MAP_CONCAT only takes map arguments");
|
158
|
+
}
|
156
159
|
is_null = false;
|
157
160
|
if (IsEmptyMap(map)) {
|
158
161
|
// Map is allowed to be empty
|
@@ -30,9 +30,7 @@ void FillResult(Vector &map, Vector &offsets, Vector &result, idx_t count) {
|
|
30
30
|
UnifiedVectorFormat offset_data;
|
31
31
|
offsets.ToUnifiedFormat(count, offset_data);
|
32
32
|
|
33
|
-
|
34
|
-
result.ToUnifiedFormat(count, result_data);
|
35
|
-
|
33
|
+
auto result_data = FlatVector::GetData<list_entry_t>(result);
|
36
34
|
auto entry_count = ListVector::GetListSize(map);
|
37
35
|
auto &values_entries = MapVector::GetValues(map);
|
38
36
|
UnifiedVectorFormat values_entry_data;
|
@@ -41,14 +39,13 @@ void FillResult(Vector &map, Vector &offsets, Vector &result, idx_t count) {
|
|
41
39
|
|
42
40
|
for (idx_t row = 0; row < count; row++) {
|
43
41
|
idx_t offset_idx = offset_data.sel->get_index(row);
|
44
|
-
auto offset = (
|
42
|
+
auto offset = UnifiedVectorFormat::GetData<int32_t>(offset_data)[offset_idx];
|
45
43
|
|
46
44
|
// Get the current size of the list, for the offset
|
47
45
|
idx_t current_offset = ListVector::GetListSize(result);
|
48
46
|
if (!offset_data.validity.RowIsValid(offset_idx) || !offset) {
|
49
47
|
// Set the entry data for this result row
|
50
|
-
|
51
|
-
auto &entry = ((list_entry_t *)result_data.data)[result_index];
|
48
|
+
auto &entry = result_data[row];
|
52
49
|
entry.length = 0;
|
53
50
|
entry.offset = current_offset;
|
54
51
|
continue;
|
@@ -58,7 +55,7 @@ void FillResult(Vector &map, Vector &offsets, Vector &result, idx_t count) {
|
|
58
55
|
|
59
56
|
// Get the 'values' list entry corresponding to the offset
|
60
57
|
idx_t value_index = map_data.sel->get_index(row);
|
61
|
-
auto &value_list_entry = (
|
58
|
+
auto &value_list_entry = UnifiedVectorFormat::GetData<list_entry_t>(map_data)[value_index];
|
62
59
|
|
63
60
|
// Add the values to the result
|
64
61
|
idx_t list_offset = value_list_entry.offset + offset;
|
@@ -67,8 +64,7 @@ void FillResult(Vector &map, Vector &offsets, Vector &result, idx_t count) {
|
|
67
64
|
ListVector::Append(result, values_entries, length + list_offset, list_offset);
|
68
65
|
|
69
66
|
// Set the entry data for this result row
|
70
|
-
|
71
|
-
auto &entry = ((list_entry_t *)result_data.data)[result_index];
|
67
|
+
auto &entry = result_data[row];
|
72
68
|
entry.length = length;
|
73
69
|
entry.offset = current_offset;
|
74
70
|
}
|
@@ -563,7 +563,7 @@ struct RoundPrecisionFunctionData : public FunctionData {
|
|
563
563
|
}
|
564
564
|
|
565
565
|
bool Equals(const FunctionData &other_p) const override {
|
566
|
-
auto &other = (
|
566
|
+
auto &other = other_p.Cast<RoundPrecisionFunctionData>();
|
567
567
|
return target_scale == other.target_scale;
|
568
568
|
}
|
569
569
|
};
|
@@ -571,7 +571,7 @@ struct RoundPrecisionFunctionData : public FunctionData {
|
|
571
571
|
template <class T, class POWERS_OF_TEN_CLASS>
|
572
572
|
static void DecimalRoundNegativePrecisionFunction(DataChunk &input, ExpressionState &state, Vector &result) {
|
573
573
|
auto &func_expr = state.expr.Cast<BoundFunctionExpression>();
|
574
|
-
auto &info =
|
574
|
+
auto &info = func_expr.bind_info->Cast<RoundPrecisionFunctionData>();
|
575
575
|
auto source_scale = DecimalType::GetScale(func_expr.children[0]->return_type);
|
576
576
|
auto width = DecimalType::GetWidth(func_expr.children[0]->return_type);
|
577
577
|
if (-info.target_scale >= width) {
|
@@ -597,7 +597,7 @@ static void DecimalRoundNegativePrecisionFunction(DataChunk &input, ExpressionSt
|
|
597
597
|
template <class T, class POWERS_OF_TEN_CLASS>
|
598
598
|
static void DecimalRoundPositivePrecisionFunction(DataChunk &input, ExpressionState &state, Vector &result) {
|
599
599
|
auto &func_expr = state.expr.Cast<BoundFunctionExpression>();
|
600
|
-
auto &info =
|
600
|
+
auto &info = func_expr.bind_info->Cast<RoundPrecisionFunctionData>();
|
601
601
|
auto source_scale = DecimalType::GetScale(func_expr.children[0]->return_type);
|
602
602
|
T power_of_ten = POWERS_OF_TEN_CLASS::POWERS_OF_TEN[source_scale - info.target_scale];
|
603
603
|
T addition = power_of_ten / 2;
|
@@ -17,9 +17,10 @@ static bool StartsWith(const unsigned char *haystack, idx_t haystack_size, const
|
|
17
17
|
}
|
18
18
|
|
19
19
|
static bool StartsWith(const string_t &haystack_s, const string_t &needle_s) {
|
20
|
-
|
20
|
+
|
21
|
+
auto haystack = const_uchar_ptr_cast(haystack_s.GetData());
|
21
22
|
auto haystack_size = haystack_s.GetSize();
|
22
|
-
auto needle = (
|
23
|
+
auto needle = const_uchar_ptr_cast(needle_s.GetData());
|
23
24
|
auto needle_size = needle_s.GetSize();
|
24
25
|
if (needle_size == 0) {
|
25
26
|
// empty needle: always true
|
@@ -36,7 +36,7 @@ struct RegularStringSplit {
|
|
36
36
|
if (delim_size == 0) {
|
37
37
|
return 0;
|
38
38
|
}
|
39
|
-
return ContainsFun::Find((
|
39
|
+
return ContainsFun::Find(const_uchar_ptr_cast(input_data), input_size, const_uchar_ptr_cast(delim_data),
|
40
40
|
delim_size);
|
41
41
|
}
|
42
42
|
};
|
@@ -45,7 +45,7 @@ struct ConstantRegexpStringSplit {
|
|
45
45
|
static idx_t Find(const char *input_data, idx_t input_size, const char *delim_data, idx_t delim_size,
|
46
46
|
idx_t &match_size, void *data) {
|
47
47
|
D_ASSERT(data);
|
48
|
-
auto regex =
|
48
|
+
auto regex = reinterpret_cast<duckdb_re2::RE2 *>(data);
|
49
49
|
duckdb_re2::StringPiece match;
|
50
50
|
if (!regex->Match(duckdb_re2::StringPiece(input_data, input_size), 0, input_size, RE2::UNANCHORED, &match, 1)) {
|
51
51
|
return DConstants::INVALID_INDEX;
|
@@ -109,11 +109,11 @@ template <class OP>
|
|
109
109
|
static void StringSplitExecutor(DataChunk &args, ExpressionState &state, Vector &result, void *data = nullptr) {
|
110
110
|
UnifiedVectorFormat input_data;
|
111
111
|
args.data[0].ToUnifiedFormat(args.size(), input_data);
|
112
|
-
auto inputs = (
|
112
|
+
auto inputs = UnifiedVectorFormat::GetData<string_t>(input_data);
|
113
113
|
|
114
114
|
UnifiedVectorFormat delim_data;
|
115
115
|
args.data[1].ToUnifiedFormat(args.size(), delim_data);
|
116
|
-
auto delims = (
|
116
|
+
auto delims = UnifiedVectorFormat::GetData<string_t>(delim_data);
|
117
117
|
|
118
118
|
D_ASSERT(result.GetType().id() == LogicalTypeId::LIST);
|
119
119
|
|
@@ -64,7 +64,7 @@ static void UnaryTrimFunction(DataChunk &args, ExpressionState &state, Vector &r
|
|
64
64
|
}
|
65
65
|
|
66
66
|
static void GetIgnoredCodepoints(string_t ignored, unordered_set<utf8proc_int32_t> &ignored_codepoints) {
|
67
|
-
auto dataptr =
|
67
|
+
auto dataptr = reinterpret_cast<const utf8proc_uint8_t *>(ignored.GetData());
|
68
68
|
auto size = ignored.GetSize();
|
69
69
|
idx_t pos = 0;
|
70
70
|
while (pos < size) {
|
@@ -20,7 +20,7 @@ public:
|
|
20
20
|
return make_uniq<UnionExtractBindData>(key, index, type);
|
21
21
|
}
|
22
22
|
bool Equals(const FunctionData &other_p) const override {
|
23
|
-
auto &other = (
|
23
|
+
auto &other = other_p.Cast<UnionExtractBindData>();
|
24
24
|
return key == other.key && index == other.index && type == other.type;
|
25
25
|
}
|
26
26
|
};
|
@@ -7,7 +7,7 @@ namespace duckdb {
|
|
7
7
|
|
8
8
|
AdaptiveFilter::AdaptiveFilter(const Expression &expr)
|
9
9
|
: iteration_count(0), observe_interval(10), execute_interval(20), warmup(true) {
|
10
|
-
auto &conj_expr = (
|
10
|
+
auto &conj_expr = expr.Cast<BoundConjunctionExpression>();
|
11
11
|
D_ASSERT(conj_expr.children.size() > 1);
|
12
12
|
for (idx_t idx = 0; idx < conj_expr.children.size(); idx++) {
|
13
13
|
permutation.push_back(idx);
|
@@ -27,20 +27,20 @@ unique_ptr<ExpressionState> ExpressionExecutor::InitializeState(const BoundCaseE
|
|
27
27
|
|
28
28
|
void ExpressionExecutor::Execute(const BoundCaseExpression &expr, ExpressionState *state_p, const SelectionVector *sel,
|
29
29
|
idx_t count, Vector &result) {
|
30
|
-
auto state = (
|
30
|
+
auto &state = state_p->Cast<CaseExpressionState>();
|
31
31
|
|
32
|
-
state
|
32
|
+
state.intermediate_chunk.Reset();
|
33
33
|
|
34
34
|
// first execute the check expression
|
35
|
-
auto current_true_sel = &state
|
36
|
-
auto current_false_sel = &state
|
35
|
+
auto current_true_sel = &state.true_sel;
|
36
|
+
auto current_false_sel = &state.false_sel;
|
37
37
|
auto current_sel = sel;
|
38
38
|
idx_t current_count = count;
|
39
39
|
for (idx_t i = 0; i < expr.case_checks.size(); i++) {
|
40
40
|
auto &case_check = expr.case_checks[i];
|
41
|
-
auto &intermediate_result = state
|
42
|
-
auto check_state = state
|
43
|
-
auto then_state = state
|
41
|
+
auto &intermediate_result = state.intermediate_chunk.data[i * 2 + 1];
|
42
|
+
auto check_state = state.child_states[i * 2].get();
|
43
|
+
auto then_state = state.child_states[i * 2 + 1].get();
|
44
44
|
|
45
45
|
idx_t tcount =
|
46
46
|
Select(*case_check.when_expr, check_state, current_sel, current_count, current_true_sel, current_false_sel);
|
@@ -68,13 +68,13 @@ void ExpressionExecutor::Execute(const BoundCaseExpression &expr, ExpressionStat
|
|
68
68
|
}
|
69
69
|
}
|
70
70
|
if (current_count > 0) {
|
71
|
-
auto else_state = state
|
71
|
+
auto else_state = state.child_states.back().get();
|
72
72
|
if (current_count == count) {
|
73
73
|
// everything was false, we can just evaluate the else expression directly
|
74
74
|
Execute(*expr.else_expr, else_state, sel, count, result);
|
75
75
|
return;
|
76
76
|
} else {
|
77
|
-
auto &intermediate_result = state
|
77
|
+
auto &intermediate_result = state.intermediate_chunk.data[expr.case_checks.size() * 2];
|
78
78
|
|
79
79
|
D_ASSERT(current_sel);
|
80
80
|
Execute(*expr.else_expr, else_state, current_sel, current_count, intermediate_result);
|
@@ -105,7 +105,7 @@ void TemplatedFillLoop(Vector &vector, Vector &result, const SelectionVector &se
|
|
105
105
|
} else {
|
106
106
|
UnifiedVectorFormat vdata;
|
107
107
|
vector.ToUnifiedFormat(count, vdata);
|
108
|
-
auto data = (
|
108
|
+
auto data = UnifiedVectorFormat::GetData<T>(vdata);
|
109
109
|
for (idx_t i = 0; i < count; i++) {
|
110
110
|
auto source_idx = vdata.sel->get_index(i);
|
111
111
|
auto res_idx = sel.get_index(i);
|
@@ -56,7 +56,7 @@ void ExpressionExecutor::Execute(const BoundConjunctionExpression &expr, Express
|
|
56
56
|
idx_t ExpressionExecutor::Select(const BoundConjunctionExpression &expr, ExpressionState *state_p,
|
57
57
|
const SelectionVector *sel, idx_t count, SelectionVector *true_sel,
|
58
58
|
SelectionVector *false_sel) {
|
59
|
-
auto state = (
|
59
|
+
auto &state = state_p->Cast<ConjunctionState>();
|
60
60
|
|
61
61
|
if (expr.type == ExpressionType::CONJUNCTION_AND) {
|
62
62
|
// get runtime statistics
|
@@ -75,8 +75,8 @@ idx_t ExpressionExecutor::Select(const BoundConjunctionExpression &expr, Express
|
|
75
75
|
true_sel = temp_true.get();
|
76
76
|
}
|
77
77
|
for (idx_t i = 0; i < expr.children.size(); i++) {
|
78
|
-
idx_t tcount = Select(*expr.children[state
|
79
|
-
state
|
78
|
+
idx_t tcount = Select(*expr.children[state.adaptive_filter->permutation[i]],
|
79
|
+
state.child_states[state.adaptive_filter->permutation[i]].get(), current_sel,
|
80
80
|
current_count, true_sel, temp_false.get());
|
81
81
|
idx_t fcount = current_count - tcount;
|
82
82
|
if (fcount > 0 && false_sel) {
|
@@ -99,7 +99,7 @@ idx_t ExpressionExecutor::Select(const BoundConjunctionExpression &expr, Express
|
|
99
99
|
|
100
100
|
// adapt runtime statistics
|
101
101
|
auto end_time = high_resolution_clock::now();
|
102
|
-
state
|
102
|
+
state.adaptive_filter->AdaptRuntimeStatistics(duration_cast<duration<double>>(end_time - start_time).count());
|
103
103
|
return current_count;
|
104
104
|
} else {
|
105
105
|
// get runtime statistics
|
@@ -118,8 +118,8 @@ idx_t ExpressionExecutor::Select(const BoundConjunctionExpression &expr, Express
|
|
118
118
|
false_sel = temp_false.get();
|
119
119
|
}
|
120
120
|
for (idx_t i = 0; i < expr.children.size(); i++) {
|
121
|
-
idx_t tcount = Select(*expr.children[state
|
122
|
-
state
|
121
|
+
idx_t tcount = Select(*expr.children[state.adaptive_filter->permutation[i]],
|
122
|
+
state.child_states[state.adaptive_filter->permutation[i]].get(), current_sel,
|
123
123
|
current_count, temp_true.get(), false_sel);
|
124
124
|
if (tcount > 0) {
|
125
125
|
if (true_sel) {
|
@@ -136,7 +136,7 @@ idx_t ExpressionExecutor::Select(const BoundConjunctionExpression &expr, Express
|
|
136
136
|
|
137
137
|
// adapt runtime statistics
|
138
138
|
auto end_time = high_resolution_clock::now();
|
139
|
-
state
|
139
|
+
state.adaptive_filter->AdaptRuntimeStatistics(duration_cast<duration<double>>(end_time - start_time).count());
|
140
140
|
return result_count;
|
141
141
|
}
|
142
142
|
}
|
@@ -144,25 +144,25 @@ unique_ptr<ExpressionState> ExpressionExecutor::InitializeState(const Expression
|
|
144
144
|
ExpressionExecutorState &state) {
|
145
145
|
switch (expr.expression_class) {
|
146
146
|
case ExpressionClass::BOUND_REF:
|
147
|
-
return InitializeState((
|
147
|
+
return InitializeState(expr.Cast<BoundReferenceExpression>(), state);
|
148
148
|
case ExpressionClass::BOUND_BETWEEN:
|
149
|
-
return InitializeState((
|
149
|
+
return InitializeState(expr.Cast<BoundBetweenExpression>(), state);
|
150
150
|
case ExpressionClass::BOUND_CASE:
|
151
|
-
return InitializeState((
|
151
|
+
return InitializeState(expr.Cast<BoundCaseExpression>(), state);
|
152
152
|
case ExpressionClass::BOUND_CAST:
|
153
|
-
return InitializeState((
|
153
|
+
return InitializeState(expr.Cast<BoundCastExpression>(), state);
|
154
154
|
case ExpressionClass::BOUND_COMPARISON:
|
155
|
-
return InitializeState((
|
155
|
+
return InitializeState(expr.Cast<BoundComparisonExpression>(), state);
|
156
156
|
case ExpressionClass::BOUND_CONJUNCTION:
|
157
|
-
return InitializeState((
|
157
|
+
return InitializeState(expr.Cast<BoundConjunctionExpression>(), state);
|
158
158
|
case ExpressionClass::BOUND_CONSTANT:
|
159
|
-
return InitializeState((
|
159
|
+
return InitializeState(expr.Cast<BoundConstantExpression>(), state);
|
160
160
|
case ExpressionClass::BOUND_FUNCTION:
|
161
|
-
return InitializeState((
|
161
|
+
return InitializeState(expr.Cast<BoundFunctionExpression>(), state);
|
162
162
|
case ExpressionClass::BOUND_OPERATOR:
|
163
|
-
return InitializeState((
|
163
|
+
return InitializeState(expr.Cast<BoundOperatorExpression>(), state);
|
164
164
|
case ExpressionClass::BOUND_PARAMETER:
|
165
|
-
return InitializeState((
|
165
|
+
return InitializeState(expr.Cast<BoundParameterExpression>(), state);
|
166
166
|
default:
|
167
167
|
throw InternalException("Attempting to initialize state of expression of unknown type!");
|
168
168
|
}
|
@@ -187,34 +187,34 @@ void ExpressionExecutor::Execute(const Expression &expr, ExpressionState *state,
|
|
187
187
|
}
|
188
188
|
switch (expr.expression_class) {
|
189
189
|
case ExpressionClass::BOUND_BETWEEN:
|
190
|
-
Execute((
|
190
|
+
Execute(expr.Cast<BoundBetweenExpression>(), state, sel, count, result);
|
191
191
|
break;
|
192
192
|
case ExpressionClass::BOUND_REF:
|
193
|
-
Execute((
|
193
|
+
Execute(expr.Cast<BoundReferenceExpression>(), state, sel, count, result);
|
194
194
|
break;
|
195
195
|
case ExpressionClass::BOUND_CASE:
|
196
|
-
Execute((
|
196
|
+
Execute(expr.Cast<BoundCaseExpression>(), state, sel, count, result);
|
197
197
|
break;
|
198
198
|
case ExpressionClass::BOUND_CAST:
|
199
|
-
Execute((
|
199
|
+
Execute(expr.Cast<BoundCastExpression>(), state, sel, count, result);
|
200
200
|
break;
|
201
201
|
case ExpressionClass::BOUND_COMPARISON:
|
202
|
-
Execute((
|
202
|
+
Execute(expr.Cast<BoundComparisonExpression>(), state, sel, count, result);
|
203
203
|
break;
|
204
204
|
case ExpressionClass::BOUND_CONJUNCTION:
|
205
|
-
Execute((
|
205
|
+
Execute(expr.Cast<BoundConjunctionExpression>(), state, sel, count, result);
|
206
206
|
break;
|
207
207
|
case ExpressionClass::BOUND_CONSTANT:
|
208
|
-
Execute((
|
208
|
+
Execute(expr.Cast<BoundConstantExpression>(), state, sel, count, result);
|
209
209
|
break;
|
210
210
|
case ExpressionClass::BOUND_FUNCTION:
|
211
|
-
Execute((
|
211
|
+
Execute(expr.Cast<BoundFunctionExpression>(), state, sel, count, result);
|
212
212
|
break;
|
213
213
|
case ExpressionClass::BOUND_OPERATOR:
|
214
|
-
Execute((
|
214
|
+
Execute(expr.Cast<BoundOperatorExpression>(), state, sel, count, result);
|
215
215
|
break;
|
216
216
|
case ExpressionClass::BOUND_PARAMETER:
|
217
|
-
Execute((
|
217
|
+
Execute(expr.Cast<BoundParameterExpression>(), state, sel, count, result);
|
218
218
|
break;
|
219
219
|
default:
|
220
220
|
throw InternalException("Attempting to execute expression of unknown type!");
|
@@ -242,7 +242,7 @@ idx_t ExpressionExecutor::Select(const Expression &expr, ExpressionState *state,
|
|
242
242
|
}
|
243
243
|
|
244
244
|
template <bool NO_NULL, bool HAS_TRUE_SEL, bool HAS_FALSE_SEL>
|
245
|
-
static inline idx_t DefaultSelectLoop(const SelectionVector *bsel, uint8_t *__restrict bdata, ValidityMask &mask,
|
245
|
+
static inline idx_t DefaultSelectLoop(const SelectionVector *bsel, const uint8_t *__restrict bdata, ValidityMask &mask,
|
246
246
|
const SelectionVector *sel, idx_t count, SelectionVector *true_sel,
|
247
247
|
SelectionVector *false_sel) {
|
248
248
|
idx_t true_count = 0, false_count = 0;
|
@@ -270,15 +270,15 @@ template <bool NO_NULL>
|
|
270
270
|
static inline idx_t DefaultSelectSwitch(UnifiedVectorFormat &idata, const SelectionVector *sel, idx_t count,
|
271
271
|
SelectionVector *true_sel, SelectionVector *false_sel) {
|
272
272
|
if (true_sel && false_sel) {
|
273
|
-
return DefaultSelectLoop<NO_NULL, true, true>(idata.sel, (
|
274
|
-
true_sel, false_sel);
|
273
|
+
return DefaultSelectLoop<NO_NULL, true, true>(idata.sel, UnifiedVectorFormat::GetData<uint8_t>(idata),
|
274
|
+
idata.validity, sel, count, true_sel, false_sel);
|
275
275
|
} else if (true_sel) {
|
276
|
-
return DefaultSelectLoop<NO_NULL, true, false>(idata.sel, (
|
277
|
-
true_sel, false_sel);
|
276
|
+
return DefaultSelectLoop<NO_NULL, true, false>(idata.sel, UnifiedVectorFormat::GetData<uint8_t>(idata),
|
277
|
+
idata.validity, sel, count, true_sel, false_sel);
|
278
278
|
} else {
|
279
279
|
D_ASSERT(false_sel);
|
280
|
-
return DefaultSelectLoop<NO_NULL, false, true>(idata.sel, (
|
281
|
-
true_sel, false_sel);
|
280
|
+
return DefaultSelectLoop<NO_NULL, false, true>(idata.sel, UnifiedVectorFormat::GetData<uint8_t>(idata),
|
281
|
+
idata.validity, sel, count, true_sel, false_sel);
|
282
282
|
}
|
283
283
|
}
|
284
284
|
|
@@ -288,7 +288,7 @@ idx_t ExpressionExecutor::DefaultSelect(const Expression &expr, ExpressionState
|
|
288
288
|
// resolve the true/false expression first
|
289
289
|
// then use that to generate the selection vector
|
290
290
|
bool intermediate_bools[STANDARD_VECTOR_SIZE];
|
291
|
-
Vector intermediate(LogicalType::BOOLEAN, (
|
291
|
+
Vector intermediate(LogicalType::BOOLEAN, data_ptr_cast(intermediate_bools));
|
292
292
|
Execute(expr, state, sel, count, intermediate);
|
293
293
|
|
294
294
|
UnifiedVectorFormat idata;
|