duckdb 0.8.1-dev51.0 → 0.8.1-dev96.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 +52 -51
- 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/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_set.cpp +1 -1
- package/src/duckdb/src/catalog/dependency_manager.cpp +2 -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 +98 -101
- package/src/duckdb/src/common/types/vector_cache.cpp +6 -6
- package/src/duckdb/src/common/types/vector_constants.cpp +2 -1
- package/src/duckdb/src/common/types.cpp +44 -33
- package/src/duckdb/src/common/vector_operations/boolean_operators.cpp +2 -2
- package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +12 -12
- package/src/duckdb/src/common/vector_operations/vector_hash.cpp +13 -11
- package/src/duckdb/src/common/vector_operations/vector_storage.cpp +1 -1
- package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +3 -3
- package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +3 -3
- package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +4 -4
- package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +12 -11
- package/src/duckdb/src/core_functions/aggregate/distributive/bool.cpp +3 -3
- package/src/duckdb/src/core_functions/aggregate/distributive/entropy.cpp +3 -3
- package/src/duckdb/src/core_functions/aggregate/distributive/kurtosis.cpp +2 -2
- package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +7 -7
- package/src/duckdb/src/core_functions/aggregate/distributive/product.cpp +2 -2
- package/src/duckdb/src/core_functions/aggregate/distributive/skew.cpp +2 -2
- package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +2 -2
- package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +14 -14
- package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +2 -2
- package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +21 -21
- package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +18 -19
- package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +3 -4
- package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +4 -4
- package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +4 -4
- package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +1 -1
- package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +1 -1
- package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +2 -2
- package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +1 -1
- 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 +28 -28
- package/src/duckdb/src/execution/index/art/art.cpp +30 -32
- package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +3 -4
- package/src/duckdb/src/execution/join_hashtable.cpp +4 -4
- package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_inner.cpp +4 -4
- package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_mark.cpp +2 -2
- package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +1 -1
- package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +1 -1
- package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +2 -2
- package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +4 -4
- package/src/duckdb/src/execution/operator/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/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 +2 -2
- package/src/duckdb/src/function/aggregate/distributive/first.cpp +5 -5
- package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +8 -8
- 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 -4
- 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/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 +20 -19
- 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 +1 -1
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +1 -1
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/stddev.hpp +1 -1
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +1 -1
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +1 -1
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +2 -2
- 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/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/filter_combiner.cpp +3 -3
- package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +10 -10
- package/src/duckdb/src/optimizer/matcher/expression_matcher.cpp +1 -1
- package/src/duckdb/src/optimizer/pullup/pullup_projection.cpp +2 -2
- package/src/duckdb/src/optimizer/regex_range_filter.cpp +2 -4
- package/src/duckdb/src/optimizer/rule/distributivity.cpp +2 -2
- package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +6 -6
- package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +2 -2
- package/src/duckdb/src/parallel/executor.cpp +1 -1
- package/src/duckdb/src/parser/base_expression.cpp +2 -5
- package/src/duckdb/src/parser/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 +69 -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 +1 -1
- 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 +2 -2
- package/src/duckdb/src/planner/binder.cpp +1 -1
- package/src/duckdb/src/planner/bound_result_modifier.cpp +16 -11
- package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +5 -5
- package/src/duckdb/src/planner/expression/bound_between_expression.cpp +5 -5
- package/src/duckdb/src/planner/expression/bound_case_expression.cpp +5 -5
- package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +3 -3
- package/src/duckdb/src/planner/expression/bound_columnref_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_comparison_expression.cpp +4 -4
- package/src/duckdb/src/planner/expression/bound_conjunction_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_constant_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_expression.cpp +1 -1
- package/src/duckdb/src/planner/expression/bound_function_expression.cpp +3 -4
- package/src/duckdb/src/planner/expression/bound_lambda_expression.cpp +4 -5
- package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_operator_expression.cpp +3 -4
- package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_reference_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_subquery_expression.cpp +1 -1
- package/src/duckdb/src/planner/expression/bound_unnest_expression.cpp +3 -3
- package/src/duckdb/src/planner/expression/bound_window_expression.cpp +8 -21
- package/src/duckdb/src/planner/expression.cpp +15 -0
- package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +2 -2
- package/src/duckdb/src/planner/expression_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/local_storage.cpp +2 -1
- package/src/duckdb/src/storage/magic_bytes.cpp +1 -1
- package/src/duckdb/src/storage/single_file_block_manager.cpp +3 -3
- package/src/duckdb/src/storage/standard_buffer_manager.cpp +3 -3
- package/src/duckdb/src/storage/statistics/list_stats.cpp +1 -1
- package/src/duckdb/src/storage/statistics/numeric_stats.cpp +1 -1
- package/src/duckdb/src/storage/statistics/string_stats.cpp +15 -14
- package/src/duckdb/src/storage/table/chunk_info.cpp +2 -2
- package/src/duckdb/src/storage/table/column_segment.cpp +3 -3
- package/src/duckdb/src/storage/table/list_column_data.cpp +3 -3
- package/src/duckdb/src/storage/table/row_group.cpp +4 -4
- package/src/duckdb/src/storage/table/standard_column_data.cpp +1 -1
- package/src/duckdb/src/storage/table/update_segment.cpp +12 -12
- package/src/duckdb/src/storage/wal_replay.cpp +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/pcg/pcg_extras.hpp +1 -1
@@ -811,6 +811,17 @@ public:
|
|
811
811
|
virtual void FormatSerialize(FormatSerializer &serializer) const;
|
812
812
|
static shared_ptr<ExtraTypeInfo> FormatDeserialize(FormatDeserializer &source);
|
813
813
|
|
814
|
+
template <class TARGET>
|
815
|
+
TARGET &Cast() {
|
816
|
+
D_ASSERT(dynamic_cast<TARGET *>(this));
|
817
|
+
return reinterpret_cast<TARGET &>(*this);
|
818
|
+
}
|
819
|
+
template <class TARGET>
|
820
|
+
const TARGET &Cast() const {
|
821
|
+
D_ASSERT(dynamic_cast<const TARGET *>(this));
|
822
|
+
return reinterpret_cast<const TARGET &>(*this);
|
823
|
+
}
|
824
|
+
|
814
825
|
protected:
|
815
826
|
virtual bool EqualsInternal(ExtraTypeInfo *other_p) const {
|
816
827
|
// Do nothing
|
@@ -888,7 +899,7 @@ public:
|
|
888
899
|
|
889
900
|
protected:
|
890
901
|
bool EqualsInternal(ExtraTypeInfo *other_p) const override {
|
891
|
-
auto &other = (
|
902
|
+
auto &other = other_p->Cast<DecimalTypeInfo>();
|
892
903
|
return width == other.width && scale == other.scale;
|
893
904
|
}
|
894
905
|
};
|
@@ -897,14 +908,14 @@ uint8_t DecimalType::GetWidth(const LogicalType &type) {
|
|
897
908
|
D_ASSERT(type.id() == LogicalTypeId::DECIMAL);
|
898
909
|
auto info = type.AuxInfo();
|
899
910
|
D_ASSERT(info);
|
900
|
-
return (
|
911
|
+
return info->Cast<DecimalTypeInfo>().width;
|
901
912
|
}
|
902
913
|
|
903
914
|
uint8_t DecimalType::GetScale(const LogicalType &type) {
|
904
915
|
D_ASSERT(type.id() == LogicalTypeId::DECIMAL);
|
905
916
|
auto info = type.AuxInfo();
|
906
917
|
D_ASSERT(info);
|
907
|
-
return (
|
918
|
+
return info->Cast<DecimalTypeInfo>().scale;
|
908
919
|
}
|
909
920
|
|
910
921
|
uint8_t DecimalType::MaxWidth() {
|
@@ -965,7 +976,7 @@ string StringType::GetCollation(const LogicalType &type) {
|
|
965
976
|
if (info->type == ExtraTypeInfoType::GENERIC_TYPE_INFO) {
|
966
977
|
return string();
|
967
978
|
}
|
968
|
-
return (
|
979
|
+
return info->Cast<StringTypeInfo>().collation;
|
969
980
|
}
|
970
981
|
|
971
982
|
LogicalType LogicalType::VARCHAR_COLLATION(string collation) { // NOLINT
|
@@ -1005,7 +1016,7 @@ public:
|
|
1005
1016
|
|
1006
1017
|
protected:
|
1007
1018
|
bool EqualsInternal(ExtraTypeInfo *other_p) const override {
|
1008
|
-
auto &other = (
|
1019
|
+
auto &other = other_p->Cast<ListTypeInfo>();
|
1009
1020
|
return child_type == other.child_type;
|
1010
1021
|
}
|
1011
1022
|
};
|
@@ -1014,7 +1025,7 @@ const LogicalType &ListType::GetChildType(const LogicalType &type) {
|
|
1014
1025
|
D_ASSERT(type.id() == LogicalTypeId::LIST || type.id() == LogicalTypeId::MAP);
|
1015
1026
|
auto info = type.AuxInfo();
|
1016
1027
|
D_ASSERT(info);
|
1017
|
-
return (
|
1028
|
+
return info->Cast<ListTypeInfo>().child_type;
|
1018
1029
|
}
|
1019
1030
|
|
1020
1031
|
LogicalType LogicalType::LIST(const LogicalType &child) {
|
@@ -1066,7 +1077,7 @@ public:
|
|
1066
1077
|
|
1067
1078
|
protected:
|
1068
1079
|
bool EqualsInternal(ExtraTypeInfo *other_p) const override {
|
1069
|
-
auto &other = (
|
1080
|
+
auto &other = other_p->Cast<StructTypeInfo>();
|
1070
1081
|
return child_types == other.child_types;
|
1071
1082
|
}
|
1072
1083
|
};
|
@@ -1122,7 +1133,7 @@ public:
|
|
1122
1133
|
|
1123
1134
|
protected:
|
1124
1135
|
bool EqualsInternal(ExtraTypeInfo *other_p) const override {
|
1125
|
-
auto &other = (
|
1136
|
+
auto &other = other_p->Cast<AggregateStateTypeInfo>();
|
1126
1137
|
return state_type.function_name == other.state_type.function_name &&
|
1127
1138
|
state_type.return_type == other.state_type.return_type &&
|
1128
1139
|
state_type.bound_argument_types == other.state_type.bound_argument_types;
|
@@ -1133,7 +1144,7 @@ const aggregate_state_t &AggregateStateType::GetStateType(const LogicalType &typ
|
|
1133
1144
|
D_ASSERT(type.id() == LogicalTypeId::AGGREGATE_STATE);
|
1134
1145
|
auto info = type.AuxInfo();
|
1135
1146
|
D_ASSERT(info);
|
1136
|
-
return (
|
1147
|
+
return info->Cast<AggregateStateTypeInfo>().state_type;
|
1137
1148
|
}
|
1138
1149
|
|
1139
1150
|
const string AggregateStateType::GetTypeName(const LogicalType &type) {
|
@@ -1142,7 +1153,7 @@ const string AggregateStateType::GetTypeName(const LogicalType &type) {
|
|
1142
1153
|
if (!info) {
|
1143
1154
|
return "AGGREGATE_STATE<?>";
|
1144
1155
|
}
|
1145
|
-
auto aggr_state = (
|
1156
|
+
auto aggr_state = info->Cast<AggregateStateTypeInfo>().state_type;
|
1146
1157
|
return "AGGREGATE_STATE<" + aggr_state.function_name + "(" +
|
1147
1158
|
StringUtil::Join(aggr_state.bound_argument_types, aggr_state.bound_argument_types.size(), ", ",
|
1148
1159
|
[](const LogicalType &arg_type) { return arg_type.ToString(); }) +
|
@@ -1154,7 +1165,7 @@ const child_list_t<LogicalType> &StructType::GetChildTypes(const LogicalType &ty
|
|
1154
1165
|
|
1155
1166
|
auto info = type.AuxInfo();
|
1156
1167
|
D_ASSERT(info);
|
1157
|
-
return (
|
1168
|
+
return info->Cast<StructTypeInfo>().child_types;
|
1158
1169
|
}
|
1159
1170
|
|
1160
1171
|
const LogicalType &StructType::GetChildType(const LogicalType &type, idx_t index) {
|
@@ -1277,7 +1288,7 @@ public:
|
|
1277
1288
|
|
1278
1289
|
protected:
|
1279
1290
|
bool EqualsInternal(ExtraTypeInfo *other_p) const override {
|
1280
|
-
auto &other = (
|
1291
|
+
auto &other = other_p->Cast<UserTypeInfo>();
|
1281
1292
|
return other.user_type_name == user_type_name;
|
1282
1293
|
}
|
1283
1294
|
};
|
@@ -1286,7 +1297,7 @@ const string &UserType::GetTypeName(const LogicalType &type) {
|
|
1286
1297
|
D_ASSERT(type.id() == LogicalTypeId::USER);
|
1287
1298
|
auto info = type.AuxInfo();
|
1288
1299
|
D_ASSERT(info);
|
1289
|
-
return (
|
1300
|
+
return info->Cast<UserTypeInfo>().user_type_name;
|
1290
1301
|
}
|
1291
1302
|
|
1292
1303
|
LogicalType LogicalType::USER(const string &user_type_name) {
|
@@ -1306,19 +1317,19 @@ struct EnumTypeInfo : public ExtraTypeInfo {
|
|
1306
1317
|
dict_type(EnumDictType::VECTOR_DICT), enum_name(std::move(enum_name_p)), dict_size(dict_size_p) {
|
1307
1318
|
}
|
1308
1319
|
|
1309
|
-
const EnumDictType &GetEnumDictType() {
|
1320
|
+
const EnumDictType &GetEnumDictType() const {
|
1310
1321
|
return dict_type;
|
1311
1322
|
};
|
1312
|
-
const string &GetEnumName() {
|
1323
|
+
const string &GetEnumName() const {
|
1313
1324
|
return enum_name;
|
1314
1325
|
};
|
1315
1326
|
const string GetSchemaName() const {
|
1316
1327
|
return catalog_entry ? catalog_entry->schema.name : "";
|
1317
1328
|
};
|
1318
|
-
const Vector &GetValuesInsertOrder() {
|
1329
|
+
const Vector &GetValuesInsertOrder() const {
|
1319
1330
|
return values_insert_order;
|
1320
1331
|
};
|
1321
|
-
const idx_t &GetDictSize() {
|
1332
|
+
const idx_t &GetDictSize() const {
|
1322
1333
|
return dict_size;
|
1323
1334
|
};
|
1324
1335
|
EnumTypeInfo(const EnumTypeInfo &) = delete;
|
@@ -1327,7 +1338,7 @@ struct EnumTypeInfo : public ExtraTypeInfo {
|
|
1327
1338
|
protected:
|
1328
1339
|
// Equalities are only used in enums with different catalog entries
|
1329
1340
|
bool EqualsInternal(ExtraTypeInfo *other_p) const override {
|
1330
|
-
auto &other = (
|
1341
|
+
auto &other = other_p->Cast<EnumTypeInfo>();
|
1331
1342
|
if (dict_type != other.dict_type) {
|
1332
1343
|
return false;
|
1333
1344
|
}
|
@@ -1360,7 +1371,7 @@ protected:
|
|
1360
1371
|
ExtraTypeInfo::FormatSerialize(serializer);
|
1361
1372
|
serializer.WriteProperty("dict_size", dict_size);
|
1362
1373
|
serializer.WriteProperty("enum_name", enum_name);
|
1363
|
-
((Vector &)values_insert_order).FormatSerialize(serializer, dict_size);
|
1374
|
+
((Vector &)values_insert_order).FormatSerialize(serializer, dict_size); // NOLINT - FIXME
|
1364
1375
|
}
|
1365
1376
|
Vector values_insert_order;
|
1366
1377
|
|
@@ -1374,7 +1385,7 @@ private:
|
|
1374
1385
|
|
1375
1386
|
void EnumType::Serialize(FieldWriter &writer, const ExtraTypeInfo &type_info, bool serialize_internals) {
|
1376
1387
|
D_ASSERT(type_info.type == ExtraTypeInfoType::ENUM_TYPE_INFO);
|
1377
|
-
auto &enum_info = (
|
1388
|
+
auto &enum_info = type_info.Cast<EnumTypeInfo>();
|
1378
1389
|
// Store Schema Name
|
1379
1390
|
writer.WriteString(enum_info.GetSchemaName());
|
1380
1391
|
// Store Enum Name
|
@@ -1387,7 +1398,7 @@ void EnumType::Serialize(FieldWriter &writer, const ExtraTypeInfo &type_info, bo
|
|
1387
1398
|
// Store Dictionary Size
|
1388
1399
|
writer.WriteField<uint32_t>(dict_size);
|
1389
1400
|
// Store Vector Order By Insertion
|
1390
|
-
((Vector &)enum_info.GetValuesInsertOrder()).Serialize(dict_size, writer.GetSerializer());
|
1401
|
+
((Vector &)enum_info.GetValuesInsertOrder()).Serialize(dict_size, writer.GetSerializer()); // NOLINT - FIXME
|
1391
1402
|
}
|
1392
1403
|
}
|
1393
1404
|
|
@@ -1400,7 +1411,7 @@ struct EnumTypeInfoTemplated : public EnumTypeInfo {
|
|
1400
1411
|
UnifiedVectorFormat vdata;
|
1401
1412
|
values_insert_order.ToUnifiedFormat(size_p, vdata);
|
1402
1413
|
|
1403
|
-
auto data = (
|
1414
|
+
auto data = UnifiedVectorFormat::GetData<string_t>(vdata);
|
1404
1415
|
for (idx_t i = 0; i < size_p; i++) {
|
1405
1416
|
auto idx = vdata.sel->get_index(i);
|
1406
1417
|
if (!vdata.validity.RowIsValid(idx)) {
|
@@ -1428,7 +1439,7 @@ struct EnumTypeInfoTemplated : public EnumTypeInfo {
|
|
1428
1439
|
return make_shared<EnumTypeInfoTemplated>(std::move(enum_name), values_insert_order, size);
|
1429
1440
|
}
|
1430
1441
|
|
1431
|
-
string_map_t<T> &GetValues() {
|
1442
|
+
const string_map_t<T> &GetValues() const {
|
1432
1443
|
return values;
|
1433
1444
|
}
|
1434
1445
|
|
@@ -1443,7 +1454,7 @@ const string &EnumType::GetTypeName(const LogicalType &type) {
|
|
1443
1454
|
D_ASSERT(type.id() == LogicalTypeId::ENUM);
|
1444
1455
|
auto info = type.AuxInfo();
|
1445
1456
|
D_ASSERT(info);
|
1446
|
-
return (
|
1457
|
+
return info->Cast<EnumTypeInfo>().GetEnumName();
|
1447
1458
|
}
|
1448
1459
|
|
1449
1460
|
static PhysicalType EnumVectorDictType(idx_t size) {
|
@@ -1480,7 +1491,7 @@ LogicalType LogicalType::ENUM(const string &enum_name, Vector &ordered_data, idx
|
|
1480
1491
|
}
|
1481
1492
|
|
1482
1493
|
template <class T>
|
1483
|
-
int64_t TemplatedGetPos(string_map_t<T> &map, const string_t &key) {
|
1494
|
+
int64_t TemplatedGetPos(const string_map_t<T> &map, const string_t &key) {
|
1484
1495
|
auto it = map.find(key);
|
1485
1496
|
if (it == map.end()) {
|
1486
1497
|
return -1;
|
@@ -1492,11 +1503,11 @@ int64_t EnumType::GetPos(const LogicalType &type, const string_t &key) {
|
|
1492
1503
|
auto info = type.AuxInfo();
|
1493
1504
|
switch (type.InternalType()) {
|
1494
1505
|
case PhysicalType::UINT8:
|
1495
|
-
return TemplatedGetPos(
|
1506
|
+
return TemplatedGetPos(info->Cast<EnumTypeInfoTemplated<uint8_t>>().GetValues(), key);
|
1496
1507
|
case PhysicalType::UINT16:
|
1497
|
-
return TemplatedGetPos(
|
1508
|
+
return TemplatedGetPos(info->Cast<EnumTypeInfoTemplated<uint16_t>>().GetValues(), key);
|
1498
1509
|
case PhysicalType::UINT32:
|
1499
|
-
return TemplatedGetPos(
|
1510
|
+
return TemplatedGetPos(info->Cast<EnumTypeInfoTemplated<uint32_t>>().GetValues(), key);
|
1500
1511
|
default:
|
1501
1512
|
throw InternalException("ENUM can only have unsigned integers (except UINT64) as physical types");
|
1502
1513
|
}
|
@@ -1504,7 +1515,7 @@ int64_t EnumType::GetPos(const LogicalType &type, const string_t &key) {
|
|
1504
1515
|
|
1505
1516
|
const string EnumType::GetValue(const Value &val) {
|
1506
1517
|
auto info = val.type().AuxInfo();
|
1507
|
-
auto &values_insert_order = (
|
1518
|
+
auto &values_insert_order = info->Cast<EnumTypeInfo>().GetValuesInsertOrder();
|
1508
1519
|
return StringValue::Get(values_insert_order.GetValue(val.GetValue<uint32_t>()));
|
1509
1520
|
}
|
1510
1521
|
|
@@ -1512,14 +1523,14 @@ const Vector &EnumType::GetValuesInsertOrder(const LogicalType &type) {
|
|
1512
1523
|
D_ASSERT(type.id() == LogicalTypeId::ENUM);
|
1513
1524
|
auto info = type.AuxInfo();
|
1514
1525
|
D_ASSERT(info);
|
1515
|
-
return (
|
1526
|
+
return info->Cast<EnumTypeInfo>().GetValuesInsertOrder();
|
1516
1527
|
}
|
1517
1528
|
|
1518
1529
|
idx_t EnumType::GetSize(const LogicalType &type) {
|
1519
1530
|
D_ASSERT(type.id() == LogicalTypeId::ENUM);
|
1520
1531
|
auto info = type.AuxInfo();
|
1521
1532
|
D_ASSERT(info);
|
1522
|
-
return (
|
1533
|
+
return info->Cast<EnumTypeInfo>().GetDictSize();
|
1523
1534
|
}
|
1524
1535
|
|
1525
1536
|
void EnumType::SetCatalog(LogicalType &type, optional_ptr<TypeCatalogEntry> catalog_entry) {
|
@@ -1535,7 +1546,7 @@ optional_ptr<TypeCatalogEntry> EnumType::GetCatalog(const LogicalType &type) {
|
|
1535
1546
|
if (!info) {
|
1536
1547
|
return nullptr;
|
1537
1548
|
}
|
1538
|
-
return
|
1549
|
+
return info->catalog_entry;
|
1539
1550
|
}
|
1540
1551
|
|
1541
1552
|
string EnumType::GetSchemaName(const LogicalType &type) {
|
@@ -1547,7 +1558,7 @@ PhysicalType EnumType::GetPhysicalType(const LogicalType &type) {
|
|
1547
1558
|
D_ASSERT(type.id() == LogicalTypeId::ENUM);
|
1548
1559
|
auto aux_info = type.AuxInfo();
|
1549
1560
|
D_ASSERT(aux_info);
|
1550
|
-
auto &info = (
|
1561
|
+
auto &info = aux_info->Cast<EnumTypeInfo>();
|
1551
1562
|
D_ASSERT(info.GetEnumDictType() == EnumDictType::VECTOR_DICT);
|
1552
1563
|
return EnumVectorDictType(info.GetDictSize());
|
1553
1564
|
}
|
@@ -35,8 +35,8 @@ static void TemplatedBooleanNullmask(Vector &left, Vector &right, Vector &result
|
|
35
35
|
right.ToUnifiedFormat(count, rdata);
|
36
36
|
|
37
37
|
result.SetVectorType(VectorType::FLAT_VECTOR);
|
38
|
-
auto left_data = (
|
39
|
-
auto right_data = (
|
38
|
+
auto left_data = UnifiedVectorFormat::GetData<uint8_t>(ldata); // we use uint8 to avoid load of gunk bools
|
39
|
+
auto right_data = UnifiedVectorFormat::GetData<uint8_t>(rdata);
|
40
40
|
auto result_data = FlatVector::GetData<bool>(result);
|
41
41
|
auto &result_mask = FlatVector::Validity(result);
|
42
42
|
if (!ldata.validity.AllValid() || !rdata.validity.AllValid()) {
|
@@ -11,7 +11,7 @@ struct DistinctBinaryLambdaWrapper {
|
|
11
11
|
};
|
12
12
|
|
13
13
|
template <class LEFT_TYPE, class RIGHT_TYPE, class RESULT_TYPE, class OP>
|
14
|
-
static void DistinctExecuteGenericLoop(LEFT_TYPE *__restrict ldata, RIGHT_TYPE *__restrict rdata,
|
14
|
+
static void DistinctExecuteGenericLoop(const LEFT_TYPE *__restrict ldata, const RIGHT_TYPE *__restrict rdata,
|
15
15
|
RESULT_TYPE *__restrict result_data, const SelectionVector *__restrict lsel,
|
16
16
|
const SelectionVector *__restrict rsel, idx_t count, ValidityMask &lmask,
|
17
17
|
ValidityMask &rmask, ValidityMask &result_mask) {
|
@@ -49,8 +49,8 @@ static void DistinctExecuteGeneric(Vector &left, Vector &right, Vector &result,
|
|
49
49
|
result.SetVectorType(VectorType::FLAT_VECTOR);
|
50
50
|
auto result_data = FlatVector::GetData<RESULT_TYPE>(result);
|
51
51
|
DistinctExecuteGenericLoop<LEFT_TYPE, RIGHT_TYPE, RESULT_TYPE, OP>(
|
52
|
-
(
|
53
|
-
rdata.validity, FlatVector::Validity(result));
|
52
|
+
UnifiedVectorFormat::GetData<LEFT_TYPE>(ldata), UnifiedVectorFormat::GetData<RIGHT_TYPE>(rdata),
|
53
|
+
result_data, ldata.sel, rdata.sel, count, ldata.validity, rdata.validity, FlatVector::Validity(result));
|
54
54
|
}
|
55
55
|
}
|
56
56
|
|
@@ -66,7 +66,7 @@ static void DistinctExecute(Vector &left, Vector &right, Vector &result, idx_t c
|
|
66
66
|
|
67
67
|
template <class LEFT_TYPE, class RIGHT_TYPE, class OP, bool NO_NULL, bool HAS_TRUE_SEL, bool HAS_FALSE_SEL>
|
68
68
|
static inline idx_t
|
69
|
-
DistinctSelectGenericLoop(LEFT_TYPE *__restrict ldata, RIGHT_TYPE *__restrict rdata,
|
69
|
+
DistinctSelectGenericLoop(const LEFT_TYPE *__restrict ldata, const RIGHT_TYPE *__restrict rdata,
|
70
70
|
const SelectionVector *__restrict lsel, const SelectionVector *__restrict rsel,
|
71
71
|
const SelectionVector *__restrict result_sel, idx_t count, ValidityMask &lmask,
|
72
72
|
ValidityMask &rmask, SelectionVector *true_sel, SelectionVector *false_sel) {
|
@@ -105,7 +105,7 @@ DistinctSelectGenericLoop(LEFT_TYPE *__restrict ldata, RIGHT_TYPE *__restrict rd
|
|
105
105
|
}
|
106
106
|
template <class LEFT_TYPE, class RIGHT_TYPE, class OP, bool NO_NULL>
|
107
107
|
static inline idx_t
|
108
|
-
DistinctSelectGenericLoopSelSwitch(LEFT_TYPE *__restrict ldata, RIGHT_TYPE *__restrict rdata,
|
108
|
+
DistinctSelectGenericLoopSelSwitch(const LEFT_TYPE *__restrict ldata, const RIGHT_TYPE *__restrict rdata,
|
109
109
|
const SelectionVector *__restrict lsel, const SelectionVector *__restrict rsel,
|
110
110
|
const SelectionVector *__restrict result_sel, idx_t count, ValidityMask &lmask,
|
111
111
|
ValidityMask &rmask, SelectionVector *true_sel, SelectionVector *false_sel) {
|
@@ -124,7 +124,7 @@ DistinctSelectGenericLoopSelSwitch(LEFT_TYPE *__restrict ldata, RIGHT_TYPE *__re
|
|
124
124
|
|
125
125
|
template <class LEFT_TYPE, class RIGHT_TYPE, class OP>
|
126
126
|
static inline idx_t
|
127
|
-
DistinctSelectGenericLoopSwitch(LEFT_TYPE *__restrict ldata, RIGHT_TYPE *__restrict rdata,
|
127
|
+
DistinctSelectGenericLoopSwitch(const LEFT_TYPE *__restrict ldata, const RIGHT_TYPE *__restrict rdata,
|
128
128
|
const SelectionVector *__restrict lsel, const SelectionVector *__restrict rsel,
|
129
129
|
const SelectionVector *__restrict result_sel, idx_t count, ValidityMask &lmask,
|
130
130
|
ValidityMask &rmask, SelectionVector *true_sel, SelectionVector *false_sel) {
|
@@ -145,9 +145,9 @@ static idx_t DistinctSelectGeneric(Vector &left, Vector &right, const SelectionV
|
|
145
145
|
left.ToUnifiedFormat(count, ldata);
|
146
146
|
right.ToUnifiedFormat(count, rdata);
|
147
147
|
|
148
|
-
return DistinctSelectGenericLoopSwitch<LEFT_TYPE, RIGHT_TYPE, OP>(
|
149
|
-
|
150
|
-
|
148
|
+
return DistinctSelectGenericLoopSwitch<LEFT_TYPE, RIGHT_TYPE, OP>(
|
149
|
+
UnifiedVectorFormat::GetData<LEFT_TYPE>(ldata), UnifiedVectorFormat::GetData<RIGHT_TYPE>(rdata), ldata.sel,
|
150
|
+
rdata.sel, sel, count, ldata.validity, rdata.validity, true_sel, false_sel);
|
151
151
|
}
|
152
152
|
template <class LEFT_TYPE, class RIGHT_TYPE, class OP, bool LEFT_CONSTANT, bool RIGHT_CONSTANT, bool NO_NULL,
|
153
153
|
bool HAS_TRUE_SEL, bool HAS_FALSE_SEL>
|
@@ -543,7 +543,7 @@ static idx_t DistinctSelectStruct(Vector &left, Vector &right, idx_t count, cons
|
|
543
543
|
|
544
544
|
static void PositionListCursor(SelectionVector &cursor, UnifiedVectorFormat &vdata, const idx_t pos,
|
545
545
|
const SelectionVector &slice_sel, const idx_t count) {
|
546
|
-
const auto data = (
|
546
|
+
const auto data = UnifiedVectorFormat::GetData<list_entry_t>(vdata);
|
547
547
|
for (idx_t i = 0; i < count; ++i) {
|
548
548
|
const auto slice_idx = slice_sel.get_index(i);
|
549
549
|
|
@@ -586,11 +586,11 @@ static idx_t DistinctSelectList(Vector &left, Vector &right, idx_t count, const
|
|
586
586
|
// Get pointers to the list entries
|
587
587
|
UnifiedVectorFormat lvdata;
|
588
588
|
left.ToUnifiedFormat(count, lvdata);
|
589
|
-
const auto ldata = (
|
589
|
+
const auto ldata = UnifiedVectorFormat::GetData<list_entry_t>(lvdata);
|
590
590
|
|
591
591
|
UnifiedVectorFormat rvdata;
|
592
592
|
right.ToUnifiedFormat(count, rvdata);
|
593
|
-
const auto rdata = (
|
593
|
+
const auto rdata = UnifiedVectorFormat::GetData<list_entry_t>(rvdata);
|
594
594
|
|
595
595
|
// In order to reuse the comparators, we have to track what passed and failed internally.
|
596
596
|
// To do that, we need local SVs that we then merge back into the real ones after every pass.
|
@@ -25,7 +25,7 @@ static inline hash_t CombineHashScalar(hash_t a, hash_t b) {
|
|
25
25
|
}
|
26
26
|
|
27
27
|
template <bool HAS_RSEL, class T>
|
28
|
-
static inline void TightLoopHash(T *__restrict ldata, hash_t *__restrict result_data, const SelectionVector *rsel,
|
28
|
+
static inline void TightLoopHash(const T *__restrict ldata, hash_t *__restrict result_data, const SelectionVector *rsel,
|
29
29
|
idx_t count, const SelectionVector *__restrict sel_vector, ValidityMask &mask) {
|
30
30
|
if (!mask.AllValid()) {
|
31
31
|
for (idx_t i = 0; i < count; i++) {
|
@@ -56,8 +56,8 @@ static inline void TemplatedLoopHash(Vector &input, Vector &result, const Select
|
|
56
56
|
UnifiedVectorFormat idata;
|
57
57
|
input.ToUnifiedFormat(count, idata);
|
58
58
|
|
59
|
-
TightLoopHash<HAS_RSEL, T>((
|
60
|
-
idata.validity);
|
59
|
+
TightLoopHash<HAS_RSEL, T>(UnifiedVectorFormat::GetData<T>(idata), FlatVector::GetData<hash_t>(result), rsel,
|
60
|
+
count, idata.sel, idata.validity);
|
61
61
|
}
|
62
62
|
}
|
63
63
|
|
@@ -94,7 +94,7 @@ static inline void ListLoopHash(Vector &input, Vector &hashes, const SelectionVe
|
|
94
94
|
|
95
95
|
UnifiedVectorFormat idata;
|
96
96
|
input.ToUnifiedFormat(count, idata);
|
97
|
-
const auto ldata = (
|
97
|
+
const auto ldata = UnifiedVectorFormat::GetData<list_entry_t>(idata);
|
98
98
|
|
99
99
|
// Hash the children into a temporary
|
100
100
|
auto &child = ListVector::GetEntry(input);
|
@@ -240,8 +240,8 @@ void VectorOperations::Hash(Vector &input, Vector &result, const SelectionVector
|
|
240
240
|
}
|
241
241
|
|
242
242
|
template <bool HAS_RSEL, class T>
|
243
|
-
static inline void TightLoopCombineHashConstant(T *__restrict ldata, hash_t constant_hash,
|
244
|
-
const SelectionVector *rsel, idx_t count,
|
243
|
+
static inline void TightLoopCombineHashConstant(const T *__restrict ldata, hash_t constant_hash,
|
244
|
+
hash_t *__restrict hash_data, const SelectionVector *rsel, idx_t count,
|
245
245
|
const SelectionVector *__restrict sel_vector, ValidityMask &mask) {
|
246
246
|
if (!mask.AllValid()) {
|
247
247
|
for (idx_t i = 0; i < count; i++) {
|
@@ -261,8 +261,9 @@ static inline void TightLoopCombineHashConstant(T *__restrict ldata, hash_t cons
|
|
261
261
|
}
|
262
262
|
|
263
263
|
template <bool HAS_RSEL, class T>
|
264
|
-
static inline void TightLoopCombineHash(T *__restrict ldata, hash_t *__restrict hash_data,
|
265
|
-
|
264
|
+
static inline void TightLoopCombineHash(const T *__restrict ldata, hash_t *__restrict hash_data,
|
265
|
+
const SelectionVector *rsel, idx_t count,
|
266
|
+
const SelectionVector *__restrict sel_vector, ValidityMask &mask) {
|
266
267
|
if (!mask.AllValid()) {
|
267
268
|
for (idx_t i = 0; i < count; i++) {
|
268
269
|
auto ridx = HAS_RSEL ? rsel->get_index(i) : i;
|
@@ -296,13 +297,14 @@ void TemplatedLoopCombineHash(Vector &input, Vector &hashes, const SelectionVect
|
|
296
297
|
auto constant_hash = *ConstantVector::GetData<hash_t>(hashes);
|
297
298
|
// now re-initialize the hashes vector to an empty flat vector
|
298
299
|
hashes.SetVectorType(VectorType::FLAT_VECTOR);
|
299
|
-
TightLoopCombineHashConstant<HAS_RSEL, T>((
|
300
|
+
TightLoopCombineHashConstant<HAS_RSEL, T>(UnifiedVectorFormat::GetData<T>(idata), constant_hash,
|
300
301
|
FlatVector::GetData<hash_t>(hashes), rsel, count, idata.sel,
|
301
302
|
idata.validity);
|
302
303
|
} else {
|
303
304
|
D_ASSERT(hashes.GetVectorType() == VectorType::FLAT_VECTOR);
|
304
|
-
TightLoopCombineHash<HAS_RSEL, T>(
|
305
|
-
idata.sel,
|
305
|
+
TightLoopCombineHash<HAS_RSEL, T>(UnifiedVectorFormat::GetData<T>(idata),
|
306
|
+
FlatVector::GetData<hash_t>(hashes), rsel, count, idata.sel,
|
307
|
+
idata.validity);
|
306
308
|
}
|
307
309
|
}
|
308
310
|
}
|
@@ -6,7 +6,7 @@ namespace duckdb {
|
|
6
6
|
|
7
7
|
template <class T>
|
8
8
|
static void CopyToStorageLoop(UnifiedVectorFormat &vdata, idx_t count, data_ptr_t target) {
|
9
|
-
auto ldata = (
|
9
|
+
auto ldata = UnifiedVectorFormat::GetData<T>(vdata);
|
10
10
|
auto result_data = (T *)target;
|
11
11
|
for (idx_t i = 0; i < count; i++) {
|
12
12
|
auto idx = vdata.sel->get_index(i);
|
@@ -69,7 +69,7 @@ static void ApproxCountDistinctSimpleUpdateFunction(Vector inputs[], AggregateIn
|
|
69
69
|
data_ptr_t state, idx_t count) {
|
70
70
|
D_ASSERT(input_count == 1);
|
71
71
|
|
72
|
-
auto agg_state =
|
72
|
+
auto agg_state = reinterpret_cast<ApproxDistinctCountState *>(state);
|
73
73
|
if (!agg_state->log) {
|
74
74
|
agg_state->log = new HyperLogLog();
|
75
75
|
}
|
@@ -91,7 +91,7 @@ static void ApproxCountDistinctUpdateFunction(Vector inputs[], AggregateInputDat
|
|
91
91
|
|
92
92
|
UnifiedVectorFormat sdata;
|
93
93
|
state_vector.ToUnifiedFormat(count, sdata);
|
94
|
-
auto states =
|
94
|
+
auto states = UnifiedVectorFormat::GetDataNoConst<ApproxDistinctCountState *>(sdata);
|
95
95
|
|
96
96
|
uint64_t *indices = nullptr;
|
97
97
|
uint8_t *counts = nullptr;
|
@@ -111,7 +111,7 @@ static void ApproxCountDistinctUpdateFunction(Vector inputs[], AggregateInputDat
|
|
111
111
|
inputs[0].ToUnifiedFormat(count, vdata);
|
112
112
|
|
113
113
|
HyperLogLog::ProcessEntries(vdata, inputs[0].GetType(), indices, counts, count);
|
114
|
-
HyperLogLog::AddToLogs(vdata, count, indices, counts,
|
114
|
+
HyperLogLog::AddToLogs(vdata, count, indices, counts, reinterpret_cast<HyperLogLog ***>(states), sdata.sel);
|
115
115
|
}
|
116
116
|
|
117
117
|
AggregateFunction GetApproxCountDistinctFunction(const LogicalType &input_type) {
|
@@ -108,8 +108,8 @@ struct ArgMinMaxBase {
|
|
108
108
|
}
|
109
109
|
|
110
110
|
template <class A_TYPE, class B_TYPE, class STATE, class OP>
|
111
|
-
static void Operation(STATE *state, AggregateInputData &, A_TYPE *x_data, B_TYPE *y_data,
|
112
|
-
ValidityMask &bmask, idx_t xidx, idx_t yidx) {
|
111
|
+
static void Operation(STATE *state, AggregateInputData &, const A_TYPE *x_data, const B_TYPE *y_data,
|
112
|
+
ValidityMask &amask, ValidityMask &bmask, idx_t xidx, idx_t yidx) {
|
113
113
|
if (!state->is_initialized) {
|
114
114
|
STATE::template AssignValue<A_TYPE>(state->arg, x_data[xidx], false);
|
115
115
|
STATE::template AssignValue<B_TYPE>(state->value, y_data[yidx], false);
|
@@ -176,7 +176,7 @@ struct VectorArgMinMaxBase : ArgMinMaxBase<COMPARATOR> {
|
|
176
176
|
auto &by = inputs[1];
|
177
177
|
UnifiedVectorFormat bdata;
|
178
178
|
by.ToUnifiedFormat(count, bdata);
|
179
|
-
const auto bys = (
|
179
|
+
const auto bys = UnifiedVectorFormat::GetData<BY_TYPE>(bdata);
|
180
180
|
|
181
181
|
UnifiedVectorFormat sdata;
|
182
182
|
state_vector.ToUnifiedFormat(count, sdata);
|
@@ -48,7 +48,7 @@ struct BitwiseOperation {
|
|
48
48
|
}
|
49
49
|
|
50
50
|
template <class INPUT_TYPE, class STATE, class OP>
|
51
|
-
static void Operation(STATE *state, AggregateInputData &, INPUT_TYPE *input, ValidityMask &mask, idx_t idx) {
|
51
|
+
static void Operation(STATE *state, AggregateInputData &, const INPUT_TYPE *input, ValidityMask &mask, idx_t idx) {
|
52
52
|
if (!state->is_set) {
|
53
53
|
OP::template Assign(state, input[idx]);
|
54
54
|
state->is_set = true;
|
@@ -58,7 +58,7 @@ struct BitwiseOperation {
|
|
58
58
|
}
|
59
59
|
|
60
60
|
template <class INPUT_TYPE, class STATE, class OP>
|
61
|
-
static void ConstantOperation(STATE *state, AggregateInputData &aggr_input_data, INPUT_TYPE *input,
|
61
|
+
static void ConstantOperation(STATE *state, AggregateInputData &aggr_input_data, const INPUT_TYPE *input,
|
62
62
|
ValidityMask &mask, idx_t count) {
|
63
63
|
OP::template Operation<INPUT_TYPE, STATE, OP>(state, aggr_input_data, input, mask, 0);
|
64
64
|
}
|
@@ -118,7 +118,7 @@ struct BitXorOperation : public BitwiseOperation {
|
|
118
118
|
}
|
119
119
|
|
120
120
|
template <class INPUT_TYPE, class STATE, class OP>
|
121
|
-
static void ConstantOperation(STATE *state, AggregateInputData &aggr_input_data, INPUT_TYPE *input,
|
121
|
+
static void ConstantOperation(STATE *state, AggregateInputData &aggr_input_data, const INPUT_TYPE *input,
|
122
122
|
ValidityMask &mask, idx_t count) {
|
123
123
|
for (idx_t i = 0; i < count; i++) {
|
124
124
|
Operation<INPUT_TYPE, STATE, OP>(state, aggr_input_data, input, mask, 0);
|
@@ -181,7 +181,7 @@ struct BitStringXorOperation : public BitStringBitwiseOperation {
|
|
181
181
|
}
|
182
182
|
|
183
183
|
template <class INPUT_TYPE, class STATE, class OP>
|
184
|
-
static void ConstantOperation(STATE *state, AggregateInputData &aggr_input_data, INPUT_TYPE *input,
|
184
|
+
static void ConstantOperation(STATE *state, AggregateInputData &aggr_input_data, const INPUT_TYPE *input,
|
185
185
|
ValidityMask &mask, idx_t count) {
|
186
186
|
for (idx_t i = 0; i < count; i++) {
|
187
187
|
Operation<INPUT_TYPE, STATE, OP>(state, aggr_input_data, input, mask, 0);
|
@@ -53,18 +53,19 @@ struct BitStringAggOperation {
|
|
53
53
|
}
|
54
54
|
|
55
55
|
template <class INPUT_TYPE, class STATE, class OP>
|
56
|
-
static void Operation(STATE *state, AggregateInputData &data, INPUT_TYPE *input, ValidityMask &mask,
|
57
|
-
|
56
|
+
static void Operation(STATE *state, AggregateInputData &data, const INPUT_TYPE *input, ValidityMask &mask,
|
57
|
+
idx_t idx) {
|
58
|
+
auto &bind_agg_data = data.bind_data->template Cast<BitstringAggBindData>();
|
58
59
|
if (!state->is_set) {
|
59
|
-
if (bind_agg_data
|
60
|
+
if (bind_agg_data.min.IsNull() || bind_agg_data.max.IsNull()) {
|
60
61
|
throw BinderException(
|
61
62
|
"Could not retrieve required statistics. Alternatively, try by providing the statistics "
|
62
63
|
"explicitly: BITSTRING_AGG(col, min, max) ");
|
63
64
|
}
|
64
|
-
state->min = bind_agg_data
|
65
|
-
state->max = bind_agg_data
|
65
|
+
state->min = bind_agg_data.min.GetValue<INPUT_TYPE>();
|
66
|
+
state->max = bind_agg_data.max.GetValue<INPUT_TYPE>();
|
66
67
|
idx_t bit_range =
|
67
|
-
GetRange(bind_agg_data
|
68
|
+
GetRange(bind_agg_data.min.GetValue<INPUT_TYPE>(), bind_agg_data.max.GetValue<INPUT_TYPE>());
|
68
69
|
if (bit_range > MAX_BIT_RANGE) {
|
69
70
|
throw OutOfRangeException(
|
70
71
|
"The range between min and max value (%s <-> %s) is too large for bitstring aggregation",
|
@@ -78,7 +79,7 @@ struct BitStringAggOperation {
|
|
78
79
|
state->is_set = true;
|
79
80
|
}
|
80
81
|
if (input[idx] >= state->min && input[idx] <= state->max) {
|
81
|
-
Execute(state, input[idx], bind_agg_data
|
82
|
+
Execute(state, input[idx], bind_agg_data.min.GetValue<INPUT_TYPE>());
|
82
83
|
} else {
|
83
84
|
throw OutOfRangeException("Value %s is outside of provided min and max range (%s <-> %s)",
|
84
85
|
NumericHelper::ToString(input[idx]), NumericHelper::ToString(state->min),
|
@@ -87,7 +88,7 @@ struct BitStringAggOperation {
|
|
87
88
|
}
|
88
89
|
|
89
90
|
template <class INPUT_TYPE, class STATE, class OP>
|
90
|
-
static void ConstantOperation(STATE *state, AggregateInputData &aggr_input_data, INPUT_TYPE *input,
|
91
|
+
static void ConstantOperation(STATE *state, AggregateInputData &aggr_input_data, const INPUT_TYPE *input,
|
91
92
|
ValidityMask &mask, idx_t count) {
|
92
93
|
OP::template Operation<INPUT_TYPE, STATE, OP>(state, aggr_input_data, input, mask, 0);
|
93
94
|
}
|
@@ -190,9 +191,9 @@ unique_ptr<BaseStatistics> BitstringPropagateStats(ClientContext &context, Bound
|
|
190
191
|
throw BinderException("Could not retrieve required statistics. Alternatively, try by providing the statistics "
|
191
192
|
"explicitly: BITSTRING_AGG(col, min, max) ");
|
192
193
|
}
|
193
|
-
auto bind_agg_data =
|
194
|
-
bind_agg_data
|
195
|
-
bind_agg_data
|
194
|
+
auto &bind_agg_data = input.bind_data->Cast<BitstringAggBindData>();
|
195
|
+
bind_agg_data.min = NumericStats::Min(input.child_stats[0]);
|
196
|
+
bind_agg_data.max = NumericStats::Max(input.child_stats[0]);
|
196
197
|
return nullptr;
|
197
198
|
}
|
198
199
|
|
@@ -34,13 +34,13 @@ struct BoolAndFunFunction {
|
|
34
34
|
}
|
35
35
|
|
36
36
|
template <class INPUT_TYPE, class STATE, class OP>
|
37
|
-
static void Operation(STATE *state, AggregateInputData &, INPUT_TYPE *input, ValidityMask &mask, idx_t idx) {
|
37
|
+
static void Operation(STATE *state, AggregateInputData &, const INPUT_TYPE *input, ValidityMask &mask, idx_t idx) {
|
38
38
|
state->empty = false;
|
39
39
|
state->val = input[idx] && state->val;
|
40
40
|
}
|
41
41
|
|
42
42
|
template <class INPUT_TYPE, class STATE, class OP>
|
43
|
-
static void ConstantOperation(STATE *state, AggregateInputData &aggr_input_data, INPUT_TYPE *input,
|
43
|
+
static void ConstantOperation(STATE *state, AggregateInputData &aggr_input_data, const INPUT_TYPE *input,
|
44
44
|
ValidityMask &mask, idx_t count) {
|
45
45
|
for (idx_t i = 0; i < count; i++) {
|
46
46
|
Operation<INPUT_TYPE, STATE, OP>(state, aggr_input_data, input, mask, 0);
|
@@ -73,7 +73,7 @@ struct BoolOrFunFunction {
|
|
73
73
|
target[idx] = state->val;
|
74
74
|
}
|
75
75
|
template <class INPUT_TYPE, class STATE, class OP>
|
76
|
-
static void Operation(STATE *state, AggregateInputData &, INPUT_TYPE *input, ValidityMask &mask, idx_t idx) {
|
76
|
+
static void Operation(STATE *state, AggregateInputData &, const INPUT_TYPE *input, ValidityMask &mask, idx_t idx) {
|
77
77
|
state->empty = false;
|
78
78
|
state->val = input[idx] || state->val;
|
79
79
|
}
|
@@ -75,7 +75,7 @@ struct EntropyFunctionBase {
|
|
75
75
|
|
76
76
|
struct EntropyFunction : EntropyFunctionBase {
|
77
77
|
template <class INPUT_TYPE, class STATE, class OP>
|
78
|
-
static void Operation(STATE *state, AggregateInputData &, INPUT_TYPE *input, ValidityMask &mask, idx_t idx) {
|
78
|
+
static void Operation(STATE *state, AggregateInputData &, const INPUT_TYPE *input, ValidityMask &mask, idx_t idx) {
|
79
79
|
if (!state->distinct) {
|
80
80
|
state->distinct = new unordered_map<INPUT_TYPE, idx_t>();
|
81
81
|
}
|
@@ -93,7 +93,7 @@ struct EntropyFunction : EntropyFunctionBase {
|
|
93
93
|
|
94
94
|
struct EntropyFunctionString : EntropyFunctionBase {
|
95
95
|
template <class INPUT_TYPE, class STATE, class OP>
|
96
|
-
static void Operation(STATE *state, AggregateInputData &, INPUT_TYPE *input, ValidityMask &mask, idx_t idx) {
|
96
|
+
static void Operation(STATE *state, AggregateInputData &, const INPUT_TYPE *input, ValidityMask &mask, idx_t idx) {
|
97
97
|
if (!state->distinct) {
|
98
98
|
state->distinct = new unordered_map<string, idx_t>();
|
99
99
|
}
|
@@ -103,7 +103,7 @@ struct EntropyFunctionString : EntropyFunctionBase {
|
|
103
103
|
}
|
104
104
|
|
105
105
|
template <class INPUT_TYPE, class STATE, class OP>
|
106
|
-
static void ConstantOperation(STATE *state, AggregateInputData &aggr_input_data, INPUT_TYPE *input,
|
106
|
+
static void ConstantOperation(STATE *state, AggregateInputData &aggr_input_data, const INPUT_TYPE *input,
|
107
107
|
ValidityMask &mask, idx_t count) {
|
108
108
|
for (idx_t i = 0; i < count; i++) {
|
109
109
|
Operation<INPUT_TYPE, STATE, OP>(state, aggr_input_data, input, mask, 0);
|