duckdb 0.7.1 → 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
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
#include "duckdb/common/unordered_set.hpp"
|
|
13
13
|
|
|
14
14
|
namespace duckdb {
|
|
15
|
+
class Catalog;
|
|
15
16
|
class CatalogEntry;
|
|
16
17
|
|
|
17
18
|
//! The DependencyList
|
|
@@ -21,6 +22,8 @@ class DependencyList {
|
|
|
21
22
|
public:
|
|
22
23
|
DUCKDB_API void AddDependency(CatalogEntry *entry);
|
|
23
24
|
|
|
25
|
+
DUCKDB_API void VerifyDependencies(Catalog *catalog, const string &name);
|
|
26
|
+
|
|
24
27
|
private:
|
|
25
28
|
unordered_set<CatalogEntry *> set;
|
|
26
29
|
};
|
|
@@ -59,8 +59,9 @@ public:
|
|
|
59
59
|
DUCKDB_API string GetDBPath() override;
|
|
60
60
|
|
|
61
61
|
private:
|
|
62
|
+
DUCKDB_API void DropSchema(CatalogTransaction transaction, DropInfo *info);
|
|
62
63
|
DUCKDB_API void DropSchema(ClientContext &context, DropInfo *info) override;
|
|
63
|
-
|
|
64
|
+
CatalogEntry *CreateSchemaInternal(CatalogTransaction transaction, CreateSchemaInfo *info);
|
|
64
65
|
void Verify() override;
|
|
65
66
|
|
|
66
67
|
private:
|
|
@@ -18,6 +18,7 @@ class ColumnDataCollection;
|
|
|
18
18
|
class ColumnDataRowCollection;
|
|
19
19
|
|
|
20
20
|
enum class ValueRenderAlignment { LEFT, MIDDLE, RIGHT };
|
|
21
|
+
enum class RenderMode { ROWS, COLUMNS };
|
|
21
22
|
|
|
22
23
|
struct BoxRendererConfig {
|
|
23
24
|
// a max_width of 0 means we default to the terminal width
|
|
@@ -30,7 +31,10 @@ struct BoxRendererConfig {
|
|
|
30
31
|
// the max col width determines the maximum size of a single column
|
|
31
32
|
// note that the max col width is only used if the result does not fit on the screen
|
|
32
33
|
idx_t max_col_width = 20;
|
|
34
|
+
//! how to render NULL values
|
|
33
35
|
string null_value = "NULL";
|
|
36
|
+
//! Whether or not to render row-wise or column-wise
|
|
37
|
+
RenderMode render_mode = RenderMode::ROWS;
|
|
34
38
|
|
|
35
39
|
#ifndef DUCKDB_ASCII_TREE_RENDERER
|
|
36
40
|
const char *LTCORNER = "\342\224\214"; // "┌";
|
|
@@ -94,10 +98,12 @@ private:
|
|
|
94
98
|
string RenderType(const LogicalType &type);
|
|
95
99
|
ValueRenderAlignment TypeAlignment(const LogicalType &type);
|
|
96
100
|
string GetRenderValue(ColumnDataRowCollection &rows, idx_t c, idx_t r);
|
|
97
|
-
|
|
98
101
|
list<ColumnDataCollection> FetchRenderCollections(ClientContext &context, const ColumnDataCollection &result,
|
|
99
102
|
idx_t top_rows, idx_t bottom_rows);
|
|
100
|
-
|
|
103
|
+
list<ColumnDataCollection> PivotCollections(ClientContext &context, list<ColumnDataCollection> input,
|
|
104
|
+
vector<string> &column_names, vector<LogicalType> &result_types,
|
|
105
|
+
idx_t row_count);
|
|
106
|
+
vector<idx_t> ComputeRenderWidths(const vector<string> &names, const vector<LogicalType> &result_types,
|
|
101
107
|
list<ColumnDataCollection> &collections, idx_t min_width, idx_t max_width,
|
|
102
108
|
vector<idx_t> &column_map, idx_t &total_length);
|
|
103
109
|
void RenderHeader(const vector<string> &names, const vector<LogicalType> &result_types,
|
|
@@ -15,25 +15,6 @@
|
|
|
15
15
|
|
|
16
16
|
namespace duckdb {
|
|
17
17
|
|
|
18
|
-
// API versions
|
|
19
|
-
// if no explicit API version is defined, the latest API version is used
|
|
20
|
-
// Note that using older API versions (i.e. not using DUCKDB_API_LATEST) is deprecated.
|
|
21
|
-
// These will not be supported long-term, and will be removed in future versions.
|
|
22
|
-
|
|
23
|
-
#ifndef DUCKDB_API_0_3_1
|
|
24
|
-
#define DUCKDB_API_0_3_1 1
|
|
25
|
-
#endif
|
|
26
|
-
#ifndef DUCKDB_API_0_3_2
|
|
27
|
-
#define DUCKDB_API_0_3_2 2
|
|
28
|
-
#endif
|
|
29
|
-
#ifndef DUCKDB_API_LATEST
|
|
30
|
-
#define DUCKDB_API_LATEST DUCKDB_API_0_3_2
|
|
31
|
-
#endif
|
|
32
|
-
|
|
33
|
-
#ifndef DUCKDB_API_VERSION
|
|
34
|
-
#define DUCKDB_API_VERSION DUCKDB_API_LATEST
|
|
35
|
-
#endif
|
|
36
|
-
|
|
37
18
|
//! inline std directives that we use frequently
|
|
38
19
|
#ifndef DUCKDB_DEBUG_MOVE
|
|
39
20
|
using std::move;
|
|
@@ -205,11 +205,10 @@ string ExpressionTypeToOperator(ExpressionType type);
|
|
|
205
205
|
|
|
206
206
|
// Operator String to ExpressionType (e.g. + => OPERATOR_ADD)
|
|
207
207
|
ExpressionType OperatorToExpressionType(const string &op);
|
|
208
|
-
|
|
209
208
|
//! Negate a comparison expression, turning e.g. = into !=, or < into >=
|
|
210
|
-
ExpressionType
|
|
209
|
+
ExpressionType NegateComparisonExpression(ExpressionType type);
|
|
211
210
|
//! Flip a comparison expression, turning e.g. < into >, or = into =
|
|
212
|
-
ExpressionType
|
|
211
|
+
ExpressionType FlipComparisonExpression(ExpressionType type);
|
|
213
212
|
|
|
214
213
|
DUCKDB_API string ExpressionClassToString(ExpressionClass type);
|
|
215
214
|
|
|
@@ -16,10 +16,13 @@ namespace duckdb {
|
|
|
16
16
|
// Join Reference Types
|
|
17
17
|
//===--------------------------------------------------------------------===//
|
|
18
18
|
enum class JoinRefType : uint8_t {
|
|
19
|
-
REGULAR,
|
|
20
|
-
NATURAL,
|
|
21
|
-
CROSS,
|
|
22
|
-
POSITIONAL // Positional condition
|
|
19
|
+
REGULAR, // Explicit conditions
|
|
20
|
+
NATURAL, // Implied conditions
|
|
21
|
+
CROSS, // No condition
|
|
22
|
+
POSITIONAL, // Positional condition
|
|
23
|
+
ASOF // AsOf conditions
|
|
23
24
|
};
|
|
24
25
|
|
|
26
|
+
const char *ToString(JoinRefType value);
|
|
27
|
+
|
|
25
28
|
} // namespace duckdb
|
|
@@ -9,10 +9,12 @@
|
|
|
9
9
|
#pragma once
|
|
10
10
|
|
|
11
11
|
#include "duckdb/common/constants.hpp"
|
|
12
|
+
#include "duckdb/common/exception.hpp"
|
|
12
13
|
|
|
13
14
|
namespace duckdb {
|
|
14
15
|
|
|
15
16
|
enum class OrderType : uint8_t { INVALID = 0, ORDER_DEFAULT = 1, ASCENDING = 2, DESCENDING = 3 };
|
|
17
|
+
|
|
16
18
|
enum class OrderByNullType : uint8_t { INVALID = 0, ORDER_DEFAULT = 1, NULLS_FIRST = 2, NULLS_LAST = 3 };
|
|
17
19
|
|
|
18
20
|
} // namespace duckdb
|
|
@@ -23,7 +23,8 @@ enum class TableReferenceType : uint8_t {
|
|
|
23
23
|
TABLE_FUNCTION = 5, // table producing function
|
|
24
24
|
EXPRESSION_LIST = 6, // expression list
|
|
25
25
|
CTE = 7, // Recursive CTE
|
|
26
|
-
EMPTY = 8
|
|
26
|
+
EMPTY = 8, // placeholder for empty FROM
|
|
27
|
+
PIVOT = 9 // pivot statement
|
|
27
28
|
};
|
|
28
29
|
|
|
29
30
|
} // namespace duckdb
|
|
@@ -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
|
}
|
|
@@ -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);
|
|
@@ -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
|
|
@@ -14,14 +14,16 @@ namespace duckdb {
|
|
|
14
14
|
|
|
15
15
|
class BufferedFileReader : public Deserializer {
|
|
16
16
|
public:
|
|
17
|
-
BufferedFileReader(FileSystem &fs, const char *path,
|
|
18
|
-
FileOpener *opener = nullptr);
|
|
17
|
+
BufferedFileReader(FileSystem &fs, const char *path, ClientContext *context,
|
|
18
|
+
FileLockType lock_type = FileLockType::READ_LOCK, FileOpener *opener = nullptr);
|
|
19
19
|
|
|
20
20
|
FileSystem &fs;
|
|
21
21
|
unique_ptr<data_t[]> data;
|
|
22
22
|
idx_t offset;
|
|
23
23
|
idx_t read_data;
|
|
24
24
|
unique_ptr<FileHandle> handle;
|
|
25
|
+
ClientContext *context;
|
|
26
|
+
Catalog *catalog = nullptr;
|
|
25
27
|
|
|
26
28
|
public:
|
|
27
29
|
void ReadData(data_ptr_t buffer, uint64_t read_size) override;
|
|
@@ -35,6 +37,10 @@ public:
|
|
|
35
37
|
void Seek(uint64_t location);
|
|
36
38
|
uint64_t CurrentOffset();
|
|
37
39
|
|
|
40
|
+
ClientContext &GetContext() override;
|
|
41
|
+
|
|
42
|
+
Catalog *GetCatalog() override;
|
|
43
|
+
|
|
38
44
|
private:
|
|
39
45
|
idx_t file_size;
|
|
40
46
|
idx_t total_read;
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
#include <stdint.h>
|
|
3
|
+
|
|
4
|
+
namespace duckdb {
|
|
5
|
+
|
|
6
|
+
struct EnumSerializer {
|
|
7
|
+
// String -> Enum
|
|
8
|
+
template <class T>
|
|
9
|
+
static T StringToEnum(const char *value) = delete;
|
|
10
|
+
|
|
11
|
+
// Enum -> String
|
|
12
|
+
template <class T>
|
|
13
|
+
static const char *EnumToString(T value) = delete;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
enum class OrderType : uint8_t;
|
|
17
|
+
enum class OrderByNullType : uint8_t;
|
|
18
|
+
enum class ResultModifierType : uint8_t;
|
|
19
|
+
enum class ExtraTypeInfoType : uint8_t;
|
|
20
|
+
enum class TableReferenceType : uint8_t;
|
|
21
|
+
enum class JoinRefType : uint8_t;
|
|
22
|
+
enum class JoinType : uint8_t;
|
|
23
|
+
enum class AggregateHandling : uint8_t;
|
|
24
|
+
enum class QueryNodeType : uint8_t;
|
|
25
|
+
enum class SetOperationType : uint8_t;
|
|
26
|
+
enum class WindowBoundary : uint8_t;
|
|
27
|
+
enum class SubqueryType : uint8_t;
|
|
28
|
+
enum class ExpressionType : uint8_t;
|
|
29
|
+
enum class ExpressionClass : uint8_t;
|
|
30
|
+
enum class SampleMethod : uint8_t;
|
|
31
|
+
enum class LogicalTypeId : uint8_t;
|
|
32
|
+
|
|
33
|
+
template <>
|
|
34
|
+
OrderType EnumSerializer::StringToEnum<OrderType>(const char *value);
|
|
35
|
+
template <>
|
|
36
|
+
const char *EnumSerializer::EnumToString<OrderType>(OrderType value);
|
|
37
|
+
|
|
38
|
+
template <>
|
|
39
|
+
OrderByNullType EnumSerializer::StringToEnum<OrderByNullType>(const char *value);
|
|
40
|
+
template <>
|
|
41
|
+
const char *EnumSerializer::EnumToString<OrderByNullType>(OrderByNullType value);
|
|
42
|
+
|
|
43
|
+
template <>
|
|
44
|
+
ResultModifierType EnumSerializer::StringToEnum<ResultModifierType>(const char *value);
|
|
45
|
+
template <>
|
|
46
|
+
const char *EnumSerializer::EnumToString<ResultModifierType>(ResultModifierType value);
|
|
47
|
+
|
|
48
|
+
template <>
|
|
49
|
+
ExtraTypeInfoType EnumSerializer::StringToEnum<ExtraTypeInfoType>(const char *value);
|
|
50
|
+
template <>
|
|
51
|
+
const char *EnumSerializer::EnumToString<ExtraTypeInfoType>(ExtraTypeInfoType value);
|
|
52
|
+
|
|
53
|
+
template <>
|
|
54
|
+
TableReferenceType EnumSerializer::StringToEnum<TableReferenceType>(const char *value);
|
|
55
|
+
template <>
|
|
56
|
+
const char *EnumSerializer::EnumToString<TableReferenceType>(TableReferenceType value);
|
|
57
|
+
|
|
58
|
+
template <>
|
|
59
|
+
JoinRefType EnumSerializer::StringToEnum<JoinRefType>(const char *value);
|
|
60
|
+
template <>
|
|
61
|
+
const char *EnumSerializer::EnumToString<JoinRefType>(JoinRefType value);
|
|
62
|
+
|
|
63
|
+
template <>
|
|
64
|
+
JoinType EnumSerializer::StringToEnum<JoinType>(const char *value);
|
|
65
|
+
template <>
|
|
66
|
+
const char *EnumSerializer::EnumToString<JoinType>(JoinType value);
|
|
67
|
+
|
|
68
|
+
template <>
|
|
69
|
+
AggregateHandling EnumSerializer::StringToEnum<AggregateHandling>(const char *value);
|
|
70
|
+
template <>
|
|
71
|
+
const char *EnumSerializer::EnumToString<AggregateHandling>(AggregateHandling value);
|
|
72
|
+
|
|
73
|
+
template <>
|
|
74
|
+
QueryNodeType EnumSerializer::StringToEnum<QueryNodeType>(const char *value);
|
|
75
|
+
template <>
|
|
76
|
+
const char *EnumSerializer::EnumToString<QueryNodeType>(QueryNodeType value);
|
|
77
|
+
|
|
78
|
+
template <>
|
|
79
|
+
SetOperationType EnumSerializer::StringToEnum<SetOperationType>(const char *value);
|
|
80
|
+
template <>
|
|
81
|
+
const char *EnumSerializer::EnumToString<SetOperationType>(SetOperationType value);
|
|
82
|
+
|
|
83
|
+
template <>
|
|
84
|
+
WindowBoundary EnumSerializer::StringToEnum<WindowBoundary>(const char *value);
|
|
85
|
+
template <>
|
|
86
|
+
const char *EnumSerializer::EnumToString<WindowBoundary>(WindowBoundary value);
|
|
87
|
+
|
|
88
|
+
template <>
|
|
89
|
+
SubqueryType EnumSerializer::StringToEnum<SubqueryType>(const char *value);
|
|
90
|
+
template <>
|
|
91
|
+
const char *EnumSerializer::EnumToString<SubqueryType>(SubqueryType value);
|
|
92
|
+
|
|
93
|
+
template <>
|
|
94
|
+
ExpressionType EnumSerializer::StringToEnum<ExpressionType>(const char *value);
|
|
95
|
+
template <>
|
|
96
|
+
const char *EnumSerializer::EnumToString<ExpressionType>(ExpressionType value);
|
|
97
|
+
|
|
98
|
+
template <>
|
|
99
|
+
ExpressionClass EnumSerializer::StringToEnum<ExpressionClass>(const char *value);
|
|
100
|
+
template <>
|
|
101
|
+
const char *EnumSerializer::EnumToString<ExpressionClass>(ExpressionClass value);
|
|
102
|
+
|
|
103
|
+
template <>
|
|
104
|
+
SampleMethod EnumSerializer::StringToEnum<SampleMethod>(const char *value);
|
|
105
|
+
template <>
|
|
106
|
+
const char *EnumSerializer::EnumToString<SampleMethod>(SampleMethod value);
|
|
107
|
+
|
|
108
|
+
template <>
|
|
109
|
+
LogicalTypeId EnumSerializer::StringToEnum<LogicalTypeId>(const char *value);
|
|
110
|
+
template <>
|
|
111
|
+
const char *EnumSerializer::EnumToString<LogicalTypeId>(LogicalTypeId value);
|
|
112
|
+
|
|
113
|
+
} // namespace duckdb
|