aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraozeritsky <aozeritsky@ydb.tech>2023-08-25 23:47:32 +0300
committeraozeritsky <aozeritsky@ydb.tech>2023-08-26 00:01:56 +0300
commit62f1d6fbfb81f31ace684ae6d20f4787566e691f (patch)
treef7e342e2f845513ffc76e1d712234379c5fec0f5
parent4f101706e390fb7029a8bf4a4ab587bf2e66a365 (diff)
downloadydb-62f1d6fbfb81f31ace684ae6d20f4787566e691f.tar.gz
Case insensitive CBO pragmas
-rw-r--r--ydb/library/yql/providers/config/yql_config_provider.cpp12
-rw-r--r--ydb/library/yql/sql/pg/pg_sql.cpp8
-rw-r--r--ydb/library/yql/sql/v1/sql_query.cpp8
3 files changed, 10 insertions, 18 deletions
diff --git a/ydb/library/yql/providers/config/yql_config_provider.cpp b/ydb/library/yql/providers/config/yql_config_provider.cpp
index 09d574ed671..dbca6b7e055 100644
--- a/ydb/library/yql/providers/config/yql_config_provider.cpp
+++ b/ydb/library/yql/providers/config/yql_config_provider.cpp
@@ -817,16 +817,12 @@ namespace {
}
auto arg = TString{args[0]};
- if (arg == "PG") {
- Types.CostBasedOptimizerType = arg;
- } else if (arg == "Native") {
- Types.CostBasedOptimizerType = arg;
- } else if (arg == "disable") {
- ;
- } else {
- ctx.AddError(TIssue(pos, TStringBuilder() << "Expected `disable|PG|Native', but got: " << args[0]));
+ if (!(arg == "pg" || arg == "native" || arg == "disable")) {
+ ctx.AddError(TIssue(pos, TStringBuilder() << "Expected `disable|pg|native', but got: " << args[0]));
return false;
}
+
+ Types.CostBasedOptimizerType = arg;
}
else {
ctx.AddError(TIssue(pos, TStringBuilder() << "Unsupported command: " << name));
diff --git a/ydb/library/yql/sql/pg/pg_sql.cpp b/ydb/library/yql/sql/pg/pg_sql.cpp
index d5888c0c941..f14f6cb3ff9 100644
--- a/ydb/library/yql/sql/pg/pg_sql.cpp
+++ b/ydb/library/yql/sql/pg/pg_sql.cpp
@@ -1732,13 +1732,7 @@ public:
return nullptr;
}
- if (str == "pg") {
- CostBasedOptimizer = "PG";
- } else if (str == "native") {
- CostBasedOptimizer = "Native";
- } else {
- CostBasedOptimizer = str;
- }
+ CostBasedOptimizer = str;
} else {
AddError(TStringBuilder() << "VariableSetStmt, expected string literal for " << value->name << " option");
return nullptr;
diff --git a/ydb/library/yql/sql/v1/sql_query.cpp b/ydb/library/yql/sql/v1/sql_query.cpp
index 231fef816f2..ceb4642b772 100644
--- a/ydb/library/yql/sql/v1/sql_query.cpp
+++ b/ydb/library/yql/sql/v1/sql_query.cpp
@@ -1976,14 +1976,16 @@ TNodePtr TSqlQuery::PragmaStatement(const TRule_pragma_stmt& stmt, bool& success
Ctx.IncrementMonCounter("sql_pragma", "DisableCompactGroupBy");
} else if (normalizedPragma == "costbasedoptimizer") {
Ctx.IncrementMonCounter("sql_pragma", "CostBasedOptimizer");
+ if (values.size() == 1 && values[0].GetLiteral()) {
+ Ctx.CostBasedOptimizer = to_lower(*values[0].GetLiteral());
+ }
if (values.size() != 1 || !values[0].GetLiteral()
- || ! (*values[0].GetLiteral() == "disable" || *values[0].GetLiteral() == "PG" || *values[0].GetLiteral() == "Native"))
+ || ! (Ctx.CostBasedOptimizer == "disable" || Ctx.CostBasedOptimizer == "pg" || Ctx.CostBasedOptimizer == "native"))
{
- Error() << "Expected `disable|PG|Native' argument for: " << pragma;
+ Error() << "Expected `disable|pg|native' argument for: " << pragma;
Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue");
return {};
}
- Ctx.CostBasedOptimizer = *values[0].GetLiteral();
} else {
Error() << "Unknown pragma: " << pragma;
Ctx.IncrementMonCounter("sql_errors", "UnknownPragma");