From 5c125a6a7c52ee833d38f184f0c1a4acd0550e52 Mon Sep 17 00:00:00 2001 From: Alex Kasko Date: Sun, 27 Sep 2026 08:50:01 +0100 Subject: [PATCH 1/2] Update windows-arm64 to vs2026 on CI --- .github/workflows/Java.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/Java.yml b/.github/workflows/Java.yml index 6cffd24f6..f399c8e81 100644 --- a/.github/workflows/Java.yml +++ b/.github/workflows/Java.yml @@ -732,7 +732,7 @@ jobs: - name: Build shell: cmd run: | - call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsarm64.bat" + call "C:\Program Files\Microsoft Visual Studio\18\Enterprise\VC\Auxiliary\Build\vcvarsarm64.bat" mkdir build cd build mkdir release @@ -749,7 +749,7 @@ jobs: - name: List Symbols shell: cmd run: | - call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsarm64.bat" + call "C:\Program Files\Microsoft Visual Studio\18\Enterprise\VC\Auxiliary\Build\vcvarsarm64.bat" dumpbin.exe /imports build\release\libduckdb_java.so_windows_arm64 dumpbin.exe /exports build\release\libduckdb_java.so_windows_arm64 From 0a8865c457b545342f14a3bde2cd8f3eb1fca42a Mon Sep 17 00:00:00 2001 From: DuckDB Labs GitHub Bot Date: Mon, 28 Sep 2026 13:43:34 +0000 Subject: [PATCH 2/2] Update vendored DuckDB sources to 069cc9f9b5 --- .../extension/parquet/column_writer.cpp | 19 +++ .../parquet/include/column_writer.hpp | 5 + .../extension/parquet/parquet_shredding.cpp | 5 +- .../writer/variant/convert_variant.cpp | 40 ++++++ .../function/table/version/pragma_version.cpp | 6 +- .../src/include/duckdb/main/settings.hpp | 122 ++++++++++-------- .../storage/compression/alp/algorithm/alp.hpp | 1 + .../storage/compression/alp/alp_scan.hpp | 1 + .../storage/compression/alprd/alprd_scan.hpp | 1 + .../storage/compression/chimp/chimp_scan.hpp | 1 + .../storage/compression/patas/patas_scan.hpp | 1 + src/duckdb/src/main/config.cpp | 9 +- .../src/storage/optimistic_data_writer.cpp | 4 + 13 files changed, 149 insertions(+), 66 deletions(-) diff --git a/src/duckdb/extension/parquet/column_writer.cpp b/src/duckdb/extension/parquet/column_writer.cpp index 8546446e8..908ae96a8 100644 --- a/src/duckdb/extension/parquet/column_writer.cpp +++ b/src/duckdb/extension/parquet/column_writer.cpp @@ -115,6 +115,25 @@ ColumnWriter::ColumnWriter(ParquetWriter &writer, ParquetColumnSchema &&column_s ColumnWriter::~ColumnWriter() { } +void ColumnWriter::MarkRepetitionRequired() { + if (column_schema.repetition_type == duckdb_parquet::FieldRepetitionType::REQUIRED) { + return; + } + D_ASSERT(column_schema.repetition_type == duckdb_parquet::FieldRepetitionType::OPTIONAL); + D_ASSERT(can_have_nulls); + column_schema.repetition_type = duckdb_parquet::FieldRepetitionType::REQUIRED; + can_have_nulls = false; + DecrementMaxDefineRecursive(); +} + +void ColumnWriter::DecrementMaxDefineRecursive() { + D_ASSERT(column_schema.max_define > 0); + column_schema.max_define--; + for (auto &child : child_writers) { + child->DecrementMaxDefineRecursive(); + } +} + ColumnWriterState::~ColumnWriterState() { } diff --git a/src/duckdb/extension/parquet/include/column_writer.hpp b/src/duckdb/extension/parquet/include/column_writer.hpp index fb4a0c91e..09800eb20 100644 --- a/src/duckdb/extension/parquet/include/column_writer.hpp +++ b/src/duckdb/extension/parquet/include/column_writer.hpp @@ -137,6 +137,9 @@ class ColumnWriter { return child_writers; } + //! Mark this writer (and descendants) as REQUIRED in the Parquet schema + void MarkRepetitionRequired(); + virtual void AnalyzeSchema(ParquetAnalyzeSchemaState &state, Vector &input, idx_t count) { throw NotImplementedException("Writer doesn't require an AnalyzeSchema pass"); } @@ -199,6 +202,8 @@ class ColumnWriter { void CompressPage(MemoryStream &temp_writer, size_t &compressed_size, data_ptr_t &compressed_data, AllocatedData &compressed_buf); + void DecrementMaxDefineRecursive(); + public: ParquetWriter &writer; //! The parent writer (if this is a nested field) diff --git a/src/duckdb/extension/parquet/parquet_shredding.cpp b/src/duckdb/extension/parquet/parquet_shredding.cpp index 20ca3154d..4ba273497 100644 --- a/src/duckdb/extension/parquet/parquet_shredding.cpp +++ b/src/duckdb/extension/parquet/parquet_shredding.cpp @@ -25,10 +25,7 @@ bool ShreddingType::operator==(const ShreddingType &other) const { if (set != other.set) { return false; } - if (!set) { - return true; - } - if (type != other.type) { + if (set && type != other.type) { return false; } if (!children.types && !other.children.types) { diff --git a/src/duckdb/extension/parquet/writer/variant/convert_variant.cpp b/src/duckdb/extension/parquet/writer/variant/convert_variant.cpp index 57e250298..64798f609 100644 --- a/src/duckdb/extension/parquet/writer/variant/convert_variant.cpp +++ b/src/duckdb/extension/parquet/writer/variant/convert_variant.cpp @@ -885,6 +885,40 @@ static void ToParquetVariant(DataChunk &input, ExpressionState &state, Vector &r } } +static optional_ptr FindChildWriterByName(ColumnWriter &parent, const char *name) { + for (auto &child : parent.ChildWriters()) { + if (child->Schema().name == name) { + return *child; + } + } + return nullptr; +} + +static void MarkTypedValueShreddingGroupsRequired(ColumnWriter &typed_value); + +// Field/element group: mark REQUIRED, then recurse into nested typed_value if present +static void MarkShreddedGroupRequired(ColumnWriter &group) { + D_ASSERT(group.Type().id() == LogicalTypeId::STRUCT); + group.MarkRepetitionRequired(); + auto nested_typed_value = FindChildWriterByName(group, "typed_value"); + if (nested_typed_value) { + MarkTypedValueShreddingGroupsRequired(*nested_typed_value); + } +} + +// Field/element groups under typed_value must be REQUIRED (VariantShredding.md) +static void MarkTypedValueShreddingGroupsRequired(ColumnWriter &typed_value) { + auto type_id = typed_value.Type().id(); + if (type_id == LogicalTypeId::STRUCT) { + for (auto &field_group : typed_value.ChildWriters()) { + MarkShreddedGroupRequired(*field_group); + } + } else if (type_id == LogicalTypeId::LIST || type_id == LogicalTypeId::ARRAY) { + D_ASSERT(typed_value.ChildWriters().size() == 1); + MarkShreddedGroupRequired(*typed_value.ChildWriters()[0]); + } +} + idx_t VariantColumnWriter::FinalizeSchema(vector &schemas) { idx_t schema_idx = schemas.size(); @@ -895,6 +929,12 @@ idx_t VariantColumnWriter::FinalizeSchema(vector auto &name = schema.name; auto &field_id = schema.field_id; + // Mark shredded field/element groups REQUIRED (reserved Parquet names only) + auto typed_value = FindChildWriterByName(*this, "typed_value"); + if (typed_value) { + MarkTypedValueShreddingGroupsRequired(*typed_value); + } + // variant group duckdb_parquet::SchemaElement top_element; top_element.repetition_type = repetition_type; diff --git a/src/duckdb/src/function/table/version/pragma_version.cpp b/src/duckdb/src/function/table/version/pragma_version.cpp index 9e39a0133..29ca0b28c 100644 --- a/src/duckdb/src/function/table/version/pragma_version.cpp +++ b/src/duckdb/src/function/table/version/pragma_version.cpp @@ -1,5 +1,5 @@ #ifndef DUCKDB_PATCH_VERSION -#define DUCKDB_PATCH_VERSION "6-dev212" +#define DUCKDB_PATCH_VERSION "6" #endif #ifndef DUCKDB_MINOR_VERSION #define DUCKDB_MINOR_VERSION 5 @@ -8,10 +8,10 @@ #define DUCKDB_MAJOR_VERSION 1 #endif #ifndef DUCKDB_VERSION -#define DUCKDB_VERSION "v1.5.6-dev212" +#define DUCKDB_VERSION "v1.5.6" #endif #ifndef DUCKDB_SOURCE_ID -#define DUCKDB_SOURCE_ID "46f1c14caa" +#define DUCKDB_SOURCE_ID "069cc9f9b5" #endif #include "duckdb/function/table/system_functions.hpp" #include "duckdb/main/database.hpp" diff --git a/src/duckdb/src/include/duckdb/main/settings.hpp b/src/duckdb/src/include/duckdb/main/settings.hpp index 0c6b3c3e3..beb5b8d01 100644 --- a/src/duckdb/src/include/duckdb/main/settings.hpp +++ b/src/duckdb/src/include/duckdb/main/settings.hpp @@ -801,6 +801,18 @@ struct EnableObjectCacheSetting { static constexpr idx_t SettingIndex = 43; }; +struct EnableOptimisticWriteSetting { + using RETURN_TYPE = bool; + static constexpr const char *Name = "enable_optimistic_write"; + static constexpr const char *Description = + "Whether or not to optimistically write large appends to disk before committing. Disable this to keep bulk " + "appends in memory (e.g. for in-memory benchmarks)."; + static constexpr const char *InputType = "BOOLEAN"; + static constexpr const char *DefaultValue = "true"; + static constexpr SettingScopeTarget Scope = SettingScopeTarget::GLOBAL_DEFAULT; + static constexpr idx_t SettingIndex = 44; +}; + struct EnableProfilingSetting { using RETURN_TYPE = string; static constexpr const char *Name = "enable_profiling"; @@ -844,7 +856,7 @@ struct EnableViewDependenciesSetting { static constexpr const char *InputType = "BOOLEAN"; static constexpr const char *DefaultValue = "false"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::GLOBAL_DEFAULT; - static constexpr idx_t SettingIndex = 44; + static constexpr idx_t SettingIndex = 45; }; struct EnabledLogTypes { @@ -864,7 +876,7 @@ struct ErrorsAsJSONSetting { static constexpr const char *InputType = "BOOLEAN"; static constexpr const char *DefaultValue = "false"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::LOCAL_DEFAULT; - static constexpr idx_t SettingIndex = 45; + static constexpr idx_t SettingIndex = 46; }; struct ExperimentalMetadataReuseSetting { @@ -874,7 +886,7 @@ struct ExperimentalMetadataReuseSetting { static constexpr const char *InputType = "BOOLEAN"; static constexpr const char *DefaultValue = "true"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::GLOBAL_ONLY; - static constexpr idx_t SettingIndex = 46; + static constexpr idx_t SettingIndex = 47; }; struct ExplainOutputSetting { @@ -884,7 +896,7 @@ struct ExplainOutputSetting { static constexpr const char *InputType = "VARCHAR"; static constexpr const char *DefaultValue = "PHYSICAL_ONLY"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::LOCAL_DEFAULT; - static constexpr idx_t SettingIndex = 47; + static constexpr idx_t SettingIndex = 48; static void OnSet(SettingCallbackInfo &info, Value &input); }; @@ -905,7 +917,7 @@ struct ExtensionDirectorySetting { static constexpr const char *InputType = "VARCHAR"; static constexpr const char *DefaultValue = ""; static constexpr SettingScopeTarget Scope = SettingScopeTarget::GLOBAL_ONLY; - static constexpr idx_t SettingIndex = 48; + static constexpr idx_t SettingIndex = 49; }; struct ExternalThreadsSetting { @@ -915,7 +927,7 @@ struct ExternalThreadsSetting { static constexpr const char *InputType = "UBIGINT"; static constexpr const char *DefaultValue = "1"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::GLOBAL_ONLY; - static constexpr idx_t SettingIndex = 49; + static constexpr idx_t SettingIndex = 50; static void OnSet(SettingCallbackInfo &info, Value &input); }; @@ -926,7 +938,7 @@ struct FileSearchPathSetting { static constexpr const char *InputType = "VARCHAR"; static constexpr const char *DefaultValue = ""; static constexpr SettingScopeTarget Scope = SettingScopeTarget::LOCAL_DEFAULT; - static constexpr idx_t SettingIndex = 50; + static constexpr idx_t SettingIndex = 51; }; struct ForceBitpackingModeSetting { @@ -936,7 +948,7 @@ struct ForceBitpackingModeSetting { static constexpr const char *InputType = "VARCHAR"; static constexpr const char *DefaultValue = "AUTO"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::GLOBAL_ONLY; - static constexpr idx_t SettingIndex = 51; + static constexpr idx_t SettingIndex = 52; static void OnSet(SettingCallbackInfo &info, Value &input); }; @@ -949,7 +961,7 @@ struct ForceColumnMetadataReuseSetting { static constexpr const char *InputType = "BOOLEAN"; static constexpr const char *DefaultValue = "false"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::GLOBAL_ONLY; - static constexpr idx_t SettingIndex = 52; + static constexpr idx_t SettingIndex = 53; }; struct ForceCompressionSetting { @@ -959,7 +971,7 @@ struct ForceCompressionSetting { static constexpr const char *InputType = "VARCHAR"; static constexpr const char *DefaultValue = "auto"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::GLOBAL_ONLY; - static constexpr idx_t SettingIndex = 53; + static constexpr idx_t SettingIndex = 54; static void OnSet(SettingCallbackInfo &info, Value &input); }; @@ -992,7 +1004,7 @@ struct GeometryMinimumShreddingSize { static constexpr const char *InputType = "BIGINT"; static constexpr const char *DefaultValue = "30000"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::GLOBAL_ONLY; - static constexpr idx_t SettingIndex = 54; + static constexpr idx_t SettingIndex = 55; }; struct HomeDirectorySetting { @@ -1002,7 +1014,7 @@ struct HomeDirectorySetting { static constexpr const char *InputType = "VARCHAR"; static constexpr const char *DefaultValue = ""; static constexpr SettingScopeTarget Scope = SettingScopeTarget::LOCAL_DEFAULT; - static constexpr idx_t SettingIndex = 55; + static constexpr idx_t SettingIndex = 56; static void OnSet(SettingCallbackInfo &info, Value &input); }; @@ -1035,7 +1047,7 @@ struct HTTPProxyPasswordSetting { static constexpr const char *InputType = "VARCHAR"; static constexpr const char *DefaultValue = ""; static constexpr SettingScopeTarget Scope = SettingScopeTarget::GLOBAL_ONLY; - static constexpr idx_t SettingIndex = 56; + static constexpr idx_t SettingIndex = 57; }; struct HTTPProxyUsernameSetting { @@ -1045,7 +1057,7 @@ struct HTTPProxyUsernameSetting { static constexpr const char *InputType = "VARCHAR"; static constexpr const char *DefaultValue = ""; static constexpr SettingScopeTarget Scope = SettingScopeTarget::GLOBAL_ONLY; - static constexpr idx_t SettingIndex = 57; + static constexpr idx_t SettingIndex = 58; }; struct IeeeFloatingPointOpsSetting { @@ -1056,7 +1068,7 @@ struct IeeeFloatingPointOpsSetting { static constexpr const char *InputType = "BOOLEAN"; static constexpr const char *DefaultValue = "true"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::LOCAL_DEFAULT; - static constexpr idx_t SettingIndex = 58; + static constexpr idx_t SettingIndex = 59; }; struct IgnoreUnknownCrsSetting { @@ -1067,7 +1079,7 @@ struct IgnoreUnknownCrsSetting { static constexpr const char *InputType = "BOOLEAN"; static constexpr const char *DefaultValue = "false"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::LOCAL_DEFAULT; - static constexpr idx_t SettingIndex = 59; + static constexpr idx_t SettingIndex = 60; }; struct ImmediateTransactionModeSetting { @@ -1078,7 +1090,7 @@ struct ImmediateTransactionModeSetting { static constexpr const char *InputType = "BOOLEAN"; static constexpr const char *DefaultValue = "false"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::GLOBAL_DEFAULT; - static constexpr idx_t SettingIndex = 60; + static constexpr idx_t SettingIndex = 61; }; struct IndexScanMaxCountSetting { @@ -1090,7 +1102,7 @@ struct IndexScanMaxCountSetting { static constexpr const char *InputType = "UBIGINT"; static constexpr const char *DefaultValue = "2048"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::GLOBAL_DEFAULT; - static constexpr idx_t SettingIndex = 61; + static constexpr idx_t SettingIndex = 62; }; struct IndexScanPercentageSetting { @@ -1102,7 +1114,7 @@ struct IndexScanPercentageSetting { static constexpr const char *InputType = "DOUBLE"; static constexpr const char *DefaultValue = "0.001"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::GLOBAL_DEFAULT; - static constexpr idx_t SettingIndex = 62; + static constexpr idx_t SettingIndex = 63; static void OnSet(SettingCallbackInfo &info, Value &input); }; @@ -1114,7 +1126,7 @@ struct IntegerDivisionSetting { static constexpr const char *InputType = "BOOLEAN"; static constexpr const char *DefaultValue = "false"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::LOCAL_DEFAULT; - static constexpr idx_t SettingIndex = 63; + static constexpr idx_t SettingIndex = 64; }; struct LambdaSyntaxSetting { @@ -1125,7 +1137,7 @@ struct LambdaSyntaxSetting { static constexpr const char *InputType = "VARCHAR"; static constexpr const char *DefaultValue = "DEFAULT"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::LOCAL_DEFAULT; - static constexpr idx_t SettingIndex = 64; + static constexpr idx_t SettingIndex = 65; static void OnSet(SettingCallbackInfo &info, Value &input); }; @@ -1137,7 +1149,7 @@ struct LateMaterializationMaxRowsSetting { static constexpr const char *InputType = "UBIGINT"; static constexpr const char *DefaultValue = "50"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::LOCAL_DEFAULT; - static constexpr idx_t SettingIndex = 65; + static constexpr idx_t SettingIndex = 66; }; struct LockConfigurationSetting { @@ -1147,7 +1159,7 @@ struct LockConfigurationSetting { static constexpr const char *InputType = "BOOLEAN"; static constexpr const char *DefaultValue = "false"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::GLOBAL_ONLY; - static constexpr idx_t SettingIndex = 66; + static constexpr idx_t SettingIndex = 67; }; struct LogQueryPathSetting { @@ -1158,7 +1170,7 @@ struct LogQueryPathSetting { static constexpr const char *InputType = "VARCHAR"; static constexpr const char *DefaultValue = ""; static constexpr SettingScopeTarget Scope = SettingScopeTarget::LOCAL_DEFAULT; - static constexpr idx_t SettingIndex = 67; + static constexpr idx_t SettingIndex = 68; static void OnSet(SettingCallbackInfo &info, Value &input); }; @@ -1201,7 +1213,7 @@ struct MaxExpressionDepthSetting { static constexpr const char *InputType = "UBIGINT"; static constexpr const char *DefaultValue = "1000"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::LOCAL_DEFAULT; - static constexpr idx_t SettingIndex = 68; + static constexpr idx_t SettingIndex = 69; }; struct MaxMemorySetting { @@ -1232,7 +1244,7 @@ struct MaxVacuumTasksSetting { static constexpr const char *InputType = "UBIGINT"; static constexpr const char *DefaultValue = "100"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::GLOBAL_ONLY; - static constexpr idx_t SettingIndex = 69; + static constexpr idx_t SettingIndex = 70; }; struct MergeJoinThresholdSetting { @@ -1242,7 +1254,7 @@ struct MergeJoinThresholdSetting { static constexpr const char *InputType = "UBIGINT"; static constexpr const char *DefaultValue = "1000"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::LOCAL_DEFAULT; - static constexpr idx_t SettingIndex = 70; + static constexpr idx_t SettingIndex = 71; }; struct NestedLoopJoinThresholdSetting { @@ -1253,7 +1265,7 @@ struct NestedLoopJoinThresholdSetting { static constexpr const char *InputType = "UBIGINT"; static constexpr const char *DefaultValue = "5"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::LOCAL_DEFAULT; - static constexpr idx_t SettingIndex = 71; + static constexpr idx_t SettingIndex = 72; }; struct OldImplicitCastingSetting { @@ -1263,7 +1275,7 @@ struct OldImplicitCastingSetting { static constexpr const char *InputType = "BOOLEAN"; static constexpr const char *DefaultValue = "false"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::GLOBAL_DEFAULT; - static constexpr idx_t SettingIndex = 72; + static constexpr idx_t SettingIndex = 73; }; struct OrderByNonIntegerLiteralSetting { @@ -1274,7 +1286,7 @@ struct OrderByNonIntegerLiteralSetting { static constexpr const char *InputType = "BOOLEAN"; static constexpr const char *DefaultValue = "false"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::LOCAL_DEFAULT; - static constexpr idx_t SettingIndex = 73; + static constexpr idx_t SettingIndex = 74; }; struct OrderedAggregateThresholdSetting { @@ -1284,7 +1296,7 @@ struct OrderedAggregateThresholdSetting { static constexpr const char *InputType = "UBIGINT"; static constexpr const char *DefaultValue = "262144"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::LOCAL_DEFAULT; - static constexpr idx_t SettingIndex = 74; + static constexpr idx_t SettingIndex = 75; static void OnSet(SettingCallbackInfo &info, Value &input); }; @@ -1296,7 +1308,7 @@ struct PartitionedWriteFlushThresholdSetting { static constexpr const char *InputType = "UBIGINT"; static constexpr const char *DefaultValue = "524288"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::LOCAL_DEFAULT; - static constexpr idx_t SettingIndex = 75; + static constexpr idx_t SettingIndex = 76; }; struct PartitionedWriteMaxOpenFilesSetting { @@ -1307,7 +1319,7 @@ struct PartitionedWriteMaxOpenFilesSetting { static constexpr const char *InputType = "UBIGINT"; static constexpr const char *DefaultValue = "100"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::LOCAL_DEFAULT; - static constexpr idx_t SettingIndex = 76; + static constexpr idx_t SettingIndex = 77; }; struct PasswordSetting { @@ -1317,7 +1329,7 @@ struct PasswordSetting { static constexpr const char *InputType = "VARCHAR"; static constexpr const char *DefaultValue = ""; static constexpr SettingScopeTarget Scope = SettingScopeTarget::GLOBAL_DEFAULT; - static constexpr idx_t SettingIndex = 77; + static constexpr idx_t SettingIndex = 78; }; struct PerfectHtThresholdSetting { @@ -1327,7 +1339,7 @@ struct PerfectHtThresholdSetting { static constexpr const char *InputType = "UBIGINT"; static constexpr const char *DefaultValue = "12"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::LOCAL_DEFAULT; - static constexpr idx_t SettingIndex = 78; + static constexpr idx_t SettingIndex = 79; static void OnSet(SettingCallbackInfo &info, Value &input); }; @@ -1339,7 +1351,7 @@ struct PinThreadsSetting { static constexpr const char *InputType = "VARCHAR"; static constexpr const char *DefaultValue = "auto"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::GLOBAL_ONLY; - static constexpr idx_t SettingIndex = 79; + static constexpr idx_t SettingIndex = 80; static void OnSet(SettingCallbackInfo &info, Value &input); }; @@ -1351,7 +1363,7 @@ struct PivotFilterThresholdSetting { static constexpr const char *InputType = "UBIGINT"; static constexpr const char *DefaultValue = "20"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::LOCAL_DEFAULT; - static constexpr idx_t SettingIndex = 80; + static constexpr idx_t SettingIndex = 81; }; struct PivotLimitSetting { @@ -1361,7 +1373,7 @@ struct PivotLimitSetting { static constexpr const char *InputType = "UBIGINT"; static constexpr const char *DefaultValue = "100000"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::LOCAL_DEFAULT; - static constexpr idx_t SettingIndex = 81; + static constexpr idx_t SettingIndex = 82; }; struct PreferRangeJoinsSetting { @@ -1371,7 +1383,7 @@ struct PreferRangeJoinsSetting { static constexpr const char *InputType = "BOOLEAN"; static constexpr const char *DefaultValue = "false"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::LOCAL_DEFAULT; - static constexpr idx_t SettingIndex = 82; + static constexpr idx_t SettingIndex = 83; }; struct PreserveIdentifierCaseSetting { @@ -1382,7 +1394,7 @@ struct PreserveIdentifierCaseSetting { static constexpr const char *InputType = "BOOLEAN"; static constexpr const char *DefaultValue = "true"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::LOCAL_DEFAULT; - static constexpr idx_t SettingIndex = 83; + static constexpr idx_t SettingIndex = 84; }; struct PreserveInsertionOrderSetting { @@ -1394,7 +1406,7 @@ struct PreserveInsertionOrderSetting { static constexpr const char *InputType = "BOOLEAN"; static constexpr const char *DefaultValue = "true"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::GLOBAL_DEFAULT; - static constexpr idx_t SettingIndex = 84; + static constexpr idx_t SettingIndex = 85; }; struct ProduceArrowStringViewSetting { @@ -1405,7 +1417,7 @@ struct ProduceArrowStringViewSetting { static constexpr const char *InputType = "BOOLEAN"; static constexpr const char *DefaultValue = "false"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::GLOBAL_DEFAULT; - static constexpr idx_t SettingIndex = 85; + static constexpr idx_t SettingIndex = 86; }; struct ProfileOutputSetting { @@ -1458,7 +1470,7 @@ struct ScalarSubqueryErrorOnMultipleRowsSetting { static constexpr const char *InputType = "BOOLEAN"; static constexpr const char *DefaultValue = "true"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::LOCAL_DEFAULT; - static constexpr idx_t SettingIndex = 86; + static constexpr idx_t SettingIndex = 87; }; struct SchedulerProcessPartialSetting { @@ -1473,7 +1485,7 @@ struct SchedulerProcessPartialSetting { static constexpr const char *DefaultValue = "false"; #endif static constexpr SettingScopeTarget Scope = SettingScopeTarget::GLOBAL_ONLY; - static constexpr idx_t SettingIndex = 87; + static constexpr idx_t SettingIndex = 88; }; struct SchemaSetting { @@ -1515,7 +1527,7 @@ struct StorageBlockPrefetchSetting { static constexpr const char *InputType = "VARCHAR"; static constexpr const char *DefaultValue = "REMOTE_ONLY"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::GLOBAL_ONLY; - static constexpr idx_t SettingIndex = 88; + static constexpr idx_t SettingIndex = 89; static void OnSet(SettingCallbackInfo &info, Value &input); }; @@ -1557,7 +1569,7 @@ struct TempFileEncryptionSetting { static constexpr const char *InputType = "BOOLEAN"; static constexpr const char *DefaultValue = "false"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::GLOBAL_ONLY; - static constexpr idx_t SettingIndex = 89; + static constexpr idx_t SettingIndex = 90; static void OnSet(SettingCallbackInfo &info, Value &input); }; @@ -1578,7 +1590,7 @@ struct UsernameSetting { static constexpr const char *InputType = "VARCHAR"; static constexpr const char *DefaultValue = ""; static constexpr SettingScopeTarget Scope = SettingScopeTarget::GLOBAL_DEFAULT; - static constexpr idx_t SettingIndex = 90; + static constexpr idx_t SettingIndex = 91; }; struct VacuumRebuildIndexesSetting { @@ -1591,7 +1603,7 @@ struct VacuumRebuildIndexesSetting { static constexpr const char *InputType = "UBIGINT"; static constexpr const char *DefaultValue = "0"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::GLOBAL_DEFAULT; - static constexpr idx_t SettingIndex = 91; + static constexpr idx_t SettingIndex = 92; static void OnSet(SettingCallbackInfo &info, Value &input); }; @@ -1604,7 +1616,7 @@ struct ValidateExternalFileCacheSetting { static constexpr const char *InputType = "VARCHAR"; static constexpr const char *DefaultValue = "VALIDATE_ALL"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::GLOBAL_DEFAULT; - static constexpr idx_t SettingIndex = 92; + static constexpr idx_t SettingIndex = 93; static void OnSet(SettingCallbackInfo &info, Value &input); }; @@ -1616,7 +1628,7 @@ struct VariantMinimumShreddingSizeSetting { static constexpr const char *InputType = "BIGINT"; static constexpr const char *DefaultValue = "30000"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::GLOBAL_ONLY; - static constexpr idx_t SettingIndex = 93; + static constexpr idx_t SettingIndex = 94; }; struct WalAutocheckpointEntriesSetting { @@ -1627,7 +1639,7 @@ struct WalAutocheckpointEntriesSetting { static constexpr const char *InputType = "UBIGINT"; static constexpr const char *DefaultValue = "0"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::GLOBAL_DEFAULT; - static constexpr idx_t SettingIndex = 94; + static constexpr idx_t SettingIndex = 95; }; struct WarningsAsErrorsSetting { @@ -1637,7 +1649,7 @@ struct WarningsAsErrorsSetting { static constexpr const char *InputType = "BOOLEAN"; static constexpr const char *DefaultValue = "false"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::GLOBAL_ONLY; - static constexpr idx_t SettingIndex = 95; + static constexpr idx_t SettingIndex = 96; static void OnSet(SettingCallbackInfo &info, Value &input); }; @@ -1649,7 +1661,7 @@ struct WriteBufferRowGroupCountSetting { static constexpr const char *InputType = "UBIGINT"; static constexpr const char *DefaultValue = "5"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::GLOBAL_DEFAULT; - static constexpr idx_t SettingIndex = 96; + static constexpr idx_t SettingIndex = 97; }; struct WriteBufferRowGroupMemoryLimitSetting { @@ -1673,11 +1685,11 @@ struct ZstdMinStringLengthSetting { static constexpr const char *InputType = "UBIGINT"; static constexpr const char *DefaultValue = "4096"; static constexpr SettingScopeTarget Scope = SettingScopeTarget::GLOBAL_ONLY; - static constexpr idx_t SettingIndex = 97; + static constexpr idx_t SettingIndex = 98; }; struct GeneratedSettingInfo { - static constexpr idx_t MaxSettingIndex = 98; + static constexpr idx_t MaxSettingIndex = 99; }; //===----------------------------------------------------------------------===// diff --git a/src/duckdb/src/include/duckdb/storage/compression/alp/algorithm/alp.hpp b/src/duckdb/src/include/duckdb/storage/compression/alp/algorithm/alp.hpp index 2fca804ad..44cff8df2 100644 --- a/src/duckdb/src/include/duckdb/storage/compression/alp/algorithm/alp.hpp +++ b/src/duckdb/src/include/duckdb/storage/compression/alp/algorithm/alp.hpp @@ -14,6 +14,7 @@ #include "duckdb/common/pair.hpp" #include "duckdb/common/limits.hpp" #include "duckdb/common/types/hash.hpp" +#include "duckdb/common/types/value.hpp" #include "duckdb/storage/compression/alp/alp_constants.hpp" #include "duckdb/storage/compression/alp/alp_utils.hpp" diff --git a/src/duckdb/src/include/duckdb/storage/compression/alp/alp_scan.hpp b/src/duckdb/src/include/duckdb/storage/compression/alp/alp_scan.hpp index 652b9be9e..61458fcf2 100644 --- a/src/duckdb/src/include/duckdb/storage/compression/alp/alp_scan.hpp +++ b/src/duckdb/src/include/duckdb/storage/compression/alp/alp_scan.hpp @@ -11,6 +11,7 @@ #include "duckdb/storage/compression/alp/algorithm/alp.hpp" #include "duckdb/common/limits.hpp" +#include "duckdb/common/types/vector.hpp" #include "duckdb/storage/buffer_manager.hpp" #include "duckdb/storage/table/column_segment.hpp" diff --git a/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_scan.hpp b/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_scan.hpp index 01212dafa..01f1cf3f0 100644 --- a/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_scan.hpp +++ b/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_scan.hpp @@ -11,6 +11,7 @@ #include "duckdb/storage/compression/alprd/algorithm/alprd.hpp" #include "duckdb/storage/compression/alprd/alprd_constants.hpp" +#include "duckdb/common/types/vector.hpp" #include "duckdb/function/compression_function.hpp" #include "duckdb/storage/buffer_manager.hpp" diff --git a/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_scan.hpp b/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_scan.hpp index 6cd49a1e6..ba57ef139 100644 --- a/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_scan.hpp +++ b/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_scan.hpp @@ -13,6 +13,7 @@ #include "duckdb/common/limits.hpp" #include "duckdb/common/numeric_utils.hpp" +#include "duckdb/common/types/vector.hpp" #include "duckdb/function/compression_function.hpp" #include "duckdb/storage/buffer_manager.hpp" diff --git a/src/duckdb/src/include/duckdb/storage/compression/patas/patas_scan.hpp b/src/duckdb/src/include/duckdb/storage/compression/patas/patas_scan.hpp index 5fcd755ce..9193fe3a3 100644 --- a/src/duckdb/src/include/duckdb/storage/compression/patas/patas_scan.hpp +++ b/src/duckdb/src/include/duckdb/storage/compression/patas/patas_scan.hpp @@ -15,6 +15,7 @@ #include "duckdb/storage/compression/patas/algorithm/patas.hpp" #include "duckdb/storage/compression/patas/patas.hpp" +#include "duckdb/common/types/vector.hpp" #include "duckdb/function/compression_function.hpp" #include "duckdb/storage/buffer_manager.hpp" diff --git a/src/duckdb/src/main/config.cpp b/src/duckdb/src/main/config.cpp index faab034e6..7cfcacb4b 100644 --- a/src/duckdb/src/main/config.cpp +++ b/src/duckdb/src/main/config.cpp @@ -130,6 +130,7 @@ static const ConfigurationOption internal_options[] = { DUCKDB_GLOBAL(EnableLogging), DUCKDB_SETTING(EnableMacroDependenciesSetting), DUCKDB_SETTING(EnableObjectCacheSetting), + DUCKDB_SETTING(EnableOptimisticWriteSetting), DUCKDB_LOCAL(EnableProfilingSetting), DUCKDB_LOCAL(EnableProgressBarSetting), DUCKDB_LOCAL(EnableProgressBarPrintSetting), @@ -212,12 +213,12 @@ static const ConfigurationOption internal_options[] = { DUCKDB_SETTING(ZstdMinStringLengthSetting), FINAL_SETTING}; -static const ConfigurationAlias setting_aliases[] = {DUCKDB_SETTING_ALIAS("memory_limit", 102), +static const ConfigurationAlias setting_aliases[] = {DUCKDB_SETTING_ALIAS("memory_limit", 103), DUCKDB_SETTING_ALIAS("null_order", 44), - DUCKDB_SETTING_ALIAS("profiling_output", 121), - DUCKDB_SETTING_ALIAS("user", 136), + DUCKDB_SETTING_ALIAS("profiling_output", 122), + DUCKDB_SETTING_ALIAS("user", 137), DUCKDB_SETTING_ALIAS("wal_autocheckpoint", 25), - DUCKDB_SETTING_ALIAS("worker_threads", 135), + DUCKDB_SETTING_ALIAS("worker_threads", 136), FINAL_ALIAS}; vector DBConfig::GetOptions() { diff --git a/src/duckdb/src/storage/optimistic_data_writer.cpp b/src/duckdb/src/storage/optimistic_data_writer.cpp index 3e5106856..4e78a84fd 100644 --- a/src/duckdb/src/storage/optimistic_data_writer.cpp +++ b/src/duckdb/src/storage/optimistic_data_writer.cpp @@ -22,6 +22,10 @@ OptimisticDataWriter::~OptimisticDataWriter() { } bool OptimisticDataWriter::PrepareWrite() { + // check if optimistic writing is enabled + if (!Settings::Get(context)) { + return false; + } // check if we should pre-emptively write the table to disk auto &attached = table.GetAttached(); auto &storage_manager = StorageManager::Get(attached);