duckdb 0.8.1-dev26.0 → 0.8.1-dev287.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 +1 -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/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 +97 -121
- 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 +30 -32
- package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +3 -4
- 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 +25 -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_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 +15 -20
- package/src/duckdb/src/function/table/repeat.cpp +2 -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/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 +3 -3
- 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/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 +107 -91
- 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/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/index.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
- 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/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_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/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_database.cpp +3 -4
- 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 -22
- 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 +46 -46
- 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 -1
- package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +18 -1
- 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 +17 -7
- 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/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 +1 -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/pcg/pcg_extras.hpp +1 -1
- package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +5 -5
@@ -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;
|
@@ -125,7 +125,7 @@ static void TemplatedGenerateKeys(ArenaAllocator &allocator, Vector &input, idx_
|
|
125
125
|
input.ToUnifiedFormat(count, idata);
|
126
126
|
|
127
127
|
D_ASSERT(keys.size() >= count);
|
128
|
-
auto input_data = (
|
128
|
+
auto input_data = UnifiedVectorFormat::GetData<T>(idata);
|
129
129
|
for (idx_t i = 0; i < count; i++) {
|
130
130
|
auto idx = idata.sel->get_index(i);
|
131
131
|
if (idata.validity.RowIsValid(idx)) {
|
@@ -142,7 +142,7 @@ static void ConcatenateKeys(ArenaAllocator &allocator, Vector &input, idx_t coun
|
|
142
142
|
UnifiedVectorFormat idata;
|
143
143
|
input.ToUnifiedFormat(count, idata);
|
144
144
|
|
145
|
-
auto input_data = (
|
145
|
+
auto input_data = UnifiedVectorFormat::GetData<T>(idata);
|
146
146
|
for (idx_t i = 0; i < count; i++) {
|
147
147
|
auto idx = idata.sel->get_index(i);
|
148
148
|
|
@@ -715,16 +715,16 @@ Node ART::Lookup(Node node, const ARTKey &key, idx_t depth) {
|
|
715
715
|
// False (Otherwise)
|
716
716
|
//===--------------------------------------------------------------------===//
|
717
717
|
|
718
|
-
bool ART::SearchGreater(ARTIndexScanState
|
718
|
+
bool ART::SearchGreater(ARTIndexScanState &state, ARTKey &key, bool inclusive, idx_t max_count,
|
719
719
|
vector<row_t> &result_ids) {
|
720
720
|
|
721
|
-
|
721
|
+
auto &it = state.iterator;
|
722
722
|
|
723
723
|
// greater than scan: first set the iterator to the node at which we will start our scan by finding the lowest node
|
724
724
|
// that satisfies our requirement
|
725
|
-
if (!it
|
726
|
-
it
|
727
|
-
if (!it
|
725
|
+
if (!it.art) {
|
726
|
+
it.art = this;
|
727
|
+
if (!it.LowerBound(*tree, key, inclusive)) {
|
728
728
|
return true;
|
729
729
|
}
|
730
730
|
}
|
@@ -732,74 +732,72 @@ bool ART::SearchGreater(ARTIndexScanState *state, ARTKey &key, bool inclusive, i
|
|
732
732
|
// after that we continue the scan; we don't need to check the bounds as any value following this value is
|
733
733
|
// automatically bigger and hence satisfies our predicate
|
734
734
|
ARTKey empty_key = ARTKey();
|
735
|
-
return it
|
735
|
+
return it.Scan(empty_key, max_count, result_ids, false);
|
736
736
|
}
|
737
737
|
|
738
738
|
//===--------------------------------------------------------------------===//
|
739
739
|
// Less Than
|
740
740
|
//===--------------------------------------------------------------------===//
|
741
741
|
|
742
|
-
bool ART::SearchLess(ARTIndexScanState
|
742
|
+
bool ART::SearchLess(ARTIndexScanState &state, ARTKey &upper_bound, bool inclusive, idx_t max_count,
|
743
743
|
vector<row_t> &result_ids) {
|
744
744
|
|
745
745
|
if (!tree->IsSet()) {
|
746
746
|
return true;
|
747
747
|
}
|
748
748
|
|
749
|
-
|
749
|
+
auto &it = state.iterator;
|
750
750
|
|
751
|
-
if (!it
|
752
|
-
it
|
751
|
+
if (!it.art) {
|
752
|
+
it.art = this;
|
753
753
|
// first find the minimum value in the ART: we start scanning from this value
|
754
|
-
it
|
754
|
+
it.FindMinimum(*tree);
|
755
755
|
// early out min value higher than upper bound query
|
756
|
-
if (it
|
756
|
+
if (it.cur_key > upper_bound) {
|
757
757
|
return true;
|
758
758
|
}
|
759
759
|
}
|
760
760
|
|
761
761
|
// now continue the scan until we reach the upper bound
|
762
|
-
return it
|
762
|
+
return it.Scan(upper_bound, max_count, result_ids, inclusive);
|
763
763
|
}
|
764
764
|
|
765
765
|
//===--------------------------------------------------------------------===//
|
766
766
|
// Closed Range Query
|
767
767
|
//===--------------------------------------------------------------------===//
|
768
768
|
|
769
|
-
bool ART::SearchCloseRange(ARTIndexScanState
|
769
|
+
bool ART::SearchCloseRange(ARTIndexScanState &state, ARTKey &lower_bound, ARTKey &upper_bound, bool left_inclusive,
|
770
770
|
bool right_inclusive, idx_t max_count, vector<row_t> &result_ids) {
|
771
|
-
|
772
|
-
Iterator *it = &state->iterator;
|
771
|
+
auto &it = state.iterator;
|
773
772
|
|
774
773
|
// first find the first node that satisfies the left predicate
|
775
|
-
if (!it
|
776
|
-
it
|
777
|
-
if (!it
|
774
|
+
if (!it.art) {
|
775
|
+
it.art = this;
|
776
|
+
if (!it.LowerBound(*tree, lower_bound, left_inclusive)) {
|
778
777
|
return true;
|
779
778
|
}
|
780
779
|
}
|
781
780
|
|
782
781
|
// now continue the scan until we reach the upper bound
|
783
|
-
return it
|
782
|
+
return it.Scan(upper_bound, max_count, result_ids, right_inclusive);
|
784
783
|
}
|
785
784
|
|
786
785
|
bool ART::Scan(const Transaction &transaction, const DataTable &table, IndexScanState &table_state,
|
787
786
|
const idx_t max_count, vector<row_t> &result_ids) {
|
788
|
-
|
789
|
-
auto state = (ARTIndexScanState *)&table_state;
|
787
|
+
auto &state = table_state.Cast<ARTIndexScanState>();
|
790
788
|
vector<row_t> row_ids;
|
791
789
|
bool success;
|
792
790
|
|
793
791
|
// FIXME: the key directly owning the data for a single key might be more efficient
|
794
|
-
D_ASSERT(state
|
792
|
+
D_ASSERT(state.values[0].type().InternalType() == types[0]);
|
795
793
|
ArenaAllocator arena_allocator(Allocator::Get(db));
|
796
|
-
auto key = CreateKey(arena_allocator, types[0], state
|
794
|
+
auto key = CreateKey(arena_allocator, types[0], state.values[0]);
|
797
795
|
|
798
|
-
if (state
|
796
|
+
if (state.values[1].IsNull()) {
|
799
797
|
|
800
798
|
// single predicate
|
801
799
|
lock_guard<mutex> l(lock);
|
802
|
-
switch (state
|
800
|
+
switch (state.expressions[0]) {
|
803
801
|
case ExpressionType::COMPARE_EQUAL:
|
804
802
|
success = SearchEqual(key, max_count, row_ids);
|
805
803
|
break;
|
@@ -824,11 +822,11 @@ bool ART::Scan(const Transaction &transaction, const DataTable &table, IndexScan
|
|
824
822
|
// two predicates
|
825
823
|
lock_guard<mutex> l(lock);
|
826
824
|
|
827
|
-
D_ASSERT(state
|
828
|
-
auto upper_bound = CreateKey(arena_allocator, types[0], state
|
825
|
+
D_ASSERT(state.values[1].type().InternalType() == types[0]);
|
826
|
+
auto upper_bound = CreateKey(arena_allocator, types[0], state.values[1]);
|
829
827
|
|
830
|
-
bool left_inclusive = state
|
831
|
-
bool right_inclusive = state
|
828
|
+
bool left_inclusive = state.expressions[0] == ExpressionType ::COMPARE_GREATERTHANOREQUALTO;
|
829
|
+
bool right_inclusive = state.expressions[1] == ExpressionType ::COMPARE_LESSTHANOREQUALTO;
|
832
830
|
success = SearchCloseRange(state, key, upper_bound, left_inclusive, right_inclusive, max_count, row_ids);
|
833
831
|
}
|
834
832
|
|