duckdb 0.7.2-dev0.0 → 0.7.2-dev1138.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.gyp +12 -7
- package/lib/duckdb.d.ts +55 -2
- package/lib/duckdb.js +20 -1
- package/package.json +1 -1
- package/src/connection.cpp +1 -2
- package/src/database.cpp +1 -1
- package/src/duckdb/extension/icu/icu-extension.cpp +4 -0
- package/src/duckdb/extension/icu/icu-list-range.cpp +207 -0
- package/src/duckdb/extension/icu/icu-table-range.cpp +194 -0
- package/src/duckdb/extension/icu/include/icu-list-range.hpp +17 -0
- package/src/duckdb/extension/icu/include/icu-table-range.hpp +17 -0
- package/src/duckdb/extension/icu/third_party/icu/stubdata/stubdata.cpp +1 -1
- package/src/duckdb/extension/json/include/json_common.hpp +1 -0
- package/src/duckdb/extension/json/include/json_functions.hpp +2 -0
- package/src/duckdb/extension/json/include/json_serializer.hpp +77 -0
- package/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp +147 -0
- package/src/duckdb/extension/json/json_functions/read_json.cpp +6 -5
- package/src/duckdb/extension/json/json_functions.cpp +12 -4
- package/src/duckdb/extension/json/json_scan.cpp +2 -2
- package/src/duckdb/extension/json/json_serializer.cpp +217 -0
- package/src/duckdb/extension/parquet/column_reader.cpp +94 -15
- package/src/duckdb/extension/parquet/column_writer.cpp +0 -1
- package/src/duckdb/extension/parquet/include/column_reader.hpp +1 -2
- package/src/duckdb/extension/parquet/include/decode_utils.hpp +5 -4
- package/src/duckdb/extension/parquet/include/generated_column_reader.hpp +1 -11
- package/src/duckdb/extension/parquet/include/parquet_timestamp.hpp +2 -1
- package/src/duckdb/extension/parquet/parquet-extension.cpp +12 -2
- package/src/duckdb/extension/parquet/parquet_reader.cpp +1 -1
- package/src/duckdb/extension/parquet/parquet_statistics.cpp +26 -32
- package/src/duckdb/extension/parquet/parquet_timestamp.cpp +16 -6
- package/src/duckdb/src/catalog/catalog.cpp +34 -5
- package/src/duckdb/src/catalog/catalog_entry/duck_schema_entry.cpp +4 -0
- package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +2 -21
- package/src/duckdb/src/catalog/catalog_entry/scalar_function_catalog_entry.cpp +7 -6
- package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +3 -3
- package/src/duckdb/src/catalog/catalog_entry/table_function_catalog_entry.cpp +20 -1
- package/src/duckdb/src/catalog/catalog_entry/type_catalog_entry.cpp +8 -2
- package/src/duckdb/src/catalog/catalog_set.cpp +1 -0
- package/src/duckdb/src/catalog/default/default_functions.cpp +3 -0
- package/src/duckdb/src/catalog/dependency_list.cpp +12 -0
- package/src/duckdb/src/catalog/duck_catalog.cpp +34 -7
- package/src/duckdb/src/common/arrow/arrow_appender.cpp +48 -4
- package/src/duckdb/src/common/arrow/arrow_converter.cpp +1 -1
- package/src/duckdb/src/common/box_renderer.cpp +109 -23
- package/src/duckdb/src/common/enums/expression_type.cpp +8 -222
- package/src/duckdb/src/common/enums/join_type.cpp +3 -22
- package/src/duckdb/src/common/enums/logical_operator_type.cpp +2 -0
- package/src/duckdb/src/common/enums/statement_type.cpp +2 -0
- package/src/duckdb/src/common/exception.cpp +15 -1
- package/src/duckdb/src/common/field_writer.cpp +1 -0
- package/src/duckdb/src/common/hive_partitioning.cpp +3 -1
- package/src/duckdb/src/common/operator/cast_operators.cpp +1 -1
- package/src/duckdb/src/common/preserved_error.cpp +7 -5
- package/src/duckdb/src/common/progress_bar/progress_bar.cpp +7 -0
- package/src/duckdb/src/common/serializer/buffered_deserializer.cpp +4 -0
- package/src/duckdb/src/common/serializer/buffered_file_reader.cpp +15 -2
- package/src/duckdb/src/common/serializer/enum_serializer.cpp +1176 -0
- package/src/duckdb/src/common/sort/comparators.cpp +14 -5
- package/src/duckdb/src/common/sort/sort_state.cpp +5 -7
- package/src/duckdb/src/common/sort/sorted_block.cpp +0 -1
- package/src/duckdb/src/common/string_util.cpp +4 -1
- package/src/duckdb/src/common/types/bit.cpp +166 -87
- package/src/duckdb/src/common/types/blob.cpp +1 -1
- package/src/duckdb/src/common/types/chunk_collection.cpp +2 -2
- package/src/duckdb/src/common/types/column_data_collection.cpp +39 -2
- package/src/duckdb/src/common/types/column_data_collection_segment.cpp +11 -6
- package/src/duckdb/src/common/types/data_chunk.cpp +1 -1
- package/src/duckdb/src/common/types/interval.cpp +0 -41
- package/src/duckdb/src/common/types/list_segment.cpp +658 -0
- package/src/duckdb/src/common/types/string_heap.cpp +1 -1
- package/src/duckdb/src/common/types/string_type.cpp +1 -1
- package/src/duckdb/src/common/types/time.cpp +13 -0
- package/src/duckdb/src/common/types/value.cpp +320 -154
- package/src/duckdb/src/common/types/vector.cpp +156 -128
- package/src/duckdb/src/common/types.cpp +313 -153
- package/src/duckdb/src/common/value_operations/comparison_operations.cpp +14 -22
- package/src/duckdb/src/common/vector_operations/comparison_operators.cpp +10 -10
- package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +11 -10
- package/src/duckdb/src/common/vector_operations/vector_cast.cpp +2 -1
- package/src/duckdb/src/execution/aggregate_hashtable.cpp +10 -5
- package/src/duckdb/src/execution/column_binding_resolver.cpp +21 -5
- package/src/duckdb/src/execution/expression_executor/execute_cast.cpp +2 -1
- package/src/duckdb/src/execution/expression_executor/execute_comparison.cpp +2 -2
- package/src/duckdb/src/execution/index/art/art.cpp +19 -5
- package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +1 -1
- package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +4 -5
- package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +117 -26
- package/src/duckdb/src/execution/operator/helper/physical_limit.cpp +3 -0
- package/src/duckdb/src/execution/operator/helper/physical_vacuum.cpp +5 -3
- package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +64 -17
- package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +2 -0
- package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +2 -2
- package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +13 -4
- package/src/duckdb/src/execution/operator/join/physical_join.cpp +0 -3
- package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +6 -11
- package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +3 -1
- package/src/duckdb/src/execution/operator/persistent/base_csv_reader.cpp +11 -4
- package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +24 -19
- package/src/duckdb/src/execution/operator/persistent/csv_reader_options.cpp +3 -0
- package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +2 -1
- package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +2 -2
- package/src/duckdb/src/execution/operator/persistent/physical_delete.cpp +1 -3
- package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -0
- package/src/duckdb/src/execution/operator/projection/physical_projection.cpp +34 -0
- package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +20 -5
- package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +20 -40
- package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +0 -4
- package/src/duckdb/src/execution/partitionable_hashtable.cpp +14 -2
- package/src/duckdb/src/execution/physical_plan/plan_aggregate.cpp +22 -16
- package/src/duckdb/src/execution/physical_plan/plan_asof_join.cpp +97 -0
- package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +95 -47
- package/src/duckdb/src/execution/physical_plan/plan_create_index.cpp +2 -1
- package/src/duckdb/src/execution/physical_plan/plan_distinct.cpp +5 -8
- package/src/duckdb/src/execution/physical_plan/plan_positional_join.cpp +14 -5
- package/src/duckdb/src/execution/physical_plan_generator.cpp +3 -0
- package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +1 -0
- package/src/duckdb/src/execution/window_segment_tree.cpp +173 -1
- package/src/duckdb/src/function/aggregate/algebraic/avg.cpp +0 -6
- package/src/duckdb/src/function/aggregate/distributive/bitagg.cpp +99 -95
- package/src/duckdb/src/function/aggregate/distributive/bitstring_agg.cpp +269 -0
- package/src/duckdb/src/function/aggregate/distributive/bool.cpp +2 -0
- package/src/duckdb/src/function/aggregate/distributive/count.cpp +3 -4
- package/src/duckdb/src/function/aggregate/distributive/first.cpp +1 -0
- package/src/duckdb/src/function/aggregate/distributive/minmax.cpp +2 -0
- package/src/duckdb/src/function/aggregate/distributive/sum.cpp +19 -16
- package/src/duckdb/src/function/aggregate/distributive_functions.cpp +1 -0
- package/src/duckdb/src/function/aggregate/holistic/approximate_quantile.cpp +5 -2
- package/src/duckdb/src/function/aggregate/holistic/mode.cpp +1 -1
- package/src/duckdb/src/function/aggregate/holistic/quantile.cpp +16 -1
- package/src/duckdb/src/function/aggregate/nested/list.cpp +6 -712
- package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +58 -16
- package/src/duckdb/src/function/cast/bit_cast.cpp +0 -2
- package/src/duckdb/src/function/cast/blob_cast.cpp +0 -1
- package/src/duckdb/src/function/cast/cast_function_set.cpp +1 -1
- package/src/duckdb/src/function/cast/enum_casts.cpp +25 -3
- package/src/duckdb/src/function/cast/list_casts.cpp +17 -4
- package/src/duckdb/src/function/cast/map_cast.cpp +5 -2
- package/src/duckdb/src/function/cast/string_cast.cpp +36 -10
- package/src/duckdb/src/function/cast/struct_cast.cpp +24 -4
- package/src/duckdb/src/function/cast/time_casts.cpp +2 -2
- package/src/duckdb/src/function/cast/union_casts.cpp +33 -7
- package/src/duckdb/src/function/function_binder.cpp +1 -8
- package/src/duckdb/src/function/scalar/bit/bitstring.cpp +100 -0
- package/src/duckdb/src/function/scalar/date/current.cpp +0 -2
- package/src/duckdb/src/function/scalar/date/date_diff.cpp +0 -1
- package/src/duckdb/src/function/scalar/date/date_part.cpp +18 -26
- package/src/duckdb/src/function/scalar/date/date_sub.cpp +0 -1
- package/src/duckdb/src/function/scalar/date/date_trunc.cpp +10 -14
- package/src/duckdb/src/function/scalar/generic/stats.cpp +2 -4
- package/src/duckdb/src/function/scalar/list/contains_or_position.cpp +4 -146
- package/src/duckdb/src/function/scalar/list/flatten.cpp +5 -12
- package/src/duckdb/src/function/scalar/list/list_aggregates.cpp +1 -1
- package/src/duckdb/src/function/scalar/list/list_concat.cpp +8 -12
- package/src/duckdb/src/function/scalar/list/list_extract.cpp +5 -12
- package/src/duckdb/src/function/scalar/list/list_lambdas.cpp +7 -3
- package/src/duckdb/src/function/scalar/list/list_sort.cpp +25 -18
- package/src/duckdb/src/function/scalar/list/list_value.cpp +6 -10
- package/src/duckdb/src/function/scalar/map/map.cpp +47 -1
- package/src/duckdb/src/function/scalar/map/map_entries.cpp +61 -0
- package/src/duckdb/src/function/scalar/map/map_extract.cpp +68 -26
- package/src/duckdb/src/function/scalar/map/map_keys_values.cpp +97 -0
- package/src/duckdb/src/function/scalar/math/numeric.cpp +101 -17
- package/src/duckdb/src/function/scalar/math_functions.cpp +3 -0
- package/src/duckdb/src/function/scalar/nested_functions.cpp +3 -0
- package/src/duckdb/src/function/scalar/operators/add.cpp +0 -9
- package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +29 -48
- package/src/duckdb/src/function/scalar/operators/bitwise.cpp +0 -63
- package/src/duckdb/src/function/scalar/operators/multiply.cpp +5 -6
- package/src/duckdb/src/function/scalar/operators/subtract.cpp +0 -6
- package/src/duckdb/src/function/scalar/string/caseconvert.cpp +2 -6
- package/src/duckdb/src/function/scalar/string/hex.cpp +201 -0
- package/src/duckdb/src/function/scalar/string/instr.cpp +2 -6
- package/src/duckdb/src/function/scalar/string/length.cpp +2 -6
- package/src/duckdb/src/function/scalar/string/like.cpp +2 -6
- package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +243 -0
- package/src/duckdb/src/function/scalar/string/regexp/regexp_util.cpp +79 -0
- package/src/duckdb/src/function/scalar/string/regexp.cpp +21 -80
- package/src/duckdb/src/function/scalar/string/substring.cpp +2 -6
- package/src/duckdb/src/function/scalar/string_functions.cpp +2 -0
- package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +5 -10
- package/src/duckdb/src/function/scalar/struct/struct_insert.cpp +11 -14
- package/src/duckdb/src/function/scalar/struct/struct_pack.cpp +6 -7
- package/src/duckdb/src/function/table/arrow.cpp +5 -2
- package/src/duckdb/src/function/table/arrow_conversion.cpp +25 -1
- package/src/duckdb/src/function/table/checkpoint.cpp +5 -1
- package/src/duckdb/src/function/table/read_csv.cpp +60 -0
- package/src/duckdb/src/function/table/system/duckdb_constraints.cpp +2 -2
- package/src/duckdb/src/function/table/system/test_all_types.cpp +2 -2
- package/src/duckdb/src/function/table/table_scan.cpp +9 -12
- package/src/duckdb/src/function/table/version/pragma_version.cpp +2 -2
- package/src/duckdb/src/function/table_function.cpp +30 -11
- package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +6 -0
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +1 -1
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_function_catalog_entry.hpp +6 -8
- package/src/duckdb/src/include/duckdb/catalog/dependency_list.hpp +3 -0
- package/src/duckdb/src/include/duckdb/catalog/duck_catalog.hpp +2 -1
- package/src/duckdb/src/include/duckdb/common/box_renderer.hpp +8 -2
- package/src/duckdb/src/include/duckdb/common/constants.hpp +0 -19
- package/src/duckdb/src/include/duckdb/common/enums/aggregate_handling.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/enums/expression_type.hpp +2 -3
- package/src/duckdb/src/include/duckdb/common/enums/joinref_type.hpp +7 -4
- package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/enums/order_type.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/enums/set_operation_type.hpp +2 -1
- package/src/duckdb/src/include/duckdb/common/enums/statement_type.hpp +2 -1
- package/src/duckdb/src/include/duckdb/common/enums/tableref_type.hpp +2 -1
- package/src/duckdb/src/include/duckdb/common/exception.hpp +69 -2
- package/src/duckdb/src/include/duckdb/common/field_writer.hpp +12 -4
- package/src/duckdb/src/include/duckdb/common/helper.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/{http_stats.hpp → http_state.hpp} +18 -4
- package/src/duckdb/src/include/duckdb/common/operator/comparison_operators.hpp +45 -149
- package/src/duckdb/src/include/duckdb/common/operator/multiply.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/optional_ptr.hpp +45 -0
- package/src/duckdb/src/include/duckdb/common/preserved_error.hpp +6 -1
- package/src/duckdb/src/include/duckdb/common/progress_bar/progress_bar.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/serializer/buffered_deserializer.hpp +4 -2
- package/src/duckdb/src/include/duckdb/common/serializer/buffered_file_reader.hpp +8 -2
- package/src/duckdb/src/include/duckdb/common/serializer/enum_serializer.hpp +113 -0
- package/src/duckdb/src/include/duckdb/common/serializer/format_deserializer.hpp +336 -0
- package/src/duckdb/src/include/duckdb/common/serializer/format_serializer.hpp +268 -0
- package/src/duckdb/src/include/duckdb/common/serializer/serialization_traits.hpp +126 -0
- package/src/duckdb/src/include/duckdb/common/serializer.hpp +13 -0
- package/src/duckdb/src/include/duckdb/common/string_util.hpp +25 -0
- package/src/duckdb/src/include/duckdb/common/types/bit.hpp +12 -7
- package/src/duckdb/src/include/duckdb/common/types/interval.hpp +39 -3
- package/src/duckdb/src/include/duckdb/common/types/list_segment.hpp +70 -0
- package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +73 -3
- package/src/duckdb/src/include/duckdb/common/types/time.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/types/value.hpp +17 -48
- package/src/duckdb/src/include/duckdb/common/types/value_map.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/vector.hpp +3 -1
- package/src/duckdb/src/include/duckdb/common/types.hpp +45 -8
- package/src/duckdb/src/include/duckdb/common/vector_operations/unary_executor.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/aggregate_hashtable.hpp +1 -0
- package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +3 -14
- package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_perfecthash_aggregate.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_cross_product.hpp +2 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_file_handle.hpp +1 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_reader_options.hpp +10 -0
- package/src/duckdb/src/include/duckdb/execution/operator/projection/physical_projection.hpp +5 -0
- package/src/duckdb/src/include/duckdb/execution/partitionable_hashtable.hpp +3 -0
- package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +1 -3
- package/src/duckdb/src/include/duckdb/execution/window_segment_tree.hpp +54 -0
- package/src/duckdb/src/include/duckdb/function/aggregate/distributive_functions.hpp +5 -0
- package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +18 -6
- package/src/duckdb/src/include/duckdb/function/cast/bound_cast_data.hpp +84 -0
- package/src/duckdb/src/include/duckdb/function/cast/cast_function_set.hpp +2 -2
- package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +28 -64
- package/src/duckdb/src/include/duckdb/function/function_binder.hpp +3 -6
- package/src/duckdb/src/include/duckdb/function/scalar/bit_functions.hpp +4 -0
- package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +138 -0
- package/src/duckdb/src/include/duckdb/function/scalar/math_functions.hpp +8 -0
- package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +59 -0
- package/src/duckdb/src/include/duckdb/function/scalar/regexp.hpp +81 -1
- package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +4 -0
- package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +2 -2
- package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +12 -1
- package/src/duckdb/src/include/duckdb/function/table_function.hpp +10 -0
- package/src/duckdb/src/include/duckdb/main/capi/capi_internal.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/client_config.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/client_data.hpp +3 -3
- package/src/duckdb/src/include/duckdb/main/config.hpp +3 -0
- package/src/duckdb/src/include/duckdb/main/connection_manager.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/database.hpp +1 -0
- package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/prepared_statement.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/relation/explain_relation.hpp +2 -1
- package/src/duckdb/src/include/duckdb/main/relation.hpp +2 -1
- package/src/duckdb/src/include/duckdb/optimizer/filter_pushdown.hpp +2 -0
- package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +2 -2
- package/src/duckdb/src/include/duckdb/optimizer/rule/list.hpp +1 -0
- package/src/duckdb/src/include/duckdb/optimizer/rule/ordered_aggregate_optimizer.hpp +24 -0
- package/src/duckdb/src/include/duckdb/parser/common_table_expression_info.hpp +4 -0
- package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +5 -0
- package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/expression/default_expression.hpp +1 -0
- package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +4 -2
- package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +4 -2
- package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +5 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_info.hpp +5 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/{alter_function_info.hpp → alter_scalar_function_info.hpp} +13 -13
- package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_function_info.hpp +47 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +6 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_table_function_info.hpp +2 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/sample_options.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +5 -0
- package/src/duckdb/src/include/duckdb/parser/query_node/recursive_cte_node.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/query_node/select_node.hpp +5 -0
- package/src/duckdb/src/include/duckdb/parser/query_node/set_operation_node.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/query_node.hpp +13 -2
- package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +24 -1
- package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +2 -1
- package/src/duckdb/src/include/duckdb/parser/statement/multi_statement.hpp +28 -0
- package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +6 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +4 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/list.hpp +1 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +87 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/tableref.hpp +3 -1
- package/src/duckdb/src/include/duckdb/parser/tokens.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/transformer.hpp +33 -0
- package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +2 -0
- package/src/duckdb/src/include/duckdb/planner/binder.hpp +15 -4
- package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/expression_binder/base_select_binder.hpp +64 -0
- package/src/duckdb/src/include/duckdb/planner/expression_binder/having_binder.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/expression_binder/order_binder.hpp +4 -1
- package/src/duckdb/src/include/duckdb/planner/expression_binder/qualify_binder.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/expression_binder/select_binder.hpp +9 -38
- package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/logical_tokens.hpp +1 -0
- package/src/duckdb/src/include/duckdb/planner/operator/list.hpp +1 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_asof_join.hpp +22 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_comparison_join.hpp +5 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_distinct.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/query_node/bound_select_node.hpp +8 -2
- package/src/duckdb/src/include/duckdb/storage/buffer/block_handle.hpp +2 -0
- package/src/duckdb/src/include/duckdb/storage/buffer_manager.hpp +76 -44
- package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_writer.hpp +3 -2
- package/src/duckdb/src/include/duckdb/storage/checkpoint_manager.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_compress.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_fetch.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_scan.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_fetch.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_scan.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/data_pointer.hpp +4 -3
- package/src/duckdb/src/include/duckdb/storage/data_table.hpp +4 -3
- package/src/duckdb/src/include/duckdb/storage/index.hpp +5 -4
- package/src/duckdb/src/include/duckdb/storage/meta_block_reader.hpp +7 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/base_statistics.hpp +93 -29
- package/src/duckdb/src/include/duckdb/storage/statistics/column_statistics.hpp +22 -3
- package/src/duckdb/src/include/duckdb/storage/statistics/distinct_statistics.hpp +8 -6
- package/src/duckdb/src/include/duckdb/storage/statistics/list_stats.hpp +41 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/node_statistics.hpp +26 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/numeric_stats.hpp +114 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/numeric_stats_union.hpp +62 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/segment_statistics.hpp +2 -7
- package/src/duckdb/src/include/duckdb/storage/statistics/string_stats.hpp +74 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/struct_stats.hpp +42 -0
- package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +2 -3
- package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +21 -7
- package/src/duckdb/src/include/duckdb/storage/table/column_data_checkpointer.hpp +3 -2
- package/src/duckdb/src/include/duckdb/storage/table/column_segment.hpp +5 -6
- package/src/duckdb/src/include/duckdb/storage/table/column_segment_tree.hpp +18 -0
- package/src/duckdb/src/include/duckdb/storage/table/list_column_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/persistent_table_data.hpp +6 -3
- package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +41 -45
- package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +23 -7
- package/src/duckdb/src/include/duckdb/storage/table/row_group_segment_tree.hpp +35 -0
- package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +21 -29
- package/src/duckdb/src/include/duckdb/storage/table/segment_base.hpp +6 -6
- package/src/duckdb/src/include/duckdb/storage/table/segment_tree.hpp +281 -26
- package/src/duckdb/src/include/duckdb/storage/table/standard_column_data.hpp +0 -4
- package/src/duckdb/src/include/duckdb/storage/table/table_statistics.hpp +5 -0
- package/src/duckdb/src/include/duckdb/storage/table/update_segment.hpp +0 -1
- package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +1 -1
- package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +6 -3
- package/src/duckdb/src/include/duckdb.h +71 -2
- package/src/duckdb/src/include/duckdb.hpp +0 -1
- package/src/duckdb/src/main/capi/pending-c.cpp +16 -3
- package/src/duckdb/src/main/capi/result-c.cpp +27 -1
- package/src/duckdb/src/main/capi/stream-c.cpp +25 -0
- package/src/duckdb/src/main/capi/table_function-c.cpp +23 -0
- package/src/duckdb/src/main/client_context.cpp +38 -34
- package/src/duckdb/src/main/client_data.cpp +7 -6
- package/src/duckdb/src/main/config.cpp +70 -1
- package/src/duckdb/src/main/database.cpp +19 -2
- package/src/duckdb/src/main/extension/extension_install.cpp +7 -2
- package/src/duckdb/src/main/prepared_statement.cpp +4 -0
- package/src/duckdb/src/main/query_profiler.cpp +17 -15
- package/src/duckdb/src/main/relation/explain_relation.cpp +3 -3
- package/src/duckdb/src/main/relation.cpp +3 -2
- package/src/duckdb/src/main/settings/settings.cpp +20 -8
- package/src/duckdb/src/optimizer/column_lifetime_analyzer.cpp +1 -0
- package/src/duckdb/src/optimizer/deliminator.cpp +1 -1
- package/src/duckdb/src/optimizer/filter_combiner.cpp +3 -6
- package/src/duckdb/src/optimizer/filter_pullup.cpp +3 -1
- package/src/duckdb/src/optimizer/filter_pushdown.cpp +14 -8
- package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +107 -71
- package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +32 -12
- package/src/duckdb/src/optimizer/optimizer.cpp +1 -0
- package/src/duckdb/src/optimizer/pullup/pullup_from_left.cpp +2 -2
- package/src/duckdb/src/optimizer/pushdown/pushdown_aggregate.cpp +33 -5
- package/src/duckdb/src/optimizer/pushdown/pushdown_cross_product.cpp +1 -1
- package/src/duckdb/src/optimizer/pushdown/pushdown_inner_join.cpp +3 -0
- package/src/duckdb/src/optimizer/pushdown/pushdown_left_join.cpp +5 -12
- package/src/duckdb/src/optimizer/pushdown/pushdown_mark_join.cpp +2 -2
- package/src/duckdb/src/optimizer/pushdown/pushdown_single_join.cpp +1 -1
- package/src/duckdb/src/optimizer/remove_unused_columns.cpp +1 -0
- package/src/duckdb/src/optimizer/rule/move_constants.cpp +10 -4
- package/src/duckdb/src/optimizer/rule/ordered_aggregate_optimizer.cpp +30 -0
- package/src/duckdb/src/optimizer/rule/regex_optimizations.cpp +9 -2
- package/src/duckdb/src/optimizer/statistics/expression/propagate_aggregate.cpp +9 -3
- package/src/duckdb/src/optimizer/statistics/expression/propagate_and_compress.cpp +6 -7
- package/src/duckdb/src/optimizer/statistics/expression/propagate_cast.cpp +14 -11
- package/src/duckdb/src/optimizer/statistics/expression/propagate_columnref.cpp +1 -1
- package/src/duckdb/src/optimizer/statistics/expression/propagate_comparison.cpp +13 -15
- package/src/duckdb/src/optimizer/statistics/expression/propagate_conjunction.cpp +0 -1
- package/src/duckdb/src/optimizer/statistics/expression/propagate_constant.cpp +3 -75
- package/src/duckdb/src/optimizer/statistics/expression/propagate_function.cpp +7 -2
- package/src/duckdb/src/optimizer/statistics/expression/propagate_operator.cpp +10 -0
- package/src/duckdb/src/optimizer/statistics/operator/propagate_aggregate.cpp +2 -3
- package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +29 -32
- package/src/duckdb/src/optimizer/statistics/operator/propagate_join.cpp +5 -5
- package/src/duckdb/src/optimizer/statistics/operator/propagate_set_operation.cpp +3 -3
- package/src/duckdb/src/optimizer/statistics_propagator.cpp +2 -1
- package/src/duckdb/src/optimizer/unnest_rewriter.cpp +2 -2
- package/src/duckdb/src/parallel/meta_pipeline.cpp +0 -7
- package/src/duckdb/src/parser/common_table_expression_info.cpp +19 -0
- package/src/duckdb/src/parser/expression/between_expression.cpp +17 -0
- package/src/duckdb/src/parser/expression/case_expression.cpp +28 -0
- package/src/duckdb/src/parser/expression/cast_expression.cpp +17 -0
- package/src/duckdb/src/parser/expression/collate_expression.cpp +16 -0
- package/src/duckdb/src/parser/expression/columnref_expression.cpp +15 -0
- package/src/duckdb/src/parser/expression/comparison_expression.cpp +16 -0
- package/src/duckdb/src/parser/expression/conjunction_expression.cpp +17 -0
- package/src/duckdb/src/parser/expression/constant_expression.cpp +14 -0
- package/src/duckdb/src/parser/expression/default_expression.cpp +7 -0
- package/src/duckdb/src/parser/expression/function_expression.cpp +35 -0
- package/src/duckdb/src/parser/expression/lambda_expression.cpp +16 -0
- package/src/duckdb/src/parser/expression/operator_expression.cpp +15 -0
- package/src/duckdb/src/parser/expression/parameter_expression.cpp +15 -0
- package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +14 -0
- package/src/duckdb/src/parser/expression/star_expression.cpp +26 -6
- package/src/duckdb/src/parser/expression/subquery_expression.cpp +20 -0
- package/src/duckdb/src/parser/expression/window_expression.cpp +43 -0
- package/src/duckdb/src/parser/parsed_data/alter_info.cpp +7 -3
- package/src/duckdb/src/parser/parsed_data/alter_scalar_function_info.cpp +56 -0
- package/src/duckdb/src/parser/parsed_data/alter_table_function_info.cpp +51 -0
- package/src/duckdb/src/parser/parsed_data/create_scalar_function_info.cpp +3 -2
- package/src/duckdb/src/parser/parsed_data/create_table_function_info.cpp +6 -0
- package/src/duckdb/src/parser/parsed_data/sample_options.cpp +22 -10
- package/src/duckdb/src/parser/parsed_expression.cpp +72 -0
- package/src/duckdb/src/parser/parsed_expression_iterator.cpp +15 -1
- package/src/duckdb/src/parser/query_node/recursive_cte_node.cpp +21 -0
- package/src/duckdb/src/parser/query_node/select_node.cpp +31 -0
- package/src/duckdb/src/parser/query_node/set_operation_node.cpp +17 -0
- package/src/duckdb/src/parser/query_node.cpp +51 -1
- package/src/duckdb/src/parser/result_modifier.cpp +78 -0
- package/src/duckdb/src/parser/statement/multi_statement.cpp +18 -0
- package/src/duckdb/src/parser/statement/select_statement.cpp +12 -0
- package/src/duckdb/src/parser/tableref/basetableref.cpp +21 -0
- package/src/duckdb/src/parser/tableref/emptytableref.cpp +4 -0
- package/src/duckdb/src/parser/tableref/expressionlistref.cpp +17 -0
- package/src/duckdb/src/parser/tableref/joinref.cpp +29 -0
- package/src/duckdb/src/parser/tableref/pivotref.cpp +373 -0
- package/src/duckdb/src/parser/tableref/subqueryref.cpp +15 -0
- package/src/duckdb/src/parser/tableref/table_function.cpp +17 -0
- package/src/duckdb/src/parser/tableref.cpp +49 -0
- package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +11 -0
- package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +1 -1
- package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +17 -2
- package/src/duckdb/src/parser/transform/expression/transform_function.cpp +85 -42
- package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +1 -1
- package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +1 -1
- package/src/duckdb/src/parser/transform/helpers/transform_alias.cpp +12 -6
- package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +24 -0
- package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +7 -0
- package/src/duckdb/src/parser/transform/helpers/transform_orderby.cpp +0 -7
- package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +3 -2
- package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +4 -0
- package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +4 -0
- package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +179 -0
- package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +3 -4
- package/src/duckdb/src/parser/transform/statement/transform_select.cpp +8 -0
- package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +2 -3
- package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +12 -1
- package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +121 -0
- package/src/duckdb/src/parser/transform/tableref/transform_tableref.cpp +2 -0
- package/src/duckdb/src/parser/transformer.cpp +15 -3
- package/src/duckdb/src/planner/bind_context.cpp +18 -25
- package/src/duckdb/src/planner/binder/expression/bind_aggregate_expression.cpp +9 -7
- package/src/duckdb/src/planner/binder/expression/bind_columnref_expression.cpp +4 -3
- package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +23 -12
- package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +3 -2
- package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +176 -0
- package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +4 -0
- package/src/duckdb/src/planner/binder/expression/bind_unnest_expression.cpp +163 -24
- package/src/duckdb/src/planner/binder/expression/bind_window_expression.cpp +2 -2
- package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +109 -94
- package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +11 -0
- package/src/duckdb/src/planner/binder/query_node/plan_select_node.cpp +9 -4
- package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +5 -3
- package/src/duckdb/src/planner/binder/statement/bind_create.cpp +3 -2
- package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +10 -1
- package/src/duckdb/src/planner/binder/statement/bind_delete.cpp +1 -1
- package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +12 -8
- package/src/duckdb/src/planner/binder/statement/bind_logical_plan.cpp +17 -0
- package/src/duckdb/src/planner/binder/statement/bind_update.cpp +4 -2
- package/src/duckdb/src/planner/binder/tableref/bind_joinref.cpp +19 -3
- package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +366 -0
- package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +11 -1
- package/src/duckdb/src/planner/binder/tableref/plan_cteref.cpp +1 -0
- package/src/duckdb/src/planner/binder/tableref/plan_joinref.cpp +61 -13
- package/src/duckdb/src/planner/binder.cpp +19 -24
- package/src/duckdb/src/planner/bound_result_modifier.cpp +27 -1
- package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +9 -2
- package/src/duckdb/src/planner/expression/bound_expression.cpp +4 -0
- package/src/duckdb/src/planner/expression/bound_window_expression.cpp +1 -1
- package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +146 -0
- package/src/duckdb/src/planner/expression_binder/having_binder.cpp +6 -3
- package/src/duckdb/src/planner/expression_binder/qualify_binder.cpp +3 -3
- package/src/duckdb/src/planner/expression_binder/select_binder.cpp +1 -132
- package/src/duckdb/src/planner/expression_binder.cpp +10 -3
- package/src/duckdb/src/planner/expression_iterator.cpp +17 -10
- package/src/duckdb/src/planner/filter/constant_filter.cpp +4 -6
- package/src/duckdb/src/planner/logical_operator.cpp +7 -2
- package/src/duckdb/src/planner/logical_operator_visitor.cpp +6 -0
- package/src/duckdb/src/planner/operator/logical_asof_join.cpp +8 -0
- package/src/duckdb/src/planner/operator/logical_distinct.cpp +3 -0
- package/src/duckdb/src/planner/planner.cpp +2 -1
- package/src/duckdb/src/planner/pragma_handler.cpp +10 -2
- package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +3 -1
- package/src/duckdb/src/storage/buffer_manager.cpp +44 -46
- package/src/duckdb/src/storage/checkpoint/row_group_writer.cpp +1 -1
- package/src/duckdb/src/storage/checkpoint/table_data_reader.cpp +4 -15
- package/src/duckdb/src/storage/checkpoint/table_data_writer.cpp +10 -4
- package/src/duckdb/src/storage/checkpoint_manager.cpp +9 -3
- package/src/duckdb/src/storage/compression/bitpacking.cpp +29 -25
- package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +45 -46
- package/src/duckdb/src/storage/compression/numeric_constant.cpp +10 -11
- package/src/duckdb/src/storage/compression/patas.cpp +1 -1
- package/src/duckdb/src/storage/compression/rle.cpp +20 -15
- package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +6 -6
- package/src/duckdb/src/storage/data_table.cpp +23 -23
- package/src/duckdb/src/storage/index.cpp +12 -1
- package/src/duckdb/src/storage/local_storage.cpp +27 -23
- package/src/duckdb/src/storage/meta_block_reader.cpp +22 -0
- package/src/duckdb/src/storage/statistics/base_statistics.cpp +373 -128
- package/src/duckdb/src/storage/statistics/column_statistics.cpp +57 -3
- package/src/duckdb/src/storage/statistics/distinct_statistics.cpp +8 -9
- package/src/duckdb/src/storage/statistics/list_stats.cpp +121 -0
- package/src/duckdb/src/storage/statistics/numeric_stats.cpp +591 -0
- package/src/duckdb/src/storage/statistics/numeric_stats_union.cpp +65 -0
- package/src/duckdb/src/storage/statistics/segment_statistics.cpp +2 -11
- package/src/duckdb/src/storage/statistics/string_stats.cpp +273 -0
- package/src/duckdb/src/storage/statistics/struct_stats.cpp +133 -0
- package/src/duckdb/src/storage/storage_info.cpp +2 -2
- package/src/duckdb/src/storage/table/column_checkpoint_state.cpp +4 -10
- package/src/duckdb/src/storage/table/column_data.cpp +118 -62
- package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +10 -9
- package/src/duckdb/src/storage/table/column_segment.cpp +30 -45
- package/src/duckdb/src/storage/table/list_column_data.cpp +50 -71
- package/src/duckdb/src/storage/table/persistent_table_data.cpp +2 -1
- package/src/duckdb/src/storage/table/row_group.cpp +213 -143
- package/src/duckdb/src/storage/table/row_group_collection.cpp +151 -105
- package/src/duckdb/src/storage/table/scan_state.cpp +45 -33
- package/src/duckdb/src/storage/table/standard_column_data.cpp +11 -12
- package/src/duckdb/src/storage/table/struct_column_data.cpp +27 -34
- package/src/duckdb/src/storage/table/table_statistics.cpp +27 -7
- package/src/duckdb/src/storage/table/update_segment.cpp +23 -18
- package/src/duckdb/src/storage/wal_replay.cpp +8 -5
- package/src/duckdb/src/storage/write_ahead_log.cpp +2 -2
- package/src/duckdb/src/transaction/commit_state.cpp +11 -7
- package/src/duckdb/src/verification/deserialized_statement_verifier.cpp +0 -1
- package/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp +35 -0
- package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +36 -2
- package/src/duckdb/third_party/libpg_query/include/nodes/primnodes.hpp +3 -3
- package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +1022 -530
- package/src/duckdb/third_party/libpg_query/include/parser/kwlist.hpp +8 -0
- package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +24462 -22828
- package/src/duckdb/third_party/re2/re2/re2.cc +9 -0
- package/src/duckdb/third_party/re2/re2/re2.h +2 -0
- package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +4 -4
- package/src/duckdb/ub_extension_json_json_functions.cpp +2 -0
- package/src/duckdb/ub_src_common_serializer.cpp +2 -0
- package/src/duckdb/ub_src_common_types.cpp +2 -0
- package/src/duckdb/ub_src_execution_physical_plan.cpp +2 -0
- package/src/duckdb/ub_src_function_aggregate_distributive.cpp +2 -0
- package/src/duckdb/ub_src_function_scalar_bit.cpp +2 -0
- package/src/duckdb/ub_src_function_scalar_map.cpp +4 -0
- package/src/duckdb/ub_src_function_scalar_string.cpp +2 -0
- package/src/duckdb/ub_src_function_scalar_string_regexp.cpp +4 -0
- package/src/duckdb/ub_src_main_capi.cpp +2 -0
- package/src/duckdb/ub_src_optimizer_rule.cpp +2 -0
- package/src/duckdb/ub_src_parser.cpp +2 -0
- package/src/duckdb/ub_src_parser_parsed_data.cpp +4 -2
- package/src/duckdb/ub_src_parser_statement.cpp +2 -0
- package/src/duckdb/ub_src_parser_tableref.cpp +2 -0
- package/src/duckdb/ub_src_parser_transform_statement.cpp +2 -0
- package/src/duckdb/ub_src_parser_transform_tableref.cpp +2 -0
- package/src/duckdb/ub_src_planner_binder_expression.cpp +2 -0
- package/src/duckdb/ub_src_planner_binder_tableref.cpp +2 -0
- package/src/duckdb/ub_src_planner_expression_binder.cpp +2 -0
- package/src/duckdb/ub_src_planner_operator.cpp +2 -0
- package/src/duckdb/ub_src_storage_statistics.cpp +6 -6
- package/src/duckdb/ub_src_storage_table.cpp +0 -2
- package/src/duckdb_node.hpp +2 -1
- package/src/statement.cpp +5 -5
- package/src/utils.cpp +27 -2
- package/test/extension.test.ts +44 -26
- package/test/syntax_error.test.ts +3 -1
- package/filelist.cache +0 -0
- package/src/duckdb/src/include/duckdb/main/loadable_extension.hpp +0 -59
- package/src/duckdb/src/include/duckdb/storage/statistics/list_statistics.hpp +0 -36
- package/src/duckdb/src/include/duckdb/storage/statistics/numeric_statistics.hpp +0 -75
- package/src/duckdb/src/include/duckdb/storage/statistics/string_statistics.hpp +0 -49
- package/src/duckdb/src/include/duckdb/storage/statistics/struct_statistics.hpp +0 -36
- package/src/duckdb/src/include/duckdb/storage/statistics/validity_statistics.hpp +0 -45
- package/src/duckdb/src/parser/parsed_data/alter_function_info.cpp +0 -55
- package/src/duckdb/src/storage/statistics/list_statistics.cpp +0 -94
- package/src/duckdb/src/storage/statistics/numeric_statistics.cpp +0 -307
- package/src/duckdb/src/storage/statistics/string_statistics.cpp +0 -220
- package/src/duckdb/src/storage/statistics/struct_statistics.cpp +0 -108
- package/src/duckdb/src/storage/statistics/validity_statistics.cpp +0 -91
- package/src/duckdb/src/storage/table/segment_tree.cpp +0 -179
|
@@ -20,7 +20,13 @@ void ShiftRight(unsigned char *ar, int size, int shift) {
|
|
|
20
20
|
|
|
21
21
|
void GetValidityMask(ValidityMask &mask, ArrowArray &array, ArrowScanLocalState &scan_state, idx_t size,
|
|
22
22
|
int64_t nested_offset = -1, bool add_null = false) {
|
|
23
|
-
|
|
23
|
+
// In certains we don't need to or cannot copy arrow's validity mask to duckdb.
|
|
24
|
+
//
|
|
25
|
+
// The conditions where we do want to copy arrow's mask to duckdb are:
|
|
26
|
+
// 1. nulls exist
|
|
27
|
+
// 2. n_buffers > 0, meaning the array's arrow type is not `null`
|
|
28
|
+
// 3. the validity buffer (the first buffer) is not a nullptr
|
|
29
|
+
if (array.null_count != 0 && array.n_buffers > 0 && array.buffers[0]) {
|
|
24
30
|
auto bit_offset = scan_state.chunk_offset + array.offset;
|
|
25
31
|
if (nested_offset != -1) {
|
|
26
32
|
bit_offset = nested_offset;
|
|
@@ -316,6 +322,20 @@ void IntervalConversionMonths(Vector &vector, ArrowArray &array, ArrowScanLocalS
|
|
|
316
322
|
}
|
|
317
323
|
}
|
|
318
324
|
|
|
325
|
+
void IntervalConversionMonthDayNanos(Vector &vector, ArrowArray &array, ArrowScanLocalState &scan_state,
|
|
326
|
+
int64_t nested_offset, idx_t size) {
|
|
327
|
+
auto tgt_ptr = (interval_t *)FlatVector::GetData(vector);
|
|
328
|
+
auto src_ptr = (ArrowInterval *)array.buffers[1] + scan_state.chunk_offset + array.offset;
|
|
329
|
+
if (nested_offset != -1) {
|
|
330
|
+
src_ptr = (ArrowInterval *)array.buffers[1] + nested_offset + array.offset;
|
|
331
|
+
}
|
|
332
|
+
for (idx_t row = 0; row < size; row++) {
|
|
333
|
+
tgt_ptr[row].days = src_ptr[row].days;
|
|
334
|
+
tgt_ptr[row].micros = src_ptr[row].nanoseconds / Interval::NANOS_PER_MICRO;
|
|
335
|
+
tgt_ptr[row].months = src_ptr[row].months;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
|
|
319
339
|
void ColumnArrowToDuckDB(Vector &vector, ArrowArray &array, ArrowScanLocalState &scan_state, idx_t size,
|
|
320
340
|
std::unordered_map<idx_t, unique_ptr<ArrowConvertData>> &arrow_convert_data, idx_t col_idx,
|
|
321
341
|
std::pair<idx_t, idx_t> &arrow_convert_idx, int64_t nested_offset, ValidityMask *parent_mask) {
|
|
@@ -509,6 +529,10 @@ void ColumnArrowToDuckDB(Vector &vector, ArrowArray &array, ArrowScanLocalState
|
|
|
509
529
|
IntervalConversionMonths(vector, array, scan_state, nested_offset, size);
|
|
510
530
|
break;
|
|
511
531
|
}
|
|
532
|
+
case ArrowDateTimeType::MONTH_DAY_NANO: {
|
|
533
|
+
IntervalConversionMonthDayNanos(vector, array, scan_state, nested_offset, size);
|
|
534
|
+
break;
|
|
535
|
+
}
|
|
512
536
|
default:
|
|
513
537
|
throw std::runtime_error("Unsupported precision for Interval/Duration Type ");
|
|
514
538
|
}
|
|
@@ -32,7 +32,11 @@ static unique_ptr<FunctionData> CheckpointBind(ClientContext &context, TableFunc
|
|
|
32
32
|
AttachedDatabase *db;
|
|
33
33
|
auto &db_manager = DatabaseManager::Get(context);
|
|
34
34
|
if (!input.inputs.empty()) {
|
|
35
|
-
|
|
35
|
+
auto &db_name = StringValue::Get(input.inputs[0]);
|
|
36
|
+
db = db_manager.GetDatabase(context, db_name);
|
|
37
|
+
if (!db) {
|
|
38
|
+
throw BinderException("Database \"%s\" not found", db_name);
|
|
39
|
+
}
|
|
36
40
|
} else {
|
|
37
41
|
db = db_manager.GetDatabase(context, DatabaseManager::GetDefaultDatabase(context));
|
|
38
42
|
}
|
|
@@ -31,6 +31,9 @@ void ReadCSVData::InitializeFiles(ClientContext &context, const vector<string> &
|
|
|
31
31
|
auto found_files = fs.GlobFiles(file_pattern, context);
|
|
32
32
|
files.insert(files.end(), found_files.begin(), found_files.end());
|
|
33
33
|
}
|
|
34
|
+
if (files.empty()) {
|
|
35
|
+
throw IOException("CSV reader needs at least one file to read");
|
|
36
|
+
}
|
|
34
37
|
}
|
|
35
38
|
|
|
36
39
|
void ReadCSVData::FinalizeRead(ClientContext &context) {
|
|
@@ -50,6 +53,25 @@ void ReadCSVData::FinalizeRead(ClientContext &context) {
|
|
|
50
53
|
}
|
|
51
54
|
}
|
|
52
55
|
|
|
56
|
+
uint8_t GetCandidateSpecificity(const LogicalType &candidate_type) {
|
|
57
|
+
//! Const ht with accepted auto_types and their weights in specificity
|
|
58
|
+
const duckdb::unordered_map<uint8_t, uint8_t> auto_type_candidates_specificity {
|
|
59
|
+
{(uint8_t)LogicalTypeId::VARCHAR, 0}, {(uint8_t)LogicalTypeId::TIMESTAMP, 1},
|
|
60
|
+
{(uint8_t)LogicalTypeId::DATE, 2}, {(uint8_t)LogicalTypeId::TIME, 3},
|
|
61
|
+
{(uint8_t)LogicalTypeId::DOUBLE, 4}, {(uint8_t)LogicalTypeId::FLOAT, 5},
|
|
62
|
+
{(uint8_t)LogicalTypeId::BIGINT, 6}, {(uint8_t)LogicalTypeId::INTEGER, 7},
|
|
63
|
+
{(uint8_t)LogicalTypeId::SMALLINT, 8}, {(uint8_t)LogicalTypeId::TINYINT, 9},
|
|
64
|
+
{(uint8_t)LogicalTypeId::BOOLEAN, 10}, {(uint8_t)LogicalTypeId::SQLNULL, 11}};
|
|
65
|
+
|
|
66
|
+
auto id = (uint8_t)candidate_type.id();
|
|
67
|
+
auto it = auto_type_candidates_specificity.find(id);
|
|
68
|
+
if (it == auto_type_candidates_specificity.end()) {
|
|
69
|
+
throw BinderException("Auto Type Candidate of type %s is not accepted as a valid input",
|
|
70
|
+
LogicalTypeIdToString(candidate_type.id()));
|
|
71
|
+
}
|
|
72
|
+
return it->second;
|
|
73
|
+
}
|
|
74
|
+
|
|
53
75
|
static unique_ptr<FunctionData> ReadCSVBind(ClientContext &context, TableFunctionBindInput &input,
|
|
54
76
|
vector<LogicalType> &return_types, vector<string> &names) {
|
|
55
77
|
auto &config = DBConfig::GetConfig(context);
|
|
@@ -61,9 +83,15 @@ static unique_ptr<FunctionData> ReadCSVBind(ClientContext &context, TableFunctio
|
|
|
61
83
|
auto &options = result->options;
|
|
62
84
|
|
|
63
85
|
vector<string> patterns;
|
|
86
|
+
if (input.inputs[0].IsNull()) {
|
|
87
|
+
throw ParserException("CSV reader cannot take NULL as parameter");
|
|
88
|
+
}
|
|
64
89
|
if (input.inputs[0].type().id() == LogicalTypeId::LIST) {
|
|
65
90
|
// list of globs
|
|
66
91
|
for (auto &val : ListValue::GetChildren(input.inputs[0])) {
|
|
92
|
+
if (val.IsNull()) {
|
|
93
|
+
throw ParserException("CSV reader cannot take NULL input as parameter");
|
|
94
|
+
}
|
|
67
95
|
patterns.push_back(StringValue::Get(val));
|
|
68
96
|
}
|
|
69
97
|
} else {
|
|
@@ -96,6 +124,32 @@ static unique_ptr<FunctionData> ReadCSVBind(ClientContext &context, TableFunctio
|
|
|
96
124
|
if (names.empty()) {
|
|
97
125
|
throw BinderException("read_csv requires at least a single column as input!");
|
|
98
126
|
}
|
|
127
|
+
} else if (loption == "auto_type_candidates") {
|
|
128
|
+
options.auto_type_candidates.clear();
|
|
129
|
+
map<uint8_t, LogicalType> candidate_types;
|
|
130
|
+
// We always have the extremes of Null and Varchar, so we can default to varchar if the
|
|
131
|
+
// sniffer is not able to confidently detect that column type
|
|
132
|
+
candidate_types[GetCandidateSpecificity(LogicalType::VARCHAR)] = LogicalType::VARCHAR;
|
|
133
|
+
candidate_types[GetCandidateSpecificity(LogicalType::SQLNULL)] = LogicalType::SQLNULL;
|
|
134
|
+
|
|
135
|
+
auto &child_type = kv.second.type();
|
|
136
|
+
if (child_type.id() != LogicalTypeId::LIST) {
|
|
137
|
+
throw BinderException("read_csv auto_types requires a list as input");
|
|
138
|
+
}
|
|
139
|
+
auto &list_children = ListValue::GetChildren(kv.second);
|
|
140
|
+
if (list_children.empty()) {
|
|
141
|
+
throw BinderException("auto_type_candidates requires at least one type");
|
|
142
|
+
}
|
|
143
|
+
for (auto &child : list_children) {
|
|
144
|
+
if (child.type().id() != LogicalTypeId::VARCHAR) {
|
|
145
|
+
throw BinderException("auto_type_candidates requires a type specification as string");
|
|
146
|
+
}
|
|
147
|
+
auto candidate_type = TransformStringToLogicalType(StringValue::Get(child), context);
|
|
148
|
+
candidate_types[GetCandidateSpecificity(candidate_type)] = candidate_type;
|
|
149
|
+
}
|
|
150
|
+
for (auto &candidate_type : candidate_types) {
|
|
151
|
+
options.auto_type_candidates.emplace_back(candidate_type.second);
|
|
152
|
+
}
|
|
99
153
|
} else if (loption == "column_names" || loption == "names") {
|
|
100
154
|
if (!options.name_list.empty()) {
|
|
101
155
|
throw BinderException("read_csv_auto column_names/names can only be supplied once");
|
|
@@ -786,6 +840,7 @@ static void ReadCSVAddNamedParameters(TableFunction &table_function) {
|
|
|
786
840
|
table_function.named_parameters["escape"] = LogicalType::VARCHAR;
|
|
787
841
|
table_function.named_parameters["nullstr"] = LogicalType::VARCHAR;
|
|
788
842
|
table_function.named_parameters["columns"] = LogicalType::ANY;
|
|
843
|
+
table_function.named_parameters["auto_type_candidates"] = LogicalType::ANY;
|
|
789
844
|
table_function.named_parameters["header"] = LogicalType::BOOLEAN;
|
|
790
845
|
table_function.named_parameters["auto_detect"] = LogicalType::BOOLEAN;
|
|
791
846
|
table_function.named_parameters["sample_size"] = LogicalType::BIGINT;
|
|
@@ -806,6 +861,7 @@ static void ReadCSVAddNamedParameters(TableFunction &table_function) {
|
|
|
806
861
|
table_function.named_parameters["buffer_size"] = LogicalType::UBIGINT;
|
|
807
862
|
table_function.named_parameters["decimal_separator"] = LogicalType::VARCHAR;
|
|
808
863
|
table_function.named_parameters["parallel"] = LogicalType::BOOLEAN;
|
|
864
|
+
table_function.named_parameters["null_padding"] = LogicalType::BOOLEAN;
|
|
809
865
|
}
|
|
810
866
|
|
|
811
867
|
double CSVReaderProgress(ClientContext &context, const FunctionData *bind_data_p,
|
|
@@ -873,6 +929,7 @@ void BufferedCSVReaderOptions::Serialize(FieldWriter &writer) const {
|
|
|
873
929
|
// read options
|
|
874
930
|
writer.WriteList<string>(names);
|
|
875
931
|
writer.WriteField<idx_t>(skip_rows);
|
|
932
|
+
writer.WriteField<bool>(skip_rows_set);
|
|
876
933
|
writer.WriteField<idx_t>(maximum_line_size);
|
|
877
934
|
writer.WriteField<bool>(normalize_names);
|
|
878
935
|
writer.WriteListNoReference<bool>(force_not_null);
|
|
@@ -884,6 +941,7 @@ void BufferedCSVReaderOptions::Serialize(FieldWriter &writer) const {
|
|
|
884
941
|
writer.WriteField<bool>(include_file_name);
|
|
885
942
|
writer.WriteField<bool>(include_parsed_hive_partitions);
|
|
886
943
|
writer.WriteString(decimal_separator);
|
|
944
|
+
writer.WriteField<bool>(null_padding);
|
|
887
945
|
// write options
|
|
888
946
|
writer.WriteListNoReference<bool>(force_quote);
|
|
889
947
|
}
|
|
@@ -906,6 +964,7 @@ void BufferedCSVReaderOptions::Deserialize(FieldReader &reader) {
|
|
|
906
964
|
// read options
|
|
907
965
|
names = reader.ReadRequiredList<string>();
|
|
908
966
|
skip_rows = reader.ReadRequired<idx_t>();
|
|
967
|
+
skip_rows_set = reader.ReadRequired<bool>();
|
|
909
968
|
maximum_line_size = reader.ReadRequired<idx_t>();
|
|
910
969
|
normalize_names = reader.ReadRequired<bool>();
|
|
911
970
|
force_not_null = reader.ReadRequiredList<bool>();
|
|
@@ -917,6 +976,7 @@ void BufferedCSVReaderOptions::Deserialize(FieldReader &reader) {
|
|
|
917
976
|
include_file_name = reader.ReadRequired<bool>();
|
|
918
977
|
include_parsed_hive_partitions = reader.ReadRequired<bool>();
|
|
919
978
|
decimal_separator = reader.ReadRequired<string>();
|
|
979
|
+
null_padding = reader.ReadRequired<bool>();
|
|
920
980
|
// write options
|
|
921
981
|
force_quote = reader.ReadRequiredList<bool>();
|
|
922
982
|
}
|
|
@@ -204,8 +204,8 @@ void DuckDBConstraintsFunction(ClientContext &context, TableFunctionInput &data_
|
|
|
204
204
|
const auto &bound_foreign_key = (const BoundForeignKeyConstraint &)bound_constraint;
|
|
205
205
|
const auto &info = bound_foreign_key.info;
|
|
206
206
|
// find the other table
|
|
207
|
-
auto table_entry =
|
|
208
|
-
|
|
207
|
+
auto table_entry = Catalog::GetEntry<TableCatalogEntry>(context, table.catalog->GetName(),
|
|
208
|
+
info.schema, info.table, true);
|
|
209
209
|
if (!table_entry) {
|
|
210
210
|
throw InternalException("dukdb_constraints: entry %s.%s referenced in foreign key not found",
|
|
211
211
|
info.schema, info.table);
|
|
@@ -138,7 +138,7 @@ vector<TestType> TestAllTypesFun::GetTestTypes() {
|
|
|
138
138
|
child_list_t<LogicalType> struct_type_list;
|
|
139
139
|
struct_type_list.push_back(make_pair("a", LogicalType::INTEGER));
|
|
140
140
|
struct_type_list.push_back(make_pair("b", LogicalType::VARCHAR));
|
|
141
|
-
auto struct_type = LogicalType::STRUCT(
|
|
141
|
+
auto struct_type = LogicalType::STRUCT(struct_type_list);
|
|
142
142
|
|
|
143
143
|
child_list_t<Value> min_struct_list;
|
|
144
144
|
min_struct_list.push_back(make_pair("a", Value(LogicalType::INTEGER)));
|
|
@@ -156,7 +156,7 @@ vector<TestType> TestAllTypesFun::GetTestTypes() {
|
|
|
156
156
|
child_list_t<LogicalType> struct_list_type_list;
|
|
157
157
|
struct_list_type_list.push_back(make_pair("a", int_list_type));
|
|
158
158
|
struct_list_type_list.push_back(make_pair("b", varchar_list_type));
|
|
159
|
-
auto struct_list_type = LogicalType::STRUCT(
|
|
159
|
+
auto struct_list_type = LogicalType::STRUCT(struct_list_type_list);
|
|
160
160
|
|
|
161
161
|
child_list_t<Value> min_struct_vl_list;
|
|
162
162
|
min_struct_vl_list.push_back(make_pair("a", Value(int_list_type)));
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
#include "duckdb/function/table/table_scan.hpp"
|
|
2
2
|
|
|
3
|
-
#include "duckdb/catalog/catalog_entry/schema_catalog_entry.hpp"
|
|
4
3
|
#include "duckdb/catalog/catalog_entry/duck_table_entry.hpp"
|
|
5
4
|
#include "duckdb/common/field_writer.hpp"
|
|
6
5
|
#include "duckdb/common/mutex.hpp"
|
|
@@ -15,6 +14,7 @@
|
|
|
15
14
|
#include "duckdb/main/attached_database.hpp"
|
|
16
15
|
#include "duckdb/catalog/dependency_list.hpp"
|
|
17
16
|
#include "duckdb/function/function_set.hpp"
|
|
17
|
+
#include "duckdb/storage/table/scan_state.hpp"
|
|
18
18
|
|
|
19
19
|
namespace duckdb {
|
|
20
20
|
|
|
@@ -40,17 +40,14 @@ static storage_t GetStorageIndex(TableCatalogEntry &table, column_t column_id) {
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
struct TableScanGlobalState : public GlobalTableFunctionState {
|
|
43
|
-
TableScanGlobalState(ClientContext &context, const FunctionData *bind_data_p)
|
|
43
|
+
TableScanGlobalState(ClientContext &context, const FunctionData *bind_data_p) {
|
|
44
44
|
D_ASSERT(bind_data_p);
|
|
45
45
|
auto &bind_data = (const TableScanBindData &)*bind_data_p;
|
|
46
46
|
max_threads = bind_data.table->GetStorage().MaxThreads(context);
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
ParallelTableScanState state;
|
|
50
|
-
mutex lock;
|
|
51
50
|
idx_t max_threads;
|
|
52
|
-
//! How many rows we already scanned
|
|
53
|
-
atomic<idx_t> row_count;
|
|
54
51
|
|
|
55
52
|
vector<idx_t> projection_ids;
|
|
56
53
|
vector<LogicalType> scanned_types;
|
|
@@ -131,7 +128,6 @@ static void TableScanFunc(ClientContext &context, TableFunctionInput &data_p, Da
|
|
|
131
128
|
storage.Scan(transaction, output, state.scan_state);
|
|
132
129
|
}
|
|
133
130
|
if (output.size() > 0) {
|
|
134
|
-
gstate.row_count += output.size();
|
|
135
131
|
return;
|
|
136
132
|
}
|
|
137
133
|
if (!TableScanParallelStateNext(context, data_p.bind_data, data_p.local_state, data_p.global_state)) {
|
|
@@ -147,7 +143,6 @@ bool TableScanParallelStateNext(ClientContext &context, const FunctionData *bind
|
|
|
147
143
|
auto &state = (TableScanLocalState &)*local_state;
|
|
148
144
|
auto &storage = bind_data.table->GetStorage();
|
|
149
145
|
|
|
150
|
-
lock_guard<mutex> parallel_lock(parallel_state.lock);
|
|
151
146
|
return storage.NextParallelScan(context, parallel_state.state, state.scan_state);
|
|
152
147
|
}
|
|
153
148
|
|
|
@@ -161,7 +156,9 @@ double TableScanProgress(ClientContext &context, const FunctionData *bind_data_p
|
|
|
161
156
|
//! Table is either empty or smaller than a vector size, so it is finished
|
|
162
157
|
return 100;
|
|
163
158
|
}
|
|
164
|
-
|
|
159
|
+
idx_t scanned_rows = gstate.state.scan_state.processed_rows;
|
|
160
|
+
scanned_rows += gstate.state.local_state.processed_rows;
|
|
161
|
+
auto percentage = 100 * (double(scanned_rows) / total_rows);
|
|
165
162
|
if (percentage > 100) {
|
|
166
163
|
//! In case the last chunk has less elements than STANDARD_VECTOR_SIZE, if our percentage is over 100
|
|
167
164
|
//! It means we finished this table.
|
|
@@ -171,12 +168,12 @@ double TableScanProgress(ClientContext &context, const FunctionData *bind_data_p
|
|
|
171
168
|
}
|
|
172
169
|
|
|
173
170
|
idx_t TableScanGetBatchIndex(ClientContext &context, const FunctionData *bind_data_p,
|
|
174
|
-
LocalTableFunctionState *local_state, GlobalTableFunctionState *
|
|
171
|
+
LocalTableFunctionState *local_state, GlobalTableFunctionState *gstate_p) {
|
|
175
172
|
auto &state = (TableScanLocalState &)*local_state;
|
|
176
|
-
if (state.scan_state.table_state.
|
|
173
|
+
if (state.scan_state.table_state.row_group) {
|
|
177
174
|
return state.scan_state.table_state.batch_index;
|
|
178
175
|
}
|
|
179
|
-
if (state.scan_state.local_state.
|
|
176
|
+
if (state.scan_state.local_state.row_group) {
|
|
180
177
|
return state.scan_state.table_state.batch_index + state.scan_state.local_state.batch_index;
|
|
181
178
|
}
|
|
182
179
|
return 0;
|
|
@@ -332,7 +329,7 @@ void TableScanPushdownComplexFilter(ClientContext &context, LogicalGet &get, Fun
|
|
|
332
329
|
auto comparison_type = comparison->type;
|
|
333
330
|
if (comparison->left->type == ExpressionType::VALUE_CONSTANT) {
|
|
334
331
|
// the expression is on the right side, we flip them around
|
|
335
|
-
comparison_type =
|
|
332
|
+
comparison_type = FlipComparisonExpression(comparison_type);
|
|
336
333
|
}
|
|
337
334
|
if (comparison_type == ExpressionType::COMPARE_EQUAL) {
|
|
338
335
|
// equality value
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#ifndef DUCKDB_VERSION
|
|
2
|
-
#define DUCKDB_VERSION "0.7.
|
|
2
|
+
#define DUCKDB_VERSION "0.7.2-dev1138"
|
|
3
3
|
#endif
|
|
4
4
|
#ifndef DUCKDB_SOURCE_ID
|
|
5
|
-
#define DUCKDB_SOURCE_ID "
|
|
5
|
+
#define DUCKDB_SOURCE_ID "41104b611e"
|
|
6
6
|
#endif
|
|
7
7
|
#include "duckdb/function/table/system_functions.hpp"
|
|
8
8
|
#include "duckdb/main/database.hpp"
|
|
@@ -14,12 +14,12 @@ TableFunctionInfo::~TableFunctionInfo() {
|
|
|
14
14
|
TableFunction::TableFunction(string name, vector<LogicalType> arguments, table_function_t function,
|
|
15
15
|
table_function_bind_t bind, table_function_init_global_t init_global,
|
|
16
16
|
table_function_init_local_t init_local)
|
|
17
|
-
: SimpleNamedParameterFunction(std::move(name), std::move(arguments)), bind(bind),
|
|
18
|
-
init_local(init_local), function(function), in_out_function(nullptr),
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
filter_prune(false) {
|
|
17
|
+
: SimpleNamedParameterFunction(std::move(name), std::move(arguments)), bind(bind), bind_replace(nullptr),
|
|
18
|
+
init_global(init_global), init_local(init_local), function(function), in_out_function(nullptr),
|
|
19
|
+
in_out_function_final(nullptr), statistics(nullptr), dependency(nullptr), cardinality(nullptr),
|
|
20
|
+
pushdown_complex_filter(nullptr), to_string(nullptr), table_scan_progress(nullptr), get_batch_index(nullptr),
|
|
21
|
+
get_batch_info(nullptr), serialize(nullptr), deserialize(nullptr), projection_pushdown(false),
|
|
22
|
+
filter_pushdown(false), filter_prune(false) {
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
TableFunction::TableFunction(const vector<LogicalType> &arguments, table_function_t function,
|
|
@@ -28,11 +28,30 @@ TableFunction::TableFunction(const vector<LogicalType> &arguments, table_functio
|
|
|
28
28
|
: TableFunction(string(), arguments, function, bind, init_global, init_local) {
|
|
29
29
|
}
|
|
30
30
|
TableFunction::TableFunction()
|
|
31
|
-
: SimpleNamedParameterFunction("", {}), bind(nullptr),
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
filter_pushdown(false), filter_prune(false) {
|
|
31
|
+
: SimpleNamedParameterFunction("", {}), bind(nullptr), bind_replace(nullptr), init_global(nullptr),
|
|
32
|
+
init_local(nullptr), function(nullptr), in_out_function(nullptr), statistics(nullptr), dependency(nullptr),
|
|
33
|
+
cardinality(nullptr), pushdown_complex_filter(nullptr), to_string(nullptr), table_scan_progress(nullptr),
|
|
34
|
+
get_batch_index(nullptr), get_batch_info(nullptr), serialize(nullptr), deserialize(nullptr),
|
|
35
|
+
projection_pushdown(false), filter_pushdown(false), filter_prune(false) {
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
bool TableFunction::Equal(const TableFunction &rhs) const {
|
|
39
|
+
// number of types
|
|
40
|
+
if (this->arguments.size() != rhs.arguments.size()) {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
// argument types
|
|
44
|
+
for (idx_t i = 0; i < this->arguments.size(); ++i) {
|
|
45
|
+
if (this->arguments[i] != rhs.arguments[i]) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// varargs
|
|
50
|
+
if (this->varargs != rhs.varargs) {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return true; // they are equal
|
|
36
55
|
}
|
|
37
56
|
|
|
38
57
|
} // namespace duckdb
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
#include "duckdb/catalog/catalog_transaction.hpp"
|
|
15
15
|
#include "duckdb/common/unordered_set.hpp"
|
|
16
16
|
#include "duckdb/common/atomic.hpp"
|
|
17
|
+
#include "duckdb/common/optional_ptr.hpp"
|
|
17
18
|
|
|
18
19
|
#include <functional>
|
|
19
20
|
|
|
@@ -80,6 +81,8 @@ public:
|
|
|
80
81
|
DUCKDB_API static Catalog &GetCatalog(ClientContext &context, const string &catalog_name);
|
|
81
82
|
//! Get the specified Catalog from the DatabaseInstance
|
|
82
83
|
DUCKDB_API static Catalog &GetCatalog(DatabaseInstance &db, const string &catalog_name);
|
|
84
|
+
//! Gets the specified Catalog from the database if it exists
|
|
85
|
+
DUCKDB_API static optional_ptr<Catalog> GetCatalogEntry(ClientContext &context, const string &catalog_name);
|
|
83
86
|
//! Get the specific Catalog from the AttachedDatabase
|
|
84
87
|
DUCKDB_API static Catalog &GetCatalog(AttachedDatabase &db);
|
|
85
88
|
|
|
@@ -205,6 +208,9 @@ public:
|
|
|
205
208
|
DUCKDB_API static LogicalType GetType(ClientContext &context, const string &catalog_name, const string &schema,
|
|
206
209
|
const string &name);
|
|
207
210
|
|
|
211
|
+
static bool TypeExists(ClientContext &context, const string &catalog_name, const string &schema,
|
|
212
|
+
const string &name);
|
|
213
|
+
|
|
208
214
|
template <class T>
|
|
209
215
|
T *GetEntry(ClientContext &context, const string &schema_name, const string &name, bool if_exists = false,
|
|
210
216
|
QueryErrorContext error_context = QueryErrorContext()) {
|
package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_function_catalog_entry.hpp
CHANGED
|
@@ -9,17 +9,12 @@
|
|
|
9
9
|
#pragma once
|
|
10
10
|
|
|
11
11
|
#include "duckdb/catalog/standard_entry.hpp"
|
|
12
|
-
#include "duckdb/
|
|
13
|
-
#include "duckdb/
|
|
14
|
-
#include "duckdb/
|
|
12
|
+
#include "duckdb/catalog/catalog_set.hpp"
|
|
13
|
+
#include "duckdb/function/function.hpp"
|
|
14
|
+
#include "duckdb/parser/parsed_data/create_table_function_info.hpp"
|
|
15
15
|
|
|
16
16
|
namespace duckdb {
|
|
17
17
|
|
|
18
|
-
class Catalog;
|
|
19
|
-
class Constraint;
|
|
20
|
-
|
|
21
|
-
struct CreateTableFunctionInfo;
|
|
22
|
-
|
|
23
18
|
//! A table function in the catalog
|
|
24
19
|
class TableFunctionCatalogEntry : public StandardEntry {
|
|
25
20
|
public:
|
|
@@ -31,5 +26,8 @@ public:
|
|
|
31
26
|
|
|
32
27
|
//! The table function
|
|
33
28
|
TableFunctionSet functions;
|
|
29
|
+
|
|
30
|
+
public:
|
|
31
|
+
unique_ptr<CatalogEntry> AlterEntry(ClientContext &context, AlterInfo *info) override;
|
|
34
32
|
};
|
|
35
33
|
} // namespace duckdb
|
|
@@ -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
|