duckdb 0.7.2-dev0.0 → 0.7.2-dev1034.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.gyp +12 -7
- package/lib/duckdb.d.ts +55 -2
- package/lib/duckdb.js +20 -1
- package/package.json +1 -1
- package/src/connection.cpp +1 -2
- package/src/database.cpp +1 -1
- package/src/duckdb/extension/icu/icu-extension.cpp +4 -0
- package/src/duckdb/extension/icu/icu-list-range.cpp +207 -0
- package/src/duckdb/extension/icu/icu-table-range.cpp +194 -0
- package/src/duckdb/extension/icu/include/icu-list-range.hpp +17 -0
- package/src/duckdb/extension/icu/include/icu-table-range.hpp +17 -0
- package/src/duckdb/extension/json/include/json_common.hpp +1 -0
- package/src/duckdb/extension/json/include/json_functions.hpp +2 -0
- package/src/duckdb/extension/json/include/json_serializer.hpp +77 -0
- package/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp +147 -0
- package/src/duckdb/extension/json/json_functions/read_json.cpp +6 -5
- package/src/duckdb/extension/json/json_functions.cpp +12 -4
- package/src/duckdb/extension/json/json_scan.cpp +2 -2
- package/src/duckdb/extension/json/json_serializer.cpp +217 -0
- package/src/duckdb/extension/parquet/column_reader.cpp +94 -15
- package/src/duckdb/extension/parquet/column_writer.cpp +0 -1
- package/src/duckdb/extension/parquet/include/column_reader.hpp +1 -2
- package/src/duckdb/extension/parquet/include/decode_utils.hpp +5 -4
- package/src/duckdb/extension/parquet/include/generated_column_reader.hpp +1 -11
- package/src/duckdb/extension/parquet/include/parquet_timestamp.hpp +2 -1
- package/src/duckdb/extension/parquet/parquet-extension.cpp +12 -2
- package/src/duckdb/extension/parquet/parquet_reader.cpp +1 -1
- package/src/duckdb/extension/parquet/parquet_statistics.cpp +26 -32
- package/src/duckdb/extension/parquet/parquet_timestamp.cpp +16 -6
- package/src/duckdb/src/catalog/catalog.cpp +34 -5
- package/src/duckdb/src/catalog/catalog_entry/duck_schema_entry.cpp +4 -0
- package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +2 -21
- package/src/duckdb/src/catalog/catalog_entry/scalar_function_catalog_entry.cpp +7 -6
- package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +3 -3
- package/src/duckdb/src/catalog/catalog_entry/table_function_catalog_entry.cpp +20 -1
- package/src/duckdb/src/catalog/catalog_entry/type_catalog_entry.cpp +8 -2
- package/src/duckdb/src/catalog/catalog_set.cpp +1 -0
- package/src/duckdb/src/catalog/default/default_functions.cpp +3 -0
- package/src/duckdb/src/catalog/dependency_list.cpp +12 -0
- package/src/duckdb/src/catalog/duck_catalog.cpp +34 -7
- package/src/duckdb/src/common/arrow/arrow_appender.cpp +48 -4
- package/src/duckdb/src/common/arrow/arrow_converter.cpp +1 -1
- package/src/duckdb/src/common/box_renderer.cpp +109 -23
- package/src/duckdb/src/common/enums/expression_type.cpp +8 -222
- package/src/duckdb/src/common/enums/join_type.cpp +3 -22
- package/src/duckdb/src/common/enums/logical_operator_type.cpp +2 -0
- package/src/duckdb/src/common/enums/statement_type.cpp +2 -0
- package/src/duckdb/src/common/exception.cpp +15 -1
- package/src/duckdb/src/common/field_writer.cpp +1 -0
- package/src/duckdb/src/common/operator/cast_operators.cpp +1 -1
- package/src/duckdb/src/common/preserved_error.cpp +7 -5
- package/src/duckdb/src/common/serializer/buffered_deserializer.cpp +4 -0
- package/src/duckdb/src/common/serializer/buffered_file_reader.cpp +15 -2
- package/src/duckdb/src/common/serializer/enum_serializer.cpp +1176 -0
- package/src/duckdb/src/common/sort/sort_state.cpp +5 -7
- package/src/duckdb/src/common/sort/sorted_block.cpp +0 -1
- package/src/duckdb/src/common/string_util.cpp +4 -1
- package/src/duckdb/src/common/types/bit.cpp +166 -87
- package/src/duckdb/src/common/types/blob.cpp +1 -1
- package/src/duckdb/src/common/types/chunk_collection.cpp +2 -2
- package/src/duckdb/src/common/types/column_data_collection.cpp +39 -2
- package/src/duckdb/src/common/types/column_data_collection_segment.cpp +11 -6
- package/src/duckdb/src/common/types/data_chunk.cpp +1 -1
- package/src/duckdb/src/common/types/time.cpp +13 -0
- package/src/duckdb/src/common/types/value.cpp +320 -154
- package/src/duckdb/src/common/types/vector.cpp +155 -127
- package/src/duckdb/src/common/types.cpp +313 -153
- package/src/duckdb/src/common/vector_operations/vector_cast.cpp +2 -1
- package/src/duckdb/src/execution/aggregate_hashtable.cpp +10 -5
- package/src/duckdb/src/execution/column_binding_resolver.cpp +21 -5
- package/src/duckdb/src/execution/expression_executor/execute_cast.cpp +2 -1
- package/src/duckdb/src/execution/index/art/art.cpp +6 -5
- package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +4 -5
- package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +117 -26
- package/src/duckdb/src/execution/operator/helper/physical_limit.cpp +3 -0
- package/src/duckdb/src/execution/operator/helper/physical_vacuum.cpp +5 -3
- package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +64 -17
- package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +2 -2
- package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +12 -4
- package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +6 -11
- package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +3 -1
- package/src/duckdb/src/execution/operator/persistent/base_csv_reader.cpp +6 -3
- package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +6 -14
- package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +2 -2
- package/src/duckdb/src/execution/operator/projection/physical_projection.cpp +34 -0
- package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +20 -5
- package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +20 -40
- package/src/duckdb/src/execution/partitionable_hashtable.cpp +14 -2
- package/src/duckdb/src/execution/physical_plan/plan_aggregate.cpp +21 -16
- package/src/duckdb/src/execution/physical_plan/plan_asof_join.cpp +97 -0
- package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +95 -47
- package/src/duckdb/src/execution/physical_plan/plan_distinct.cpp +5 -8
- package/src/duckdb/src/execution/physical_plan/plan_positional_join.cpp +14 -5
- package/src/duckdb/src/execution/physical_plan_generator.cpp +3 -0
- package/src/duckdb/src/execution/window_segment_tree.cpp +173 -1
- package/src/duckdb/src/function/aggregate/algebraic/avg.cpp +0 -6
- package/src/duckdb/src/function/aggregate/distributive/bitagg.cpp +99 -95
- package/src/duckdb/src/function/aggregate/distributive/bitstring_agg.cpp +269 -0
- package/src/duckdb/src/function/aggregate/distributive/bool.cpp +2 -0
- package/src/duckdb/src/function/aggregate/distributive/count.cpp +3 -4
- package/src/duckdb/src/function/aggregate/distributive/first.cpp +1 -0
- package/src/duckdb/src/function/aggregate/distributive/minmax.cpp +2 -0
- package/src/duckdb/src/function/aggregate/distributive/sum.cpp +19 -16
- package/src/duckdb/src/function/aggregate/distributive_functions.cpp +1 -0
- package/src/duckdb/src/function/aggregate/holistic/approximate_quantile.cpp +5 -2
- package/src/duckdb/src/function/aggregate/holistic/mode.cpp +1 -1
- package/src/duckdb/src/function/aggregate/holistic/quantile.cpp +16 -1
- package/src/duckdb/src/function/aggregate/nested/list.cpp +8 -8
- package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +58 -16
- package/src/duckdb/src/function/cast/bit_cast.cpp +0 -2
- package/src/duckdb/src/function/cast/blob_cast.cpp +0 -1
- package/src/duckdb/src/function/cast/cast_function_set.cpp +1 -1
- package/src/duckdb/src/function/cast/enum_casts.cpp +25 -3
- package/src/duckdb/src/function/cast/list_casts.cpp +17 -4
- package/src/duckdb/src/function/cast/map_cast.cpp +5 -2
- package/src/duckdb/src/function/cast/string_cast.cpp +36 -10
- package/src/duckdb/src/function/cast/struct_cast.cpp +24 -4
- package/src/duckdb/src/function/cast/time_casts.cpp +2 -2
- package/src/duckdb/src/function/cast/union_casts.cpp +33 -7
- package/src/duckdb/src/function/function_binder.cpp +1 -8
- package/src/duckdb/src/function/scalar/bit/bitstring.cpp +100 -0
- package/src/duckdb/src/function/scalar/date/current.cpp +0 -2
- package/src/duckdb/src/function/scalar/date/date_diff.cpp +0 -1
- package/src/duckdb/src/function/scalar/date/date_part.cpp +18 -26
- package/src/duckdb/src/function/scalar/date/date_sub.cpp +0 -1
- package/src/duckdb/src/function/scalar/date/date_trunc.cpp +10 -14
- package/src/duckdb/src/function/scalar/generic/stats.cpp +2 -4
- package/src/duckdb/src/function/scalar/list/contains_or_position.cpp +4 -146
- package/src/duckdb/src/function/scalar/list/flatten.cpp +5 -12
- package/src/duckdb/src/function/scalar/list/list_aggregates.cpp +1 -1
- package/src/duckdb/src/function/scalar/list/list_concat.cpp +8 -12
- package/src/duckdb/src/function/scalar/list/list_extract.cpp +5 -12
- package/src/duckdb/src/function/scalar/list/list_lambdas.cpp +7 -3
- package/src/duckdb/src/function/scalar/list/list_value.cpp +6 -10
- package/src/duckdb/src/function/scalar/map/map.cpp +47 -1
- package/src/duckdb/src/function/scalar/map/map_entries.cpp +61 -0
- package/src/duckdb/src/function/scalar/map/map_extract.cpp +68 -26
- package/src/duckdb/src/function/scalar/map/map_keys_values.cpp +97 -0
- package/src/duckdb/src/function/scalar/math/numeric.cpp +101 -17
- package/src/duckdb/src/function/scalar/math_functions.cpp +3 -0
- package/src/duckdb/src/function/scalar/nested_functions.cpp +3 -0
- package/src/duckdb/src/function/scalar/operators/add.cpp +0 -9
- package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +29 -48
- package/src/duckdb/src/function/scalar/operators/bitwise.cpp +0 -63
- package/src/duckdb/src/function/scalar/operators/multiply.cpp +5 -6
- package/src/duckdb/src/function/scalar/operators/subtract.cpp +0 -6
- package/src/duckdb/src/function/scalar/string/caseconvert.cpp +2 -6
- package/src/duckdb/src/function/scalar/string/hex.cpp +201 -0
- package/src/duckdb/src/function/scalar/string/instr.cpp +2 -6
- package/src/duckdb/src/function/scalar/string/length.cpp +2 -6
- package/src/duckdb/src/function/scalar/string/like.cpp +2 -6
- package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +243 -0
- package/src/duckdb/src/function/scalar/string/regexp/regexp_util.cpp +79 -0
- package/src/duckdb/src/function/scalar/string/regexp.cpp +21 -80
- package/src/duckdb/src/function/scalar/string/substring.cpp +2 -6
- package/src/duckdb/src/function/scalar/string_functions.cpp +2 -0
- package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +5 -10
- package/src/duckdb/src/function/scalar/struct/struct_insert.cpp +11 -14
- package/src/duckdb/src/function/scalar/struct/struct_pack.cpp +6 -7
- package/src/duckdb/src/function/table/arrow.cpp +5 -2
- package/src/duckdb/src/function/table/arrow_conversion.cpp +25 -1
- package/src/duckdb/src/function/table/checkpoint.cpp +5 -1
- package/src/duckdb/src/function/table/read_csv.cpp +55 -0
- package/src/duckdb/src/function/table/system/duckdb_constraints.cpp +2 -2
- package/src/duckdb/src/function/table/system/test_all_types.cpp +2 -2
- package/src/duckdb/src/function/table/table_scan.cpp +1 -1
- package/src/duckdb/src/function/table/version/pragma_version.cpp +2 -2
- package/src/duckdb/src/function/table_function.cpp +30 -11
- package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +6 -0
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +1 -1
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_function_catalog_entry.hpp +6 -8
- package/src/duckdb/src/include/duckdb/catalog/dependency_list.hpp +3 -0
- package/src/duckdb/src/include/duckdb/catalog/duck_catalog.hpp +2 -1
- package/src/duckdb/src/include/duckdb/common/box_renderer.hpp +8 -2
- package/src/duckdb/src/include/duckdb/common/constants.hpp +0 -19
- package/src/duckdb/src/include/duckdb/common/enums/aggregate_handling.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/enums/expression_type.hpp +2 -3
- package/src/duckdb/src/include/duckdb/common/enums/joinref_type.hpp +7 -4
- package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/enums/order_type.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/enums/set_operation_type.hpp +2 -1
- package/src/duckdb/src/include/duckdb/common/enums/statement_type.hpp +2 -1
- package/src/duckdb/src/include/duckdb/common/enums/tableref_type.hpp +2 -1
- package/src/duckdb/src/include/duckdb/common/exception.hpp +69 -2
- package/src/duckdb/src/include/duckdb/common/field_writer.hpp +12 -4
- package/src/duckdb/src/include/duckdb/common/{http_stats.hpp → http_state.hpp} +18 -4
- package/src/duckdb/src/include/duckdb/common/operator/multiply.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/optional_ptr.hpp +45 -0
- package/src/duckdb/src/include/duckdb/common/preserved_error.hpp +6 -1
- package/src/duckdb/src/include/duckdb/common/serializer/buffered_deserializer.hpp +4 -2
- package/src/duckdb/src/include/duckdb/common/serializer/buffered_file_reader.hpp +8 -2
- package/src/duckdb/src/include/duckdb/common/serializer/enum_serializer.hpp +113 -0
- package/src/duckdb/src/include/duckdb/common/serializer/format_deserializer.hpp +336 -0
- package/src/duckdb/src/include/duckdb/common/serializer/format_serializer.hpp +268 -0
- package/src/duckdb/src/include/duckdb/common/serializer/serialization_traits.hpp +126 -0
- package/src/duckdb/src/include/duckdb/common/serializer.hpp +13 -0
- package/src/duckdb/src/include/duckdb/common/string_util.hpp +25 -0
- package/src/duckdb/src/include/duckdb/common/types/bit.hpp +12 -7
- package/src/duckdb/src/include/duckdb/common/types/time.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/types/value.hpp +17 -48
- package/src/duckdb/src/include/duckdb/common/types/value_map.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/vector.hpp +3 -1
- package/src/duckdb/src/include/duckdb/common/types.hpp +45 -8
- package/src/duckdb/src/include/duckdb/common/vector_operations/unary_executor.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/aggregate_hashtable.hpp +1 -0
- package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_perfecthash_aggregate.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_cross_product.hpp +2 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_file_handle.hpp +1 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_reader_options.hpp +6 -0
- package/src/duckdb/src/include/duckdb/execution/operator/projection/physical_projection.hpp +5 -0
- package/src/duckdb/src/include/duckdb/execution/partitionable_hashtable.hpp +3 -0
- package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +1 -3
- package/src/duckdb/src/include/duckdb/execution/window_segment_tree.hpp +54 -0
- package/src/duckdb/src/include/duckdb/function/aggregate/distributive_functions.hpp +5 -0
- package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +18 -6
- package/src/duckdb/src/include/duckdb/function/cast/bound_cast_data.hpp +84 -0
- package/src/duckdb/src/include/duckdb/function/cast/cast_function_set.hpp +2 -2
- package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +28 -64
- package/src/duckdb/src/include/duckdb/function/function_binder.hpp +3 -6
- package/src/duckdb/src/include/duckdb/function/scalar/bit_functions.hpp +4 -0
- package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +138 -0
- package/src/duckdb/src/include/duckdb/function/scalar/math_functions.hpp +8 -0
- package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +59 -0
- package/src/duckdb/src/include/duckdb/function/scalar/regexp.hpp +81 -1
- package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +4 -0
- package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +2 -2
- package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +12 -1
- package/src/duckdb/src/include/duckdb/function/table_function.hpp +10 -0
- package/src/duckdb/src/include/duckdb/main/capi/capi_internal.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/client_data.hpp +3 -3
- package/src/duckdb/src/include/duckdb/main/config.hpp +3 -0
- package/src/duckdb/src/include/duckdb/main/connection_manager.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/database.hpp +1 -0
- package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/prepared_statement.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/relation/explain_relation.hpp +2 -1
- package/src/duckdb/src/include/duckdb/main/relation.hpp +2 -1
- package/src/duckdb/src/include/duckdb/optimizer/filter_pushdown.hpp +2 -0
- package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +2 -2
- package/src/duckdb/src/include/duckdb/optimizer/rule/list.hpp +1 -0
- package/src/duckdb/src/include/duckdb/optimizer/rule/ordered_aggregate_optimizer.hpp +24 -0
- package/src/duckdb/src/include/duckdb/parser/common_table_expression_info.hpp +4 -0
- package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +5 -0
- package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/expression/default_expression.hpp +1 -0
- package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +4 -2
- package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +4 -2
- package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +5 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_info.hpp +5 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/{alter_function_info.hpp → alter_scalar_function_info.hpp} +13 -13
- package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_function_info.hpp +47 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +6 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_table_function_info.hpp +2 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/sample_options.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +5 -0
- package/src/duckdb/src/include/duckdb/parser/query_node/recursive_cte_node.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/query_node/select_node.hpp +5 -0
- package/src/duckdb/src/include/duckdb/parser/query_node/set_operation_node.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/query_node.hpp +13 -2
- package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +24 -1
- package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +2 -1
- package/src/duckdb/src/include/duckdb/parser/statement/multi_statement.hpp +28 -0
- package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +6 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +4 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/list.hpp +1 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +87 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/tableref.hpp +3 -1
- package/src/duckdb/src/include/duckdb/parser/tokens.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/transformer.hpp +33 -0
- package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +2 -0
- package/src/duckdb/src/include/duckdb/planner/binder.hpp +15 -4
- package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/expression_binder/base_select_binder.hpp +64 -0
- package/src/duckdb/src/include/duckdb/planner/expression_binder/having_binder.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/expression_binder/order_binder.hpp +4 -1
- package/src/duckdb/src/include/duckdb/planner/expression_binder/qualify_binder.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/expression_binder/select_binder.hpp +9 -38
- package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/logical_tokens.hpp +1 -0
- package/src/duckdb/src/include/duckdb/planner/operator/list.hpp +1 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_asof_join.hpp +22 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_comparison_join.hpp +5 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_distinct.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/query_node/bound_select_node.hpp +8 -2
- package/src/duckdb/src/include/duckdb/storage/buffer/block_handle.hpp +2 -0
- package/src/duckdb/src/include/duckdb/storage/buffer_manager.hpp +76 -44
- package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_writer.hpp +3 -2
- package/src/duckdb/src/include/duckdb/storage/checkpoint_manager.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_compress.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_fetch.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_scan.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_fetch.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_scan.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/data_pointer.hpp +5 -2
- package/src/duckdb/src/include/duckdb/storage/data_table.hpp +3 -3
- package/src/duckdb/src/include/duckdb/storage/index.hpp +4 -3
- package/src/duckdb/src/include/duckdb/storage/meta_block_reader.hpp +7 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/base_statistics.hpp +93 -29
- package/src/duckdb/src/include/duckdb/storage/statistics/column_statistics.hpp +22 -3
- package/src/duckdb/src/include/duckdb/storage/statistics/distinct_statistics.hpp +8 -6
- package/src/duckdb/src/include/duckdb/storage/statistics/list_stats.hpp +41 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/node_statistics.hpp +26 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/numeric_stats.hpp +114 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/numeric_stats_union.hpp +62 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/segment_statistics.hpp +2 -7
- package/src/duckdb/src/include/duckdb/storage/statistics/string_stats.hpp +74 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/struct_stats.hpp +42 -0
- package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +2 -3
- package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +6 -3
- package/src/duckdb/src/include/duckdb/storage/table/column_data_checkpointer.hpp +3 -2
- package/src/duckdb/src/include/duckdb/storage/table/column_segment.hpp +7 -5
- package/src/duckdb/src/include/duckdb/storage/table/list_column_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/persistent_table_data.hpp +6 -2
- package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +10 -6
- package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +8 -5
- package/src/duckdb/src/include/duckdb/storage/table/row_group_segment_tree.hpp +37 -0
- package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +10 -1
- package/src/duckdb/src/include/duckdb/storage/table/segment_base.hpp +4 -3
- package/src/duckdb/src/include/duckdb/storage/table/segment_tree.hpp +271 -26
- package/src/duckdb/src/include/duckdb/storage/table/table_statistics.hpp +5 -0
- package/src/duckdb/src/include/duckdb/storage/table/update_segment.hpp +0 -1
- package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +1 -1
- package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +2 -2
- package/src/duckdb/src/include/duckdb.h +50 -2
- package/src/duckdb/src/include/duckdb.hpp +0 -1
- package/src/duckdb/src/main/capi/pending-c.cpp +16 -3
- package/src/duckdb/src/main/capi/result-c.cpp +27 -1
- package/src/duckdb/src/main/capi/stream-c.cpp +25 -0
- package/src/duckdb/src/main/client_context.cpp +38 -34
- package/src/duckdb/src/main/client_data.cpp +7 -6
- package/src/duckdb/src/main/config.cpp +70 -1
- package/src/duckdb/src/main/database.cpp +19 -2
- package/src/duckdb/src/main/extension/extension_install.cpp +7 -2
- package/src/duckdb/src/main/prepared_statement.cpp +4 -0
- package/src/duckdb/src/main/query_profiler.cpp +17 -15
- package/src/duckdb/src/main/relation/explain_relation.cpp +3 -3
- package/src/duckdb/src/main/relation.cpp +3 -2
- package/src/duckdb/src/optimizer/column_lifetime_analyzer.cpp +1 -0
- package/src/duckdb/src/optimizer/deliminator.cpp +1 -1
- package/src/duckdb/src/optimizer/filter_combiner.cpp +1 -1
- package/src/duckdb/src/optimizer/filter_pullup.cpp +3 -1
- package/src/duckdb/src/optimizer/filter_pushdown.cpp +14 -8
- package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +105 -71
- package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +31 -12
- package/src/duckdb/src/optimizer/optimizer.cpp +1 -0
- package/src/duckdb/src/optimizer/pullup/pullup_from_left.cpp +2 -2
- package/src/duckdb/src/optimizer/pushdown/pushdown_aggregate.cpp +33 -5
- package/src/duckdb/src/optimizer/pushdown/pushdown_cross_product.cpp +1 -1
- package/src/duckdb/src/optimizer/pushdown/pushdown_inner_join.cpp +3 -0
- package/src/duckdb/src/optimizer/pushdown/pushdown_left_join.cpp +5 -12
- package/src/duckdb/src/optimizer/pushdown/pushdown_mark_join.cpp +2 -2
- package/src/duckdb/src/optimizer/pushdown/pushdown_single_join.cpp +1 -1
- package/src/duckdb/src/optimizer/remove_unused_columns.cpp +1 -0
- package/src/duckdb/src/optimizer/rule/move_constants.cpp +10 -4
- package/src/duckdb/src/optimizer/rule/ordered_aggregate_optimizer.cpp +30 -0
- package/src/duckdb/src/optimizer/rule/regex_optimizations.cpp +9 -2
- package/src/duckdb/src/optimizer/statistics/expression/propagate_aggregate.cpp +9 -3
- package/src/duckdb/src/optimizer/statistics/expression/propagate_and_compress.cpp +6 -7
- package/src/duckdb/src/optimizer/statistics/expression/propagate_cast.cpp +14 -11
- package/src/duckdb/src/optimizer/statistics/expression/propagate_columnref.cpp +1 -1
- package/src/duckdb/src/optimizer/statistics/expression/propagate_comparison.cpp +13 -15
- package/src/duckdb/src/optimizer/statistics/expression/propagate_conjunction.cpp +0 -1
- package/src/duckdb/src/optimizer/statistics/expression/propagate_constant.cpp +3 -75
- package/src/duckdb/src/optimizer/statistics/expression/propagate_function.cpp +7 -2
- package/src/duckdb/src/optimizer/statistics/expression/propagate_operator.cpp +10 -0
- package/src/duckdb/src/optimizer/statistics/operator/propagate_aggregate.cpp +2 -3
- package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +29 -32
- package/src/duckdb/src/optimizer/statistics/operator/propagate_join.cpp +5 -5
- package/src/duckdb/src/optimizer/statistics/operator/propagate_set_operation.cpp +3 -3
- package/src/duckdb/src/optimizer/statistics_propagator.cpp +2 -1
- package/src/duckdb/src/optimizer/unnest_rewriter.cpp +2 -2
- package/src/duckdb/src/parallel/meta_pipeline.cpp +0 -4
- package/src/duckdb/src/parser/common_table_expression_info.cpp +19 -0
- package/src/duckdb/src/parser/expression/between_expression.cpp +17 -0
- package/src/duckdb/src/parser/expression/case_expression.cpp +28 -0
- package/src/duckdb/src/parser/expression/cast_expression.cpp +17 -0
- package/src/duckdb/src/parser/expression/collate_expression.cpp +16 -0
- package/src/duckdb/src/parser/expression/columnref_expression.cpp +15 -0
- package/src/duckdb/src/parser/expression/comparison_expression.cpp +16 -0
- package/src/duckdb/src/parser/expression/conjunction_expression.cpp +17 -0
- package/src/duckdb/src/parser/expression/constant_expression.cpp +14 -0
- package/src/duckdb/src/parser/expression/default_expression.cpp +7 -0
- package/src/duckdb/src/parser/expression/function_expression.cpp +35 -0
- package/src/duckdb/src/parser/expression/lambda_expression.cpp +16 -0
- package/src/duckdb/src/parser/expression/operator_expression.cpp +15 -0
- package/src/duckdb/src/parser/expression/parameter_expression.cpp +15 -0
- package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +14 -0
- package/src/duckdb/src/parser/expression/star_expression.cpp +26 -6
- package/src/duckdb/src/parser/expression/subquery_expression.cpp +20 -0
- package/src/duckdb/src/parser/expression/window_expression.cpp +43 -0
- package/src/duckdb/src/parser/parsed_data/alter_info.cpp +7 -3
- package/src/duckdb/src/parser/parsed_data/alter_scalar_function_info.cpp +56 -0
- package/src/duckdb/src/parser/parsed_data/alter_table_function_info.cpp +51 -0
- package/src/duckdb/src/parser/parsed_data/create_scalar_function_info.cpp +3 -2
- package/src/duckdb/src/parser/parsed_data/create_table_function_info.cpp +6 -0
- package/src/duckdb/src/parser/parsed_data/sample_options.cpp +22 -10
- package/src/duckdb/src/parser/parsed_expression.cpp +72 -0
- package/src/duckdb/src/parser/parsed_expression_iterator.cpp +15 -1
- package/src/duckdb/src/parser/query_node/recursive_cte_node.cpp +21 -0
- package/src/duckdb/src/parser/query_node/select_node.cpp +31 -0
- package/src/duckdb/src/parser/query_node/set_operation_node.cpp +17 -0
- package/src/duckdb/src/parser/query_node.cpp +51 -1
- package/src/duckdb/src/parser/result_modifier.cpp +78 -0
- package/src/duckdb/src/parser/statement/multi_statement.cpp +18 -0
- package/src/duckdb/src/parser/statement/select_statement.cpp +12 -0
- package/src/duckdb/src/parser/tableref/basetableref.cpp +21 -0
- package/src/duckdb/src/parser/tableref/emptytableref.cpp +4 -0
- package/src/duckdb/src/parser/tableref/expressionlistref.cpp +17 -0
- package/src/duckdb/src/parser/tableref/joinref.cpp +29 -0
- package/src/duckdb/src/parser/tableref/pivotref.cpp +373 -0
- package/src/duckdb/src/parser/tableref/subqueryref.cpp +15 -0
- package/src/duckdb/src/parser/tableref/table_function.cpp +17 -0
- package/src/duckdb/src/parser/tableref.cpp +49 -0
- package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +11 -0
- package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +1 -1
- package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +17 -2
- package/src/duckdb/src/parser/transform/expression/transform_function.cpp +63 -42
- package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +1 -1
- package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +1 -1
- package/src/duckdb/src/parser/transform/helpers/transform_alias.cpp +12 -6
- package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +24 -0
- package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +7 -0
- package/src/duckdb/src/parser/transform/helpers/transform_orderby.cpp +0 -7
- package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +3 -2
- package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +4 -0
- package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +4 -0
- package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +179 -0
- package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +3 -4
- package/src/duckdb/src/parser/transform/statement/transform_select.cpp +8 -0
- package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +2 -3
- package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +12 -1
- package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +121 -0
- package/src/duckdb/src/parser/transform/tableref/transform_tableref.cpp +2 -0
- package/src/duckdb/src/parser/transformer.cpp +15 -3
- package/src/duckdb/src/planner/bind_context.cpp +18 -25
- package/src/duckdb/src/planner/binder/expression/bind_aggregate_expression.cpp +9 -7
- package/src/duckdb/src/planner/binder/expression/bind_columnref_expression.cpp +4 -3
- package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +23 -12
- package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +3 -2
- package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +176 -0
- package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +4 -0
- package/src/duckdb/src/planner/binder/expression/bind_unnest_expression.cpp +163 -24
- package/src/duckdb/src/planner/binder/expression/bind_window_expression.cpp +2 -2
- package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +109 -94
- package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +11 -0
- package/src/duckdb/src/planner/binder/query_node/plan_select_node.cpp +9 -4
- package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +5 -3
- package/src/duckdb/src/planner/binder/statement/bind_create.cpp +3 -2
- package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +9 -1
- package/src/duckdb/src/planner/binder/statement/bind_delete.cpp +1 -1
- package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +12 -8
- package/src/duckdb/src/planner/binder/statement/bind_logical_plan.cpp +17 -0
- package/src/duckdb/src/planner/binder/statement/bind_update.cpp +4 -2
- package/src/duckdb/src/planner/binder/tableref/bind_joinref.cpp +19 -3
- package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +366 -0
- package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +11 -1
- package/src/duckdb/src/planner/binder/tableref/plan_cteref.cpp +1 -0
- package/src/duckdb/src/planner/binder/tableref/plan_joinref.cpp +61 -13
- package/src/duckdb/src/planner/binder.cpp +19 -24
- package/src/duckdb/src/planner/bound_result_modifier.cpp +27 -1
- package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +9 -2
- package/src/duckdb/src/planner/expression/bound_expression.cpp +4 -0
- package/src/duckdb/src/planner/expression/bound_window_expression.cpp +1 -1
- package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +146 -0
- package/src/duckdb/src/planner/expression_binder/having_binder.cpp +6 -3
- package/src/duckdb/src/planner/expression_binder/qualify_binder.cpp +3 -3
- package/src/duckdb/src/planner/expression_binder/select_binder.cpp +1 -132
- package/src/duckdb/src/planner/expression_binder.cpp +10 -3
- package/src/duckdb/src/planner/expression_iterator.cpp +17 -10
- package/src/duckdb/src/planner/filter/constant_filter.cpp +4 -6
- package/src/duckdb/src/planner/logical_operator.cpp +7 -2
- package/src/duckdb/src/planner/logical_operator_visitor.cpp +6 -0
- package/src/duckdb/src/planner/operator/logical_asof_join.cpp +8 -0
- package/src/duckdb/src/planner/operator/logical_distinct.cpp +3 -0
- package/src/duckdb/src/planner/planner.cpp +2 -1
- package/src/duckdb/src/planner/pragma_handler.cpp +10 -2
- package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +3 -1
- package/src/duckdb/src/storage/buffer_manager.cpp +44 -46
- package/src/duckdb/src/storage/checkpoint/row_group_writer.cpp +1 -1
- package/src/duckdb/src/storage/checkpoint/table_data_reader.cpp +4 -15
- package/src/duckdb/src/storage/checkpoint/table_data_writer.cpp +10 -4
- package/src/duckdb/src/storage/checkpoint_manager.cpp +9 -3
- package/src/duckdb/src/storage/compression/bitpacking.cpp +28 -24
- package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +43 -45
- package/src/duckdb/src/storage/compression/numeric_constant.cpp +9 -10
- package/src/duckdb/src/storage/compression/patas.cpp +1 -1
- package/src/duckdb/src/storage/compression/rle.cpp +19 -15
- package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +5 -5
- package/src/duckdb/src/storage/data_table.cpp +20 -20
- package/src/duckdb/src/storage/index.cpp +12 -1
- package/src/duckdb/src/storage/local_storage.cpp +20 -23
- package/src/duckdb/src/storage/meta_block_reader.cpp +22 -0
- package/src/duckdb/src/storage/statistics/base_statistics.cpp +373 -128
- package/src/duckdb/src/storage/statistics/column_statistics.cpp +57 -3
- package/src/duckdb/src/storage/statistics/distinct_statistics.cpp +8 -9
- package/src/duckdb/src/storage/statistics/list_stats.cpp +121 -0
- package/src/duckdb/src/storage/statistics/numeric_stats.cpp +591 -0
- package/src/duckdb/src/storage/statistics/numeric_stats_union.cpp +65 -0
- package/src/duckdb/src/storage/statistics/segment_statistics.cpp +2 -11
- package/src/duckdb/src/storage/statistics/string_stats.cpp +273 -0
- package/src/duckdb/src/storage/statistics/struct_stats.cpp +133 -0
- package/src/duckdb/src/storage/storage_info.cpp +2 -2
- package/src/duckdb/src/storage/table/column_checkpoint_state.cpp +4 -10
- package/src/duckdb/src/storage/table/column_data.cpp +45 -46
- package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +7 -8
- package/src/duckdb/src/storage/table/column_segment.cpp +13 -14
- package/src/duckdb/src/storage/table/list_column_data.cpp +41 -59
- package/src/duckdb/src/storage/table/persistent_table_data.cpp +2 -1
- package/src/duckdb/src/storage/table/row_group.cpp +38 -32
- package/src/duckdb/src/storage/table/row_group_collection.cpp +94 -78
- package/src/duckdb/src/storage/table/scan_state.cpp +22 -3
- package/src/duckdb/src/storage/table/standard_column_data.cpp +7 -6
- package/src/duckdb/src/storage/table/struct_column_data.cpp +16 -16
- package/src/duckdb/src/storage/table/table_statistics.cpp +27 -7
- package/src/duckdb/src/storage/table/update_segment.cpp +20 -18
- package/src/duckdb/src/storage/wal_replay.cpp +8 -5
- package/src/duckdb/src/storage/write_ahead_log.cpp +2 -2
- package/src/duckdb/src/transaction/commit_state.cpp +11 -7
- package/src/duckdb/src/verification/deserialized_statement_verifier.cpp +0 -1
- package/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp +35 -0
- package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +36 -2
- package/src/duckdb/third_party/libpg_query/include/nodes/primnodes.hpp +3 -3
- package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +1022 -530
- package/src/duckdb/third_party/libpg_query/include/parser/kwlist.hpp +8 -0
- package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +24462 -22828
- package/src/duckdb/third_party/re2/re2/re2.cc +9 -0
- package/src/duckdb/third_party/re2/re2/re2.h +2 -0
- package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +4 -4
- package/src/duckdb/ub_extension_json_json_functions.cpp +2 -0
- package/src/duckdb/ub_src_common_serializer.cpp +2 -0
- package/src/duckdb/ub_src_execution_physical_plan.cpp +2 -0
- package/src/duckdb/ub_src_function_aggregate_distributive.cpp +2 -0
- package/src/duckdb/ub_src_function_scalar_bit.cpp +2 -0
- package/src/duckdb/ub_src_function_scalar_map.cpp +4 -0
- package/src/duckdb/ub_src_function_scalar_string.cpp +2 -0
- package/src/duckdb/ub_src_function_scalar_string_regexp.cpp +4 -0
- package/src/duckdb/ub_src_main_capi.cpp +2 -0
- package/src/duckdb/ub_src_optimizer_rule.cpp +2 -0
- package/src/duckdb/ub_src_parser.cpp +2 -0
- package/src/duckdb/ub_src_parser_parsed_data.cpp +4 -2
- package/src/duckdb/ub_src_parser_statement.cpp +2 -0
- package/src/duckdb/ub_src_parser_tableref.cpp +2 -0
- package/src/duckdb/ub_src_parser_transform_statement.cpp +2 -0
- package/src/duckdb/ub_src_parser_transform_tableref.cpp +2 -0
- package/src/duckdb/ub_src_planner_binder_expression.cpp +2 -0
- package/src/duckdb/ub_src_planner_binder_tableref.cpp +2 -0
- package/src/duckdb/ub_src_planner_expression_binder.cpp +2 -0
- package/src/duckdb/ub_src_planner_operator.cpp +2 -0
- package/src/duckdb/ub_src_storage_statistics.cpp +6 -6
- package/src/duckdb/ub_src_storage_table.cpp +0 -2
- package/src/duckdb_node.hpp +2 -1
- package/src/statement.cpp +5 -5
- package/src/utils.cpp +27 -2
- package/test/extension.test.ts +44 -26
- package/test/syntax_error.test.ts +3 -1
- package/filelist.cache +0 -0
- package/src/duckdb/src/include/duckdb/main/loadable_extension.hpp +0 -59
- package/src/duckdb/src/include/duckdb/storage/statistics/list_statistics.hpp +0 -36
- package/src/duckdb/src/include/duckdb/storage/statistics/numeric_statistics.hpp +0 -75
- package/src/duckdb/src/include/duckdb/storage/statistics/string_statistics.hpp +0 -49
- package/src/duckdb/src/include/duckdb/storage/statistics/struct_statistics.hpp +0 -36
- package/src/duckdb/src/include/duckdb/storage/statistics/validity_statistics.hpp +0 -45
- package/src/duckdb/src/parser/parsed_data/alter_function_info.cpp +0 -55
- package/src/duckdb/src/storage/statistics/list_statistics.cpp +0 -94
- package/src/duckdb/src/storage/statistics/numeric_statistics.cpp +0 -307
- package/src/duckdb/src/storage/statistics/string_statistics.cpp +0 -220
- package/src/duckdb/src/storage/statistics/struct_statistics.cpp +0 -108
- package/src/duckdb/src/storage/statistics/validity_statistics.cpp +0 -91
- package/src/duckdb/src/storage/table/segment_tree.cpp +0 -179
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
#include "duckdb/common/array.hpp"
|
|
5
5
|
#include "duckdb/common/types/interval.hpp"
|
|
6
6
|
#include "duckdb/common/types/uuid.hpp"
|
|
7
|
+
#include "duckdb/function/table/arrow.hpp"
|
|
7
8
|
|
|
8
9
|
namespace duckdb {
|
|
9
10
|
|
|
@@ -127,7 +128,11 @@ struct ArrowScalarConverter {
|
|
|
127
128
|
struct ArrowIntervalConverter {
|
|
128
129
|
template <class TGT, class SRC>
|
|
129
130
|
static TGT Operation(SRC input) {
|
|
130
|
-
|
|
131
|
+
ArrowInterval result;
|
|
132
|
+
result.months = input.months;
|
|
133
|
+
result.days = input.days;
|
|
134
|
+
result.nanoseconds = input.micros * Interval::NANOS_PER_MICRO;
|
|
135
|
+
return result;
|
|
131
136
|
}
|
|
132
137
|
|
|
133
138
|
static bool SkipNulls() {
|
|
@@ -136,7 +141,6 @@ struct ArrowIntervalConverter {
|
|
|
136
141
|
|
|
137
142
|
template <class TGT>
|
|
138
143
|
static void SetNull(TGT &value) {
|
|
139
|
-
value = 0;
|
|
140
144
|
}
|
|
141
145
|
};
|
|
142
146
|
|
|
@@ -185,11 +189,51 @@ struct ArrowScalarData : public ArrowScalarBaseData<TGT, SRC, OP> {
|
|
|
185
189
|
//===--------------------------------------------------------------------===//
|
|
186
190
|
template <class TGT>
|
|
187
191
|
struct ArrowEnumData : public ArrowScalarBaseData<TGT> {
|
|
192
|
+
static idx_t GetLength(string_t input) {
|
|
193
|
+
return input.GetSize();
|
|
194
|
+
}
|
|
195
|
+
static void WriteData(data_ptr_t target, string_t input) {
|
|
196
|
+
memcpy(target, input.GetDataUnsafe(), input.GetSize());
|
|
197
|
+
}
|
|
198
|
+
static void EnumAppendVector(ArrowAppendData &append_data, const Vector &input, idx_t size) {
|
|
199
|
+
D_ASSERT(input.GetVectorType() == VectorType::FLAT_VECTOR);
|
|
200
|
+
|
|
201
|
+
// resize the validity mask and set up the validity buffer for iteration
|
|
202
|
+
ResizeValidity(append_data.validity, append_data.row_count + size);
|
|
203
|
+
|
|
204
|
+
// resize the offset buffer - the offset buffer holds the offsets into the child array
|
|
205
|
+
append_data.main_buffer.resize(append_data.main_buffer.size() + sizeof(uint32_t) * (size + 1));
|
|
206
|
+
auto data = (string_t *)FlatVector::GetData<string_t>(input);
|
|
207
|
+
auto offset_data = (uint32_t *)append_data.main_buffer.data();
|
|
208
|
+
if (append_data.row_count == 0) {
|
|
209
|
+
// first entry
|
|
210
|
+
offset_data[0] = 0;
|
|
211
|
+
}
|
|
212
|
+
// now append the string data to the auxiliary buffer
|
|
213
|
+
// the auxiliary buffer's length depends on the string lengths, so we resize as required
|
|
214
|
+
auto last_offset = offset_data[append_data.row_count];
|
|
215
|
+
for (idx_t i = 0; i < size; i++) {
|
|
216
|
+
auto offset_idx = append_data.row_count + i + 1;
|
|
217
|
+
|
|
218
|
+
auto string_length = GetLength(data[i]);
|
|
219
|
+
|
|
220
|
+
// append the offset data
|
|
221
|
+
auto current_offset = last_offset + string_length;
|
|
222
|
+
offset_data[offset_idx] = current_offset;
|
|
223
|
+
|
|
224
|
+
// resize the string buffer if required, and write the string data
|
|
225
|
+
append_data.aux_buffer.resize(current_offset);
|
|
226
|
+
WriteData(append_data.aux_buffer.data() + last_offset, data[i]);
|
|
227
|
+
|
|
228
|
+
last_offset = current_offset;
|
|
229
|
+
}
|
|
230
|
+
append_data.row_count += size;
|
|
231
|
+
}
|
|
188
232
|
static void Initialize(ArrowAppendData &result, const LogicalType &type, idx_t capacity) {
|
|
189
233
|
result.main_buffer.reserve(capacity * sizeof(TGT));
|
|
190
234
|
// construct the enum child data
|
|
191
235
|
auto enum_data = InitializeArrowChild(LogicalType::VARCHAR, EnumType::GetSize(type));
|
|
192
|
-
|
|
236
|
+
EnumAppendVector(*enum_data, EnumType::GetValuesInsertOrder(type), EnumType::GetSize(type));
|
|
193
237
|
result.child_data.push_back(std::move(enum_data));
|
|
194
238
|
}
|
|
195
239
|
|
|
@@ -629,7 +673,7 @@ static void InitializeFunctionPointers(ArrowAppendData &append_data, const Logic
|
|
|
629
673
|
}
|
|
630
674
|
break;
|
|
631
675
|
case LogicalTypeId::INTERVAL:
|
|
632
|
-
InitializeFunctionPointers<ArrowScalarData<
|
|
676
|
+
InitializeFunctionPointers<ArrowScalarData<ArrowInterval, interval_t, ArrowIntervalConverter>>(append_data);
|
|
633
677
|
break;
|
|
634
678
|
case LogicalTypeId::STRUCT:
|
|
635
679
|
InitializeFunctionPointers<ArrowStructData>(append_data);
|
|
@@ -150,7 +150,7 @@ void SetArrowFormat(DuckDBArrowSchemaHolder &root_holder, ArrowSchema &child, co
|
|
|
150
150
|
child.format = "tsm:";
|
|
151
151
|
break;
|
|
152
152
|
case LogicalTypeId::INTERVAL:
|
|
153
|
-
child.format = "
|
|
153
|
+
child.format = "tin";
|
|
154
154
|
break;
|
|
155
155
|
case LogicalTypeId::DECIMAL: {
|
|
156
156
|
uint8_t width, scale;
|
|
@@ -197,6 +197,60 @@ list<ColumnDataCollection> BoxRenderer::FetchRenderCollections(ClientContext &co
|
|
|
197
197
|
return collections;
|
|
198
198
|
}
|
|
199
199
|
|
|
200
|
+
list<ColumnDataCollection> BoxRenderer::PivotCollections(ClientContext &context, list<ColumnDataCollection> input,
|
|
201
|
+
vector<string> &column_names,
|
|
202
|
+
vector<LogicalType> &result_types, idx_t row_count) {
|
|
203
|
+
auto &top = input.front();
|
|
204
|
+
auto &bottom = input.back();
|
|
205
|
+
|
|
206
|
+
vector<LogicalType> varchar_types;
|
|
207
|
+
vector<string> new_names;
|
|
208
|
+
new_names.emplace_back("Column");
|
|
209
|
+
new_names.emplace_back("Type");
|
|
210
|
+
varchar_types.emplace_back(LogicalType::VARCHAR);
|
|
211
|
+
varchar_types.emplace_back(LogicalType::VARCHAR);
|
|
212
|
+
for (idx_t r = 0; r < top.Count(); r++) {
|
|
213
|
+
new_names.emplace_back("Row " + to_string(r + 1));
|
|
214
|
+
varchar_types.emplace_back(LogicalType::VARCHAR);
|
|
215
|
+
}
|
|
216
|
+
for (idx_t r = 0; r < bottom.Count(); r++) {
|
|
217
|
+
auto row_index = row_count - bottom.Count() + r + 1;
|
|
218
|
+
new_names.emplace_back("Row " + to_string(row_index));
|
|
219
|
+
varchar_types.emplace_back(LogicalType::VARCHAR);
|
|
220
|
+
}
|
|
221
|
+
//
|
|
222
|
+
DataChunk row_chunk;
|
|
223
|
+
row_chunk.Initialize(Allocator::DefaultAllocator(), varchar_types);
|
|
224
|
+
std::list<ColumnDataCollection> result;
|
|
225
|
+
result.emplace_back(context, varchar_types);
|
|
226
|
+
result.emplace_back(context, varchar_types);
|
|
227
|
+
auto &res_coll = result.front();
|
|
228
|
+
ColumnDataAppendState append_state;
|
|
229
|
+
res_coll.InitializeAppend(append_state);
|
|
230
|
+
for (idx_t c = 0; c < top.ColumnCount(); c++) {
|
|
231
|
+
vector<column_t> column_ids {c};
|
|
232
|
+
auto row_index = row_chunk.size();
|
|
233
|
+
idx_t current_index = 0;
|
|
234
|
+
row_chunk.SetValue(current_index++, row_index, column_names[c]);
|
|
235
|
+
row_chunk.SetValue(current_index++, row_index, RenderType(result_types[c]));
|
|
236
|
+
for (auto &collection : input) {
|
|
237
|
+
for (auto &chunk : collection.Chunks(column_ids)) {
|
|
238
|
+
for (idx_t r = 0; r < chunk.size(); r++) {
|
|
239
|
+
row_chunk.SetValue(current_index++, row_index, chunk.GetValue(0, r));
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
row_chunk.SetCardinality(row_chunk.size() + 1);
|
|
244
|
+
if (row_chunk.size() == STANDARD_VECTOR_SIZE || c + 1 == top.ColumnCount()) {
|
|
245
|
+
res_coll.Append(append_state, row_chunk);
|
|
246
|
+
row_chunk.Reset();
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
column_names = std::move(new_names);
|
|
250
|
+
result_types = std::move(varchar_types);
|
|
251
|
+
return result;
|
|
252
|
+
}
|
|
253
|
+
|
|
200
254
|
string ConvertRenderValue(const string &input) {
|
|
201
255
|
return StringUtil::Replace(StringUtil::Replace(input, "\n", "\\n"), string("\0", 1), "\\0");
|
|
202
256
|
}
|
|
@@ -213,11 +267,10 @@ string BoxRenderer::GetRenderValue(ColumnDataRowCollection &rows, idx_t c, idx_t
|
|
|
213
267
|
}
|
|
214
268
|
}
|
|
215
269
|
|
|
216
|
-
vector<idx_t> BoxRenderer::ComputeRenderWidths(const vector<string> &names, const
|
|
270
|
+
vector<idx_t> BoxRenderer::ComputeRenderWidths(const vector<string> &names, const vector<LogicalType> &result_types,
|
|
217
271
|
list<ColumnDataCollection> &collections, idx_t min_width,
|
|
218
272
|
idx_t max_width, vector<idx_t> &column_map, idx_t &total_length) {
|
|
219
|
-
auto column_count =
|
|
220
|
-
auto &result_types = result.Types();
|
|
273
|
+
auto column_count = result_types.size();
|
|
221
274
|
|
|
222
275
|
vector<idx_t> widths;
|
|
223
276
|
widths.reserve(column_count);
|
|
@@ -357,13 +410,15 @@ void BoxRenderer::RenderHeader(const vector<string> &names, const vector<Logical
|
|
|
357
410
|
ss << std::endl;
|
|
358
411
|
|
|
359
412
|
// render the types
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
413
|
+
if (config.render_mode == RenderMode::ROWS) {
|
|
414
|
+
for (idx_t c = 0; c < column_count; c++) {
|
|
415
|
+
auto column_idx = column_map[c];
|
|
416
|
+
auto type = column_idx == SPLIT_COLUMN ? "" : RenderType(result_types[column_idx]);
|
|
417
|
+
RenderValue(ss, type, widths[c]);
|
|
418
|
+
}
|
|
419
|
+
ss << config.VERTICAL;
|
|
420
|
+
ss << std::endl;
|
|
364
421
|
}
|
|
365
|
-
ss << config.VERTICAL;
|
|
366
|
-
ss << std::endl;
|
|
367
422
|
|
|
368
423
|
// render the line under the header
|
|
369
424
|
ss << config.LMIDDLE;
|
|
@@ -390,12 +445,14 @@ void BoxRenderer::RenderValues(const list<ColumnDataCollection> &collections, co
|
|
|
390
445
|
auto column_count = column_map.size();
|
|
391
446
|
|
|
392
447
|
vector<ValueRenderAlignment> alignments;
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
448
|
+
if (config.render_mode == RenderMode::ROWS) {
|
|
449
|
+
for (idx_t c = 0; c < column_count; c++) {
|
|
450
|
+
auto column_idx = column_map[c];
|
|
451
|
+
if (column_idx == SPLIT_COLUMN) {
|
|
452
|
+
alignments.push_back(ValueRenderAlignment::MIDDLE);
|
|
453
|
+
} else {
|
|
454
|
+
alignments.push_back(TypeAlignment(result_types[column_idx]));
|
|
455
|
+
}
|
|
399
456
|
}
|
|
400
457
|
}
|
|
401
458
|
|
|
@@ -409,13 +466,28 @@ void BoxRenderer::RenderValues(const list<ColumnDataCollection> &collections, co
|
|
|
409
466
|
} else {
|
|
410
467
|
str = GetRenderValue(rows, column_idx, r);
|
|
411
468
|
}
|
|
412
|
-
|
|
469
|
+
ValueRenderAlignment alignment;
|
|
470
|
+
if (config.render_mode == RenderMode::ROWS) {
|
|
471
|
+
alignment = alignments[c];
|
|
472
|
+
} else {
|
|
473
|
+
if (c < 2) {
|
|
474
|
+
alignment = ValueRenderAlignment::LEFT;
|
|
475
|
+
} else if (c == SPLIT_COLUMN) {
|
|
476
|
+
alignment = ValueRenderAlignment::MIDDLE;
|
|
477
|
+
} else {
|
|
478
|
+
alignment = ValueRenderAlignment::RIGHT;
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
RenderValue(ss, str, widths[c], alignment);
|
|
413
482
|
}
|
|
414
483
|
ss << config.VERTICAL;
|
|
415
484
|
ss << std::endl;
|
|
416
485
|
}
|
|
417
486
|
|
|
418
487
|
if (bottom_rows > 0) {
|
|
488
|
+
if (config.render_mode == RenderMode::COLUMNS) {
|
|
489
|
+
throw InternalException("Columns render mode does not support bottom rows");
|
|
490
|
+
}
|
|
419
491
|
// render the bottom rows
|
|
420
492
|
// first render the divider
|
|
421
493
|
auto brows = bottom_collection.GetRows();
|
|
@@ -607,15 +679,19 @@ void BoxRenderer::Render(ClientContext &context, const vector<string> &names, co
|
|
|
607
679
|
|
|
608
680
|
// fetch the top and bottom render collections from the result
|
|
609
681
|
auto collections = FetchRenderCollections(context, result, top_rows, bottom_rows);
|
|
610
|
-
|
|
611
|
-
auto
|
|
682
|
+
auto column_names = names;
|
|
683
|
+
auto result_types = result.Types();
|
|
684
|
+
if (config.render_mode == RenderMode::COLUMNS) {
|
|
685
|
+
collections = PivotCollections(context, std::move(collections), column_names, result_types, row_count);
|
|
686
|
+
}
|
|
612
687
|
|
|
613
688
|
// for each column, figure out the width
|
|
614
689
|
// start off by figuring out the name of the header by looking at the column name and column type
|
|
615
690
|
idx_t min_width = has_hidden_rows || row_count == 0 ? minimum_row_length : 0;
|
|
616
691
|
vector<idx_t> column_map;
|
|
617
692
|
idx_t total_length;
|
|
618
|
-
auto widths =
|
|
693
|
+
auto widths =
|
|
694
|
+
ComputeRenderWidths(column_names, result_types, collections, min_width, max_width, column_map, total_length);
|
|
619
695
|
|
|
620
696
|
// render boundaries for the individual columns
|
|
621
697
|
vector<idx_t> boundaries;
|
|
@@ -631,7 +707,7 @@ void BoxRenderer::Render(ClientContext &context, const vector<string> &names, co
|
|
|
631
707
|
|
|
632
708
|
// now begin rendering
|
|
633
709
|
// first render the header
|
|
634
|
-
RenderHeader(
|
|
710
|
+
RenderHeader(column_names, result_types, column_map, widths, boundaries, total_length, row_count > 0, ss);
|
|
635
711
|
|
|
636
712
|
// render the values, if there are any
|
|
637
713
|
RenderValues(collections, column_map, widths, result_types, ss);
|
|
@@ -649,10 +725,20 @@ void BoxRenderer::Render(ClientContext &context, const vector<string> &names, co
|
|
|
649
725
|
}
|
|
650
726
|
}
|
|
651
727
|
idx_t column_count = column_map.size();
|
|
652
|
-
if (
|
|
653
|
-
|
|
654
|
-
|
|
728
|
+
if (config.render_mode == RenderMode::COLUMNS) {
|
|
729
|
+
if (has_hidden_columns) {
|
|
730
|
+
has_hidden_rows = true;
|
|
731
|
+
shown_str = " (" + to_string(column_count - 3) + " shown)";
|
|
732
|
+
} else {
|
|
733
|
+
shown_str = string();
|
|
734
|
+
}
|
|
735
|
+
} else {
|
|
736
|
+
if (has_hidden_columns) {
|
|
737
|
+
column_count--;
|
|
738
|
+
column_count_str += " (" + to_string(column_count) + " shown)";
|
|
739
|
+
}
|
|
655
740
|
}
|
|
741
|
+
|
|
656
742
|
RenderRowCount(std::move(row_count_str), std::move(shown_str), column_count_str, boundaries, has_hidden_rows,
|
|
657
743
|
has_hidden_columns, total_length, row_count, column_count, minimum_row_length, ss);
|
|
658
744
|
}
|
|
@@ -1,150 +1,17 @@
|
|
|
1
1
|
#include "duckdb/common/enums/expression_type.hpp"
|
|
2
2
|
|
|
3
3
|
#include "duckdb/common/exception.hpp"
|
|
4
|
+
#include "duckdb/common/serializer/enum_serializer.hpp"
|
|
4
5
|
|
|
5
6
|
namespace duckdb {
|
|
6
7
|
|
|
7
|
-
// LCOV_EXCL_START
|
|
8
8
|
string ExpressionTypeToString(ExpressionType type) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
case ExpressionType::OPERATOR_IS_NULL:
|
|
15
|
-
return "IS_NULL";
|
|
16
|
-
case ExpressionType::OPERATOR_IS_NOT_NULL:
|
|
17
|
-
return "IS_NOT_NULL";
|
|
18
|
-
case ExpressionType::COMPARE_EQUAL:
|
|
19
|
-
return "EQUAL";
|
|
20
|
-
case ExpressionType::COMPARE_NOTEQUAL:
|
|
21
|
-
return "NOTEQUAL";
|
|
22
|
-
case ExpressionType::COMPARE_LESSTHAN:
|
|
23
|
-
return "LESSTHAN";
|
|
24
|
-
case ExpressionType::COMPARE_GREATERTHAN:
|
|
25
|
-
return "GREATERTHAN";
|
|
26
|
-
case ExpressionType::COMPARE_LESSTHANOREQUALTO:
|
|
27
|
-
return "LESSTHANOREQUALTO";
|
|
28
|
-
case ExpressionType::COMPARE_GREATERTHANOREQUALTO:
|
|
29
|
-
return "GREATERTHANOREQUALTO";
|
|
30
|
-
case ExpressionType::COMPARE_IN:
|
|
31
|
-
return "IN";
|
|
32
|
-
case ExpressionType::COMPARE_DISTINCT_FROM:
|
|
33
|
-
return "DISTINCT_FROM";
|
|
34
|
-
case ExpressionType::COMPARE_NOT_DISTINCT_FROM:
|
|
35
|
-
return "NOT_DISTINCT_FROM";
|
|
36
|
-
case ExpressionType::CONJUNCTION_AND:
|
|
37
|
-
return "AND";
|
|
38
|
-
case ExpressionType::CONJUNCTION_OR:
|
|
39
|
-
return "OR";
|
|
40
|
-
case ExpressionType::VALUE_CONSTANT:
|
|
41
|
-
return "CONSTANT";
|
|
42
|
-
case ExpressionType::VALUE_PARAMETER:
|
|
43
|
-
return "PARAMETER";
|
|
44
|
-
case ExpressionType::VALUE_TUPLE:
|
|
45
|
-
return "TUPLE";
|
|
46
|
-
case ExpressionType::VALUE_TUPLE_ADDRESS:
|
|
47
|
-
return "TUPLE_ADDRESS";
|
|
48
|
-
case ExpressionType::VALUE_NULL:
|
|
49
|
-
return "NULL";
|
|
50
|
-
case ExpressionType::VALUE_VECTOR:
|
|
51
|
-
return "VECTOR";
|
|
52
|
-
case ExpressionType::VALUE_SCALAR:
|
|
53
|
-
return "SCALAR";
|
|
54
|
-
case ExpressionType::AGGREGATE:
|
|
55
|
-
return "AGGREGATE";
|
|
56
|
-
case ExpressionType::WINDOW_AGGREGATE:
|
|
57
|
-
return "WINDOW_AGGREGATE";
|
|
58
|
-
case ExpressionType::WINDOW_RANK:
|
|
59
|
-
return "RANK";
|
|
60
|
-
case ExpressionType::WINDOW_RANK_DENSE:
|
|
61
|
-
return "RANK_DENSE";
|
|
62
|
-
case ExpressionType::WINDOW_PERCENT_RANK:
|
|
63
|
-
return "PERCENT_RANK";
|
|
64
|
-
case ExpressionType::WINDOW_ROW_NUMBER:
|
|
65
|
-
return "ROW_NUMBER";
|
|
66
|
-
case ExpressionType::WINDOW_FIRST_VALUE:
|
|
67
|
-
return "FIRST_VALUE";
|
|
68
|
-
case ExpressionType::WINDOW_LAST_VALUE:
|
|
69
|
-
return "LAST_VALUE";
|
|
70
|
-
case ExpressionType::WINDOW_NTH_VALUE:
|
|
71
|
-
return "NTH_VALUE";
|
|
72
|
-
case ExpressionType::WINDOW_CUME_DIST:
|
|
73
|
-
return "CUME_DIST";
|
|
74
|
-
case ExpressionType::WINDOW_LEAD:
|
|
75
|
-
return "LEAD";
|
|
76
|
-
case ExpressionType::WINDOW_LAG:
|
|
77
|
-
return "LAG";
|
|
78
|
-
case ExpressionType::WINDOW_NTILE:
|
|
79
|
-
return "NTILE";
|
|
80
|
-
case ExpressionType::FUNCTION:
|
|
81
|
-
return "FUNCTION";
|
|
82
|
-
case ExpressionType::CASE_EXPR:
|
|
83
|
-
return "CASE";
|
|
84
|
-
case ExpressionType::OPERATOR_NULLIF:
|
|
85
|
-
return "NULLIF";
|
|
86
|
-
case ExpressionType::OPERATOR_COALESCE:
|
|
87
|
-
return "COALESCE";
|
|
88
|
-
case ExpressionType::ARRAY_EXTRACT:
|
|
89
|
-
return "ARRAY_EXTRACT";
|
|
90
|
-
case ExpressionType::ARRAY_SLICE:
|
|
91
|
-
return "ARRAY_SLICE";
|
|
92
|
-
case ExpressionType::STRUCT_EXTRACT:
|
|
93
|
-
return "STRUCT_EXTRACT";
|
|
94
|
-
case ExpressionType::SUBQUERY:
|
|
95
|
-
return "SUBQUERY";
|
|
96
|
-
case ExpressionType::STAR:
|
|
97
|
-
return "STAR";
|
|
98
|
-
case ExpressionType::PLACEHOLDER:
|
|
99
|
-
return "PLACEHOLDER";
|
|
100
|
-
case ExpressionType::COLUMN_REF:
|
|
101
|
-
return "COLUMN_REF";
|
|
102
|
-
case ExpressionType::FUNCTION_REF:
|
|
103
|
-
return "FUNCTION_REF";
|
|
104
|
-
case ExpressionType::TABLE_REF:
|
|
105
|
-
return "TABLE_REF";
|
|
106
|
-
case ExpressionType::CAST:
|
|
107
|
-
return "CAST";
|
|
108
|
-
case ExpressionType::COMPARE_NOT_IN:
|
|
109
|
-
return "COMPARE_NOT_IN";
|
|
110
|
-
case ExpressionType::COMPARE_BETWEEN:
|
|
111
|
-
return "COMPARE_BETWEEN";
|
|
112
|
-
case ExpressionType::COMPARE_NOT_BETWEEN:
|
|
113
|
-
return "COMPARE_NOT_BETWEEN";
|
|
114
|
-
case ExpressionType::VALUE_DEFAULT:
|
|
115
|
-
return "VALUE_DEFAULT";
|
|
116
|
-
case ExpressionType::BOUND_REF:
|
|
117
|
-
return "BOUND_REF";
|
|
118
|
-
case ExpressionType::BOUND_COLUMN_REF:
|
|
119
|
-
return "BOUND_COLUMN_REF";
|
|
120
|
-
case ExpressionType::BOUND_FUNCTION:
|
|
121
|
-
return "BOUND_FUNCTION";
|
|
122
|
-
case ExpressionType::BOUND_AGGREGATE:
|
|
123
|
-
return "BOUND_AGGREGATE";
|
|
124
|
-
case ExpressionType::GROUPING_FUNCTION:
|
|
125
|
-
return "GROUPING";
|
|
126
|
-
case ExpressionType::ARRAY_CONSTRUCTOR:
|
|
127
|
-
return "ARRAY_CONSTRUCTOR";
|
|
128
|
-
case ExpressionType::TABLE_STAR:
|
|
129
|
-
return "TABLE_STAR";
|
|
130
|
-
case ExpressionType::BOUND_UNNEST:
|
|
131
|
-
return "BOUND_UNNEST";
|
|
132
|
-
case ExpressionType::COLLATE:
|
|
133
|
-
return "COLLATE";
|
|
134
|
-
case ExpressionType::POSITIONAL_REFERENCE:
|
|
135
|
-
return "POSITIONAL_REFERENCE";
|
|
136
|
-
case ExpressionType::BOUND_LAMBDA_REF:
|
|
137
|
-
return "BOUND_LAMBDA_REF";
|
|
138
|
-
case ExpressionType::LAMBDA:
|
|
139
|
-
return "LAMBDA";
|
|
140
|
-
case ExpressionType::ARROW:
|
|
141
|
-
return "ARROW";
|
|
142
|
-
case ExpressionType::INVALID:
|
|
143
|
-
break;
|
|
144
|
-
}
|
|
145
|
-
return "INVALID";
|
|
9
|
+
return EnumSerializer::EnumToString(type);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
string ExpressionClassToString(ExpressionClass type) {
|
|
13
|
+
return EnumSerializer::EnumToString(type);
|
|
146
14
|
}
|
|
147
|
-
// LCOV_EXCL_STOP
|
|
148
15
|
|
|
149
16
|
string ExpressionTypeToOperator(ExpressionType type) {
|
|
150
17
|
switch (type) {
|
|
@@ -173,7 +40,7 @@ string ExpressionTypeToOperator(ExpressionType type) {
|
|
|
173
40
|
}
|
|
174
41
|
}
|
|
175
42
|
|
|
176
|
-
ExpressionType
|
|
43
|
+
ExpressionType NegateComparisonExpression(ExpressionType type) {
|
|
177
44
|
ExpressionType negated_type = ExpressionType::INVALID;
|
|
178
45
|
switch (type) {
|
|
179
46
|
case ExpressionType::COMPARE_EQUAL:
|
|
@@ -200,7 +67,7 @@ ExpressionType NegateComparisionExpression(ExpressionType type) {
|
|
|
200
67
|
return negated_type;
|
|
201
68
|
}
|
|
202
69
|
|
|
203
|
-
ExpressionType
|
|
70
|
+
ExpressionType FlipComparisonExpression(ExpressionType type) {
|
|
204
71
|
ExpressionType flipped_type = ExpressionType::INVALID;
|
|
205
72
|
switch (type) {
|
|
206
73
|
case ExpressionType::COMPARE_NOT_DISTINCT_FROM:
|
|
@@ -244,85 +111,4 @@ ExpressionType OperatorToExpressionType(const string &op) {
|
|
|
244
111
|
return ExpressionType::INVALID;
|
|
245
112
|
}
|
|
246
113
|
|
|
247
|
-
string ExpressionClassToString(ExpressionClass type) {
|
|
248
|
-
switch (type) {
|
|
249
|
-
case ExpressionClass::INVALID:
|
|
250
|
-
return "INVALID";
|
|
251
|
-
case ExpressionClass::AGGREGATE:
|
|
252
|
-
return "AGGREGATE";
|
|
253
|
-
case ExpressionClass::CASE:
|
|
254
|
-
return "CASE";
|
|
255
|
-
case ExpressionClass::CAST:
|
|
256
|
-
return "CAST";
|
|
257
|
-
case ExpressionClass::COLUMN_REF:
|
|
258
|
-
return "COLUMN_REF";
|
|
259
|
-
case ExpressionClass::COMPARISON:
|
|
260
|
-
return "COMPARISON";
|
|
261
|
-
case ExpressionClass::CONJUNCTION:
|
|
262
|
-
return "CONJUNCTION";
|
|
263
|
-
case ExpressionClass::CONSTANT:
|
|
264
|
-
return "CONSTANT";
|
|
265
|
-
case ExpressionClass::DEFAULT:
|
|
266
|
-
return "DEFAULT";
|
|
267
|
-
case ExpressionClass::FUNCTION:
|
|
268
|
-
return "FUNCTION";
|
|
269
|
-
case ExpressionClass::OPERATOR:
|
|
270
|
-
return "OPERATOR";
|
|
271
|
-
case ExpressionClass::STAR:
|
|
272
|
-
return "STAR";
|
|
273
|
-
case ExpressionClass::SUBQUERY:
|
|
274
|
-
return "SUBQUERY";
|
|
275
|
-
case ExpressionClass::WINDOW:
|
|
276
|
-
return "WINDOW";
|
|
277
|
-
case ExpressionClass::PARAMETER:
|
|
278
|
-
return "PARAMETER";
|
|
279
|
-
case ExpressionClass::COLLATE:
|
|
280
|
-
return "COLLATE";
|
|
281
|
-
case ExpressionClass::LAMBDA:
|
|
282
|
-
return "LAMBDA";
|
|
283
|
-
case ExpressionClass::POSITIONAL_REFERENCE:
|
|
284
|
-
return "POSITIONAL_REFERENCE";
|
|
285
|
-
case ExpressionClass::BETWEEN:
|
|
286
|
-
return "BETWEEN";
|
|
287
|
-
case ExpressionClass::BOUND_AGGREGATE:
|
|
288
|
-
return "BOUND_AGGREGATE";
|
|
289
|
-
case ExpressionClass::BOUND_CASE:
|
|
290
|
-
return "BOUND_CASE";
|
|
291
|
-
case ExpressionClass::BOUND_CAST:
|
|
292
|
-
return "BOUND_CAST";
|
|
293
|
-
case ExpressionClass::BOUND_COLUMN_REF:
|
|
294
|
-
return "BOUND_COLUMN_REF";
|
|
295
|
-
case ExpressionClass::BOUND_COMPARISON:
|
|
296
|
-
return "BOUND_COMPARISON";
|
|
297
|
-
case ExpressionClass::BOUND_CONJUNCTION:
|
|
298
|
-
return "BOUND_CONJUNCTION";
|
|
299
|
-
case ExpressionClass::BOUND_CONSTANT:
|
|
300
|
-
return "BOUND_CONSTANT";
|
|
301
|
-
case ExpressionClass::BOUND_DEFAULT:
|
|
302
|
-
return "BOUND_DEFAULT";
|
|
303
|
-
case ExpressionClass::BOUND_FUNCTION:
|
|
304
|
-
return "BOUND_FUNCTION";
|
|
305
|
-
case ExpressionClass::BOUND_OPERATOR:
|
|
306
|
-
return "BOUND_OPERATOR";
|
|
307
|
-
case ExpressionClass::BOUND_PARAMETER:
|
|
308
|
-
return "BOUND_PARAMETER";
|
|
309
|
-
case ExpressionClass::BOUND_REF:
|
|
310
|
-
return "BOUND_REF";
|
|
311
|
-
case ExpressionClass::BOUND_SUBQUERY:
|
|
312
|
-
return "BOUND_SUBQUERY";
|
|
313
|
-
case ExpressionClass::BOUND_WINDOW:
|
|
314
|
-
return "BOUND_WINDOW";
|
|
315
|
-
case ExpressionClass::BOUND_BETWEEN:
|
|
316
|
-
return "BOUND_BETWEEN";
|
|
317
|
-
case ExpressionClass::BOUND_UNNEST:
|
|
318
|
-
return "BOUND_UNNEST";
|
|
319
|
-
case ExpressionClass::BOUND_LAMBDA:
|
|
320
|
-
return "BOUND_LAMBDA";
|
|
321
|
-
case ExpressionClass::BOUND_EXPRESSION:
|
|
322
|
-
return "BOUND_EXPRESSION";
|
|
323
|
-
default:
|
|
324
|
-
return "ExpressionClass::!!UNIMPLEMENTED_CASE!!";
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
|
|
328
114
|
} // namespace duckdb
|
|
@@ -1,30 +1,11 @@
|
|
|
1
1
|
#include "duckdb/common/enums/join_type.hpp"
|
|
2
|
+
#include "duckdb/common/serializer/enum_serializer.hpp"
|
|
2
3
|
|
|
3
4
|
namespace duckdb {
|
|
4
5
|
|
|
5
6
|
string JoinTypeToString(JoinType type) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
return "LEFT";
|
|
9
|
-
case JoinType::RIGHT:
|
|
10
|
-
return "RIGHT";
|
|
11
|
-
case JoinType::INNER:
|
|
12
|
-
return "INNER";
|
|
13
|
-
case JoinType::OUTER:
|
|
14
|
-
return "FULL";
|
|
15
|
-
case JoinType::SEMI:
|
|
16
|
-
return "SEMI";
|
|
17
|
-
case JoinType::ANTI:
|
|
18
|
-
return "ANTI";
|
|
19
|
-
case JoinType::SINGLE:
|
|
20
|
-
return "SINGLE";
|
|
21
|
-
case JoinType::MARK:
|
|
22
|
-
return "MARK";
|
|
23
|
-
case JoinType::INVALID: // LCOV_EXCL_START
|
|
24
|
-
break;
|
|
25
|
-
}
|
|
26
|
-
return "INVALID";
|
|
27
|
-
} // LCOV_EXCL_STOP
|
|
7
|
+
return EnumSerializer::EnumToString(type);
|
|
8
|
+
}
|
|
28
9
|
|
|
29
10
|
bool IsLeftOuterJoin(JoinType type) {
|
|
30
11
|
return type == JoinType::LEFT || type == JoinType::OUTER;
|
|
@@ -20,6 +20,8 @@ string LogicalOperatorToString(LogicalOperatorType type) {
|
|
|
20
20
|
return "EXPRESSION_GET";
|
|
21
21
|
case LogicalOperatorType::LOGICAL_ANY_JOIN:
|
|
22
22
|
return "ANY_JOIN";
|
|
23
|
+
case LogicalOperatorType::LOGICAL_ASOF_JOIN:
|
|
24
|
+
return "ASOF_JOIN";
|
|
23
25
|
case LogicalOperatorType::LOGICAL_COMPARISON_JOIN:
|
|
24
26
|
return "COMPARISON_JOIN";
|
|
25
27
|
case LogicalOperatorType::LOGICAL_DELIM_JOIN:
|
|
@@ -138,12 +138,23 @@ string Exception::ExceptionTypeToString(ExceptionType type) {
|
|
|
138
138
|
return "Parameter Not Allowed";
|
|
139
139
|
case ExceptionType::DEPENDENCY:
|
|
140
140
|
return "Dependency";
|
|
141
|
+
case ExceptionType::HTTP:
|
|
142
|
+
return "HTTP";
|
|
141
143
|
default:
|
|
142
144
|
return "Unknown";
|
|
143
145
|
}
|
|
144
146
|
}
|
|
145
147
|
|
|
146
|
-
|
|
148
|
+
const HTTPException &Exception::AsHTTPException() const {
|
|
149
|
+
D_ASSERT(type == ExceptionType::HTTP);
|
|
150
|
+
const auto &e = static_cast<const HTTPException *>(this);
|
|
151
|
+
D_ASSERT(e->GetStatusCode() != 0);
|
|
152
|
+
D_ASSERT(e->GetHeaders().size() > 0);
|
|
153
|
+
return *e;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
void Exception::ThrowAsTypeWithMessage(ExceptionType type, const string &message,
|
|
157
|
+
const std::shared_ptr<Exception> &original) {
|
|
147
158
|
switch (type) {
|
|
148
159
|
case ExceptionType::OUT_OF_RANGE:
|
|
149
160
|
throw OutOfRangeException(message);
|
|
@@ -191,6 +202,9 @@ void Exception::ThrowAsTypeWithMessage(ExceptionType type, const string &message
|
|
|
191
202
|
throw FatalException(message);
|
|
192
203
|
case ExceptionType::DEPENDENCY:
|
|
193
204
|
throw DependencyException(message);
|
|
205
|
+
case ExceptionType::HTTP: {
|
|
206
|
+
original->AsHTTPException().Throw();
|
|
207
|
+
}
|
|
194
208
|
default:
|
|
195
209
|
throw Exception(type, message);
|
|
196
210
|
}
|
|
@@ -8,6 +8,7 @@ namespace duckdb {
|
|
|
8
8
|
FieldWriter::FieldWriter(Serializer &serializer_p)
|
|
9
9
|
: serializer(serializer_p), buffer(make_unique<BufferedSerializer>()), field_count(0), finalized(false) {
|
|
10
10
|
buffer->SetVersion(serializer.GetVersion());
|
|
11
|
+
buffer->is_query_plan = serializer.is_query_plan;
|
|
11
12
|
}
|
|
12
13
|
|
|
13
14
|
FieldWriter::~FieldWriter() {
|
|
@@ -1477,7 +1477,7 @@ bool TryCastToBit::Operation(string_t input, string_t &result, Vector &result_ve
|
|
|
1477
1477
|
}
|
|
1478
1478
|
|
|
1479
1479
|
result = StringVector::EmptyString(result_vector, result_size);
|
|
1480
|
-
Bit::ToBit(input,
|
|
1480
|
+
Bit::ToBit(input, result);
|
|
1481
1481
|
result.Finalize();
|
|
1482
1482
|
return true;
|
|
1483
1483
|
}
|