From 9c72e3ac6cce8a77d62ab90133c58c3243caa083 Mon Sep 17 00:00:00 2001 From: Carlo Piovesan Date: Mon, 28 Oct 2024 10:28:06 +0100 Subject: [PATCH 1/2] Fix s3_url_compatibility to url_compatibility --- extension/httpfs/create_secret_functions.cpp | 23 ++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/extension/httpfs/create_secret_functions.cpp b/extension/httpfs/create_secret_functions.cpp index bcfdd82..5fb8ec3 100644 --- a/extension/httpfs/create_secret_functions.cpp +++ b/extension/httpfs/create_secret_functions.cpp @@ -39,6 +39,7 @@ unique_ptr CreateS3SecretFunctions::CreateSecretFunctionInternal(Cli secret->secret_map["url_style"] = "path"; } + idx_t url_compatibility = -1; // apply any overridden settings for (const auto &named_param : input.options) { auto lower_name = StringUtil::Lower(named_param.first); @@ -66,14 +67,31 @@ unique_ptr CreateS3SecretFunctions::CreateSecretFunctionInternal(Cli throw InvalidInputException("Invalid type past to secret option: '%s', found '%s', expected: 'BOOLEAN'", lower_name, named_param.second.type().ToString()); } - secret->secret_map["url_compatibility_mode"] = Value::BOOLEAN(named_param.second.GetValue()); + const bool v = named_param.second.GetValue(); + if (url_compatibility == -1) { + url_compatibility = v; + } else if (url_compatibility != v) { + throw InvalidInputException("Mismatched values of [s3_]url_compatibility_mode setting. Consider removing the secret."); + } + secret->secret_map["url_compatibility_mode"] = Value::BOOLEAN(v); + } else if (lower_name == "s3_url_compatibility_mode") { + if (named_param.second.type() != LogicalType::BOOLEAN) { + throw InvalidInputException("Invalid type past to secret option: '%s', found '%s', expected: 'BOOLEAN'", + lower_name, named_param.second.type().ToString()); + } + const bool v = named_param.second.GetValue(); + if (url_compatibility == -1) { + url_compatibility = v; + } else if (url_compatibility != v) { + throw InvalidInputException("Mismatched values of [s3_]url_compatibility_mode setting. Consider removing the secret."); + } + secret->secret_map["s3_url_compatibility_mode"] = Value::BOOLEAN(v); } else if (lower_name == "account_id") { continue; // handled already } else { throw InternalException("Unknown named parameter passed to CreateSecretFunctionInternal: " + lower_name); } } - return std::move(secret); } @@ -91,6 +109,7 @@ void CreateS3SecretFunctions::SetBaseNamedParams(CreateSecretFunction &function, function.named_parameters["url_style"] = LogicalType::VARCHAR; function.named_parameters["use_ssl"] = LogicalType::BOOLEAN; function.named_parameters["url_compatibility_mode"] = LogicalType::BOOLEAN; + function.named_parameters["s3_url_compatibility_mode"] = LogicalType::BOOLEAN; if (type == "r2") { function.named_parameters["account_id"] = LogicalType::VARCHAR; From 28b3366a983a5f8ddba8f919e27812d0d124e816 Mon Sep 17 00:00:00 2001 From: Carlo Piovesan Date: Mon, 28 Oct 2024 10:28:32 +0100 Subject: [PATCH 2/2] Or this? --- extension/httpfs/create_secret_functions.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extension/httpfs/create_secret_functions.cpp b/extension/httpfs/create_secret_functions.cpp index 5fb8ec3..4d5f8fb 100644 --- a/extension/httpfs/create_secret_functions.cpp +++ b/extension/httpfs/create_secret_functions.cpp @@ -73,7 +73,7 @@ unique_ptr CreateS3SecretFunctions::CreateSecretFunctionInternal(Cli } else if (url_compatibility != v) { throw InvalidInputException("Mismatched values of [s3_]url_compatibility_mode setting. Consider removing the secret."); } - secret->secret_map["url_compatibility_mode"] = Value::BOOLEAN(v); + secret->secret_map["s3_url_compatibility_mode"] = Value::BOOLEAN(v); } else if (lower_name == "s3_url_compatibility_mode") { if (named_param.second.type() != LogicalType::BOOLEAN) { throw InvalidInputException("Invalid type past to secret option: '%s', found '%s', expected: 'BOOLEAN'",