duckdb 0.10.1-dev9.0 → 0.10.2-dev0.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/.github/workflows/NodeJS.yml +9 -16
- package/binding.gyp +4 -1
- package/package.json +1 -1
- package/src/database.cpp +1 -0
- package/src/duckdb/extension/icu/icu-strptime.cpp +46 -4
- package/src/duckdb/extension/icu/icu-table-range.cpp +5 -0
- package/src/duckdb/extension/icu/icu-timezone.cpp +28 -4
- package/src/duckdb/extension/json/buffered_json_reader.cpp +6 -5
- package/src/duckdb/extension/json/include/buffered_json_reader.hpp +3 -3
- package/src/duckdb/extension/json/include/json_transform.hpp +2 -0
- package/src/duckdb/extension/json/json_functions/json_create.cpp +6 -0
- package/src/duckdb/extension/json/json_functions/json_transform.cpp +8 -9
- package/src/duckdb/extension/json/json_functions.cpp +1 -2
- package/src/duckdb/extension/json/json_scan.cpp +1 -0
- package/src/duckdb/extension/parquet/column_reader.cpp +17 -1
- package/src/duckdb/extension/parquet/column_writer.cpp +151 -20
- package/src/duckdb/extension/parquet/include/column_writer.hpp +3 -4
- package/src/duckdb/extension/parquet/parquet_extension.cpp +14 -9
- package/src/duckdb/extension/parquet/parquet_timestamp.cpp +10 -0
- package/src/duckdb/extension/parquet/parquet_writer.cpp +4 -0
- package/src/duckdb/src/catalog/catalog.cpp +94 -10
- package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +9 -5
- package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +1 -0
- package/src/duckdb/src/catalog/catalog_entry/ub_duckdb_catalog_entries.cpp +16 -0
- package/src/duckdb/src/catalog/catalog_entry/view_catalog_entry.cpp +28 -0
- package/src/duckdb/src/catalog/default/default_functions.cpp +3 -0
- package/src/duckdb/src/catalog/default/default_views.cpp +3 -3
- package/src/duckdb/src/catalog/default/ub_duckdb_catalog_default_entries.cpp +5 -0
- package/src/duckdb/src/catalog/dependency_catalog_set.cpp +1 -3
- package/src/duckdb/src/catalog/dependency_manager.cpp +2 -5
- package/src/duckdb/src/catalog/ub_duckdb_catalog.cpp +10 -0
- package/src/duckdb/src/common/adbc/adbc.cpp +1 -1
- package/src/duckdb/src/common/adbc/driver_manager.cpp +2 -1
- package/src/duckdb/src/common/adbc/nanoarrow/ub_duckdb_adbc_nanoarrow.cpp +5 -0
- package/src/duckdb/src/common/adbc/ub_duckdb_adbc.cpp +3 -0
- package/src/duckdb/src/common/allocator.cpp +34 -8
- package/src/duckdb/src/common/arrow/appender/fixed_size_list_data.cpp +39 -0
- package/src/duckdb/src/common/arrow/appender/ub_duckdb_common_arrow_appender.cpp +6 -0
- package/src/duckdb/src/common/arrow/appender/union_data.cpp +2 -1
- package/src/duckdb/src/common/arrow/arrow_appender.cpp +5 -5
- package/src/duckdb/src/common/arrow/arrow_converter.cpp +17 -0
- package/src/duckdb/src/common/arrow/ub_duckdb_common_arrow.cpp +4 -0
- package/src/duckdb/src/common/compressed_file_system.cpp +1 -0
- package/src/duckdb/src/common/crypto/ub_duckdb_common_crypto.cpp +2 -0
- package/src/duckdb/src/common/enum_util.cpp +153 -13
- package/src/duckdb/src/common/enums/logical_operator_type.cpp +0 -2
- package/src/duckdb/src/common/enums/physical_operator_type.cpp +2 -2
- package/src/duckdb/src/common/enums/ub_duckdb_common_enums.cpp +12 -0
- package/src/duckdb/src/common/exception/conversion_exception.cpp +23 -0
- package/src/duckdb/src/common/exception.cpp +7 -14
- package/src/duckdb/src/common/extra_type_info.cpp +6 -5
- package/src/duckdb/src/common/gzip_file_system.cpp +5 -4
- package/src/duckdb/src/common/local_file_system.cpp +85 -10
- package/src/duckdb/src/common/operator/cast_operators.cpp +413 -305
- package/src/duckdb/src/common/operator/ub_duckdb_common_operators.cpp +4 -0
- package/src/duckdb/src/common/progress_bar/ub_duckdb_progress_bar.cpp +3 -0
- package/src/duckdb/src/common/re2_regex.cpp +2 -1
- package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +2 -2
- package/src/duckdb/src/common/row_operations/row_matcher.cpp +1 -0
- package/src/duckdb/src/common/row_operations/row_scatter.cpp +2 -2
- package/src/duckdb/src/common/row_operations/ub_duckdb_row_operations.cpp +9 -0
- package/src/duckdb/src/common/serializer/binary_serializer.cpp +3 -3
- package/src/duckdb/src/common/serializer/ub_duckdb_common_serializer.cpp +7 -0
- package/src/duckdb/src/common/sort/partition_state.cpp +2 -3
- package/src/duckdb/src/common/sort/ub_duckdb_sort.cpp +7 -0
- package/src/duckdb/src/common/string_util.cpp +3 -3
- package/src/duckdb/src/common/types/bit.cpp +7 -6
- package/src/duckdb/src/common/types/blob.cpp +20 -9
- package/src/duckdb/src/common/types/column/column_data_allocator.cpp +8 -6
- package/src/duckdb/src/common/types/column/column_data_collection.cpp +11 -1
- package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +5 -0
- package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +1 -1
- package/src/duckdb/src/common/types/column/ub_duckdb_common_types_column.cpp +6 -0
- package/src/duckdb/src/common/types/data_chunk.cpp +1 -1
- package/src/duckdb/src/common/types/date.cpp +1 -1
- package/src/duckdb/src/common/types/hugeint.cpp +3 -2
- package/src/duckdb/src/common/types/interval.cpp +1 -1
- package/src/duckdb/src/common/types/list_segment.cpp +2 -1
- package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +3 -9
- package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +7 -7
- package/src/duckdb/src/common/types/row/tuple_data_collection.cpp +10 -27
- package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +168 -88
- package/src/duckdb/src/common/types/row/ub_duckdb_common_types_row.cpp +11 -0
- package/src/duckdb/src/common/types/selection_vector.cpp +1 -1
- package/src/duckdb/src/common/types/string_heap.cpp +5 -1
- package/src/duckdb/src/common/types/string_type.cpp +18 -4
- package/src/duckdb/src/common/types/time.cpp +4 -2
- package/src/duckdb/src/common/types/timestamp.cpp +32 -6
- package/src/duckdb/src/common/types/ub_duckdb_common_types.cpp +28 -0
- package/src/duckdb/src/common/types/uhugeint.cpp +3 -2
- package/src/duckdb/src/common/types/uuid.cpp +11 -0
- package/src/duckdb/src/common/types/validity_mask.cpp +4 -3
- package/src/duckdb/src/common/types/value.cpp +17 -6
- package/src/duckdb/src/common/types/vector.cpp +243 -68
- package/src/duckdb/src/common/types.cpp +7 -5
- package/src/duckdb/src/common/ub_duckdb_common.cpp +34 -0
- package/src/duckdb/src/common/value_operations/ub_duckdb_value_operations.cpp +2 -0
- package/src/duckdb/src/common/vector_operations/generators.cpp +2 -1
- package/src/duckdb/src/common/vector_operations/vector_cast.cpp +4 -4
- package/src/duckdb/src/common/vector_operations/vector_copy.cpp +2 -2
- package/src/duckdb/src/common/vector_operations/vector_hash.cpp +17 -6
- package/src/duckdb/src/core_functions/aggregate/algebraic/ub_duckdb_aggr_algebraic.cpp +5 -0
- package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +30 -6
- package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +1 -1
- package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +12 -5
- package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +2 -2
- package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +2 -1
- package/src/duckdb/src/core_functions/aggregate/distributive/ub_duckdb_aggr_distributive.cpp +13 -0
- package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +2 -1
- package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +2 -9
- package/src/duckdb/src/core_functions/aggregate/holistic/ub_duckdb_aggr_holistic.cpp +5 -0
- package/src/duckdb/src/core_functions/aggregate/nested/ub_duckdb_aggr_nested.cpp +3 -0
- package/src/duckdb/src/core_functions/aggregate/regression/ub_duckdb_aggr_regr.cpp +8 -0
- package/src/duckdb/src/core_functions/function_list.cpp +1 -0
- package/src/duckdb/src/core_functions/scalar/bit/bitstring.cpp +2 -2
- package/src/duckdb/src/core_functions/scalar/bit/ub_duckdb_func_bit.cpp +2 -0
- package/src/duckdb/src/core_functions/scalar/blob/ub_duckdb_func_blob.cpp +3 -0
- package/src/duckdb/src/core_functions/scalar/date/date_diff.cpp +8 -0
- package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +22 -3
- package/src/duckdb/src/core_functions/scalar/date/make_date.cpp +29 -7
- package/src/duckdb/src/core_functions/scalar/date/to_interval.cpp +3 -1
- package/src/duckdb/src/core_functions/scalar/date/ub_duckdb_func_date.cpp +12 -0
- package/src/duckdb/src/core_functions/scalar/debug/ub_duckdb_func_debug.cpp +2 -0
- package/src/duckdb/src/core_functions/scalar/enum/ub_duckdb_func_enum.cpp +2 -0
- package/src/duckdb/src/core_functions/scalar/generic/ub_duckdb_func_generic.cpp +9 -0
- package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +12 -8
- package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +2 -1
- package/src/duckdb/src/core_functions/scalar/list/list_reduce.cpp +6 -5
- package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +5 -3
- package/src/duckdb/src/core_functions/scalar/list/list_value.cpp +28 -12
- package/src/duckdb/src/core_functions/scalar/list/ub_duckdb_func_list.cpp +11 -0
- package/src/duckdb/src/core_functions/scalar/map/map.cpp +129 -160
- package/src/duckdb/src/core_functions/scalar/map/ub_duckdb_func_map_nested.cpp +8 -0
- package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +19 -16
- package/src/duckdb/src/core_functions/scalar/math/ub_duckdb_func_math.cpp +1 -0
- package/src/duckdb/src/core_functions/scalar/operators/bitwise.cpp +4 -4
- package/src/duckdb/src/core_functions/scalar/operators/ub_duckdb_func_ops.cpp +1 -0
- package/src/duckdb/src/core_functions/scalar/random/ub_duckdb_func_random.cpp +3 -0
- package/src/duckdb/src/core_functions/scalar/string/hex.cpp +2 -1
- package/src/duckdb/src/core_functions/scalar/string/pad.cpp +2 -2
- package/src/duckdb/src/core_functions/scalar/string/repeat.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/string/replace.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +2 -1
- package/src/duckdb/src/core_functions/scalar/string/translate.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/string/ub_duckdb_func_string.cpp +26 -0
- package/src/duckdb/src/core_functions/scalar/struct/ub_duckdb_func_struct.cpp +3 -0
- package/src/duckdb/src/core_functions/scalar/union/ub_duckdb_func_union.cpp +4 -0
- package/src/duckdb/src/core_functions/ub_duckdb_core_functions.cpp +3 -0
- package/src/duckdb/src/execution/adaptive_filter.cpp +1 -1
- package/src/duckdb/src/execution/aggregate_hashtable.cpp +1 -1
- package/src/duckdb/src/execution/column_binding_resolver.cpp +7 -1
- package/src/duckdb/src/execution/expression_executor/execute_case.cpp +2 -2
- package/src/duckdb/src/execution/expression_executor/execute_cast.cpp +2 -0
- package/src/duckdb/src/execution/expression_executor/execute_function.cpp +2 -2
- package/src/duckdb/src/execution/expression_executor/execute_operator.cpp +1 -1
- package/src/duckdb/src/execution/expression_executor/ub_duckdb_expression_executor.cpp +11 -0
- package/src/duckdb/src/execution/expression_executor.cpp +5 -2
- package/src/duckdb/src/execution/index/art/art.cpp +12 -6
- package/src/duckdb/src/execution/index/art/art_key.cpp +3 -3
- package/src/duckdb/src/execution/index/art/leaf.cpp +2 -2
- package/src/duckdb/src/execution/index/art/node16.cpp +2 -2
- package/src/duckdb/src/execution/index/art/node256.cpp +3 -3
- package/src/duckdb/src/execution/index/art/node48.cpp +5 -5
- package/src/duckdb/src/execution/index/art/prefix.cpp +1 -1
- package/src/duckdb/src/execution/index/art/ub_duckdb_art_index_execution.cpp +12 -0
- package/src/duckdb/src/execution/index/art/ub_duckdb_execution_index_art.cpp +11 -0
- package/src/duckdb/src/execution/index/fixed_size_buffer.cpp +6 -5
- package/src/duckdb/src/execution/index/ub_duckdb_execution_index.cpp +3 -0
- package/src/duckdb/src/execution/nested_loop_join/ub_duckdb_nested_loop_join.cpp +3 -0
- package/src/duckdb/src/execution/operator/aggregate/aggregate_object.cpp +1 -1
- package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +3 -4
- package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +0 -1
- package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +3 -4
- package/src/duckdb/src/execution/operator/aggregate/ub_duckdb_operator_aggregate.cpp +9 -0
- package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer.cpp +1 -1
- package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer_manager.cpp +8 -3
- package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_file_handle.cpp +1 -1
- package/src/duckdb/src/execution/operator/csv_scanner/scanner/base_scanner.cpp +5 -5
- package/src/duckdb/src/execution/operator/csv_scanner/scanner/column_count_scanner.cpp +2 -3
- package/src/duckdb/src/execution/operator/csv_scanner/scanner/scanner_boundary.cpp +5 -1
- package/src/duckdb/src/execution/operator/csv_scanner/scanner/skip_scanner.cpp +2 -2
- package/src/duckdb/src/execution/operator/csv_scanner/scanner/string_value_scanner.cpp +151 -79
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/csv_sniffer.cpp +11 -6
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/dialect_detection.cpp +27 -6
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/header_detection.cpp +71 -18
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_detection.cpp +22 -11
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_refinement.cpp +6 -4
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_replacement.cpp +5 -3
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/ub_duckdb_operator_csv_sniffer.cpp +7 -0
- package/src/duckdb/src/execution/operator/csv_scanner/state_machine/csv_state_machine.cpp +3 -3
- package/src/duckdb/src/execution/operator/csv_scanner/state_machine/csv_state_machine_cache.cpp +30 -5
- package/src/duckdb/src/execution/operator/csv_scanner/table_function/csv_file_scanner.cpp +6 -2
- package/src/duckdb/src/execution/operator/csv_scanner/table_function/global_csv_state.cpp +47 -46
- package/src/duckdb/src/execution/operator/csv_scanner/ub_duckdb_operator_csv_scanner.cpp +10 -0
- package/src/duckdb/src/execution/operator/csv_scanner/util/csv_error.cpp +102 -54
- package/src/duckdb/src/execution/operator/csv_scanner/util/csv_reader_options.cpp +8 -1
- package/src/duckdb/src/execution/operator/filter/ub_duckdb_operator_filter.cpp +2 -0
- package/src/duckdb/src/execution/operator/helper/physical_limit.cpp +54 -36
- package/src/duckdb/src/execution/operator/helper/physical_limit_percent.cpp +56 -32
- package/src/duckdb/src/execution/operator/helper/physical_streaming_limit.cpp +9 -13
- package/src/duckdb/src/execution/operator/helper/physical_transaction.cpp +12 -0
- package/src/duckdb/src/execution/operator/helper/physical_verify_vector.cpp +221 -0
- package/src/duckdb/src/execution/operator/helper/ub_duckdb_operator_helper.cpp +18 -0
- package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +1 -0
- package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +23 -8
- package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +8 -3
- package/src/duckdb/src/execution/operator/join/ub_duckdb_operator_join.cpp +16 -0
- package/src/duckdb/src/execution/operator/order/physical_order.cpp +2 -3
- package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +2 -7
- package/src/duckdb/src/execution/operator/order/ub_duckdb_operator_order.cpp +3 -0
- package/src/duckdb/src/execution/operator/persistent/physical_batch_copy_to_file.cpp +451 -55
- package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +312 -150
- package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +200 -75
- package/src/duckdb/src/execution/operator/persistent/physical_delete.cpp +1 -0
- package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +6 -5
- package/src/duckdb/src/execution/operator/persistent/ub_duckdb_operator_persistent.cpp +10 -0
- package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +3 -2
- package/src/duckdb/src/execution/operator/projection/ub_duckdb_operator_projection.cpp +5 -0
- package/src/duckdb/src/execution/operator/scan/ub_duckdb_operator_scan.cpp +7 -0
- package/src/duckdb/src/execution/operator/schema/ub_duckdb_operator_schema.cpp +12 -0
- package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +25 -0
- package/src/duckdb/src/execution/operator/set/ub_duckdb_operator_set.cpp +4 -0
- package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +4 -4
- package/src/duckdb/src/execution/physical_plan/plan_aggregate.cpp +2 -2
- package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +2 -2
- package/src/duckdb/src/execution/physical_plan/plan_copy_to_file.cpp +7 -17
- package/src/duckdb/src/execution/physical_plan/plan_distinct.cpp +10 -0
- package/src/duckdb/src/execution/physical_plan/plan_insert.cpp +7 -0
- package/src/duckdb/src/execution/physical_plan/plan_limit.cpp +45 -13
- package/src/duckdb/src/execution/physical_plan/ub_duckdb_physical_plan.cpp +44 -0
- package/src/duckdb/src/execution/physical_plan_generator.cpp +5 -3
- package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +13 -12
- package/src/duckdb/src/execution/ub_duckdb_execution.cpp +15 -0
- package/src/duckdb/src/execution/window_executor.cpp +71 -61
- package/src/duckdb/src/execution/window_segment_tree.cpp +6 -6
- package/src/duckdb/src/extension_forward_decl/icu.cpp +59 -0
- package/src/duckdb/src/function/aggregate/algebraic/ub_duckdb_aggr_algebraic.cpp +5 -0
- package/src/duckdb/src/function/aggregate/distributive/first.cpp +2 -2
- package/src/duckdb/src/function/aggregate/distributive/ub_duckdb_aggr_distr.cpp +3 -0
- package/src/duckdb/src/function/aggregate/holistic/ub_duckdb_aggr_holistic.cpp +5 -0
- package/src/duckdb/src/function/aggregate/nested/ub_duckdb_aggr_nested.cpp +3 -0
- package/src/duckdb/src/function/aggregate/regression/ub_duckdb_aggr_regr.cpp +8 -0
- package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +3 -2
- package/src/duckdb/src/function/aggregate/ub_duckdb_func_aggr.cpp +3 -0
- package/src/duckdb/src/function/cast/array_casts.cpp +2 -4
- package/src/duckdb/src/function/cast/bit_cast.cpp +13 -13
- package/src/duckdb/src/function/cast/cast_function_set.cpp +2 -0
- package/src/duckdb/src/function/cast/decimal_cast.cpp +38 -44
- package/src/duckdb/src/function/cast/default_casts.cpp +5 -2
- package/src/duckdb/src/function/cast/enum_casts.cpp +5 -5
- package/src/duckdb/src/function/cast/list_casts.cpp +24 -14
- package/src/duckdb/src/function/cast/string_cast.cpp +48 -30
- package/src/duckdb/src/function/cast/struct_cast.cpp +2 -2
- package/src/duckdb/src/function/cast/time_casts.cpp +12 -0
- package/src/duckdb/src/function/cast/ub_duckdb_func_cast.cpp +17 -0
- package/src/duckdb/src/function/cast/union/ub_duckdb_union_cast.cpp +2 -0
- package/src/duckdb/src/function/cast/union_casts.cpp +13 -15
- package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +1 -1
- package/src/duckdb/src/function/cast_rules.cpp +2 -1
- package/src/duckdb/src/function/pragma/ub_duckdb_func_pragma.cpp +3 -0
- package/src/duckdb/src/function/scalar/bit/ub_duckdb_func_bit.cpp +2 -0
- package/src/duckdb/src/function/scalar/blob/ub_duckdb_func_blob.cpp +3 -0
- package/src/duckdb/src/function/scalar/compressed_materialization/compress_integral.cpp +7 -6
- package/src/duckdb/src/function/scalar/compressed_materialization/compress_string.cpp +3 -3
- package/src/duckdb/src/function/scalar/compressed_materialization/ub_duckdb_func_compressed_materialization.cpp +3 -0
- package/src/duckdb/src/function/scalar/date/ub_duckdb_func_date.cpp +12 -0
- package/src/duckdb/src/function/scalar/enum/ub_duckdb_func_enum.cpp +2 -0
- package/src/duckdb/src/function/scalar/generic/ub_duckdb_func_generic.cpp +8 -0
- package/src/duckdb/src/function/scalar/generic/ub_duckdb_func_generic_main.cpp +2 -0
- package/src/duckdb/src/function/scalar/list/list_resize.cpp +3 -1
- package/src/duckdb/src/function/scalar/list/list_zip.cpp +3 -4
- package/src/duckdb/src/function/scalar/list/ub_duckdb_func_list.cpp +11 -0
- package/src/duckdb/src/function/scalar/list/ub_duckdb_func_list_nested.cpp +5 -0
- package/src/duckdb/src/function/scalar/map/ub_duckdb_func_map_nested.cpp +7 -0
- package/src/duckdb/src/function/scalar/math/ub_duckdb_func_math.cpp +4 -0
- package/src/duckdb/src/function/scalar/nested_functions.cpp +7 -3
- package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +1 -1
- package/src/duckdb/src/function/scalar/operators/multiply.cpp +4 -2
- package/src/duckdb/src/function/scalar/operators/subtract.cpp +9 -3
- package/src/duckdb/src/function/scalar/operators/ub_duckdb_func_ops.cpp +6 -0
- package/src/duckdb/src/function/scalar/operators/ub_duckdb_func_ops_main.cpp +5 -0
- package/src/duckdb/src/function/scalar/sequence/ub_duckdb_func_seq.cpp +2 -0
- package/src/duckdb/src/function/scalar/strftime_format.cpp +21 -20
- package/src/duckdb/src/function/scalar/string/like.cpp +14 -3
- package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +4 -2
- package/src/duckdb/src/function/scalar/string/regexp/ub_duckdb_func_string_regexp.cpp +3 -0
- package/src/duckdb/src/function/scalar/string/regexp.cpp +6 -4
- package/src/duckdb/src/function/scalar/string/suffix.cpp +1 -1
- package/src/duckdb/src/function/scalar/string/ub_duckdb_func_string.cpp +31 -0
- package/src/duckdb/src/function/scalar/string/ub_duckdb_func_string_main.cpp +12 -0
- package/src/duckdb/src/function/scalar/struct/ub_duckdb_func_struct.cpp +4 -0
- package/src/duckdb/src/function/scalar/struct/ub_duckdb_func_struct_main.cpp +2 -0
- package/src/duckdb/src/function/scalar/system/ub_duckdb_func_system.cpp +2 -0
- package/src/duckdb/src/function/scalar/ub_duckdb_func_scalar.cpp +9 -0
- package/src/duckdb/src/function/scalar/union/ub_duckdb_func_union.cpp +4 -0
- package/src/duckdb/src/function/table/arrow/arrow_array_scan_state.cpp +28 -2
- package/src/duckdb/src/function/table/arrow/ub_duckdb_arrow_conversion.cpp +2 -0
- package/src/duckdb/src/function/table/arrow.cpp +23 -6
- package/src/duckdb/src/function/table/arrow_conversion.cpp +75 -33
- package/src/duckdb/src/function/table/copy_csv.cpp +8 -3
- package/src/duckdb/src/function/table/range.cpp +5 -0
- package/src/duckdb/src/function/table/read_csv.cpp +9 -8
- package/src/duckdb/src/function/table/read_file.cpp +1 -1
- package/src/duckdb/src/function/table/sniff_csv.cpp +5 -5
- package/src/duckdb/src/function/table/system/duckdb_columns.cpp +6 -2
- package/src/duckdb/src/function/table/system/duckdb_secrets.cpp +5 -1
- package/src/duckdb/src/function/table/system/duckdb_sequences.cpp +3 -1
- package/src/duckdb/src/function/table/system/duckdb_settings.cpp +13 -1
- package/src/duckdb/src/function/table/system/test_all_types.cpp +64 -0
- package/src/duckdb/src/function/table/system/ub_duckdb_table_func_system.cpp +23 -0
- package/src/duckdb/src/function/table/ub_duckdb_func_table.cpp +16 -0
- package/src/duckdb/src/function/table/version/pragma_version.cpp +11 -2
- package/src/duckdb/src/function/table/version/ub_duckdb_func_table_version.cpp +2 -0
- package/src/duckdb/src/function/ub_duckdb_function.cpp +14 -0
- package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +11 -1
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/view_catalog_entry.hpp +2 -0
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/allocator.hpp +8 -11
- package/src/duckdb/src/include/duckdb/common/arrow/appender/enum_data.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/arrow/appender/fixed_size_list_data.hpp +14 -0
- package/src/duckdb/src/include/duckdb/common/arrow/appender/list.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/arrow/appender/list_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/arrow/appender/varchar_data.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/bitpacking.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/bswap.hpp +6 -2
- package/src/duckdb/src/include/duckdb/common/enum_util.hpp +32 -0
- package/src/duckdb/src/include/duckdb/common/enums/catalog_lookup_behavior.hpp +21 -0
- package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +0 -1
- package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/enums/prepared_statement_mode.hpp +20 -0
- package/src/duckdb/src/include/duckdb/common/enums/statement_type.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/exception/conversion_exception.hpp +6 -0
- package/src/duckdb/src/include/duckdb/common/exception/parser_exception.hpp +4 -0
- package/src/duckdb/src/include/duckdb/common/exception.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +3 -3
- package/src/duckdb/src/include/duckdb/common/file_opener.hpp +6 -5
- package/src/duckdb/src/include/duckdb/common/file_system.hpp +4 -2
- package/src/duckdb/src/include/duckdb/common/helper.hpp +7 -0
- package/src/duckdb/src/include/duckdb/common/limits.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/local_file_system.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/numeric_utils.hpp +64 -0
- package/src/duckdb/src/include/duckdb/common/operator/cast_operators.hpp +34 -33
- package/src/duckdb/src/include/duckdb/common/operator/decimal_cast_operators.hpp +150 -124
- package/src/duckdb/src/include/duckdb/common/operator/integer_cast_operator.hpp +5 -5
- package/src/duckdb/src/include/duckdb/common/radix.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/serializer/deserializer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/sort/duckdb_pdqsort.hpp +4 -4
- package/src/duckdb/src/include/duckdb/common/types/bit.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/blob.hpp +4 -1
- package/src/duckdb/src/include/duckdb/common/types/cast_helpers.hpp +15 -13
- package/src/duckdb/src/include/duckdb/common/types/column/column_data_allocator.hpp +5 -0
- package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection_segment.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/types/column/partitioned_column_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_states.hpp +4 -1
- package/src/duckdb/src/include/duckdb/common/types/selection_vector.hpp +2 -1
- package/src/duckdb/src/include/duckdb/common/types/string_heap.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +11 -4
- package/src/duckdb/src/include/duckdb/common/types/time.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +7 -2
- package/src/duckdb/src/include/duckdb/common/types/uuid.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/types/value.hpp +7 -0
- package/src/duckdb/src/include/duckdb/common/types/vector.hpp +40 -7
- package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/vector_operations/general_cast.hpp +12 -4
- package/src/duckdb/src/include/duckdb/common/vector_operations/generic_executor.hpp +6 -6
- package/src/duckdb/src/include/duckdb/common/vector_operations/vector_operations.hpp +3 -2
- package/src/duckdb/src/include/duckdb/common/windows_undefs.hpp +4 -0
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +1 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/list_functions.hpp +9 -0
- package/src/duckdb/src/include/duckdb/execution/column_binding_resolver.hpp +2 -1
- package/src/duckdb/src/include/duckdb/execution/executor.hpp +10 -0
- package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/base_scanner.hpp +262 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/column_count_scanner.hpp +70 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_buffer.hpp +103 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_buffer_manager.hpp +74 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_casting.hpp +154 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_error.hpp +130 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_file_handle.hpp +60 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_file_scanner.hpp +70 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_option.hpp +155 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_reader_options.hpp +166 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_sniffer.hpp +191 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_state.hpp +30 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_state_machine.hpp +99 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_state_machine_cache.hpp +91 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/global_csv_state.hpp +80 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/quote_rules.hpp +21 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/scanner_boundary.hpp +93 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/skip_scanner.hpp +60 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/state_machine_options.hpp +35 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/string_value_scanner.hpp +200 -0
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_limit.hpp +13 -10
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_limit_percent.hpp +5 -11
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_streaming_limit.hpp +4 -6
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_verify_vector.hpp +51 -0
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_hash_join.hpp +3 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/batch_memory_manager.hpp +165 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/batch_task_manager.hpp +48 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_copy_to_file.hpp +10 -17
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_insert.hpp +4 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_to_file.hpp +2 -0
- package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +10 -6
- package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +0 -2
- package/src/duckdb/src/include/duckdb/execution/window_executor.hpp +2 -1
- package/src/duckdb/src/include/duckdb/execution/window_segment_tree.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/cast/cast_function_set.hpp +1 -0
- package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +14 -5
- package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +27 -43
- package/src/duckdb/src/include/duckdb/function/compression_function.hpp +4 -4
- package/src/duckdb/src/include/duckdb/function/copy_function.hpp +3 -3
- package/src/duckdb/src/include/duckdb/function/function.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +1 -0
- package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +10 -4
- package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +8 -6
- package/src/duckdb/src/include/duckdb/function/table_function.hpp +3 -3
- package/src/duckdb/src/include/duckdb/main/attached_database.hpp +3 -0
- package/src/duckdb/src/include/duckdb/main/capi/cast/from_decimal.hpp +6 -4
- package/src/duckdb/src/include/duckdb/main/capi/cast/to_decimal.hpp +17 -10
- package/src/duckdb/src/include/duckdb/main/client_config.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/client_context.hpp +17 -3
- package/src/duckdb/src/include/duckdb/main/client_context_file_opener.hpp +2 -2
- package/src/duckdb/src/include/duckdb/main/client_context_state.hpp +20 -0
- package/src/duckdb/src/include/duckdb/main/client_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/main/database.hpp +3 -2
- package/src/duckdb/src/include/duckdb/main/database_manager.hpp +2 -1
- package/src/duckdb/src/include/duckdb/main/extension/generated_extension_loader.hpp +1 -1
- package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +230 -199
- package/src/duckdb/src/include/duckdb/main/extension_helper.hpp +18 -0
- package/src/duckdb/src/include/duckdb/main/relation/read_csv_relation.hpp +1 -1
- package/src/duckdb/src/include/duckdb/main/relation/table_function_relation.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/relation.hpp +1 -1
- package/src/duckdb/src/include/duckdb/main/secret/secret_manager.hpp +4 -0
- package/src/duckdb/src/include/duckdb/main/settings.hpp +54 -10
- package/src/duckdb/src/include/duckdb/optimizer/join_order/relation_manager.hpp +2 -1
- package/src/duckdb/src/include/duckdb/optimizer/rule/ordered_aggregate_optimizer.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parallel/concurrentqueue.hpp +21 -5
- package/src/duckdb/src/include/duckdb/parallel/event.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parallel/executor_task.hpp +37 -0
- package/src/duckdb/src/include/duckdb/parallel/interrupt.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parallel/pipeline.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parallel/task.hpp +0 -20
- package/src/duckdb/src/include/duckdb/parallel/task_scheduler.hpp +4 -2
- package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +10 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_info.hpp +2 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +0 -24
- package/src/duckdb/src/include/duckdb/parser/parsed_data/comment_on_column_info.hpp +46 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_view_info.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/extra_drop_info.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +3 -2
- package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +3 -3
- package/src/duckdb/src/include/duckdb/parser/transformer.hpp +3 -3
- package/src/duckdb/src/include/duckdb/planner/binder.hpp +11 -4
- package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +59 -23
- package/src/duckdb/src/include/duckdb/planner/expression.hpp +1 -0
- package/src/duckdb/src/include/duckdb/planner/expression_binder/column_alias_binder.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/expression_iterator.hpp +11 -3
- package/src/duckdb/src/include/duckdb/planner/extension_callback.hpp +6 -0
- package/src/duckdb/src/include/duckdb/planner/operator/list.hpp +0 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_insert.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_limit.hpp +5 -9
- package/src/duckdb/src/include/duckdb/planner/subquery/rewrite_correlated_expressions.hpp +0 -15
- package/src/duckdb/src/include/duckdb/storage/arena_allocator.hpp +5 -0
- package/src/duckdb/src/include/duckdb/storage/buffer/buffer_pool.hpp +40 -5
- package/src/duckdb/src/include/duckdb/storage/compression/alp/algorithm/alp.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_analyze.hpp +5 -1
- package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_compress.hpp +4 -4
- package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_utils.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/compression/alprd/algorithm/alprd.hpp +10 -8
- package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_analyze.hpp +5 -1
- package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_compress.hpp +3 -3
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/bit_reader.hpp +11 -10
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/bit_utils.hpp +3 -1
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/chimp128.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/leading_zero_buffer.hpp +5 -3
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_scan.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/data_pointer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/data_table.hpp +3 -1
- package/src/duckdb/src/include/duckdb/storage/index.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/standard_buffer_manager.hpp +3 -0
- package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/append_state.hpp +0 -2
- package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +5 -3
- package/src/duckdb/src/include/duckdb/storage/table/column_segment.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +5 -0
- package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +9 -2
- package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +2 -6
- package/src/duckdb/src/include/duckdb/storage/table/segment_tree.hpp +3 -3
- package/src/duckdb/src/include/duckdb/storage/temporary_file_manager.hpp +169 -0
- package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +11 -1
- package/src/duckdb/src/include/duckdb/transaction/meta_transaction.hpp +6 -1
- package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +1 -1
- package/src/duckdb/src/include/duckdb.h +119 -67
- package/src/duckdb/src/main/appender.cpp +2 -1
- package/src/duckdb/src/main/attached_database.cpp +49 -27
- package/src/duckdb/src/main/capi/appender-c.cpp +1 -1
- package/src/duckdb/src/main/capi/cast/ub_duckdb_main_capi_cast.cpp +3 -0
- package/src/duckdb/src/main/capi/cast/utils-c.cpp +1 -1
- package/src/duckdb/src/main/capi/data_chunk-c.cpp +9 -1
- package/src/duckdb/src/main/capi/datetime-c.cpp +14 -8
- package/src/duckdb/src/main/capi/duckdb_value-c.cpp +29 -2
- package/src/duckdb/src/main/capi/helper-c.cpp +2 -0
- package/src/duckdb/src/main/capi/hugeint-c.cpp +2 -1
- package/src/duckdb/src/main/capi/logical_types-c.cpp +35 -1
- package/src/duckdb/src/main/capi/result-c.cpp +9 -0
- package/src/duckdb/src/main/capi/ub_duckdb_main_capi.cpp +19 -0
- package/src/duckdb/src/main/chunk_scan_state/ub_duckdb_main_chunk_scan_state.cpp +2 -0
- package/src/duckdb/src/main/client_context.cpp +133 -33
- package/src/duckdb/src/main/client_context_file_opener.cpp +8 -7
- package/src/duckdb/src/main/config.cpp +2 -0
- package/src/duckdb/src/main/connection_manager.cpp +8 -0
- package/src/duckdb/src/main/database.cpp +13 -4
- package/src/duckdb/src/main/database_manager.cpp +10 -1
- package/src/duckdb/src/main/extension/extension_helper.cpp +8 -5
- package/src/duckdb/src/main/extension/extension_install.cpp +1 -1
- package/src/duckdb/src/main/extension/ub_duckdb_main_extension.cpp +6 -0
- package/src/duckdb/src/main/prepared_statement_data.cpp +23 -6
- package/src/duckdb/src/main/query_profiler.cpp +9 -7
- package/src/duckdb/src/main/relation/read_csv_relation.cpp +17 -12
- package/src/duckdb/src/main/relation/ub_duckdb_main_relation.cpp +26 -0
- package/src/duckdb/src/main/relation/value_relation.cpp +2 -0
- package/src/duckdb/src/main/secret/secret.cpp +1 -1
- package/src/duckdb/src/main/secret/secret_manager.cpp +41 -8
- package/src/duckdb/src/main/secret/secret_storage.cpp +8 -2
- package/src/duckdb/src/main/settings/settings.cpp +42 -2
- package/src/duckdb/src/main/settings/ub_duckdb_main_settings.cpp +2 -0
- package/src/duckdb/src/main/ub_duckdb_main.cpp +25 -0
- package/src/duckdb/src/optimizer/compressed_materialization/ub_duckdb_optimizer_compressed_materialization.cpp +4 -0
- package/src/duckdb/src/optimizer/filter_combiner.cpp +20 -14
- package/src/duckdb/src/optimizer/in_clause_rewriter.cpp +5 -1
- package/src/duckdb/src/optimizer/join_order/relation_manager.cpp +23 -11
- package/src/duckdb/src/optimizer/join_order/ub_duckdb_optimizer_join_order.cpp +12 -0
- package/src/duckdb/src/optimizer/matcher/ub_duckdb_optimizer_matcher.cpp +2 -0
- package/src/duckdb/src/optimizer/pullup/ub_duckdb_optimizer_pullup.cpp +6 -0
- package/src/duckdb/src/optimizer/pushdown/pushdown_limit.cpp +1 -1
- package/src/duckdb/src/optimizer/pushdown/ub_duckdb_optimizer_pushdown.cpp +12 -0
- package/src/duckdb/src/optimizer/remove_unused_columns.cpp +7 -6
- package/src/duckdb/src/optimizer/rule/ordered_aggregate_optimizer.cpp +8 -6
- package/src/duckdb/src/optimizer/rule/regex_optimizations.cpp +1 -1
- package/src/duckdb/src/optimizer/rule/ub_duckdb_optimizer_rules.cpp +16 -0
- package/src/duckdb/src/optimizer/statistics/expression/propagate_cast.cpp +71 -1
- package/src/duckdb/src/optimizer/statistics/expression/ub_duckdb_optimizer_statistics_expr.cpp +11 -0
- package/src/duckdb/src/optimizer/statistics/operator/propagate_join.cpp +1 -1
- package/src/duckdb/src/optimizer/statistics/operator/propagate_limit.cpp +5 -1
- package/src/duckdb/src/optimizer/statistics/operator/ub_duckdb_optimizer_statistics_op.cpp +11 -0
- package/src/duckdb/src/optimizer/topn_optimizer.cpp +12 -11
- package/src/duckdb/src/optimizer/ub_duckdb_optimizer.cpp +20 -0
- package/src/duckdb/src/parallel/executor.cpp +8 -19
- package/src/duckdb/src/parallel/executor_task.cpp +6 -2
- package/src/duckdb/src/parallel/pipeline.cpp +12 -6
- package/src/duckdb/src/parallel/pipeline_executor.cpp +1 -1
- package/src/duckdb/src/parallel/pipeline_finish_event.cpp +2 -2
- package/src/duckdb/src/parallel/pipeline_initialize_event.cpp +1 -2
- package/src/duckdb/src/parallel/task_scheduler.cpp +15 -8
- package/src/duckdb/src/parallel/ub_duckdb_parallel.cpp +15 -0
- package/src/duckdb/src/parser/constraints/ub_duckdb_constraints.cpp +5 -0
- package/src/duckdb/src/parser/expression/ub_duckdb_expression.cpp +18 -0
- package/src/duckdb/src/parser/parsed_data/alter_table_info.cpp +0 -18
- package/src/duckdb/src/parser/parsed_data/comment_on_column_info.cpp +44 -0
- package/src/duckdb/src/parser/parsed_data/create_view_info.cpp +1 -0
- package/src/duckdb/src/parser/parsed_data/extra_drop_info.cpp +2 -0
- package/src/duckdb/src/parser/parsed_data/ub_duckdb_parsed_data.cpp +24 -0
- package/src/duckdb/src/parser/parser.cpp +1 -1
- package/src/duckdb/src/parser/query_error_context.cpp +15 -1
- package/src/duckdb/src/parser/query_node/ub_duckdb_query_node.cpp +5 -0
- package/src/duckdb/src/parser/statement/export_statement.cpp +2 -1
- package/src/duckdb/src/parser/statement/relation_statement.cpp +2 -2
- package/src/duckdb/src/parser/statement/ub_duckdb_statement.cpp +25 -0
- package/src/duckdb/src/parser/tableref/pivotref.cpp +3 -3
- package/src/duckdb/src/parser/tableref/showref.cpp +2 -0
- package/src/duckdb/src/parser/tableref/ub_duckdb_parser_tableref.cpp +8 -0
- package/src/duckdb/src/parser/transform/constraint/ub_duckdb_transformer_constraint.cpp +2 -0
- package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +1 -1
- package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +10 -2
- package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +7 -7
- package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +2 -1
- package/src/duckdb/src/parser/transform/expression/ub_duckdb_transformer_expression.cpp +20 -0
- package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +2 -2
- package/src/duckdb/src/parser/transform/helpers/ub_duckdb_transformer_helpers.cpp +8 -0
- package/src/duckdb/src/parser/transform/statement/transform_comment_on.cpp +3 -8
- package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +3 -1
- package/src/duckdb/src/parser/transform/statement/transform_show_select.cpp +2 -3
- package/src/duckdb/src/parser/transform/statement/ub_duckdb_transformer_statement.cpp +37 -0
- package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +16 -0
- package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +49 -32
- package/src/duckdb/src/parser/transform/tableref/ub_duckdb_transformer_tableref.cpp +8 -0
- package/src/duckdb/src/parser/ub_duckdb_parser.cpp +15 -0
- package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +11 -4
- package/src/duckdb/src/planner/binder/expression/bind_operator_expression.cpp +4 -1
- package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +71 -5
- package/src/duckdb/src/planner/binder/expression/bind_window_expression.cpp +35 -1
- package/src/duckdb/src/planner/binder/expression/ub_duckdb_bind_expression.cpp +20 -0
- package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +55 -51
- package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +1 -11
- package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +2 -2
- package/src/duckdb/src/planner/binder/query_node/ub_duckdb_bind_query_node.cpp +12 -0
- package/src/duckdb/src/planner/binder/statement/bind_create.cpp +12 -6
- package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +1 -1
- package/src/duckdb/src/planner/binder/statement/bind_export.cpp +8 -2
- package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +6 -3
- package/src/duckdb/src/planner/binder/statement/bind_simple.cpp +13 -2
- package/src/duckdb/src/planner/binder/statement/ub_duckdb_bind_statement.cpp +26 -0
- package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +15 -4
- package/src/duckdb/src/planner/binder/tableref/bind_joinref.cpp +9 -2
- package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +93 -45
- package/src/duckdb/src/planner/binder/tableref/bind_subqueryref.cpp +6 -1
- package/src/duckdb/src/planner/binder/tableref/ub_duckdb_bind_tableref.cpp +17 -0
- package/src/duckdb/src/planner/binder.cpp +22 -23
- package/src/duckdb/src/planner/bound_result_modifier.cpp +67 -4
- package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +5 -1
- package/src/duckdb/src/planner/expression/bound_window_expression.cpp +3 -0
- package/src/duckdb/src/planner/expression/ub_duckdb_planner_expression.cpp +19 -0
- package/src/duckdb/src/planner/expression_binder/column_alias_binder.cpp +14 -9
- package/src/duckdb/src/planner/expression_binder/having_binder.cpp +17 -9
- package/src/duckdb/src/planner/expression_binder/lateral_binder.cpp +61 -37
- package/src/duckdb/src/planner/expression_binder/qualify_binder.cpp +8 -4
- package/src/duckdb/src/planner/expression_binder/ub_duckdb_expression_binders.cpp +20 -0
- package/src/duckdb/src/planner/expression_binder/where_binder.cpp +3 -2
- package/src/duckdb/src/planner/expression_iterator.cpp +73 -52
- package/src/duckdb/src/planner/filter/ub_duckdb_planner_filter.cpp +4 -0
- package/src/duckdb/src/planner/logical_operator_visitor.cpp +4 -14
- package/src/duckdb/src/planner/operator/logical_limit.cpp +14 -6
- package/src/duckdb/src/planner/operator/ub_duckdb_planner_operator.cpp +43 -0
- package/src/duckdb/src/planner/parsed_data/ub_duckdb_planner_parsed_data.cpp +2 -0
- package/src/duckdb/src/planner/planner.cpp +3 -0
- package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +46 -18
- package/src/duckdb/src/planner/subquery/rewrite_correlated_expressions.cpp +39 -33
- package/src/duckdb/src/planner/subquery/ub_duckdb_planner_subquery.cpp +4 -0
- package/src/duckdb/src/planner/ub_duckdb_planner.cpp +15 -0
- package/src/duckdb/src/storage/arena_allocator.cpp +9 -0
- package/src/duckdb/src/storage/buffer/block_handle.cpp +7 -2
- package/src/duckdb/src/storage/buffer/block_manager.cpp +7 -3
- package/src/duckdb/src/storage/buffer/buffer_pool.cpp +121 -24
- package/src/duckdb/src/storage/buffer/ub_duckdb_storage_buffer.cpp +6 -0
- package/src/duckdb/src/storage/checkpoint/ub_duckdb_storage_checkpoint.cpp +5 -0
- package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +4 -4
- package/src/duckdb/src/storage/compression/chimp/ub_duckdb_storage_compression_chimp.cpp +6 -0
- package/src/duckdb/src/storage/compression/dictionary_compression.cpp +6 -5
- package/src/duckdb/src/storage/compression/fsst.cpp +3 -2
- package/src/duckdb/src/storage/compression/rle.cpp +1 -1
- package/src/duckdb/src/storage/compression/string_uncompressed.cpp +4 -4
- package/src/duckdb/src/storage/compression/ub_duckdb_storage_compression.cpp +12 -0
- package/src/duckdb/src/storage/data_table.cpp +6 -3
- package/src/duckdb/src/storage/local_storage.cpp +5 -2
- package/src/duckdb/src/storage/metadata/metadata_manager.cpp +4 -4
- package/src/duckdb/src/storage/metadata/metadata_reader.cpp +1 -1
- package/src/duckdb/src/storage/metadata/metadata_writer.cpp +1 -1
- package/src/duckdb/src/storage/metadata/ub_duckdb_storage_metadata.cpp +4 -0
- package/src/duckdb/src/storage/partial_block_manager.cpp +1 -1
- package/src/duckdb/src/storage/serialization/serialize_create_info.cpp +2 -0
- package/src/duckdb/src/storage/serialization/serialize_expression.cpp +3 -0
- package/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +5 -29
- package/src/duckdb/src/storage/serialization/serialize_nodes.cpp +22 -4
- package/src/duckdb/src/storage/serialization/serialize_parse_info.cpp +12 -32
- package/src/duckdb/src/storage/serialization/ub_duckdb_storage_serialization.cpp +16 -0
- package/src/duckdb/src/storage/standard_buffer_manager.cpp +29 -397
- package/src/duckdb/src/storage/statistics/string_stats.cpp +1 -1
- package/src/duckdb/src/storage/statistics/ub_duckdb_storage_statistics.cpp +10 -0
- package/src/duckdb/src/storage/storage_info.cpp +1 -1
- package/src/duckdb/src/storage/table/column_checkpoint_state.cpp +3 -3
- package/src/duckdb/src/storage/table/column_data.cpp +7 -16
- package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +4 -1
- package/src/duckdb/src/storage/table/column_segment.cpp +68 -78
- package/src/duckdb/src/storage/table/list_column_data.cpp +1 -0
- package/src/duckdb/src/storage/table/row_group.cpp +17 -7
- package/src/duckdb/src/storage/table/row_group_collection.cpp +28 -27
- package/src/duckdb/src/storage/table/ub_duckdb_storage_table.cpp +17 -0
- package/src/duckdb/src/storage/table/update_segment.cpp +7 -7
- package/src/duckdb/src/storage/temporary_file_manager.cpp +334 -0
- package/src/duckdb/src/storage/ub_duckdb_storage.cpp +20 -0
- package/src/duckdb/src/storage/write_ahead_log.cpp +3 -2
- package/src/duckdb/src/transaction/commit_state.cpp +4 -2
- package/src/duckdb/src/transaction/duck_transaction_manager.cpp +32 -17
- package/src/duckdb/src/transaction/meta_transaction.cpp +24 -0
- package/src/duckdb/src/transaction/transaction_context.cpp +0 -9
- package/src/duckdb/src/transaction/ub_duckdb_transaction.cpp +11 -0
- package/src/duckdb/src/transaction/undo_buffer.cpp +1 -1
- package/src/duckdb/third_party/jaro_winkler/details/common.hpp +1 -1
- package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +2 -0
- package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +1032 -551
- package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +24122 -24304
- package/src/duckdb/third_party/mbedtls/include/mbedtls/mbedtls_config.h +0 -3
- package/src/duckdb/third_party/mbedtls/library/entropy_poll.cpp +32 -4
- package/src/duckdb/third_party/miniz/miniz_wrapper.hpp +4 -4
- package/src/duckdb/third_party/tdigest/t_digest.hpp +3 -3
- package/src/duckdb/ub_src_common_arrow_appender.cpp +2 -0
- package/src/duckdb/ub_src_common_exception.cpp +2 -0
- package/src/duckdb/ub_src_execution_operator_helper.cpp +2 -0
- package/src/duckdb/ub_src_execution_operator_persistent.cpp +0 -2
- package/src/duckdb/ub_src_execution_physical_plan.cpp +0 -2
- package/src/duckdb/ub_src_parser_parsed_data.cpp +1 -1
- package/src/duckdb/ub_src_planner_operator.cpp +0 -2
- package/src/duckdb/ub_src_storage.cpp +2 -0
- package/test/columns.test.ts +1 -1
- package/test/test_all_types.test.ts +1 -1
|
@@ -18,6 +18,31 @@ struct DBConfig;
|
|
|
18
18
|
|
|
19
19
|
const string GetDefaultUserAgent();
|
|
20
20
|
|
|
21
|
+
enum class SettingScope : uint8_t { GLOBAL, LOCAL, INVALID };
|
|
22
|
+
|
|
23
|
+
struct SettingLookupResult {
|
|
24
|
+
public:
|
|
25
|
+
SettingLookupResult() : scope(SettingScope::INVALID) {
|
|
26
|
+
}
|
|
27
|
+
SettingLookupResult(SettingScope scope) : scope(scope) {
|
|
28
|
+
D_ASSERT(scope != SettingScope::INVALID);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
public:
|
|
32
|
+
operator bool() {
|
|
33
|
+
return scope != SettingScope::INVALID;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
public:
|
|
37
|
+
SettingScope GetScope() {
|
|
38
|
+
D_ASSERT(scope != SettingScope::INVALID);
|
|
39
|
+
return scope;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
private:
|
|
43
|
+
SettingScope scope = SettingScope::INVALID;
|
|
44
|
+
};
|
|
45
|
+
|
|
21
46
|
struct AccessModeSetting {
|
|
22
47
|
static constexpr const char *Name = "access_mode";
|
|
23
48
|
static constexpr const char *Description = "Access mode of the database (AUTOMATIC, READ_ONLY or READ_WRITE)";
|
|
@@ -200,6 +225,15 @@ struct AllowUnsignedExtensionsSetting {
|
|
|
200
225
|
static Value GetSetting(ClientContext &context);
|
|
201
226
|
};
|
|
202
227
|
|
|
228
|
+
struct AllowUnredactedSecretsSetting {
|
|
229
|
+
static constexpr const char *Name = "allow_unredacted_secrets";
|
|
230
|
+
static constexpr const char *Description = "Allow printing unredacted secrets";
|
|
231
|
+
static constexpr const LogicalTypeId InputType = LogicalTypeId::BOOLEAN;
|
|
232
|
+
static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value ¶meter);
|
|
233
|
+
static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
|
|
234
|
+
static Value GetSetting(ClientContext &context);
|
|
235
|
+
};
|
|
236
|
+
|
|
203
237
|
struct CustomExtensionRepository {
|
|
204
238
|
static constexpr const char *Name = "custom_extension_repository";
|
|
205
239
|
static constexpr const char *Description = "Overrides the custom endpoint for remote extension installation";
|
|
@@ -305,6 +339,16 @@ struct ExplainOutputSetting {
|
|
|
305
339
|
static Value GetSetting(ClientContext &context);
|
|
306
340
|
};
|
|
307
341
|
|
|
342
|
+
struct ExportLargeBufferArrow {
|
|
343
|
+
static constexpr const char *Name = "arrow_large_buffer_size";
|
|
344
|
+
static constexpr const char *Description =
|
|
345
|
+
"If arrow buffers for strings, blobs, uuids and bits should be exported using large buffers";
|
|
346
|
+
static constexpr const LogicalTypeId InputType = LogicalTypeId::BOOLEAN;
|
|
347
|
+
static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value ¶meter);
|
|
348
|
+
static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
|
|
349
|
+
static Value GetSetting(ClientContext &context);
|
|
350
|
+
};
|
|
351
|
+
|
|
308
352
|
struct ExtensionDirectorySetting {
|
|
309
353
|
static constexpr const char *Name = "extension_directory";
|
|
310
354
|
static constexpr const char *Description = "Set the directory to store extensions in";
|
|
@@ -427,6 +471,16 @@ struct OldImplicitCasting {
|
|
|
427
471
|
static Value GetSetting(ClientContext &context);
|
|
428
472
|
};
|
|
429
473
|
|
|
474
|
+
struct PartitionedWriteFlushThreshold {
|
|
475
|
+
static constexpr const char *Name = "partitioned_write_flush_threshold";
|
|
476
|
+
static constexpr const char *Description =
|
|
477
|
+
"The threshold in number of rows after which we flush a thread state when writing using PARTITION_BY";
|
|
478
|
+
static constexpr const LogicalTypeId InputType = LogicalTypeId::BIGINT;
|
|
479
|
+
static void SetLocal(ClientContext &context, const Value ¶meter);
|
|
480
|
+
static void ResetLocal(ClientContext &context);
|
|
481
|
+
static Value GetSetting(ClientContext &context);
|
|
482
|
+
};
|
|
483
|
+
|
|
430
484
|
struct PasswordSetting {
|
|
431
485
|
static constexpr const char *Name = "password";
|
|
432
486
|
static constexpr const char *Description = "The password to use. Ignored for legacy compatibility.";
|
|
@@ -486,16 +540,6 @@ struct PreserveInsertionOrder {
|
|
|
486
540
|
static Value GetSetting(ClientContext &context);
|
|
487
541
|
};
|
|
488
542
|
|
|
489
|
-
struct ExportLargeBufferArrow {
|
|
490
|
-
static constexpr const char *Name = "arrow_large_buffer_size";
|
|
491
|
-
static constexpr const char *Description =
|
|
492
|
-
"If arrow buffers for strings, blobs, uuids and bits should be exported using large buffers";
|
|
493
|
-
static constexpr const LogicalTypeId InputType = LogicalTypeId::BOOLEAN;
|
|
494
|
-
static void SetGlobal(DatabaseInstance *db, DBConfig &config, const Value ¶meter);
|
|
495
|
-
static void ResetGlobal(DatabaseInstance *db, DBConfig &config);
|
|
496
|
-
static Value GetSetting(ClientContext &context);
|
|
497
|
-
};
|
|
498
|
-
|
|
499
543
|
struct ProfileOutputSetting {
|
|
500
544
|
static constexpr const char *Name = "profile_output";
|
|
501
545
|
static constexpr const char *Description =
|
|
@@ -55,7 +55,8 @@ public:
|
|
|
55
55
|
bool ExtractBindings(Expression &expression, unordered_set<idx_t> &bindings);
|
|
56
56
|
void AddRelation(LogicalOperator &op, optional_ptr<LogicalOperator> parent, const RelationStats &stats);
|
|
57
57
|
|
|
58
|
-
void
|
|
58
|
+
void AddAggregateOrWindowRelation(LogicalOperator &op, optional_ptr<LogicalOperator> parent,
|
|
59
|
+
const RelationStats &stats, LogicalOperatorType op_type);
|
|
59
60
|
vector<unique_ptr<SingleJoinRelation>> GetRelations();
|
|
60
61
|
|
|
61
62
|
const vector<RelationStats> GetRelationStats();
|
|
@@ -17,6 +17,8 @@ class OrderedAggregateOptimizer : public Rule {
|
|
|
17
17
|
public:
|
|
18
18
|
explicit OrderedAggregateOptimizer(ExpressionRewriter &rewriter);
|
|
19
19
|
|
|
20
|
+
static unique_ptr<Expression> Apply(ClientContext &context, BoundAggregateExpression &aggr,
|
|
21
|
+
vector<unique_ptr<Expression>> &groups, bool &changes_made);
|
|
20
22
|
unique_ptr<Expression> Apply(LogicalOperator &op, vector<reference<Expression>> &bindings, bool &changes_made,
|
|
21
23
|
bool is_root) override;
|
|
22
24
|
};
|
|
@@ -42,24 +42,24 @@ struct ProducerToken {
|
|
|
42
42
|
template <typename T>
|
|
43
43
|
class ConcurrentQueue {
|
|
44
44
|
private:
|
|
45
|
-
//! The queue
|
|
45
|
+
//! The standard library queue.
|
|
46
46
|
std::queue<T, std::deque<T>> q;
|
|
47
47
|
|
|
48
48
|
public:
|
|
49
|
-
//!
|
|
49
|
+
//! Default constructor.
|
|
50
50
|
ConcurrentQueue() = default;
|
|
51
|
-
//! Constructor
|
|
51
|
+
//! Constructor reserving capacity.
|
|
52
52
|
explicit ConcurrentQueue(size_t capacity) {
|
|
53
53
|
q.reserve(capacity);
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
//! Enqueue item
|
|
56
|
+
//! Enqueue an item.
|
|
57
57
|
template <typename U>
|
|
58
58
|
bool enqueue(U &&item) {
|
|
59
59
|
q.push(std::forward<U>(item));
|
|
60
60
|
return true;
|
|
61
61
|
}
|
|
62
|
-
//! Try to dequeue an item
|
|
62
|
+
//! Try to dequeue an item.
|
|
63
63
|
bool try_dequeue(T &item) {
|
|
64
64
|
if (q.empty()) {
|
|
65
65
|
return false;
|
|
@@ -68,6 +68,22 @@ public:
|
|
|
68
68
|
q.pop();
|
|
69
69
|
return true;
|
|
70
70
|
}
|
|
71
|
+
//! Get the size of the queue.
|
|
72
|
+
size_t size_approx() const {
|
|
73
|
+
return q.size();
|
|
74
|
+
}
|
|
75
|
+
//! Dequeues several elements from the queue.
|
|
76
|
+
//! Returns the number of elements dequeued.
|
|
77
|
+
template <typename It>
|
|
78
|
+
size_t try_dequeue_bulk(It itemFirst, size_t max) {
|
|
79
|
+
for (size_t i = 0; i < max; i++) {
|
|
80
|
+
if (!try_dequeue(*itemFirst)) {
|
|
81
|
+
return i;
|
|
82
|
+
}
|
|
83
|
+
itemFirst++;
|
|
84
|
+
}
|
|
85
|
+
return max;
|
|
86
|
+
}
|
|
71
87
|
};
|
|
72
88
|
|
|
73
89
|
} // namespace duckdb_moodycamel
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
//===----------------------------------------------------------------------===//
|
|
2
|
+
// DuckDB
|
|
3
|
+
//
|
|
4
|
+
// duckdb/parallel/executor_task.hpp
|
|
5
|
+
//
|
|
6
|
+
//
|
|
7
|
+
//===----------------------------------------------------------------------===//
|
|
8
|
+
|
|
9
|
+
#pragma once
|
|
10
|
+
|
|
11
|
+
#include "duckdb/parallel/task.hpp"
|
|
12
|
+
#include "duckdb/parallel/event.hpp"
|
|
13
|
+
|
|
14
|
+
namespace duckdb {
|
|
15
|
+
|
|
16
|
+
//! Execute a task within an executor, including exception handling
|
|
17
|
+
//! This should be used within queries
|
|
18
|
+
class ExecutorTask : public Task {
|
|
19
|
+
public:
|
|
20
|
+
ExecutorTask(Executor &executor, shared_ptr<Event> event);
|
|
21
|
+
ExecutorTask(ClientContext &context, shared_ptr<Event> event);
|
|
22
|
+
virtual ~ExecutorTask();
|
|
23
|
+
|
|
24
|
+
public:
|
|
25
|
+
void Deschedule() override;
|
|
26
|
+
void Reschedule() override;
|
|
27
|
+
|
|
28
|
+
public:
|
|
29
|
+
Executor &executor;
|
|
30
|
+
shared_ptr<Event> event;
|
|
31
|
+
|
|
32
|
+
public:
|
|
33
|
+
virtual TaskExecutionResult ExecuteTask(TaskExecutionMode mode) = 0;
|
|
34
|
+
TaskExecutionResult Execute(TaskExecutionMode mode) override;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
} // namespace duckdb
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
//===----------------------------------------------------------------------===//
|
|
2
2
|
// DuckDB
|
|
3
3
|
//
|
|
4
|
-
//
|
|
4
|
+
// duckdb/parallel/interrupt.hpp
|
|
5
5
|
//
|
|
6
6
|
//
|
|
7
7
|
//===----------------------------------------------------------------------===//
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
#include "duckdb/function/table_function.hpp"
|
|
16
16
|
#include "duckdb/parallel/task_scheduler.hpp"
|
|
17
17
|
#include "duckdb/common/reference_map.hpp"
|
|
18
|
+
#include "duckdb/parallel/executor_task.hpp"
|
|
18
19
|
|
|
19
20
|
namespace duckdb {
|
|
20
21
|
|
|
@@ -31,7 +32,6 @@ public:
|
|
|
31
32
|
explicit PipelineTask(Pipeline &pipeline_p, shared_ptr<Event> event_p);
|
|
32
33
|
|
|
33
34
|
Pipeline &pipeline;
|
|
34
|
-
shared_ptr<Event> event;
|
|
35
35
|
unique_ptr<PipelineExecutor> pipeline_executor;
|
|
36
36
|
|
|
37
37
|
public:
|
|
@@ -52,24 +52,4 @@ public:
|
|
|
52
52
|
}
|
|
53
53
|
};
|
|
54
54
|
|
|
55
|
-
//! Execute a task within an executor, including exception handling
|
|
56
|
-
//! This should be used within queries
|
|
57
|
-
class ExecutorTask : public Task {
|
|
58
|
-
public:
|
|
59
|
-
ExecutorTask(Executor &executor);
|
|
60
|
-
ExecutorTask(ClientContext &context);
|
|
61
|
-
virtual ~ExecutorTask();
|
|
62
|
-
|
|
63
|
-
public:
|
|
64
|
-
void Deschedule() override;
|
|
65
|
-
void Reschedule() override;
|
|
66
|
-
|
|
67
|
-
public:
|
|
68
|
-
Executor &executor;
|
|
69
|
-
|
|
70
|
-
public:
|
|
71
|
-
virtual TaskExecutionResult ExecuteTask(TaskExecutionMode mode) = 0;
|
|
72
|
-
TaskExecutionResult Execute(TaskExecutionMode mode) override;
|
|
73
|
-
};
|
|
74
|
-
|
|
75
55
|
} // namespace duckdb
|
|
@@ -92,8 +92,10 @@ private:
|
|
|
92
92
|
vector<unique_ptr<atomic<bool>>> markers;
|
|
93
93
|
//! The threshold after which to flush the allocator after completing a task
|
|
94
94
|
atomic<idx_t> allocator_flush_threshold;
|
|
95
|
-
//! Requested thread count
|
|
96
|
-
atomic<int32_t>
|
|
95
|
+
//! Requested thread count (set by the 'threads' setting)
|
|
96
|
+
atomic<int32_t> requested_thread_count;
|
|
97
|
+
//! The amount of threads currently running
|
|
98
|
+
atomic<int32_t> current_thread_count;
|
|
97
99
|
};
|
|
98
100
|
|
|
99
101
|
} // namespace duckdb
|
|
@@ -197,6 +197,16 @@ public:
|
|
|
197
197
|
default:
|
|
198
198
|
throw InternalException("Unrecognized TO in WindowExpression");
|
|
199
199
|
}
|
|
200
|
+
if (entry.exclude_clause != WindowExcludeMode::NO_OTHER) {
|
|
201
|
+
// if we have an explicit EXCLUDE we always need to fill in from/to
|
|
202
|
+
if (from.empty()) {
|
|
203
|
+
from = "UNBOUNDED PRECEDING";
|
|
204
|
+
}
|
|
205
|
+
if (to.empty()) {
|
|
206
|
+
to = "CURRENT ROW";
|
|
207
|
+
units = "RANGE";
|
|
208
|
+
}
|
|
209
|
+
}
|
|
200
210
|
|
|
201
211
|
if (!from.empty() || !to.empty()) {
|
|
202
212
|
result += sep + units;
|
|
@@ -207,30 +207,6 @@ private:
|
|
|
207
207
|
ChangeColumnTypeInfo();
|
|
208
208
|
};
|
|
209
209
|
|
|
210
|
-
//===--------------------------------------------------------------------===//
|
|
211
|
-
// SetColumnCommentInfo
|
|
212
|
-
//===--------------------------------------------------------------------===//
|
|
213
|
-
struct SetColumnCommentInfo : public AlterTableInfo {
|
|
214
|
-
SetColumnCommentInfo(AlterEntryData data, string column_name, Value comment_value);
|
|
215
|
-
~SetColumnCommentInfo() override;
|
|
216
|
-
|
|
217
|
-
//! The column name to alter
|
|
218
|
-
string column_name;
|
|
219
|
-
//! The target type of the column
|
|
220
|
-
Value comment;
|
|
221
|
-
|
|
222
|
-
public:
|
|
223
|
-
unique_ptr<AlterInfo> Copy() const override;
|
|
224
|
-
void Serialize(Serializer &serializer) const override;
|
|
225
|
-
static unique_ptr<AlterTableInfo> Deserialize(Deserializer &deserializer);
|
|
226
|
-
|
|
227
|
-
string GetColumnName() const override {
|
|
228
|
-
return column_name;
|
|
229
|
-
};
|
|
230
|
-
|
|
231
|
-
explicit SetColumnCommentInfo();
|
|
232
|
-
};
|
|
233
|
-
|
|
234
210
|
//===--------------------------------------------------------------------===//
|
|
235
211
|
// SetDefaultInfo
|
|
236
212
|
//===--------------------------------------------------------------------===//
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
//===----------------------------------------------------------------------===//
|
|
2
|
+
// DuckDB
|
|
3
|
+
//
|
|
4
|
+
// duckdb/parser/parsed_data/comment_on_column_info.hpp
|
|
5
|
+
//
|
|
6
|
+
//
|
|
7
|
+
//===----------------------------------------------------------------------===//
|
|
8
|
+
|
|
9
|
+
#pragma once
|
|
10
|
+
|
|
11
|
+
#include "duckdb/common/enums/catalog_type.hpp"
|
|
12
|
+
#include "duckdb/common/types/value.hpp"
|
|
13
|
+
#include "duckdb/parser/parsed_data/alter_info.hpp"
|
|
14
|
+
#include "duckdb/parser/qualified_name.hpp"
|
|
15
|
+
|
|
16
|
+
namespace duckdb {
|
|
17
|
+
class ClientContext;
|
|
18
|
+
class CatalogEntry;
|
|
19
|
+
|
|
20
|
+
struct SetColumnCommentInfo : public AlterInfo {
|
|
21
|
+
public:
|
|
22
|
+
static constexpr const ParseInfoType TYPE = ParseInfoType::COMMENT_ON_COLUMN_INFO;
|
|
23
|
+
|
|
24
|
+
public:
|
|
25
|
+
SetColumnCommentInfo();
|
|
26
|
+
SetColumnCommentInfo(string catalog, string schema, string name, string column_name, Value comment_value,
|
|
27
|
+
OnEntryNotFound if_not_found);
|
|
28
|
+
|
|
29
|
+
//! The resolved Catalog Type
|
|
30
|
+
CatalogType catalog_entry_type;
|
|
31
|
+
|
|
32
|
+
//! name of the column to comment on
|
|
33
|
+
string column_name;
|
|
34
|
+
//! The comment, can be NULL or a string
|
|
35
|
+
Value comment_value;
|
|
36
|
+
|
|
37
|
+
public:
|
|
38
|
+
optional_ptr<CatalogEntry> TryResolveCatalogEntry(ClientContext &context);
|
|
39
|
+
unique_ptr<AlterInfo> Copy() const override;
|
|
40
|
+
CatalogType GetCatalogType() const override;
|
|
41
|
+
|
|
42
|
+
void Serialize(Serializer &serializer) const override;
|
|
43
|
+
static unique_ptr<AlterInfo> Deserialize(Deserializer &deserializer);
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
} // namespace duckdb
|
|
@@ -29,6 +29,8 @@ public:
|
|
|
29
29
|
vector<LogicalType> types;
|
|
30
30
|
//! Names of the query
|
|
31
31
|
vector<string> names;
|
|
32
|
+
//! Comments on columns of the query. Note: vector can be empty when no comments are set
|
|
33
|
+
vector<Value> column_comments;
|
|
32
34
|
//! The SelectStatement of the view
|
|
33
35
|
unique_ptr<SelectStatement> query;
|
|
34
36
|
|
|
@@ -26,7 +26,8 @@ enum class ParseInfoType : uint8_t {
|
|
|
26
26
|
SHOW_SELECT_INFO,
|
|
27
27
|
TRANSACTION_INFO,
|
|
28
28
|
VACUUM_INFO,
|
|
29
|
-
COMMENT_ON_INFO
|
|
29
|
+
COMMENT_ON_INFO,
|
|
30
|
+
COMMENT_ON_COLUMN_INFO
|
|
30
31
|
};
|
|
31
32
|
|
|
32
33
|
struct ParseInfo {
|
|
@@ -40,7 +41,7 @@ struct ParseInfo {
|
|
|
40
41
|
public:
|
|
41
42
|
template <class TARGET>
|
|
42
43
|
TARGET &Cast() {
|
|
43
|
-
|
|
44
|
+
DynamicCastCheck<TARGET>(this);
|
|
44
45
|
return reinterpret_cast<TARGET &>(*this);
|
|
45
46
|
}
|
|
46
47
|
|
|
@@ -14,10 +14,10 @@
|
|
|
14
14
|
namespace duckdb {
|
|
15
15
|
|
|
16
16
|
struct PivotColumnEntry {
|
|
17
|
-
//! The set of values to match on
|
|
17
|
+
//! The set of values to match on (PIVOT only)
|
|
18
18
|
vector<Value> values;
|
|
19
|
-
//! The
|
|
20
|
-
unique_ptr<ParsedExpression>
|
|
19
|
+
//! The expression (UNPIVOT only)
|
|
20
|
+
unique_ptr<ParsedExpression> expr;
|
|
21
21
|
//! The alias of the pivot column entry
|
|
22
22
|
string alias;
|
|
23
23
|
|
|
@@ -181,9 +181,9 @@ private:
|
|
|
181
181
|
unique_ptr<DropStatement> TransformDeallocate(duckdb_libpgquery::PGDeallocateStmt &stmt);
|
|
182
182
|
unique_ptr<QueryNode> TransformPivotStatement(duckdb_libpgquery::PGSelectStmt &select);
|
|
183
183
|
unique_ptr<SQLStatement> CreatePivotStatement(unique_ptr<SQLStatement> statement);
|
|
184
|
-
PivotColumn TransformPivotColumn(duckdb_libpgquery::PGPivot &pivot);
|
|
185
|
-
vector<PivotColumn> TransformPivotList(duckdb_libpgquery::PGList &list);
|
|
186
|
-
static
|
|
184
|
+
PivotColumn TransformPivotColumn(duckdb_libpgquery::PGPivot &pivot, bool is_pivot);
|
|
185
|
+
vector<PivotColumn> TransformPivotList(duckdb_libpgquery::PGList &list, bool is_pivot);
|
|
186
|
+
static bool TransformPivotInList(unique_ptr<ParsedExpression> &expr, PivotColumnEntry &entry,
|
|
187
187
|
bool root_entry = true);
|
|
188
188
|
|
|
189
189
|
//===--------------------------------------------------------------------===//
|
|
@@ -49,6 +49,9 @@ struct BoundCreateFunctionInfo;
|
|
|
49
49
|
struct CommonTableExpressionInfo;
|
|
50
50
|
struct BoundParameterMap;
|
|
51
51
|
struct BoundPragmaInfo;
|
|
52
|
+
struct BoundLimitNode;
|
|
53
|
+
struct PivotColumnEntry;
|
|
54
|
+
struct UnpivotEntry;
|
|
52
55
|
|
|
53
56
|
enum class BindingMode : uint8_t { STANDARD_BINDING, EXTRACT_NAMES };
|
|
54
57
|
|
|
@@ -203,10 +206,12 @@ private:
|
|
|
203
206
|
unordered_set<string> table_names;
|
|
204
207
|
//! The set of bound views
|
|
205
208
|
reference_set_t<ViewCatalogEntry> bound_views;
|
|
209
|
+
//! Unnamed subquery index
|
|
210
|
+
idx_t unnamed_subquery_index = 1;
|
|
206
211
|
|
|
207
212
|
private:
|
|
208
213
|
//! Get the root binder (binder with no parent)
|
|
209
|
-
Binder
|
|
214
|
+
Binder &GetRootBinder();
|
|
210
215
|
//! Determine the depth of the binder
|
|
211
216
|
idx_t GetBinderDepth() const;
|
|
212
217
|
//! Bind the expressions of generated columns to check for errors
|
|
@@ -214,9 +219,8 @@ private:
|
|
|
214
219
|
//! Bind the default values of the columns of a table
|
|
215
220
|
void BindDefaultValues(const ColumnList &columns, vector<unique_ptr<Expression>> &bound_defaults);
|
|
216
221
|
//! Bind a limit value (LIMIT or OFFSET)
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
Value &delimiter_value);
|
|
222
|
+
BoundLimitNode BindLimitValue(OrderBinder &order_binder, unique_ptr<ParsedExpression> limit_val, bool is_percentage,
|
|
223
|
+
bool is_offset);
|
|
220
224
|
|
|
221
225
|
//! Move correlated expressions from the child binder to this binder
|
|
222
226
|
void MoveCorrelatedExpressions(Binder &other);
|
|
@@ -271,6 +275,7 @@ private:
|
|
|
271
275
|
unique_ptr<LogicalOperator> CreatePlan(BoundSetOperationNode &node);
|
|
272
276
|
unique_ptr<LogicalOperator> CreatePlan(BoundQueryNode &node);
|
|
273
277
|
|
|
278
|
+
unique_ptr<BoundTableRef> BindJoin(Binder &parent, TableRef &ref);
|
|
274
279
|
unique_ptr<BoundTableRef> Bind(BaseTableRef &ref);
|
|
275
280
|
unique_ptr<BoundTableRef> Bind(JoinRef &ref);
|
|
276
281
|
unique_ptr<BoundTableRef> Bind(SubqueryRef &ref, optional_ptr<CommonTableExpressionInfo> cte = nullptr);
|
|
@@ -285,6 +290,8 @@ private:
|
|
|
285
290
|
vector<unique_ptr<ParsedExpression>> all_columns,
|
|
286
291
|
unique_ptr<ParsedExpression> &where_clause);
|
|
287
292
|
unique_ptr<BoundTableRef> BindBoundPivot(PivotRef &expr);
|
|
293
|
+
void ExtractUnpivotEntries(Binder &child_binder, PivotColumnEntry &entry, vector<UnpivotEntry> &unpivot_entries);
|
|
294
|
+
void ExtractUnpivotColumnName(ParsedExpression &expr, vector<string> &result);
|
|
288
295
|
|
|
289
296
|
bool BindTableFunctionParameters(TableFunctionCatalogEntry &table_function,
|
|
290
297
|
vector<unique_ptr<ParsedExpression>> &expressions, vector<LogicalType> &arguments,
|
|
@@ -65,6 +65,63 @@ public:
|
|
|
65
65
|
static BoundOrderByNode Deserialize(Deserializer &deserializer);
|
|
66
66
|
};
|
|
67
67
|
|
|
68
|
+
enum class LimitNodeType : uint8_t {
|
|
69
|
+
UNSET = 0,
|
|
70
|
+
CONSTANT_VALUE = 1,
|
|
71
|
+
CONSTANT_PERCENTAGE = 2,
|
|
72
|
+
EXPRESSION_VALUE = 3,
|
|
73
|
+
EXPRESSION_PERCENTAGE = 4
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
struct BoundLimitNode {
|
|
77
|
+
public:
|
|
78
|
+
BoundLimitNode();
|
|
79
|
+
BoundLimitNode(LimitNodeType type, idx_t constant_integer, double constant_percentage,
|
|
80
|
+
unique_ptr<Expression> expression);
|
|
81
|
+
|
|
82
|
+
public:
|
|
83
|
+
static BoundLimitNode ConstantValue(int64_t value);
|
|
84
|
+
static BoundLimitNode ConstantPercentage(double percentage);
|
|
85
|
+
static BoundLimitNode ExpressionValue(unique_ptr<Expression> expression);
|
|
86
|
+
static BoundLimitNode ExpressionPercentage(unique_ptr<Expression> expression);
|
|
87
|
+
|
|
88
|
+
LimitNodeType Type() const {
|
|
89
|
+
return type;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
//! Returns the constant value, only valid if Type() == CONSTANT_VALUE
|
|
93
|
+
idx_t GetConstantValue() const;
|
|
94
|
+
//! Returns the constant percentage, only valid if Type() == CONSTANT_PERCENTAGE
|
|
95
|
+
double GetConstantPercentage() const;
|
|
96
|
+
//! Returns the constant percentage, only valid if Type() == EXPRESSION_VALUE
|
|
97
|
+
const Expression &GetValueExpression() const;
|
|
98
|
+
//! Returns the constant percentage, only valid if Type() == EXPRESSION_PERCENTAGE
|
|
99
|
+
const Expression &GetPercentageExpression() const;
|
|
100
|
+
|
|
101
|
+
//! Returns a pointer to the expression - should only be used for limit-agnostic optimizations.
|
|
102
|
+
//! Prefer using the methods above in other scenarios.
|
|
103
|
+
unique_ptr<Expression> &GetExpression() {
|
|
104
|
+
return expression;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
void Serialize(Serializer &serializer) const;
|
|
108
|
+
static BoundLimitNode Deserialize(Deserializer &deserializer);
|
|
109
|
+
|
|
110
|
+
private:
|
|
111
|
+
LimitNodeType type = LimitNodeType::UNSET;
|
|
112
|
+
//! Integer value, if value is a constant non-percentage
|
|
113
|
+
idx_t constant_integer = 0;
|
|
114
|
+
//! Percentage value, if value is a constant percentage
|
|
115
|
+
double constant_percentage = -1;
|
|
116
|
+
//! Expression in case node is not constant
|
|
117
|
+
unique_ptr<Expression> expression;
|
|
118
|
+
|
|
119
|
+
private:
|
|
120
|
+
explicit BoundLimitNode(int64_t constant_value);
|
|
121
|
+
explicit BoundLimitNode(double percentage_value);
|
|
122
|
+
explicit BoundLimitNode(unique_ptr<Expression> expression, bool is_percentage);
|
|
123
|
+
};
|
|
124
|
+
|
|
68
125
|
class BoundLimitModifier : public BoundResultModifier {
|
|
69
126
|
public:
|
|
70
127
|
static constexpr const ResultModifierType TYPE = ResultModifierType::LIMIT_MODIFIER;
|
|
@@ -73,13 +130,9 @@ public:
|
|
|
73
130
|
BoundLimitModifier();
|
|
74
131
|
|
|
75
132
|
//! LIMIT
|
|
76
|
-
|
|
133
|
+
BoundLimitNode limit_val;
|
|
77
134
|
//! OFFSET
|
|
78
|
-
|
|
79
|
-
//! Expression in case limit is not constant
|
|
80
|
-
unique_ptr<Expression> limit;
|
|
81
|
-
//! Expression in case limit is not constant
|
|
82
|
-
unique_ptr<Expression> offset;
|
|
135
|
+
BoundLimitNode offset_val;
|
|
83
136
|
};
|
|
84
137
|
|
|
85
138
|
class BoundOrderModifier : public BoundResultModifier {
|
|
@@ -119,21 +172,4 @@ public:
|
|
|
119
172
|
vector<unique_ptr<Expression>> target_distincts;
|
|
120
173
|
};
|
|
121
174
|
|
|
122
|
-
class BoundLimitPercentModifier : public BoundResultModifier {
|
|
123
|
-
public:
|
|
124
|
-
static constexpr const ResultModifierType TYPE = ResultModifierType::LIMIT_PERCENT_MODIFIER;
|
|
125
|
-
|
|
126
|
-
public:
|
|
127
|
-
BoundLimitPercentModifier();
|
|
128
|
-
|
|
129
|
-
//! LIMIT %
|
|
130
|
-
double limit_percent = 100.0;
|
|
131
|
-
//! OFFSET
|
|
132
|
-
int64_t offset_val = 0;
|
|
133
|
-
//! Expression in case limit is not constant
|
|
134
|
-
unique_ptr<Expression> limit;
|
|
135
|
-
//! Expression in case limit is not constant
|
|
136
|
-
unique_ptr<Expression> offset;
|
|
137
|
-
};
|
|
138
|
-
|
|
139
175
|
} // namespace duckdb
|
|
@@ -21,8 +21,8 @@ class ColumnAliasBinder {
|
|
|
21
21
|
public:
|
|
22
22
|
ColumnAliasBinder(BoundSelectNode &node, const case_insensitive_map_t<idx_t> &alias_map);
|
|
23
23
|
|
|
24
|
-
bool BindAlias(ExpressionBinder &enclosing_binder,
|
|
25
|
-
BindResult &result);
|
|
24
|
+
bool BindAlias(ExpressionBinder &enclosing_binder, unique_ptr<ParsedExpression> &expr_ptr, idx_t depth,
|
|
25
|
+
bool root_expression, BindResult &result);
|
|
26
26
|
|
|
27
27
|
private:
|
|
28
28
|
BoundSelectNode &node;
|
|
@@ -27,10 +27,18 @@ public:
|
|
|
27
27
|
|
|
28
28
|
static void EnumerateExpression(unique_ptr<Expression> &expr,
|
|
29
29
|
const std::function<void(Expression &child)> &callback);
|
|
30
|
+
};
|
|
30
31
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
class BoundNodeVisitor {
|
|
33
|
+
public:
|
|
34
|
+
virtual void VisitBoundQueryNode(BoundQueryNode &op);
|
|
35
|
+
virtual void VisitBoundTableRef(BoundTableRef &ref);
|
|
36
|
+
virtual void VisitExpression(unique_ptr<Expression> &expression);
|
|
37
|
+
|
|
38
|
+
protected:
|
|
39
|
+
// The VisitExpressionChildren method is called at the end of every call to VisitExpression to recursively visit all
|
|
40
|
+
// expressions in an expression tree. It can be overloaded to prevent automatically visiting the entire tree.
|
|
41
|
+
virtual void VisitExpressionChildren(Expression &expression);
|
|
34
42
|
};
|
|
35
43
|
|
|
36
44
|
} // namespace duckdb
|