duckdb 0.8.0 → 0.8.1-dev111.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/package.json +1 -1
- package/src/duckdb/extension/icu/icu-datepart.cpp +1 -1
- package/src/duckdb/extension/json/include/json_common.hpp +1 -1
- package/src/duckdb/extension/json/include/json_executors.hpp +1 -1
- package/src/duckdb/extension/json/json_functions/json_create.cpp +6 -6
- package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +1 -1
- package/src/duckdb/extension/json/json_functions/json_transform.cpp +1 -1
- 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 +0 -4
- package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +3 -0
- package/src/duckdb/src/catalog/catalog_entry.cpp +4 -4
- package/src/duckdb/src/catalog/catalog_set.cpp +1 -1
- 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 +183 -94
- package/src/duckdb/src/common/adbc/driver_manager.cpp +10 -2
- 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/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/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/tuple_data_allocator.cpp +5 -3
- package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +17 -17
- package/src/duckdb/src/common/types/string_heap.cpp +1 -1
- package/src/duckdb/src/common/types/value.cpp +2 -2
- package/src/duckdb/src/common/types/vector.cpp +101 -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 +43 -43
- 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 +83 -119
- 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/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/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 +1 -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 +33 -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/filter/physical_filter.cpp +1 -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/csv_reader_options.cpp +2 -0
- 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/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/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.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 +4 -4
- 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 +4 -7
- package/src/duckdb/src/function/table/repeat.cpp +2 -2
- package/src/duckdb/src/function/table/repeat_row.cpp +2 -2
- package/src/duckdb/src/function/table/system/duckdb_functions.cpp +1 -1
- package/src/duckdb/src/function/table/system/test_vector_types.cpp +1 -1
- 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 -2
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +2 -2
- 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 +2 -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/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/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 +6 -6
- package/src/duckdb/src/include/duckdb/main/capi/cast/utils.hpp +1 -1
- 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/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/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 +1 -1
- 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 +1 -1
- 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/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 +2 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +3 -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 +1 -1
- 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/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/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/join_order/join_order_optimizer.cpp +4 -7
- 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/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 +3 -3
- 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 +27 -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 +6 -6
- 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_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 +13 -5
- package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +2 -2
- package/src/duckdb/src/planner/binder/statement/bind_update.cpp +1 -1
- package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +1 -1
- package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +14 -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_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/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 +2 -2
- 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 +8 -7
- 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 +1 -1
- 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/src_backend_parser_gram.cpp +13479 -13564
- package/src/duckdb/third_party/pcg/pcg_extras.hpp +1 -1
@@ -19,10 +19,10 @@ struct CStandardConverter : public CBaseConverter {
|
|
19
19
|
struct CStringConverter {
|
20
20
|
template <class SRC, class DST>
|
21
21
|
static DST Convert(SRC input) {
|
22
|
-
auto result = (
|
22
|
+
auto result = char_ptr_cast(duckdb_malloc(input.GetSize() + 1));
|
23
23
|
assert(result);
|
24
24
|
memcpy((void *)result, input.GetData(), input.GetSize());
|
25
|
-
auto write_arr = (
|
25
|
+
auto write_arr = char_ptr_cast(result);
|
26
26
|
write_arr[input.GetSize()] = '\0';
|
27
27
|
return result;
|
28
28
|
}
|
@@ -37,10 +37,10 @@ struct CBlobConverter {
|
|
37
37
|
template <class SRC, class DST>
|
38
38
|
static DST Convert(SRC input) {
|
39
39
|
duckdb_blob result;
|
40
|
-
result.data = (
|
40
|
+
result.data = char_ptr_cast(duckdb_malloc(input.GetSize()));
|
41
41
|
result.size = input.GetSize();
|
42
42
|
assert(result.data);
|
43
|
-
memcpy(
|
43
|
+
memcpy(result.data, input.GetData(), input.GetSize());
|
44
44
|
return result;
|
45
45
|
}
|
46
46
|
|
@@ -266,7 +266,7 @@ duckdb_state duckdb_translate_result(unique_ptr<QueryResult> result_p, duckdb_re
|
|
266
266
|
|
267
267
|
if (result.HasError()) {
|
268
268
|
// write the error message
|
269
|
-
out->__deprecated_error_message = (char *)result.GetError().c_str();
|
269
|
+
out->__deprecated_error_message = (char *)result.GetError().c_str(); // NOLINT
|
270
270
|
return DuckDBError;
|
271
271
|
}
|
272
272
|
// copy the data
|
@@ -280,7 +280,7 @@ bool deprecated_materialize_result(duckdb_result *result) {
|
|
280
280
|
if (!result) {
|
281
281
|
return false;
|
282
282
|
}
|
283
|
-
auto result_data =
|
283
|
+
auto result_data = reinterpret_cast<duckdb::DuckDBResultData *>(result->internal_data);
|
284
284
|
if (result_data->result->HasError()) {
|
285
285
|
return false;
|
286
286
|
}
|
@@ -310,14 +310,14 @@ bool deprecated_materialize_result(duckdb_result *result) {
|
|
310
310
|
result_data->result = stream_result.Materialize();
|
311
311
|
}
|
312
312
|
D_ASSERT(result_data->result->type == QueryResultType::MATERIALIZED_RESULT);
|
313
|
-
auto &materialized =
|
313
|
+
auto &materialized = reinterpret_cast<MaterializedQueryResult &>(*result_data->result);
|
314
314
|
|
315
315
|
// convert the result to a materialized result
|
316
316
|
// zero initialize the columns (so we can cleanly delete it in case a malloc fails)
|
317
317
|
memset(result->__deprecated_columns, 0, sizeof(duckdb_column) * column_count);
|
318
318
|
for (idx_t i = 0; i < column_count; i++) {
|
319
319
|
result->__deprecated_columns[i].__deprecated_type = ConvertCPPTypeToC(result_data->result->types[i]);
|
320
|
-
result->__deprecated_columns[i].__deprecated_name = (char *)result_data->result->names[i].c_str();
|
320
|
+
result->__deprecated_columns[i].__deprecated_name = (char *)result_data->result->names[i].c_str(); // NOLINT
|
321
321
|
}
|
322
322
|
result->__deprecated_row_count = materialized.RowCount();
|
323
323
|
if (result->__deprecated_row_count > 0 &&
|
@@ -344,7 +344,7 @@ static void DuckdbDestroyColumn(duckdb_column column, idx_t count) {
|
|
344
344
|
if (column.__deprecated_data) {
|
345
345
|
if (column.__deprecated_type == DUCKDB_TYPE_VARCHAR) {
|
346
346
|
// varchar, delete individual strings
|
347
|
-
auto data =
|
347
|
+
auto data = reinterpret_cast<char **>(column.__deprecated_data);
|
348
348
|
for (idx_t i = 0; i < count; i++) {
|
349
349
|
if (data[i]) {
|
350
350
|
duckdb_free(data[i]);
|
@@ -352,7 +352,7 @@ static void DuckdbDestroyColumn(duckdb_column column, idx_t count) {
|
|
352
352
|
}
|
353
353
|
} else if (column.__deprecated_type == DUCKDB_TYPE_BLOB) {
|
354
354
|
// blob, delete individual blobs
|
355
|
-
auto data =
|
355
|
+
auto data = reinterpret_cast<duckdb_blob *>(column.__deprecated_data);
|
356
356
|
for (idx_t i = 0; i < count; i++) {
|
357
357
|
if (data[i].data) {
|
358
358
|
duckdb_free((void *)data[i].data);
|
@@ -374,7 +374,7 @@ void duckdb_destroy_result(duckdb_result *result) {
|
|
374
374
|
duckdb_free(result->__deprecated_columns);
|
375
375
|
}
|
376
376
|
if (result->internal_data) {
|
377
|
-
auto result_data =
|
377
|
+
auto result_data = reinterpret_cast<duckdb::DuckDBResultData *>(result->internal_data);
|
378
378
|
delete result_data;
|
379
379
|
}
|
380
380
|
memset(result, 0, sizeof(duckdb_result));
|
@@ -384,7 +384,7 @@ const char *duckdb_column_name(duckdb_result *result, idx_t col) {
|
|
384
384
|
if (!result || col >= duckdb_column_count(result)) {
|
385
385
|
return nullptr;
|
386
386
|
}
|
387
|
-
auto &result_data = *(
|
387
|
+
auto &result_data = *(reinterpret_cast<duckdb::DuckDBResultData *>(result->internal_data));
|
388
388
|
return result_data.result->names[col].c_str();
|
389
389
|
}
|
390
390
|
|
@@ -392,7 +392,7 @@ duckdb_type duckdb_column_type(duckdb_result *result, idx_t col) {
|
|
392
392
|
if (!result || col >= duckdb_column_count(result)) {
|
393
393
|
return DUCKDB_TYPE_INVALID;
|
394
394
|
}
|
395
|
-
auto &result_data = *(
|
395
|
+
auto &result_data = *(reinterpret_cast<duckdb::DuckDBResultData *>(result->internal_data));
|
396
396
|
return duckdb::ConvertCPPTypeToC(result_data.result->types[col]);
|
397
397
|
}
|
398
398
|
|
@@ -400,7 +400,7 @@ duckdb_logical_type duckdb_column_logical_type(duckdb_result *result, idx_t col)
|
|
400
400
|
if (!result || col >= duckdb_column_count(result)) {
|
401
401
|
return nullptr;
|
402
402
|
}
|
403
|
-
auto &result_data = *(
|
403
|
+
auto &result_data = *(reinterpret_cast<duckdb::DuckDBResultData *>(result->internal_data));
|
404
404
|
return reinterpret_cast<duckdb_logical_type>(new duckdb::LogicalType(result_data.result->types[col]));
|
405
405
|
}
|
406
406
|
|
@@ -408,7 +408,7 @@ idx_t duckdb_column_count(duckdb_result *result) {
|
|
408
408
|
if (!result) {
|
409
409
|
return 0;
|
410
410
|
}
|
411
|
-
auto &result_data = *(
|
411
|
+
auto &result_data = *(reinterpret_cast<duckdb::DuckDBResultData *>(result->internal_data));
|
412
412
|
return result_data.result->ColumnCount();
|
413
413
|
}
|
414
414
|
|
@@ -416,12 +416,12 @@ idx_t duckdb_row_count(duckdb_result *result) {
|
|
416
416
|
if (!result) {
|
417
417
|
return 0;
|
418
418
|
}
|
419
|
-
auto &result_data = *(
|
419
|
+
auto &result_data = *(reinterpret_cast<duckdb::DuckDBResultData *>(result->internal_data));
|
420
420
|
if (result_data.result->type == duckdb::QueryResultType::STREAM_RESULT) {
|
421
421
|
// We can't know the row count beforehand
|
422
422
|
return 0;
|
423
423
|
}
|
424
|
-
auto &materialized =
|
424
|
+
auto &materialized = reinterpret_cast<duckdb::MaterializedQueryResult &>(*result_data.result);
|
425
425
|
return materialized.RowCount();
|
426
426
|
}
|
427
427
|
|
@@ -459,7 +459,7 @@ const char *duckdb_result_error(duckdb_result *result) {
|
|
459
459
|
if (!result) {
|
460
460
|
return nullptr;
|
461
461
|
}
|
462
|
-
auto &result_data = *(
|
462
|
+
auto &result_data = *(reinterpret_cast<duckdb::DuckDBResultData *>(result->internal_data));
|
463
463
|
return !result_data.result->HasError() ? nullptr : result_data.result->GetError().c_str();
|
464
464
|
}
|
465
465
|
|
@@ -467,7 +467,7 @@ idx_t duckdb_result_chunk_count(duckdb_result result) {
|
|
467
467
|
if (!result.internal_data) {
|
468
468
|
return 0;
|
469
469
|
}
|
470
|
-
auto &result_data = *(
|
470
|
+
auto &result_data = *(reinterpret_cast<duckdb::DuckDBResultData *>(result.internal_data));
|
471
471
|
if (result_data.result_set_type == duckdb::CAPIResultSetType::CAPI_RESULT_TYPE_DEPRECATED) {
|
472
472
|
return 0;
|
473
473
|
}
|
@@ -475,7 +475,7 @@ idx_t duckdb_result_chunk_count(duckdb_result result) {
|
|
475
475
|
// Can't know beforehand how many chunks are returned.
|
476
476
|
return 0;
|
477
477
|
}
|
478
|
-
auto &materialized =
|
478
|
+
auto &materialized = reinterpret_cast<duckdb::MaterializedQueryResult &>(*result_data.result);
|
479
479
|
return materialized.Collection().ChunkCount();
|
480
480
|
}
|
481
481
|
|
@@ -483,7 +483,7 @@ duckdb_data_chunk duckdb_result_get_chunk(duckdb_result result, idx_t chunk_idx)
|
|
483
483
|
if (!result.internal_data) {
|
484
484
|
return nullptr;
|
485
485
|
}
|
486
|
-
auto &result_data = *(
|
486
|
+
auto &result_data = *(reinterpret_cast<duckdb::DuckDBResultData *>(result.internal_data));
|
487
487
|
if (result_data.result_set_type == duckdb::CAPIResultSetType::CAPI_RESULT_TYPE_DEPRECATED) {
|
488
488
|
return nullptr;
|
489
489
|
}
|
@@ -492,7 +492,7 @@ duckdb_data_chunk duckdb_result_get_chunk(duckdb_result result, idx_t chunk_idx)
|
|
492
492
|
return nullptr;
|
493
493
|
}
|
494
494
|
result_data.result_set_type = duckdb::CAPIResultSetType::CAPI_RESULT_TYPE_MATERIALIZED;
|
495
|
-
auto &materialized =
|
495
|
+
auto &materialized = reinterpret_cast<duckdb::MaterializedQueryResult &>(*result_data.result);
|
496
496
|
auto &collection = materialized.Collection();
|
497
497
|
if (chunk_idx >= collection.ChunkCount()) {
|
498
498
|
return nullptr;
|
@@ -510,6 +510,6 @@ bool duckdb_result_is_streaming(duckdb_result result) {
|
|
510
510
|
if (duckdb_result_error(&result) != nullptr) {
|
511
511
|
return false;
|
512
512
|
}
|
513
|
-
auto &result_data = *(
|
513
|
+
auto &result_data = *(reinterpret_cast<duckdb::DuckDBResultData *>(result.internal_data));
|
514
514
|
return result_data.result->type == duckdb::QueryResultType::STREAM_RESULT;
|
515
515
|
}
|
@@ -311,7 +311,7 @@ void duckdb_bind_add_result_column(duckdb_bind_info info, const char *name, duck
|
|
311
311
|
}
|
312
312
|
auto bind_info = (duckdb::CTableInternalBindInfo *)info;
|
313
313
|
bind_info->names.push_back(name);
|
314
|
-
bind_info->return_types.push_back(*(
|
314
|
+
bind_info->return_types.push_back(*(reinterpret_cast<duckdb::LogicalType *>(type)));
|
315
315
|
}
|
316
316
|
|
317
317
|
idx_t duckdb_bind_get_parameter_count(duckdb_bind_info info) {
|
@@ -774,8 +774,8 @@ void ClientContext::LogQueryInternal(ClientContextLock &, const string &query) {
|
|
774
774
|
#endif
|
775
775
|
}
|
776
776
|
// log query path is set: log the query
|
777
|
-
client_data->log_query_writer->WriteData((
|
778
|
-
client_data->log_query_writer->WriteData((
|
777
|
+
client_data->log_query_writer->WriteData(const_data_ptr_cast(query.c_str()), query.size());
|
778
|
+
client_data->log_query_writer->WriteData(const_data_ptr_cast("\n"), 1);
|
779
779
|
client_data->log_query_writer->Flush();
|
780
780
|
client_data->log_query_writer->Sync();
|
781
781
|
}
|
@@ -918,7 +918,7 @@ void ClientContext::RegisterFunction(CreateFunctionInfo &info) {
|
|
918
918
|
auto existing_function = Catalog::GetEntry<ScalarFunctionCatalogEntry>(*this, INVALID_CATALOG, info.schema,
|
919
919
|
info.name, OnEntryNotFound::RETURN_NULL);
|
920
920
|
if (existing_function) {
|
921
|
-
auto &new_info = (
|
921
|
+
auto &new_info = info.Cast<CreateScalarFunctionInfo>();
|
922
922
|
if (new_info.functions.MergeFunctionSet(existing_function->functions)) {
|
923
923
|
// function info was updated from catalog entry, rewrite is needed
|
924
924
|
info.on_conflict = OnCreateConflict::REPLACE_ON_CONFLICT;
|
@@ -27,7 +27,7 @@ optional_ptr<AttachedDatabase> DatabaseManager::GetDatabase(ClientContext &conte
|
|
27
27
|
if (StringUtil::Lower(name) == TEMP_CATALOG) {
|
28
28
|
return context.client_data->temporary_objects.get();
|
29
29
|
}
|
30
|
-
return
|
30
|
+
return reinterpret_cast<AttachedDatabase *>(databases->GetEntry(context, name).get());
|
31
31
|
}
|
32
32
|
|
33
33
|
void DatabaseManager::AddDatabase(ClientContext &context, unique_ptr<AttachedDatabase> db_instance) {
|
@@ -37,7 +37,7 @@ string ErrorManager::FormatExceptionRecursive(ErrorType error_type, vector<Excep
|
|
37
37
|
string ErrorManager::InvalidUnicodeError(const string &input, const string &context) {
|
38
38
|
UnicodeInvalidReason reason;
|
39
39
|
size_t pos;
|
40
|
-
auto unicode = Utf8Proc::Analyze((
|
40
|
+
auto unicode = Utf8Proc::Analyze(const_char_ptr_cast(input.c_str()), input.size(), &reason, &pos);
|
41
41
|
if (unicode != UnicodeType::INVALID) {
|
42
42
|
return "Invalid unicode error thrown but no invalid unicode detected in " + context;
|
43
43
|
}
|
@@ -86,7 +86,7 @@ bool ExtensionHelper::TryInitialLoad(DBConfig &config, FileSystem &fs, const str
|
|
86
86
|
|
87
87
|
auto signature_offset = handle->GetFileSize() - signature.size();
|
88
88
|
|
89
|
-
const idx_t maxLenChunks =
|
89
|
+
const idx_t maxLenChunks = 1024ULL * 1024ULL;
|
90
90
|
const idx_t numChunks = (signature_offset + maxLenChunks - 1) / maxLenChunks;
|
91
91
|
std::vector<std::string> hash_chunks(numChunks);
|
92
92
|
std::vector<idx_t> splits(numChunks + 1);
|
@@ -23,7 +23,7 @@ BoundStatement CreateTableRelation::Bind(Binder &binder) {
|
|
23
23
|
info->query = std::move(select);
|
24
24
|
info->on_conflict = OnCreateConflict::ERROR_ON_CONFLICT;
|
25
25
|
stmt.info = std::move(info);
|
26
|
-
return binder.Bind((
|
26
|
+
return binder.Bind(stmt.Cast<SQLStatement>());
|
27
27
|
}
|
28
28
|
|
29
29
|
const vector<ColumnDefinition> &CreateTableRelation::Columns() {
|
@@ -32,7 +32,7 @@ BoundStatement CreateViewRelation::Bind(Binder &binder) {
|
|
32
32
|
info->schema = schema_name;
|
33
33
|
info->on_conflict = replace ? OnCreateConflict::REPLACE_ON_CONFLICT : OnCreateConflict::ERROR_ON_CONFLICT;
|
34
34
|
stmt.info = std::move(info);
|
35
|
-
return binder.Bind((
|
35
|
+
return binder.Bind(stmt.Cast<SQLStatement>());
|
36
36
|
}
|
37
37
|
|
38
38
|
const vector<ColumnDefinition> &CreateViewRelation::Columns() {
|
@@ -21,7 +21,7 @@ BoundStatement DeleteRelation::Bind(Binder &binder) {
|
|
21
21
|
DeleteStatement stmt;
|
22
22
|
stmt.condition = condition ? condition->Copy() : nullptr;
|
23
23
|
stmt.table = std::move(basetable);
|
24
|
-
return binder.Bind((
|
24
|
+
return binder.Bind(stmt.Cast<SQLStatement>());
|
25
25
|
}
|
26
26
|
|
27
27
|
const vector<ColumnDefinition> &DeleteRelation::Columns() {
|
@@ -16,7 +16,7 @@ BoundStatement ExplainRelation::Bind(Binder &binder) {
|
|
16
16
|
auto select = make_uniq<SelectStatement>();
|
17
17
|
select->node = child->GetQueryNode();
|
18
18
|
ExplainStatement explain(std::move(select), type);
|
19
|
-
return binder.Bind((
|
19
|
+
return binder.Bind(explain.Cast<SQLStatement>());
|
20
20
|
}
|
21
21
|
|
22
22
|
const vector<ColumnDefinition> &ExplainRelation::Columns() {
|
@@ -21,7 +21,7 @@ BoundStatement InsertRelation::Bind(Binder &binder) {
|
|
21
21
|
stmt.schema = schema_name;
|
22
22
|
stmt.table = table_name;
|
23
23
|
stmt.select_statement = std::move(select);
|
24
|
-
return binder.Bind((
|
24
|
+
return binder.Bind(stmt.Cast<SQLStatement>());
|
25
25
|
}
|
26
26
|
|
27
27
|
const vector<ColumnDefinition> &InsertRelation::Columns() {
|
@@ -30,7 +30,7 @@ BoundStatement UpdateRelation::Bind(Binder &binder) {
|
|
30
30
|
for (auto &expr : expressions) {
|
31
31
|
stmt.set_info->expressions.push_back(expr->Copy());
|
32
32
|
}
|
33
|
-
return binder.Bind((
|
33
|
+
return binder.Bind(stmt.Cast<SQLStatement>());
|
34
34
|
}
|
35
35
|
|
36
36
|
const vector<ColumnDefinition> &UpdateRelation::Columns() {
|
@@ -22,7 +22,7 @@ BoundStatement WriteCSVRelation::Bind(Binder &binder) {
|
|
22
22
|
info->format = "csv";
|
23
23
|
info->options = options;
|
24
24
|
copy.info = std::move(info);
|
25
|
-
return binder.Bind((
|
25
|
+
return binder.Bind(copy.Cast<SQLStatement>());
|
26
26
|
}
|
27
27
|
|
28
28
|
const vector<ColumnDefinition> &WriteCSVRelation::Columns() {
|
@@ -22,7 +22,7 @@ BoundStatement WriteParquetRelation::Bind(Binder &binder) {
|
|
22
22
|
info->format = "parquet";
|
23
23
|
info->options = options;
|
24
24
|
copy.info = std::move(info);
|
25
|
-
return binder.Bind((
|
25
|
+
return binder.Bind(copy.Cast<SQLStatement>());
|
26
26
|
}
|
27
27
|
|
28
28
|
const vector<ColumnDefinition> &WriteParquetRelation::Columns() {
|
@@ -209,7 +209,7 @@ unique_ptr<QueryResult> Relation::ExecuteOrThrow() {
|
|
209
209
|
BoundStatement Relation::Bind(Binder &binder) {
|
210
210
|
SelectStatement stmt;
|
211
211
|
stmt.node = GetQueryNode();
|
212
|
-
return binder.Bind((
|
212
|
+
return binder.Bind(stmt.Cast<SQLStatement>());
|
213
213
|
}
|
214
214
|
|
215
215
|
shared_ptr<Relation> Relation::InsertRel(const string &schema_name, const string &table_name) {
|
@@ -67,7 +67,7 @@ void DeliminatorPlanUpdater::VisitOperator(LogicalOperator &op) {
|
|
67
67
|
VisitOperatorExpressions(op);
|
68
68
|
if (op.type == LogicalOperatorType::LOGICAL_DELIM_JOIN && DelimGetCount(op) == 0) {
|
69
69
|
auto &delim_join = op.Cast<LogicalDelimJoin>();
|
70
|
-
auto decs =
|
70
|
+
auto &decs = delim_join.duplicate_eliminated_columns;
|
71
71
|
for (auto &cond : delim_join.conditions) {
|
72
72
|
if (!IsEqualityJoinCondition(cond)) {
|
73
73
|
continue;
|
@@ -83,10 +83,10 @@ void DeliminatorPlanUpdater::VisitOperator(LogicalOperator &op) {
|
|
83
83
|
auto &colref = rhs->Cast<BoundColumnRefExpression>();
|
84
84
|
if (projection_map.find(colref.binding) != projection_map.end()) {
|
85
85
|
// value on the right is a projection of removed DelimGet
|
86
|
-
for (idx_t i = 0; i < decs
|
87
|
-
if (decs
|
86
|
+
for (idx_t i = 0; i < decs.size(); i++) {
|
87
|
+
if (decs[i]->Equals(*cond.left)) {
|
88
88
|
// the value on the left no longer needs to be a duplicate-eliminated column
|
89
|
-
decs
|
89
|
+
decs.erase(decs.begin() + i);
|
90
90
|
break;
|
91
91
|
}
|
92
92
|
}
|
@@ -95,7 +95,7 @@ void DeliminatorPlanUpdater::VisitOperator(LogicalOperator &op) {
|
|
95
95
|
}
|
96
96
|
}
|
97
97
|
// change type if there are no more duplicate-eliminated columns
|
98
|
-
if (decs
|
98
|
+
if (decs.empty()) {
|
99
99
|
delim_join.type = LogicalOperatorType::LOGICAL_COMPARISON_JOIN;
|
100
100
|
// sub-plans with DelimGets are not re-orderable (yet), however, we removed all DelimGet of this DelimJoin
|
101
101
|
// the DelimGets are on the RHS of the DelimJoin, so we can call the JoinOrderOptimizer on the RHS now
|
@@ -198,9 +198,9 @@ bool Deliminator::RemoveCandidate(unique_ptr<LogicalOperator> *plan, unique_ptr<
|
|
198
198
|
idx_t delim_idx = OperatorIsDelimGet(*join.children[0]) ? 0 : 1;
|
199
199
|
D_ASSERT(OperatorIsDelimGet(*join.children[delim_idx]));
|
200
200
|
// get the filter (if any)
|
201
|
-
LogicalFilter
|
201
|
+
optional_ptr<LogicalFilter> filter;
|
202
202
|
if (join.children[delim_idx]->type == LogicalOperatorType::LOGICAL_FILTER) {
|
203
|
-
filter =
|
203
|
+
filter = &join.children[delim_idx]->Cast<LogicalFilter>();
|
204
204
|
}
|
205
205
|
auto &delim_get = (filter ? filter->children[0] : join.children[delim_idx])->Cast<LogicalDelimGet>();
|
206
206
|
if (join.conditions.size() != delim_get.chunk_types.size()) {
|
@@ -231,7 +231,7 @@ bool Deliminator::RemoveCandidate(unique_ptr<LogicalOperator> *plan, unique_ptr<
|
|
231
231
|
updater.projection_map[cb] = true;
|
232
232
|
updater.reverse_proj_or_agg_map[cb] = proj_or_agg.expressions[cb.column_index].get();
|
233
233
|
for (auto &expr : nulls_are_not_equal_exprs) {
|
234
|
-
if (proj_or_agg.expressions[cb.column_index]->Equals(
|
234
|
+
if (proj_or_agg.expressions[cb.column_index]->Equals(expr.get())) {
|
235
235
|
updater.projection_map[cb] = false;
|
236
236
|
break;
|
237
237
|
}
|
@@ -254,8 +254,8 @@ bool Deliminator::RemoveCandidate(unique_ptr<LogicalOperator> *plan, unique_ptr<
|
|
254
254
|
updater.projection_map[cb] = true;
|
255
255
|
updater.reverse_proj_or_agg_map[cb] = all_agg_exprs[cb.column_index];
|
256
256
|
for (auto &expr : nulls_are_not_equal_exprs) {
|
257
|
-
if ((cb.table_index == agg.group_index && agg.groups[cb.column_index]->Equals(
|
258
|
-
(cb.table_index == agg.aggregate_index && agg.expressions[cb.column_index]->Equals(
|
257
|
+
if ((cb.table_index == agg.group_index && agg.groups[cb.column_index]->Equals(expr.get())) ||
|
258
|
+
(cb.table_index == agg.aggregate_index && agg.expressions[cb.column_index]->Equals(expr.get()))) {
|
259
259
|
updater.projection_map[cb] = false;
|
260
260
|
break;
|
261
261
|
}
|
@@ -386,7 +386,7 @@ bool Deliminator::RemoveInequalityCandidate(unique_ptr<LogicalOperator> *plan, u
|
|
386
386
|
}
|
387
387
|
// try to find the corresponding child condition
|
388
388
|
// TODO: can be more flexible - allow CAST
|
389
|
-
auto child_expr = it->second;
|
389
|
+
auto &child_expr = *it->second;
|
390
390
|
bool found = false;
|
391
391
|
for (auto &child_cond : join.conditions) {
|
392
392
|
if (child_cond.left->Equals(child_expr) || child_cond.right->Equals(child_expr)) {
|
@@ -418,7 +418,7 @@ bool Deliminator::RemoveInequalityCandidate(unique_ptr<LogicalOperator> *plan, u
|
|
418
418
|
auto &parent_expr = parent_delim_get_side == 0 ? parent_cond.left : parent_cond.right;
|
419
419
|
auto &parent_colref = parent_expr->Cast<BoundColumnRefExpression>();
|
420
420
|
auto it = updater.reverse_proj_or_agg_map.find(parent_colref.binding);
|
421
|
-
auto child_expr = it->second;
|
421
|
+
auto &child_expr = *it->second;
|
422
422
|
for (auto &child_cond : join.conditions) {
|
423
423
|
if (!child_cond.left->Equals(child_expr) && !child_cond.right->Equals(child_expr)) {
|
424
424
|
continue;
|
@@ -42,6 +42,7 @@ void ExpressionHeuristics::ReorderExpressions(vector<unique_ptr<Expression>> &ex
|
|
42
42
|
};
|
43
43
|
|
44
44
|
vector<ExpressionCosts> expression_costs;
|
45
|
+
expression_costs.reserve(expressions.size());
|
45
46
|
// iterate expressions, get cost for each one
|
46
47
|
for (idx_t i = 0; i < expressions.size(); i++) {
|
47
48
|
idx_t cost = Cost(*expressions[i]);
|
@@ -635,7 +635,7 @@ FilterResult FilterCombiner::AddBoundComparisonFilter(Expression &expr) {
|
|
635
635
|
// get the LHS and RHS nodes
|
636
636
|
auto &left_node = GetNode(*comparison.left);
|
637
637
|
auto &right_node = GetNode(*comparison.right);
|
638
|
-
if (left_node.Equals(
|
638
|
+
if (left_node.Equals(right_node)) {
|
639
639
|
return FilterResult::UNSUPPORTED;
|
640
640
|
}
|
641
641
|
// get the equivalence sets of the LHS and RHS
|
@@ -806,7 +806,7 @@ FilterResult FilterCombiner::AddTransitiveFilters(BoundComparisonExpression &com
|
|
806
806
|
}
|
807
807
|
}
|
808
808
|
|
809
|
-
if (left_node.Equals(
|
809
|
+
if (left_node.Equals(right_node)) {
|
810
810
|
return FilterResult::UNSUPPORTED;
|
811
811
|
}
|
812
812
|
// get the equivalence sets of the LHS and RHS
|
@@ -903,7 +903,7 @@ unique_ptr<Expression> FilterCombiner::FindTransitiveFilter(Expression &expr) {
|
|
903
903
|
for (idx_t i = 0; i < remaining_filters.size(); i++) {
|
904
904
|
if (remaining_filters[i]->GetExpressionClass() == ExpressionClass::BOUND_COMPARISON) {
|
905
905
|
auto &comparison = remaining_filters[i]->Cast<BoundComparisonExpression>();
|
906
|
-
if (expr.Equals(comparison.right
|
906
|
+
if (expr.Equals(*comparison.right) && comparison.type != ExpressionType::COMPARE_NOTEQUAL) {
|
907
907
|
auto filter = std::move(remaining_filters[i]);
|
908
908
|
remaining_filters.erase(remaining_filters.begin() + i);
|
909
909
|
return filter;
|
@@ -479,15 +479,15 @@ optional_ptr<TableFilterSet> CardinalityEstimator::GetTableFilters(LogicalOperat
|
|
479
479
|
return get ? &get->table_filters : nullptr;
|
480
480
|
}
|
481
481
|
|
482
|
-
idx_t CardinalityEstimator::InspectConjunctionAND(idx_t cardinality, idx_t column_index, ConjunctionAndFilter
|
482
|
+
idx_t CardinalityEstimator::InspectConjunctionAND(idx_t cardinality, idx_t column_index, ConjunctionAndFilter &filter,
|
483
483
|
unique_ptr<BaseStatistics> base_stats) {
|
484
484
|
auto has_equality_filter = false;
|
485
485
|
auto cardinality_after_filters = cardinality;
|
486
|
-
for (auto &child_filter : filter
|
486
|
+
for (auto &child_filter : filter.child_filters) {
|
487
487
|
if (child_filter->filter_type != TableFilterType::CONSTANT_COMPARISON) {
|
488
488
|
continue;
|
489
489
|
}
|
490
|
-
auto comparison_filter = (
|
490
|
+
auto &comparison_filter = child_filter->Cast<ConstantFilter>();
|
491
491
|
if (comparison_filter.comparison_type != ExpressionType::COMPARE_EQUAL) {
|
492
492
|
continue;
|
493
493
|
}
|
@@ -510,15 +510,15 @@ idx_t CardinalityEstimator::InspectConjunctionAND(idx_t cardinality, idx_t colum
|
|
510
510
|
return cardinality_after_filters;
|
511
511
|
}
|
512
512
|
|
513
|
-
idx_t CardinalityEstimator::InspectConjunctionOR(idx_t cardinality, idx_t column_index, ConjunctionOrFilter
|
513
|
+
idx_t CardinalityEstimator::InspectConjunctionOR(idx_t cardinality, idx_t column_index, ConjunctionOrFilter &filter,
|
514
514
|
unique_ptr<BaseStatistics> base_stats) {
|
515
515
|
auto has_equality_filter = false;
|
516
516
|
auto cardinality_after_filters = cardinality;
|
517
|
-
for (auto &child_filter : filter
|
517
|
+
for (auto &child_filter : filter.child_filters) {
|
518
518
|
if (child_filter->filter_type != TableFilterType::CONSTANT_COMPARISON) {
|
519
519
|
continue;
|
520
520
|
}
|
521
|
-
auto comparison_filter = (
|
521
|
+
auto &comparison_filter = child_filter->Cast<ConstantFilter>();
|
522
522
|
if (comparison_filter.comparison_type == ExpressionType::COMPARE_EQUAL) {
|
523
523
|
auto column_count = cardinality_after_filters;
|
524
524
|
if (base_stats) {
|
@@ -549,14 +549,14 @@ idx_t CardinalityEstimator::InspectTableFilters(idx_t cardinality, LogicalOperat
|
|
549
549
|
column_statistics = get->function.statistics(context, &table_scan_bind_data, it.first);
|
550
550
|
}
|
551
551
|
if (it.second->filter_type == TableFilterType::CONJUNCTION_AND) {
|
552
|
-
auto &filter =
|
552
|
+
auto &filter = it.second->Cast<ConjunctionAndFilter>();
|
553
553
|
idx_t cardinality_with_and_filter =
|
554
|
-
InspectConjunctionAND(cardinality, it.first,
|
554
|
+
InspectConjunctionAND(cardinality, it.first, filter, std::move(column_statistics));
|
555
555
|
cardinality_after_filters = MinValue(cardinality_after_filters, cardinality_with_and_filter);
|
556
556
|
} else if (it.second->filter_type == TableFilterType::CONJUNCTION_OR) {
|
557
|
-
auto &filter =
|
557
|
+
auto &filter = it.second->Cast<ConjunctionOrFilter>();
|
558
558
|
idx_t cardinality_with_or_filter =
|
559
|
-
InspectConjunctionOR(cardinality, it.first,
|
559
|
+
InspectConjunctionOR(cardinality, it.first, filter, std::move(column_statistics));
|
560
560
|
cardinality_after_filters = MinValue(cardinality_after_filters, cardinality_with_or_filter);
|
561
561
|
}
|
562
562
|
}
|
@@ -24,13 +24,10 @@ namespace duckdb {
|
|
24
24
|
|
25
25
|
//! Returns true if A and B are disjoint, false otherwise
|
26
26
|
template <class T>
|
27
|
-
static bool Disjoint(unordered_set<T> &a, unordered_set<T> &b) {
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
}
|
32
|
-
}
|
33
|
-
return true;
|
27
|
+
static bool Disjoint(const unordered_set<T> &a, const unordered_set<T> &b) {
|
28
|
+
return std::all_of(a.begin(), a.end(), [&b](typename std::unordered_set<T>::const_reference entry) {
|
29
|
+
return b.find(entry) == b.end();
|
30
|
+
});
|
34
31
|
}
|
35
32
|
|
36
33
|
//! Extract the set of relations referred to inside an expression
|
@@ -19,7 +19,7 @@ bool ExpressionMatcher::Match(Expression &expr, vector<reference<Expression>> &b
|
|
19
19
|
}
|
20
20
|
|
21
21
|
bool ExpressionEqualityMatcher::Match(Expression &expr, vector<reference<Expression>> &bindings) {
|
22
|
-
if (!expr.Equals(
|
22
|
+
if (!expr.Equals(expression)) {
|
23
23
|
return false;
|
24
24
|
}
|
25
25
|
bindings.push_back(expr);
|
@@ -24,8 +24,8 @@ static void ReplaceExpressionBinding(vector<unique_ptr<Expression>> &proj_expres
|
|
24
24
|
BoundColumnRefExpression &colref = expr.Cast<BoundColumnRefExpression>();
|
25
25
|
// find the corresponding column index in the projection expressions
|
26
26
|
for (idx_t proj_idx = 0; proj_idx < proj_expressions.size(); proj_idx++) {
|
27
|
-
auto proj_expr = proj_expressions[proj_idx]
|
28
|
-
if (proj_expr
|
27
|
+
auto &proj_expr = *proj_expressions[proj_idx];
|
28
|
+
if (proj_expr.type == ExpressionType::BOUND_COLUMN_REF) {
|
29
29
|
if (colref.Equals(proj_expr)) {
|
30
30
|
colref.binding.table_index = proj_table_idx;
|
31
31
|
colref.binding.column_index = proj_idx;
|
@@ -39,12 +39,10 @@ unique_ptr<LogicalOperator> RegexRangeFilter::Rewrite(unique_ptr<LogicalOperator
|
|
39
39
|
}
|
40
40
|
auto filter_left = make_uniq<BoundComparisonExpression>(
|
41
41
|
ExpressionType::COMPARE_GREATERTHANOREQUALTO, func.children[0]->Copy(),
|
42
|
-
make_uniq<BoundConstantExpression>(
|
43
|
-
Value::BLOB((const_data_ptr_t)info.range_min.c_str(), info.range_min.size())));
|
42
|
+
make_uniq<BoundConstantExpression>(Value::BLOB_RAW(info.range_min)));
|
44
43
|
auto filter_right = make_uniq<BoundComparisonExpression>(
|
45
44
|
ExpressionType::COMPARE_LESSTHANOREQUALTO, func.children[0]->Copy(),
|
46
|
-
make_uniq<BoundConstantExpression>(
|
47
|
-
Value::BLOB((const_data_ptr_t)info.range_max.c_str(), info.range_max.size())));
|
45
|
+
make_uniq<BoundConstantExpression>(Value::BLOB_RAW(info.range_max)));
|
48
46
|
auto filter_expr = make_uniq<BoundConjunctionExpression>(ExpressionType::CONJUNCTION_AND,
|
49
47
|
std::move(filter_left), std::move(filter_right));
|
50
48
|
|
@@ -33,7 +33,7 @@ unique_ptr<Expression> DistributivityRule::ExtractExpression(BoundConjunctionExp
|
|
33
33
|
// AND, remove expression from the list
|
34
34
|
auto &and_expr = child->Cast<BoundConjunctionExpression>();
|
35
35
|
for (idx_t i = 0; i < and_expr.children.size(); i++) {
|
36
|
-
if (
|
36
|
+
if (and_expr.children[i]->Equals(expr)) {
|
37
37
|
result = std::move(and_expr.children[i]);
|
38
38
|
and_expr.children.erase(and_expr.children.begin() + i);
|
39
39
|
break;
|
@@ -45,7 +45,7 @@ unique_ptr<Expression> DistributivityRule::ExtractExpression(BoundConjunctionExp
|
|
45
45
|
} else {
|
46
46
|
// not an AND node! remove the entire expression
|
47
47
|
// this happens in the case of e.g. (X AND B) OR X
|
48
|
-
D_ASSERT(
|
48
|
+
D_ASSERT(child->Equals(expr));
|
49
49
|
result = std::move(child);
|
50
50
|
conj.children[idx] = nullptr;
|
51
51
|
}
|
@@ -161,15 +161,15 @@ void StatisticsPropagator::UpdateFilterStatistics(Expression &left, Expression &
|
|
161
161
|
SetStatisticsNotNull((right.Cast<BoundColumnRefExpression>()).binding);
|
162
162
|
}
|
163
163
|
// check if this is a comparison between a constant and a column ref
|
164
|
-
BoundConstantExpression
|
165
|
-
BoundColumnRefExpression
|
164
|
+
optional_ptr<BoundConstantExpression> constant;
|
165
|
+
optional_ptr<BoundColumnRefExpression> columnref;
|
166
166
|
if (left.type == ExpressionType::VALUE_CONSTANT && right.type == ExpressionType::BOUND_COLUMN_REF) {
|
167
|
-
constant = (
|
168
|
-
columnref = (
|
167
|
+
constant = &left.Cast<BoundConstantExpression>();
|
168
|
+
columnref = &right.Cast<BoundColumnRefExpression>();
|
169
169
|
comparison_type = FlipComparisonExpression(comparison_type);
|
170
170
|
} else if (left.type == ExpressionType::BOUND_COLUMN_REF && right.type == ExpressionType::VALUE_CONSTANT) {
|
171
|
-
columnref = (
|
172
|
-
constant = (
|
171
|
+
columnref = &left.Cast<BoundColumnRefExpression>();
|
172
|
+
constant = &right.Cast<BoundConstantExpression>();
|
173
173
|
} else if (left.type == ExpressionType::BOUND_COLUMN_REF && right.type == ExpressionType::BOUND_COLUMN_REF) {
|
174
174
|
// comparison between two column refs
|
175
175
|
auto &left_column_ref = left.Cast<BoundColumnRefExpression>();
|
@@ -14,14 +14,14 @@ void StatisticsPropagator::UpdateFilterStatistics(BaseStatistics &input, TableFi
|
|
14
14
|
// FIXME: update stats...
|
15
15
|
switch (filter.filter_type) {
|
16
16
|
case TableFilterType::CONJUNCTION_AND: {
|
17
|
-
auto &conjunction_and = (
|
17
|
+
auto &conjunction_and = filter.Cast<ConjunctionAndFilter>();
|
18
18
|
for (auto &child_filter : conjunction_and.child_filters) {
|
19
19
|
UpdateFilterStatistics(input, *child_filter);
|
20
20
|
}
|
21
21
|
break;
|
22
22
|
}
|
23
23
|
case TableFilterType::CONSTANT_COMPARISON: {
|
24
|
-
auto &constant_filter = (
|
24
|
+
auto &constant_filter = filter.Cast<ConstantFilter>();
|
25
25
|
UpdateFilterStatistics(input, constant_filter.comparison_type, constant_filter.constant);
|
26
26
|
break;
|
27
27
|
}
|