duckdb 0.7.2-dev0.0 → 0.7.2-dev1138.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/icu/third_party/icu/stubdata/stubdata.cpp +1 -1
- 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/hive_partitioning.cpp +3 -1
- 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/progress_bar/progress_bar.cpp +7 -0
- 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/comparators.cpp +14 -5
- 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/interval.cpp +0 -41
- package/src/duckdb/src/common/types/list_segment.cpp +658 -0
- package/src/duckdb/src/common/types/string_heap.cpp +1 -1
- package/src/duckdb/src/common/types/string_type.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 +156 -128
- package/src/duckdb/src/common/types.cpp +313 -153
- package/src/duckdb/src/common/value_operations/comparison_operations.cpp +14 -22
- package/src/duckdb/src/common/vector_operations/comparison_operators.cpp +10 -10
- package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +11 -10
- 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/expression_executor/execute_comparison.cpp +2 -2
- package/src/duckdb/src/execution/index/art/art.cpp +19 -5
- package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +1 -1
- 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_hash_join.cpp +2 -0
- package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +2 -2
- package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +13 -4
- package/src/duckdb/src/execution/operator/join/physical_join.cpp +0 -3
- 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 +11 -4
- package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +24 -19
- package/src/duckdb/src/execution/operator/persistent/csv_reader_options.cpp +3 -0
- package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +2 -1
- package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +2 -2
- package/src/duckdb/src/execution/operator/persistent/physical_delete.cpp +1 -3
- package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -0
- 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/operator/set/physical_recursive_cte.cpp +0 -4
- package/src/duckdb/src/execution/partitionable_hashtable.cpp +14 -2
- package/src/duckdb/src/execution/physical_plan/plan_aggregate.cpp +22 -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_create_index.cpp +2 -1
- 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/radix_partitioned_hashtable.cpp +1 -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 +6 -712
- 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_sort.cpp +25 -18
- 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 +60 -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 +9 -12
- 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/helper.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/{http_stats.hpp → http_state.hpp} +18 -4
- package/src/duckdb/src/include/duckdb/common/operator/comparison_operators.hpp +45 -149
- 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/progress_bar/progress_bar.hpp +2 -0
- 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/interval.hpp +39 -3
- package/src/duckdb/src/include/duckdb/common/types/list_segment.hpp +70 -0
- package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +73 -3
- 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 +3 -14
- 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 +10 -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_config.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 +2 -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 +2 -1
- package/src/duckdb/src/include/duckdb/storage/data_pointer.hpp +4 -3
- package/src/duckdb/src/include/duckdb/storage/data_table.hpp +4 -3
- package/src/duckdb/src/include/duckdb/storage/index.hpp +5 -4
- 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 +21 -7
- 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 +5 -6
- package/src/duckdb/src/include/duckdb/storage/table/column_segment_tree.hpp +18 -0
- 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 -3
- package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +41 -45
- package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +23 -7
- package/src/duckdb/src/include/duckdb/storage/table/row_group_segment_tree.hpp +35 -0
- package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +21 -29
- package/src/duckdb/src/include/duckdb/storage/table/segment_base.hpp +6 -6
- package/src/duckdb/src/include/duckdb/storage/table/segment_tree.hpp +281 -26
- package/src/duckdb/src/include/duckdb/storage/table/standard_column_data.hpp +0 -4
- 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 +6 -3
- package/src/duckdb/src/include/duckdb.h +71 -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/capi/table_function-c.cpp +23 -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/main/settings/settings.cpp +20 -8
- 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 +3 -6
- 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 +107 -71
- package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +32 -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 -7
- 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 +85 -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 +10 -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 +29 -25
- package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +45 -46
- package/src/duckdb/src/storage/compression/numeric_constant.cpp +10 -11
- package/src/duckdb/src/storage/compression/patas.cpp +1 -1
- package/src/duckdb/src/storage/compression/rle.cpp +20 -15
- package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +6 -6
- package/src/duckdb/src/storage/data_table.cpp +23 -23
- package/src/duckdb/src/storage/index.cpp +12 -1
- package/src/duckdb/src/storage/local_storage.cpp +27 -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 +118 -62
- package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +10 -9
- package/src/duckdb/src/storage/table/column_segment.cpp +30 -45
- package/src/duckdb/src/storage/table/list_column_data.cpp +50 -71
- package/src/duckdb/src/storage/table/persistent_table_data.cpp +2 -1
- package/src/duckdb/src/storage/table/row_group.cpp +213 -143
- package/src/duckdb/src/storage/table/row_group_collection.cpp +151 -105
- package/src/duckdb/src/storage/table/scan_state.cpp +45 -33
- package/src/duckdb/src/storage/table/standard_column_data.cpp +11 -12
- package/src/duckdb/src/storage/table/struct_column_data.cpp +27 -34
- package/src/duckdb/src/storage/table/table_statistics.cpp +27 -7
- package/src/duckdb/src/storage/table/update_segment.cpp +23 -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_common_types.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
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
#include "duckdb/common/exception_format_value.hpp"
|
|
14
14
|
#include "duckdb/common/vector.hpp"
|
|
15
15
|
|
|
16
|
+
#include <map>
|
|
16
17
|
#include <stdexcept>
|
|
17
18
|
|
|
18
19
|
namespace duckdb {
|
|
@@ -76,8 +77,10 @@ enum class ExceptionType {
|
|
|
76
77
|
PERMISSION = 34, // insufficient permissions
|
|
77
78
|
PARAMETER_NOT_RESOLVED = 35, // parameter types could not be resolved
|
|
78
79
|
PARAMETER_NOT_ALLOWED = 36, // parameter types not allowed
|
|
79
|
-
DEPENDENCY = 37
|
|
80
|
+
DEPENDENCY = 37, // dependency
|
|
81
|
+
HTTP = 38
|
|
80
82
|
};
|
|
83
|
+
class HTTPException;
|
|
81
84
|
|
|
82
85
|
class Exception : public std::exception {
|
|
83
86
|
public:
|
|
@@ -91,7 +94,12 @@ public:
|
|
|
91
94
|
DUCKDB_API const string &RawMessage() const;
|
|
92
95
|
|
|
93
96
|
DUCKDB_API static string ExceptionTypeToString(ExceptionType type);
|
|
94
|
-
[[noreturn]] DUCKDB_API static void ThrowAsTypeWithMessage(ExceptionType type, const string &message
|
|
97
|
+
[[noreturn]] DUCKDB_API static void ThrowAsTypeWithMessage(ExceptionType type, const string &message,
|
|
98
|
+
const std::shared_ptr<Exception> &original);
|
|
99
|
+
virtual std::shared_ptr<Exception> Copy() const {
|
|
100
|
+
return make_shared<Exception>(type, raw_message_);
|
|
101
|
+
}
|
|
102
|
+
DUCKDB_API const HTTPException &AsHTTPException() const;
|
|
95
103
|
|
|
96
104
|
template <typename... Args>
|
|
97
105
|
static string ConstructMessage(const string &msg, Args... params) {
|
|
@@ -256,6 +264,8 @@ public:
|
|
|
256
264
|
class IOException : public Exception {
|
|
257
265
|
public:
|
|
258
266
|
DUCKDB_API explicit IOException(const string &msg);
|
|
267
|
+
DUCKDB_API explicit IOException(ExceptionType exception_type, const string &msg) : Exception(exception_type, msg) {
|
|
268
|
+
}
|
|
259
269
|
|
|
260
270
|
template <typename... Args>
|
|
261
271
|
explicit IOException(const string &msg, Args... params) : IOException(ConstructMessage(msg, params...)) {
|
|
@@ -272,6 +282,63 @@ public:
|
|
|
272
282
|
}
|
|
273
283
|
};
|
|
274
284
|
|
|
285
|
+
class HTTPException : public IOException {
|
|
286
|
+
public:
|
|
287
|
+
template <typename>
|
|
288
|
+
struct ResponseShape {
|
|
289
|
+
typedef int status;
|
|
290
|
+
};
|
|
291
|
+
|
|
292
|
+
template <class RESPONSE, typename ResponseShape<decltype(RESPONSE::status)>::status = 0, typename... ARGS>
|
|
293
|
+
explicit HTTPException(RESPONSE &response, const string &msg, ARGS... params)
|
|
294
|
+
: HTTPException(response.status, response.body, response.headers, response.reason, msg, params...) {
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
template <typename>
|
|
298
|
+
struct ResponseWrapperShape {
|
|
299
|
+
typedef int code;
|
|
300
|
+
};
|
|
301
|
+
template <class RESPONSE, typename ResponseWrapperShape<decltype(RESPONSE::code)>::code = 0, typename... ARGS>
|
|
302
|
+
explicit HTTPException(RESPONSE &response, const string &msg, ARGS... params)
|
|
303
|
+
: HTTPException(response.code, response.body, response.headers, response.error, msg, params...) {
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
template <typename HEADERS, typename... ARGS>
|
|
307
|
+
explicit HTTPException(int status_code, string response_body, HEADERS headers, const string &reason,
|
|
308
|
+
const string &msg, ARGS... params)
|
|
309
|
+
: IOException(ExceptionType::HTTP, ConstructMessage(msg, params...)), status_code(status_code), reason(reason),
|
|
310
|
+
response_body(std::move(response_body)) {
|
|
311
|
+
this->headers.insert(headers.begin(), headers.end());
|
|
312
|
+
D_ASSERT(this->headers.size() > 0);
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
std::shared_ptr<Exception> Copy() const {
|
|
316
|
+
return make_shared<HTTPException>(status_code, response_body, headers, reason, RawMessage());
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
const std::multimap<std::string, std::string> GetHeaders() const {
|
|
320
|
+
return headers;
|
|
321
|
+
}
|
|
322
|
+
int GetStatusCode() const {
|
|
323
|
+
return status_code;
|
|
324
|
+
}
|
|
325
|
+
const string &GetResponseBody() const {
|
|
326
|
+
return response_body;
|
|
327
|
+
}
|
|
328
|
+
const string &GetReason() const {
|
|
329
|
+
return reason;
|
|
330
|
+
}
|
|
331
|
+
[[noreturn]] void Throw() const {
|
|
332
|
+
throw HTTPException(status_code, response_body, headers, reason, RawMessage());
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
private:
|
|
336
|
+
int status_code;
|
|
337
|
+
string reason;
|
|
338
|
+
string response_body;
|
|
339
|
+
std::multimap<string, string> headers;
|
|
340
|
+
};
|
|
341
|
+
|
|
275
342
|
class SerializationException : public Exception {
|
|
276
343
|
public:
|
|
277
344
|
DUCKDB_API explicit SerializationException(const string &msg);
|
|
@@ -25,7 +25,7 @@ struct IndexWriteOperation {
|
|
|
25
25
|
|
|
26
26
|
class FieldWriter {
|
|
27
27
|
public:
|
|
28
|
-
DUCKDB_API FieldWriter(Serializer &serializer);
|
|
28
|
+
DUCKDB_API explicit FieldWriter(Serializer &serializer);
|
|
29
29
|
DUCKDB_API ~FieldWriter();
|
|
30
30
|
|
|
31
31
|
public:
|
|
@@ -128,11 +128,11 @@ public:
|
|
|
128
128
|
return *buffer;
|
|
129
129
|
}
|
|
130
130
|
|
|
131
|
-
private:
|
|
132
131
|
void AddField() {
|
|
133
132
|
field_count++;
|
|
134
133
|
}
|
|
135
134
|
|
|
135
|
+
private:
|
|
136
136
|
template <class T>
|
|
137
137
|
void Write(const T &element) {
|
|
138
138
|
WriteData((const_data_ptr_t)&element, sizeof(T));
|
|
@@ -152,7 +152,7 @@ DUCKDB_API void FieldWriter::Write(const string &val);
|
|
|
152
152
|
|
|
153
153
|
class FieldDeserializer : public Deserializer {
|
|
154
154
|
public:
|
|
155
|
-
FieldDeserializer(Deserializer &root);
|
|
155
|
+
explicit FieldDeserializer(Deserializer &root);
|
|
156
156
|
|
|
157
157
|
public:
|
|
158
158
|
void ReadData(data_ptr_t buffer, idx_t read_size) override;
|
|
@@ -163,6 +163,14 @@ public:
|
|
|
163
163
|
return root;
|
|
164
164
|
}
|
|
165
165
|
|
|
166
|
+
ClientContext &GetContext() override {
|
|
167
|
+
return root.GetContext();
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
Catalog *GetCatalog() override {
|
|
171
|
+
return root.GetCatalog();
|
|
172
|
+
}
|
|
173
|
+
|
|
166
174
|
private:
|
|
167
175
|
Deserializer &root;
|
|
168
176
|
idx_t remaining_data;
|
|
@@ -177,7 +185,7 @@ struct IndexReadOperation {
|
|
|
177
185
|
|
|
178
186
|
class FieldReader {
|
|
179
187
|
public:
|
|
180
|
-
DUCKDB_API FieldReader(Deserializer &source);
|
|
188
|
+
DUCKDB_API explicit FieldReader(Deserializer &source);
|
|
181
189
|
DUCKDB_API ~FieldReader();
|
|
182
190
|
|
|
183
191
|
public:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
//===----------------------------------------------------------------------===//
|
|
2
2
|
// DuckDB
|
|
3
3
|
//
|
|
4
|
-
// duckdb/common/
|
|
4
|
+
// duckdb/common/http_state.hpp
|
|
5
5
|
//
|
|
6
6
|
//
|
|
7
7
|
//===----------------------------------------------------------------------===//
|
|
@@ -15,7 +15,16 @@
|
|
|
15
15
|
|
|
16
16
|
namespace duckdb {
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
struct CachedFile {
|
|
19
|
+
//! Cached Data
|
|
20
|
+
shared_ptr<char> data;
|
|
21
|
+
//! Data capacity
|
|
22
|
+
uint64_t capacity = 0;
|
|
23
|
+
//! If we finished downloading the file
|
|
24
|
+
bool finished = false;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
class HTTPState {
|
|
19
28
|
public:
|
|
20
29
|
atomic<idx_t> head_count {0};
|
|
21
30
|
atomic<idx_t> get_count {0};
|
|
@@ -23,6 +32,10 @@ public:
|
|
|
23
32
|
atomic<idx_t> post_count {0};
|
|
24
33
|
atomic<idx_t> total_bytes_received {0};
|
|
25
34
|
atomic<idx_t> total_bytes_sent {0};
|
|
35
|
+
//! Mutex to lock when getting the cached file(Parallel Only)
|
|
36
|
+
mutex cached_files_mutex;
|
|
37
|
+
//! In case of fully downloading the file, the cached files of this query
|
|
38
|
+
unordered_map<string, CachedFile> cached_files;
|
|
26
39
|
|
|
27
40
|
void Reset() {
|
|
28
41
|
head_count = 0;
|
|
@@ -31,13 +44,14 @@ public:
|
|
|
31
44
|
post_count = 0;
|
|
32
45
|
total_bytes_received = 0;
|
|
33
46
|
total_bytes_sent = 0;
|
|
47
|
+
cached_files.clear();
|
|
34
48
|
}
|
|
35
49
|
|
|
36
50
|
//! helper function to get the HTTP
|
|
37
|
-
static
|
|
51
|
+
static HTTPState *TryGetState(FileOpener *opener) {
|
|
38
52
|
auto client_context = FileOpener::TryGetClientContext(opener);
|
|
39
53
|
if (client_context) {
|
|
40
|
-
return client_context->client_data->
|
|
54
|
+
return client_context->client_data->http_state.get();
|
|
41
55
|
}
|
|
42
56
|
return nullptr;
|
|
43
57
|
}
|
|
@@ -23,120 +23,122 @@ namespace duckdb {
|
|
|
23
23
|
//===--------------------------------------------------------------------===//
|
|
24
24
|
struct Equals {
|
|
25
25
|
template <class T>
|
|
26
|
-
DUCKDB_API static inline bool Operation(T left, T right) {
|
|
26
|
+
DUCKDB_API static inline bool Operation(const T &left, const T &right) {
|
|
27
27
|
return left == right;
|
|
28
28
|
}
|
|
29
29
|
};
|
|
30
30
|
struct NotEquals {
|
|
31
31
|
template <class T>
|
|
32
|
-
DUCKDB_API static inline bool Operation(T left, T right) {
|
|
32
|
+
DUCKDB_API static inline bool Operation(const T &left, const T &right) {
|
|
33
33
|
return !Equals::Operation(left, right);
|
|
34
34
|
}
|
|
35
35
|
};
|
|
36
36
|
|
|
37
37
|
struct GreaterThan {
|
|
38
38
|
template <class T>
|
|
39
|
-
DUCKDB_API static inline bool Operation(T left, T right) {
|
|
39
|
+
DUCKDB_API static inline bool Operation(const T &left, const T &right) {
|
|
40
40
|
return left > right;
|
|
41
41
|
}
|
|
42
42
|
};
|
|
43
43
|
|
|
44
44
|
struct GreaterThanEquals {
|
|
45
45
|
template <class T>
|
|
46
|
-
DUCKDB_API static inline bool Operation(T left, T right) {
|
|
47
|
-
return left
|
|
46
|
+
DUCKDB_API static inline bool Operation(const T &left, const T &right) {
|
|
47
|
+
return !GreaterThan::Operation(right, left);
|
|
48
48
|
}
|
|
49
49
|
};
|
|
50
50
|
|
|
51
51
|
struct LessThan {
|
|
52
52
|
template <class T>
|
|
53
|
-
DUCKDB_API static inline bool Operation(T left, T right) {
|
|
53
|
+
DUCKDB_API static inline bool Operation(const T &left, const T &right) {
|
|
54
54
|
return GreaterThan::Operation(right, left);
|
|
55
55
|
}
|
|
56
56
|
};
|
|
57
57
|
|
|
58
58
|
struct LessThanEquals {
|
|
59
59
|
template <class T>
|
|
60
|
-
DUCKDB_API static inline bool Operation(T left, T right) {
|
|
61
|
-
return
|
|
60
|
+
DUCKDB_API static inline bool Operation(const T &left, const T &right) {
|
|
61
|
+
return !GreaterThan::Operation(left, right);
|
|
62
62
|
}
|
|
63
63
|
};
|
|
64
64
|
|
|
65
65
|
template <>
|
|
66
|
-
DUCKDB_API bool Equals::Operation(float left, float right);
|
|
66
|
+
DUCKDB_API bool Equals::Operation(const float &left, const float &right);
|
|
67
67
|
template <>
|
|
68
|
-
DUCKDB_API bool Equals::Operation(double left, double right);
|
|
68
|
+
DUCKDB_API bool Equals::Operation(const double &left, const double &right);
|
|
69
69
|
|
|
70
70
|
template <>
|
|
71
|
-
DUCKDB_API bool GreaterThan::Operation(float left, float right);
|
|
71
|
+
DUCKDB_API bool GreaterThan::Operation(const float &left, const float &right);
|
|
72
72
|
template <>
|
|
73
|
-
DUCKDB_API bool GreaterThan::Operation(double left, double right);
|
|
73
|
+
DUCKDB_API bool GreaterThan::Operation(const double &left, const double &right);
|
|
74
74
|
|
|
75
75
|
template <>
|
|
76
|
-
DUCKDB_API bool GreaterThanEquals::Operation(float left, float right);
|
|
76
|
+
DUCKDB_API bool GreaterThanEquals::Operation(const float &left, const float &right);
|
|
77
77
|
template <>
|
|
78
|
-
DUCKDB_API bool GreaterThanEquals::Operation(double left, double right);
|
|
78
|
+
DUCKDB_API bool GreaterThanEquals::Operation(const double &left, const double &right);
|
|
79
79
|
|
|
80
80
|
// Distinct semantics are from Postgres record sorting. NULL = NULL and not-NULL < NULL
|
|
81
81
|
// Deferring to the non-distinct operations removes the need for further specialisation.
|
|
82
82
|
// TODO: To reverse the semantics, swap left_null and right_null for comparisons
|
|
83
83
|
struct DistinctFrom {
|
|
84
84
|
template <class T>
|
|
85
|
-
static inline bool Operation(T left, T right, bool left_null, bool right_null) {
|
|
86
|
-
|
|
85
|
+
static inline bool Operation(const T &left, const T &right, bool left_null, bool right_null) {
|
|
86
|
+
if (left_null || right_null) {
|
|
87
|
+
return left_null != right_null;
|
|
88
|
+
}
|
|
89
|
+
return NotEquals::Operation(left, right);
|
|
87
90
|
}
|
|
88
91
|
};
|
|
89
92
|
|
|
90
93
|
struct NotDistinctFrom {
|
|
91
94
|
template <class T>
|
|
92
|
-
static inline bool Operation(T left, T right, bool left_null, bool right_null) {
|
|
93
|
-
return
|
|
95
|
+
static inline bool Operation(const T &left, const T &right, bool left_null, bool right_null) {
|
|
96
|
+
return !DistinctFrom::Operation(left, right, left_null, right_null);
|
|
94
97
|
}
|
|
95
98
|
};
|
|
96
99
|
|
|
97
100
|
struct DistinctGreaterThan {
|
|
98
101
|
template <class T>
|
|
99
|
-
static inline bool Operation(T left, T right, bool left_null, bool right_null) {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
+
static inline bool Operation(const T &left, const T &right, bool left_null, bool right_null) {
|
|
103
|
+
if (left_null || right_null) {
|
|
104
|
+
return !right_null;
|
|
105
|
+
}
|
|
106
|
+
return GreaterThan::Operation(left, right);
|
|
102
107
|
}
|
|
103
108
|
};
|
|
104
109
|
|
|
105
110
|
struct DistinctGreaterThanNullsFirst {
|
|
106
111
|
template <class T>
|
|
107
|
-
static inline bool Operation(T left, T right, bool left_null, bool right_null) {
|
|
108
|
-
return
|
|
109
|
-
(!left_null && !right_null && GreaterThan::Operation(left, right));
|
|
112
|
+
static inline bool Operation(const T &left, const T &right, bool left_null, bool right_null) {
|
|
113
|
+
return DistinctGreaterThan::Operation(left, right, right_null, left_null);
|
|
110
114
|
}
|
|
111
115
|
};
|
|
112
116
|
|
|
113
117
|
struct DistinctGreaterThanEquals {
|
|
114
118
|
template <class T>
|
|
115
|
-
static inline bool Operation(T left, T right, bool left_null, bool right_null) {
|
|
116
|
-
return
|
|
119
|
+
static inline bool Operation(const T &left, const T &right, bool left_null, bool right_null) {
|
|
120
|
+
return !DistinctGreaterThan::Operation(right, left, right_null, left_null);
|
|
117
121
|
}
|
|
118
122
|
};
|
|
119
123
|
|
|
120
124
|
struct DistinctLessThan {
|
|
121
125
|
template <class T>
|
|
122
|
-
static inline bool Operation(T left, T right, bool left_null, bool right_null) {
|
|
123
|
-
return
|
|
124
|
-
(!left_null && !right_null && LessThan::Operation(left, right));
|
|
126
|
+
static inline bool Operation(const T &left, const T &right, bool left_null, bool right_null) {
|
|
127
|
+
return DistinctGreaterThan::Operation(right, left, right_null, left_null);
|
|
125
128
|
}
|
|
126
129
|
};
|
|
127
130
|
|
|
128
131
|
struct DistinctLessThanNullsFirst {
|
|
129
132
|
template <class T>
|
|
130
|
-
static inline bool Operation(T left, T right, bool left_null, bool right_null) {
|
|
131
|
-
return
|
|
132
|
-
(!left_null && !right_null && LessThan::Operation(left, right));
|
|
133
|
+
static inline bool Operation(const T &left, const T &right, bool left_null, bool right_null) {
|
|
134
|
+
return DistinctGreaterThan::Operation(right, left, left_null, right_null);
|
|
133
135
|
}
|
|
134
136
|
};
|
|
135
137
|
|
|
136
138
|
struct DistinctLessThanEquals {
|
|
137
139
|
template <class T>
|
|
138
|
-
static inline bool Operation(T left, T right, bool left_null, bool right_null) {
|
|
139
|
-
return
|
|
140
|
+
static inline bool Operation(const T &left, const T &right, bool left_null, bool right_null) {
|
|
141
|
+
return !DistinctGreaterThan::Operation(left, right, left_null, right_null);
|
|
140
142
|
}
|
|
141
143
|
};
|
|
142
144
|
|
|
@@ -144,124 +146,34 @@ struct DistinctLessThanEquals {
|
|
|
144
146
|
// Specialized Boolean Comparison Operators
|
|
145
147
|
//===--------------------------------------------------------------------===//
|
|
146
148
|
template <>
|
|
147
|
-
inline bool GreaterThan::Operation(bool left, bool right) {
|
|
149
|
+
inline bool GreaterThan::Operation(const bool &left, const bool &right) {
|
|
148
150
|
return !right && left;
|
|
149
151
|
}
|
|
150
|
-
template <>
|
|
151
|
-
inline bool LessThan::Operation(bool left, bool right) {
|
|
152
|
-
return !left && right;
|
|
153
|
-
}
|
|
154
152
|
//===--------------------------------------------------------------------===//
|
|
155
153
|
// Specialized String Comparison Operations
|
|
156
154
|
//===--------------------------------------------------------------------===//
|
|
157
|
-
struct StringComparisonOperators {
|
|
158
|
-
template <bool INVERSE>
|
|
159
|
-
static inline bool EqualsOrNot(const string_t a, const string_t b) {
|
|
160
|
-
if (a.IsInlined()) {
|
|
161
|
-
// small string: compare entire string
|
|
162
|
-
if (memcmp(&a, &b, sizeof(string_t)) == 0) {
|
|
163
|
-
// entire string is equal
|
|
164
|
-
return INVERSE ? false : true;
|
|
165
|
-
}
|
|
166
|
-
} else {
|
|
167
|
-
// large string: first check prefix and length
|
|
168
|
-
if (memcmp(&a, &b, string_t::HEADER_SIZE) == 0) {
|
|
169
|
-
// prefix and length are equal: check main string
|
|
170
|
-
if (memcmp(a.value.pointer.ptr, b.value.pointer.ptr, a.GetSize()) == 0) {
|
|
171
|
-
// entire string is equal
|
|
172
|
-
return INVERSE ? false : true;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
// not equal
|
|
177
|
-
return INVERSE ? true : false;
|
|
178
|
-
}
|
|
179
|
-
};
|
|
180
|
-
|
|
181
|
-
template <>
|
|
182
|
-
inline bool Equals::Operation(string_t left, string_t right) {
|
|
183
|
-
return StringComparisonOperators::EqualsOrNot<false>(left, right);
|
|
184
|
-
}
|
|
185
|
-
template <>
|
|
186
|
-
inline bool NotEquals::Operation(string_t left, string_t right) {
|
|
187
|
-
return StringComparisonOperators::EqualsOrNot<true>(left, right);
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
template <>
|
|
191
|
-
inline bool NotDistinctFrom::Operation(string_t left, string_t right, bool left_null, bool right_null) {
|
|
192
|
-
return (left_null && right_null) ||
|
|
193
|
-
(!left_null && !right_null && StringComparisonOperators::EqualsOrNot<false>(left, right));
|
|
194
|
-
}
|
|
195
|
-
template <>
|
|
196
|
-
inline bool DistinctFrom::Operation(string_t left, string_t right, bool left_null, bool right_null) {
|
|
197
|
-
return (left_null != right_null) ||
|
|
198
|
-
(!left_null && !right_null && StringComparisonOperators::EqualsOrNot<true>(left, right));
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
// compare up to shared length. if still the same, compare lengths
|
|
202
|
-
template <class OP>
|
|
203
|
-
static bool templated_string_compare_op(string_t left, string_t right) {
|
|
204
|
-
auto memcmp_res =
|
|
205
|
-
memcmp(left.GetDataUnsafe(), right.GetDataUnsafe(), MinValue<idx_t>(left.GetSize(), right.GetSize()));
|
|
206
|
-
auto final_res = memcmp_res == 0 ? OP::Operation(left.GetSize(), right.GetSize()) : OP::Operation(memcmp_res, 0);
|
|
207
|
-
return final_res;
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
template <>
|
|
211
|
-
inline bool GreaterThan::Operation(string_t left, string_t right) {
|
|
212
|
-
return templated_string_compare_op<GreaterThan>(left, right);
|
|
213
|
-
}
|
|
214
|
-
|
|
215
155
|
template <>
|
|
216
|
-
inline bool
|
|
217
|
-
return
|
|
156
|
+
inline bool Equals::Operation(const string_t &left, const string_t &right) {
|
|
157
|
+
return left == right;
|
|
218
158
|
}
|
|
219
159
|
|
|
220
160
|
template <>
|
|
221
|
-
inline bool
|
|
222
|
-
return
|
|
161
|
+
inline bool GreaterThan::Operation(const string_t &left, const string_t &right) {
|
|
162
|
+
return left > right;
|
|
223
163
|
}
|
|
224
164
|
|
|
225
|
-
template <>
|
|
226
|
-
inline bool LessThanEquals::Operation(string_t left, string_t right) {
|
|
227
|
-
return templated_string_compare_op<LessThanEquals>(left, right);
|
|
228
|
-
}
|
|
229
165
|
//===--------------------------------------------------------------------===//
|
|
230
166
|
// Specialized Interval Comparison Operators
|
|
231
167
|
//===--------------------------------------------------------------------===//
|
|
232
168
|
template <>
|
|
233
|
-
inline bool Equals::Operation(interval_t left, interval_t right) {
|
|
169
|
+
inline bool Equals::Operation(const interval_t &left, const interval_t &right) {
|
|
234
170
|
return Interval::Equals(left, right);
|
|
235
171
|
}
|
|
236
172
|
template <>
|
|
237
|
-
inline bool
|
|
238
|
-
return !Equals::Operation(left, right);
|
|
239
|
-
}
|
|
240
|
-
template <>
|
|
241
|
-
inline bool GreaterThan::Operation(interval_t left, interval_t right) {
|
|
173
|
+
inline bool GreaterThan::Operation(const interval_t &left, const interval_t &right) {
|
|
242
174
|
return Interval::GreaterThan(left, right);
|
|
243
175
|
}
|
|
244
|
-
template <>
|
|
245
|
-
inline bool GreaterThanEquals::Operation(interval_t left, interval_t right) {
|
|
246
|
-
return Interval::GreaterThanEquals(left, right);
|
|
247
|
-
}
|
|
248
|
-
template <>
|
|
249
|
-
inline bool LessThan::Operation(interval_t left, interval_t right) {
|
|
250
|
-
return GreaterThan::Operation(right, left);
|
|
251
|
-
}
|
|
252
|
-
template <>
|
|
253
|
-
inline bool LessThanEquals::Operation(interval_t left, interval_t right) {
|
|
254
|
-
return GreaterThanEquals::Operation(right, left);
|
|
255
|
-
}
|
|
256
176
|
|
|
257
|
-
template <>
|
|
258
|
-
inline bool NotDistinctFrom::Operation(interval_t left, interval_t right, bool left_null, bool right_null) {
|
|
259
|
-
return (left_null && right_null) || (!left_null && !right_null && Interval::Equals(left, right));
|
|
260
|
-
}
|
|
261
|
-
template <>
|
|
262
|
-
inline bool DistinctFrom::Operation(interval_t left, interval_t right, bool left_null, bool right_null) {
|
|
263
|
-
return (left_null != right_null) || (!left_null && !right_null && !Equals::Operation(left, right));
|
|
264
|
-
}
|
|
265
177
|
inline bool operator<(const interval_t &lhs, const interval_t &rhs) {
|
|
266
178
|
return LessThan::Operation(lhs, rhs);
|
|
267
179
|
}
|
|
@@ -270,27 +182,11 @@ inline bool operator<(const interval_t &lhs, const interval_t &rhs) {
|
|
|
270
182
|
// Specialized Hugeint Comparison Operators
|
|
271
183
|
//===--------------------------------------------------------------------===//
|
|
272
184
|
template <>
|
|
273
|
-
inline bool Equals::Operation(hugeint_t left, hugeint_t right) {
|
|
185
|
+
inline bool Equals::Operation(const hugeint_t &left, const hugeint_t &right) {
|
|
274
186
|
return Hugeint::Equals(left, right);
|
|
275
187
|
}
|
|
276
188
|
template <>
|
|
277
|
-
inline bool
|
|
278
|
-
return Hugeint::NotEquals(left, right);
|
|
279
|
-
}
|
|
280
|
-
template <>
|
|
281
|
-
inline bool GreaterThan::Operation(hugeint_t left, hugeint_t right) {
|
|
189
|
+
inline bool GreaterThan::Operation(const hugeint_t &left, const hugeint_t &right) {
|
|
282
190
|
return Hugeint::GreaterThan(left, right);
|
|
283
191
|
}
|
|
284
|
-
template <>
|
|
285
|
-
inline bool GreaterThanEquals::Operation(hugeint_t left, hugeint_t right) {
|
|
286
|
-
return Hugeint::GreaterThanEquals(left, right);
|
|
287
|
-
}
|
|
288
|
-
template <>
|
|
289
|
-
inline bool LessThan::Operation(hugeint_t left, hugeint_t right) {
|
|
290
|
-
return Hugeint::LessThan(left, right);
|
|
291
|
-
}
|
|
292
|
-
template <>
|
|
293
|
-
inline bool LessThanEquals::Operation(hugeint_t left, hugeint_t right) {
|
|
294
|
-
return Hugeint::LessThanEquals(left, right);
|
|
295
|
-
}
|
|
296
192
|
} // namespace duckdb
|
|
@@ -56,6 +56,8 @@ template <>
|
|
|
56
56
|
bool TryMultiplyOperator::Operation(int32_t left, int32_t right, int32_t &result);
|
|
57
57
|
template <>
|
|
58
58
|
DUCKDB_API bool TryMultiplyOperator::Operation(int64_t left, int64_t right, int64_t &result);
|
|
59
|
+
template <>
|
|
60
|
+
DUCKDB_API bool TryMultiplyOperator::Operation(hugeint_t left, hugeint_t right, hugeint_t &result);
|
|
59
61
|
|
|
60
62
|
struct MultiplyOperatorOverflowCheck {
|
|
61
63
|
template <class TA, class TB, class TR>
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
//===----------------------------------------------------------------------===//
|
|
2
|
+
// DuckDB
|
|
3
|
+
//
|
|
4
|
+
// duckdb/common/optional_ptr.hpp
|
|
5
|
+
//
|
|
6
|
+
//
|
|
7
|
+
//===----------------------------------------------------------------------===//
|
|
8
|
+
|
|
9
|
+
#pragma once
|
|
10
|
+
|
|
11
|
+
#include "duckdb/common/exception.hpp"
|
|
12
|
+
|
|
13
|
+
namespace duckdb {
|
|
14
|
+
|
|
15
|
+
template <class T>
|
|
16
|
+
class optional_ptr {
|
|
17
|
+
public:
|
|
18
|
+
optional_ptr() : ptr(nullptr) {
|
|
19
|
+
}
|
|
20
|
+
optional_ptr(T *ptr_p) : ptr(ptr_p) { // NOLINT: allow implicit creation from pointer
|
|
21
|
+
}
|
|
22
|
+
optional_ptr(const unique_ptr<T> &ptr_p) : ptr(ptr_p.get()) { // NOLINT: allow implicit creation from unique pointer
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
operator bool() const {
|
|
26
|
+
return ptr;
|
|
27
|
+
}
|
|
28
|
+
T &operator*() {
|
|
29
|
+
if (!ptr) {
|
|
30
|
+
throw InternalException("Attempting to dereference an optional pointer that is not set");
|
|
31
|
+
}
|
|
32
|
+
return *ptr;
|
|
33
|
+
}
|
|
34
|
+
T *operator->() {
|
|
35
|
+
if (!ptr) {
|
|
36
|
+
throw InternalException("Attempting to call a method on an optional pointer that is not set");
|
|
37
|
+
}
|
|
38
|
+
return ptr;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
private:
|
|
42
|
+
T *ptr;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
} // namespace duckdb
|
|
@@ -19,7 +19,8 @@ public:
|
|
|
19
19
|
DUCKDB_API PreservedError();
|
|
20
20
|
//! From std::exception
|
|
21
21
|
PreservedError(const std::exception &ex)
|
|
22
|
-
: initialized(true), type(ExceptionType::INVALID), raw_message(SanitizeErrorMessage(ex.what()))
|
|
22
|
+
: initialized(true), type(ExceptionType::INVALID), raw_message(SanitizeErrorMessage(ex.what())),
|
|
23
|
+
exception_instance(nullptr) {
|
|
23
24
|
}
|
|
24
25
|
//! From a raw string
|
|
25
26
|
DUCKDB_API explicit PreservedError(const string &raw_message);
|
|
@@ -38,6 +39,9 @@ public:
|
|
|
38
39
|
//! Let's us do things like 'if (error)'
|
|
39
40
|
DUCKDB_API operator bool() const;
|
|
40
41
|
DUCKDB_API bool operator==(const PreservedError &other) const;
|
|
42
|
+
DUCKDB_API const shared_ptr<Exception> &GetError() {
|
|
43
|
+
return exception_instance;
|
|
44
|
+
}
|
|
41
45
|
|
|
42
46
|
private:
|
|
43
47
|
//! Whether this PreservedError contains an exception or not
|
|
@@ -48,6 +52,7 @@ private:
|
|
|
48
52
|
string raw_message;
|
|
49
53
|
//! The final message (stored in the preserved error for compatibility reasons with C-API)
|
|
50
54
|
string final_message;
|
|
55
|
+
std::shared_ptr<Exception> exception_instance;
|
|
51
56
|
|
|
52
57
|
private:
|
|
53
58
|
DUCKDB_API static string SanitizeErrorMessage(string error);
|
|
@@ -16,11 +16,13 @@
|
|
|
16
16
|
|
|
17
17
|
namespace duckdb {
|
|
18
18
|
|
|
19
|
+
struct ClientConfig;
|
|
19
20
|
typedef unique_ptr<ProgressBarDisplay> (*progress_bar_display_create_func_t)();
|
|
20
21
|
|
|
21
22
|
class ProgressBar {
|
|
22
23
|
public:
|
|
23
24
|
static unique_ptr<ProgressBarDisplay> DefaultProgressBarDisplay();
|
|
25
|
+
static void SystemOverrideCheck(ClientConfig &config);
|
|
24
26
|
|
|
25
27
|
explicit ProgressBar(
|
|
26
28
|
Executor &executor, idx_t show_progress_after,
|
|
@@ -26,14 +26,16 @@ public:
|
|
|
26
26
|
void ReadData(data_ptr_t buffer, uint64_t read_size) override;
|
|
27
27
|
};
|
|
28
28
|
|
|
29
|
-
class
|
|
29
|
+
class BufferedContextDeserializer : public BufferedDeserializer {
|
|
30
30
|
public:
|
|
31
|
-
|
|
31
|
+
BufferedContextDeserializer(ClientContext &context_p, data_ptr_t ptr, idx_t data_size)
|
|
32
32
|
: BufferedDeserializer(ptr, data_size), context(context_p) {
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
public:
|
|
36
36
|
ClientContext &context;
|
|
37
|
+
|
|
38
|
+
ClientContext &GetContext() override;
|
|
37
39
|
};
|
|
38
40
|
|
|
39
41
|
} // namespace duckdb
|