duckdb 0.7.2-dev0.0 → 0.7.2-dev1034.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.gyp +12 -7
- package/lib/duckdb.d.ts +55 -2
- package/lib/duckdb.js +20 -1
- package/package.json +1 -1
- package/src/connection.cpp +1 -2
- package/src/database.cpp +1 -1
- package/src/duckdb/extension/icu/icu-extension.cpp +4 -0
- package/src/duckdb/extension/icu/icu-list-range.cpp +207 -0
- package/src/duckdb/extension/icu/icu-table-range.cpp +194 -0
- package/src/duckdb/extension/icu/include/icu-list-range.hpp +17 -0
- package/src/duckdb/extension/icu/include/icu-table-range.hpp +17 -0
- package/src/duckdb/extension/json/include/json_common.hpp +1 -0
- package/src/duckdb/extension/json/include/json_functions.hpp +2 -0
- package/src/duckdb/extension/json/include/json_serializer.hpp +77 -0
- package/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp +147 -0
- package/src/duckdb/extension/json/json_functions/read_json.cpp +6 -5
- package/src/duckdb/extension/json/json_functions.cpp +12 -4
- package/src/duckdb/extension/json/json_scan.cpp +2 -2
- package/src/duckdb/extension/json/json_serializer.cpp +217 -0
- package/src/duckdb/extension/parquet/column_reader.cpp +94 -15
- package/src/duckdb/extension/parquet/column_writer.cpp +0 -1
- package/src/duckdb/extension/parquet/include/column_reader.hpp +1 -2
- package/src/duckdb/extension/parquet/include/decode_utils.hpp +5 -4
- package/src/duckdb/extension/parquet/include/generated_column_reader.hpp +1 -11
- package/src/duckdb/extension/parquet/include/parquet_timestamp.hpp +2 -1
- package/src/duckdb/extension/parquet/parquet-extension.cpp +12 -2
- package/src/duckdb/extension/parquet/parquet_reader.cpp +1 -1
- package/src/duckdb/extension/parquet/parquet_statistics.cpp +26 -32
- package/src/duckdb/extension/parquet/parquet_timestamp.cpp +16 -6
- package/src/duckdb/src/catalog/catalog.cpp +34 -5
- package/src/duckdb/src/catalog/catalog_entry/duck_schema_entry.cpp +4 -0
- package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +2 -21
- package/src/duckdb/src/catalog/catalog_entry/scalar_function_catalog_entry.cpp +7 -6
- package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +3 -3
- package/src/duckdb/src/catalog/catalog_entry/table_function_catalog_entry.cpp +20 -1
- package/src/duckdb/src/catalog/catalog_entry/type_catalog_entry.cpp +8 -2
- package/src/duckdb/src/catalog/catalog_set.cpp +1 -0
- package/src/duckdb/src/catalog/default/default_functions.cpp +3 -0
- package/src/duckdb/src/catalog/dependency_list.cpp +12 -0
- package/src/duckdb/src/catalog/duck_catalog.cpp +34 -7
- package/src/duckdb/src/common/arrow/arrow_appender.cpp +48 -4
- package/src/duckdb/src/common/arrow/arrow_converter.cpp +1 -1
- package/src/duckdb/src/common/box_renderer.cpp +109 -23
- package/src/duckdb/src/common/enums/expression_type.cpp +8 -222
- package/src/duckdb/src/common/enums/join_type.cpp +3 -22
- package/src/duckdb/src/common/enums/logical_operator_type.cpp +2 -0
- package/src/duckdb/src/common/enums/statement_type.cpp +2 -0
- package/src/duckdb/src/common/exception.cpp +15 -1
- package/src/duckdb/src/common/field_writer.cpp +1 -0
- package/src/duckdb/src/common/operator/cast_operators.cpp +1 -1
- package/src/duckdb/src/common/preserved_error.cpp +7 -5
- package/src/duckdb/src/common/serializer/buffered_deserializer.cpp +4 -0
- package/src/duckdb/src/common/serializer/buffered_file_reader.cpp +15 -2
- package/src/duckdb/src/common/serializer/enum_serializer.cpp +1176 -0
- package/src/duckdb/src/common/sort/sort_state.cpp +5 -7
- package/src/duckdb/src/common/sort/sorted_block.cpp +0 -1
- package/src/duckdb/src/common/string_util.cpp +4 -1
- package/src/duckdb/src/common/types/bit.cpp +166 -87
- package/src/duckdb/src/common/types/blob.cpp +1 -1
- package/src/duckdb/src/common/types/chunk_collection.cpp +2 -2
- package/src/duckdb/src/common/types/column_data_collection.cpp +39 -2
- package/src/duckdb/src/common/types/column_data_collection_segment.cpp +11 -6
- package/src/duckdb/src/common/types/data_chunk.cpp +1 -1
- package/src/duckdb/src/common/types/time.cpp +13 -0
- package/src/duckdb/src/common/types/value.cpp +320 -154
- package/src/duckdb/src/common/types/vector.cpp +155 -127
- package/src/duckdb/src/common/types.cpp +313 -153
- package/src/duckdb/src/common/vector_operations/vector_cast.cpp +2 -1
- package/src/duckdb/src/execution/aggregate_hashtable.cpp +10 -5
- package/src/duckdb/src/execution/column_binding_resolver.cpp +21 -5
- package/src/duckdb/src/execution/expression_executor/execute_cast.cpp +2 -1
- package/src/duckdb/src/execution/index/art/art.cpp +6 -5
- package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +4 -5
- package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +117 -26
- package/src/duckdb/src/execution/operator/helper/physical_limit.cpp +3 -0
- package/src/duckdb/src/execution/operator/helper/physical_vacuum.cpp +5 -3
- package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +64 -17
- package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +2 -2
- package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +12 -4
- package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +6 -11
- package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +3 -1
- package/src/duckdb/src/execution/operator/persistent/base_csv_reader.cpp +6 -3
- package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +6 -14
- package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +2 -2
- package/src/duckdb/src/execution/operator/projection/physical_projection.cpp +34 -0
- package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +20 -5
- package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +20 -40
- package/src/duckdb/src/execution/partitionable_hashtable.cpp +14 -2
- package/src/duckdb/src/execution/physical_plan/plan_aggregate.cpp +21 -16
- package/src/duckdb/src/execution/physical_plan/plan_asof_join.cpp +97 -0
- package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +95 -47
- package/src/duckdb/src/execution/physical_plan/plan_distinct.cpp +5 -8
- package/src/duckdb/src/execution/physical_plan/plan_positional_join.cpp +14 -5
- package/src/duckdb/src/execution/physical_plan_generator.cpp +3 -0
- package/src/duckdb/src/execution/window_segment_tree.cpp +173 -1
- package/src/duckdb/src/function/aggregate/algebraic/avg.cpp +0 -6
- package/src/duckdb/src/function/aggregate/distributive/bitagg.cpp +99 -95
- package/src/duckdb/src/function/aggregate/distributive/bitstring_agg.cpp +269 -0
- package/src/duckdb/src/function/aggregate/distributive/bool.cpp +2 -0
- package/src/duckdb/src/function/aggregate/distributive/count.cpp +3 -4
- package/src/duckdb/src/function/aggregate/distributive/first.cpp +1 -0
- package/src/duckdb/src/function/aggregate/distributive/minmax.cpp +2 -0
- package/src/duckdb/src/function/aggregate/distributive/sum.cpp +19 -16
- package/src/duckdb/src/function/aggregate/distributive_functions.cpp +1 -0
- package/src/duckdb/src/function/aggregate/holistic/approximate_quantile.cpp +5 -2
- package/src/duckdb/src/function/aggregate/holistic/mode.cpp +1 -1
- package/src/duckdb/src/function/aggregate/holistic/quantile.cpp +16 -1
- package/src/duckdb/src/function/aggregate/nested/list.cpp +8 -8
- package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +58 -16
- package/src/duckdb/src/function/cast/bit_cast.cpp +0 -2
- package/src/duckdb/src/function/cast/blob_cast.cpp +0 -1
- package/src/duckdb/src/function/cast/cast_function_set.cpp +1 -1
- package/src/duckdb/src/function/cast/enum_casts.cpp +25 -3
- package/src/duckdb/src/function/cast/list_casts.cpp +17 -4
- package/src/duckdb/src/function/cast/map_cast.cpp +5 -2
- package/src/duckdb/src/function/cast/string_cast.cpp +36 -10
- package/src/duckdb/src/function/cast/struct_cast.cpp +24 -4
- package/src/duckdb/src/function/cast/time_casts.cpp +2 -2
- package/src/duckdb/src/function/cast/union_casts.cpp +33 -7
- package/src/duckdb/src/function/function_binder.cpp +1 -8
- package/src/duckdb/src/function/scalar/bit/bitstring.cpp +100 -0
- package/src/duckdb/src/function/scalar/date/current.cpp +0 -2
- package/src/duckdb/src/function/scalar/date/date_diff.cpp +0 -1
- package/src/duckdb/src/function/scalar/date/date_part.cpp +18 -26
- package/src/duckdb/src/function/scalar/date/date_sub.cpp +0 -1
- package/src/duckdb/src/function/scalar/date/date_trunc.cpp +10 -14
- package/src/duckdb/src/function/scalar/generic/stats.cpp +2 -4
- package/src/duckdb/src/function/scalar/list/contains_or_position.cpp +4 -146
- package/src/duckdb/src/function/scalar/list/flatten.cpp +5 -12
- package/src/duckdb/src/function/scalar/list/list_aggregates.cpp +1 -1
- package/src/duckdb/src/function/scalar/list/list_concat.cpp +8 -12
- package/src/duckdb/src/function/scalar/list/list_extract.cpp +5 -12
- package/src/duckdb/src/function/scalar/list/list_lambdas.cpp +7 -3
- package/src/duckdb/src/function/scalar/list/list_value.cpp +6 -10
- package/src/duckdb/src/function/scalar/map/map.cpp +47 -1
- package/src/duckdb/src/function/scalar/map/map_entries.cpp +61 -0
- package/src/duckdb/src/function/scalar/map/map_extract.cpp +68 -26
- package/src/duckdb/src/function/scalar/map/map_keys_values.cpp +97 -0
- package/src/duckdb/src/function/scalar/math/numeric.cpp +101 -17
- package/src/duckdb/src/function/scalar/math_functions.cpp +3 -0
- package/src/duckdb/src/function/scalar/nested_functions.cpp +3 -0
- package/src/duckdb/src/function/scalar/operators/add.cpp +0 -9
- package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +29 -48
- package/src/duckdb/src/function/scalar/operators/bitwise.cpp +0 -63
- package/src/duckdb/src/function/scalar/operators/multiply.cpp +5 -6
- package/src/duckdb/src/function/scalar/operators/subtract.cpp +0 -6
- package/src/duckdb/src/function/scalar/string/caseconvert.cpp +2 -6
- package/src/duckdb/src/function/scalar/string/hex.cpp +201 -0
- package/src/duckdb/src/function/scalar/string/instr.cpp +2 -6
- package/src/duckdb/src/function/scalar/string/length.cpp +2 -6
- package/src/duckdb/src/function/scalar/string/like.cpp +2 -6
- package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +243 -0
- package/src/duckdb/src/function/scalar/string/regexp/regexp_util.cpp +79 -0
- package/src/duckdb/src/function/scalar/string/regexp.cpp +21 -80
- package/src/duckdb/src/function/scalar/string/substring.cpp +2 -6
- package/src/duckdb/src/function/scalar/string_functions.cpp +2 -0
- package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +5 -10
- package/src/duckdb/src/function/scalar/struct/struct_insert.cpp +11 -14
- package/src/duckdb/src/function/scalar/struct/struct_pack.cpp +6 -7
- package/src/duckdb/src/function/table/arrow.cpp +5 -2
- package/src/duckdb/src/function/table/arrow_conversion.cpp +25 -1
- package/src/duckdb/src/function/table/checkpoint.cpp +5 -1
- package/src/duckdb/src/function/table/read_csv.cpp +55 -0
- package/src/duckdb/src/function/table/system/duckdb_constraints.cpp +2 -2
- package/src/duckdb/src/function/table/system/test_all_types.cpp +2 -2
- package/src/duckdb/src/function/table/table_scan.cpp +1 -1
- package/src/duckdb/src/function/table/version/pragma_version.cpp +2 -2
- package/src/duckdb/src/function/table_function.cpp +30 -11
- package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +6 -0
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +1 -1
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_function_catalog_entry.hpp +6 -8
- package/src/duckdb/src/include/duckdb/catalog/dependency_list.hpp +3 -0
- package/src/duckdb/src/include/duckdb/catalog/duck_catalog.hpp +2 -1
- package/src/duckdb/src/include/duckdb/common/box_renderer.hpp +8 -2
- package/src/duckdb/src/include/duckdb/common/constants.hpp +0 -19
- package/src/duckdb/src/include/duckdb/common/enums/aggregate_handling.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/enums/expression_type.hpp +2 -3
- package/src/duckdb/src/include/duckdb/common/enums/joinref_type.hpp +7 -4
- package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/enums/order_type.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/enums/set_operation_type.hpp +2 -1
- package/src/duckdb/src/include/duckdb/common/enums/statement_type.hpp +2 -1
- package/src/duckdb/src/include/duckdb/common/enums/tableref_type.hpp +2 -1
- package/src/duckdb/src/include/duckdb/common/exception.hpp +69 -2
- package/src/duckdb/src/include/duckdb/common/field_writer.hpp +12 -4
- package/src/duckdb/src/include/duckdb/common/{http_stats.hpp → http_state.hpp} +18 -4
- package/src/duckdb/src/include/duckdb/common/operator/multiply.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/optional_ptr.hpp +45 -0
- package/src/duckdb/src/include/duckdb/common/preserved_error.hpp +6 -1
- package/src/duckdb/src/include/duckdb/common/serializer/buffered_deserializer.hpp +4 -2
- package/src/duckdb/src/include/duckdb/common/serializer/buffered_file_reader.hpp +8 -2
- package/src/duckdb/src/include/duckdb/common/serializer/enum_serializer.hpp +113 -0
- package/src/duckdb/src/include/duckdb/common/serializer/format_deserializer.hpp +336 -0
- package/src/duckdb/src/include/duckdb/common/serializer/format_serializer.hpp +268 -0
- package/src/duckdb/src/include/duckdb/common/serializer/serialization_traits.hpp +126 -0
- package/src/duckdb/src/include/duckdb/common/serializer.hpp +13 -0
- package/src/duckdb/src/include/duckdb/common/string_util.hpp +25 -0
- package/src/duckdb/src/include/duckdb/common/types/bit.hpp +12 -7
- package/src/duckdb/src/include/duckdb/common/types/time.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/types/value.hpp +17 -48
- package/src/duckdb/src/include/duckdb/common/types/value_map.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/vector.hpp +3 -1
- package/src/duckdb/src/include/duckdb/common/types.hpp +45 -8
- package/src/duckdb/src/include/duckdb/common/vector_operations/unary_executor.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/aggregate_hashtable.hpp +1 -0
- package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_perfecthash_aggregate.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_cross_product.hpp +2 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_file_handle.hpp +1 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_reader_options.hpp +6 -0
- package/src/duckdb/src/include/duckdb/execution/operator/projection/physical_projection.hpp +5 -0
- package/src/duckdb/src/include/duckdb/execution/partitionable_hashtable.hpp +3 -0
- package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +1 -3
- package/src/duckdb/src/include/duckdb/execution/window_segment_tree.hpp +54 -0
- package/src/duckdb/src/include/duckdb/function/aggregate/distributive_functions.hpp +5 -0
- package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +18 -6
- package/src/duckdb/src/include/duckdb/function/cast/bound_cast_data.hpp +84 -0
- package/src/duckdb/src/include/duckdb/function/cast/cast_function_set.hpp +2 -2
- package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +28 -64
- package/src/duckdb/src/include/duckdb/function/function_binder.hpp +3 -6
- package/src/duckdb/src/include/duckdb/function/scalar/bit_functions.hpp +4 -0
- package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +138 -0
- package/src/duckdb/src/include/duckdb/function/scalar/math_functions.hpp +8 -0
- package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +59 -0
- package/src/duckdb/src/include/duckdb/function/scalar/regexp.hpp +81 -1
- package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +4 -0
- package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +2 -2
- package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +12 -1
- package/src/duckdb/src/include/duckdb/function/table_function.hpp +10 -0
- package/src/duckdb/src/include/duckdb/main/capi/capi_internal.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/client_data.hpp +3 -3
- package/src/duckdb/src/include/duckdb/main/config.hpp +3 -0
- package/src/duckdb/src/include/duckdb/main/connection_manager.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/database.hpp +1 -0
- package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/prepared_statement.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/relation/explain_relation.hpp +2 -1
- package/src/duckdb/src/include/duckdb/main/relation.hpp +2 -1
- package/src/duckdb/src/include/duckdb/optimizer/filter_pushdown.hpp +2 -0
- package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +2 -2
- package/src/duckdb/src/include/duckdb/optimizer/rule/list.hpp +1 -0
- package/src/duckdb/src/include/duckdb/optimizer/rule/ordered_aggregate_optimizer.hpp +24 -0
- package/src/duckdb/src/include/duckdb/parser/common_table_expression_info.hpp +4 -0
- package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +5 -0
- package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/expression/default_expression.hpp +1 -0
- package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +4 -2
- package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +4 -2
- package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +5 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_info.hpp +5 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/{alter_function_info.hpp → alter_scalar_function_info.hpp} +13 -13
- package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_function_info.hpp +47 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +6 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_table_function_info.hpp +2 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/sample_options.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +5 -0
- package/src/duckdb/src/include/duckdb/parser/query_node/recursive_cte_node.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/query_node/select_node.hpp +5 -0
- package/src/duckdb/src/include/duckdb/parser/query_node/set_operation_node.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/query_node.hpp +13 -2
- package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +24 -1
- package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +2 -1
- package/src/duckdb/src/include/duckdb/parser/statement/multi_statement.hpp +28 -0
- package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +6 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +4 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/list.hpp +1 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +87 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/tableref.hpp +3 -1
- package/src/duckdb/src/include/duckdb/parser/tokens.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/transformer.hpp +33 -0
- package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +2 -0
- package/src/duckdb/src/include/duckdb/planner/binder.hpp +15 -4
- package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/expression_binder/base_select_binder.hpp +64 -0
- package/src/duckdb/src/include/duckdb/planner/expression_binder/having_binder.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/expression_binder/order_binder.hpp +4 -1
- package/src/duckdb/src/include/duckdb/planner/expression_binder/qualify_binder.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/expression_binder/select_binder.hpp +9 -38
- package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/logical_tokens.hpp +1 -0
- package/src/duckdb/src/include/duckdb/planner/operator/list.hpp +1 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_asof_join.hpp +22 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_comparison_join.hpp +5 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_distinct.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/query_node/bound_select_node.hpp +8 -2
- package/src/duckdb/src/include/duckdb/storage/buffer/block_handle.hpp +2 -0
- package/src/duckdb/src/include/duckdb/storage/buffer_manager.hpp +76 -44
- package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_writer.hpp +3 -2
- package/src/duckdb/src/include/duckdb/storage/checkpoint_manager.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/chimp/chimp_fetch.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_scan.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_fetch.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_scan.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/data_pointer.hpp +5 -2
- package/src/duckdb/src/include/duckdb/storage/data_table.hpp +3 -3
- package/src/duckdb/src/include/duckdb/storage/index.hpp +4 -3
- package/src/duckdb/src/include/duckdb/storage/meta_block_reader.hpp +7 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/base_statistics.hpp +93 -29
- package/src/duckdb/src/include/duckdb/storage/statistics/column_statistics.hpp +22 -3
- package/src/duckdb/src/include/duckdb/storage/statistics/distinct_statistics.hpp +8 -6
- package/src/duckdb/src/include/duckdb/storage/statistics/list_stats.hpp +41 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/node_statistics.hpp +26 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/numeric_stats.hpp +114 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/numeric_stats_union.hpp +62 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/segment_statistics.hpp +2 -7
- package/src/duckdb/src/include/duckdb/storage/statistics/string_stats.hpp +74 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/struct_stats.hpp +42 -0
- package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +2 -3
- package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +6 -3
- package/src/duckdb/src/include/duckdb/storage/table/column_data_checkpointer.hpp +3 -2
- package/src/duckdb/src/include/duckdb/storage/table/column_segment.hpp +7 -5
- package/src/duckdb/src/include/duckdb/storage/table/list_column_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/persistent_table_data.hpp +6 -2
- package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +10 -6
- package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +8 -5
- package/src/duckdb/src/include/duckdb/storage/table/row_group_segment_tree.hpp +37 -0
- package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +10 -1
- package/src/duckdb/src/include/duckdb/storage/table/segment_base.hpp +4 -3
- package/src/duckdb/src/include/duckdb/storage/table/segment_tree.hpp +271 -26
- package/src/duckdb/src/include/duckdb/storage/table/table_statistics.hpp +5 -0
- package/src/duckdb/src/include/duckdb/storage/table/update_segment.hpp +0 -1
- package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +1 -1
- package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +2 -2
- package/src/duckdb/src/include/duckdb.h +50 -2
- package/src/duckdb/src/include/duckdb.hpp +0 -1
- package/src/duckdb/src/main/capi/pending-c.cpp +16 -3
- package/src/duckdb/src/main/capi/result-c.cpp +27 -1
- package/src/duckdb/src/main/capi/stream-c.cpp +25 -0
- package/src/duckdb/src/main/client_context.cpp +38 -34
- package/src/duckdb/src/main/client_data.cpp +7 -6
- package/src/duckdb/src/main/config.cpp +70 -1
- package/src/duckdb/src/main/database.cpp +19 -2
- package/src/duckdb/src/main/extension/extension_install.cpp +7 -2
- package/src/duckdb/src/main/prepared_statement.cpp +4 -0
- package/src/duckdb/src/main/query_profiler.cpp +17 -15
- package/src/duckdb/src/main/relation/explain_relation.cpp +3 -3
- package/src/duckdb/src/main/relation.cpp +3 -2
- package/src/duckdb/src/optimizer/column_lifetime_analyzer.cpp +1 -0
- package/src/duckdb/src/optimizer/deliminator.cpp +1 -1
- package/src/duckdb/src/optimizer/filter_combiner.cpp +1 -1
- package/src/duckdb/src/optimizer/filter_pullup.cpp +3 -1
- package/src/duckdb/src/optimizer/filter_pushdown.cpp +14 -8
- package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +105 -71
- package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +31 -12
- package/src/duckdb/src/optimizer/optimizer.cpp +1 -0
- package/src/duckdb/src/optimizer/pullup/pullup_from_left.cpp +2 -2
- package/src/duckdb/src/optimizer/pushdown/pushdown_aggregate.cpp +33 -5
- package/src/duckdb/src/optimizer/pushdown/pushdown_cross_product.cpp +1 -1
- package/src/duckdb/src/optimizer/pushdown/pushdown_inner_join.cpp +3 -0
- package/src/duckdb/src/optimizer/pushdown/pushdown_left_join.cpp +5 -12
- package/src/duckdb/src/optimizer/pushdown/pushdown_mark_join.cpp +2 -2
- package/src/duckdb/src/optimizer/pushdown/pushdown_single_join.cpp +1 -1
- package/src/duckdb/src/optimizer/remove_unused_columns.cpp +1 -0
- package/src/duckdb/src/optimizer/rule/move_constants.cpp +10 -4
- package/src/duckdb/src/optimizer/rule/ordered_aggregate_optimizer.cpp +30 -0
- package/src/duckdb/src/optimizer/rule/regex_optimizations.cpp +9 -2
- package/src/duckdb/src/optimizer/statistics/expression/propagate_aggregate.cpp +9 -3
- package/src/duckdb/src/optimizer/statistics/expression/propagate_and_compress.cpp +6 -7
- package/src/duckdb/src/optimizer/statistics/expression/propagate_cast.cpp +14 -11
- package/src/duckdb/src/optimizer/statistics/expression/propagate_columnref.cpp +1 -1
- package/src/duckdb/src/optimizer/statistics/expression/propagate_comparison.cpp +13 -15
- package/src/duckdb/src/optimizer/statistics/expression/propagate_conjunction.cpp +0 -1
- package/src/duckdb/src/optimizer/statistics/expression/propagate_constant.cpp +3 -75
- package/src/duckdb/src/optimizer/statistics/expression/propagate_function.cpp +7 -2
- package/src/duckdb/src/optimizer/statistics/expression/propagate_operator.cpp +10 -0
- package/src/duckdb/src/optimizer/statistics/operator/propagate_aggregate.cpp +2 -3
- package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +29 -32
- package/src/duckdb/src/optimizer/statistics/operator/propagate_join.cpp +5 -5
- package/src/duckdb/src/optimizer/statistics/operator/propagate_set_operation.cpp +3 -3
- package/src/duckdb/src/optimizer/statistics_propagator.cpp +2 -1
- package/src/duckdb/src/optimizer/unnest_rewriter.cpp +2 -2
- package/src/duckdb/src/parallel/meta_pipeline.cpp +0 -4
- package/src/duckdb/src/parser/common_table_expression_info.cpp +19 -0
- package/src/duckdb/src/parser/expression/between_expression.cpp +17 -0
- package/src/duckdb/src/parser/expression/case_expression.cpp +28 -0
- package/src/duckdb/src/parser/expression/cast_expression.cpp +17 -0
- package/src/duckdb/src/parser/expression/collate_expression.cpp +16 -0
- package/src/duckdb/src/parser/expression/columnref_expression.cpp +15 -0
- package/src/duckdb/src/parser/expression/comparison_expression.cpp +16 -0
- package/src/duckdb/src/parser/expression/conjunction_expression.cpp +17 -0
- package/src/duckdb/src/parser/expression/constant_expression.cpp +14 -0
- package/src/duckdb/src/parser/expression/default_expression.cpp +7 -0
- package/src/duckdb/src/parser/expression/function_expression.cpp +35 -0
- package/src/duckdb/src/parser/expression/lambda_expression.cpp +16 -0
- package/src/duckdb/src/parser/expression/operator_expression.cpp +15 -0
- package/src/duckdb/src/parser/expression/parameter_expression.cpp +15 -0
- package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +14 -0
- package/src/duckdb/src/parser/expression/star_expression.cpp +26 -6
- package/src/duckdb/src/parser/expression/subquery_expression.cpp +20 -0
- package/src/duckdb/src/parser/expression/window_expression.cpp +43 -0
- package/src/duckdb/src/parser/parsed_data/alter_info.cpp +7 -3
- package/src/duckdb/src/parser/parsed_data/alter_scalar_function_info.cpp +56 -0
- package/src/duckdb/src/parser/parsed_data/alter_table_function_info.cpp +51 -0
- package/src/duckdb/src/parser/parsed_data/create_scalar_function_info.cpp +3 -2
- package/src/duckdb/src/parser/parsed_data/create_table_function_info.cpp +6 -0
- package/src/duckdb/src/parser/parsed_data/sample_options.cpp +22 -10
- package/src/duckdb/src/parser/parsed_expression.cpp +72 -0
- package/src/duckdb/src/parser/parsed_expression_iterator.cpp +15 -1
- package/src/duckdb/src/parser/query_node/recursive_cte_node.cpp +21 -0
- package/src/duckdb/src/parser/query_node/select_node.cpp +31 -0
- package/src/duckdb/src/parser/query_node/set_operation_node.cpp +17 -0
- package/src/duckdb/src/parser/query_node.cpp +51 -1
- package/src/duckdb/src/parser/result_modifier.cpp +78 -0
- package/src/duckdb/src/parser/statement/multi_statement.cpp +18 -0
- package/src/duckdb/src/parser/statement/select_statement.cpp +12 -0
- package/src/duckdb/src/parser/tableref/basetableref.cpp +21 -0
- package/src/duckdb/src/parser/tableref/emptytableref.cpp +4 -0
- package/src/duckdb/src/parser/tableref/expressionlistref.cpp +17 -0
- package/src/duckdb/src/parser/tableref/joinref.cpp +29 -0
- package/src/duckdb/src/parser/tableref/pivotref.cpp +373 -0
- package/src/duckdb/src/parser/tableref/subqueryref.cpp +15 -0
- package/src/duckdb/src/parser/tableref/table_function.cpp +17 -0
- package/src/duckdb/src/parser/tableref.cpp +49 -0
- package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +11 -0
- package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +1 -1
- package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +17 -2
- package/src/duckdb/src/parser/transform/expression/transform_function.cpp +63 -42
- package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +1 -1
- package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +1 -1
- package/src/duckdb/src/parser/transform/helpers/transform_alias.cpp +12 -6
- package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +24 -0
- package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +7 -0
- package/src/duckdb/src/parser/transform/helpers/transform_orderby.cpp +0 -7
- package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +3 -2
- package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +4 -0
- package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +4 -0
- package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +179 -0
- package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +3 -4
- package/src/duckdb/src/parser/transform/statement/transform_select.cpp +8 -0
- package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +2 -3
- package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +12 -1
- package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +121 -0
- package/src/duckdb/src/parser/transform/tableref/transform_tableref.cpp +2 -0
- package/src/duckdb/src/parser/transformer.cpp +15 -3
- package/src/duckdb/src/planner/bind_context.cpp +18 -25
- package/src/duckdb/src/planner/binder/expression/bind_aggregate_expression.cpp +9 -7
- package/src/duckdb/src/planner/binder/expression/bind_columnref_expression.cpp +4 -3
- package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +23 -12
- package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +3 -2
- package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +176 -0
- package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +4 -0
- package/src/duckdb/src/planner/binder/expression/bind_unnest_expression.cpp +163 -24
- package/src/duckdb/src/planner/binder/expression/bind_window_expression.cpp +2 -2
- package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +109 -94
- package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +11 -0
- package/src/duckdb/src/planner/binder/query_node/plan_select_node.cpp +9 -4
- package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +5 -3
- package/src/duckdb/src/planner/binder/statement/bind_create.cpp +3 -2
- package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +9 -1
- package/src/duckdb/src/planner/binder/statement/bind_delete.cpp +1 -1
- package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +12 -8
- package/src/duckdb/src/planner/binder/statement/bind_logical_plan.cpp +17 -0
- package/src/duckdb/src/planner/binder/statement/bind_update.cpp +4 -2
- package/src/duckdb/src/planner/binder/tableref/bind_joinref.cpp +19 -3
- package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +366 -0
- package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +11 -1
- package/src/duckdb/src/planner/binder/tableref/plan_cteref.cpp +1 -0
- package/src/duckdb/src/planner/binder/tableref/plan_joinref.cpp +61 -13
- package/src/duckdb/src/planner/binder.cpp +19 -24
- package/src/duckdb/src/planner/bound_result_modifier.cpp +27 -1
- package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +9 -2
- package/src/duckdb/src/planner/expression/bound_expression.cpp +4 -0
- package/src/duckdb/src/planner/expression/bound_window_expression.cpp +1 -1
- package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +146 -0
- package/src/duckdb/src/planner/expression_binder/having_binder.cpp +6 -3
- package/src/duckdb/src/planner/expression_binder/qualify_binder.cpp +3 -3
- package/src/duckdb/src/planner/expression_binder/select_binder.cpp +1 -132
- package/src/duckdb/src/planner/expression_binder.cpp +10 -3
- package/src/duckdb/src/planner/expression_iterator.cpp +17 -10
- package/src/duckdb/src/planner/filter/constant_filter.cpp +4 -6
- package/src/duckdb/src/planner/logical_operator.cpp +7 -2
- package/src/duckdb/src/planner/logical_operator_visitor.cpp +6 -0
- package/src/duckdb/src/planner/operator/logical_asof_join.cpp +8 -0
- package/src/duckdb/src/planner/operator/logical_distinct.cpp +3 -0
- package/src/duckdb/src/planner/planner.cpp +2 -1
- package/src/duckdb/src/planner/pragma_handler.cpp +10 -2
- package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +3 -1
- package/src/duckdb/src/storage/buffer_manager.cpp +44 -46
- package/src/duckdb/src/storage/checkpoint/row_group_writer.cpp +1 -1
- package/src/duckdb/src/storage/checkpoint/table_data_reader.cpp +4 -15
- package/src/duckdb/src/storage/checkpoint/table_data_writer.cpp +10 -4
- package/src/duckdb/src/storage/checkpoint_manager.cpp +9 -3
- package/src/duckdb/src/storage/compression/bitpacking.cpp +28 -24
- package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +43 -45
- package/src/duckdb/src/storage/compression/numeric_constant.cpp +9 -10
- package/src/duckdb/src/storage/compression/patas.cpp +1 -1
- package/src/duckdb/src/storage/compression/rle.cpp +19 -15
- package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +5 -5
- package/src/duckdb/src/storage/data_table.cpp +20 -20
- package/src/duckdb/src/storage/index.cpp +12 -1
- package/src/duckdb/src/storage/local_storage.cpp +20 -23
- package/src/duckdb/src/storage/meta_block_reader.cpp +22 -0
- package/src/duckdb/src/storage/statistics/base_statistics.cpp +373 -128
- package/src/duckdb/src/storage/statistics/column_statistics.cpp +57 -3
- package/src/duckdb/src/storage/statistics/distinct_statistics.cpp +8 -9
- package/src/duckdb/src/storage/statistics/list_stats.cpp +121 -0
- package/src/duckdb/src/storage/statistics/numeric_stats.cpp +591 -0
- package/src/duckdb/src/storage/statistics/numeric_stats_union.cpp +65 -0
- package/src/duckdb/src/storage/statistics/segment_statistics.cpp +2 -11
- package/src/duckdb/src/storage/statistics/string_stats.cpp +273 -0
- package/src/duckdb/src/storage/statistics/struct_stats.cpp +133 -0
- package/src/duckdb/src/storage/storage_info.cpp +2 -2
- package/src/duckdb/src/storage/table/column_checkpoint_state.cpp +4 -10
- package/src/duckdb/src/storage/table/column_data.cpp +45 -46
- package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +7 -8
- package/src/duckdb/src/storage/table/column_segment.cpp +13 -14
- package/src/duckdb/src/storage/table/list_column_data.cpp +41 -59
- package/src/duckdb/src/storage/table/persistent_table_data.cpp +2 -1
- package/src/duckdb/src/storage/table/row_group.cpp +38 -32
- package/src/duckdb/src/storage/table/row_group_collection.cpp +94 -78
- package/src/duckdb/src/storage/table/scan_state.cpp +22 -3
- package/src/duckdb/src/storage/table/standard_column_data.cpp +7 -6
- package/src/duckdb/src/storage/table/struct_column_data.cpp +16 -16
- package/src/duckdb/src/storage/table/table_statistics.cpp +27 -7
- package/src/duckdb/src/storage/table/update_segment.cpp +20 -18
- package/src/duckdb/src/storage/wal_replay.cpp +8 -5
- package/src/duckdb/src/storage/write_ahead_log.cpp +2 -2
- package/src/duckdb/src/transaction/commit_state.cpp +11 -7
- package/src/duckdb/src/verification/deserialized_statement_verifier.cpp +0 -1
- package/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp +35 -0
- package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +36 -2
- package/src/duckdb/third_party/libpg_query/include/nodes/primnodes.hpp +3 -3
- package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +1022 -530
- package/src/duckdb/third_party/libpg_query/include/parser/kwlist.hpp +8 -0
- package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +24462 -22828
- package/src/duckdb/third_party/re2/re2/re2.cc +9 -0
- package/src/duckdb/third_party/re2/re2/re2.h +2 -0
- package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +4 -4
- package/src/duckdb/ub_extension_json_json_functions.cpp +2 -0
- package/src/duckdb/ub_src_common_serializer.cpp +2 -0
- package/src/duckdb/ub_src_execution_physical_plan.cpp +2 -0
- package/src/duckdb/ub_src_function_aggregate_distributive.cpp +2 -0
- package/src/duckdb/ub_src_function_scalar_bit.cpp +2 -0
- package/src/duckdb/ub_src_function_scalar_map.cpp +4 -0
- package/src/duckdb/ub_src_function_scalar_string.cpp +2 -0
- package/src/duckdb/ub_src_function_scalar_string_regexp.cpp +4 -0
- package/src/duckdb/ub_src_main_capi.cpp +2 -0
- package/src/duckdb/ub_src_optimizer_rule.cpp +2 -0
- package/src/duckdb/ub_src_parser.cpp +2 -0
- package/src/duckdb/ub_src_parser_parsed_data.cpp +4 -2
- package/src/duckdb/ub_src_parser_statement.cpp +2 -0
- package/src/duckdb/ub_src_parser_tableref.cpp +2 -0
- package/src/duckdb/ub_src_parser_transform_statement.cpp +2 -0
- package/src/duckdb/ub_src_parser_transform_tableref.cpp +2 -0
- package/src/duckdb/ub_src_planner_binder_expression.cpp +2 -0
- package/src/duckdb/ub_src_planner_binder_tableref.cpp +2 -0
- package/src/duckdb/ub_src_planner_expression_binder.cpp +2 -0
- package/src/duckdb/ub_src_planner_operator.cpp +2 -0
- package/src/duckdb/ub_src_storage_statistics.cpp +6 -6
- package/src/duckdb/ub_src_storage_table.cpp +0 -2
- package/src/duckdb_node.hpp +2 -1
- package/src/statement.cpp +5 -5
- package/src/utils.cpp +27 -2
- package/test/extension.test.ts +44 -26
- package/test/syntax_error.test.ts +3 -1
- package/filelist.cache +0 -0
- package/src/duckdb/src/include/duckdb/main/loadable_extension.hpp +0 -59
- package/src/duckdb/src/include/duckdb/storage/statistics/list_statistics.hpp +0 -36
- package/src/duckdb/src/include/duckdb/storage/statistics/numeric_statistics.hpp +0 -75
- package/src/duckdb/src/include/duckdb/storage/statistics/string_statistics.hpp +0 -49
- package/src/duckdb/src/include/duckdb/storage/statistics/struct_statistics.hpp +0 -36
- package/src/duckdb/src/include/duckdb/storage/statistics/validity_statistics.hpp +0 -45
- package/src/duckdb/src/parser/parsed_data/alter_function_info.cpp +0 -55
- package/src/duckdb/src/storage/statistics/list_statistics.cpp +0 -94
- package/src/duckdb/src/storage/statistics/numeric_statistics.cpp +0 -307
- package/src/duckdb/src/storage/statistics/string_statistics.cpp +0 -220
- package/src/duckdb/src/storage/statistics/struct_statistics.cpp +0 -108
- package/src/duckdb/src/storage/statistics/validity_statistics.cpp +0 -91
- package/src/duckdb/src/storage/table/segment_tree.cpp +0 -179
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
#include <type_traits>
|
|
3
|
+
#include "duckdb/common/vector.hpp"
|
|
4
|
+
#include "duckdb/common/unordered_map.hpp"
|
|
5
|
+
#include "duckdb/common/unordered_set.hpp"
|
|
6
|
+
|
|
7
|
+
namespace duckdb {
|
|
8
|
+
|
|
9
|
+
class FormatSerializer; // Forward declare
|
|
10
|
+
class FormatDeserializer; // Forward declare
|
|
11
|
+
|
|
12
|
+
// Backport to c++11
|
|
13
|
+
template <class...>
|
|
14
|
+
using void_t = void;
|
|
15
|
+
|
|
16
|
+
// Check for anything implementing a `void FormatSerialize(FormatSerializer &FormatSerializer)` method
|
|
17
|
+
template <typename T, typename = void_t<>>
|
|
18
|
+
struct has_serialize : std::false_type {};
|
|
19
|
+
|
|
20
|
+
template <typename T>
|
|
21
|
+
struct has_serialize<T, void_t<decltype(std::declval<T>().FormatSerialize(std::declval<FormatSerializer &>()))>>
|
|
22
|
+
: std::true_type {};
|
|
23
|
+
|
|
24
|
+
template <typename T>
|
|
25
|
+
constexpr bool has_serialize_v() {
|
|
26
|
+
return has_serialize<T>::value;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Check for anything implementing a static `T FormatDeserialize(FormatDeserializer&)` method
|
|
30
|
+
/*
|
|
31
|
+
template <typename T, typename = void_t<>>
|
|
32
|
+
struct has_deserialize : std::false_type {};
|
|
33
|
+
|
|
34
|
+
template <typename T>
|
|
35
|
+
struct has_deserialize<T, void_t<decltype(T::FormatDeserialize)>> : std::true_type {};
|
|
36
|
+
|
|
37
|
+
template <typename T>
|
|
38
|
+
constexpr bool has_deserialize_v() {
|
|
39
|
+
return has_deserialize<T>::value;
|
|
40
|
+
}*/
|
|
41
|
+
|
|
42
|
+
template <typename T, typename = T>
|
|
43
|
+
struct has_deserialize : std::false_type {};
|
|
44
|
+
|
|
45
|
+
// Accept `static unique_ptr<T> FormatDeserialize(FormatDeserializer& deserializer)`
|
|
46
|
+
template <typename T>
|
|
47
|
+
struct has_deserialize<
|
|
48
|
+
T, typename std::enable_if<std::is_same<decltype(T::FormatDeserialize), unique_ptr<T>(FormatDeserializer &)>::value,
|
|
49
|
+
T>::type> : std::true_type {};
|
|
50
|
+
|
|
51
|
+
// Accept `static shared_ptr<T> FormatDeserialize(FormatDeserializer& deserializer)`
|
|
52
|
+
template <typename T>
|
|
53
|
+
struct has_deserialize<
|
|
54
|
+
T, typename std::enable_if<std::is_same<decltype(T::FormatDeserialize), shared_ptr<T>(FormatDeserializer &)>::value,
|
|
55
|
+
T>::type> : std::true_type {};
|
|
56
|
+
|
|
57
|
+
// Accept `static T FormatDeserialize(FormatDeserializer& deserializer)`
|
|
58
|
+
template <typename T>
|
|
59
|
+
struct has_deserialize<
|
|
60
|
+
T, typename std::enable_if<std::is_same<decltype(T::FormatDeserialize), T(FormatDeserializer &)>::value, T>::type>
|
|
61
|
+
: std::true_type {};
|
|
62
|
+
|
|
63
|
+
// Check if T is a vector, and provide access to the inner type
|
|
64
|
+
template <typename T>
|
|
65
|
+
struct is_vector : std::false_type {};
|
|
66
|
+
template <typename T>
|
|
67
|
+
struct is_vector<typename std::vector<T>> : std::true_type {
|
|
68
|
+
typedef T ELEMENT_TYPE;
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
// Check if T is a unordered map, and provide access to the inner type
|
|
72
|
+
template <typename T>
|
|
73
|
+
struct is_unordered_map : std::false_type {};
|
|
74
|
+
template <typename... Args>
|
|
75
|
+
struct is_unordered_map<typename std::unordered_map<Args...>> : std::true_type {
|
|
76
|
+
typedef typename std::tuple_element<0, std::tuple<Args...>>::type KEY_TYPE;
|
|
77
|
+
typedef typename std::tuple_element<1, std::tuple<Args...>>::type VALUE_TYPE;
|
|
78
|
+
typedef typename std::tuple_element<2, std::tuple<Args...>>::type HASH_TYPE;
|
|
79
|
+
typedef typename std::tuple_element<3, std::tuple<Args...>>::type EQUAL_TYPE;
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
template <typename T>
|
|
83
|
+
struct is_unique_ptr : std::false_type {};
|
|
84
|
+
|
|
85
|
+
template <typename T, typename D>
|
|
86
|
+
struct is_unique_ptr<unique_ptr<T, D>> : std::true_type {
|
|
87
|
+
typedef T ELEMENT_TYPE;
|
|
88
|
+
typedef D DELETER_TYPE;
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
template <typename T>
|
|
92
|
+
struct is_shared_ptr : std::false_type {};
|
|
93
|
+
|
|
94
|
+
template <typename T>
|
|
95
|
+
struct is_shared_ptr<shared_ptr<T>> : std::true_type {
|
|
96
|
+
typedef T ELEMENT_TYPE;
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
template <typename T>
|
|
100
|
+
struct is_pair : std::false_type {};
|
|
101
|
+
|
|
102
|
+
template <typename T, typename U>
|
|
103
|
+
struct is_pair<std::pair<T, U>> : std::true_type {
|
|
104
|
+
typedef T FIRST_TYPE;
|
|
105
|
+
typedef U SECOND_TYPE;
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
template <typename T>
|
|
109
|
+
struct is_unordered_set : std::false_type {};
|
|
110
|
+
template <typename... Args>
|
|
111
|
+
struct is_unordered_set<std::unordered_set<Args...>> : std::true_type {
|
|
112
|
+
typedef typename std::tuple_element<0, std::tuple<Args...>>::type ELEMENT_TYPE;
|
|
113
|
+
typedef typename std::tuple_element<1, std::tuple<Args...>>::type HASH_TYPE;
|
|
114
|
+
typedef typename std::tuple_element<2, std::tuple<Args...>>::type EQUAL_TYPE;
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
template <typename T>
|
|
118
|
+
struct is_set : std::false_type {};
|
|
119
|
+
template <typename... Args>
|
|
120
|
+
struct is_set<std::set<Args...>> : std::true_type {
|
|
121
|
+
typedef typename std::tuple_element<0, std::tuple<Args...>>::type ELEMENT_TYPE;
|
|
122
|
+
typedef typename std::tuple_element<1, std::tuple<Args...>>::type HASH_TYPE;
|
|
123
|
+
typedef typename std::tuple_element<2, std::tuple<Args...>>::type EQUAL_TYPE;
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
} // namespace duckdb
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
#pragma once
|
|
10
10
|
|
|
11
|
+
#include "duckdb/catalog/catalog.hpp"
|
|
11
12
|
#include "duckdb/common/common.hpp"
|
|
12
13
|
#include "duckdb/common/exception.hpp"
|
|
13
14
|
#include "duckdb/common/vector.hpp"
|
|
@@ -21,6 +22,8 @@ private:
|
|
|
21
22
|
uint64_t version = 0L;
|
|
22
23
|
|
|
23
24
|
public:
|
|
25
|
+
bool is_query_plan = false;
|
|
26
|
+
|
|
24
27
|
virtual ~Serializer() {
|
|
25
28
|
}
|
|
26
29
|
|
|
@@ -111,6 +114,16 @@ public:
|
|
|
111
114
|
//! Reads [read_size] bytes into the buffer
|
|
112
115
|
virtual void ReadData(data_ptr_t buffer, idx_t read_size) = 0;
|
|
113
116
|
|
|
117
|
+
//! Gets the context for the deserializer
|
|
118
|
+
virtual ClientContext &GetContext() {
|
|
119
|
+
throw InternalException("This deserializer does not have a client-context");
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
//! Gets the catalog for the deserializer
|
|
123
|
+
virtual Catalog *GetCatalog() {
|
|
124
|
+
return nullptr;
|
|
125
|
+
};
|
|
126
|
+
|
|
114
127
|
template <class T>
|
|
115
128
|
T Read() {
|
|
116
129
|
T value;
|
|
@@ -21,6 +21,19 @@ namespace duckdb {
|
|
|
21
21
|
*/
|
|
22
22
|
class StringUtil {
|
|
23
23
|
public:
|
|
24
|
+
static uint8_t GetHexValue(char c) {
|
|
25
|
+
if (c >= '0' && c <= '9') {
|
|
26
|
+
return c - '0';
|
|
27
|
+
}
|
|
28
|
+
if (c >= 'a' && c <= 'f') {
|
|
29
|
+
return c - 'a' + 10;
|
|
30
|
+
}
|
|
31
|
+
if (c >= 'A' && c <= 'F') {
|
|
32
|
+
return c - 'A' + 10;
|
|
33
|
+
}
|
|
34
|
+
throw InvalidInputException("Invalid input for hex digit: %s", string(c, 1));
|
|
35
|
+
}
|
|
36
|
+
|
|
24
37
|
DUCKDB_API static bool CharacterIsSpace(char c) {
|
|
25
38
|
return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
|
|
26
39
|
}
|
|
@@ -170,6 +183,18 @@ public:
|
|
|
170
183
|
//! Equivalent to calling TopNLevenshtein followed by CandidatesMessage
|
|
171
184
|
DUCKDB_API static string CandidatesErrorMessage(const vector<string> &strings, const string &target,
|
|
172
185
|
const string &message_prefix, idx_t n = 5);
|
|
186
|
+
|
|
187
|
+
//! Returns true if two null-terminated strings are equal or point to the same address.
|
|
188
|
+
//! Returns false if only one of the strings is nullptr
|
|
189
|
+
DUCKDB_API static bool Equals(const char *s1, const char *s2) {
|
|
190
|
+
if (s1 == s2) {
|
|
191
|
+
return true;
|
|
192
|
+
}
|
|
193
|
+
if (s1 == nullptr || s2 == nullptr) {
|
|
194
|
+
return false;
|
|
195
|
+
}
|
|
196
|
+
return strcmp(s1, s2) == 0;
|
|
197
|
+
}
|
|
173
198
|
};
|
|
174
199
|
|
|
175
200
|
} // namespace duckdb
|
|
@@ -25,7 +25,7 @@ public:
|
|
|
25
25
|
//! Extracts the nth bit from bit string; the first (leftmost) bit is indexed 0
|
|
26
26
|
DUCKDB_API static idx_t GetBit(string_t bit_string, idx_t n);
|
|
27
27
|
//! Sets the nth bit in bit string to newvalue; the first (leftmost) bit is indexed 0
|
|
28
|
-
DUCKDB_API static void SetBit(
|
|
28
|
+
DUCKDB_API static void SetBit(string_t &bit_string, idx_t n, idx_t new_value);
|
|
29
29
|
//! Returns first starting index of the specified substring within bits, or zero if it's not present.
|
|
30
30
|
DUCKDB_API static idx_t BitPosition(string_t substring, string_t bits);
|
|
31
31
|
//! Converts bits to a string, writing the output to the designated output string.
|
|
@@ -36,9 +36,13 @@ public:
|
|
|
36
36
|
DUCKDB_API static bool TryGetBitStringSize(string_t str, idx_t &result_size, string *error_message);
|
|
37
37
|
//! Convert a string to a bit. This function should ONLY be called after calling GetBitSize, since it does NOT
|
|
38
38
|
//! perform data validation.
|
|
39
|
-
DUCKDB_API static void ToBit(string_t str,
|
|
39
|
+
DUCKDB_API static void ToBit(string_t str, string_t &output);
|
|
40
40
|
DUCKDB_API static string ToBit(string_t str);
|
|
41
|
+
//! Creates a new bitstring of determined length
|
|
42
|
+
DUCKDB_API static void BitString(const string_t &input, const idx_t &len, string_t &result);
|
|
41
43
|
DUCKDB_API static void SetEmptyBitString(string_t &target, string_t &input);
|
|
44
|
+
DUCKDB_API static void SetEmptyBitString(string_t &target, idx_t len);
|
|
45
|
+
DUCKDB_API static idx_t ComputeBitstringLen(idx_t len);
|
|
42
46
|
|
|
43
47
|
DUCKDB_API static void RightShift(const string_t &bit_string, const idx_t &shif, string_t &result);
|
|
44
48
|
DUCKDB_API static void LeftShift(const string_t &bit_string, const idx_t &shift, string_t &result);
|
|
@@ -47,11 +51,12 @@ public:
|
|
|
47
51
|
DUCKDB_API static void BitwiseXor(const string_t &rhs, const string_t &lhs, string_t &result);
|
|
48
52
|
DUCKDB_API static void BitwiseNot(const string_t &rhs, string_t &result);
|
|
49
53
|
|
|
54
|
+
DUCKDB_API static void Verify(const string_t &input);
|
|
55
|
+
|
|
50
56
|
private:
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
DUCKDB_API static void SetBit(string_t &bit_string, idx_t n, idx_t new_value);
|
|
57
|
+
static void Finalize(string_t &str);
|
|
58
|
+
static idx_t GetBitInternal(string_t bit_string, idx_t n);
|
|
59
|
+
static void SetBitInternal(string_t &bit_string, idx_t n, idx_t new_value);
|
|
60
|
+
static idx_t GetBitIndex(idx_t n);
|
|
56
61
|
};
|
|
57
62
|
} // namespace duckdb
|
|
@@ -39,6 +39,9 @@ public:
|
|
|
39
39
|
DUCKDB_API static string ConversionError(const string &str);
|
|
40
40
|
DUCKDB_API static string ConversionError(string_t str);
|
|
41
41
|
|
|
42
|
+
DUCKDB_API static dtime_t FromTimeMs(int64_t time_ms);
|
|
43
|
+
DUCKDB_API static dtime_t FromTimeNs(int64_t time_ns);
|
|
44
|
+
|
|
42
45
|
private:
|
|
43
46
|
static bool TryConvertInternal(const char *buf, idx_t len, idx_t &pos, dtime_t &result, bool strict);
|
|
44
47
|
};
|
|
@@ -23,6 +23,7 @@ class CastFunctionSet;
|
|
|
23
23
|
class Deserializer;
|
|
24
24
|
class Serializer;
|
|
25
25
|
struct GetCastFunctionInput;
|
|
26
|
+
struct ExtraValueInfo;
|
|
26
27
|
|
|
27
28
|
//! The Value object holds a single arbitrary value of any type that can be
|
|
28
29
|
//! stored in the database.
|
|
@@ -66,7 +67,7 @@ public:
|
|
|
66
67
|
inline LogicalType &GetTypeMutable() {
|
|
67
68
|
return type_;
|
|
68
69
|
}
|
|
69
|
-
inline const LogicalType &type() const {
|
|
70
|
+
inline const LogicalType &type() const { // NOLINT
|
|
70
71
|
return type_;
|
|
71
72
|
}
|
|
72
73
|
inline bool IsNull() const {
|
|
@@ -77,6 +78,10 @@ public:
|
|
|
77
78
|
DUCKDB_API static Value MinimumValue(const LogicalType &type);
|
|
78
79
|
//! Create the highest possible value of a given type (numeric only)
|
|
79
80
|
DUCKDB_API static Value MaximumValue(const LogicalType &type);
|
|
81
|
+
//! Create the negative infinite value of a given type (numeric only)
|
|
82
|
+
DUCKDB_API static Value NegativeInfinity(const LogicalType &type);
|
|
83
|
+
//! Create the positive infinite value of a given type (numeric only)
|
|
84
|
+
DUCKDB_API static Value Infinity(const LogicalType &type);
|
|
80
85
|
//! Create a Numeric value of the specified type with the specified value
|
|
81
86
|
DUCKDB_API static Value Numeric(const LogicalType &type, int64_t value);
|
|
82
87
|
DUCKDB_API static Value Numeric(const LogicalType &type, hugeint_t value);
|
|
@@ -150,17 +155,17 @@ public:
|
|
|
150
155
|
//! Cannot be called with an empty list, use either EMPTYLIST or LIST with a type instead
|
|
151
156
|
DUCKDB_API static Value LIST(vector<Value> values);
|
|
152
157
|
//! Create a list value with the given entries
|
|
153
|
-
DUCKDB_API static Value LIST(LogicalType child_type, vector<Value> values);
|
|
158
|
+
DUCKDB_API static Value LIST(const LogicalType &child_type, vector<Value> values);
|
|
154
159
|
//! Create an empty list with the specified child-type
|
|
155
|
-
DUCKDB_API static Value EMPTYLIST(LogicalType child_type);
|
|
160
|
+
DUCKDB_API static Value EMPTYLIST(const LogicalType &child_type);
|
|
156
161
|
//! Create a map value with the given entries
|
|
157
|
-
DUCKDB_API static Value MAP(LogicalType child_type, vector<Value> values);
|
|
162
|
+
DUCKDB_API static Value MAP(const LogicalType &child_type, vector<Value> values);
|
|
158
163
|
//! Create a union value from a selected value and a tag from a set of alternatives.
|
|
159
164
|
DUCKDB_API static Value UNION(child_list_t<LogicalType> members, uint8_t tag, Value value);
|
|
160
165
|
|
|
161
166
|
//! Create a blob Value from a data pointer and a length: no bytes are interpreted
|
|
162
167
|
DUCKDB_API static Value BLOB(const_data_ptr_t data, idx_t len);
|
|
163
|
-
DUCKDB_API static Value BLOB_RAW(const string &data) {
|
|
168
|
+
DUCKDB_API static Value BLOB_RAW(const string &data) { // NOLINT
|
|
164
169
|
return Value::BLOB((const_data_ptr_t)data.c_str(), data.size());
|
|
165
170
|
}
|
|
166
171
|
//! Creates a blob by casting a specified string to a blob (i.e. interpreting \x characters)
|
|
@@ -225,6 +230,8 @@ public:
|
|
|
225
230
|
|
|
226
231
|
//! Serializes a Value to a stand-alone binary blob
|
|
227
232
|
DUCKDB_API void Serialize(Serializer &serializer) const;
|
|
233
|
+
DUCKDB_API void FormatSerialize(FormatSerializer &serializer) const;
|
|
234
|
+
DUCKDB_API static Value FormatDeserialize(FormatDeserializer &deserializer);
|
|
228
235
|
//! Deserializes a Value from a blob
|
|
229
236
|
DUCKDB_API static Value Deserialize(Deserializer &source);
|
|
230
237
|
|
|
@@ -277,11 +284,8 @@ public:
|
|
|
277
284
|
|
|
278
285
|
private:
|
|
279
286
|
//! The logical of the value
|
|
280
|
-
LogicalType type_;
|
|
287
|
+
LogicalType type_; // NOLINT
|
|
281
288
|
|
|
282
|
-
#if DUCKDB_API_VERSION < DUCKDB_API_0_3_2
|
|
283
|
-
public:
|
|
284
|
-
#endif
|
|
285
289
|
//! Whether or not the value is NULL
|
|
286
290
|
bool is_null;
|
|
287
291
|
|
|
@@ -297,21 +301,17 @@ public:
|
|
|
297
301
|
uint32_t uinteger;
|
|
298
302
|
uint64_t ubigint;
|
|
299
303
|
hugeint_t hugeint;
|
|
300
|
-
float float_;
|
|
301
|
-
double double_;
|
|
304
|
+
float float_; // NOLINT
|
|
305
|
+
double double_; // NOLINT
|
|
302
306
|
uintptr_t pointer;
|
|
303
307
|
uint64_t hash;
|
|
304
308
|
date_t date;
|
|
305
309
|
dtime_t time;
|
|
306
310
|
timestamp_t timestamp;
|
|
307
311
|
interval_t interval;
|
|
308
|
-
} value_;
|
|
309
|
-
|
|
310
|
-
//! The value of the object, if it is of a variable size type
|
|
311
|
-
string str_value;
|
|
312
|
+
} value_; // NOLINT
|
|
312
313
|
|
|
313
|
-
|
|
314
|
-
vector<Value> list_value;
|
|
314
|
+
shared_ptr<ExtraValueInfo> value_info_; // NOLINT
|
|
315
315
|
|
|
316
316
|
private:
|
|
317
317
|
template <class T>
|
|
@@ -535,37 +535,6 @@ DUCKDB_API timestamp_t Value::GetValueUnsafe() const;
|
|
|
535
535
|
template <>
|
|
536
536
|
DUCKDB_API interval_t Value::GetValueUnsafe() const;
|
|
537
537
|
|
|
538
|
-
template <>
|
|
539
|
-
DUCKDB_API int8_t &Value::GetReferenceUnsafe();
|
|
540
|
-
template <>
|
|
541
|
-
DUCKDB_API int16_t &Value::GetReferenceUnsafe();
|
|
542
|
-
template <>
|
|
543
|
-
DUCKDB_API int32_t &Value::GetReferenceUnsafe();
|
|
544
|
-
template <>
|
|
545
|
-
DUCKDB_API int64_t &Value::GetReferenceUnsafe();
|
|
546
|
-
template <>
|
|
547
|
-
DUCKDB_API hugeint_t &Value::GetReferenceUnsafe();
|
|
548
|
-
template <>
|
|
549
|
-
DUCKDB_API uint8_t &Value::GetReferenceUnsafe();
|
|
550
|
-
template <>
|
|
551
|
-
DUCKDB_API uint16_t &Value::GetReferenceUnsafe();
|
|
552
|
-
template <>
|
|
553
|
-
DUCKDB_API uint32_t &Value::GetReferenceUnsafe();
|
|
554
|
-
template <>
|
|
555
|
-
DUCKDB_API uint64_t &Value::GetReferenceUnsafe();
|
|
556
|
-
template <>
|
|
557
|
-
DUCKDB_API float &Value::GetReferenceUnsafe();
|
|
558
|
-
template <>
|
|
559
|
-
DUCKDB_API double &Value::GetReferenceUnsafe();
|
|
560
|
-
template <>
|
|
561
|
-
DUCKDB_API date_t &Value::GetReferenceUnsafe();
|
|
562
|
-
template <>
|
|
563
|
-
DUCKDB_API dtime_t &Value::GetReferenceUnsafe();
|
|
564
|
-
template <>
|
|
565
|
-
DUCKDB_API timestamp_t &Value::GetReferenceUnsafe();
|
|
566
|
-
template <>
|
|
567
|
-
DUCKDB_API interval_t &Value::GetReferenceUnsafe();
|
|
568
|
-
|
|
569
538
|
template <>
|
|
570
539
|
DUCKDB_API bool Value::IsNan(float input);
|
|
571
540
|
template <>
|
|
@@ -162,6 +162,9 @@ public:
|
|
|
162
162
|
//! Deserializes a blob back into a Vector
|
|
163
163
|
DUCKDB_API void Deserialize(idx_t count, Deserializer &source);
|
|
164
164
|
|
|
165
|
+
DUCKDB_API void FormatSerialize(FormatSerializer &serializer, idx_t count);
|
|
166
|
+
DUCKDB_API void FormatDeserialize(FormatDeserializer &deserializer, idx_t count);
|
|
167
|
+
|
|
165
168
|
// Getters
|
|
166
169
|
inline VectorType GetVectorType() const {
|
|
167
170
|
return vector_type;
|
|
@@ -312,7 +315,6 @@ struct FlatVector {
|
|
|
312
315
|
return !vector.validity.RowIsValid(idx);
|
|
313
316
|
}
|
|
314
317
|
DUCKDB_API static const SelectionVector *IncrementalSelectionVector();
|
|
315
|
-
static Value GetValuesFromOffsets(Vector &values, vector<idx_t> &offsets);
|
|
316
318
|
};
|
|
317
319
|
|
|
318
320
|
struct ListVector {
|
|
@@ -17,12 +17,28 @@
|
|
|
17
17
|
|
|
18
18
|
namespace duckdb {
|
|
19
19
|
|
|
20
|
+
class FormatSerializer;
|
|
21
|
+
class FormatDeserializer;
|
|
20
22
|
class Serializer;
|
|
21
23
|
class Deserializer;
|
|
22
24
|
class Value;
|
|
23
25
|
class TypeCatalogEntry;
|
|
24
26
|
class Vector;
|
|
25
27
|
class ClientContext;
|
|
28
|
+
class FieldWriter;
|
|
29
|
+
|
|
30
|
+
//! Extra Type Info Type
|
|
31
|
+
enum class ExtraTypeInfoType : uint8_t {
|
|
32
|
+
INVALID_TYPE_INFO = 0,
|
|
33
|
+
GENERIC_TYPE_INFO = 1,
|
|
34
|
+
DECIMAL_TYPE_INFO = 2,
|
|
35
|
+
STRING_TYPE_INFO = 3,
|
|
36
|
+
LIST_TYPE_INFO = 4,
|
|
37
|
+
STRUCT_TYPE_INFO = 5,
|
|
38
|
+
ENUM_TYPE_INFO = 6,
|
|
39
|
+
USER_TYPE_INFO = 7,
|
|
40
|
+
AGGREGATE_STATE_TYPE_INFO = 8
|
|
41
|
+
};
|
|
26
42
|
|
|
27
43
|
struct hugeint_t {
|
|
28
44
|
public:
|
|
@@ -32,7 +48,7 @@ public:
|
|
|
32
48
|
public:
|
|
33
49
|
DUCKDB_API hugeint_t() = default;
|
|
34
50
|
DUCKDB_API hugeint_t(int64_t value); // NOLINT: Allow implicit conversion from `int64_t`
|
|
35
|
-
DUCKDB_API constexpr hugeint_t(int64_t upper, uint64_t lower): lower(lower), upper(upper) {}
|
|
51
|
+
DUCKDB_API constexpr hugeint_t(int64_t upper, uint64_t lower): lower(lower), upper(upper) {}
|
|
36
52
|
DUCKDB_API constexpr hugeint_t(const hugeint_t &rhs) = default;
|
|
37
53
|
DUCKDB_API constexpr hugeint_t(hugeint_t &&rhs) = default;
|
|
38
54
|
DUCKDB_API hugeint_t &operator=(const hugeint_t &rhs) = default;
|
|
@@ -94,6 +110,12 @@ struct list_entry_t {
|
|
|
94
110
|
list_entry_t() = default;
|
|
95
111
|
list_entry_t(uint64_t offset, uint64_t length) : offset(offset), length(length) {
|
|
96
112
|
}
|
|
113
|
+
inline constexpr bool operator != (const list_entry_t &other) const {
|
|
114
|
+
return !(*this == other);
|
|
115
|
+
}
|
|
116
|
+
inline constexpr bool operator == (const list_entry_t &other) const {
|
|
117
|
+
return offset == other.offset && length == other.length;
|
|
118
|
+
}
|
|
97
119
|
|
|
98
120
|
uint64_t offset;
|
|
99
121
|
uint64_t length;
|
|
@@ -261,7 +283,6 @@ enum class LogicalTypeId : uint8_t {
|
|
|
261
283
|
|
|
262
284
|
HUGEINT = 50,
|
|
263
285
|
POINTER = 51,
|
|
264
|
-
// HASH = 52, // deprecated, uses UBIGINT instead
|
|
265
286
|
VALIDITY = 53,
|
|
266
287
|
UUID = 54,
|
|
267
288
|
|
|
@@ -275,8 +296,8 @@ enum class LogicalTypeId : uint8_t {
|
|
|
275
296
|
UNION = 107
|
|
276
297
|
};
|
|
277
298
|
|
|
278
|
-
struct ExtraTypeInfo;
|
|
279
299
|
|
|
300
|
+
struct ExtraTypeInfo;
|
|
280
301
|
|
|
281
302
|
struct aggregate_state_t;
|
|
282
303
|
|
|
@@ -298,6 +319,11 @@ struct LogicalType {
|
|
|
298
319
|
inline const ExtraTypeInfo *AuxInfo() const {
|
|
299
320
|
return type_info_.get();
|
|
300
321
|
}
|
|
322
|
+
|
|
323
|
+
inline shared_ptr<ExtraTypeInfo> GetAuxInfoShrPtr() const {
|
|
324
|
+
return type_info_;
|
|
325
|
+
}
|
|
326
|
+
|
|
301
327
|
inline void CopyAuxInfo(const LogicalType& other) {
|
|
302
328
|
type_info_ = other.type_info_;
|
|
303
329
|
}
|
|
@@ -314,7 +340,7 @@ struct LogicalType {
|
|
|
314
340
|
inline LogicalType& operator=(LogicalType&& other) noexcept {
|
|
315
341
|
id_ = other.id_;
|
|
316
342
|
physical_type_ = other.physical_type_;
|
|
317
|
-
|
|
343
|
+
std::swap(type_info_, other.type_info_);
|
|
318
344
|
return *this;
|
|
319
345
|
}
|
|
320
346
|
|
|
@@ -325,9 +351,16 @@ struct LogicalType {
|
|
|
325
351
|
|
|
326
352
|
//! Serializes a LogicalType to a stand-alone binary blob
|
|
327
353
|
DUCKDB_API void Serialize(Serializer &serializer) const;
|
|
354
|
+
|
|
355
|
+
DUCKDB_API void SerializeEnumType(Serializer &serializer) const;
|
|
356
|
+
|
|
328
357
|
//! Deserializes a blob back into an LogicalType
|
|
329
358
|
DUCKDB_API static LogicalType Deserialize(Deserializer &source);
|
|
330
359
|
|
|
360
|
+
DUCKDB_API void FormatSerialize(FormatSerializer &serializer) const;
|
|
361
|
+
DUCKDB_API static LogicalType FormatDeserialize(FormatDeserializer &deserializer);
|
|
362
|
+
|
|
363
|
+
|
|
331
364
|
DUCKDB_API static bool TypeIsTimestamp(LogicalTypeId id) {
|
|
332
365
|
return (id == LogicalTypeId::TIMESTAMP ||
|
|
333
366
|
id == LogicalTypeId::TIMESTAMP_MS ||
|
|
@@ -350,6 +383,8 @@ struct LogicalType {
|
|
|
350
383
|
DUCKDB_API static void SetCatalog(LogicalType &type, TypeCatalogEntry* catalog_entry);
|
|
351
384
|
DUCKDB_API static TypeCatalogEntry* GetCatalog(const LogicalType &type);
|
|
352
385
|
|
|
386
|
+
DUCKDB_API static ExtraTypeInfoType GetExtraTypeInfoType(const ExtraTypeInfo &type);
|
|
387
|
+
|
|
353
388
|
//! Gets the decimal properties of a numeric type. Fails if the type is not numeric.
|
|
354
389
|
DUCKDB_API bool GetDecimalProperties(uint8_t &width, uint8_t &scale) const;
|
|
355
390
|
|
|
@@ -404,10 +439,10 @@ public:
|
|
|
404
439
|
// explicitly allowing these functions to be capitalized to be in-line with the remaining functions
|
|
405
440
|
DUCKDB_API static LogicalType DECIMAL(int width, int scale); // NOLINT
|
|
406
441
|
DUCKDB_API static LogicalType VARCHAR_COLLATION(string collation); // NOLINT
|
|
407
|
-
DUCKDB_API static LogicalType LIST( LogicalType child); // NOLINT
|
|
408
|
-
DUCKDB_API static LogicalType STRUCT( child_list_t<LogicalType> children); // NOLINT
|
|
442
|
+
DUCKDB_API static LogicalType LIST(const LogicalType &child); // NOLINT
|
|
443
|
+
DUCKDB_API static LogicalType STRUCT(const child_list_t<LogicalType> &children); // NOLINT
|
|
409
444
|
DUCKDB_API static LogicalType AGGREGATE_STATE(aggregate_state_t state_type); // NOLINT
|
|
410
|
-
DUCKDB_API static LogicalType MAP(LogicalType child); // NOLINT
|
|
445
|
+
DUCKDB_API static LogicalType MAP(const LogicalType &child); // NOLINT
|
|
411
446
|
DUCKDB_API static LogicalType MAP( child_list_t<LogicalType> children); // NOLINT
|
|
412
447
|
DUCKDB_API static LogicalType MAP(LogicalType key, LogicalType value); // NOLINT
|
|
413
448
|
DUCKDB_API static LogicalType UNION( child_list_t<LogicalType> members); // NOLINT
|
|
@@ -442,12 +477,14 @@ struct UserType{
|
|
|
442
477
|
struct EnumType{
|
|
443
478
|
DUCKDB_API static const string &GetTypeName(const LogicalType &type);
|
|
444
479
|
DUCKDB_API static int64_t GetPos(const LogicalType &type, const string_t& key);
|
|
445
|
-
DUCKDB_API static Vector &GetValuesInsertOrder(const LogicalType &type);
|
|
480
|
+
DUCKDB_API static const Vector &GetValuesInsertOrder(const LogicalType &type);
|
|
446
481
|
DUCKDB_API static idx_t GetSize(const LogicalType &type);
|
|
447
482
|
DUCKDB_API static const string GetValue(const Value &val);
|
|
448
483
|
DUCKDB_API static void SetCatalog(LogicalType &type, TypeCatalogEntry* catalog_entry);
|
|
449
484
|
DUCKDB_API static TypeCatalogEntry* GetCatalog(const LogicalType &type);
|
|
485
|
+
DUCKDB_API static string GetSchemaName(const LogicalType &type);
|
|
450
486
|
DUCKDB_API static PhysicalType GetPhysicalType(const LogicalType &type);
|
|
487
|
+
DUCKDB_API static void Serialize(FieldWriter& writer, const ExtraTypeInfo& type_info, bool serialize_internals);
|
|
451
488
|
};
|
|
452
489
|
|
|
453
490
|
struct StructType {
|
|
@@ -209,8 +209,8 @@ public:
|
|
|
209
209
|
|
|
210
210
|
template <class INPUT_TYPE, class RESULT_TYPE, class OP>
|
|
211
211
|
static void ExecuteString(Vector &input, Vector &result, idx_t count) {
|
|
212
|
-
UnaryExecutor::GenericExecute<
|
|
213
|
-
|
|
212
|
+
UnaryExecutor::GenericExecute<INPUT_TYPE, RESULT_TYPE, UnaryStringOperator<OP>>(input, result, count,
|
|
213
|
+
(void *)&result);
|
|
214
214
|
}
|
|
215
215
|
};
|
|
216
216
|
|
|
@@ -72,7 +72,7 @@ public:
|
|
|
72
72
|
vector<row_t> &result_ids) override;
|
|
73
73
|
|
|
74
74
|
//! Called when data is appended to the index. The lock obtained from InitializeLock must be held
|
|
75
|
-
|
|
75
|
+
PreservedError Append(IndexLock &lock, DataChunk &entries, Vector &row_identifiers) override;
|
|
76
76
|
//! Verify that data can be appended to the index without a constraint violation
|
|
77
77
|
void VerifyAppend(DataChunk &chunk) override;
|
|
78
78
|
//! Verify that data can be appended to the index without a constraint violation using the conflict manager
|
|
@@ -80,7 +80,7 @@ public:
|
|
|
80
80
|
//! Delete a chunk of entries from the index. The lock obtained from InitializeLock must be held
|
|
81
81
|
void Delete(IndexLock &lock, DataChunk &entries, Vector &row_identifiers) override;
|
|
82
82
|
//! Insert a chunk of entries into the index
|
|
83
|
-
|
|
83
|
+
PreservedError Insert(IndexLock &lock, DataChunk &data, Vector &row_ids) override;
|
|
84
84
|
|
|
85
85
|
//! Construct an ART from a vector of sorted keys
|
|
86
86
|
bool ConstructFromSorted(idx_t count, vector<Key> &keys, Vector &row_identifiers);
|
|
@@ -20,7 +20,7 @@ class PhysicalPerfectHashAggregate : public PhysicalOperator {
|
|
|
20
20
|
public:
|
|
21
21
|
PhysicalPerfectHashAggregate(ClientContext &context, vector<LogicalType> types,
|
|
22
22
|
vector<unique_ptr<Expression>> aggregates, vector<unique_ptr<Expression>> groups,
|
|
23
|
-
vector<unique_ptr<BaseStatistics>> group_stats, vector<idx_t> required_bits,
|
|
23
|
+
const vector<unique_ptr<BaseStatistics>> &group_stats, vector<idx_t> required_bits,
|
|
24
24
|
idx_t estimated_cardinality);
|
|
25
25
|
|
|
26
26
|
//! The groups
|
|
@@ -60,10 +60,12 @@ public:
|
|
|
60
60
|
|
|
61
61
|
OperatorResultType Execute(DataChunk &input, DataChunk &output);
|
|
62
62
|
|
|
63
|
+
// returns if the left side is scanned as a constant vector
|
|
63
64
|
bool ScanLHS() {
|
|
64
65
|
return scan_input_chunk;
|
|
65
66
|
}
|
|
66
67
|
|
|
68
|
+
// returns the position in the chunk of chunk scanned as a constant input vector
|
|
67
69
|
idx_t PositionInChunk() {
|
|
68
70
|
return position_in_chunk;
|
|
69
71
|
}
|
|
@@ -87,6 +87,7 @@ public:
|
|
|
87
87
|
// we have data left to read from the file
|
|
88
88
|
// read directly into the buffer
|
|
89
89
|
auto bytes_read = file_handle->Read((char *)buffer + result_offset, nr_bytes - result_offset);
|
|
90
|
+
file_size = file_handle->GetFileSize();
|
|
90
91
|
read_position += bytes_read;
|
|
91
92
|
if (reset_enabled) {
|
|
92
93
|
// if reset caching is enabled, we need to cache the bytes that we have read
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
#include "duckdb/common/types/value.hpp"
|
|
15
15
|
#include "duckdb/common/field_writer.hpp"
|
|
16
16
|
#include "duckdb/common/case_insensitive_map.hpp"
|
|
17
|
+
#include "duckdb/common/types.hpp"
|
|
17
18
|
|
|
18
19
|
namespace duckdb {
|
|
19
20
|
|
|
@@ -77,6 +78,11 @@ struct BufferedCSVReaderOptions {
|
|
|
77
78
|
vector<LogicalType> sql_type_list;
|
|
78
79
|
//! User-defined name list
|
|
79
80
|
vector<string> name_list;
|
|
81
|
+
//! Types considered as candidates for auto detection ordered by descending specificity (~ from high to low)
|
|
82
|
+
vector<LogicalType> auto_type_candidates = {LogicalType::VARCHAR, LogicalType::TIMESTAMP, LogicalType::DATE,
|
|
83
|
+
LogicalType::TIME, LogicalType::DOUBLE, LogicalType::BIGINT,
|
|
84
|
+
LogicalType::BOOLEAN, LogicalType::SQLNULL};
|
|
85
|
+
|
|
80
86
|
//===--------------------------------------------------------------------===//
|
|
81
87
|
// ReadCSVOptions
|
|
82
88
|
//===--------------------------------------------------------------------===//
|
|
@@ -30,6 +30,11 @@ public:
|
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
string ParamsToString() const override;
|
|
33
|
+
|
|
34
|
+
static unique_ptr<PhysicalOperator>
|
|
35
|
+
CreateJoinProjection(vector<LogicalType> proj_types, const vector<LogicalType> &lhs_types,
|
|
36
|
+
const vector<LogicalType> &rhs_types, const vector<idx_t> &left_projection_map,
|
|
37
|
+
const vector<idx_t> &right_projection_map, const idx_t estimated_cardinality);
|
|
33
38
|
};
|
|
34
39
|
|
|
35
40
|
} // namespace duckdb
|