duckdb 0.8.2-dev161.0 → 0.8.2-dev1724.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 +15 -12
- package/binding.gyp.in +1 -1
- package/configure.py +1 -1
- package/duckdb_extension_config.cmake +10 -0
- package/package.json +1 -1
- package/src/duckdb/extension/icu/icu-dateadd.cpp +2 -2
- package/src/duckdb/extension/icu/icu-datefunc.cpp +1 -1
- package/src/duckdb/extension/icu/icu-datepart.cpp +2 -2
- package/src/duckdb/extension/icu/icu-datesub.cpp +2 -2
- package/src/duckdb/extension/icu/icu-datetrunc.cpp +1 -1
- package/src/duckdb/extension/icu/icu-list-range.cpp +1 -1
- package/src/duckdb/extension/icu/icu-makedate.cpp +7 -0
- package/src/duckdb/extension/icu/icu-strptime.cpp +4 -4
- package/src/duckdb/extension/icu/icu-table-range.cpp +5 -5
- package/src/duckdb/extension/icu/icu-timebucket.cpp +16 -16
- package/src/duckdb/extension/icu/icu-timezone.cpp +8 -8
- package/src/duckdb/extension/icu/icu_extension.cpp +3 -3
- package/src/duckdb/extension/json/include/json_common.hpp +47 -231
- package/src/duckdb/extension/json/include/json_executors.hpp +49 -13
- package/src/duckdb/extension/json/include/json_functions.hpp +2 -1
- package/src/duckdb/extension/json/json_common.cpp +272 -40
- package/src/duckdb/extension/json/json_functions/json_create.cpp +21 -2
- package/src/duckdb/extension/json/json_functions/json_structure.cpp +1 -1
- package/src/duckdb/extension/json/json_functions/json_transform.cpp +91 -38
- package/src/duckdb/extension/json/json_functions/json_type.cpp +1 -1
- package/src/duckdb/extension/json/json_functions.cpp +24 -24
- package/src/duckdb/extension/json/json_scan.cpp +3 -6
- package/src/duckdb/extension/parquet/column_reader.cpp +19 -21
- package/src/duckdb/extension/parquet/column_writer.cpp +77 -61
- package/src/duckdb/extension/parquet/include/cast_column_reader.hpp +2 -2
- package/src/duckdb/extension/parquet/include/column_reader.hpp +14 -16
- package/src/duckdb/extension/parquet/include/column_writer.hpp +9 -7
- package/src/duckdb/extension/parquet/include/list_column_reader.hpp +2 -2
- package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +3 -3
- package/src/duckdb/extension/parquet/include/parquet_decimal_utils.hpp +3 -3
- package/src/duckdb/extension/parquet/include/parquet_file_metadata_cache.hpp +2 -2
- package/src/duckdb/extension/parquet/include/parquet_statistics.hpp +2 -2
- package/src/duckdb/extension/parquet/include/parquet_support.hpp +9 -11
- package/src/duckdb/extension/parquet/include/parquet_writer.hpp +24 -5
- package/src/duckdb/extension/parquet/include/string_column_reader.hpp +1 -1
- package/src/duckdb/extension/parquet/include/struct_column_reader.hpp +2 -3
- package/src/duckdb/extension/parquet/include/zstd_file_system.hpp +2 -2
- package/src/duckdb/extension/parquet/parquet_extension.cpp +194 -20
- package/src/duckdb/extension/parquet/parquet_reader.cpp +6 -6
- package/src/duckdb/extension/parquet/parquet_statistics.cpp +7 -6
- package/src/duckdb/extension/parquet/parquet_writer.cpp +79 -16
- package/src/duckdb/extension/parquet/zstd_file_system.cpp +2 -2
- package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +1 -1
- package/src/duckdb/src/catalog/catalog_search_path.cpp +5 -4
- package/src/duckdb/src/catalog/default/default_functions.cpp +16 -0
- package/src/duckdb/src/common/adbc/adbc.cpp +75 -10
- package/src/duckdb/src/common/adbc/driver_manager.cpp +6 -11
- package/src/duckdb/src/common/allocator.cpp +14 -2
- package/src/duckdb/src/common/arrow/arrow_appender.cpp +79 -12
- package/src/duckdb/src/common/arrow/arrow_converter.cpp +44 -19
- package/src/duckdb/src/common/assert.cpp +3 -0
- package/src/duckdb/src/common/enum_util.cpp +4619 -4446
- package/src/duckdb/src/common/enums/logical_operator_type.cpp +4 -0
- package/src/duckdb/src/common/enums/optimizer_type.cpp +2 -0
- package/src/duckdb/src/common/enums/physical_operator_type.cpp +4 -0
- package/src/duckdb/src/common/exception.cpp +2 -2
- package/src/duckdb/src/common/extra_type_info.cpp +506 -0
- package/src/duckdb/src/common/file_system.cpp +19 -0
- package/src/duckdb/src/common/hive_partitioning.cpp +10 -6
- package/src/duckdb/src/common/local_file_system.cpp +14 -14
- package/src/duckdb/src/common/multi_file_reader.cpp +184 -20
- package/src/duckdb/src/common/operator/cast_operators.cpp +35 -1
- package/src/duckdb/src/common/radix_partitioning.cpp +26 -8
- package/src/duckdb/src/common/re2_regex.cpp +1 -1
- package/src/duckdb/src/common/row_operations/row_external.cpp +1 -1
- package/src/duckdb/src/common/sort/merge_sorter.cpp +9 -16
- package/src/duckdb/src/common/sort/partition_state.cpp +44 -11
- package/src/duckdb/src/common/types/batched_data_collection.cpp +7 -2
- package/src/duckdb/src/common/types/bit.cpp +51 -0
- package/src/duckdb/src/common/types/column/column_data_allocator.cpp +9 -6
- package/src/duckdb/src/common/types/column/column_data_collection.cpp +17 -2
- package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +15 -6
- package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +2 -2
- package/src/duckdb/src/common/types/data_chunk.cpp +2 -2
- package/src/duckdb/src/common/types/date.cpp +9 -0
- package/src/duckdb/src/common/types/list_segment.cpp +24 -74
- package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +3 -9
- package/src/duckdb/src/common/types/row/tuple_data_collection.cpp +2 -0
- package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +2 -2
- package/src/duckdb/src/common/types/uuid.cpp +2 -2
- package/src/duckdb/src/common/types/validity_mask.cpp +33 -0
- package/src/duckdb/src/common/types/value.cpp +11 -6
- package/src/duckdb/src/common/types.cpp +9 -656
- package/src/duckdb/src/common/virtual_file_system.cpp +138 -1
- package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +2 -0
- package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +2 -2
- package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +4 -4
- package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +4 -4
- package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +5 -4
- package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +8 -8
- package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +4 -3
- package/src/duckdb/src/core_functions/function_list.cpp +4 -2
- package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +208 -42
- package/src/duckdb/src/core_functions/scalar/date/epoch.cpp +10 -24
- package/src/duckdb/src/core_functions/scalar/date/make_date.cpp +19 -4
- package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +4 -2
- package/src/duckdb/src/execution/aggregate_hashtable.cpp +34 -18
- package/src/duckdb/src/execution/expression_executor.cpp +1 -1
- package/src/duckdb/src/execution/index/art/art.cpp +149 -139
- package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +1 -1
- package/src/duckdb/src/execution/index/art/iterator.cpp +129 -207
- package/src/duckdb/src/execution/index/art/leaf.cpp +8 -37
- package/src/duckdb/src/execution/index/art/node.cpp +113 -120
- package/src/duckdb/src/execution/index/art/node16.cpp +1 -10
- package/src/duckdb/src/execution/index/art/node256.cpp +1 -9
- package/src/duckdb/src/execution/index/art/node4.cpp +12 -13
- package/src/duckdb/src/execution/index/art/node48.cpp +1 -11
- package/src/duckdb/src/execution/index/art/prefix.cpp +228 -350
- package/src/duckdb/src/execution/join_hashtable.cpp +4 -4
- package/src/duckdb/src/execution/operator/aggregate/aggregate_object.cpp +1 -0
- package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +8 -3
- package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +32 -22
- package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +512 -300
- package/src/duckdb/src/execution/operator/helper/physical_batch_collector.cpp +4 -3
- package/src/duckdb/src/execution/operator/helper/physical_limit.cpp +5 -5
- package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +444 -284
- package/src/duckdb/src/execution/operator/join/physical_comparison_join.cpp +1 -1
- package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +21 -10
- package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +28 -12
- package/src/duckdb/src/execution/operator/join/physical_join.cpp +1 -1
- package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +23 -4
- package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +41 -5
- package/src/duckdb/src/execution/operator/persistent/base_csv_reader.cpp +100 -13
- package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +1 -1
- package/src/duckdb/src/execution/operator/persistent/csv_reader_options.cpp +20 -0
- package/src/duckdb/src/execution/operator/persistent/csv_rejects_table.cpp +48 -0
- package/src/duckdb/src/execution/operator/persistent/parallel_csv_reader.cpp +2 -3
- package/src/duckdb/src/execution/operator/persistent/physical_batch_copy_to_file.cpp +6 -4
- package/src/duckdb/src/execution/operator/persistent/physical_fixed_batch_copy.cpp +3 -3
- package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -1
- package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +2 -1
- package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +19 -0
- package/src/duckdb/src/execution/operator/scan/physical_table_scan.cpp +7 -2
- package/src/duckdb/src/execution/operator/set/physical_cte.cpp +160 -0
- package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +15 -5
- package/src/duckdb/src/execution/partitionable_hashtable.cpp +41 -6
- package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +30 -5
- package/src/duckdb/src/execution/physical_plan/plan_aggregate.cpp +43 -10
- package/src/duckdb/src/execution/physical_plan/plan_asof_join.cpp +56 -33
- package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +17 -13
- package/src/duckdb/src/execution/physical_plan/plan_cte.cpp +33 -0
- package/src/duckdb/src/execution/physical_plan/plan_get.cpp +2 -2
- package/src/duckdb/src/execution/physical_plan/plan_recursive_cte.cpp +25 -4
- package/src/duckdb/src/execution/physical_plan_generator.cpp +4 -0
- package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +290 -43
- package/src/duckdb/src/execution/window_segment_tree.cpp +286 -129
- package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +2 -1
- package/src/duckdb/src/function/cast/bit_cast.cpp +34 -2
- package/src/duckdb/src/function/cast/blob_cast.cpp +3 -0
- package/src/duckdb/src/function/cast/numeric_casts.cpp +2 -0
- package/src/duckdb/src/function/function.cpp +3 -1
- package/src/duckdb/src/function/pragma/pragma_queries.cpp +5 -0
- package/src/duckdb/src/function/scalar/compressed_materialization/compress_integral.cpp +212 -0
- package/src/duckdb/src/function/scalar/compressed_materialization/compress_string.cpp +249 -0
- package/src/duckdb/src/function/scalar/compressed_materialization_functions.cpp +29 -0
- package/src/duckdb/src/function/scalar/list/list_resize.cpp +162 -0
- package/src/duckdb/src/function/scalar/nested_functions.cpp +1 -0
- package/src/duckdb/src/function/scalar/string/like.cpp +12 -4
- package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +12 -5
- package/src/duckdb/src/function/table/arrow.cpp +19 -0
- package/src/duckdb/src/function/table/arrow_conversion.cpp +35 -1
- package/src/duckdb/src/function/table/copy_csv.cpp +8 -1
- package/src/duckdb/src/function/table/read_csv.cpp +100 -17
- package/src/duckdb/src/function/table/system/test_all_types.cpp +7 -0
- package/src/duckdb/src/function/table/system_functions.cpp +1 -0
- package/src/duckdb/src/function/table/table_scan.cpp +9 -0
- package/src/duckdb/src/function/table/version/pragma_version.cpp +46 -2
- package/src/duckdb/src/include/duckdb/common/adbc/adbc.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/allocator.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/bswap.hpp +42 -0
- package/src/duckdb/src/include/duckdb/common/dl.hpp +3 -1
- package/src/duckdb/src/include/duckdb/common/enum_util.hpp +616 -584
- package/src/duckdb/src/include/duckdb/common/enums/cte_materialize.hpp +21 -0
- package/src/duckdb/src/include/duckdb/common/enums/joinref_type.hpp +2 -1
- package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/enums/optimizer_type.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/extra_operator_info.hpp +27 -0
- package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +219 -0
- package/src/duckdb/src/include/duckdb/common/file_system.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/hive_partitioning.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/multi_file_reader.hpp +6 -4
- package/src/duckdb/src/include/duckdb/common/multi_file_reader_options.hpp +10 -42
- package/src/duckdb/src/include/duckdb/common/mutex.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/opener_file_system.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/operator/cast_operators.hpp +43 -3
- package/src/duckdb/src/include/duckdb/common/operator/numeric_cast.hpp +10 -0
- package/src/duckdb/src/include/duckdb/common/radix.hpp +9 -20
- package/src/duckdb/src/include/duckdb/common/radix_partitioning.hpp +6 -21
- package/src/duckdb/src/include/duckdb/common/row_operations/row_operations.hpp +3 -3
- package/src/duckdb/src/include/duckdb/common/sort/partition_state.hpp +13 -0
- package/src/duckdb/src/include/duckdb/common/string_util.hpp +11 -0
- package/src/duckdb/src/include/duckdb/common/types/batched_data_collection.hpp +3 -1
- package/src/duckdb/src/include/duckdb/common/types/bit.hpp +81 -0
- package/src/duckdb/src/include/duckdb/common/types/column/column_data_allocator.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection.hpp +6 -1
- package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection_segment.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/column/column_data_scan_states.hpp +3 -1
- package/src/duckdb/src/include/duckdb/common/types/data_chunk.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/date.hpp +7 -5
- package/src/duckdb/src/include/duckdb/common/types/list_segment.hpp +6 -8
- package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +0 -1
- package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_collection.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_states.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +9 -0
- package/src/duckdb/src/include/duckdb/common/types/value.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/types.hpp +1 -15
- package/src/duckdb/src/include/duckdb/common/virtual_file_system.hpp +38 -97
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/corr.hpp +4 -4
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/distributive_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/holistic_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/nested_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +1 -0
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +3 -3
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/bit_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/blob_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/date_functions.hpp +31 -11
- package/src/duckdb/src/include/duckdb/core_functions/scalar/enum_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/generic_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/list_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/map_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/math_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/operators_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/random_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/struct_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/union_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/execution/aggregate_hashtable.hpp +21 -3
- package/src/duckdb/src/include/duckdb/execution/executor.hpp +3 -0
- package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +4 -5
- package/src/duckdb/src/include/duckdb/execution/index/art/iterator.hpp +31 -27
- package/src/duckdb/src/include/duckdb/execution/index/art/leaf.hpp +6 -14
- package/src/duckdb/src/include/duckdb/execution/index/art/node.hpp +4 -10
- package/src/duckdb/src/include/duckdb/execution/index/art/node16.hpp +3 -6
- package/src/duckdb/src/include/duckdb/execution/index/art/node256.hpp +3 -6
- package/src/duckdb/src/include/duckdb/execution/index/art/node4.hpp +5 -8
- package/src/duckdb/src/include/duckdb/execution/index/art/node48.hpp +3 -6
- package/src/duckdb/src/include/duckdb/execution/index/art/prefix.hpp +63 -52
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_asof_join.hpp +3 -10
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_iejoin.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_piecewise_merge_join.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_range_join.hpp +12 -1
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/base_csv_reader.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_line_info.hpp +4 -3
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_reader_options.hpp +8 -1
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_rejects_table.hpp +36 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/parallel_csv_reader.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_column_data_scan.hpp +10 -0
- package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_table_scan.hpp +5 -1
- package/src/duckdb/src/include/duckdb/execution/operator/set/physical_cte.hpp +62 -0
- package/src/duckdb/src/include/duckdb/execution/operator/set/physical_recursive_cte.hpp +8 -2
- package/src/duckdb/src/include/duckdb/execution/partitionable_hashtable.hpp +5 -1
- package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +3 -0
- package/src/duckdb/src/include/duckdb/execution/radix_partitioned_hashtable.hpp +10 -3
- package/src/duckdb/src/include/duckdb/execution/window_segment_tree.hpp +51 -40
- package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +2 -2
- package/src/duckdb/src/include/duckdb/function/built_in_functions.hpp +1 -0
- package/src/duckdb/src/include/duckdb/function/scalar/compressed_materialization_functions.hpp +49 -0
- package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +5 -0
- package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +2 -0
- package/src/duckdb/src/include/duckdb/function/table/system_functions.hpp +4 -0
- package/src/duckdb/src/include/duckdb/main/client_config.hpp +5 -0
- package/src/duckdb/src/include/duckdb/main/config.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/connection.hpp +1 -2
- package/src/duckdb/src/include/duckdb/main/extension/generated_extension_loader.hpp +22 -0
- package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/relation/cross_product_relation.hpp +4 -1
- package/src/duckdb/src/include/duckdb/main/relation/join_relation.hpp +5 -2
- package/src/duckdb/src/include/duckdb/main/relation.hpp +4 -2
- package/src/duckdb/src/include/duckdb/main/settings.hpp +39 -1
- package/src/duckdb/src/include/duckdb/optimizer/column_binding_replacer.hpp +47 -0
- package/src/duckdb/src/include/duckdb/optimizer/compressed_materialization.hpp +132 -0
- package/src/duckdb/src/include/duckdb/optimizer/deliminator.hpp +13 -16
- package/src/duckdb/src/include/duckdb/optimizer/filter_pushdown.hpp +3 -0
- package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/join_order/estimated_properties.hpp +10 -1
- package/src/duckdb/src/include/duckdb/optimizer/join_order/join_order_optimizer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/join_order/join_relation.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/join_order/query_graph.hpp +3 -0
- package/src/duckdb/src/include/duckdb/optimizer/matcher/set_matcher.hpp +13 -0
- package/src/duckdb/src/include/duckdb/optimizer/optimizer.hpp +3 -0
- package/src/duckdb/src/include/duckdb/optimizer/remove_duplicate_groups.hpp +40 -0
- package/src/duckdb/src/include/duckdb/optimizer/statistics_propagator.hpp +11 -3
- package/src/duckdb/src/include/duckdb/optimizer/topn_optimizer.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parallel/pipeline.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parallel/task_scheduler.hpp +5 -0
- package/src/duckdb/src/include/duckdb/parser/common_table_expression_info.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/expression/default_expression.hpp +1 -0
- package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/query_node/cte_node.hpp +54 -0
- package/src/duckdb/src/include/duckdb/parser/query_node/list.hpp +1 -0
- package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +1 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/tokens.hpp +1 -0
- package/src/duckdb/src/include/duckdb/parser/transformer.hpp +15 -8
- package/src/duckdb/src/include/duckdb/planner/binder.hpp +12 -5
- package/src/duckdb/src/include/duckdb/planner/bound_tokens.hpp +1 -0
- package/src/duckdb/src/include/duckdb/planner/column_binding.hpp +4 -0
- package/src/duckdb/src/include/duckdb/planner/constraints/bound_unique_constraint.hpp +3 -3
- package/src/duckdb/src/include/duckdb/planner/expression_binder/lateral_binder.hpp +0 -2
- package/src/duckdb/src/include/duckdb/planner/logical_tokens.hpp +1 -0
- package/src/duckdb/src/include/duckdb/planner/operator/list.hpp +2 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_comparison_join.hpp +5 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_cteref.hpp +7 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_dependent_join.hpp +43 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +4 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_materialized_cte.hpp +49 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_recursive_cte.hpp +5 -4
- package/src/duckdb/src/include/duckdb/planner/query_node/bound_cte_node.hpp +44 -0
- package/src/duckdb/src/include/duckdb/planner/query_node/list.hpp +1 -0
- package/src/duckdb/src/include/duckdb/planner/subquery/flatten_dependent_join.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/subquery/has_correlated_expressions.hpp +4 -1
- package/src/duckdb/src/include/duckdb/planner/subquery/recursive_dependent_join_planner.hpp +31 -0
- package/src/duckdb/src/include/duckdb/planner/subquery/rewrite_correlated_expressions.hpp +8 -2
- package/src/duckdb/src/include/duckdb/planner/tableref/bound_cteref.hpp +5 -2
- package/src/duckdb/src/include/duckdb/storage/arena_allocator.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/block_manager.hpp +3 -3
- package/src/duckdb/src/include/duckdb/storage/data_table.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/object_cache.hpp +22 -0
- package/src/duckdb/src/include/duckdb/storage/single_file_block_manager.hpp +2 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/string_stats.hpp +4 -0
- package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +3 -0
- package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +3 -2
- package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +1 -3
- package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +2 -3
- package/src/duckdb/src/include/duckdb.h +28 -0
- package/src/duckdb/src/main/capi/arrow-c.cpp +155 -1
- package/src/duckdb/src/main/capi/duckdb_value-c.cpp +1 -1
- package/src/duckdb/src/main/config.cpp +4 -0
- package/src/duckdb/src/main/database.cpp +1 -1
- package/src/duckdb/src/main/extension/extension_helper.cpp +93 -88
- package/src/duckdb/src/main/extension/extension_install.cpp +9 -0
- package/src/duckdb/src/main/extension/extension_load.cpp +10 -1
- package/src/duckdb/src/main/relation/cross_product_relation.cpp +4 -3
- package/src/duckdb/src/main/relation/join_relation.cpp +5 -5
- package/src/duckdb/src/main/relation.cpp +6 -5
- package/src/duckdb/src/main/settings/settings.cpp +79 -18
- package/src/duckdb/src/optimizer/column_binding_replacer.cpp +43 -0
- package/src/duckdb/src/optimizer/column_lifetime_analyzer.cpp +1 -2
- package/src/duckdb/src/optimizer/compressed_materialization/compress_aggregate.cpp +140 -0
- package/src/duckdb/src/optimizer/compressed_materialization/compress_distinct.cpp +42 -0
- package/src/duckdb/src/optimizer/compressed_materialization/compress_order.cpp +65 -0
- package/src/duckdb/src/optimizer/compressed_materialization.cpp +478 -0
- package/src/duckdb/src/optimizer/deliminator.cpp +176 -321
- package/src/duckdb/src/optimizer/filter_pushdown.cpp +9 -0
- package/src/duckdb/src/optimizer/join_order/estimated_properties.cpp +7 -0
- package/src/duckdb/src/optimizer/join_order/join_node.cpp +2 -2
- package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +113 -82
- package/src/duckdb/src/optimizer/join_order/join_relation_set.cpp +2 -6
- package/src/duckdb/src/optimizer/join_order/query_graph.cpp +22 -14
- package/src/duckdb/src/optimizer/optimizer.cpp +51 -14
- package/src/duckdb/src/optimizer/pushdown/pushdown_cross_product.cpp +5 -5
- package/src/duckdb/src/optimizer/pushdown/pushdown_get.cpp +0 -1
- package/src/duckdb/src/optimizer/remove_duplicate_groups.cpp +127 -0
- package/src/duckdb/src/optimizer/remove_unused_columns.cpp +4 -0
- package/src/duckdb/src/optimizer/rule/regex_optimizations.cpp +154 -15
- package/src/duckdb/src/optimizer/statistics/operator/propagate_join.cpp +65 -8
- package/src/duckdb/src/optimizer/statistics/operator/propagate_order.cpp +1 -1
- package/src/duckdb/src/optimizer/statistics_propagator.cpp +7 -5
- package/src/duckdb/src/optimizer/topn_optimizer.cpp +20 -10
- package/src/duckdb/src/parallel/executor.cpp +15 -0
- package/src/duckdb/src/parallel/task_scheduler.cpp +11 -2
- package/src/duckdb/src/parser/common_table_expression_info.cpp +2 -0
- package/src/duckdb/src/parser/expression/between_expression.cpp +3 -15
- package/src/duckdb/src/parser/expression/case_expression.cpp +0 -13
- package/src/duckdb/src/parser/expression/cast_expression.cpp +3 -14
- package/src/duckdb/src/parser/expression/collate_expression.cpp +3 -13
- package/src/duckdb/src/parser/expression/columnref_expression.cpp +3 -12
- package/src/duckdb/src/parser/expression/comparison_expression.cpp +3 -13
- package/src/duckdb/src/parser/expression/conjunction_expression.cpp +0 -12
- package/src/duckdb/src/parser/expression/constant_expression.cpp +3 -11
- package/src/duckdb/src/parser/expression/default_expression.cpp +0 -4
- package/src/duckdb/src/parser/expression/function_expression.cpp +3 -32
- package/src/duckdb/src/parser/expression/lambda_expression.cpp +4 -14
- package/src/duckdb/src/parser/expression/operator_expression.cpp +0 -12
- package/src/duckdb/src/parser/expression/parameter_expression.cpp +0 -12
- package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +4 -11
- package/src/duckdb/src/parser/expression/star_expression.cpp +0 -19
- package/src/duckdb/src/parser/expression/subquery_expression.cpp +0 -18
- package/src/duckdb/src/parser/expression/window_expression.cpp +3 -39
- package/src/duckdb/src/parser/parsed_expression.cpp +0 -70
- package/src/duckdb/src/parser/parsed_expression_iterator.cpp +7 -0
- package/src/duckdb/src/parser/parser.cpp +8 -2
- package/src/duckdb/src/parser/query_node/cte_node.cpp +58 -0
- package/src/duckdb/src/parser/query_node/recursive_cte_node.cpp +0 -19
- package/src/duckdb/src/parser/query_node/select_node.cpp +0 -29
- package/src/duckdb/src/parser/query_node/set_operation_node.cpp +0 -15
- package/src/duckdb/src/parser/query_node.cpp +15 -37
- package/src/duckdb/src/parser/result_modifier.cpp +0 -74
- package/src/duckdb/src/parser/tableref/basetableref.cpp +0 -19
- package/src/duckdb/src/parser/tableref/emptytableref.cpp +0 -4
- package/src/duckdb/src/parser/tableref/expressionlistref.cpp +0 -15
- package/src/duckdb/src/parser/tableref/joinref.cpp +3 -23
- package/src/duckdb/src/parser/tableref/pivotref.cpp +0 -23
- package/src/duckdb/src/parser/tableref/subqueryref.cpp +3 -13
- package/src/duckdb/src/parser/tableref/table_function.cpp +0 -15
- package/src/duckdb/src/parser/tableref.cpp +0 -44
- package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +55 -3
- package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +2 -0
- package/src/duckdb/src/parser/transform/expression/transform_multi_assign_reference.cpp +44 -0
- package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +19 -1
- package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +13 -0
- package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +6 -1
- package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +6 -1
- package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +7 -2
- package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +14 -11
- package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +11 -2
- package/src/duckdb/src/parser/transform/statement/transform_update.cpp +6 -1
- package/src/duckdb/src/parser/transformer.cpp +15 -0
- package/src/duckdb/src/planner/binder/query_node/bind_cte_node.cpp +64 -0
- package/src/duckdb/src/planner/binder/query_node/plan_cte_node.cpp +26 -0
- package/src/duckdb/src/planner/binder/query_node/plan_recursive_cte_node.cpp +5 -5
- package/src/duckdb/src/planner/binder/query_node/plan_setop.cpp +4 -4
- package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +32 -29
- package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +5 -4
- package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +11 -2
- package/src/duckdb/src/planner/binder/tableref/bind_joinref.cpp +32 -5
- package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +116 -49
- package/src/duckdb/src/planner/binder/tableref/plan_cteref.cpp +1 -1
- package/src/duckdb/src/planner/binder/tableref/plan_joinref.cpp +64 -26
- package/src/duckdb/src/planner/binder/tableref/plan_subqueryref.cpp +3 -3
- package/src/duckdb/src/planner/binder.cpp +44 -31
- package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +1 -1
- package/src/duckdb/src/planner/expression_binder/lateral_binder.cpp +4 -31
- package/src/duckdb/src/planner/expression_binder.cpp +3 -0
- package/src/duckdb/src/planner/expression_iterator.cpp +6 -0
- package/src/duckdb/src/planner/logical_operator.cpp +5 -0
- package/src/duckdb/src/planner/logical_operator_visitor.cpp +2 -0
- package/src/duckdb/src/planner/operator/logical_cteref.cpp +3 -1
- package/src/duckdb/src/planner/operator/logical_dependent_join.cpp +26 -0
- package/src/duckdb/src/planner/operator/logical_get.cpp +9 -4
- package/src/duckdb/src/planner/operator/logical_materialized_cte.cpp +21 -0
- package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +90 -38
- package/src/duckdb/src/planner/subquery/has_correlated_expressions.cpp +22 -7
- package/src/duckdb/src/planner/subquery/rewrite_correlated_expressions.cpp +65 -7
- package/src/duckdb/src/storage/arena_allocator.cpp +1 -2
- package/src/duckdb/src/storage/buffer/block_manager.cpp +3 -0
- package/src/duckdb/src/storage/checkpoint_manager.cpp +3 -0
- package/src/duckdb/src/storage/compression/rle.cpp +0 -1
- package/src/duckdb/src/storage/data_table.cpp +1 -1
- package/src/duckdb/src/storage/local_storage.cpp +3 -3
- package/src/duckdb/src/storage/serialization/serialize_parsed_expression.cpp +340 -0
- package/src/duckdb/src/storage/serialization/serialize_query_node.cpp +122 -0
- package/src/duckdb/src/storage/serialization/serialize_result_modifier.cpp +86 -0
- package/src/duckdb/src/storage/serialization/serialize_tableref.cpp +166 -0
- package/src/duckdb/src/storage/serialization/serialize_types.cpp +127 -0
- package/src/duckdb/src/storage/single_file_block_manager.cpp +23 -0
- package/src/duckdb/src/storage/statistics/string_stats.cpp +21 -2
- package/src/duckdb/src/storage/storage_info.cpp +1 -1
- package/src/duckdb/src/storage/table/chunk_info.cpp +17 -0
- package/src/duckdb/src/storage/table/row_group.cpp +25 -9
- package/src/duckdb/src/storage/table/row_group_collection.cpp +19 -18
- package/src/duckdb/third_party/concurrentqueue/concurrentqueue.h +2 -2
- package/src/duckdb/third_party/concurrentqueue/lightweightsemaphore.h +76 -0
- package/src/duckdb/third_party/fast_float/fast_float/fast_float.h +2 -0
- package/src/duckdb/third_party/httplib/httplib.hpp +10 -1
- package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +9 -0
- package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +2 -1
- package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +12487 -12331
- package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +6 -6
- package/src/duckdb/ub_src_common.cpp +2 -0
- package/src/duckdb/ub_src_execution_index_art.cpp +0 -2
- package/src/duckdb/ub_src_execution_operator_persistent.cpp +2 -0
- package/src/duckdb/ub_src_execution_operator_set.cpp +2 -0
- package/src/duckdb/ub_src_execution_physical_plan.cpp +2 -0
- package/src/duckdb/ub_src_function_scalar.cpp +2 -0
- package/src/duckdb/ub_src_function_scalar_compressed_materialization.cpp +4 -0
- package/src/duckdb/ub_src_function_scalar_list.cpp +2 -0
- package/src/duckdb/ub_src_optimizer.cpp +6 -0
- package/src/duckdb/ub_src_optimizer_compressed_materialization.cpp +6 -0
- package/src/duckdb/ub_src_optimizer_statistics_expression.cpp +0 -2
- package/src/duckdb/ub_src_parser_query_node.cpp +2 -0
- package/src/duckdb/ub_src_parser_transform_expression.cpp +2 -0
- package/src/duckdb/ub_src_planner_binder_query_node.cpp +4 -0
- package/src/duckdb/ub_src_planner_operator.cpp +4 -0
- package/src/duckdb/ub_src_storage_serialization.cpp +10 -0
- package/src/statement.cpp +10 -3
- package/test/columns.test.ts +24 -1
- package/test/test_all_types.test.ts +234 -0
- package/tsconfig.json +1 -0
- package/src/duckdb/src/execution/index/art/prefix_segment.cpp +0 -42
- package/src/duckdb/src/include/duckdb/execution/index/art/prefix_segment.hpp +0 -40
- package/src/duckdb/src/optimizer/statistics/expression/propagate_and_compress.cpp +0 -118
@@ -0,0 +1,21 @@
|
|
1
|
+
//===----------------------------------------------------------------------===//
|
2
|
+
// DuckDB
|
3
|
+
//
|
4
|
+
// duckdb/common/enums/cte_materialize.hpp
|
5
|
+
//
|
6
|
+
//
|
7
|
+
//===----------------------------------------------------------------------===//
|
8
|
+
|
9
|
+
#pragma once
|
10
|
+
|
11
|
+
#include "duckdb/common/constants.hpp"
|
12
|
+
|
13
|
+
namespace duckdb {
|
14
|
+
|
15
|
+
enum class CTEMaterialize : uint8_t {
|
16
|
+
CTE_MATERIALIZE_DEFAULT = 1, /* no option specified */
|
17
|
+
CTE_MATERIALIZE_ALWAYS = 2, /* MATERIALIZED */
|
18
|
+
CTE_MATERIALIZE_NEVER = 3 /* NOT MATERIALIZED */
|
19
|
+
};
|
20
|
+
|
21
|
+
} // namespace duckdb
|
@@ -20,7 +20,8 @@ enum class JoinRefType : uint8_t {
|
|
20
20
|
NATURAL, // Implied conditions
|
21
21
|
CROSS, // No condition
|
22
22
|
POSITIONAL, // Positional condition
|
23
|
-
ASOF
|
23
|
+
ASOF, // AsOf conditions
|
24
|
+
DEPENDENT, // Dependent join conditions
|
24
25
|
};
|
25
26
|
|
26
27
|
const char *ToString(JoinRefType value);
|
@@ -51,6 +51,7 @@ enum class LogicalOperatorType : uint8_t {
|
|
51
51
|
LOGICAL_CROSS_PRODUCT = 54,
|
52
52
|
LOGICAL_POSITIONAL_JOIN = 55,
|
53
53
|
LOGICAL_ASOF_JOIN = 56,
|
54
|
+
LOGICAL_DEPENDENT_JOIN = 57,
|
54
55
|
// -----------------------------
|
55
56
|
// SetOps
|
56
57
|
// -----------------------------
|
@@ -58,6 +59,7 @@ enum class LogicalOperatorType : uint8_t {
|
|
58
59
|
LOGICAL_EXCEPT = 76,
|
59
60
|
LOGICAL_INTERSECT = 77,
|
60
61
|
LOGICAL_RECURSIVE_CTE = 78,
|
62
|
+
LOGICAL_MATERIALIZED_CTE = 79,
|
61
63
|
|
62
64
|
// -----------------------------
|
63
65
|
// Updates
|
@@ -45,6 +45,7 @@ enum class PhysicalOperatorType : uint8_t {
|
|
45
45
|
COLUMN_DATA_SCAN,
|
46
46
|
CHUNK_SCAN,
|
47
47
|
RECURSIVE_CTE_SCAN,
|
48
|
+
CTE_SCAN,
|
48
49
|
DELIM_SCAN,
|
49
50
|
EXPRESSION_SCAN,
|
50
51
|
POSITIONAL_SCAN,
|
@@ -66,6 +67,7 @@ enum class PhysicalOperatorType : uint8_t {
|
|
66
67
|
// -----------------------------
|
67
68
|
UNION,
|
68
69
|
RECURSIVE_CTE,
|
70
|
+
CTE,
|
69
71
|
|
70
72
|
// -----------------------------
|
71
73
|
// Updates
|
@@ -0,0 +1,27 @@
|
|
1
|
+
//===----------------------------------------------------------------------===//
|
2
|
+
// DuckDB
|
3
|
+
//
|
4
|
+
// duckdb/common/extra_operator_info.hpp
|
5
|
+
//
|
6
|
+
//
|
7
|
+
//===----------------------------------------------------------------------===//
|
8
|
+
|
9
|
+
#pragma once
|
10
|
+
|
11
|
+
#include <algorithm>
|
12
|
+
#include <cstdint>
|
13
|
+
#include <cstring>
|
14
|
+
#include "duckdb/common/operator/comparison_operators.hpp"
|
15
|
+
|
16
|
+
namespace duckdb {
|
17
|
+
|
18
|
+
class ExtraOperatorInfo {
|
19
|
+
public:
|
20
|
+
ExtraOperatorInfo() : file_filters("") {
|
21
|
+
}
|
22
|
+
ExtraOperatorInfo(ExtraOperatorInfo &extra_info) : file_filters(extra_info.file_filters) {
|
23
|
+
}
|
24
|
+
string file_filters;
|
25
|
+
};
|
26
|
+
|
27
|
+
} // namespace duckdb
|
@@ -0,0 +1,219 @@
|
|
1
|
+
//===----------------------------------------------------------------------===//
|
2
|
+
// DuckDB
|
3
|
+
//
|
4
|
+
// duckdb/common/extra_type_info.hpp
|
5
|
+
//
|
6
|
+
//
|
7
|
+
//===----------------------------------------------------------------------===//
|
8
|
+
|
9
|
+
#pragma once
|
10
|
+
|
11
|
+
#include "duckdb/common/common.hpp"
|
12
|
+
#include "duckdb/common/types/vector.hpp"
|
13
|
+
|
14
|
+
namespace duckdb {
|
15
|
+
|
16
|
+
class FieldReader;
|
17
|
+
|
18
|
+
//! Extra Type Info Type
|
19
|
+
enum class ExtraTypeInfoType : uint8_t {
|
20
|
+
INVALID_TYPE_INFO = 0,
|
21
|
+
GENERIC_TYPE_INFO = 1,
|
22
|
+
DECIMAL_TYPE_INFO = 2,
|
23
|
+
STRING_TYPE_INFO = 3,
|
24
|
+
LIST_TYPE_INFO = 4,
|
25
|
+
STRUCT_TYPE_INFO = 5,
|
26
|
+
ENUM_TYPE_INFO = 6,
|
27
|
+
USER_TYPE_INFO = 7,
|
28
|
+
AGGREGATE_STATE_TYPE_INFO = 8
|
29
|
+
};
|
30
|
+
|
31
|
+
struct ExtraTypeInfo {
|
32
|
+
explicit ExtraTypeInfo(ExtraTypeInfoType type);
|
33
|
+
explicit ExtraTypeInfo(ExtraTypeInfoType type, string alias);
|
34
|
+
virtual ~ExtraTypeInfo();
|
35
|
+
|
36
|
+
ExtraTypeInfoType type;
|
37
|
+
string alias;
|
38
|
+
optional_ptr<TypeCatalogEntry> catalog_entry;
|
39
|
+
|
40
|
+
public:
|
41
|
+
bool Equals(ExtraTypeInfo *other_p) const;
|
42
|
+
//! Serializes a ExtraTypeInfo to a stand-alone binary blob
|
43
|
+
virtual void Serialize(FieldWriter &writer) const;
|
44
|
+
//! Serializes a ExtraTypeInfo to a stand-alone binary blob
|
45
|
+
static void Serialize(ExtraTypeInfo *info, FieldWriter &writer);
|
46
|
+
//! Deserializes a blob back into an ExtraTypeInfo
|
47
|
+
static shared_ptr<ExtraTypeInfo> Deserialize(FieldReader &reader);
|
48
|
+
|
49
|
+
virtual void FormatSerialize(FormatSerializer &serializer) const;
|
50
|
+
static shared_ptr<ExtraTypeInfo> FormatDeserialize(FormatDeserializer &source);
|
51
|
+
|
52
|
+
template <class TARGET>
|
53
|
+
TARGET &Cast() {
|
54
|
+
D_ASSERT(dynamic_cast<TARGET *>(this));
|
55
|
+
return reinterpret_cast<TARGET &>(*this);
|
56
|
+
}
|
57
|
+
template <class TARGET>
|
58
|
+
const TARGET &Cast() const {
|
59
|
+
D_ASSERT(dynamic_cast<const TARGET *>(this));
|
60
|
+
return reinterpret_cast<const TARGET &>(*this);
|
61
|
+
}
|
62
|
+
|
63
|
+
protected:
|
64
|
+
virtual bool EqualsInternal(ExtraTypeInfo *other_p) const;
|
65
|
+
};
|
66
|
+
|
67
|
+
struct DecimalTypeInfo : public ExtraTypeInfo {
|
68
|
+
DecimalTypeInfo(uint8_t width_p, uint8_t scale_p);
|
69
|
+
|
70
|
+
uint8_t width;
|
71
|
+
uint8_t scale;
|
72
|
+
|
73
|
+
public:
|
74
|
+
void Serialize(FieldWriter &writer) const override;
|
75
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
76
|
+
|
77
|
+
static shared_ptr<ExtraTypeInfo> FormatDeserialize(FormatDeserializer &source);
|
78
|
+
static shared_ptr<ExtraTypeInfo> Deserialize(FieldReader &reader);
|
79
|
+
|
80
|
+
protected:
|
81
|
+
bool EqualsInternal(ExtraTypeInfo *other_p) const override;
|
82
|
+
|
83
|
+
private:
|
84
|
+
DecimalTypeInfo();
|
85
|
+
};
|
86
|
+
|
87
|
+
struct StringTypeInfo : public ExtraTypeInfo {
|
88
|
+
explicit StringTypeInfo(string collation_p);
|
89
|
+
|
90
|
+
string collation;
|
91
|
+
|
92
|
+
public:
|
93
|
+
void Serialize(FieldWriter &writer) const override;
|
94
|
+
static shared_ptr<ExtraTypeInfo> Deserialize(FieldReader &reader);
|
95
|
+
|
96
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
97
|
+
static shared_ptr<ExtraTypeInfo> FormatDeserialize(FormatDeserializer &source);
|
98
|
+
|
99
|
+
protected:
|
100
|
+
bool EqualsInternal(ExtraTypeInfo *other_p) const override;
|
101
|
+
|
102
|
+
private:
|
103
|
+
StringTypeInfo();
|
104
|
+
};
|
105
|
+
|
106
|
+
struct ListTypeInfo : public ExtraTypeInfo {
|
107
|
+
explicit ListTypeInfo(LogicalType child_type_p);
|
108
|
+
|
109
|
+
LogicalType child_type;
|
110
|
+
|
111
|
+
public:
|
112
|
+
void Serialize(FieldWriter &writer) const override;
|
113
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
114
|
+
|
115
|
+
static shared_ptr<ExtraTypeInfo> Deserialize(FieldReader &reader);
|
116
|
+
static shared_ptr<ExtraTypeInfo> FormatDeserialize(FormatDeserializer &source);
|
117
|
+
|
118
|
+
protected:
|
119
|
+
bool EqualsInternal(ExtraTypeInfo *other_p) const override;
|
120
|
+
|
121
|
+
private:
|
122
|
+
ListTypeInfo();
|
123
|
+
};
|
124
|
+
|
125
|
+
struct StructTypeInfo : public ExtraTypeInfo {
|
126
|
+
explicit StructTypeInfo(child_list_t<LogicalType> child_types_p);
|
127
|
+
|
128
|
+
child_list_t<LogicalType> child_types;
|
129
|
+
|
130
|
+
public:
|
131
|
+
void Serialize(FieldWriter &writer) const override;
|
132
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
133
|
+
|
134
|
+
static shared_ptr<ExtraTypeInfo> Deserialize(FieldReader &reader);
|
135
|
+
|
136
|
+
static shared_ptr<ExtraTypeInfo> FormatDeserialize(FormatDeserializer &deserializer);
|
137
|
+
|
138
|
+
protected:
|
139
|
+
bool EqualsInternal(ExtraTypeInfo *other_p) const override;
|
140
|
+
|
141
|
+
private:
|
142
|
+
StructTypeInfo();
|
143
|
+
};
|
144
|
+
|
145
|
+
struct AggregateStateTypeInfo : public ExtraTypeInfo {
|
146
|
+
explicit AggregateStateTypeInfo(aggregate_state_t state_type_p);
|
147
|
+
|
148
|
+
aggregate_state_t state_type;
|
149
|
+
|
150
|
+
public:
|
151
|
+
void Serialize(FieldWriter &writer) const override;
|
152
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
153
|
+
|
154
|
+
static shared_ptr<ExtraTypeInfo> FormatDeserialize(FormatDeserializer &source);
|
155
|
+
static shared_ptr<ExtraTypeInfo> Deserialize(FieldReader &reader);
|
156
|
+
|
157
|
+
protected:
|
158
|
+
bool EqualsInternal(ExtraTypeInfo *other_p) const override;
|
159
|
+
|
160
|
+
private:
|
161
|
+
AggregateStateTypeInfo();
|
162
|
+
};
|
163
|
+
|
164
|
+
struct UserTypeInfo : public ExtraTypeInfo {
|
165
|
+
explicit UserTypeInfo(string name_p);
|
166
|
+
|
167
|
+
string user_type_name;
|
168
|
+
|
169
|
+
public:
|
170
|
+
void Serialize(FieldWriter &writer) const override;
|
171
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
172
|
+
|
173
|
+
static shared_ptr<ExtraTypeInfo> Deserialize(FieldReader &reader);
|
174
|
+
static shared_ptr<ExtraTypeInfo> FormatDeserialize(FormatDeserializer &source);
|
175
|
+
|
176
|
+
protected:
|
177
|
+
bool EqualsInternal(ExtraTypeInfo *other_p) const override;
|
178
|
+
|
179
|
+
private:
|
180
|
+
UserTypeInfo();
|
181
|
+
};
|
182
|
+
|
183
|
+
// If this type is primarily stored in the catalog or not. Enums from Pandas/Factors are not in the catalog.
|
184
|
+
enum EnumDictType : uint8_t { INVALID = 0, VECTOR_DICT = 1 };
|
185
|
+
|
186
|
+
struct EnumTypeInfo : public ExtraTypeInfo {
|
187
|
+
explicit EnumTypeInfo(string enum_name_p, Vector &values_insert_order_p, idx_t dict_size_p);
|
188
|
+
EnumTypeInfo(const EnumTypeInfo &) = delete;
|
189
|
+
EnumTypeInfo &operator=(const EnumTypeInfo &) = delete;
|
190
|
+
|
191
|
+
public:
|
192
|
+
const EnumDictType &GetEnumDictType() const;
|
193
|
+
const string &GetEnumName() const;
|
194
|
+
const string GetSchemaName() const;
|
195
|
+
const Vector &GetValuesInsertOrder() const;
|
196
|
+
const idx_t &GetDictSize() const;
|
197
|
+
static PhysicalType DictType(idx_t size);
|
198
|
+
|
199
|
+
static LogicalType CreateType(const string &enum_name, Vector &ordered_data, idx_t size);
|
200
|
+
|
201
|
+
void Serialize(FieldWriter &writer) const override;
|
202
|
+
static shared_ptr<ExtraTypeInfo> Deserialize(FieldReader &reader);
|
203
|
+
|
204
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
205
|
+
static shared_ptr<ExtraTypeInfo> FormatDeserialize(FormatDeserializer &source);
|
206
|
+
|
207
|
+
protected:
|
208
|
+
// Equalities are only used in enums with different catalog entries
|
209
|
+
bool EqualsInternal(ExtraTypeInfo *other_p) const override;
|
210
|
+
|
211
|
+
Vector values_insert_order;
|
212
|
+
|
213
|
+
private:
|
214
|
+
EnumDictType dict_type;
|
215
|
+
string enum_name;
|
216
|
+
idx_t dict_size;
|
217
|
+
};
|
218
|
+
|
219
|
+
} // namespace duckdb
|
@@ -246,6 +246,8 @@ public:
|
|
246
246
|
|
247
247
|
//! Whether or not a file is remote or local, based only on file path
|
248
248
|
DUCKDB_API static bool IsRemoteFile(const string &path);
|
249
|
+
|
250
|
+
DUCKDB_API virtual void SetDisabledFileSystems(const vector<string> &names);
|
249
251
|
};
|
250
252
|
|
251
253
|
} // namespace duckdb
|
@@ -31,7 +31,7 @@ public:
|
|
31
31
|
//! evaluate to true.
|
32
32
|
DUCKDB_API static void ApplyFiltersToFileList(ClientContext &context, vector<string> &files,
|
33
33
|
vector<unique_ptr<Expression>> &filters,
|
34
|
-
unordered_map<string, column_t> &column_map,
|
34
|
+
unordered_map<string, column_t> &column_map, LogicalGet &get,
|
35
35
|
bool hive_enabled, bool filename_enabled);
|
36
36
|
|
37
37
|
//! Returns the compiled regex pattern to match hive partitions
|
@@ -87,7 +87,8 @@ struct MultiFileReader {
|
|
87
87
|
DUCKDB_API static vector<string> GetFileList(ClientContext &context, const Value &input, const string &name,
|
88
88
|
FileGlobOptions options = FileGlobOptions::DISALLOW_EMPTY);
|
89
89
|
//! Parse the named parameters of a multi-file reader
|
90
|
-
DUCKDB_API static bool ParseOption(const string &key, const Value &val, MultiFileReaderOptions &options
|
90
|
+
DUCKDB_API static bool ParseOption(const string &key, const Value &val, MultiFileReaderOptions &options,
|
91
|
+
ClientContext &context);
|
91
92
|
//! Perform complex filter pushdown into the multi-file reader, potentially filtering out files that should be read
|
92
93
|
//! If "true" the first file has been eliminated
|
93
94
|
DUCKDB_API static bool ComplexFilterPushdown(ClientContext &context, vector<string> &files,
|
@@ -102,7 +103,7 @@ struct MultiFileReader {
|
|
102
103
|
const MultiFileReaderBindData &options, const string &filename,
|
103
104
|
const vector<string> &local_names, const vector<LogicalType> &global_types,
|
104
105
|
const vector<string> &global_names, const vector<column_t> &global_column_ids,
|
105
|
-
MultiFileReaderData &reader_data);
|
106
|
+
MultiFileReaderData &reader_data, ClientContext &context);
|
106
107
|
//! Create all required mappings from the global types/names to the file-local types/names
|
107
108
|
DUCKDB_API static void CreateMapping(const string &file_name, const vector<LogicalType> &local_types,
|
108
109
|
const vector<string> &local_names, const vector<LogicalType> &global_types,
|
@@ -157,9 +158,10 @@ struct MultiFileReader {
|
|
157
158
|
static void InitializeReader(READER_CLASS &reader, const MultiFileReaderOptions &options,
|
158
159
|
const MultiFileReaderBindData &bind_data, const vector<LogicalType> &global_types,
|
159
160
|
const vector<string> &global_names, const vector<column_t> &global_column_ids,
|
160
|
-
optional_ptr<TableFilterSet> table_filters, const string &initial_file
|
161
|
+
optional_ptr<TableFilterSet> table_filters, const string &initial_file,
|
162
|
+
ClientContext &context) {
|
161
163
|
FinalizeBind(options, bind_data, reader.GetFileName(), reader.GetNames(), global_types, global_names,
|
162
|
-
global_column_ids, reader.reader_data);
|
164
|
+
global_column_ids, reader.reader_data, context);
|
163
165
|
CreateMapping(reader.GetFileName(), reader.GetTypes(), reader.GetNames(), global_types, global_names,
|
164
166
|
global_column_ids, table_filters, reader.reader_data, initial_file);
|
165
167
|
reader.reader_data.filters = table_filters;
|
@@ -9,8 +9,9 @@
|
|
9
9
|
#pragma once
|
10
10
|
|
11
11
|
#include "duckdb/common/types.hpp"
|
12
|
+
#include "duckdb/common/case_insensitive_map.hpp"
|
12
13
|
#include "duckdb/common/hive_partitioning.hpp"
|
13
|
-
#include "
|
14
|
+
#include "duckdb/main/client_context.hpp"
|
14
15
|
|
15
16
|
namespace duckdb {
|
16
17
|
class Serializer;
|
@@ -22,51 +23,18 @@ struct MultiFileReaderOptions {
|
|
22
23
|
bool hive_partitioning = false;
|
23
24
|
bool auto_detect_hive_partitioning = true;
|
24
25
|
bool union_by_name = false;
|
26
|
+
bool hive_types_autocast = true;
|
27
|
+
case_insensitive_map_t<LogicalType> hive_types_schema;
|
25
28
|
|
26
29
|
DUCKDB_API void Serialize(Serializer &serializer) const;
|
27
30
|
DUCKDB_API static MultiFileReaderOptions Deserialize(Deserializer &source);
|
28
31
|
DUCKDB_API void AddBatchInfo(BindInfo &bind_info) const;
|
29
|
-
|
30
|
-
static bool
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
std::unordered_set<string> uset;
|
36
|
-
idx_t splits_size;
|
37
|
-
{
|
38
|
-
// front file
|
39
|
-
auto splits = StringUtil::Split(files.front(), FileSystem::PathSeparator());
|
40
|
-
splits_size = splits.size();
|
41
|
-
if (splits.size() < 2) {
|
42
|
-
return false;
|
43
|
-
}
|
44
|
-
for (auto it = splits.begin(); it != std::prev(splits.end()); it++) {
|
45
|
-
auto part = StringUtil::Split(*it, "=");
|
46
|
-
if (part.size() == 2) {
|
47
|
-
uset.insert(part.front());
|
48
|
-
}
|
49
|
-
}
|
50
|
-
}
|
51
|
-
if (uset.empty()) {
|
52
|
-
return false;
|
53
|
-
}
|
54
|
-
for (auto &file : files) {
|
55
|
-
auto splits = StringUtil::Split(file, FileSystem::PathSeparator());
|
56
|
-
if (splits.size() != splits_size) {
|
57
|
-
return false;
|
58
|
-
}
|
59
|
-
for (auto it = splits.begin(); it != std::prev(splits.end()); it++) {
|
60
|
-
auto part = StringUtil::Split(*it, "=");
|
61
|
-
if (part.size() == 2) {
|
62
|
-
if (uset.find(part.front()) == uset.end()) {
|
63
|
-
return false;
|
64
|
-
}
|
65
|
-
}
|
66
|
-
}
|
67
|
-
}
|
68
|
-
return true;
|
69
|
-
}
|
32
|
+
DUCKDB_API void AutoDetectHivePartitioning(const vector<string> &files, ClientContext &context);
|
33
|
+
DUCKDB_API static bool AutoDetectHivePartitioningInternal(const vector<string> &files);
|
34
|
+
DUCKDB_API void AutoDetectHiveTypesInternal(const string &file, ClientContext &context);
|
35
|
+
DUCKDB_API void VerifyHiveTypesArePartitions(const std::map<string, string> &partitions) const;
|
36
|
+
DUCKDB_API LogicalType GetHiveLogicalType(const string &hive_partition_column) const;
|
37
|
+
DUCKDB_API Value GetHivePartitionValue(const string &base, const string &entry, ClientContext &context) const;
|
70
38
|
};
|
71
39
|
|
72
40
|
} // namespace duckdb
|
@@ -99,11 +99,11 @@ public:
|
|
99
99
|
bool IsPipe(const string &filename) override {
|
100
100
|
return GetFileSystem().IsPipe(filename);
|
101
101
|
}
|
102
|
-
|
102
|
+
void RemoveFile(const string &filename) override {
|
103
103
|
GetFileSystem().RemoveFile(filename);
|
104
104
|
}
|
105
105
|
|
106
|
-
|
106
|
+
vector<string> Glob(const string &path, FileOpener *opener = nullptr) override {
|
107
107
|
if (opener) {
|
108
108
|
throw InternalException("OpenerFileSystem cannot take an opener - the opener is pushed automatically");
|
109
109
|
}
|
@@ -8,13 +8,18 @@
|
|
8
8
|
|
9
9
|
#pragma once
|
10
10
|
|
11
|
+
#include "duckdb/common/assert.hpp"
|
11
12
|
#include "duckdb/common/constants.hpp"
|
13
|
+
#include "duckdb/common/hugeint.hpp"
|
12
14
|
#include "duckdb/common/limits.hpp"
|
13
15
|
#include "duckdb/common/exception.hpp"
|
16
|
+
#include "duckdb/common/typedefs.hpp"
|
14
17
|
#include "duckdb/common/types/string_type.hpp"
|
15
18
|
#include "duckdb/common/types.hpp"
|
16
19
|
#include "duckdb/common/operator/convert_to_string.hpp"
|
17
20
|
#include "duckdb/common/types/null_value.hpp"
|
21
|
+
#include "duckdb/common/types/bit.hpp"
|
22
|
+
#include "duckdb/common/types/vector.hpp"
|
18
23
|
|
19
24
|
namespace duckdb {
|
20
25
|
struct ValidityMask;
|
@@ -652,6 +657,15 @@ struct CastFromBlob {
|
|
652
657
|
template <>
|
653
658
|
duckdb::string_t CastFromBlob::Operation(duckdb::string_t input, Vector &vector);
|
654
659
|
|
660
|
+
struct CastFromBlobToBit {
|
661
|
+
template <class SRC>
|
662
|
+
static inline string_t Operation(SRC input, Vector &result) {
|
663
|
+
throw NotImplementedException("Cast from blob could not be performed!");
|
664
|
+
}
|
665
|
+
};
|
666
|
+
template <>
|
667
|
+
string_t CastFromBlobToBit::Operation(string_t input, Vector &result);
|
668
|
+
|
655
669
|
struct TryCastToBlob {
|
656
670
|
template <class SRC, class DST>
|
657
671
|
static inline bool Operation(SRC input, DST &result, Vector &result_vector, string *error_message,
|
@@ -659,7 +673,6 @@ struct TryCastToBlob {
|
|
659
673
|
throw InternalException("Unsupported type for try cast to blob");
|
660
674
|
}
|
661
675
|
};
|
662
|
-
|
663
676
|
template <>
|
664
677
|
bool TryCastToBlob::Operation(string_t input, string_t &result, Vector &result_vector, string *error_message,
|
665
678
|
bool strict);
|
@@ -667,14 +680,41 @@ bool TryCastToBlob::Operation(string_t input, string_t &result, Vector &result_v
|
|
667
680
|
//===--------------------------------------------------------------------===//
|
668
681
|
// Bits
|
669
682
|
//===--------------------------------------------------------------------===//
|
670
|
-
struct
|
683
|
+
struct CastFromBitToString {
|
671
684
|
template <class SRC>
|
672
685
|
static inline string_t Operation(SRC input, Vector &result) {
|
673
686
|
throw duckdb::NotImplementedException("Cast from bit could not be performed!");
|
674
687
|
}
|
675
688
|
};
|
676
689
|
template <>
|
677
|
-
duckdb::string_t
|
690
|
+
duckdb::string_t CastFromBitToString::Operation(duckdb::string_t input, Vector &vector);
|
691
|
+
|
692
|
+
struct CastFromBitToNumeric {
|
693
|
+
template <class SRC = string_t, class DST>
|
694
|
+
static inline bool Operation(SRC input, DST &result, bool strict = false) {
|
695
|
+
D_ASSERT(input.GetSize() > 1);
|
696
|
+
|
697
|
+
// TODO: Allow conversion if the significant bytes of the bitstring can be cast to the target type
|
698
|
+
// Currently only allows bitstring -> numeric if the full bitstring fits inside the numeric type
|
699
|
+
if (input.GetSize() - 1 > sizeof(DST)) {
|
700
|
+
throw ConversionException("Bitstring doesn't fit inside of %s", GetTypeId<DST>());
|
701
|
+
}
|
702
|
+
Bit::BitToNumeric(input, result);
|
703
|
+
return (true);
|
704
|
+
}
|
705
|
+
};
|
706
|
+
template <>
|
707
|
+
bool CastFromBitToNumeric::Operation(string_t input, bool &result, bool strict);
|
708
|
+
template <>
|
709
|
+
bool CastFromBitToNumeric::Operation(string_t input, hugeint_t &result, bool strict);
|
710
|
+
|
711
|
+
struct CastFromBitToBlob {
|
712
|
+
template <class SRC>
|
713
|
+
static inline string_t Operation(SRC input, Vector &result) {
|
714
|
+
D_ASSERT(input.GetSize() > 1);
|
715
|
+
return StringVector::AddStringOrBlob(result, Bit::BitToBlob(input));
|
716
|
+
}
|
717
|
+
};
|
678
718
|
|
679
719
|
struct TryCastToBit {
|
680
720
|
template <class SRC, class DST>
|
@@ -9,8 +9,11 @@
|
|
9
9
|
#pragma once
|
10
10
|
|
11
11
|
#include "duckdb/common/operator/cast_operators.hpp"
|
12
|
+
#include "duckdb/common/types/bit.hpp"
|
12
13
|
#include "duckdb/common/types/hugeint.hpp"
|
14
|
+
#include "duckdb/common/types/string_type.hpp"
|
13
15
|
#include "duckdb/common/types/value.hpp"
|
16
|
+
#include "duckdb/common/types/vector.hpp"
|
14
17
|
#include <cmath>
|
15
18
|
|
16
19
|
namespace duckdb {
|
@@ -442,6 +445,13 @@ bool TryCastWithOverflowCheck(hugeint_t value, double &result) {
|
|
442
445
|
return Hugeint::TryCast(value, result);
|
443
446
|
}
|
444
447
|
|
448
|
+
struct NumericTryCastToBit {
|
449
|
+
template <class SRC>
|
450
|
+
static inline string_t Operation(SRC input, Vector &result) {
|
451
|
+
return StringVector::AddStringOrBlob(result, Bit::NumericToBit(input));
|
452
|
+
}
|
453
|
+
};
|
454
|
+
|
445
455
|
struct NumericTryCast {
|
446
456
|
template <class SRC, class DST>
|
447
457
|
static inline bool Operation(SRC input, DST &result, bool strict = false) {
|
@@ -8,6 +8,7 @@
|
|
8
8
|
|
9
9
|
#pragma once
|
10
10
|
|
11
|
+
#include "duckdb/common/bswap.hpp"
|
11
12
|
#include "duckdb/common/common.hpp"
|
12
13
|
#include "duckdb/common/exception.hpp"
|
13
14
|
#include "duckdb/common/types.hpp"
|
@@ -20,18 +21,6 @@
|
|
20
21
|
|
21
22
|
namespace duckdb {
|
22
23
|
|
23
|
-
#define BSWAP16(x) ((uint16_t)((((uint16_t)(x)&0xff00) >> 8) | (((uint16_t)(x)&0x00ff) << 8)))
|
24
|
-
|
25
|
-
#define BSWAP32(x) \
|
26
|
-
((uint32_t)((((uint32_t)(x)&0xff000000) >> 24) | (((uint32_t)(x)&0x00ff0000) >> 8) | \
|
27
|
-
(((uint32_t)(x)&0x0000ff00) << 8) | (((uint32_t)(x)&0x000000ff) << 24)))
|
28
|
-
|
29
|
-
#define BSWAP64(x) \
|
30
|
-
((uint64_t)((((uint64_t)(x)&0xff00000000000000ull) >> 56) | (((uint64_t)(x)&0x00ff000000000000ull) >> 40) | \
|
31
|
-
(((uint64_t)(x)&0x0000ff0000000000ull) >> 24) | (((uint64_t)(x)&0x000000ff00000000ull) >> 8) | \
|
32
|
-
(((uint64_t)(x)&0x00000000ff000000ull) << 8) | (((uint64_t)(x)&0x0000000000ff0000ull) << 24) | \
|
33
|
-
(((uint64_t)(x)&0x000000000000ff00ull) << 40) | (((uint64_t)(x)&0x00000000000000ffull) << 56)))
|
34
|
-
|
35
24
|
struct Radix {
|
36
25
|
public:
|
37
26
|
static inline bool IsLittleEndian() {
|
@@ -134,19 +123,19 @@ inline void Radix::EncodeData(data_ptr_t dataptr, int8_t value) {
|
|
134
123
|
|
135
124
|
template <>
|
136
125
|
inline void Radix::EncodeData(data_ptr_t dataptr, int16_t value) {
|
137
|
-
Store<uint16_t>(
|
126
|
+
Store<uint16_t>(BSwap<uint16_t>(value), dataptr);
|
138
127
|
dataptr[0] = FlipSign(dataptr[0]);
|
139
128
|
}
|
140
129
|
|
141
130
|
template <>
|
142
131
|
inline void Radix::EncodeData(data_ptr_t dataptr, int32_t value) {
|
143
|
-
Store<uint32_t>(
|
132
|
+
Store<uint32_t>(BSwap<uint32_t>(value), dataptr);
|
144
133
|
dataptr[0] = FlipSign(dataptr[0]);
|
145
134
|
}
|
146
135
|
|
147
136
|
template <>
|
148
137
|
inline void Radix::EncodeData(data_ptr_t dataptr, int64_t value) {
|
149
|
-
Store<uint64_t>(
|
138
|
+
Store<uint64_t>(BSwap<uint64_t>(value), dataptr);
|
150
139
|
dataptr[0] = FlipSign(dataptr[0]);
|
151
140
|
}
|
152
141
|
|
@@ -157,17 +146,17 @@ inline void Radix::EncodeData(data_ptr_t dataptr, uint8_t value) {
|
|
157
146
|
|
158
147
|
template <>
|
159
148
|
inline void Radix::EncodeData(data_ptr_t dataptr, uint16_t value) {
|
160
|
-
Store<uint16_t>(
|
149
|
+
Store<uint16_t>(BSwap<uint16_t>(value), dataptr);
|
161
150
|
}
|
162
151
|
|
163
152
|
template <>
|
164
153
|
inline void Radix::EncodeData(data_ptr_t dataptr, uint32_t value) {
|
165
|
-
Store<uint32_t>(
|
154
|
+
Store<uint32_t>(BSwap<uint32_t>(value), dataptr);
|
166
155
|
}
|
167
156
|
|
168
157
|
template <>
|
169
158
|
inline void Radix::EncodeData(data_ptr_t dataptr, uint64_t value) {
|
170
|
-
Store<uint64_t>(
|
159
|
+
Store<uint64_t>(BSwap<uint64_t>(value), dataptr);
|
171
160
|
}
|
172
161
|
|
173
162
|
template <>
|
@@ -179,13 +168,13 @@ inline void Radix::EncodeData(data_ptr_t dataptr, hugeint_t value) {
|
|
179
168
|
template <>
|
180
169
|
inline void Radix::EncodeData(data_ptr_t dataptr, float value) {
|
181
170
|
uint32_t converted_value = EncodeFloat(value);
|
182
|
-
Store<uint32_t>(
|
171
|
+
Store<uint32_t>(BSwap<uint32_t>(converted_value), dataptr);
|
183
172
|
}
|
184
173
|
|
185
174
|
template <>
|
186
175
|
inline void Radix::EncodeData(data_ptr_t dataptr, double value) {
|
187
176
|
uint64_t converted_value = EncodeDouble(value);
|
188
|
-
Store<uint64_t>(
|
177
|
+
Store<uint64_t>(BSwap<uint64_t>(converted_value), dataptr);
|
189
178
|
}
|
190
179
|
|
191
180
|
template <>
|