Skip to content

Commit b7c0a0b

Browse files
duckdblabs-botgithub-actions[bot]
authored andcommitted
Update vendored DuckDB sources to 2259ad7316
1 parent 15d491a commit b7c0a0b

116 files changed

Lines changed: 2722 additions & 909 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CMakeLists.txt

Lines changed: 39 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -347,48 +347,48 @@ set(DUCKDB_SRC_FILES
347347
src/duckdb/third_party/zstd/dict/divsufsort.cpp
348348
src/duckdb/third_party/zstd/dict/fastcover.cpp
349349
src/duckdb/third_party/zstd/dict/zdict.cpp
350-
src/duckdb/extension/core_functions/core_functions_extension.cpp
351-
src/duckdb/extension/core_functions/function_list.cpp
352350
src/duckdb/extension/core_functions/lambda_functions.cpp
353-
src/duckdb/ub_extension_core_functions_aggregate_algebraic.cpp
351+
src/duckdb/extension/core_functions/function_list.cpp
352+
src/duckdb/extension/core_functions/core_functions_extension.cpp
353+
src/duckdb/ub_extension_core_functions_aggregate_distributive.cpp
354354
src/duckdb/ub_extension_core_functions_aggregate_nested.cpp
355-
src/duckdb/ub_extension_core_functions_aggregate_holistic.cpp
356355
src/duckdb/ub_extension_core_functions_aggregate_regression.cpp
357-
src/duckdb/ub_extension_core_functions_aggregate_distributive.cpp
358-
src/duckdb/ub_extension_core_functions_scalar_generic.cpp
359-
src/duckdb/ub_extension_core_functions_scalar_array.cpp
360-
src/duckdb/ub_extension_core_functions_scalar_random.cpp
361-
src/duckdb/ub_extension_core_functions_scalar_list.cpp
362-
src/duckdb/ub_extension_core_functions_scalar_struct.cpp
363-
src/duckdb/ub_extension_core_functions_scalar_date.cpp
364-
src/duckdb/ub_extension_core_functions_scalar_enum.cpp
356+
src/duckdb/ub_extension_core_functions_aggregate_algebraic.cpp
357+
src/duckdb/ub_extension_core_functions_aggregate_holistic.cpp
358+
src/duckdb/ub_extension_core_functions_scalar_string.cpp
359+
src/duckdb/ub_extension_core_functions_scalar_bit.cpp
365360
src/duckdb/ub_extension_core_functions_scalar_operators.cpp
361+
src/duckdb/ub_extension_core_functions_scalar_enum.cpp
362+
src/duckdb/ub_extension_core_functions_scalar_map.cpp
363+
src/duckdb/ub_extension_core_functions_scalar_random.cpp
366364
src/duckdb/ub_extension_core_functions_scalar_math.cpp
367-
src/duckdb/ub_extension_core_functions_scalar_string.cpp
365+
src/duckdb/ub_extension_core_functions_scalar_union.cpp
366+
src/duckdb/ub_extension_core_functions_scalar_generic.cpp
367+
src/duckdb/ub_extension_core_functions_scalar_struct.cpp
368+
src/duckdb/ub_extension_core_functions_scalar_list.cpp
369+
src/duckdb/ub_extension_core_functions_scalar_array.cpp
368370
src/duckdb/ub_extension_core_functions_scalar_debug.cpp
369-
src/duckdb/ub_extension_core_functions_scalar_bit.cpp
370371
src/duckdb/ub_extension_core_functions_scalar_blob.cpp
371-
src/duckdb/ub_extension_core_functions_scalar_union.cpp
372-
src/duckdb/ub_extension_core_functions_scalar_map.cpp
373-
src/duckdb/extension/parquet/parquet_crypto.cpp
374-
src/duckdb/extension/parquet/parquet_reader.cpp
375-
src/duckdb/extension/parquet/parquet_metadata.cpp
372+
src/duckdb/ub_extension_core_functions_scalar_date.cpp
376373
src/duckdb/extension/parquet/parquet_writer.cpp
377374
src/duckdb/extension/parquet/zstd_file_system.cpp
375+
src/duckdb/extension/parquet/parquet_crypto.cpp
376+
src/duckdb/extension/parquet/parquet_reader.cpp
378377
src/duckdb/extension/parquet/parquet_timestamp.cpp
378+
src/duckdb/extension/parquet/parquet_float16.cpp
379+
src/duckdb/extension/parquet/parquet_statistics.cpp
379380
src/duckdb/extension/parquet/parquet_multi_file_info.cpp
380-
src/duckdb/extension/parquet/column_writer.cpp
381+
src/duckdb/extension/parquet/column_reader.cpp
381382
src/duckdb/extension/parquet/geo_parquet.cpp
382-
src/duckdb/extension/parquet/parquet_file_metadata_cache.cpp
383-
src/duckdb/extension/parquet/parquet_statistics.cpp
384383
src/duckdb/extension/parquet/parquet_extension.cpp
385-
src/duckdb/extension/parquet/parquet_float16.cpp
384+
src/duckdb/extension/parquet/column_writer.cpp
385+
src/duckdb/extension/parquet/parquet_file_metadata_cache.cpp
386386
src/duckdb/extension/parquet/serialize_parquet.cpp
387-
src/duckdb/extension/parquet/column_reader.cpp
387+
src/duckdb/extension/parquet/parquet_metadata.cpp
388388
src/duckdb/ub_extension_parquet_decoder.cpp
389-
src/duckdb/ub_extension_parquet_writer.cpp
390389
src/duckdb/ub_extension_parquet_reader.cpp
391390
src/duckdb/ub_extension_parquet_reader_variant.cpp
391+
src/duckdb/ub_extension_parquet_writer.cpp
392392
src/duckdb/third_party/parquet/parquet_types.cpp
393393
src/duckdb/third_party/thrift/thrift/protocol/TProtocol.cpp
394394
src/duckdb/third_party/thrift/thrift/transport/TTransportException.cpp
@@ -427,32 +427,32 @@ set(DUCKDB_SRC_FILES
427427
src/duckdb/third_party/brotli/enc/metablock.cpp
428428
src/duckdb/third_party/brotli/enc/static_dict.cpp
429429
src/duckdb/third_party/brotli/enc/utf8_util.cpp
430-
src/duckdb/extension/icu/./icu-datetrunc.cpp
431-
src/duckdb/extension/icu/./icu-timezone.cpp
432-
src/duckdb/extension/icu/./icu-current.cpp
433-
src/duckdb/extension/icu/./icu-list-range.cpp
434-
src/duckdb/extension/icu/./icu-datefunc.cpp
435-
src/duckdb/extension/icu/./icu-strptime.cpp
436-
src/duckdb/extension/icu/./icu-dateadd.cpp
437430
src/duckdb/extension/icu/./icu_extension.cpp
438-
src/duckdb/extension/icu/./icu-timebucket.cpp
439-
src/duckdb/extension/icu/./icu-table-range.cpp
431+
src/duckdb/extension/icu/./icu-strptime.cpp
440432
src/duckdb/extension/icu/./icu-datepart.cpp
441433
src/duckdb/extension/icu/./icu-makedate.cpp
434+
src/duckdb/extension/icu/./icu-datefunc.cpp
435+
src/duckdb/extension/icu/./icu-current.cpp
436+
src/duckdb/extension/icu/./icu-timezone.cpp
437+
src/duckdb/extension/icu/./icu-table-range.cpp
438+
src/duckdb/extension/icu/./icu-dateadd.cpp
439+
src/duckdb/extension/icu/./icu-timebucket.cpp
442440
src/duckdb/extension/icu/./icu-datesub.cpp
441+
src/duckdb/extension/icu/./icu-datetrunc.cpp
442+
src/duckdb/extension/icu/./icu-list-range.cpp
443443
src/duckdb/ub_extension_icu_third_party_icu_common.cpp
444444
src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp
445445
src/duckdb/extension/icu/third_party/icu/stubdata/stubdata.cpp
446+
src/duckdb/extension/json/json_reader.cpp
446447
src/duckdb/extension/json/json_functions.cpp
448+
src/duckdb/extension/json/json_extension.cpp
449+
src/duckdb/extension/json/json_scan.cpp
447450
src/duckdb/extension/json/json_multi_file_info.cpp
451+
src/duckdb/extension/json/json_enums.cpp
448452
src/duckdb/extension/json/serialize_json.cpp
449453
src/duckdb/extension/json/json_common.cpp
450-
src/duckdb/extension/json/json_scan.cpp
451-
src/duckdb/extension/json/json_enums.cpp
452-
src/duckdb/extension/json/json_reader.cpp
453-
src/duckdb/extension/json/json_serializer.cpp
454-
src/duckdb/extension/json/json_extension.cpp
455454
src/duckdb/extension/json/json_deserializer.cpp
455+
src/duckdb/extension/json/json_serializer.cpp
456456
src/duckdb/ub_extension_json_json_functions.cpp)
457457

458458
set(JEMALLOC_SRC_FILES

src/duckdb/extension/parquet/column_writer.cpp

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -187,9 +187,12 @@ void ColumnWriter::HandleRepeatLevels(ColumnWriterState &state, ColumnWriterStat
187187
// no repeat levels without a parent node
188188
return;
189189
}
190-
while (state.repetition_levels.size() < parent->repetition_levels.size()) {
191-
state.repetition_levels.push_back(parent->repetition_levels[state.repetition_levels.size()]);
190+
if (state.repetition_levels.size() >= parent->repetition_levels.size()) {
191+
return;
192192
}
193+
state.repetition_levels.insert(state.repetition_levels.end(),
194+
parent->repetition_levels.begin() + state.repetition_levels.size(),
195+
parent->repetition_levels.end());
193196
}
194197

195198
void ColumnWriter::HandleDefineLevels(ColumnWriterState &state, ColumnWriterState *parent, const ValidityMask &validity,
@@ -200,36 +203,41 @@ void ColumnWriter::HandleDefineLevels(ColumnWriterState &state, ColumnWriterStat
200203
while (state.definition_levels.size() < parent->definition_levels.size()) {
201204
idx_t current_index = state.definition_levels.size();
202205
if (parent->definition_levels[current_index] != PARQUET_DEFINE_VALID) {
206+
//! Inherit nulls from parent
203207
state.definition_levels.push_back(parent->definition_levels[current_index]);
204208
state.parent_null_count++;
205209
} else if (validity.RowIsValid(vector_index)) {
210+
//! Produce a non-null define
206211
state.definition_levels.push_back(define_value);
207212
} else {
213+
//! Produce a null define
208214
if (!can_have_nulls) {
209215
throw IOException("Parquet writer: map key column is not allowed to contain NULL values");
210216
}
211217
state.null_count++;
212218
state.definition_levels.push_back(null_value);
213219
}
220+
D_ASSERT(parent->is_empty.empty() || current_index < parent->is_empty.size());
214221
if (parent->is_empty.empty() || !parent->is_empty[current_index]) {
215222
vector_index++;
216223
}
217224
}
225+
return;
226+
}
227+
228+
// no parent: set definition levels only from this validity mask
229+
if (validity.AllValid()) {
230+
state.definition_levels.insert(state.definition_levels.end(), count, define_value);
218231
} else {
219-
// no parent: set definition levels only from this validity mask
220-
if (validity.AllValid()) {
221-
state.definition_levels.insert(state.definition_levels.end(), count, define_value);
222-
} else {
223-
for (idx_t i = 0; i < count; i++) {
224-
const auto is_null = !validity.RowIsValid(i);
225-
state.definition_levels.emplace_back(is_null ? null_value : define_value);
226-
state.null_count += is_null;
227-
}
228-
}
229-
if (!can_have_nulls && state.null_count != 0) {
230-
throw IOException("Parquet writer: map key column is not allowed to contain NULL values");
232+
for (idx_t i = 0; i < count; i++) {
233+
const auto is_null = !validity.RowIsValid(i);
234+
state.definition_levels.emplace_back(is_null ? null_value : define_value);
235+
state.null_count += is_null;
231236
}
232237
}
238+
if (!can_have_nulls && state.null_count != 0) {
239+
throw IOException("Parquet writer: map key column is not allowed to contain NULL values");
240+
}
233241
}
234242

235243
//===--------------------------------------------------------------------===//
@@ -368,6 +376,7 @@ ParquetColumnSchema ColumnWriter::FillParquetSchema(vector<duckdb_parquet::Schem
368376
}
369377
return map_column;
370378
}
379+
371380
duckdb_parquet::SchemaElement schema_element;
372381
schema_element.type = ParquetWriter::DuckDBTypeToParquetType(type);
373382
schema_element.repetition_type = null_type;

src/duckdb/extension/parquet/include/column_writer.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class ColumnWriterState {
2727

2828
unsafe_vector<uint16_t> definition_levels;
2929
unsafe_vector<uint16_t> repetition_levels;
30-
vector<bool> is_empty;
30+
unsafe_vector<uint8_t> is_empty;
3131
idx_t parent_null_count = 0;
3232
idx_t null_count = 0;
3333

src/duckdb/extension/parquet/include/writer/array_column_writer.hpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ class ArrayColumnWriter : public ListColumnWriter {
2525
void Prepare(ColumnWriterState &state, ColumnWriterState *parent, Vector &vector, idx_t count,
2626
bool vector_can_span_multiple_pages) override;
2727
void Write(ColumnWriterState &state, Vector &vector, idx_t count) override;
28+
29+
protected:
30+
void WriteArrayState(ListColumnWriterState &state, idx_t array_size, uint16_t first_repeat_level,
31+
idx_t define_value, const bool is_empty = false);
2832
};
2933

3034
} // namespace duckdb

src/duckdb/extension/parquet/writer/array_column_writer.cpp

Lines changed: 22 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,22 @@ void ArrayColumnWriter::Analyze(ColumnWriterState &state_p, ColumnWriterState *p
99
child_writer->Analyze(*state.child_state, &state_p, array_child, array_size * count);
1010
}
1111

12+
void ArrayColumnWriter::WriteArrayState(ListColumnWriterState &state, idx_t array_size, uint16_t first_repeat_level,
13+
idx_t define_value, const bool is_empty) {
14+
state.definition_levels.push_back(define_value);
15+
state.repetition_levels.push_back(first_repeat_level);
16+
state.is_empty.push_back(is_empty);
17+
18+
if (is_empty) {
19+
return;
20+
}
21+
for (idx_t k = 1; k < array_size; k++) {
22+
state.repetition_levels.push_back(MaxRepeat() + 1);
23+
state.definition_levels.push_back(define_value);
24+
state.is_empty.push_back(false);
25+
}
26+
}
27+
1228
void ArrayColumnWriter::Prepare(ColumnWriterState &state_p, ColumnWriterState *parent, Vector &vector, idx_t count,
1329
bool vector_can_span_multiple_pages) {
1430
auto &state = state_p.Cast<ListColumnWriterState>();
@@ -25,42 +41,20 @@ void ArrayColumnWriter::Prepare(ColumnWriterState &state_p, ColumnWriterState *p
2541
for (idx_t i = start; i < vcount; i++) {
2642
idx_t parent_index = state.parent_index + i;
2743
if (parent && !parent->is_empty.empty() && parent->is_empty[parent_index]) {
28-
state.definition_levels.push_back(parent->definition_levels[parent_index]);
29-
state.repetition_levels.push_back(parent->repetition_levels[parent_index]);
30-
state.is_empty.push_back(true);
44+
WriteArrayState(state, array_size, parent->repetition_levels[parent_index],
45+
parent->definition_levels[parent_index], true);
3146
continue;
3247
}
3348
auto first_repeat_level =
3449
parent && !parent->repetition_levels.empty() ? parent->repetition_levels[parent_index] : MaxRepeat();
3550
if (parent && parent->definition_levels[parent_index] != PARQUET_DEFINE_VALID) {
36-
state.definition_levels.push_back(parent->definition_levels[parent_index]);
37-
state.repetition_levels.push_back(first_repeat_level);
38-
state.is_empty.push_back(false);
39-
for (idx_t k = 1; k < array_size; k++) {
40-
state.repetition_levels.push_back(MaxRepeat() + 1);
41-
state.definition_levels.push_back(parent->definition_levels[parent_index]);
42-
state.is_empty.push_back(false);
43-
}
51+
WriteArrayState(state, array_size, first_repeat_level, parent->definition_levels[parent_index]);
4452
} else if (validity.RowIsValid(vector_index)) {
4553
// push the repetition levels
46-
state.definition_levels.push_back(PARQUET_DEFINE_VALID);
47-
state.is_empty.push_back(false);
48-
49-
state.repetition_levels.push_back(first_repeat_level);
50-
for (idx_t k = 1; k < array_size; k++) {
51-
state.repetition_levels.push_back(MaxRepeat() + 1);
52-
state.definition_levels.push_back(PARQUET_DEFINE_VALID);
53-
state.is_empty.push_back(false);
54-
}
54+
WriteArrayState(state, array_size, first_repeat_level, PARQUET_DEFINE_VALID);
5555
} else {
56-
state.definition_levels.push_back(MaxDefine() - 1);
57-
state.repetition_levels.push_back(first_repeat_level);
58-
state.is_empty.push_back(false);
59-
for (idx_t k = 1; k < array_size; k++) {
60-
state.repetition_levels.push_back(MaxRepeat() + 1);
61-
state.definition_levels.push_back(MaxDefine() - 1);
62-
state.is_empty.push_back(false);
63-
}
56+
//! Produce a null
57+
WriteArrayState(state, array_size, first_repeat_level, MaxDefine() - 1);
6458
}
6559
vector_index++;
6660
}

src/duckdb/extension/parquet/writer/struct_column_writer.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,9 @@ void StructColumnWriter::Prepare(ColumnWriterState &state_p, ColumnWriterState *
6262
auto &validity = FlatVector::Validity(vector);
6363
if (parent) {
6464
// propagate empty entries from the parent
65-
while (state.is_empty.size() < parent->is_empty.size()) {
66-
state.is_empty.push_back(parent->is_empty[state.is_empty.size()]);
65+
if (state.is_empty.size() < parent->is_empty.size()) {
66+
state.is_empty.insert(state.is_empty.end(), parent->is_empty.begin() + state.is_empty.size(),
67+
parent->is_empty.end());
6768
}
6869
}
6970
HandleRepeatLevels(state_p, parent, count, MaxRepeat());

src/duckdb/src/catalog/catalog.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1135,6 +1135,9 @@ vector<reference<SchemaCatalogEntry>> Catalog::GetAllSchemas(ClientContext &cont
11351135
auto &db_manager = DatabaseManager::Get(context);
11361136
auto databases = db_manager.GetDatabases(context);
11371137
for (auto &database : databases) {
1138+
if (database->GetVisibility() == AttachVisibility::HIDDEN) {
1139+
continue;
1140+
}
11381141
auto &catalog = database->GetCatalog();
11391142
auto new_schemas = catalog.GetSchemas(context);
11401143
result.insert(result.end(), new_schemas.begin(), new_schemas.end());

src/duckdb/src/common/enum_util.cpp

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
#include "duckdb/common/enums/set_scope.hpp"
6161
#include "duckdb/common/enums/set_type.hpp"
6262
#include "duckdb/common/enums/statement_type.hpp"
63+
#include "duckdb/common/enums/storage_block_prefetch.hpp"
6364
#include "duckdb/common/enums/stream_execution_result.hpp"
6465
#include "duckdb/common/enums/subquery_type.hpp"
6566
#include "duckdb/common/enums/tableref_type.hpp"
@@ -117,6 +118,7 @@
117118
#include "duckdb/function/table/arrow/enum/arrow_variable_size_type.hpp"
118119
#include "duckdb/function/table_function.hpp"
119120
#include "duckdb/function/window/window_merge_sort_tree.hpp"
121+
#include "duckdb/logging/log_storage.hpp"
120122
#include "duckdb/logging/logging.hpp"
121123
#include "duckdb/main/appender.hpp"
122124
#include "duckdb/main/capi/capi_internal.hpp"
@@ -2458,6 +2460,25 @@ LogMode EnumUtil::FromString<LogMode>(const char *value) {
24582460
return static_cast<LogMode>(StringUtil::StringToEnum(GetLogModeValues(), 3, "LogMode", value));
24592461
}
24602462

2463+
const StringUtil::EnumStringLiteral *GetLoggingTargetTableValues() {
2464+
static constexpr StringUtil::EnumStringLiteral values[] {
2465+
{ static_cast<uint32_t>(LoggingTargetTable::ALL_LOGS), "ALL_LOGS" },
2466+
{ static_cast<uint32_t>(LoggingTargetTable::LOG_ENTRIES), "LOG_ENTRIES" },
2467+
{ static_cast<uint32_t>(LoggingTargetTable::LOG_CONTEXTS), "LOG_CONTEXTS" }
2468+
};
2469+
return values;
2470+
}
2471+
2472+
template<>
2473+
const char* EnumUtil::ToChars<LoggingTargetTable>(LoggingTargetTable value) {
2474+
return StringUtil::EnumToString(GetLoggingTargetTableValues(), 3, "LoggingTargetTable", static_cast<uint32_t>(value));
2475+
}
2476+
2477+
template<>
2478+
LoggingTargetTable EnumUtil::FromString<LoggingTargetTable>(const char *value) {
2479+
return static_cast<LoggingTargetTable>(StringUtil::StringToEnum(GetLoggingTargetTableValues(), 3, "LoggingTargetTable", value));
2480+
}
2481+
24612482
const StringUtil::EnumStringLiteral *GetLogicalOperatorTypeValues() {
24622483
static constexpr StringUtil::EnumStringLiteral values[] {
24632484
{ static_cast<uint32_t>(LogicalOperatorType::LOGICAL_INVALID), "LOGICAL_INVALID" },
@@ -4235,6 +4256,26 @@ StatsInfo EnumUtil::FromString<StatsInfo>(const char *value) {
42354256
return static_cast<StatsInfo>(StringUtil::StringToEnum(GetStatsInfoValues(), 5, "StatsInfo", value));
42364257
}
42374258

4259+
const StringUtil::EnumStringLiteral *GetStorageBlockPrefetchValues() {
4260+
static constexpr StringUtil::EnumStringLiteral values[] {
4261+
{ static_cast<uint32_t>(StorageBlockPrefetch::REMOTE_ONLY), "REMOTE_ONLY" },
4262+
{ static_cast<uint32_t>(StorageBlockPrefetch::NEVER), "NEVER" },
4263+
{ static_cast<uint32_t>(StorageBlockPrefetch::ALWAYS_PREFETCH), "ALWAYS_PREFETCH" },
4264+
{ static_cast<uint32_t>(StorageBlockPrefetch::DEBUG_FORCE_ALWAYS), "DEBUG_FORCE_ALWAYS" }
4265+
};
4266+
return values;
4267+
}
4268+
4269+
template<>
4270+
const char* EnumUtil::ToChars<StorageBlockPrefetch>(StorageBlockPrefetch value) {
4271+
return StringUtil::EnumToString(GetStorageBlockPrefetchValues(), 4, "StorageBlockPrefetch", static_cast<uint32_t>(value));
4272+
}
4273+
4274+
template<>
4275+
StorageBlockPrefetch EnumUtil::FromString<StorageBlockPrefetch>(const char *value) {
4276+
return static_cast<StorageBlockPrefetch>(StringUtil::StringToEnum(GetStorageBlockPrefetchValues(), 4, "StorageBlockPrefetch", value));
4277+
}
4278+
42384279
const StringUtil::EnumStringLiteral *GetStrTimeSpecifierValues() {
42394280
static constexpr StringUtil::EnumStringLiteral values[] {
42404281
{ static_cast<uint32_t>(StrTimeSpecifier::ABBREVIATED_WEEKDAY_NAME), "ABBREVIATED_WEEKDAY_NAME" },

0 commit comments

Comments
 (0)