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
@@ -48,12 +48,12 @@ public:
|
|
48
48
|
template <class TARGET>
|
49
49
|
TARGET &Cast() {
|
50
50
|
D_ASSERT(dynamic_cast<TARGET *>(this));
|
51
|
-
return
|
51
|
+
return reinterpret_cast<TARGET &>(*this);
|
52
52
|
}
|
53
53
|
template <class TARGET>
|
54
54
|
const TARGET &Cast() const {
|
55
55
|
D_ASSERT(dynamic_cast<const TARGET *>(this));
|
56
|
-
return
|
56
|
+
return reinterpret_cast<const TARGET &>(*this);
|
57
57
|
}
|
58
58
|
};
|
59
59
|
|
@@ -65,12 +65,12 @@ public:
|
|
65
65
|
template <class TARGET>
|
66
66
|
TARGET &Cast() {
|
67
67
|
D_ASSERT(dynamic_cast<TARGET *>(this));
|
68
|
-
return
|
68
|
+
return reinterpret_cast<TARGET &>(*this);
|
69
69
|
}
|
70
70
|
template <class TARGET>
|
71
71
|
const TARGET &Cast() const {
|
72
72
|
D_ASSERT(dynamic_cast<const TARGET *>(this));
|
73
|
-
return
|
73
|
+
return reinterpret_cast<const TARGET &>(*this);
|
74
74
|
}
|
75
75
|
};
|
76
76
|
|
@@ -86,12 +86,12 @@ public:
|
|
86
86
|
template <class TARGET>
|
87
87
|
TARGET &Cast() {
|
88
88
|
D_ASSERT(dynamic_cast<TARGET *>(this));
|
89
|
-
return
|
89
|
+
return reinterpret_cast<TARGET &>(*this);
|
90
90
|
}
|
91
91
|
template <class TARGET>
|
92
92
|
const TARGET &Cast() const {
|
93
93
|
D_ASSERT(dynamic_cast<const TARGET *>(this));
|
94
|
-
return
|
94
|
+
return reinterpret_cast<const TARGET &>(*this);
|
95
95
|
}
|
96
96
|
};
|
97
97
|
|
@@ -106,12 +106,12 @@ public:
|
|
106
106
|
template <class TARGET>
|
107
107
|
TARGET &Cast() {
|
108
108
|
D_ASSERT(dynamic_cast<TARGET *>(this));
|
109
|
-
return
|
109
|
+
return reinterpret_cast<TARGET &>(*this);
|
110
110
|
}
|
111
111
|
template <class TARGET>
|
112
112
|
const TARGET &Cast() const {
|
113
113
|
D_ASSERT(dynamic_cast<const TARGET *>(this));
|
114
|
-
return
|
114
|
+
return reinterpret_cast<const TARGET &>(*this);
|
115
115
|
}
|
116
116
|
};
|
117
117
|
|
@@ -127,12 +127,12 @@ public:
|
|
127
127
|
template <class TARGET>
|
128
128
|
TARGET &Cast() {
|
129
129
|
D_ASSERT(dynamic_cast<TARGET *>(this));
|
130
|
-
return
|
130
|
+
return reinterpret_cast<TARGET &>(*this);
|
131
131
|
}
|
132
132
|
template <class TARGET>
|
133
133
|
const TARGET &Cast() const {
|
134
134
|
D_ASSERT(dynamic_cast<const TARGET *>(this));
|
135
|
-
return
|
135
|
+
return reinterpret_cast<const TARGET &>(*this);
|
136
136
|
}
|
137
137
|
};
|
138
138
|
|
@@ -144,12 +144,12 @@ public:
|
|
144
144
|
template <class TARGET>
|
145
145
|
TARGET &Cast() {
|
146
146
|
D_ASSERT(dynamic_cast<TARGET *>(this));
|
147
|
-
return
|
147
|
+
return reinterpret_cast<TARGET &>(*this);
|
148
148
|
}
|
149
149
|
template <class TARGET>
|
150
150
|
const TARGET &Cast() const {
|
151
151
|
D_ASSERT(dynamic_cast<const TARGET *>(this));
|
152
|
-
return
|
152
|
+
return reinterpret_cast<const TARGET &>(*this);
|
153
153
|
}
|
154
154
|
};
|
155
155
|
|
@@ -8,40 +8,13 @@
|
|
8
8
|
|
9
9
|
#pragma once
|
10
10
|
|
11
|
-
#include "duckdb/function/
|
12
|
-
#include "duckdb/storage/statistics/base_statistics.hpp"
|
13
|
-
#include "duckdb/storage/statistics/node_statistics.hpp"
|
11
|
+
#include "duckdb/function/aggregate_state.hpp"
|
14
12
|
#include "duckdb/planner/bound_result_modifier.hpp"
|
15
13
|
#include "duckdb/planner/expression.hpp"
|
16
14
|
#include "duckdb/common/vector_operations/aggregate_executor.hpp"
|
17
15
|
|
18
16
|
namespace duckdb {
|
19
17
|
|
20
|
-
enum class AggregateType : uint8_t { NON_DISTINCT = 1, DISTINCT = 2 };
|
21
|
-
//! Whether or not the input order influences the result of the aggregate
|
22
|
-
enum class AggregateOrderDependent : uint8_t { ORDER_DEPENDENT = 1, NOT_ORDER_DEPENDENT = 2 };
|
23
|
-
|
24
|
-
class BoundAggregateExpression;
|
25
|
-
|
26
|
-
struct AggregateInputData {
|
27
|
-
AggregateInputData(FunctionData *bind_data_p, Allocator &allocator_p)
|
28
|
-
: bind_data(bind_data_p), allocator(allocator_p) {
|
29
|
-
}
|
30
|
-
FunctionData *bind_data;
|
31
|
-
Allocator &allocator;
|
32
|
-
};
|
33
|
-
|
34
|
-
struct AggregateStatisticsInput {
|
35
|
-
AggregateStatisticsInput(FunctionData *bind_data_p, vector<BaseStatistics> &child_stats_p,
|
36
|
-
NodeStatistics *node_stats_p)
|
37
|
-
: bind_data(bind_data_p), child_stats(child_stats_p), node_stats(node_stats_p) {
|
38
|
-
}
|
39
|
-
|
40
|
-
FunctionData *bind_data;
|
41
|
-
vector<BaseStatistics> &child_stats;
|
42
|
-
NodeStatistics *node_stats;
|
43
|
-
};
|
44
|
-
|
45
18
|
//! The type used for sizing hashed aggregate function states
|
46
19
|
typedef idx_t (*aggregate_size_t)();
|
47
20
|
//! The type used for initializing hashed aggregate function states
|
@@ -215,7 +188,7 @@ public:
|
|
215
188
|
|
216
189
|
template <class STATE, class OP>
|
217
190
|
static void StateInitialize(data_ptr_t state) {
|
218
|
-
OP::Initialize(
|
191
|
+
OP::Initialize(*reinterpret_cast<STATE *>(state));
|
219
192
|
}
|
220
193
|
|
221
194
|
template <class STATE, class OP>
|
@@ -281,6 +254,12 @@ public:
|
|
281
254
|
AggregateExecutor::Finalize<STATE, RESULT_TYPE, OP>(states, aggr_input_data, result, count, offset);
|
282
255
|
}
|
283
256
|
|
257
|
+
template <class STATE, class OP>
|
258
|
+
static void StateVoidFinalize(Vector &states, AggregateInputData &aggr_input_data, Vector &result, idx_t count,
|
259
|
+
idx_t offset) {
|
260
|
+
AggregateExecutor::VoidFinalize<STATE, OP>(states, aggr_input_data, result, count, offset);
|
261
|
+
}
|
262
|
+
|
284
263
|
template <class STATE, class OP>
|
285
264
|
static void StateDestroy(Vector &states, AggregateInputData &aggr_input_data, idx_t count) {
|
286
265
|
AggregateExecutor::Destroy<STATE, OP>(states, aggr_input_data, count);
|
@@ -0,0 +1,95 @@
|
|
1
|
+
//===----------------------------------------------------------------------===//
|
2
|
+
// DuckDB
|
3
|
+
//
|
4
|
+
// duckdb/function/aggregate_state.hpp
|
5
|
+
//
|
6
|
+
//
|
7
|
+
//===----------------------------------------------------------------------===//
|
8
|
+
|
9
|
+
#pragma once
|
10
|
+
|
11
|
+
#include "duckdb/function/function.hpp"
|
12
|
+
#include "duckdb/storage/statistics/base_statistics.hpp"
|
13
|
+
#include "duckdb/storage/statistics/node_statistics.hpp"
|
14
|
+
|
15
|
+
namespace duckdb {
|
16
|
+
|
17
|
+
enum class AggregateType : uint8_t { NON_DISTINCT = 1, DISTINCT = 2 };
|
18
|
+
//! Whether or not the input order influences the result of the aggregate
|
19
|
+
enum class AggregateOrderDependent : uint8_t { ORDER_DEPENDENT = 1, NOT_ORDER_DEPENDENT = 2 };
|
20
|
+
|
21
|
+
class BoundAggregateExpression;
|
22
|
+
|
23
|
+
struct AggregateInputData {
|
24
|
+
AggregateInputData(optional_ptr<FunctionData> bind_data_p, Allocator &allocator_p)
|
25
|
+
: bind_data(bind_data_p), allocator(allocator_p) {
|
26
|
+
}
|
27
|
+
optional_ptr<FunctionData> bind_data;
|
28
|
+
Allocator &allocator;
|
29
|
+
};
|
30
|
+
|
31
|
+
struct AggregateUnaryInput {
|
32
|
+
AggregateUnaryInput(AggregateInputData &input_p, ValidityMask &input_mask_p)
|
33
|
+
: input(input_p), input_mask(input_mask_p), input_idx(0) {
|
34
|
+
}
|
35
|
+
|
36
|
+
AggregateInputData &input;
|
37
|
+
ValidityMask &input_mask;
|
38
|
+
idx_t input_idx;
|
39
|
+
|
40
|
+
inline bool RowIsValid() {
|
41
|
+
return input_mask.RowIsValid(input_idx);
|
42
|
+
}
|
43
|
+
};
|
44
|
+
|
45
|
+
struct AggregateBinaryInput {
|
46
|
+
AggregateBinaryInput(AggregateInputData &input_p, ValidityMask &left_mask_p, ValidityMask &right_mask_p)
|
47
|
+
: input(input_p), left_mask(left_mask_p), right_mask(right_mask_p) {
|
48
|
+
}
|
49
|
+
|
50
|
+
AggregateInputData &input;
|
51
|
+
ValidityMask &left_mask;
|
52
|
+
ValidityMask &right_mask;
|
53
|
+
idx_t lidx;
|
54
|
+
idx_t ridx;
|
55
|
+
};
|
56
|
+
|
57
|
+
struct AggregateFinalizeData {
|
58
|
+
AggregateFinalizeData(Vector &result_p, AggregateInputData &input_p)
|
59
|
+
: result(result_p), input(input_p), result_idx(0) {
|
60
|
+
}
|
61
|
+
|
62
|
+
Vector &result;
|
63
|
+
AggregateInputData &input;
|
64
|
+
idx_t result_idx;
|
65
|
+
|
66
|
+
inline void ReturnNull() {
|
67
|
+
switch (result.GetVectorType()) {
|
68
|
+
case VectorType::FLAT_VECTOR:
|
69
|
+
FlatVector::SetNull(result, result_idx, true);
|
70
|
+
break;
|
71
|
+
case VectorType::CONSTANT_VECTOR:
|
72
|
+
ConstantVector::SetNull(result, true);
|
73
|
+
break;
|
74
|
+
default:
|
75
|
+
throw InternalException("Invalid result vector type for aggregate");
|
76
|
+
}
|
77
|
+
}
|
78
|
+
|
79
|
+
inline string_t ReturnString(string_t value) {
|
80
|
+
return StringVector::AddStringOrBlob(result, value);
|
81
|
+
}
|
82
|
+
};
|
83
|
+
|
84
|
+
struct AggregateStatisticsInput {
|
85
|
+
AggregateStatisticsInput(optional_ptr<FunctionData> bind_data_p, vector<BaseStatistics> &child_stats_p,
|
86
|
+
optional_ptr<NodeStatistics> node_stats_p)
|
87
|
+
: bind_data(bind_data_p), child_stats(child_stats_p), node_stats(node_stats_p) {
|
88
|
+
}
|
89
|
+
|
90
|
+
optional_ptr<FunctionData> bind_data;
|
91
|
+
vector<BaseStatistics> &child_stats;
|
92
|
+
optional_ptr<NodeStatistics> node_stats;
|
93
|
+
};
|
94
|
+
|
95
|
+
} // namespace duckdb
|
@@ -22,6 +22,17 @@ struct FunctionLocalState;
|
|
22
22
|
//! Extra data that can be attached to a bind function of a cast, and is available during binding
|
23
23
|
struct BindCastInfo {
|
24
24
|
DUCKDB_API virtual ~BindCastInfo();
|
25
|
+
|
26
|
+
template <class TARGET>
|
27
|
+
TARGET &Cast() {
|
28
|
+
D_ASSERT(dynamic_cast<TARGET *>(this));
|
29
|
+
return reinterpret_cast<TARGET &>(*this);
|
30
|
+
}
|
31
|
+
template <class TARGET>
|
32
|
+
const TARGET &Cast() const {
|
33
|
+
D_ASSERT(dynamic_cast<const TARGET *>(this));
|
34
|
+
return reinterpret_cast<const TARGET &>(*this);
|
35
|
+
}
|
25
36
|
};
|
26
37
|
|
27
38
|
//! Extra data that can be returned by the bind of a cast, and is available during execution of a cast
|
@@ -33,12 +44,12 @@ struct BoundCastData {
|
|
33
44
|
template <class TARGET>
|
34
45
|
TARGET &Cast() {
|
35
46
|
D_ASSERT(dynamic_cast<TARGET *>(this));
|
36
|
-
return
|
47
|
+
return reinterpret_cast<TARGET &>(*this);
|
37
48
|
}
|
38
49
|
template <class TARGET>
|
39
50
|
const TARGET &Cast() const {
|
40
51
|
D_ASSERT(dynamic_cast<const TARGET *>(this));
|
41
|
-
return
|
52
|
+
return reinterpret_cast<const TARGET &>(*this);
|
42
53
|
}
|
43
54
|
};
|
44
55
|
|
@@ -201,15 +201,15 @@ struct VectorCastHelpers {
|
|
201
201
|
struct VectorStringToList {
|
202
202
|
static idx_t CountPartsList(const string_t &input);
|
203
203
|
static bool SplitStringList(const string_t &input, string_t *child_data, idx_t &child_start, Vector &child);
|
204
|
-
static bool StringToNestedTypeCastLoop(string_t *source_data, ValidityMask &source_mask, Vector &result,
|
204
|
+
static bool StringToNestedTypeCastLoop(const string_t *source_data, ValidityMask &source_mask, Vector &result,
|
205
205
|
ValidityMask &result_mask, idx_t count, CastParameters ¶meters,
|
206
206
|
const SelectionVector *sel);
|
207
207
|
};
|
208
208
|
|
209
209
|
struct VectorStringToStruct {
|
210
|
-
static bool SplitStruct(string_t &input, vector<unique_ptr<Vector>> &varchar_vectors, idx_t &row_idx,
|
210
|
+
static bool SplitStruct(const string_t &input, vector<unique_ptr<Vector>> &varchar_vectors, idx_t &row_idx,
|
211
211
|
string_map_t<idx_t> &child_names, vector<ValidityMask *> &child_masks);
|
212
|
-
static bool StringToNestedTypeCastLoop(string_t *source_data, ValidityMask &source_mask, Vector &result,
|
212
|
+
static bool StringToNestedTypeCastLoop(const string_t *source_data, ValidityMask &source_mask, Vector &result,
|
213
213
|
ValidityMask &result_mask, idx_t count, CastParameters ¶meters,
|
214
214
|
const SelectionVector *sel);
|
215
215
|
};
|
@@ -218,7 +218,7 @@ struct VectorStringToMap {
|
|
218
218
|
static idx_t CountPartsMap(const string_t &input);
|
219
219
|
static bool SplitStringMap(const string_t &input, string_t *child_key_data, string_t *child_val_data,
|
220
220
|
idx_t &child_start, Vector &varchar_key, Vector &varchar_val);
|
221
|
-
static bool StringToNestedTypeCastLoop(string_t *source_data, ValidityMask &source_mask, Vector &result,
|
221
|
+
static bool StringToNestedTypeCastLoop(const string_t *source_data, ValidityMask &source_mask, Vector &result,
|
222
222
|
ValidityMask &result_mask, idx_t count, CastParameters ¶meters,
|
223
223
|
const SelectionVector *sel);
|
224
224
|
};
|
@@ -29,16 +29,49 @@ struct SegmentScanState;
|
|
29
29
|
struct AnalyzeState {
|
30
30
|
virtual ~AnalyzeState() {
|
31
31
|
}
|
32
|
+
|
33
|
+
template <class TARGET>
|
34
|
+
TARGET &Cast() {
|
35
|
+
D_ASSERT(dynamic_cast<TARGET *>(this));
|
36
|
+
return reinterpret_cast<TARGET &>(*this);
|
37
|
+
}
|
38
|
+
template <class TARGET>
|
39
|
+
const TARGET &Cast() const {
|
40
|
+
D_ASSERT(dynamic_cast<const TARGET *>(this));
|
41
|
+
return reinterpret_cast<const TARGET &>(*this);
|
42
|
+
}
|
32
43
|
};
|
33
44
|
|
34
45
|
struct CompressionState {
|
35
46
|
virtual ~CompressionState() {
|
36
47
|
}
|
48
|
+
|
49
|
+
template <class TARGET>
|
50
|
+
TARGET &Cast() {
|
51
|
+
D_ASSERT(dynamic_cast<TARGET *>(this));
|
52
|
+
return reinterpret_cast<TARGET &>(*this);
|
53
|
+
}
|
54
|
+
template <class TARGET>
|
55
|
+
const TARGET &Cast() const {
|
56
|
+
D_ASSERT(dynamic_cast<const TARGET *>(this));
|
57
|
+
return reinterpret_cast<const TARGET &>(*this);
|
58
|
+
}
|
37
59
|
};
|
38
60
|
|
39
61
|
struct CompressedSegmentState {
|
40
62
|
virtual ~CompressedSegmentState() {
|
41
63
|
}
|
64
|
+
|
65
|
+
template <class TARGET>
|
66
|
+
TARGET &Cast() {
|
67
|
+
D_ASSERT(dynamic_cast<TARGET *>(this));
|
68
|
+
return reinterpret_cast<TARGET &>(*this);
|
69
|
+
}
|
70
|
+
template <class TARGET>
|
71
|
+
const TARGET &Cast() const {
|
72
|
+
D_ASSERT(dynamic_cast<const TARGET *>(this));
|
73
|
+
return reinterpret_cast<const TARGET &>(*this);
|
74
|
+
}
|
42
75
|
};
|
43
76
|
|
44
77
|
struct CompressionAppendState {
|
@@ -48,6 +81,17 @@ struct CompressionAppendState {
|
|
48
81
|
}
|
49
82
|
|
50
83
|
BufferHandle handle;
|
84
|
+
|
85
|
+
template <class TARGET>
|
86
|
+
TARGET &Cast() {
|
87
|
+
D_ASSERT(dynamic_cast<TARGET *>(this));
|
88
|
+
return reinterpret_cast<TARGET &>(*this);
|
89
|
+
}
|
90
|
+
template <class TARGET>
|
91
|
+
const TARGET &Cast() const {
|
92
|
+
D_ASSERT(dynamic_cast<const TARGET *>(this));
|
93
|
+
return reinterpret_cast<const TARGET &>(*this);
|
94
|
+
}
|
51
95
|
};
|
52
96
|
|
53
97
|
//===--------------------------------------------------------------------===//
|
@@ -27,12 +27,12 @@ struct LocalFunctionData {
|
|
27
27
|
template <class TARGET>
|
28
28
|
TARGET &Cast() {
|
29
29
|
D_ASSERT(dynamic_cast<TARGET *>(this));
|
30
|
-
return
|
30
|
+
return reinterpret_cast<TARGET &>(*this);
|
31
31
|
}
|
32
32
|
template <class TARGET>
|
33
33
|
const TARGET &Cast() const {
|
34
34
|
D_ASSERT(dynamic_cast<const TARGET *>(this));
|
35
|
-
return
|
35
|
+
return reinterpret_cast<const TARGET &>(*this);
|
36
36
|
}
|
37
37
|
};
|
38
38
|
|
@@ -43,12 +43,12 @@ struct GlobalFunctionData {
|
|
43
43
|
template <class TARGET>
|
44
44
|
TARGET &Cast() {
|
45
45
|
D_ASSERT(dynamic_cast<TARGET *>(this));
|
46
|
-
return
|
46
|
+
return reinterpret_cast<TARGET &>(*this);
|
47
47
|
}
|
48
48
|
template <class TARGET>
|
49
49
|
const TARGET &Cast() const {
|
50
50
|
D_ASSERT(dynamic_cast<const TARGET *>(this));
|
51
|
-
return
|
51
|
+
return reinterpret_cast<const TARGET &>(*this);
|
52
52
|
}
|
53
53
|
};
|
54
54
|
|
@@ -59,12 +59,12 @@ struct PreparedBatchData {
|
|
59
59
|
template <class TARGET>
|
60
60
|
TARGET &Cast() {
|
61
61
|
D_ASSERT(dynamic_cast<TARGET *>(this));
|
62
|
-
return
|
62
|
+
return reinterpret_cast<TARGET &>(*this);
|
63
63
|
}
|
64
64
|
template <class TARGET>
|
65
65
|
const TARGET &Cast() const {
|
66
66
|
D_ASSERT(dynamic_cast<const TARGET *>(this));
|
67
|
-
return
|
67
|
+
return reinterpret_cast<const TARGET &>(*this);
|
68
68
|
}
|
69
69
|
};
|
70
70
|
|
@@ -49,17 +49,17 @@ struct FunctionData {
|
|
49
49
|
template <class TARGET>
|
50
50
|
TARGET &Cast() {
|
51
51
|
D_ASSERT(dynamic_cast<TARGET *>(this));
|
52
|
-
return
|
52
|
+
return reinterpret_cast<TARGET &>(*this);
|
53
53
|
}
|
54
54
|
template <class TARGET>
|
55
55
|
const TARGET &Cast() const {
|
56
56
|
D_ASSERT(dynamic_cast<const TARGET *>(this));
|
57
|
-
return
|
57
|
+
return reinterpret_cast<const TARGET &>(*this);
|
58
58
|
}
|
59
59
|
// FIXME: this function should be removed in the future
|
60
60
|
template <class TARGET>
|
61
61
|
TARGET &CastNoConst() const {
|
62
|
-
return (TARGET
|
62
|
+
return const_cast<TARGET &>(reinterpret_cast<const TARGET &>(*this));
|
63
63
|
}
|
64
64
|
};
|
65
65
|
|
@@ -57,7 +57,7 @@ public:
|
|
57
57
|
if (type != TARGET::TYPE) {
|
58
58
|
throw InternalException("Failed to cast macro to type - macro type mismatch");
|
59
59
|
}
|
60
|
-
return
|
60
|
+
return reinterpret_cast<TARGET &>(*this);
|
61
61
|
}
|
62
62
|
|
63
63
|
template <class TARGET>
|
@@ -65,7 +65,7 @@ public:
|
|
65
65
|
if (type != TARGET::TYPE) {
|
66
66
|
throw InternalException("Failed to cast macro to type - macro type mismatch");
|
67
67
|
}
|
68
|
-
return
|
68
|
+
return reinterpret_cast<const TARGET &>(*this);
|
69
69
|
}
|
70
70
|
};
|
71
71
|
|
@@ -27,14 +27,14 @@ static void TemplatedContainsOrPosition(DataChunk &args, Vector &result, bool is
|
|
27
27
|
|
28
28
|
UnifiedVectorFormat list_data;
|
29
29
|
list.ToUnifiedFormat(count, list_data);
|
30
|
-
auto list_entries = (
|
30
|
+
auto list_entries = UnifiedVectorFormat::GetData<list_entry_t>(list_data);
|
31
31
|
|
32
32
|
UnifiedVectorFormat value_data;
|
33
33
|
value_vector.ToUnifiedFormat(count, value_data);
|
34
34
|
|
35
35
|
// not required for a comparison of nested types
|
36
|
-
auto child_value = (
|
37
|
-
auto values = (
|
36
|
+
auto child_value = UnifiedVectorFormat::GetData<CHILD_TYPE>(child_data);
|
37
|
+
auto values = UnifiedVectorFormat::GetData<CHILD_TYPE>(value_data);
|
38
38
|
|
39
39
|
for (idx_t i = 0; i < count; i++) {
|
40
40
|
auto list_index = list_data.sel->get_index(i);
|
@@ -25,12 +25,12 @@ struct FunctionLocalState {
|
|
25
25
|
template <class TARGET>
|
26
26
|
TARGET &Cast() {
|
27
27
|
D_ASSERT(dynamic_cast<TARGET *>(this));
|
28
|
-
return
|
28
|
+
return reinterpret_cast<TARGET &>(*this);
|
29
29
|
}
|
30
30
|
template <class TARGET>
|
31
31
|
const TARGET &Cast() const {
|
32
32
|
D_ASSERT(dynamic_cast<const TARGET *>(this));
|
33
|
-
return
|
33
|
+
return reinterpret_cast<const TARGET &>(*this);
|
34
34
|
}
|
35
35
|
};
|
36
36
|
|
@@ -31,12 +31,12 @@ struct TableFunctionInfo {
|
|
31
31
|
template <class TARGET>
|
32
32
|
TARGET &Cast() {
|
33
33
|
D_ASSERT(dynamic_cast<TARGET *>(this));
|
34
|
-
return
|
34
|
+
return reinterpret_cast<TARGET &>(*this);
|
35
35
|
}
|
36
36
|
template <class TARGET>
|
37
37
|
const TARGET &Cast() const {
|
38
38
|
D_ASSERT(dynamic_cast<const TARGET *>(this));
|
39
|
-
return
|
39
|
+
return reinterpret_cast<const TARGET &>(*this);
|
40
40
|
}
|
41
41
|
};
|
42
42
|
|
@@ -55,12 +55,12 @@ public:
|
|
55
55
|
template <class TARGET>
|
56
56
|
TARGET &Cast() {
|
57
57
|
D_ASSERT(dynamic_cast<TARGET *>(this));
|
58
|
-
return
|
58
|
+
return reinterpret_cast<TARGET &>(*this);
|
59
59
|
}
|
60
60
|
template <class TARGET>
|
61
61
|
const TARGET &Cast() const {
|
62
62
|
D_ASSERT(dynamic_cast<const TARGET *>(this));
|
63
|
-
return
|
63
|
+
return reinterpret_cast<const TARGET &>(*this);
|
64
64
|
}
|
65
65
|
};
|
66
66
|
|
@@ -70,12 +70,12 @@ struct LocalTableFunctionState {
|
|
70
70
|
template <class TARGET>
|
71
71
|
TARGET &Cast() {
|
72
72
|
D_ASSERT(dynamic_cast<TARGET *>(this));
|
73
|
-
return
|
73
|
+
return reinterpret_cast<TARGET &>(*this);
|
74
74
|
}
|
75
75
|
template <class TARGET>
|
76
76
|
const TARGET &Cast() const {
|
77
77
|
D_ASSERT(dynamic_cast<const TARGET *>(this));
|
78
|
-
return
|
78
|
+
return reinterpret_cast<const TARGET &>(*this);
|
79
79
|
}
|
80
80
|
};
|
81
81
|
|
@@ -82,7 +82,7 @@ struct ToCStringCastWrapper {
|
|
82
82
|
auto result_size = result_string.GetSize();
|
83
83
|
auto result_data = result_string.GetData();
|
84
84
|
|
85
|
-
char *allocated_data = (
|
85
|
+
char *allocated_data = char_ptr_cast(duckdb_malloc(result_size + 1));
|
86
86
|
memcpy(allocated_data, result_data, result_size);
|
87
87
|
allocated_data[result_size] = '\0';
|
88
88
|
result.data = allocated_data;
|
@@ -17,6 +17,9 @@ namespace duckdb {
|
|
17
17
|
class ClientContext;
|
18
18
|
|
19
19
|
class MaterializedQueryResult : public QueryResult {
|
20
|
+
public:
|
21
|
+
static constexpr const QueryResultType TYPE = QueryResultType::MATERIALIZED_RESULT;
|
22
|
+
|
20
23
|
public:
|
21
24
|
friend class ClientContext;
|
22
25
|
//! Creates a successful query result with the specified names and types
|
@@ -20,6 +20,9 @@ class PreparedStatementData;
|
|
20
20
|
class PendingQueryResult : public BaseQueryResult {
|
21
21
|
friend class ClientContext;
|
22
22
|
|
23
|
+
public:
|
24
|
+
static constexpr const QueryResultType TYPE = QueryResultType::PENDING_RESULT;
|
25
|
+
|
23
26
|
public:
|
24
27
|
DUCKDB_API PendingQueryResult(shared_ptr<ClientContext> context, PreparedStatementData &statement,
|
25
28
|
vector<LogicalType> types, bool allow_stream_result);
|
@@ -89,6 +89,23 @@ public:
|
|
89
89
|
//! To comply, we use the following variable to store the current chunk, and it's position.
|
90
90
|
CurrentChunk current_chunk;
|
91
91
|
|
92
|
+
public:
|
93
|
+
template <class TARGET>
|
94
|
+
TARGET &Cast() {
|
95
|
+
if (type != TARGET::TYPE) {
|
96
|
+
throw InternalException("Failed to cast query result to type - query result type mismatch");
|
97
|
+
}
|
98
|
+
return reinterpret_cast<TARGET &>(*this);
|
99
|
+
}
|
100
|
+
|
101
|
+
template <class TARGET>
|
102
|
+
const TARGET &Cast() const {
|
103
|
+
if (type != TARGET::TYPE) {
|
104
|
+
throw InternalException("Failed to cast query result to type - query result type mismatch");
|
105
|
+
}
|
106
|
+
return reinterpret_cast<const TARGET &>(*this);
|
107
|
+
}
|
108
|
+
|
92
109
|
public:
|
93
110
|
//! Returns the name of the column for the given index
|
94
111
|
DUCKDB_API const string &ColumnName(idx_t index) const;
|
@@ -163,6 +163,18 @@ public:
|
|
163
163
|
|
164
164
|
protected:
|
165
165
|
DUCKDB_API string RenderWhitespace(idx_t depth);
|
166
|
+
|
167
|
+
public:
|
168
|
+
template <class TARGET>
|
169
|
+
TARGET &Cast() {
|
170
|
+
D_ASSERT(dynamic_cast<TARGET *>(this));
|
171
|
+
return reinterpret_cast<TARGET &>(*this);
|
172
|
+
}
|
173
|
+
template <class TARGET>
|
174
|
+
const TARGET &Cast() const {
|
175
|
+
D_ASSERT(dynamic_cast<const TARGET *>(this));
|
176
|
+
return reinterpret_cast<const TARGET &>(*this);
|
177
|
+
}
|
166
178
|
};
|
167
179
|
|
168
180
|
} // namespace duckdb
|
@@ -22,6 +22,9 @@ class PreparedStatementData;
|
|
22
22
|
class StreamQueryResult : public QueryResult {
|
23
23
|
friend class ClientContext;
|
24
24
|
|
25
|
+
public:
|
26
|
+
static constexpr const QueryResultType TYPE = QueryResultType::STREAM_RESULT;
|
27
|
+
|
25
28
|
public:
|
26
29
|
//! Create a successful StreamQueryResult. StreamQueryResults should always be successful initially (it makes no
|
27
30
|
//! sense to stream an error).
|
@@ -111,9 +111,9 @@ private:
|
|
111
111
|
void AddRelationTdom(FilterInfo &filter_info);
|
112
112
|
bool EmptyFilter(FilterInfo &filter_info);
|
113
113
|
|
114
|
-
idx_t InspectConjunctionAND(idx_t cardinality, idx_t column_index, ConjunctionAndFilter
|
114
|
+
idx_t InspectConjunctionAND(idx_t cardinality, idx_t column_index, ConjunctionAndFilter &fil,
|
115
115
|
unique_ptr<BaseStatistics> base_stats);
|
116
|
-
idx_t InspectConjunctionOR(idx_t cardinality, idx_t column_index, ConjunctionOrFilter
|
116
|
+
idx_t InspectConjunctionOR(idx_t cardinality, idx_t column_index, ConjunctionOrFilter &fil,
|
117
117
|
unique_ptr<BaseStatistics> base_stats);
|
118
118
|
idx_t InspectTableFilters(idx_t cardinality, LogicalOperator &op, TableFilterSet &table_filters, idx_t table_index);
|
119
119
|
};
|