diff options
author | aozeritsky <aozeritsky@ydb.tech> | 2023-08-25 23:47:32 +0300 |
---|---|---|
committer | aozeritsky <aozeritsky@ydb.tech> | 2023-08-26 00:01:56 +0300 |
commit | 62f1d6fbfb81f31ace684ae6d20f4787566e691f (patch) | |
tree | f7e342e2f845513ffc76e1d712234379c5fec0f5 | |
parent | 4f101706e390fb7029a8bf4a4ab587bf2e66a365 (diff) | |
download | ydb-62f1d6fbfb81f31ace684ae6d20f4787566e691f.tar.gz |
Case insensitive CBO pragmas
-rw-r--r-- | ydb/library/yql/providers/config/yql_config_provider.cpp | 12 | ||||
-rw-r--r-- | ydb/library/yql/sql/pg/pg_sql.cpp | 8 | ||||
-rw-r--r-- | ydb/library/yql/sql/v1/sql_query.cpp | 8 |
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"); |