duckdb 0.7.2-dev3666.0 → 0.7.2-dev3763.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/package.json +1 -1
- package/src/database.cpp +0 -1
- package/src/duckdb/extension/json/json_functions/json_transform.cpp +1 -1
- package/src/duckdb/extension/json/json_functions/read_json.cpp +4 -4
- package/src/duckdb/extension/json/json_functions/read_json_objects.cpp +1 -1
- package/src/duckdb/extension/json/json_scan.cpp +16 -12
- package/src/duckdb/src/common/arrow/arrow_converter.cpp +4 -4
- package/src/duckdb/src/common/compressed_file_system.cpp +2 -2
- package/src/duckdb/src/common/exception.cpp +17 -0
- package/src/duckdb/src/common/exception_format_value.cpp +14 -0
- package/src/duckdb/src/common/file_system.cpp +53 -31
- package/src/duckdb/src/common/local_file_system.cpp +5 -3
- package/src/duckdb/src/common/row_operations/row_gather.cpp +2 -2
- package/src/duckdb/src/common/serializer/binary_deserializer.cpp +1 -1
- package/src/duckdb/src/common/serializer/buffered_file_reader.cpp +1 -1
- package/src/duckdb/src/common/serializer/buffered_file_writer.cpp +1 -1
- package/src/duckdb/src/common/serializer/buffered_serializer.cpp +3 -3
- package/src/duckdb/src/common/serializer.cpp +1 -1
- package/src/duckdb/src/common/sort/radix_sort.cpp +5 -5
- package/src/duckdb/src/common/string_util.cpp +6 -2
- package/src/duckdb/src/common/types/bit.cpp +2 -2
- package/src/duckdb/src/common/types/blob.cpp +2 -2
- package/src/duckdb/src/common/types/data_chunk.cpp +2 -2
- package/src/duckdb/src/common/types/date.cpp +1 -1
- package/src/duckdb/src/common/types/decimal.cpp +2 -2
- package/src/duckdb/src/common/types/selection_vector.cpp +1 -1
- package/src/duckdb/src/common/types/time.cpp +1 -1
- package/src/duckdb/src/common/types/vector.cpp +7 -7
- package/src/duckdb/src/common/types.cpp +1 -1
- package/src/duckdb/src/common/windows_util.cpp +2 -2
- package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/string/printf.cpp +1 -1
- package/src/duckdb/src/execution/aggregate_hashtable.cpp +1 -1
- package/src/duckdb/src/execution/join_hashtable.cpp +3 -3
- package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +2 -2
- package/src/duckdb/src/execution/operator/join/outer_join_marker.cpp +1 -1
- package/src/duckdb/src/execution/operator/join/perfect_hash_join_executor.cpp +1 -1
- package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +1 -1
- package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +1 -1
- package/src/duckdb/src/execution/operator/persistent/physical_export.cpp +2 -2
- package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +91 -30
- package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +1 -1
- package/src/duckdb/src/execution/operator/schema/physical_create_index.cpp +1 -1
- package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +2 -2
- package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +3 -3
- package/src/duckdb/src/execution/window_segment_tree.cpp +1 -1
- package/src/duckdb/src/function/pragma/pragma_queries.cpp +2 -2
- package/src/duckdb/src/function/scalar/strftime_format.cpp +1 -1
- package/src/duckdb/src/function/scalar/string/concat.cpp +1 -1
- package/src/duckdb/src/function/scalar/string/like.cpp +2 -2
- package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +5 -5
- package/src/duckdb/src/function/table/copy_csv.cpp +1 -1
- package/src/duckdb/src/function/table/read_csv.cpp +3 -0
- package/src/duckdb/src/function/table/table_scan.cpp +7 -3
- package/src/duckdb/src/function/table/version/pragma_version.cpp +4 -6
- package/src/duckdb/src/include/duckdb/common/compressed_file_system.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/exception_format_value.hpp +26 -0
- package/src/duckdb/src/include/duckdb/common/file_system.hpp +6 -0
- package/src/duckdb/src/include/duckdb/common/helper.hpp +9 -9
- package/src/duckdb/src/include/duckdb/common/http_state.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/serializer/buffered_file_reader.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/serializer/buffered_file_writer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/serializer/buffered_serializer.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/sort/duckdb_pdqsort.hpp +10 -10
- package/src/duckdb/src/include/duckdb/common/string_util.hpp +20 -0
- package/src/duckdb/src/include/duckdb/common/types/data_chunk.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/selection_vector.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/validity_mask.hpp +3 -3
- package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +4 -4
- package/src/duckdb/src/include/duckdb/common/unique_ptr.hpp +8 -8
- package/src/duckdb/src/include/duckdb/execution/aggregate_hashtable.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/join_hashtable.hpp +3 -3
- package/src/duckdb/src/include/duckdb/execution/operator/join/outer_join_marker.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/join/perfect_hash_join_executor.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_range_join.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/buffered_csv_reader.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/parallel_csv_reader.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_insert.hpp +2 -3
- package/src/duckdb/src/include/duckdb/execution/perfect_aggregate_hashtable.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/window_segment_tree.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +1 -1
- package/src/duckdb/src/include/duckdb/main/client_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/join_order/join_relation.hpp +3 -3
- package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/keyword_helper.hpp +5 -0
- package/src/duckdb/src/include/duckdb/storage/data_table.hpp +4 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/base_statistics.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/append_state.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +5 -5
- package/src/duckdb/src/include/duckdb/storage/table/update_segment.hpp +2 -2
- package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +1 -1
- package/src/duckdb/src/main/client_context.cpp +4 -4
- package/src/duckdb/src/main/db_instance_cache.cpp +5 -3
- package/src/duckdb/src/main/extension/extension_install.cpp +22 -18
- package/src/duckdb/src/optimizer/join_order/join_relation_set.cpp +5 -5
- package/src/duckdb/src/parser/expression/collate_expression.cpp +1 -1
- package/src/duckdb/src/parser/keyword_helper.cpp +11 -1
- package/src/duckdb/src/parser/query_node/select_node.cpp +1 -1
- package/src/duckdb/src/parser/statement/copy_statement.cpp +2 -2
- package/src/duckdb/src/parser/tableref.cpp +1 -1
- package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +7 -1
- package/src/duckdb/src/planner/expression_binder/index_binder.cpp +1 -1
- package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +1 -1
- package/src/duckdb/src/storage/compression/string_uncompressed.cpp +2 -2
- package/src/duckdb/src/storage/data_table.cpp +75 -44
- package/src/duckdb/src/storage/local_storage.cpp +1 -1
- package/src/duckdb/src/storage/statistics/list_stats.cpp +1 -1
- package/src/duckdb/src/storage/statistics/struct_stats.cpp +1 -1
- package/src/duckdb/src/storage/storage_manager.cpp +3 -0
- package/src/duckdb/src/storage/table/row_group.cpp +11 -11
- package/src/duckdb/src/storage/table/scan_state.cpp +1 -1
- package/src/duckdb/src/storage/table/update_segment.cpp +6 -6
@@ -81,7 +81,7 @@ idx_t RowGroup::GetColumnCount() const {
|
|
81
81
|
return columns.size();
|
82
82
|
}
|
83
83
|
|
84
|
-
ColumnData &RowGroup::GetColumn(
|
84
|
+
ColumnData &RowGroup::GetColumn(storage_t c) {
|
85
85
|
D_ASSERT(c < columns.size());
|
86
86
|
if (!is_loaded) {
|
87
87
|
// not being lazy loaded
|
@@ -155,7 +155,7 @@ void ColumnScanState::Initialize(const LogicalType &type) {
|
|
155
155
|
|
156
156
|
void CollectionScanState::Initialize(const vector<LogicalType> &types) {
|
157
157
|
auto &column_ids = GetColumnIds();
|
158
|
-
column_scans =
|
158
|
+
column_scans = make_unsafe_uniq_array<ColumnScanState>(column_ids.size());
|
159
159
|
for (idx_t i = 0; i < column_ids.size(); i++) {
|
160
160
|
if (column_ids[i] == COLUMN_IDENTIFIER_ROW_ID) {
|
161
161
|
continue;
|
@@ -179,7 +179,7 @@ bool RowGroup::InitializeScanWithOffset(CollectionScanState &state, idx_t vector
|
|
179
179
|
this->start > state.max_row ? 0 : MinValue<idx_t>(this->count, state.max_row - this->start);
|
180
180
|
D_ASSERT(state.column_scans);
|
181
181
|
for (idx_t i = 0; i < column_ids.size(); i++) {
|
182
|
-
auto column = column_ids[i];
|
182
|
+
const auto &column = column_ids[i];
|
183
183
|
if (column != COLUMN_IDENTIFIER_ROW_ID) {
|
184
184
|
auto &column_data = GetColumn(column);
|
185
185
|
column_data.InitializeScanWithOffset(state.column_scans[i], start + vector_offset * STANDARD_VECTOR_SIZE);
|
@@ -334,9 +334,9 @@ void RowGroup::CommitDropColumn(idx_t column_idx) {
|
|
334
334
|
|
335
335
|
void RowGroup::NextVector(CollectionScanState &state) {
|
336
336
|
state.vector_index++;
|
337
|
-
auto &column_ids = state.GetColumnIds();
|
337
|
+
const auto &column_ids = state.GetColumnIds();
|
338
338
|
for (idx_t i = 0; i < column_ids.size(); i++) {
|
339
|
-
auto column = column_ids[i];
|
339
|
+
const auto &column = column_ids[i];
|
340
340
|
if (column == COLUMN_IDENTIFIER_ROW_ID) {
|
341
341
|
continue;
|
342
342
|
}
|
@@ -345,11 +345,11 @@ void RowGroup::NextVector(CollectionScanState &state) {
|
|
345
345
|
}
|
346
346
|
}
|
347
347
|
|
348
|
-
bool RowGroup::CheckZonemap(TableFilterSet &filters, const vector<
|
348
|
+
bool RowGroup::CheckZonemap(TableFilterSet &filters, const vector<storage_t> &column_ids) {
|
349
349
|
for (auto &entry : filters.filters) {
|
350
350
|
auto column_index = entry.first;
|
351
351
|
auto &filter = entry.second;
|
352
|
-
auto base_column_index = column_ids[column_index];
|
352
|
+
const auto &base_column_index = column_ids[column_index];
|
353
353
|
if (!GetColumn(base_column_index).CheckZonemap(*filter)) {
|
354
354
|
return false;
|
355
355
|
}
|
@@ -366,7 +366,7 @@ bool RowGroup::CheckZonemapSegments(CollectionScanState &state) {
|
|
366
366
|
for (auto &entry : filters->filters) {
|
367
367
|
D_ASSERT(entry.first < column_ids.size());
|
368
368
|
auto column_idx = entry.first;
|
369
|
-
auto base_column_idx = column_ids[column_idx];
|
369
|
+
const auto &base_column_idx = column_ids[column_idx];
|
370
370
|
bool read_segment = GetColumn(base_column_idx).CheckZonemap(state.column_scans[column_idx], *entry.second);
|
371
371
|
if (!read_segment) {
|
372
372
|
idx_t target_row =
|
@@ -398,7 +398,7 @@ void RowGroup::TemplatedScan(TransactionData transaction, CollectionScanState &s
|
|
398
398
|
const bool ALLOW_UPDATES = TYPE != TableScanType::TABLE_SCAN_COMMITTED_ROWS_DISALLOW_UPDATES &&
|
399
399
|
TYPE != TableScanType::TABLE_SCAN_COMMITTED_ROWS_OMIT_PERMANENTLY_DELETED;
|
400
400
|
auto table_filters = state.GetFilters();
|
401
|
-
auto &column_ids = state.GetColumnIds();
|
401
|
+
const auto &column_ids = state.GetColumnIds();
|
402
402
|
auto adaptive_filter = state.GetAdaptiveFilter();
|
403
403
|
while (true) {
|
404
404
|
if (state.vector_index * STANDARD_VECTOR_SIZE >= state.max_row_group_row) {
|
@@ -436,7 +436,7 @@ void RowGroup::TemplatedScan(TransactionData transaction, CollectionScanState &s
|
|
436
436
|
if (count == max_count && !table_filters) {
|
437
437
|
// scan all vectors completely: full scan without deletions or table filters
|
438
438
|
for (idx_t i = 0; i < column_ids.size(); i++) {
|
439
|
-
auto column = column_ids[i];
|
439
|
+
const auto &column = column_ids[i];
|
440
440
|
if (column == COLUMN_IDENTIFIER_ROW_ID) {
|
441
441
|
// scan row id
|
442
442
|
D_ASSERT(result.data[i].GetType().InternalType() == ROW_TYPE);
|
@@ -695,7 +695,7 @@ void RowGroup::InitializeAppend(RowGroupAppendState &append_state) {
|
|
695
695
|
append_state.row_group = this;
|
696
696
|
append_state.offset_in_row_group = this->count;
|
697
697
|
// for each column, initialize the append state
|
698
|
-
append_state.states =
|
698
|
+
append_state.states = make_unsafe_uniq_array<ColumnAppendState>(GetColumnCount());
|
699
699
|
for (idx_t i = 0; i < GetColumnCount(); i++) {
|
700
700
|
auto &col_data = GetColumn(i);
|
701
701
|
col_data.InitializeAppend(append_state.states[i]);
|
@@ -1043,8 +1043,8 @@ static idx_t SortSelectionVector(SelectionVector &sel, idx_t count, row_t *ids)
|
|
1043
1043
|
}
|
1044
1044
|
|
1045
1045
|
UpdateInfo *CreateEmptyUpdateInfo(TransactionData transaction, idx_t type_size, idx_t count,
|
1046
|
-
|
1047
|
-
data =
|
1046
|
+
unsafe_unique_array<char> &data) {
|
1047
|
+
data = make_unsafe_uniq_array<char>(sizeof(UpdateInfo) + (sizeof(sel_t) + type_size) * STANDARD_VECTOR_SIZE);
|
1048
1048
|
auto update_info = (UpdateInfo *)data.get();
|
1049
1049
|
update_info->max = STANDARD_VECTOR_SIZE;
|
1050
1050
|
update_info->tuples = (sel_t *)(((data_ptr_t)update_info) + sizeof(UpdateInfo));
|
@@ -1110,7 +1110,7 @@ void UpdateSegment::Update(TransactionData transaction, idx_t column_index, Vect
|
|
1110
1110
|
}
|
1111
1111
|
node = node->next;
|
1112
1112
|
}
|
1113
|
-
|
1113
|
+
unsafe_unique_array<char> update_info_data;
|
1114
1114
|
if (!node) {
|
1115
1115
|
// no updates made yet by this transaction: initially the update info to empty
|
1116
1116
|
if (transaction.transaction) {
|
@@ -1145,8 +1145,8 @@ void UpdateSegment::Update(TransactionData transaction, idx_t column_index, Vect
|
|
1145
1145
|
auto result = make_uniq<UpdateNodeData>();
|
1146
1146
|
|
1147
1147
|
result->info = make_uniq<UpdateInfo>();
|
1148
|
-
result->tuples =
|
1149
|
-
result->tuple_data =
|
1148
|
+
result->tuples = make_unsafe_uniq_array<sel_t>(STANDARD_VECTOR_SIZE);
|
1149
|
+
result->tuple_data = make_unsafe_uniq_array<data_t>(STANDARD_VECTOR_SIZE * type_size);
|
1150
1150
|
result->info->tuples = result->tuples.get();
|
1151
1151
|
result->info->tuple_data = result->tuple_data.get();
|
1152
1152
|
result->info->version_number = TRANSACTION_ID_START - 1;
|
@@ -1154,7 +1154,7 @@ void UpdateSegment::Update(TransactionData transaction, idx_t column_index, Vect
|
|
1154
1154
|
InitializeUpdateInfo(*result->info, ids, sel, count, vector_index, vector_offset);
|
1155
1155
|
|
1156
1156
|
// now create the transaction level update info in the undo log
|
1157
|
-
|
1157
|
+
unsafe_unique_array<char> update_info_data;
|
1158
1158
|
UpdateInfo *transaction_node;
|
1159
1159
|
if (transaction.transaction) {
|
1160
1160
|
transaction_node = transaction.transaction->CreateUpdateInfo(type_size, count);
|