duckdb 0.8.1-dev2.0 → 0.8.1-dev219.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 +8 -8
- package/package.json +1 -1
- package/src/duckdb/extension/icu/icu-datepart.cpp +1 -1
- package/src/duckdb/extension/json/include/json_common.hpp +1 -1
- package/src/duckdb/extension/json/include/json_executors.hpp +1 -1
- package/src/duckdb/extension/json/json_functions/json_create.cpp +6 -6
- package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +1 -1
- package/src/duckdb/extension/json/json_functions/json_transform.cpp +1 -1
- package/src/duckdb/extension/parquet/column_reader.cpp +57 -52
- package/src/duckdb/extension/parquet/column_writer.cpp +57 -45
- package/src/duckdb/extension/parquet/include/cast_column_reader.hpp +1 -1
- package/src/duckdb/extension/parquet/include/column_reader.hpp +5 -4
- package/src/duckdb/extension/parquet/include/column_writer.hpp +24 -0
- package/src/duckdb/extension/parquet/include/decode_utils.hpp +6 -0
- package/src/duckdb/extension/parquet/include/list_column_reader.hpp +1 -1
- package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +4 -4
- package/src/duckdb/extension/parquet/include/parquet_rle_bp_decoder.hpp +4 -5
- package/src/duckdb/extension/parquet/include/resizable_buffer.hpp +4 -4
- package/src/duckdb/extension/parquet/include/row_number_column_reader.hpp +1 -1
- package/src/duckdb/extension/parquet/include/struct_column_reader.hpp +1 -1
- package/src/duckdb/extension/parquet/parquet-extension.cpp +1 -1
- package/src/duckdb/extension/parquet/parquet_metadata.cpp +1 -1
- package/src/duckdb/extension/parquet/parquet_reader.cpp +18 -18
- package/src/duckdb/extension/parquet/parquet_statistics.cpp +23 -26
- package/src/duckdb/extension/parquet/parquet_timestamp.cpp +2 -2
- package/src/duckdb/extension/parquet/parquet_writer.cpp +3 -3
- package/src/duckdb/extension/parquet/zstd_file_system.cpp +3 -3
- package/src/duckdb/src/catalog/catalog.cpp +5 -21
- package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +113 -0
- package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +7 -0
- package/src/duckdb/src/catalog/catalog_entry.cpp +4 -4
- package/src/duckdb/src/catalog/catalog_search_path.cpp +49 -12
- package/src/duckdb/src/catalog/catalog_set.cpp +1 -1
- package/src/duckdb/src/catalog/default/default_types.cpp +9 -84
- package/src/duckdb/src/catalog/dependency_manager.cpp +2 -2
- package/src/duckdb/src/catalog/duck_catalog.cpp +1 -0
- package/src/duckdb/src/common/adbc/adbc.cpp +301 -106
- package/src/duckdb/src/common/adbc/driver_manager.cpp +10 -22
- package/src/duckdb/src/common/arrow/arrow_appender.cpp +12 -12
- package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +7 -7
- package/src/duckdb/src/common/checksum.cpp +1 -1
- package/src/duckdb/src/common/compressed_file_system.cpp +6 -6
- package/src/duckdb/src/common/crypto/md5.cpp +9 -9
- package/src/duckdb/src/common/exception.cpp +4 -1
- package/src/duckdb/src/common/exception_format_value.cpp +19 -14
- package/src/duckdb/src/common/field_writer.cpp +1 -1
- package/src/duckdb/src/common/file_system.cpp +15 -2
- package/src/duckdb/src/common/fsst.cpp +11 -6
- package/src/duckdb/src/common/gzip_file_system.cpp +8 -8
- package/src/duckdb/src/common/hive_partitioning.cpp +1 -1
- package/src/duckdb/src/common/local_file_system.cpp +11 -11
- package/src/duckdb/src/common/operator/cast_operators.cpp +1 -1
- package/src/duckdb/src/common/pipe_file_system.cpp +2 -2
- package/src/duckdb/src/common/radix_partitioning.cpp +2 -2
- package/src/duckdb/src/common/row_operations/row_heap_gather.cpp +1 -1
- package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +5 -5
- package/src/duckdb/src/common/row_operations/row_match.cpp +1 -1
- package/src/duckdb/src/common/row_operations/row_radix_scatter.cpp +2 -2
- package/src/duckdb/src/common/row_operations/row_scatter.cpp +4 -4
- package/src/duckdb/src/common/serializer/binary_deserializer.cpp +1 -1
- package/src/duckdb/src/common/serializer/binary_serializer.cpp +3 -3
- package/src/duckdb/src/common/serializer.cpp +1 -1
- package/src/duckdb/src/common/sort/comparators.cpp +1 -1
- package/src/duckdb/src/common/sort/merge_sorter.cpp +7 -2
- package/src/duckdb/src/common/sort/partition_state.cpp +2 -2
- package/src/duckdb/src/common/types/bit.cpp +5 -5
- package/src/duckdb/src/common/types/blob.cpp +8 -8
- package/src/duckdb/src/common/types/column/column_data_allocator.cpp +4 -4
- package/src/duckdb/src/common/types/column/column_data_collection.cpp +3 -3
- package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +1 -1
- package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +2 -2
- package/src/duckdb/src/common/types/hash.cpp +2 -2
- package/src/duckdb/src/common/types/hyperloglog.cpp +22 -21
- package/src/duckdb/src/common/types/list_segment.cpp +77 -49
- package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +1 -1
- package/src/duckdb/src/common/types/row/row_data_collection_scanner.cpp +5 -4
- package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +5 -3
- package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +59 -24
- package/src/duckdb/src/common/types/string_heap.cpp +1 -1
- package/src/duckdb/src/common/types/value.cpp +3 -2
- package/src/duckdb/src/common/types/vector.cpp +101 -101
- package/src/duckdb/src/common/types/vector_cache.cpp +6 -6
- package/src/duckdb/src/common/types/vector_constants.cpp +2 -1
- package/src/duckdb/src/common/types.cpp +44 -33
- package/src/duckdb/src/common/vector_operations/boolean_operators.cpp +2 -2
- package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +12 -12
- package/src/duckdb/src/common/vector_operations/vector_hash.cpp +13 -11
- package/src/duckdb/src/common/vector_operations/vector_storage.cpp +1 -1
- package/src/duckdb/src/core_functions/aggregate/algebraic/avg.cpp +30 -33
- package/src/duckdb/src/core_functions/aggregate/algebraic/covar.cpp +0 -4
- package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +32 -36
- package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +53 -66
- package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +48 -48
- package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +44 -44
- package/src/duckdb/src/core_functions/aggregate/distributive/bool.cpp +32 -32
- package/src/duckdb/src/core_functions/aggregate/distributive/entropy.cpp +34 -34
- package/src/duckdb/src/core_functions/aggregate/distributive/kurtosis.cpp +30 -31
- package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +91 -103
- package/src/duckdb/src/core_functions/aggregate/distributive/product.cpp +17 -17
- package/src/duckdb/src/core_functions/aggregate/distributive/skew.cpp +25 -27
- package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +36 -37
- package/src/duckdb/src/core_functions/aggregate/distributive/sum.cpp +22 -22
- package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +48 -84
- package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +49 -51
- package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +97 -121
- package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +62 -99
- package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +24 -26
- package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +22 -23
- package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +16 -18
- package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +22 -25
- package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +19 -24
- package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +18 -23
- package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +14 -18
- package/src/duckdb/src/core_functions/function_list.cpp +1 -0
- package/src/duckdb/src/core_functions/scalar/blob/base64.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +45 -45
- package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +2 -2
- package/src/duckdb/src/core_functions/scalar/generic/current_setting.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/generic/least.cpp +2 -2
- package/src/duckdb/src/core_functions/scalar/generic/stats.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/generic/system_functions.cpp +14 -0
- package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +3 -3
- package/src/duckdb/src/core_functions/scalar/list/flatten.cpp +2 -4
- package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +3 -3
- package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +6 -7
- package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/map/cardinality.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/map/map.cpp +2 -2
- package/src/duckdb/src/core_functions/scalar/map/map_concat.cpp +4 -1
- package/src/duckdb/src/core_functions/scalar/map/map_extract.cpp +5 -9
- package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +3 -3
- package/src/duckdb/src/core_functions/scalar/string/starts_with.cpp +3 -2
- package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +4 -4
- package/src/duckdb/src/core_functions/scalar/string/trim.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/union/union_extract.cpp +1 -1
- package/src/duckdb/src/execution/adaptive_filter.cpp +1 -1
- package/src/duckdb/src/execution/expression_executor/execute_case.cpp +10 -10
- package/src/duckdb/src/execution/expression_executor/execute_conjunction.cpp +7 -7
- package/src/duckdb/src/execution/expression_executor.cpp +33 -28
- package/src/duckdb/src/execution/index/art/art.cpp +30 -32
- package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +3 -4
- package/src/duckdb/src/execution/join_hashtable.cpp +4 -4
- package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_inner.cpp +4 -4
- package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_mark.cpp +2 -2
- package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +1 -1
- package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +1 -1
- package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +2 -2
- package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +4 -4
- package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +1 -1
- package/src/duckdb/src/execution/operator/helper/physical_reset.cpp +5 -2
- package/src/duckdb/src/execution/operator/helper/physical_set.cpp +5 -1
- package/src/duckdb/src/execution/operator/join/outer_join_marker.cpp +1 -1
- package/src/duckdb/src/execution/operator/join/perfect_hash_join_executor.cpp +1 -1
- package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +2 -2
- package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +4 -4
- package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +3 -3
- package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +3 -3
- package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +3 -3
- package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +1 -1
- package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +2 -2
- package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +2 -2
- package/src/duckdb/src/execution/operator/persistent/csv_reader_options.cpp +2 -0
- package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +2 -3
- package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -1
- package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +2 -2
- package/src/duckdb/src/execution/operator/projection/physical_projection.cpp +1 -1
- package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +3 -3
- package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +2 -1
- package/src/duckdb/src/execution/operator/scan/physical_expression_scan.cpp +1 -1
- package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +2 -2
- package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +1 -1
- package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +1 -1
- package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +1 -1
- package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +1 -1
- package/src/duckdb/src/execution/physical_plan_generator.cpp +2 -2
- package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +1 -1
- package/src/duckdb/src/execution/reservoir_sample.cpp +2 -2
- package/src/duckdb/src/execution/window_segment_tree.cpp +8 -6
- package/src/duckdb/src/function/aggregate/distributive/count.cpp +158 -20
- package/src/duckdb/src/function/aggregate/distributive/first.cpp +66 -74
- package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +13 -13
- package/src/duckdb/src/function/cast/cast_function_set.cpp +1 -1
- package/src/duckdb/src/function/cast/decimal_cast.cpp +1 -1
- package/src/duckdb/src/function/cast/enum_casts.cpp +2 -2
- package/src/duckdb/src/function/cast/string_cast.cpp +11 -11
- package/src/duckdb/src/function/cast/union_casts.cpp +2 -2
- package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +3 -2
- package/src/duckdb/src/function/pragma/pragma_queries.cpp +33 -23
- package/src/duckdb/src/function/scalar/generic/constant_or_null.cpp +1 -1
- package/src/duckdb/src/function/scalar/list/list_concat.cpp +2 -2
- package/src/duckdb/src/function/scalar/list/list_extract.cpp +3 -3
- package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +2 -3
- package/src/duckdb/src/function/scalar/string/concat.cpp +8 -7
- package/src/duckdb/src/function/scalar/string/contains.cpp +4 -4
- package/src/duckdb/src/function/scalar/string/like.cpp +5 -5
- package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +4 -4
- package/src/duckdb/src/function/scalar/string/regexp.cpp +3 -3
- package/src/duckdb/src/function/scalar/string/strip_accents.cpp +1 -1
- package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +1 -1
- package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +25 -23
- package/src/duckdb/src/function/scalar_function.cpp +3 -3
- package/src/duckdb/src/function/table/arrow.cpp +6 -6
- package/src/duckdb/src/function/table/arrow_conversion.cpp +67 -61
- package/src/duckdb/src/function/table/checkpoint.cpp +1 -1
- package/src/duckdb/src/function/table/copy_csv.cpp +11 -7
- package/src/duckdb/src/function/table/glob.cpp +1 -1
- package/src/duckdb/src/function/table/pragma_last_profiling_output.cpp +1 -1
- package/src/duckdb/src/function/table/range.cpp +4 -4
- package/src/duckdb/src/function/table/read_csv.cpp +15 -23
- package/src/duckdb/src/function/table/repeat.cpp +2 -2
- package/src/duckdb/src/function/table/repeat_row.cpp +10 -3
- package/src/duckdb/src/function/table/system/duckdb_functions.cpp +1 -1
- package/src/duckdb/src/function/table/system/test_vector_types.cpp +1 -1
- package/src/duckdb/src/function/table/table_scan.cpp +2 -2
- package/src/duckdb/src/function/table/unnest.cpp +1 -1
- package/src/duckdb/src/function/table/version/pragma_version.cpp +3 -3
- package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +2 -5
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +2 -0
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +6 -0
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +2 -2
- package/src/duckdb/src/include/duckdb/catalog/catalog_search_path.hpp +8 -2
- package/src/duckdb/src/include/duckdb/catalog/default/builtin_types/types.hpp +97 -0
- package/src/duckdb/src/include/duckdb/common/adbc/adbc.hpp +5 -0
- package/src/duckdb/src/include/duckdb/common/allocator.hpp +15 -4
- package/src/duckdb/src/include/duckdb/common/arrow/arrow_buffer.hpp +7 -2
- package/src/duckdb/src/include/duckdb/common/crypto/md5.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/exception.hpp +5 -2
- package/src/duckdb/src/include/duckdb/common/field_writer.hpp +3 -3
- package/src/duckdb/src/include/duckdb/common/file_system.hpp +11 -0
- package/src/duckdb/src/include/duckdb/common/fsst.hpp +2 -3
- package/src/duckdb/src/include/duckdb/common/radix.hpp +3 -3
- package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +4 -1
- package/src/duckdb/src/include/duckdb/common/serializer.hpp +4 -4
- package/src/duckdb/src/include/duckdb/common/typedefs.hpp +30 -0
- package/src/duckdb/src/include/duckdb/common/types/column/partitioned_column_data.hpp +12 -0
- package/src/duckdb/src/include/duckdb/common/types/hyperloglog.hpp +6 -2
- package/src/duckdb/src/include/duckdb/common/types/null_value.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +12 -0
- package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +10 -10
- package/src/duckdb/src/include/duckdb/common/types/value.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/vector.hpp +9 -0
- package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +18 -6
- package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +112 -76
- package/src/duckdb/src/include/duckdb/common/vector_operations/binary_executor.hpp +16 -15
- package/src/duckdb/src/include/duckdb/common/vector_operations/generic_executor.hpp +11 -11
- package/src/duckdb/src/include/duckdb/common/vector_operations/ternary_executor.hpp +23 -19
- package/src/duckdb/src/include/duckdb/common/vector_operations/unary_executor.hpp +3 -3
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/corr.hpp +20 -24
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +36 -39
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/stddev.hpp +57 -53
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +8 -9
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +16 -18
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +7 -8
- package/src/duckdb/src/include/duckdb/core_functions/scalar/generic_functions.hpp +9 -0
- package/src/duckdb/src/include/duckdb/core_functions/scalar/map_functions.hpp +2 -6
- package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +16 -36
- package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +14 -2
- package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +3 -3
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_result_collector.hpp +3 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_buffer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +5 -2
- package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +12 -12
- package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +8 -29
- package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +95 -0
- package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +13 -2
- package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +4 -4
- package/src/duckdb/src/include/duckdb/function/compression_function.hpp +44 -0
- package/src/duckdb/src/include/duckdb/function/copy_function.hpp +6 -6
- package/src/duckdb/src/include/duckdb/function/function.hpp +3 -3
- package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +3 -1
- package/src/duckdb/src/include/duckdb/function/macro_function.hpp +2 -2
- package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +3 -3
- package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +2 -2
- package/src/duckdb/src/include/duckdb/function/table_function.hpp +6 -6
- package/src/duckdb/src/include/duckdb/main/capi/cast/utils.hpp +1 -1
- package/src/duckdb/src/include/duckdb/main/config.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +3 -0
- package/src/duckdb/src/include/duckdb/main/pending_query_result.hpp +3 -0
- package/src/duckdb/src/include/duckdb/main/query_result.hpp +17 -0
- package/src/duckdb/src/include/duckdb/main/relation.hpp +12 -0
- package/src/duckdb/src/include/duckdb/main/settings.hpp +9 -0
- package/src/duckdb/src/include/duckdb/main/stream_query_result.hpp +3 -0
- package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +6 -12
- package/src/duckdb/src/include/duckdb/parser/constraint.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression_map.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +5 -1
- package/src/duckdb/src/include/duckdb/parser/parser.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +36 -5
- package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +7 -4
- package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref.hpp +4 -3
- package/src/duckdb/src/include/duckdb/parser/transformer.hpp +107 -91
- package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/bound_query_node.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +34 -1
- package/src/duckdb/src/include/duckdb/planner/bound_tableref.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_case_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_columnref_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_conjunction_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_constant_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_operator_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_reference_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_subquery_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_unnest_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression.hpp +5 -7
- package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +6 -0
- package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/filter/null_filter.hpp +6 -0
- package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +26 -0
- package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +17 -0
- package/src/duckdb/src/include/duckdb/planner/tableref/bound_pivotref.hpp +3 -0
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_analyze.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/patas/patas_analyze.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/index.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +12 -0
- package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +25 -2
- package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +12 -0
- package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +22 -0
- package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +2 -2
- package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +2 -2
- package/src/duckdb/src/main/capi/appender-c.cpp +5 -5
- package/src/duckdb/src/main/capi/arrow-c.cpp +10 -10
- package/src/duckdb/src/main/capi/cast/from_decimal-c.cpp +1 -1
- package/src/duckdb/src/main/capi/cast/utils-c.cpp +1 -1
- package/src/duckdb/src/main/capi/config-c.cpp +1 -1
- package/src/duckdb/src/main/capi/data_chunk-c.cpp +17 -17
- package/src/duckdb/src/main/capi/duckdb-c.cpp +4 -4
- package/src/duckdb/src/main/capi/duckdb_value-c.cpp +4 -4
- package/src/duckdb/src/main/capi/logical_types-c.cpp +22 -21
- package/src/duckdb/src/main/capi/pending-c.cpp +6 -6
- package/src/duckdb/src/main/capi/prepared-c.cpp +10 -10
- package/src/duckdb/src/main/capi/replacement_scan-c.cpp +6 -6
- package/src/duckdb/src/main/capi/result-c.cpp +23 -23
- package/src/duckdb/src/main/capi/table_function-c.cpp +1 -1
- package/src/duckdb/src/main/client_context.cpp +3 -3
- package/src/duckdb/src/main/config.cpp +1 -0
- package/src/duckdb/src/main/database_manager.cpp +1 -1
- package/src/duckdb/src/main/error_manager.cpp +1 -1
- package/src/duckdb/src/main/extension/extension_load.cpp +1 -1
- package/src/duckdb/src/main/relation/create_table_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/create_view_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/delete_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/explain_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/insert_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/update_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/write_csv_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/write_parquet_relation.cpp +1 -1
- package/src/duckdb/src/main/relation.cpp +1 -1
- package/src/duckdb/src/main/settings/settings.cpp +22 -6
- package/src/duckdb/src/optimizer/deliminator.cpp +12 -12
- package/src/duckdb/src/optimizer/expression_heuristics.cpp +1 -0
- package/src/duckdb/src/optimizer/filter_combiner.cpp +3 -3
- package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +10 -10
- package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +4 -7
- package/src/duckdb/src/optimizer/matcher/expression_matcher.cpp +1 -1
- package/src/duckdb/src/optimizer/pullup/pullup_projection.cpp +2 -2
- package/src/duckdb/src/optimizer/regex_range_filter.cpp +2 -4
- package/src/duckdb/src/optimizer/rule/distributivity.cpp +2 -2
- package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +6 -6
- package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +2 -2
- package/src/duckdb/src/parallel/executor.cpp +1 -1
- package/src/duckdb/src/parser/base_expression.cpp +2 -5
- package/src/duckdb/src/parser/column_definition.cpp +5 -8
- package/src/duckdb/src/parser/expression/between_expression.cpp +4 -4
- package/src/duckdb/src/parser/expression/case_expression.cpp +6 -6
- package/src/duckdb/src/parser/expression/cast_expression.cpp +4 -4
- package/src/duckdb/src/parser/expression/collate_expression.cpp +3 -3
- package/src/duckdb/src/parser/expression/columnref_expression.cpp +4 -4
- package/src/duckdb/src/parser/expression/comparison_expression.cpp +3 -3
- package/src/duckdb/src/parser/expression/conjunction_expression.cpp +2 -2
- package/src/duckdb/src/parser/expression/constant_expression.cpp +2 -2
- package/src/duckdb/src/parser/expression/function_expression.cpp +10 -14
- package/src/duckdb/src/parser/expression/lambda_expression.cpp +2 -2
- package/src/duckdb/src/parser/expression/operator_expression.cpp +4 -4
- package/src/duckdb/src/parser/expression/parameter_expression.cpp +2 -2
- package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +3 -3
- package/src/duckdb/src/parser/expression/star_expression.cpp +9 -9
- package/src/duckdb/src/parser/expression/subquery_expression.cpp +5 -5
- package/src/duckdb/src/parser/expression/window_expression.cpp +13 -24
- package/src/duckdb/src/parser/parsed_expression.cpp +34 -18
- package/src/duckdb/src/parser/parsed_expression_iterator.cpp +4 -4
- package/src/duckdb/src/parser/parser.cpp +4 -4
- package/src/duckdb/src/parser/query_node/select_node.cpp +6 -13
- package/src/duckdb/src/parser/query_node.cpp +7 -6
- package/src/duckdb/src/parser/result_modifier.cpp +25 -18
- package/src/duckdb/src/parser/statement/select_statement.cpp +3 -3
- package/src/duckdb/src/parser/tableref/basetableref.cpp +4 -4
- package/src/duckdb/src/parser/tableref/emptytableref.cpp +1 -1
- package/src/duckdb/src/parser/tableref/expressionlistref.cpp +5 -5
- package/src/duckdb/src/parser/tableref/joinref.cpp +6 -6
- package/src/duckdb/src/parser/tableref/pivotref.cpp +10 -15
- package/src/duckdb/src/parser/tableref/subqueryref.cpp +3 -3
- package/src/duckdb/src/parser/tableref/table_function.cpp +3 -3
- package/src/duckdb/src/parser/tableref.cpp +12 -3
- package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +7 -7
- package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +4 -4
- package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +4 -4
- package/src/duckdb/src/parser/transform/expression/transform_case.cpp +8 -10
- package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +7 -9
- package/src/duckdb/src/parser/transform/expression/transform_coalesce.cpp +3 -5
- package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +22 -22
- package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +2 -2
- package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +42 -44
- package/src/duckdb/src/parser/transform/expression/transform_function.cpp +70 -75
- package/src/duckdb/src/parser/transform/expression/transform_grouping_function.cpp +4 -4
- package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +7 -7
- package/src/duckdb/src/parser/transform/expression/transform_is_null.cpp +4 -5
- package/src/duckdb/src/parser/transform/expression/transform_lambda.cpp +5 -6
- package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +28 -29
- package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +13 -14
- package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +4 -4
- package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +9 -10
- package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +28 -32
- package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +18 -18
- package/src/duckdb/src/parser/transform/helpers/transform_sample.cpp +3 -3
- package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +27 -26
- package/src/duckdb/src/parser/transform/statement/transform_alter_sequence.cpp +11 -14
- package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +14 -16
- package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +8 -9
- package/src/duckdb/src/parser/transform/statement/transform_call.cpp +2 -5
- package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +4 -6
- package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +22 -23
- package/src/duckdb/src/parser/transform/statement/transform_create_database.cpp +3 -4
- package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +14 -18
- package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +13 -15
- package/src/duckdb/src/parser/transform/statement/transform_create_schema.cpp +8 -10
- package/src/duckdb/src/parser/transform/statement/transform_create_sequence.cpp +8 -10
- package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +26 -28
- package/src/duckdb/src/parser/transform/statement/transform_create_table_as.cpp +8 -10
- package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +12 -15
- package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +13 -18
- package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +11 -13
- package/src/duckdb/src/parser/transform/statement/transform_detach.cpp +3 -4
- package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +20 -22
- package/src/duckdb/src/parser/transform/statement/transform_explain.cpp +5 -7
- package/src/duckdb/src/parser/transform/statement/transform_export.cpp +5 -6
- package/src/duckdb/src/parser/transform/statement/transform_import.cpp +2 -3
- package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +21 -24
- package/src/duckdb/src/parser/transform/statement/transform_load.cpp +4 -5
- package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +7 -7
- package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +7 -9
- package/src/duckdb/src/parser/transform/statement/transform_prepare.cpp +11 -19
- package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +12 -14
- package/src/duckdb/src/parser/transform/statement/transform_select.cpp +12 -9
- package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +34 -34
- package/src/duckdb/src/parser/transform/statement/transform_set.cpp +18 -19
- package/src/duckdb/src/parser/transform/statement/transform_show.cpp +5 -7
- package/src/duckdb/src/parser/transform/statement/transform_show_select.cpp +4 -5
- package/src/duckdb/src/parser/transform/statement/transform_transaction.cpp +3 -5
- package/src/duckdb/src/parser/transform/statement/transform_update.cpp +10 -13
- package/src/duckdb/src/parser/transform/statement/transform_upsert.cpp +4 -4
- package/src/duckdb/src/parser/transform/statement/transform_use.cpp +2 -3
- package/src/duckdb/src/parser/transform/statement/transform_vacuum.cpp +6 -10
- package/src/duckdb/src/parser/transform/tableref/transform_base_tableref.cpp +18 -18
- package/src/duckdb/src/parser/transform/tableref/transform_from.cpp +5 -5
- package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +11 -11
- package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +30 -27
- package/src/duckdb/src/parser/transform/tableref/transform_subquery.cpp +5 -5
- package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +13 -12
- package/src/duckdb/src/parser/transform/tableref/transform_tableref.cpp +8 -8
- package/src/duckdb/src/parser/transformer.cpp +46 -46
- package/src/duckdb/src/planner/bind_context.cpp +9 -10
- package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +1 -1
- package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +1 -1
- package/src/duckdb/src/planner/binder/expression/bind_positional_reference_expression.cpp +7 -2
- package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +1 -1
- package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +6 -3
- package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +8 -8
- package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +4 -4
- package/src/duckdb/src/planner/binder/statement/bind_create.cpp +13 -5
- package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +2 -2
- package/src/duckdb/src/planner/binder/statement/bind_update.cpp +2 -114
- package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +4 -2
- package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +17 -7
- package/src/duckdb/src/planner/binder.cpp +1 -1
- package/src/duckdb/src/planner/bound_result_modifier.cpp +16 -11
- package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +5 -5
- package/src/duckdb/src/planner/expression/bound_between_expression.cpp +5 -5
- package/src/duckdb/src/planner/expression/bound_case_expression.cpp +5 -5
- package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +3 -3
- package/src/duckdb/src/planner/expression/bound_columnref_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_comparison_expression.cpp +4 -4
- package/src/duckdb/src/planner/expression/bound_conjunction_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_constant_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_expression.cpp +1 -1
- package/src/duckdb/src/planner/expression/bound_function_expression.cpp +3 -4
- package/src/duckdb/src/planner/expression/bound_lambda_expression.cpp +4 -5
- package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_operator_expression.cpp +3 -4
- package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_reference_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_subquery_expression.cpp +1 -1
- package/src/duckdb/src/planner/expression/bound_unnest_expression.cpp +3 -3
- package/src/duckdb/src/planner/expression/bound_window_expression.cpp +8 -21
- package/src/duckdb/src/planner/expression.cpp +15 -0
- package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +2 -2
- package/src/duckdb/src/planner/expression_binder.cpp +3 -2
- package/src/duckdb/src/planner/expression_iterator.cpp +2 -2
- package/src/duckdb/src/planner/filter/conjunction_filter.cpp +2 -2
- package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -1
- package/src/duckdb/src/planner/logical_operator.cpp +3 -4
- package/src/duckdb/src/planner/logical_operator_visitor.cpp +1 -1
- package/src/duckdb/src/planner/table_filter.cpp +1 -1
- package/src/duckdb/src/storage/arena_allocator.cpp +2 -2
- package/src/duckdb/src/storage/buffer/block_handle.cpp +1 -1
- package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +2 -2
- package/src/duckdb/src/storage/checkpoint_manager.cpp +3 -3
- package/src/duckdb/src/storage/compression/bitpacking.cpp +8 -8
- package/src/duckdb/src/storage/compression/dictionary_compression.cpp +36 -36
- package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +11 -11
- package/src/duckdb/src/storage/compression/fsst.cpp +34 -34
- package/src/duckdb/src/storage/compression/rle.cpp +8 -8
- package/src/duckdb/src/storage/compression/string_uncompressed.cpp +13 -13
- package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +11 -11
- package/src/duckdb/src/storage/data_table.cpp +8 -7
- package/src/duckdb/src/storage/index.cpp +1 -3
- package/src/duckdb/src/storage/local_storage.cpp +2 -1
- package/src/duckdb/src/storage/magic_bytes.cpp +1 -1
- package/src/duckdb/src/storage/single_file_block_manager.cpp +3 -3
- package/src/duckdb/src/storage/standard_buffer_manager.cpp +3 -3
- package/src/duckdb/src/storage/statistics/list_stats.cpp +1 -1
- package/src/duckdb/src/storage/statistics/numeric_stats.cpp +1 -1
- package/src/duckdb/src/storage/statistics/string_stats.cpp +15 -14
- package/src/duckdb/src/storage/table/chunk_info.cpp +2 -2
- package/src/duckdb/src/storage/table/column_segment.cpp +3 -3
- package/src/duckdb/src/storage/table/list_column_data.cpp +8 -7
- package/src/duckdb/src/storage/table/row_group.cpp +4 -4
- package/src/duckdb/src/storage/table/standard_column_data.cpp +1 -1
- package/src/duckdb/src/storage/table/update_segment.cpp +12 -12
- package/src/duckdb/src/storage/wal_replay.cpp +5 -6
- package/src/duckdb/src/transaction/cleanup_state.cpp +3 -3
- package/src/duckdb/src/transaction/commit_state.cpp +8 -8
- package/src/duckdb/src/transaction/duck_transaction.cpp +9 -7
- package/src/duckdb/src/transaction/duck_transaction_manager.cpp +16 -16
- package/src/duckdb/src/transaction/rollback_state.cpp +3 -3
- package/src/duckdb/src/verification/prepared_statement_verifier.cpp +1 -1
- package/src/duckdb/src/verification/statement_verifier.cpp +3 -4
- package/src/duckdb/third_party/hyperloglog/hyperloglog.hpp +2 -2
- package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +13479 -13564
- package/src/duckdb/third_party/pcg/pcg_extras.hpp +1 -1
- package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +5 -5
@@ -5,14 +5,17 @@
|
|
5
5
|
#include "duckdb/common/string_util.hpp"
|
6
6
|
|
7
7
|
#include "duckdb.h"
|
8
|
-
#include "duckdb/main/connection.hpp"
|
9
8
|
#include "duckdb/common/arrow/arrow_wrapper.hpp"
|
10
9
|
#include "duckdb/common/arrow/arrow.hpp"
|
11
10
|
|
11
|
+
#ifndef DUCKDB_AMALGAMATION
|
12
|
+
#include "duckdb/main/connection.hpp"
|
13
|
+
#endif
|
14
|
+
|
12
15
|
#include <string.h>
|
13
16
|
#include <stdlib.h>
|
14
17
|
|
15
|
-
// We
|
18
|
+
// We must leak the symbols of the init function
|
16
19
|
duckdb_adbc::AdbcStatusCode duckdb_adbc_init(size_t count, struct duckdb_adbc::AdbcDriver *driver,
|
17
20
|
struct duckdb_adbc::AdbcError *error) {
|
18
21
|
if (!driver) {
|
@@ -37,27 +40,24 @@ duckdb_adbc::AdbcStatusCode duckdb_adbc_init(size_t count, struct duckdb_adbc::A
|
|
37
40
|
driver->StatementSetOption = duckdb_adbc::StatementSetOption;
|
38
41
|
driver->StatementSetSqlQuery = duckdb_adbc::StatementSetSqlQuery;
|
39
42
|
driver->ConnectionGetObjects = duckdb_adbc::ConnectionGetObjects;
|
43
|
+
driver->ConnectionCommit = duckdb_adbc::ConnectionCommit;
|
44
|
+
driver->ConnectionRollback = duckdb_adbc::ConnectionRollback;
|
45
|
+
driver->ConnectionReadPartition = duckdb_adbc::ConnectionReadPartition;
|
46
|
+
driver->StatementExecutePartitions = duckdb_adbc::StatementExecutePartitions;
|
40
47
|
return ADBC_STATUS_OK;
|
41
48
|
}
|
42
49
|
|
43
50
|
namespace duckdb_adbc {
|
44
|
-
|
45
|
-
if (!
|
46
|
-
|
47
|
-
e->message = strdup(m); /* TODO Set cleanup callback */ \
|
48
|
-
} \
|
49
|
-
return ADBC_STATUS_INVALID_ARGUMENT; \
|
51
|
+
AdbcStatusCode SetErrorMaybe(const void *result, AdbcError *error, const std::string &error_message) {
|
52
|
+
if (!error) {
|
53
|
+
return ADBC_STATUS_INVALID_ARGUMENT;
|
50
54
|
}
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
if (e) { \
|
55
|
-
e->message = strdup(m); \
|
56
|
-
} \
|
57
|
-
return ADBC_STATUS_INTERNAL; \
|
58
|
-
} else { \
|
59
|
-
return ADBC_STATUS_OK; \
|
55
|
+
if (!result) {
|
56
|
+
SetError(error, error_message);
|
57
|
+
return ADBC_STATUS_INVALID_ARGUMENT;
|
60
58
|
}
|
59
|
+
return ADBC_STATUS_OK;
|
60
|
+
}
|
61
61
|
|
62
62
|
struct DuckDBAdbcDatabaseWrapper {
|
63
63
|
//! The DuckDB Database Configuration
|
@@ -68,25 +68,58 @@ struct DuckDBAdbcDatabaseWrapper {
|
|
68
68
|
std::string path;
|
69
69
|
};
|
70
70
|
|
71
|
-
|
72
|
-
|
71
|
+
void InitiliazeADBCError(AdbcError *error) {
|
72
|
+
if (!error) {
|
73
|
+
return;
|
74
|
+
}
|
75
|
+
error->message = nullptr;
|
76
|
+
error->release = nullptr;
|
77
|
+
std::memset(error->sqlstate, '\0', sizeof(error->sqlstate));
|
78
|
+
error->vendor_code = -1;
|
79
|
+
}
|
73
80
|
|
81
|
+
AdbcStatusCode CheckResult(duckdb_state &res, AdbcError *error, const char *error_msg) {
|
82
|
+
if (!error) {
|
83
|
+
// Error should be a non-null pointer
|
84
|
+
return ADBC_STATUS_INVALID_ARGUMENT;
|
85
|
+
}
|
86
|
+
if (res != DuckDBSuccess) {
|
87
|
+
duckdb_adbc::SetError(error, error_msg);
|
88
|
+
return ADBC_STATUS_INTERNAL;
|
89
|
+
}
|
90
|
+
return ADBC_STATUS_OK;
|
91
|
+
}
|
92
|
+
|
93
|
+
AdbcStatusCode DatabaseNew(struct AdbcDatabase *database, struct AdbcError *error) {
|
94
|
+
auto status = SetErrorMaybe(database, error, "Missing database object");
|
95
|
+
if (status != ADBC_STATUS_OK) {
|
96
|
+
return status;
|
97
|
+
}
|
74
98
|
database->private_data = nullptr;
|
75
99
|
// you can't malloc a struct with a non-trivial C++ constructor
|
76
100
|
// and std::string has a non-trivial constructor. so we need
|
77
101
|
// to use new and delete rather than malloc and free.
|
78
102
|
auto wrapper = new DuckDBAdbcDatabaseWrapper;
|
79
|
-
|
80
|
-
|
103
|
+
status = SetErrorMaybe(wrapper, error, "Allocation error");
|
104
|
+
if (status != ADBC_STATUS_OK) {
|
105
|
+
return status;
|
106
|
+
}
|
81
107
|
database->private_data = wrapper;
|
82
108
|
auto res = duckdb_create_config(&wrapper->config);
|
83
|
-
|
109
|
+
return CheckResult(res, error, "Failed to allocate");
|
84
110
|
}
|
85
111
|
|
86
112
|
AdbcStatusCode DatabaseSetOption(struct AdbcDatabase *database, const char *key, const char *value,
|
87
113
|
struct AdbcError *error) {
|
88
|
-
|
89
|
-
|
114
|
+
auto status = SetErrorMaybe(database, error, "Missing database object");
|
115
|
+
if (status != ADBC_STATUS_OK) {
|
116
|
+
return status;
|
117
|
+
}
|
118
|
+
|
119
|
+
status = SetErrorMaybe(key, error, "Missing key");
|
120
|
+
if (status != ADBC_STATUS_OK) {
|
121
|
+
return status;
|
122
|
+
}
|
90
123
|
|
91
124
|
auto wrapper = (DuckDBAdbcDatabaseWrapper *)database->private_data;
|
92
125
|
if (strcmp(key, "path") == 0) {
|
@@ -95,17 +128,22 @@ AdbcStatusCode DatabaseSetOption(struct AdbcDatabase *database, const char *key,
|
|
95
128
|
}
|
96
129
|
auto res = duckdb_set_config(wrapper->config, key, value);
|
97
130
|
|
98
|
-
|
131
|
+
return CheckResult(res, error, "Failed to set configuration option");
|
99
132
|
}
|
100
133
|
|
101
134
|
AdbcStatusCode DatabaseInit(struct AdbcDatabase *database, struct AdbcError *error) {
|
135
|
+
if (!error) {
|
136
|
+
return ADBC_STATUS_INVALID_ARGUMENT;
|
137
|
+
}
|
138
|
+
if (!database) {
|
139
|
+
duckdb_adbc::SetError(error, "ADBC Database has an invalid pointer");
|
140
|
+
return ADBC_STATUS_INVALID_ARGUMENT;
|
141
|
+
}
|
102
142
|
char *errormsg;
|
103
143
|
// TODO can we set the database path via option, too? Does not look like it...
|
104
144
|
auto wrapper = (DuckDBAdbcDatabaseWrapper *)database->private_data;
|
105
145
|
auto res = duckdb_open_ext(wrapper->path.c_str(), &wrapper->database, wrapper->config, &errormsg);
|
106
|
-
|
107
|
-
// TODO this leaks memory because errormsg is malloc-ed
|
108
|
-
CHECK_RES(res, error, errormsg);
|
146
|
+
return CheckResult(res, error, errormsg);
|
109
147
|
}
|
110
148
|
|
111
149
|
AdbcStatusCode DatabaseRelease(struct AdbcDatabase *database, struct AdbcError *error) {
|
@@ -122,28 +160,134 @@ AdbcStatusCode DatabaseRelease(struct AdbcDatabase *database, struct AdbcError *
|
|
122
160
|
}
|
123
161
|
|
124
162
|
AdbcStatusCode ConnectionNew(struct AdbcConnection *connection, struct AdbcError *error) {
|
163
|
+
auto status = SetErrorMaybe(connection, error, "Missing connection object");
|
164
|
+
if (status != ADBC_STATUS_OK) {
|
165
|
+
return status;
|
166
|
+
}
|
125
167
|
|
126
|
-
CHECK_TRUE(connection, error, "Missing connection object");
|
127
168
|
connection->private_data = nullptr;
|
128
169
|
return ADBC_STATUS_OK;
|
129
170
|
}
|
130
171
|
|
172
|
+
AdbcStatusCode ExecuteQuery(duckdb::Connection *conn, const char *query, struct AdbcError *error) {
|
173
|
+
auto res = conn->Query(query);
|
174
|
+
if (res->HasError()) {
|
175
|
+
auto error_message = "Failed to execute query \"" + std::string(query) + "\": " + res->GetError();
|
176
|
+
SetError(error, error_message);
|
177
|
+
return ADBC_STATUS_INTERNAL;
|
178
|
+
}
|
179
|
+
return ADBC_STATUS_OK;
|
180
|
+
}
|
181
|
+
|
131
182
|
AdbcStatusCode ConnectionSetOption(struct AdbcConnection *connection, const char *key, const char *value,
|
132
183
|
struct AdbcError *error) {
|
133
|
-
|
134
|
-
|
184
|
+
if (!connection) {
|
185
|
+
SetError(error, "Connection is not set");
|
186
|
+
return ADBC_STATUS_INVALID_ARGUMENT;
|
187
|
+
}
|
188
|
+
auto conn = (duckdb::Connection *)connection->private_data;
|
189
|
+
if (strcmp(key, ADBC_CONNECTION_OPTION_AUTOCOMMIT) == 0) {
|
190
|
+
if (strcmp(value, ADBC_OPTION_VALUE_ENABLED) == 0) {
|
191
|
+
if (conn->HasActiveTransaction()) {
|
192
|
+
AdbcStatusCode status = ExecuteQuery(conn, "COMMIT", error);
|
193
|
+
if (status != ADBC_STATUS_OK) {
|
194
|
+
return status;
|
195
|
+
}
|
196
|
+
} else {
|
197
|
+
// no-op
|
198
|
+
}
|
199
|
+
} else if (strcmp(value, ADBC_OPTION_VALUE_DISABLED) == 0) {
|
200
|
+
if (conn->HasActiveTransaction()) {
|
201
|
+
// no-op
|
202
|
+
} else {
|
203
|
+
// begin
|
204
|
+
AdbcStatusCode status = ExecuteQuery(conn, "START TRANSACTION", error);
|
205
|
+
if (status != ADBC_STATUS_OK) {
|
206
|
+
return status;
|
207
|
+
}
|
208
|
+
}
|
209
|
+
} else {
|
210
|
+
auto error_message = "Invalid connection option value " + std::string(key) + "=" + std::string(value);
|
211
|
+
SetError(error, error_message);
|
212
|
+
return ADBC_STATUS_INVALID_ARGUMENT;
|
213
|
+
}
|
214
|
+
return ADBC_STATUS_OK;
|
215
|
+
}
|
216
|
+
auto error_message =
|
217
|
+
"Unknown connection option " + std::string(key) + "=" + (value ? std::string(value) : "(NULL)");
|
218
|
+
SetError(error, error_message);
|
219
|
+
return ADBC_STATUS_NOT_IMPLEMENTED;
|
220
|
+
}
|
221
|
+
|
222
|
+
AdbcStatusCode ConnectionReadPartition(struct AdbcConnection *connection, const uint8_t *serialized_partition,
|
223
|
+
size_t serialized_length, struct ArrowArrayStream *out,
|
224
|
+
struct AdbcError *error) {
|
225
|
+
SetError(error, "Read Partitions are not supported in DuckDB");
|
226
|
+
return ADBC_STATUS_NOT_IMPLEMENTED;
|
227
|
+
}
|
228
|
+
|
229
|
+
AdbcStatusCode StatementExecutePartitions(struct AdbcStatement *statement, struct ArrowSchema *schema,
|
230
|
+
struct AdbcPartitions *partitions, int64_t *rows_affected,
|
231
|
+
struct AdbcError *error) {
|
232
|
+
SetError(error, "Execute Partitions are not supported in DuckDB");
|
233
|
+
return ADBC_STATUS_NOT_IMPLEMENTED;
|
234
|
+
}
|
235
|
+
|
236
|
+
AdbcStatusCode ConnectionCommit(struct AdbcConnection *connection, struct AdbcError *error) {
|
237
|
+
if (!connection) {
|
238
|
+
SetError(error, "Connection is not set");
|
239
|
+
return ADBC_STATUS_INVALID_ARGUMENT;
|
240
|
+
}
|
241
|
+
auto conn = (duckdb::Connection *)connection->private_data;
|
242
|
+
if (!conn->HasActiveTransaction()) {
|
243
|
+
SetError(error, "No active transaction, cannot commit");
|
244
|
+
return ADBC_STATUS_INVALID_STATE;
|
245
|
+
}
|
246
|
+
|
247
|
+
AdbcStatusCode status = ExecuteQuery(conn, "COMMIT", error);
|
248
|
+
if (status != ADBC_STATUS_OK) {
|
249
|
+
return status;
|
250
|
+
}
|
251
|
+
return ExecuteQuery(conn, "START TRANSACTION", error);
|
252
|
+
}
|
253
|
+
|
254
|
+
AdbcStatusCode ConnectionRollback(struct AdbcConnection *connection, struct AdbcError *error) {
|
255
|
+
if (!connection) {
|
256
|
+
SetError(error, "Connection is not set");
|
257
|
+
return ADBC_STATUS_INVALID_ARGUMENT;
|
258
|
+
}
|
259
|
+
auto conn = (duckdb::Connection *)connection->private_data;
|
260
|
+
if (!conn->HasActiveTransaction()) {
|
261
|
+
SetError(error, "No active transaction, cannot rollback");
|
262
|
+
return ADBC_STATUS_INVALID_STATE;
|
263
|
+
}
|
264
|
+
|
265
|
+
AdbcStatusCode status = ExecuteQuery(conn, "ROLLBACK", error);
|
266
|
+
if (status != ADBC_STATUS_OK) {
|
267
|
+
return status;
|
268
|
+
}
|
269
|
+
return ExecuteQuery(conn, "START TRANSACTION", error);
|
135
270
|
}
|
136
271
|
|
137
272
|
AdbcStatusCode ConnectionInit(struct AdbcConnection *connection, struct AdbcDatabase *database,
|
138
273
|
struct AdbcError *error) {
|
139
|
-
|
140
|
-
|
141
|
-
|
274
|
+
auto status = SetErrorMaybe(database, error, "Missing database");
|
275
|
+
if (status != ADBC_STATUS_OK) {
|
276
|
+
return status;
|
277
|
+
}
|
278
|
+
status = SetErrorMaybe(database->private_data, error, "Invalid database");
|
279
|
+
if (status != ADBC_STATUS_OK) {
|
280
|
+
return status;
|
281
|
+
}
|
282
|
+
status = SetErrorMaybe(connection, error, "Missing connection");
|
283
|
+
if (status != ADBC_STATUS_OK) {
|
284
|
+
return status;
|
285
|
+
}
|
142
286
|
auto database_wrapper = (DuckDBAdbcDatabaseWrapper *)database->private_data;
|
143
287
|
|
144
288
|
connection->private_data = nullptr;
|
145
289
|
auto res = duckdb_connect(database_wrapper->database, (duckdb_connection *)&connection->private_data);
|
146
|
-
|
290
|
+
return CheckResult(res, error, "Failed to connect to Database");
|
147
291
|
}
|
148
292
|
|
149
293
|
AdbcStatusCode ConnectionRelease(struct AdbcConnection *connection, struct AdbcError *error) {
|
@@ -176,11 +320,11 @@ void release(struct ArrowArrayStream *stream) {
|
|
176
320
|
if (!stream || !stream->release) {
|
177
321
|
return;
|
178
322
|
}
|
179
|
-
stream->release = nullptr;
|
180
323
|
if (stream->private_data) {
|
181
324
|
duckdb_destroy_arrow((duckdb_arrow *)&stream->private_data);
|
182
325
|
stream->private_data = nullptr;
|
183
326
|
}
|
327
|
+
stream->release = nullptr;
|
184
328
|
}
|
185
329
|
|
186
330
|
const char *get_last_error(struct ArrowArrayStream *stream) {
|
@@ -213,19 +357,35 @@ void stream_schema(uintptr_t factory_ptr, duckdb::ArrowSchemaWrapper &schema) {
|
|
213
357
|
AdbcStatusCode Ingest(duckdb_connection connection, const char *table_name, struct ArrowArrayStream *input,
|
214
358
|
struct AdbcError *error) {
|
215
359
|
|
216
|
-
|
217
|
-
|
218
|
-
|
360
|
+
auto status = SetErrorMaybe(connection, error, "Invalid connection");
|
361
|
+
if (status != ADBC_STATUS_OK) {
|
362
|
+
return status;
|
363
|
+
}
|
364
|
+
|
365
|
+
status = SetErrorMaybe(input, error, "Missing input arrow stream pointer");
|
366
|
+
if (status != ADBC_STATUS_OK) {
|
367
|
+
return status;
|
368
|
+
}
|
219
369
|
|
370
|
+
status = SetErrorMaybe(table_name, error, "Missing database object name");
|
371
|
+
if (status != ADBC_STATUS_OK) {
|
372
|
+
return status;
|
373
|
+
}
|
374
|
+
auto cconn = (duckdb::Connection *)connection;
|
375
|
+
|
376
|
+
auto has_table = cconn->TableInfo(table_name);
|
377
|
+
auto arrow_scan = cconn->TableFunction("arrow_scan", {duckdb::Value::POINTER((uintptr_t)input),
|
378
|
+
duckdb::Value::POINTER((uintptr_t)stream_produce),
|
379
|
+
duckdb::Value::POINTER((uintptr_t)get_schema)});
|
220
380
|
try {
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
381
|
+
if (!has_table) {
|
382
|
+
// We create the table based on an Arrow Scanner
|
383
|
+
arrow_scan->Create(table_name);
|
384
|
+
} else {
|
385
|
+
arrow_scan->CreateView("temp_adbc_view", true, true);
|
386
|
+
auto query = "insert into " + std::string(table_name) + " select * from temp_adbc_view";
|
387
|
+
auto result = cconn->Query(query);
|
388
|
+
}
|
229
389
|
// After creating a table, the arrow array stream is released. Hence we must set it as released to avoid
|
230
390
|
// double-releasing it
|
231
391
|
input->release = nullptr;
|
@@ -251,14 +411,28 @@ struct DuckDBAdbcStatementWrapper {
|
|
251
411
|
AdbcStatusCode StatementNew(struct AdbcConnection *connection, struct AdbcStatement *statement,
|
252
412
|
struct AdbcError *error) {
|
253
413
|
|
254
|
-
|
255
|
-
|
256
|
-
|
414
|
+
auto status = SetErrorMaybe(connection, error, "Missing connection object");
|
415
|
+
if (status != ADBC_STATUS_OK) {
|
416
|
+
return status;
|
417
|
+
}
|
418
|
+
|
419
|
+
status = SetErrorMaybe(connection->private_data, error, "Invalid connection object");
|
420
|
+
if (status != ADBC_STATUS_OK) {
|
421
|
+
return status;
|
422
|
+
}
|
423
|
+
|
424
|
+
status = SetErrorMaybe(statement, error, "Missing statement object");
|
425
|
+
if (status != ADBC_STATUS_OK) {
|
426
|
+
return status;
|
427
|
+
}
|
257
428
|
|
258
429
|
statement->private_data = nullptr;
|
259
430
|
|
260
431
|
auto statement_wrapper = (DuckDBAdbcStatementWrapper *)malloc(sizeof(DuckDBAdbcStatementWrapper));
|
261
|
-
|
432
|
+
status = SetErrorMaybe(statement_wrapper, error, "Allocation error");
|
433
|
+
if (status != ADBC_STATUS_OK) {
|
434
|
+
return status;
|
435
|
+
}
|
262
436
|
|
263
437
|
statement->private_data = statement_wrapper;
|
264
438
|
statement_wrapper->connection = (duckdb_connection)connection->private_data;
|
@@ -298,8 +472,16 @@ AdbcStatusCode StatementRelease(struct AdbcStatement *statement, struct AdbcErro
|
|
298
472
|
|
299
473
|
AdbcStatusCode StatementExecuteQuery(struct AdbcStatement *statement, struct ArrowArrayStream *out,
|
300
474
|
int64_t *rows_affected, struct AdbcError *error) {
|
301
|
-
|
302
|
-
|
475
|
+
auto status = SetErrorMaybe(statement, error, "Missing statement object");
|
476
|
+
if (status != ADBC_STATUS_OK) {
|
477
|
+
return status;
|
478
|
+
}
|
479
|
+
|
480
|
+
status = SetErrorMaybe(statement->private_data, error, "Invalid statement object");
|
481
|
+
if (status != ADBC_STATUS_OK) {
|
482
|
+
return status;
|
483
|
+
}
|
484
|
+
|
303
485
|
auto wrapper = (DuckDBAdbcStatementWrapper *)statement->private_data;
|
304
486
|
|
305
487
|
// TODO: Set affected rows, careful with early return
|
@@ -314,7 +496,10 @@ AdbcStatusCode StatementExecuteQuery(struct AdbcStatement *statement, struct Arr
|
|
314
496
|
}
|
315
497
|
|
316
498
|
auto res = duckdb_execute_prepared_arrow(wrapper->statement, &wrapper->result);
|
317
|
-
|
499
|
+
if (res != DuckDBSuccess) {
|
500
|
+
SetError(error, duckdb_query_arrow_error(wrapper->result));
|
501
|
+
return ADBC_STATUS_INVALID_ARGUMENT;
|
502
|
+
}
|
318
503
|
|
319
504
|
if (out) {
|
320
505
|
out->private_data = wrapper->result;
|
@@ -333,25 +518,45 @@ AdbcStatusCode StatementExecuteQuery(struct AdbcStatement *statement, struct Arr
|
|
333
518
|
|
334
519
|
// this is a nop for us
|
335
520
|
AdbcStatusCode StatementPrepare(struct AdbcStatement *statement, struct AdbcError *error) {
|
336
|
-
|
337
|
-
|
521
|
+
auto status = SetErrorMaybe(statement, error, "Missing statement object");
|
522
|
+
if (status != ADBC_STATUS_OK) {
|
523
|
+
return status;
|
524
|
+
}
|
525
|
+
|
526
|
+
status = SetErrorMaybe(statement->private_data, error, "Invalid statement object");
|
527
|
+
if (status != ADBC_STATUS_OK) {
|
528
|
+
return status;
|
529
|
+
}
|
530
|
+
|
338
531
|
return ADBC_STATUS_OK;
|
339
532
|
}
|
340
533
|
|
341
534
|
AdbcStatusCode StatementSetSqlQuery(struct AdbcStatement *statement, const char *query, struct AdbcError *error) {
|
342
|
-
|
343
|
-
|
535
|
+
auto status = SetErrorMaybe(statement, error, "Missing statement object");
|
536
|
+
if (status != ADBC_STATUS_OK) {
|
537
|
+
return status;
|
538
|
+
}
|
539
|
+
status = SetErrorMaybe(query, error, "Missing query");
|
540
|
+
if (status != ADBC_STATUS_OK) {
|
541
|
+
return status;
|
542
|
+
}
|
344
543
|
|
345
544
|
auto wrapper = (DuckDBAdbcStatementWrapper *)statement->private_data;
|
346
545
|
auto res = duckdb_prepare(wrapper->connection, query, &wrapper->statement);
|
347
|
-
|
348
|
-
|
546
|
+
auto error_msg = duckdb_prepare_error(wrapper->statement);
|
547
|
+
return CheckResult(res, error, error_msg);
|
349
548
|
}
|
350
549
|
|
351
550
|
AdbcStatusCode StatementBindStream(struct AdbcStatement *statement, struct ArrowArrayStream *values,
|
352
551
|
struct AdbcError *error) {
|
353
|
-
|
354
|
-
|
552
|
+
auto status = SetErrorMaybe(statement, error, "Missing statement object");
|
553
|
+
if (status != ADBC_STATUS_OK) {
|
554
|
+
return status;
|
555
|
+
}
|
556
|
+
status = SetErrorMaybe(values, error, "Missing stream object");
|
557
|
+
if (status != ADBC_STATUS_OK) {
|
558
|
+
return status;
|
559
|
+
}
|
355
560
|
auto wrapper = (DuckDBAdbcStatementWrapper *)statement->private_data;
|
356
561
|
wrapper->ingestion_stream = values;
|
357
562
|
return ADBC_STATUS_OK;
|
@@ -359,8 +564,14 @@ AdbcStatusCode StatementBindStream(struct AdbcStatement *statement, struct Arrow
|
|
359
564
|
|
360
565
|
AdbcStatusCode StatementSetOption(struct AdbcStatement *statement, const char *key, const char *value,
|
361
566
|
struct AdbcError *error) {
|
362
|
-
|
363
|
-
|
567
|
+
auto status = SetErrorMaybe(statement, error, "Missing statement object");
|
568
|
+
if (status != ADBC_STATUS_OK) {
|
569
|
+
return status;
|
570
|
+
}
|
571
|
+
status = SetErrorMaybe(key, error, "Missing key object");
|
572
|
+
if (status != ADBC_STATUS_OK) {
|
573
|
+
return status;
|
574
|
+
}
|
364
575
|
auto wrapper = (DuckDBAdbcStatementWrapper *)statement->private_data;
|
365
576
|
|
366
577
|
if (strcmp(key, ADBC_INGEST_OPTION_TARGET_TABLE) == 0) {
|
@@ -372,17 +583,23 @@ AdbcStatusCode StatementSetOption(struct AdbcStatement *statement, const char *k
|
|
372
583
|
|
373
584
|
static AdbcStatusCode QueryInternal(struct AdbcConnection *connection, struct ArrowArrayStream *out, const char *query,
|
374
585
|
struct AdbcError *error) {
|
375
|
-
AdbcStatusCode res;
|
376
586
|
AdbcStatement statement;
|
377
587
|
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
588
|
+
auto status = StatementNew(connection, &statement, error);
|
589
|
+
if (status != ADBC_STATUS_OK) {
|
590
|
+
SetError(error, "unable to initialize statement");
|
591
|
+
return status;
|
592
|
+
}
|
593
|
+
status = StatementSetSqlQuery(&statement, query, error);
|
594
|
+
if (status != ADBC_STATUS_OK) {
|
595
|
+
SetError(error, "unable to initialize statement");
|
596
|
+
return status;
|
597
|
+
}
|
598
|
+
status = StatementExecuteQuery(&statement, out, nullptr, error);
|
599
|
+
if (status != ADBC_STATUS_OK) {
|
600
|
+
SetError(error, "unable to initialize statement");
|
601
|
+
return status;
|
602
|
+
}
|
386
603
|
|
387
604
|
return ADBC_STATUS_OK;
|
388
605
|
}
|
@@ -390,8 +607,17 @@ static AdbcStatusCode QueryInternal(struct AdbcConnection *connection, struct Ar
|
|
390
607
|
AdbcStatusCode ConnectionGetObjects(struct AdbcConnection *connection, int depth, const char *catalog,
|
391
608
|
const char *db_schema, const char *table_name, const char **table_type,
|
392
609
|
const char *column_name, struct ArrowArrayStream *out, struct AdbcError *error) {
|
393
|
-
|
394
|
-
|
610
|
+
if (catalog != nullptr) {
|
611
|
+
if (strcmp(catalog, "duckdb") == 0) {
|
612
|
+
SetError(error, "catalog must be NULL or 'duckdb'");
|
613
|
+
return ADBC_STATUS_INVALID_ARGUMENT;
|
614
|
+
}
|
615
|
+
}
|
616
|
+
|
617
|
+
if (table_type != nullptr) {
|
618
|
+
SetError(error, "Table types parameter not yet supported");
|
619
|
+
return ADBC_STATUS_NOT_IMPLEMENTED;
|
620
|
+
}
|
395
621
|
|
396
622
|
auto q = duckdb::StringUtil::Format(R"(
|
397
623
|
SELECT table_schema db_schema_name, LIST(table_schema_list) db_schema_tables FROM (
|
@@ -404,41 +630,10 @@ SELECT table_schema db_schema_name, LIST(table_schema_list) db_schema_tables FRO
|
|
404
630
|
return QueryInternal(connection, out, q.c_str(), error);
|
405
631
|
}
|
406
632
|
|
407
|
-
//
|
408
|
-
// AdbcStatusCode ConnectionGetCatalogs(struct AdbcConnection *connection, struct AdbcStatement *statement,
|
409
|
-
// struct AdbcError *error) {
|
410
|
-
// const char *q = "SELECT 'duckdb' catalog_name";
|
411
|
-
//
|
412
|
-
// return QueryInternal(connection, statement, q, error);
|
413
|
-
//}
|
414
|
-
//
|
415
|
-
// AdbcStatusCode ConnectionGetDbSchemas(struct AdbcConnection *connection, struct AdbcStatement *statement,
|
416
|
-
// struct AdbcError *error) {
|
417
|
-
// const char *q = "SELECT 'duckdb' catalog_name, schema_name db_schema_name FROM information_schema.schemata ORDER "
|
418
|
-
// "BY schema_name";
|
419
|
-
// return QueryInternal(connection, statement, q, error);
|
420
|
-
//}
|
421
633
|
AdbcStatusCode ConnectionGetTableTypes(struct AdbcConnection *connection, struct ArrowArrayStream *out,
|
422
634
|
struct AdbcError *error) {
|
423
635
|
const char *q = "SELECT DISTINCT table_type FROM information_schema.tables ORDER BY table_type";
|
424
636
|
return QueryInternal(connection, out, q, error);
|
425
637
|
}
|
426
|
-
//
|
427
|
-
// AdbcStatusCode ConnectionGetTables(struct AdbcConnection *connection, const char *catalog, const char *db_schema,
|
428
|
-
// const char *table_name, const char **table_types,
|
429
|
-
// struct AdbcStatement *statement, struct AdbcError *error) {
|
430
|
-
//
|
431
|
-
// CHECK_TRUE(catalog == nullptr || strcmp(catalog, "duckdb") == 0, error, "catalog must be NULL or 'duckdb'");
|
432
|
-
//
|
433
|
-
// // let's wait for https://github.com/lidavidm/arrow/issues/6
|
434
|
-
// CHECK_TRUE(table_types == nullptr, error, "table types parameter not yet supported");
|
435
|
-
// auto q = duckdb::StringUtil::Format(
|
436
|
-
// "SELECT 'duckdb' catalog_name, table_schema db_schema_name, table_name, table_type FROM "
|
437
|
-
// "information_schema.tables WHERE table_schema LIKE '%s' AND table_name LIKE '%s' ORDER BY table_schema, "
|
438
|
-
// "table_name",
|
439
|
-
// db_schema ? db_schema : "%", table_name ? table_name : "%");
|
440
|
-
//
|
441
|
-
// return QueryInternal(connection, statement, q.c_str(), error);
|
442
|
-
//}
|
443
638
|
|
444
639
|
} // namespace duckdb_adbc
|
@@ -61,16 +61,18 @@ void GetWinError(std::string *buffer) {
|
|
61
61
|
|
62
62
|
void ReleaseError(struct AdbcError *error) {
|
63
63
|
if (error) {
|
64
|
-
if (error->message)
|
64
|
+
if (error->message) {
|
65
65
|
delete[] error->message;
|
66
|
+
}
|
66
67
|
error->message = nullptr;
|
67
68
|
error->release = nullptr;
|
68
69
|
}
|
69
70
|
}
|
70
71
|
|
71
72
|
void SetError(struct AdbcError *error, const std::string &message) {
|
72
|
-
if (!error)
|
73
|
+
if (!error) {
|
73
74
|
return;
|
75
|
+
}
|
74
76
|
if (error->message) {
|
75
77
|
// Append
|
76
78
|
std::string buffer = error->message;
|
@@ -131,10 +133,6 @@ static AdbcStatusCode ReleaseDriver(struct AdbcDriver *driver, struct AdbcError
|
|
131
133
|
|
132
134
|
// Default stubs
|
133
135
|
|
134
|
-
AdbcStatusCode ConnectionCommit(struct AdbcConnection *, struct AdbcError *error) {
|
135
|
-
return ADBC_STATUS_NOT_IMPLEMENTED;
|
136
|
-
}
|
137
|
-
|
138
136
|
AdbcStatusCode ConnectionGetInfo(struct AdbcConnection *connection, uint32_t *info_codes, size_t info_codes_length,
|
139
137
|
struct ArrowArrayStream *out, struct AdbcError *error) {
|
140
138
|
return ADBC_STATUS_NOT_IMPLEMENTED;
|
@@ -145,27 +143,11 @@ AdbcStatusCode ConnectionGetTableSchema(struct AdbcConnection *, const char *, c
|
|
145
143
|
return ADBC_STATUS_NOT_IMPLEMENTED;
|
146
144
|
}
|
147
145
|
|
148
|
-
AdbcStatusCode ConnectionReadPartition(struct AdbcConnection *connection, const uint8_t *serialized_partition,
|
149
|
-
size_t serialized_length, struct ArrowArrayStream *out,
|
150
|
-
struct AdbcError *error) {
|
151
|
-
return ADBC_STATUS_NOT_IMPLEMENTED;
|
152
|
-
}
|
153
|
-
|
154
|
-
AdbcStatusCode ConnectionRollback(struct AdbcConnection *, struct AdbcError *error) {
|
155
|
-
return ADBC_STATUS_NOT_IMPLEMENTED;
|
156
|
-
}
|
157
|
-
|
158
146
|
AdbcStatusCode StatementBind(struct AdbcStatement *, struct ArrowArray *, struct ArrowSchema *,
|
159
147
|
struct AdbcError *error) {
|
160
148
|
return ADBC_STATUS_NOT_IMPLEMENTED;
|
161
149
|
}
|
162
150
|
|
163
|
-
AdbcStatusCode StatementExecutePartitions(struct AdbcStatement *statement, struct ArrowSchema *schema,
|
164
|
-
struct AdbcPartitions *partitions, int64_t *rows_affected,
|
165
|
-
struct AdbcError *error) {
|
166
|
-
return ADBC_STATUS_NOT_IMPLEMENTED;
|
167
|
-
}
|
168
|
-
|
169
151
|
AdbcStatusCode StatementGetParameterSchema(struct AdbcStatement *statement, struct ArrowSchema *schema,
|
170
152
|
struct AdbcError *error) {
|
171
153
|
return ADBC_STATUS_NOT_IMPLEMENTED;
|
@@ -466,6 +448,9 @@ AdbcStatusCode AdbcStatementExecutePartitions(struct AdbcStatement *statement, A
|
|
466
448
|
|
467
449
|
AdbcStatusCode AdbcStatementExecuteQuery(struct AdbcStatement *statement, struct ArrowArrayStream *out,
|
468
450
|
int64_t *rows_affected, struct AdbcError *error) {
|
451
|
+
if (!statement) {
|
452
|
+
return ADBC_STATUS_INVALID_ARGUMENT;
|
453
|
+
}
|
469
454
|
if (!statement->private_driver) {
|
470
455
|
return ADBC_STATUS_INVALID_STATE;
|
471
456
|
}
|
@@ -482,6 +467,9 @@ AdbcStatusCode AdbcStatementGetParameterSchema(struct AdbcStatement *statement,
|
|
482
467
|
|
483
468
|
AdbcStatusCode AdbcStatementNew(struct AdbcConnection *connection, struct AdbcStatement *statement,
|
484
469
|
struct AdbcError *error) {
|
470
|
+
if (!connection) {
|
471
|
+
return ADBC_STATUS_INVALID_ARGUMENT;
|
472
|
+
}
|
485
473
|
if (!connection->private_driver) {
|
486
474
|
return ADBC_STATUS_INVALID_STATE;
|
487
475
|
}
|