duckdb 0.8.2-dev4142.0 → 0.8.2-dev4314.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 +0 -2
- package/lib/duckdb.js +3 -3
- package/package.json +1 -1
- package/src/connection.cpp +9 -8
- package/src/database.cpp +5 -8
- package/src/duckdb/extension/icu/icu-datepart.cpp +2 -2
- package/src/duckdb/extension/icu/icu-strptime.cpp +0 -9
- package/src/duckdb/extension/icu/icu_extension.cpp +3 -3
- package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/gregocal.h +1 -1
- package/src/duckdb/extension/json/buffered_json_reader.cpp +3 -17
- package/src/duckdb/extension/json/include/buffered_json_reader.hpp +2 -5
- package/src/duckdb/extension/json/include/json_deserializer.hpp +2 -2
- package/src/duckdb/extension/json/include/json_scan.hpp +5 -12
- package/src/duckdb/extension/json/include/json_serializer.hpp +3 -3
- package/src/duckdb/extension/json/include/json_transform.hpp +2 -5
- package/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp +1 -1
- package/src/duckdb/extension/json/json_functions/json_transform.cpp +2 -18
- package/src/duckdb/extension/json/json_scan.cpp +7 -76
- package/src/duckdb/extension/json/serialize_json.cpp +8 -8
- package/src/duckdb/extension/parquet/column_writer.cpp +46 -45
- package/src/duckdb/extension/parquet/include/column_writer.hpp +2 -2
- package/src/duckdb/extension/parquet/include/parquet_reader.hpp +2 -5
- package/src/duckdb/extension/parquet/include/parquet_rle_bp_encoder.hpp +4 -4
- package/src/duckdb/extension/parquet/parquet_extension.cpp +74 -55
- package/src/duckdb/extension/parquet/parquet_writer.cpp +3 -2
- package/src/duckdb/extension/parquet/serialize_parquet.cpp +4 -4
- package/src/duckdb/src/catalog/catalog_entry/index_catalog_entry.cpp +0 -1
- package/src/duckdb/src/catalog/catalog_entry/macro_catalog_entry.cpp +0 -1
- package/src/duckdb/src/catalog/catalog_entry/schema_catalog_entry.cpp +0 -1
- package/src/duckdb/src/catalog/catalog_entry/sequence_catalog_entry.cpp +0 -1
- package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +0 -2
- package/src/duckdb/src/catalog/catalog_entry/type_catalog_entry.cpp +1 -3
- package/src/duckdb/src/catalog/catalog_entry/view_catalog_entry.cpp +0 -1
- package/src/duckdb/src/catalog/catalog_entry.cpp +2 -11
- package/src/duckdb/src/catalog/catalog_set.cpp +16 -14
- package/src/duckdb/src/catalog/default/default_functions.cpp +2 -2
- package/src/duckdb/src/common/arrow/arrow_converter.cpp +0 -1
- package/src/duckdb/src/common/constants.cpp +0 -1
- package/src/duckdb/src/common/enum_util.cpp +0 -10
- package/src/duckdb/src/common/exception.cpp +1 -1
- package/src/duckdb/src/common/extra_type_info.cpp +20 -192
- package/src/duckdb/src/common/multi_file_reader.cpp +0 -68
- package/src/duckdb/src/common/serializer/binary_serializer.cpp +9 -4
- package/src/duckdb/src/common/serializer/buffered_file_reader.cpp +3 -11
- package/src/duckdb/src/common/serializer/buffered_file_writer.cpp +1 -1
- package/src/duckdb/src/common/serializer/memory_stream.cpp +61 -0
- package/src/duckdb/src/common/serializer/{format_serializer.cpp → serializer.cpp} +2 -2
- package/src/duckdb/src/common/sort/partition_state.cpp +107 -29
- package/src/duckdb/src/common/types/column/column_data_collection.cpp +4 -4
- package/src/duckdb/src/common/types/data_chunk.cpp +11 -43
- package/src/duckdb/src/common/types/hyperloglog.cpp +4 -23
- package/src/duckdb/src/common/types/interval.cpp +2 -2
- package/src/duckdb/src/common/types/value.cpp +10 -135
- package/src/duckdb/src/common/types/vector.cpp +17 -149
- package/src/duckdb/src/common/types.cpp +2 -20
- package/src/duckdb/src/core_functions/aggregate/algebraic/avg.cpp +0 -1
- package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +6 -7
- package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +5 -28
- package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +30 -78
- package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +5 -30
- package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +6 -9
- package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +21 -16
- package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +15 -23
- package/src/duckdb/src/execution/index/art/art.cpp +5 -1
- package/src/duckdb/src/execution/index/art/leaf.cpp +13 -10
- package/src/duckdb/src/execution/index/art/node48.cpp +0 -2
- package/src/duckdb/src/execution/index/fixed_size_allocator.cpp +38 -73
- package/src/duckdb/src/execution/index/fixed_size_buffer.cpp +245 -27
- package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +2 -3
- package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +35 -20
- package/src/duckdb/src/function/macro_function.cpp +0 -42
- package/src/duckdb/src/function/scalar/compressed_materialization/compress_integral.cpp +10 -8
- package/src/duckdb/src/function/scalar/compressed_materialization/compress_string.cpp +13 -12
- package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +9 -11
- package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +7 -33
- package/src/duckdb/src/function/scalar_function.cpp +1 -2
- package/src/duckdb/src/function/scalar_macro_function.cpp +0 -10
- package/src/duckdb/src/function/table/copy_csv.cpp +38 -38
- package/src/duckdb/src/function/table/read_csv.cpp +5 -174
- package/src/duckdb/src/function/table/table_scan.cpp +5 -42
- package/src/duckdb/src/function/table/version/pragma_version.cpp +2 -2
- package/src/duckdb/src/function/table_function.cpp +3 -4
- package/src/duckdb/src/function/table_macro_function.cpp +0 -10
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/schema_catalog_entry.hpp +0 -2
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/sequence_catalog_entry.hpp +0 -2
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/type_catalog_entry.hpp +0 -2
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +3 -8
- package/src/duckdb/src/include/duckdb/common/constants.hpp +4 -2
- package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +16 -46
- package/src/duckdb/src/include/duckdb/common/index_vector.hpp +4 -4
- package/src/duckdb/src/include/duckdb/common/multi_file_reader.hpp +2 -6
- package/src/duckdb/src/include/duckdb/common/multi_file_reader_options.hpp +0 -4
- package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +44 -23
- package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +31 -23
- package/src/duckdb/src/include/duckdb/common/serializer/buffered_file_reader.hpp +4 -6
- package/src/duckdb/src/include/duckdb/common/serializer/buffered_file_writer.hpp +3 -3
- package/src/duckdb/src/include/duckdb/common/serializer/deserialization_data.hpp +17 -0
- package/src/duckdb/src/include/duckdb/common/serializer/{format_deserializer.hpp → deserializer.hpp} +13 -13
- package/src/duckdb/src/include/duckdb/common/serializer/memory_stream.hpp +62 -0
- package/src/duckdb/src/include/duckdb/common/serializer/read_stream.hpp +38 -0
- package/src/duckdb/src/include/duckdb/common/serializer/serialization_traits.hpp +15 -13
- package/src/duckdb/src/include/duckdb/common/serializer/{format_serializer.hpp → serializer.hpp} +13 -12
- package/src/duckdb/src/include/duckdb/common/serializer/write_stream.hpp +36 -0
- package/src/duckdb/src/include/duckdb/common/sort/partition_state.hpp +14 -4
- package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/types/data_chunk.hpp +3 -8
- package/src/duckdb/src/include/duckdb/common/types/hyperloglog.hpp +4 -10
- package/src/duckdb/src/include/duckdb/common/types/interval.hpp +4 -4
- package/src/duckdb/src/include/duckdb/common/types/value.hpp +1 -5
- package/src/duckdb/src/include/duckdb/common/types/vector.hpp +2 -7
- package/src/duckdb/src/include/duckdb/common/types.hpp +1 -10
- package/src/duckdb/src/include/duckdb/execution/index/art/leaf.hpp +2 -0
- package/src/duckdb/src/include/duckdb/execution/index/fixed_size_allocator.hpp +1 -7
- package/src/duckdb/src/include/duckdb/execution/index/fixed_size_buffer.hpp +38 -8
- package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/csv_reader_options.hpp +2 -11
- package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +4 -14
- package/src/duckdb/src/include/duckdb/function/copy_function.hpp +3 -3
- package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +15 -98
- package/src/duckdb/src/include/duckdb/function/macro_function.hpp +1 -7
- package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +9 -10
- package/src/duckdb/src/include/duckdb/function/scalar/strftime_format.hpp +2 -2
- package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +2 -12
- package/src/duckdb/src/include/duckdb/function/scalar_macro_function.hpp +2 -7
- package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +4 -16
- package/src/duckdb/src/include/duckdb/function/table_function.hpp +2 -11
- package/src/duckdb/src/include/duckdb/function/table_macro_function.hpp +2 -7
- package/src/duckdb/src/include/duckdb/main/relation.hpp +9 -2
- package/src/duckdb/src/include/duckdb/parser/column_definition.hpp +1 -4
- package/src/duckdb/src/include/duckdb/parser/column_list.hpp +2 -6
- package/src/duckdb/src/include/duckdb/parser/common_table_expression_info.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/constraint.hpp +2 -12
- package/src/duckdb/src/include/duckdb/parser/constraints/check_constraint.hpp +2 -5
- package/src/duckdb/src/include/duckdb/parser/constraints/foreign_key_constraint.hpp +2 -7
- package/src/duckdb/src/include/duckdb/parser/constraints/not_null_constraint.hpp +2 -7
- package/src/duckdb/src/include/duckdb/parser/constraints/unique_constraint.hpp +2 -7
- package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +2 -5
- package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +1 -4
- package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +4 -6
- package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +2 -5
- package/src/duckdb/src/include/duckdb/parser/expression/default_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_info.hpp +2 -5
- package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_scalar_function_info.hpp +0 -2
- package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_function_info.hpp +0 -2
- package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +24 -51
- package/src/duckdb/src/include/duckdb/parser/parsed_data/attach_info.hpp +1 -4
- package/src/duckdb/src/include/duckdb/parser/parsed_data/copy_info.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_collation_info.hpp +0 -3
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_copy_function_info.hpp +0 -3
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_function_info.hpp +0 -5
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_index_info.hpp +2 -7
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_info.hpp +1 -13
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_macro_info.hpp +2 -8
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_schema_info.hpp +2 -12
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_sequence_info.hpp +2 -7
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_table_info.hpp +2 -7
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_type_info.hpp +2 -7
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_view_info.hpp +2 -7
- package/src/duckdb/src/include/duckdb/parser/parsed_data/detach_info.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/parsed_data/drop_info.hpp +2 -5
- package/src/duckdb/src/include/duckdb/parser/parsed_data/load_info.hpp +2 -21
- package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/parsed_data/pragma_info.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/parsed_data/sample_options.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/parsed_data/transaction_info.hpp +1 -4
- package/src/duckdb/src/include/duckdb/parser/parsed_data/vacuum_info.hpp +5 -7
- package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +3 -16
- package/src/duckdb/src/include/duckdb/parser/query_node/cte_node.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/query_node/recursive_cte_node.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/query_node/select_node.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/query_node/set_operation_node.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/query_node.hpp +7 -14
- package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +14 -32
- package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +4 -9
- package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +2 -6
- package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +2 -6
- package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +2 -6
- package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +2 -6
- package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +6 -14
- package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +2 -6
- package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +2 -6
- package/src/duckdb/src/include/duckdb/parser/tableref.hpp +2 -10
- package/src/duckdb/src/include/duckdb/parser/transformer.hpp +1 -0
- package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +0 -1
- package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +2 -8
- package/src/duckdb/src/include/duckdb/planner/column_binding.hpp +4 -4
- package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/expression/bound_case_expression.hpp +3 -9
- package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/expression/bound_columnref_expression.hpp +2 -8
- package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/expression/bound_conjunction_expression.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/expression/bound_constant_expression.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/expression/bound_default_expression.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +2 -8
- package/src/duckdb/src/include/duckdb/planner/expression/bound_operator_expression.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_data.hpp +2 -19
- package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_expression.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/expression/bound_reference_expression.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/expression/bound_subquery_expression.hpp +0 -3
- package/src/duckdb/src/include/duckdb/planner/expression/bound_unnest_expression.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/expression.hpp +2 -14
- package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +4 -8
- package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/filter/null_filter.hpp +4 -8
- package/src/duckdb/src/include/duckdb/planner/joinside.hpp +1 -6
- package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +2 -17
- package/src/duckdb/src/include/duckdb/planner/operator/logical_aggregate.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_any_join.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_column_data_get.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_comparison_join.hpp +2 -6
- package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_create.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_create_index.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_create_table.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_cross_product.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_cteref.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_delete.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_delim_get.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_dependent_join.hpp +0 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_distinct.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_dummy_scan.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_empty_result.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_execute.hpp +0 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_explain.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_export.hpp +0 -3
- package/src/duckdb/src/include/duckdb/planner/operator/logical_expression_get.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_extension_operator.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_filter.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_insert.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_join.hpp +0 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_limit.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_limit_percent.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_materialized_cte.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_order.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_positional_join.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_pragma.hpp +0 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_prepare.hpp +0 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_projection.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_recursive_cte.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_reset.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_sample.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_set.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_set_operation.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_show.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_simple.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_top_n.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_unnest.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_update.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_window.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator_extension.hpp +1 -3
- package/src/duckdb/src/include/duckdb/planner/parsed_data/bound_create_table_info.hpp +0 -5
- package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +3 -12
- package/src/duckdb/src/include/duckdb/planner/tableref/bound_pivotref.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/block.hpp +7 -4
- package/src/duckdb/src/include/duckdb/storage/checkpoint/row_group_writer.hpp +3 -2
- package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_writer.hpp +6 -6
- package/src/duckdb/src/include/duckdb/storage/checkpoint_manager.hpp +18 -18
- package/src/duckdb/src/include/duckdb/storage/data_pointer.hpp +6 -0
- package/src/duckdb/src/include/duckdb/storage/data_table.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/metadata/metadata_manager.hpp +4 -5
- package/src/duckdb/src/include/duckdb/storage/metadata/metadata_reader.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/metadata/metadata_writer.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +35 -19
- package/src/duckdb/src/include/duckdb/storage/statistics/base_statistics.hpp +2 -11
- package/src/duckdb/src/include/duckdb/storage/statistics/column_statistics.hpp +3 -5
- package/src/duckdb/src/include/duckdb/storage/statistics/distinct_statistics.hpp +3 -11
- package/src/duckdb/src/include/duckdb/storage/statistics/list_stats.hpp +2 -7
- package/src/duckdb/src/include/duckdb/storage/statistics/node_statistics.hpp +0 -26
- package/src/duckdb/src/include/duckdb/storage/statistics/numeric_stats.hpp +2 -7
- package/src/duckdb/src/include/duckdb/storage/statistics/string_stats.hpp +2 -7
- package/src/duckdb/src/include/duckdb/storage/statistics/struct_stats.hpp +2 -7
- package/src/duckdb/src/include/duckdb/storage/storage_info.hpp +4 -6
- package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +8 -17
- package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +5 -20
- package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/table/list_column_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +2 -7
- package/src/duckdb/src/include/duckdb/storage/table/standard_column_data.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/table/table_statistics.hpp +4 -7
- package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +27 -29
- package/src/duckdb/src/include/duckdb/verification/statement_verifier.hpp +0 -2
- package/src/duckdb/src/main/client_context.cpp +0 -6
- package/src/duckdb/src/main/client_verify.cpp +0 -2
- package/src/duckdb/src/main/extension/extension_helper.cpp +1 -0
- package/src/duckdb/src/main/relation.cpp +15 -2
- package/src/duckdb/src/parser/column_definition.cpp +0 -25
- package/src/duckdb/src/parser/column_list.cpp +0 -13
- package/src/duckdb/src/parser/constraint.cpp +0 -33
- package/src/duckdb/src/parser/constraints/check_constraint.cpp +0 -11
- package/src/duckdb/src/parser/constraints/foreign_key_constraint.cpp +0 -27
- package/src/duckdb/src/parser/constraints/not_null_constraint.cpp +0 -11
- package/src/duckdb/src/parser/constraints/unique_constraint.cpp +0 -24
- package/src/duckdb/src/parser/expression/between_expression.cpp +2 -16
- package/src/duckdb/src/parser/expression/case_expression.cpp +2 -29
- package/src/duckdb/src/parser/expression/cast_expression.cpp +2 -16
- package/src/duckdb/src/parser/expression/collate_expression.cpp +2 -14
- package/src/duckdb/src/parser/expression/columnref_expression.cpp +2 -13
- package/src/duckdb/src/parser/expression/comparison_expression.cpp +2 -14
- package/src/duckdb/src/parser/expression/conjunction_expression.cpp +2 -13
- package/src/duckdb/src/parser/expression/constant_expression.cpp +2 -12
- package/src/duckdb/src/parser/expression/default_expression.cpp +2 -9
- package/src/duckdb/src/parser/expression/function_expression.cpp +2 -32
- package/src/duckdb/src/parser/expression/lambda_expression.cpp +2 -14
- package/src/duckdb/src/parser/expression/operator_expression.cpp +2 -13
- package/src/duckdb/src/parser/expression/parameter_expression.cpp +2 -13
- package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +2 -12
- package/src/duckdb/src/parser/expression/star_expression.cpp +2 -43
- package/src/duckdb/src/parser/expression/subquery_expression.cpp +2 -28
- package/src/duckdb/src/parser/expression/window_expression.cpp +2 -53
- package/src/duckdb/src/parser/parsed_data/alter_info.cpp +0 -35
- package/src/duckdb/src/parser/parsed_data/alter_scalar_function_info.cpp +0 -18
- package/src/duckdb/src/parser/parsed_data/alter_table_function_info.cpp +0 -13
- package/src/duckdb/src/parser/parsed_data/alter_table_info.cpp +1 -189
- package/src/duckdb/src/parser/parsed_data/attach_info.cpp +0 -29
- package/src/duckdb/src/parser/parsed_data/create_collation_info.cpp +0 -4
- package/src/duckdb/src/parser/parsed_data/create_copy_function_info.cpp +0 -4
- package/src/duckdb/src/parser/parsed_data/create_index_info.cpp +0 -48
- package/src/duckdb/src/parser/parsed_data/create_info.cpp +0 -47
- package/src/duckdb/src/parser/parsed_data/create_macro_info.cpp +1 -28
- package/src/duckdb/src/parser/parsed_data/create_sequence_info.cpp +0 -31
- package/src/duckdb/src/parser/parsed_data/create_table_info.cpp +0 -23
- package/src/duckdb/src/parser/parsed_data/create_type_info.cpp +0 -22
- package/src/duckdb/src/parser/parsed_data/create_view_info.cpp +0 -23
- package/src/duckdb/src/parser/parsed_data/detach_info.cpp +0 -19
- package/src/duckdb/src/parser/parsed_data/drop_info.cpp +0 -26
- package/src/duckdb/src/parser/parsed_data/sample_options.cpp +2 -25
- package/src/duckdb/src/parser/parsed_data/transaction_info.cpp +0 -16
- package/src/duckdb/src/parser/parsed_data/vacuum_info.cpp +0 -20
- package/src/duckdb/src/parser/parsed_expression.cpp +2 -79
- package/src/duckdb/src/parser/query_node/cte_node.cpp +2 -19
- package/src/duckdb/src/parser/query_node/recursive_cte_node.cpp +2 -21
- package/src/duckdb/src/parser/query_node/select_node.cpp +2 -47
- package/src/duckdb/src/parser/query_node/set_operation_node.cpp +2 -17
- package/src/duckdb/src/parser/query_node.cpp +2 -62
- package/src/duckdb/src/parser/result_modifier.cpp +2 -96
- package/src/duckdb/src/parser/statement/select_statement.cpp +2 -13
- package/src/duckdb/src/parser/tableref/basetableref.cpp +2 -21
- package/src/duckdb/src/parser/tableref/emptytableref.cpp +0 -9
- package/src/duckdb/src/parser/tableref/expressionlistref.cpp +2 -28
- package/src/duckdb/src/parser/tableref/joinref.cpp +2 -23
- package/src/duckdb/src/parser/tableref/pivotref.cpp +0 -61
- package/src/duckdb/src/parser/tableref/subqueryref.cpp +2 -15
- package/src/duckdb/src/parser/tableref/table_function.cpp +2 -17
- package/src/duckdb/src/parser/tableref.cpp +2 -52
- package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +1 -4
- package/src/duckdb/src/planner/bound_result_modifier.cpp +0 -33
- package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +6 -30
- package/src/duckdb/src/planner/expression/bound_between_expression.cpp +0 -19
- package/src/duckdb/src/planner/expression/bound_case_expression.cpp +0 -36
- package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +0 -15
- package/src/duckdb/src/planner/expression/bound_columnref_expression.cpp +0 -20
- package/src/duckdb/src/planner/expression/bound_comparison_expression.cpp +0 -13
- package/src/duckdb/src/planner/expression/bound_conjunction_expression.cpp +0 -13
- package/src/duckdb/src/planner/expression/bound_constant_expression.cpp +0 -11
- package/src/duckdb/src/planner/expression/bound_expression.cpp +1 -5
- package/src/duckdb/src/planner/expression/bound_function_expression.cpp +8 -28
- package/src/duckdb/src/planner/expression/bound_lambda_expression.cpp +0 -4
- package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +0 -23
- package/src/duckdb/src/planner/expression/bound_operator_expression.cpp +0 -16
- package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +0 -18
- package/src/duckdb/src/planner/expression/bound_reference_expression.cpp +0 -16
- package/src/duckdb/src/planner/expression/bound_subquery_expression.cpp +0 -4
- package/src/duckdb/src/planner/expression/bound_unnest_expression.cpp +0 -15
- package/src/duckdb/src/planner/expression/bound_window_expression.cpp +7 -60
- package/src/duckdb/src/planner/expression.cpp +0 -74
- package/src/duckdb/src/planner/filter/conjunction_filter.cpp +0 -21
- package/src/duckdb/src/planner/filter/constant_filter.cpp +0 -12
- package/src/duckdb/src/planner/filter/null_filter.cpp +0 -14
- package/src/duckdb/src/planner/joinside.cpp +0 -24
- package/src/duckdb/src/planner/logical_operator.cpp +15 -215
- package/src/duckdb/src/planner/operator/logical_aggregate.cpp +0 -46
- package/src/duckdb/src/planner/operator/logical_any_join.cpp +0 -14
- package/src/duckdb/src/planner/operator/logical_column_data_get.cpp +0 -23
- package/src/duckdb/src/planner/operator/logical_comparison_join.cpp +0 -23
- package/src/duckdb/src/planner/operator/logical_copy_to_file.cpp +2 -56
- package/src/duckdb/src/planner/operator/logical_create.cpp +0 -12
- package/src/duckdb/src/planner/operator/logical_create_index.cpp +0 -25
- package/src/duckdb/src/planner/operator/logical_create_table.cpp +0 -10
- package/src/duckdb/src/planner/operator/logical_cross_product.cpp +0 -9
- package/src/duckdb/src/planner/operator/logical_cteref.cpp +0 -18
- package/src/duckdb/src/planner/operator/logical_delete.cpp +0 -22
- package/src/duckdb/src/planner/operator/logical_delim_get.cpp +0 -12
- package/src/duckdb/src/planner/operator/logical_dependent_join.cpp +0 -4
- package/src/duckdb/src/planner/operator/logical_distinct.cpp +0 -16
- package/src/duckdb/src/planner/operator/logical_dummy_scan.cpp +0 -10
- package/src/duckdb/src/planner/operator/logical_empty_result.cpp +0 -15
- package/src/duckdb/src/planner/operator/logical_expression_get.cpp +0 -24
- package/src/duckdb/src/planner/operator/logical_extension_operator.cpp +6 -19
- package/src/duckdb/src/planner/operator/logical_filter.cpp +0 -15
- package/src/duckdb/src/planner/operator/logical_get.cpp +12 -97
- package/src/duckdb/src/planner/operator/logical_insert.cpp +0 -77
- package/src/duckdb/src/planner/operator/logical_join.cpp +0 -17
- package/src/duckdb/src/planner/operator/logical_limit.cpp +0 -16
- package/src/duckdb/src/planner/operator/logical_limit_percent.cpp +0 -16
- package/src/duckdb/src/planner/operator/logical_materialized_cte.cpp +0 -13
- package/src/duckdb/src/planner/operator/logical_order.cpp +0 -15
- package/src/duckdb/src/planner/operator/logical_pivot.cpp +0 -20
- package/src/duckdb/src/planner/operator/logical_positional_join.cpp +0 -10
- package/src/duckdb/src/planner/operator/logical_pragma.cpp +0 -8
- package/src/duckdb/src/planner/operator/logical_prepare.cpp +0 -8
- package/src/duckdb/src/planner/operator/logical_projection.cpp +0 -12
- package/src/duckdb/src/planner/operator/logical_recursive_cte.cpp +0 -15
- package/src/duckdb/src/planner/operator/logical_reset.cpp +0 -12
- package/src/duckdb/src/planner/operator/logical_sample.cpp +0 -11
- package/src/duckdb/src/planner/operator/logical_set.cpp +0 -14
- package/src/duckdb/src/planner/operator/logical_set_operation.cpp +0 -13
- package/src/duckdb/src/planner/operator/logical_simple.cpp +0 -60
- package/src/duckdb/src/planner/operator/logical_top_n.cpp +0 -14
- package/src/duckdb/src/planner/operator/logical_unnest.cpp +0 -14
- package/src/duckdb/src/planner/operator/logical_update.cpp +0 -28
- package/src/duckdb/src/planner/operator/logical_window.cpp +0 -13
- package/src/duckdb/src/planner/planner.cpp +13 -22
- package/src/duckdb/src/planner/table_filter.cpp +0 -59
- package/src/duckdb/src/storage/checkpoint/row_group_writer.cpp +7 -17
- package/src/duckdb/src/storage/checkpoint/table_data_reader.cpp +7 -4
- package/src/duckdb/src/storage/checkpoint/table_data_writer.cpp +24 -22
- package/src/duckdb/src/storage/checkpoint_manager.cpp +203 -180
- package/src/duckdb/src/storage/data_table.cpp +2 -2
- package/src/duckdb/src/storage/metadata/metadata_manager.cpp +11 -9
- package/src/duckdb/src/storage/partial_block_manager.cpp +42 -15
- package/src/duckdb/src/storage/serialization/serialize_constraint.cpp +20 -20
- package/src/duckdb/src/storage/serialization/serialize_create_info.cpp +46 -42
- package/src/duckdb/src/storage/serialization/serialize_expression.cpp +63 -63
- package/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +167 -165
- package/src/duckdb/src/storage/serialization/serialize_macro_function.cpp +12 -12
- package/src/duckdb/src/storage/serialization/serialize_nodes.cpp +54 -54
- package/src/duckdb/src/storage/serialization/serialize_parse_info.cpp +88 -88
- package/src/duckdb/src/storage/serialization/serialize_parsed_expression.cpp +72 -72
- package/src/duckdb/src/storage/serialization/serialize_query_node.cpp +20 -20
- package/src/duckdb/src/storage/serialization/serialize_result_modifier.cpp +22 -22
- package/src/duckdb/src/storage/serialization/serialize_statement.cpp +4 -4
- package/src/duckdb/src/storage/serialization/serialize_storage.cpp +41 -6
- package/src/duckdb/src/storage/serialization/serialize_table_filter.cpp +24 -24
- package/src/duckdb/src/storage/serialization/serialize_tableref.cpp +32 -32
- package/src/duckdb/src/storage/serialization/serialize_types.cpp +29 -29
- package/src/duckdb/src/storage/single_file_block_manager.cpp +17 -22
- package/src/duckdb/src/storage/statistics/base_statistics.cpp +31 -85
- package/src/duckdb/src/storage/statistics/column_statistics.cpp +6 -19
- package/src/duckdb/src/storage/statistics/distinct_statistics.cpp +0 -26
- package/src/duckdb/src/storage/statistics/list_stats.cpp +6 -22
- package/src/duckdb/src/storage/statistics/numeric_stats.cpp +20 -135
- package/src/duckdb/src/storage/statistics/string_stats.cpp +5 -28
- package/src/duckdb/src/storage/statistics/struct_stats.cpp +8 -30
- package/src/duckdb/src/storage/storage_info.cpp +1 -1
- package/src/duckdb/src/storage/table/chunk_info.cpp +9 -88
- package/src/duckdb/src/storage/table/column_checkpoint_state.cpp +28 -34
- package/src/duckdb/src/storage/table/column_data.cpp +20 -25
- package/src/duckdb/src/storage/table/list_column_data.cpp +16 -9
- package/src/duckdb/src/storage/table/row_group.cpp +16 -92
- package/src/duckdb/src/storage/table/row_group_collection.cpp +5 -1
- package/src/duckdb/src/storage/table/standard_column_data.cpp +10 -7
- package/src/duckdb/src/storage/table/struct_column_data.cpp +17 -11
- package/src/duckdb/src/storage/table/table_statistics.cpp +13 -22
- package/src/duckdb/src/storage/wal_replay.cpp +108 -106
- package/src/duckdb/src/storage/write_ahead_log.cpp +135 -64
- package/src/duckdb/src/transaction/commit_state.cpp +22 -8
- package/src/duckdb/src/verification/deserialized_statement_verifier.cpp +11 -6
- package/src/duckdb/src/verification/statement_verifier.cpp +0 -5
- package/src/duckdb/third_party/parquet/parquet_types.h +1 -1
- package/src/duckdb/ub_src_common.cpp +0 -4
- package/src/duckdb/ub_src_common_serializer.cpp +2 -4
- package/src/duckdb/ub_src_planner.cpp +0 -2
- package/src/duckdb/ub_src_planner_expression.cpp +0 -2
- package/src/duckdb/ub_src_planner_operator.cpp +0 -8
- package/src/duckdb_node.cpp +6 -12
- package/src/duckdb_node.hpp +23 -13
- package/src/statement.cpp +15 -16
- package/test/database_fail.test.ts +20 -0
- package/test/worker.js +7 -0
- package/src/duckdb/src/common/field_writer.cpp +0 -97
- package/src/duckdb/src/common/serializer/buffered_deserializer.cpp +0 -27
- package/src/duckdb/src/common/serializer/buffered_serializer.cpp +0 -36
- package/src/duckdb/src/common/serializer.cpp +0 -24
- package/src/duckdb/src/include/duckdb/common/field_writer.hpp +0 -379
- package/src/duckdb/src/include/duckdb/common/serializer/buffered_deserializer.hpp +0 -41
- package/src/duckdb/src/include/duckdb/common/serializer/buffered_serializer.hpp +0 -50
- package/src/duckdb/src/include/duckdb/common/serializer.hpp +0 -151
- package/src/duckdb/src/include/duckdb/planner/plan_serialization.hpp +0 -44
- package/src/duckdb/src/include/duckdb/verification/deserialized_statement_verifier_v2.hpp +0 -32
- package/src/duckdb/src/planner/expression/bound_default_expression.cpp +0 -16
- package/src/duckdb/src/planner/operator/logical_execute.cpp +0 -12
- package/src/duckdb/src/planner/operator/logical_explain.cpp +0 -22
- package/src/duckdb/src/planner/operator/logical_export.cpp +0 -13
- package/src/duckdb/src/planner/operator/logical_show.cpp +0 -21
- package/src/duckdb/src/planner/parsed_data/bound_create_table_info.cpp +0 -22
- package/src/duckdb/src/planner/plan_serialization.cpp +0 -20
- package/src/duckdb/src/verification/deserialized_statement_verifier_v2.cpp +0 -34
- package/src/duckdb/ub_src_planner_parsed_data.cpp +0 -2
package/src/duckdb_node.hpp
CHANGED
@@ -11,6 +11,20 @@
|
|
11
11
|
|
12
12
|
using duckdb::vector;
|
13
13
|
|
14
|
+
class NodeDuckDB : public Napi::Addon<NodeDuckDB> {
|
15
|
+
public:
|
16
|
+
NodeDuckDB(Napi::Env env, Napi::Object exports);
|
17
|
+
|
18
|
+
static NodeDuckDB *GetData(Napi::Env env) {
|
19
|
+
return env.GetInstanceData<NodeDuckDB>();
|
20
|
+
}
|
21
|
+
|
22
|
+
Napi::FunctionReference database_constructor;
|
23
|
+
Napi::FunctionReference connection_constructor;
|
24
|
+
Napi::FunctionReference statement_constructor;
|
25
|
+
Napi::FunctionReference query_result_constructor;
|
26
|
+
};
|
27
|
+
|
14
28
|
namespace node_duckdb {
|
15
29
|
|
16
30
|
struct Task {
|
@@ -70,7 +84,7 @@ class Database : public Napi::ObjectWrap<Database> {
|
|
70
84
|
public:
|
71
85
|
explicit Database(const Napi::CallbackInfo &info);
|
72
86
|
~Database() override;
|
73
|
-
static Napi::
|
87
|
+
static Napi::FunctionReference Init(Napi::Env env, Napi::Object exports);
|
74
88
|
void Process(Napi::Env env);
|
75
89
|
void TaskComplete(Napi::Env env);
|
76
90
|
|
@@ -82,6 +96,7 @@ public:
|
|
82
96
|
if (!val.IsObject()) {
|
83
97
|
return false;
|
84
98
|
}
|
99
|
+
auto &constructor = NodeDuckDB::GetData(env)->database_constructor;
|
85
100
|
Napi::Object obj = val.As<Napi::Object>();
|
86
101
|
return obj.InstanceOf(constructor.Value());
|
87
102
|
}
|
@@ -105,7 +120,6 @@ private:
|
|
105
120
|
std::queue<duckdb::unique_ptr<Task>> task_queue;
|
106
121
|
std::mutex task_mutex;
|
107
122
|
bool task_inflight;
|
108
|
-
static Napi::FunctionReference constructor;
|
109
123
|
Napi::Env env;
|
110
124
|
int64_t bytes_allocated = 0;
|
111
125
|
int replacement_scan_count = 0;
|
@@ -120,7 +134,8 @@ class Connection : public Napi::ObjectWrap<Connection> {
|
|
120
134
|
public:
|
121
135
|
explicit Connection(const Napi::CallbackInfo &info);
|
122
136
|
~Connection() override;
|
123
|
-
static Napi::
|
137
|
+
static Napi::FunctionReference Init(Napi::Env env, Napi::Object exports);
|
138
|
+
static Napi::Object NewInstance(const Napi::Value &db);
|
124
139
|
|
125
140
|
public:
|
126
141
|
Napi::Value Prepare(const Napi::CallbackInfo &info);
|
@@ -136,12 +151,12 @@ public:
|
|
136
151
|
if (!val.IsObject()) {
|
137
152
|
return false;
|
138
153
|
}
|
154
|
+
auto &constructor = NodeDuckDB::GetData(env)->connection_constructor;
|
139
155
|
Napi::Object obj = val.As<Napi::Object>();
|
140
156
|
return obj.InstanceOf(constructor.Value());
|
141
157
|
}
|
142
158
|
|
143
159
|
public:
|
144
|
-
static Napi::FunctionReference constructor;
|
145
160
|
duckdb::unique_ptr<duckdb::Connection> connection;
|
146
161
|
Database *database_ref;
|
147
162
|
std::unordered_map<std::string, duckdb_node_udf_function_t> udfs;
|
@@ -154,12 +169,13 @@ class Statement : public Napi::ObjectWrap<Statement> {
|
|
154
169
|
public:
|
155
170
|
explicit Statement(const Napi::CallbackInfo &info);
|
156
171
|
~Statement() override;
|
157
|
-
static Napi::
|
172
|
+
static Napi::FunctionReference Init(Napi::Env env, Napi::Object exports);
|
158
173
|
void SetProcessFirstParam() {
|
159
174
|
ignore_first_param = false;
|
160
175
|
}
|
161
176
|
|
162
177
|
public:
|
178
|
+
static Napi::Object NewInstance(Napi::Env env, const vector<napi_value> &args);
|
163
179
|
Napi::Value All(const Napi::CallbackInfo &info);
|
164
180
|
Napi::Value ArrowIPCAll(const Napi::CallbackInfo &info);
|
165
181
|
Napi::Value Each(const Napi::CallbackInfo &info);
|
@@ -169,7 +185,6 @@ public:
|
|
169
185
|
Napi::Value Columns(const Napi::CallbackInfo &info);
|
170
186
|
|
171
187
|
public:
|
172
|
-
static Napi::FunctionReference constructor;
|
173
188
|
duckdb::unique_ptr<duckdb::PreparedStatement> statement;
|
174
189
|
Connection *connection_ref;
|
175
190
|
bool ignore_first_param = true;
|
@@ -183,11 +198,11 @@ class QueryResult : public Napi::ObjectWrap<QueryResult> {
|
|
183
198
|
public:
|
184
199
|
explicit QueryResult(const Napi::CallbackInfo &info);
|
185
200
|
~QueryResult() override;
|
186
|
-
static Napi::
|
201
|
+
static Napi::FunctionReference Init(Napi::Env env, Napi::Object exports);
|
202
|
+
static Napi::Object NewInstance(const Napi::Object &db);
|
187
203
|
duckdb::unique_ptr<duckdb::QueryResult> result;
|
188
204
|
|
189
205
|
public:
|
190
|
-
static Napi::FunctionReference constructor;
|
191
206
|
Napi::Value NextChunk(const Napi::CallbackInfo &info);
|
192
207
|
Napi::Value NextIpcBuffer(const Napi::CallbackInfo &info);
|
193
208
|
duckdb::shared_ptr<ArrowSchema> cschema;
|
@@ -208,11 +223,6 @@ public:
|
|
208
223
|
static Napi::Object CreateError(Napi::Env env, std::string msg);
|
209
224
|
static bool OtherIsInt(Napi::Number source);
|
210
225
|
|
211
|
-
template <class T>
|
212
|
-
static T *NewUnwrap(vector<napi_value> args) {
|
213
|
-
auto obj = T::constructor.New(args);
|
214
|
-
return Napi::ObjectWrap<T>::Unwrap(obj);
|
215
|
-
}
|
216
226
|
static duckdb::Value BindParameter(const Napi::Value source);
|
217
227
|
};
|
218
228
|
|
package/src/statement.cpp
CHANGED
@@ -17,9 +17,7 @@ using duckdb::vector;
|
|
17
17
|
|
18
18
|
namespace node_duckdb {
|
19
19
|
|
20
|
-
Napi::FunctionReference Statement::
|
21
|
-
|
22
|
-
Napi::Object Statement::Init(Napi::Env env, Napi::Object exports) {
|
20
|
+
Napi::FunctionReference Statement::Init(Napi::Env env, Napi::Object exports) {
|
23
21
|
Napi::HandleScope scope(env);
|
24
22
|
|
25
23
|
Napi::Function t =
|
@@ -29,11 +27,9 @@ Napi::Object Statement::Init(Napi::Env env, Napi::Object exports) {
|
|
29
27
|
InstanceMethod("finalize", &Statement::Finish), InstanceMethod("stream", &Statement::Stream),
|
30
28
|
InstanceMethod("columns", &Statement::Columns)});
|
31
29
|
|
32
|
-
constructor = Napi::Persistent(t);
|
33
|
-
constructor.SuppressDestruct();
|
34
|
-
|
35
30
|
exports.Set("Statement", t);
|
36
|
-
|
31
|
+
|
32
|
+
return Napi::Persistent(t);
|
37
33
|
}
|
38
34
|
|
39
35
|
static unique_ptr<duckdb::PreparedStatement> PrepareManyInternal(Statement &statement) {
|
@@ -447,8 +443,8 @@ struct RunQueryTask : public Task {
|
|
447
443
|
deferred.Reject(Utils::CreateError(env, result->GetErrorObject()));
|
448
444
|
} else {
|
449
445
|
auto db = statement.connection_ref->database_ref->Value();
|
450
|
-
auto query_result = QueryResult::
|
451
|
-
auto unwrapped =
|
446
|
+
auto query_result = QueryResult::NewInstance(db);
|
447
|
+
auto unwrapped = QueryResult::Unwrap(query_result);
|
452
448
|
unwrapped->result = std::move(result);
|
453
449
|
deferred.Resolve(query_result);
|
454
450
|
}
|
@@ -624,21 +620,20 @@ Napi::Value Statement::Finish(const Napi::CallbackInfo &info) {
|
|
624
620
|
connection_ref->database_ref->Schedule(env, duckdb::make_uniq<FinishTask>(*this, callback));
|
625
621
|
return env.Null();
|
626
622
|
}
|
623
|
+
Napi::Object Statement::NewInstance(Napi::Env env, const vector<napi_value> &args) {
|
624
|
+
return NodeDuckDB::GetData(env)->statement_constructor.New(args);
|
625
|
+
}
|
627
626
|
|
628
|
-
Napi::FunctionReference QueryResult::
|
629
|
-
|
630
|
-
Napi::Object QueryResult::Init(Napi::Env env, Napi::Object exports) {
|
627
|
+
Napi::FunctionReference QueryResult::Init(Napi::Env env, Napi::Object exports) {
|
631
628
|
Napi::HandleScope scope(env);
|
632
629
|
|
633
630
|
Napi::Function t = DefineClass(env, "QueryResult",
|
634
631
|
{InstanceMethod("nextChunk", &QueryResult::NextChunk),
|
635
632
|
InstanceMethod("nextIpcBuffer", &QueryResult::NextIpcBuffer)});
|
636
633
|
|
637
|
-
constructor = Napi::Persistent(t);
|
638
|
-
constructor.SuppressDestruct();
|
639
|
-
|
640
634
|
exports.Set("QueryResult", t);
|
641
|
-
|
635
|
+
|
636
|
+
return Napi::Persistent(t);
|
642
637
|
}
|
643
638
|
|
644
639
|
QueryResult::QueryResult(const Napi::CallbackInfo &info) : Napi::ObjectWrap<QueryResult>(info) {
|
@@ -740,4 +735,8 @@ Napi::Value QueryResult::NextIpcBuffer(const Napi::CallbackInfo &info) {
|
|
740
735
|
return deferred.Promise();
|
741
736
|
}
|
742
737
|
|
738
|
+
Napi::Object QueryResult::NewInstance(const Napi::Object &db) {
|
739
|
+
return NodeDuckDB::GetData(db.Env())->query_result_constructor.New({db});
|
740
|
+
}
|
741
|
+
|
743
742
|
} // namespace node_duckdb
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import * as sqlite3 from '..';
|
2
2
|
import * as assert from 'assert';
|
3
3
|
import {DuckDbError, RowData} from "..";
|
4
|
+
import {Worker} from 'worker_threads';
|
4
5
|
|
5
6
|
describe('error handling', function() {
|
6
7
|
var db: sqlite3.Database;
|
@@ -143,4 +144,23 @@ describe('error handling', function() {
|
|
143
144
|
}
|
144
145
|
});
|
145
146
|
});
|
147
|
+
|
148
|
+
it('should not error when multiple instances are started in one process', async () => {
|
149
|
+
async function run_worker() {
|
150
|
+
return new Promise((resolve, reject) => {
|
151
|
+
const worker = new Worker(__dirname + '/worker.js', { workerData: 'test' });
|
152
|
+
|
153
|
+
worker.on('message', resolve);
|
154
|
+
worker.on('error', reject);
|
155
|
+
worker.on('exit', (code: number) => {
|
156
|
+
if (code !== 0) {
|
157
|
+
console.log(new Error(`Worker stopped with exit code ${code}`));
|
158
|
+
}
|
159
|
+
})
|
160
|
+
});
|
161
|
+
}
|
162
|
+
|
163
|
+
await run_worker(); // first should always succeed
|
164
|
+
await run_worker(); // second fails without thread safety
|
165
|
+
})
|
146
166
|
});
|
package/test/worker.js
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
const { parentPort, workerData } = require('worker_threads');
|
2
|
+
|
3
|
+
const duckdb = require('..'); // The presence of this line alone causes the issue
|
4
|
+
|
5
|
+
new duckdb.Database(":memory:").all("SELECT 42 AS answer", function (err, res) {
|
6
|
+
parentPort.postMessage(JSON.stringify({workerData, pid: process.pid, err, res}));
|
7
|
+
});
|
@@ -1,97 +0,0 @@
|
|
1
|
-
#include "duckdb/common/field_writer.hpp"
|
2
|
-
|
3
|
-
namespace duckdb {
|
4
|
-
|
5
|
-
//===--------------------------------------------------------------------===//
|
6
|
-
// Field Writer
|
7
|
-
//===--------------------------------------------------------------------===//
|
8
|
-
FieldWriter::FieldWriter(Serializer &serializer_p)
|
9
|
-
: serializer(serializer_p), buffer(make_uniq<BufferedSerializer>()), field_count(0), finalized(false) {
|
10
|
-
buffer->SetVersion(serializer.GetVersion());
|
11
|
-
}
|
12
|
-
|
13
|
-
FieldWriter::~FieldWriter() {
|
14
|
-
if (Exception::UncaughtException()) {
|
15
|
-
return;
|
16
|
-
}
|
17
|
-
D_ASSERT(finalized);
|
18
|
-
// finalize should always have been called, unless this is destroyed as part of stack unwinding
|
19
|
-
D_ASSERT(!buffer);
|
20
|
-
}
|
21
|
-
|
22
|
-
void FieldWriter::WriteData(const_data_ptr_t buffer_ptr, idx_t write_size) {
|
23
|
-
D_ASSERT(buffer);
|
24
|
-
buffer->WriteData(buffer_ptr, write_size);
|
25
|
-
}
|
26
|
-
|
27
|
-
template <>
|
28
|
-
void FieldWriter::Write(const string &val) {
|
29
|
-
Write<uint32_t>((uint32_t)val.size());
|
30
|
-
if (!val.empty()) {
|
31
|
-
WriteData(const_data_ptr_cast(val.c_str()), val.size());
|
32
|
-
}
|
33
|
-
}
|
34
|
-
|
35
|
-
void FieldWriter::Finalize() {
|
36
|
-
D_ASSERT(buffer);
|
37
|
-
D_ASSERT(!finalized);
|
38
|
-
finalized = true;
|
39
|
-
serializer.Write<uint32_t>(field_count);
|
40
|
-
serializer.Write<uint64_t>(buffer->blob.size);
|
41
|
-
serializer.WriteData(buffer->blob.data.get(), buffer->blob.size);
|
42
|
-
|
43
|
-
buffer.reset();
|
44
|
-
}
|
45
|
-
|
46
|
-
//===--------------------------------------------------------------------===//
|
47
|
-
// Field Deserializer
|
48
|
-
//===--------------------------------------------------------------------===//
|
49
|
-
FieldDeserializer::FieldDeserializer(Deserializer &root) : root(root), remaining_data(idx_t(-1)) {
|
50
|
-
SetVersion(root.GetVersion());
|
51
|
-
}
|
52
|
-
|
53
|
-
void FieldDeserializer::ReadData(data_ptr_t buffer, idx_t read_size) {
|
54
|
-
D_ASSERT(remaining_data != idx_t(-1));
|
55
|
-
D_ASSERT(read_size <= remaining_data);
|
56
|
-
root.ReadData(buffer, read_size);
|
57
|
-
remaining_data -= read_size;
|
58
|
-
}
|
59
|
-
|
60
|
-
idx_t FieldDeserializer::RemainingData() {
|
61
|
-
return remaining_data;
|
62
|
-
}
|
63
|
-
|
64
|
-
void FieldDeserializer::SetRemainingData(idx_t remaining_data) {
|
65
|
-
this->remaining_data = remaining_data;
|
66
|
-
}
|
67
|
-
|
68
|
-
//===--------------------------------------------------------------------===//
|
69
|
-
// Field Reader
|
70
|
-
//===--------------------------------------------------------------------===//
|
71
|
-
FieldReader::FieldReader(Deserializer &source_p) : source(source_p), field_count(0), finalized(false) {
|
72
|
-
max_field_count = source_p.Read<uint32_t>();
|
73
|
-
total_size = source_p.Read<uint64_t>();
|
74
|
-
D_ASSERT(max_field_count > 0);
|
75
|
-
D_ASSERT(total_size > 0);
|
76
|
-
source.SetRemainingData(total_size);
|
77
|
-
}
|
78
|
-
|
79
|
-
FieldReader::~FieldReader() {
|
80
|
-
if (Exception::UncaughtException()) {
|
81
|
-
return;
|
82
|
-
}
|
83
|
-
D_ASSERT(finalized);
|
84
|
-
}
|
85
|
-
|
86
|
-
void FieldReader::Finalize() {
|
87
|
-
D_ASSERT(!finalized);
|
88
|
-
finalized = true;
|
89
|
-
if (field_count < max_field_count) {
|
90
|
-
// we can handle this case by calling source.ReadData(buffer, source.RemainingData())
|
91
|
-
throw SerializationException("Not all fields were read. This file might have been written with a newer version "
|
92
|
-
"of DuckDB and is incompatible with this version of DuckDB.");
|
93
|
-
}
|
94
|
-
D_ASSERT(source.RemainingData() == 0);
|
95
|
-
}
|
96
|
-
|
97
|
-
} // namespace duckdb
|
@@ -1,27 +0,0 @@
|
|
1
|
-
#include "duckdb/common/serializer/buffered_deserializer.hpp"
|
2
|
-
|
3
|
-
#include <cstring>
|
4
|
-
|
5
|
-
namespace duckdb {
|
6
|
-
|
7
|
-
BufferedDeserializer::BufferedDeserializer(data_ptr_t ptr, idx_t data_size) : ptr(ptr), endptr(ptr + data_size) {
|
8
|
-
}
|
9
|
-
|
10
|
-
BufferedDeserializer::BufferedDeserializer(BufferedSerializer &serializer)
|
11
|
-
: BufferedDeserializer(serializer.data, serializer.maximum_size) {
|
12
|
-
SetVersion(serializer.GetVersion());
|
13
|
-
}
|
14
|
-
|
15
|
-
void BufferedDeserializer::ReadData(data_ptr_t buffer, idx_t read_size) {
|
16
|
-
if (ptr + read_size > endptr) {
|
17
|
-
throw SerializationException("Failed to deserialize: not enough data in buffer to fulfill read request");
|
18
|
-
}
|
19
|
-
memcpy(buffer, ptr, read_size);
|
20
|
-
ptr += read_size;
|
21
|
-
}
|
22
|
-
|
23
|
-
ClientContext &BufferedContextDeserializer::GetContext() {
|
24
|
-
return context;
|
25
|
-
}
|
26
|
-
|
27
|
-
} // namespace duckdb
|
@@ -1,36 +0,0 @@
|
|
1
|
-
#include "duckdb/common/serializer/buffered_serializer.hpp"
|
2
|
-
|
3
|
-
#include <cstring>
|
4
|
-
|
5
|
-
namespace duckdb {
|
6
|
-
|
7
|
-
BufferedSerializer::BufferedSerializer(idx_t maximum_size)
|
8
|
-
: BufferedSerializer(make_unsafe_uniq_array<data_t>(maximum_size), maximum_size) {
|
9
|
-
}
|
10
|
-
|
11
|
-
BufferedSerializer::BufferedSerializer(unsafe_unique_array<data_t> data, idx_t size)
|
12
|
-
: maximum_size(size), data(data.get()) {
|
13
|
-
blob.size = 0;
|
14
|
-
blob.data = std::move(data);
|
15
|
-
}
|
16
|
-
|
17
|
-
BufferedSerializer::BufferedSerializer(data_ptr_t data, idx_t size) : maximum_size(size), data(data) {
|
18
|
-
blob.size = 0;
|
19
|
-
}
|
20
|
-
|
21
|
-
void BufferedSerializer::WriteData(const_data_ptr_t buffer, idx_t write_size) {
|
22
|
-
if (blob.size + write_size >= maximum_size) {
|
23
|
-
do {
|
24
|
-
maximum_size *= 2;
|
25
|
-
} while (blob.size + write_size > maximum_size);
|
26
|
-
auto new_data = new data_t[maximum_size];
|
27
|
-
memcpy(new_data, data, blob.size);
|
28
|
-
data = new_data;
|
29
|
-
blob.data = unsafe_unique_array<data_t>(new_data);
|
30
|
-
}
|
31
|
-
|
32
|
-
memcpy(data + blob.size, buffer, write_size);
|
33
|
-
blob.size += write_size;
|
34
|
-
}
|
35
|
-
|
36
|
-
} // namespace duckdb
|
@@ -1,24 +0,0 @@
|
|
1
|
-
#include "duckdb/common/serializer.hpp"
|
2
|
-
|
3
|
-
namespace duckdb {
|
4
|
-
|
5
|
-
template <>
|
6
|
-
string Deserializer::Read() {
|
7
|
-
uint32_t size = Read<uint32_t>();
|
8
|
-
if (size == 0) {
|
9
|
-
return string();
|
10
|
-
}
|
11
|
-
auto buffer = make_unsafe_uniq_array<data_t>(size);
|
12
|
-
ReadData(buffer.get(), size);
|
13
|
-
return string(const_char_ptr_cast(buffer.get()), size);
|
14
|
-
}
|
15
|
-
|
16
|
-
void Deserializer::ReadStringVector(vector<string> &list) {
|
17
|
-
uint32_t sz = Read<uint32_t>();
|
18
|
-
list.resize(sz);
|
19
|
-
for (idx_t i = 0; i < sz; i++) {
|
20
|
-
list[i] = Read<string>();
|
21
|
-
}
|
22
|
-
}
|
23
|
-
|
24
|
-
} // namespace duckdb
|