summaryrefslogtreecommitdiffstats
path: root/yql/essentials/sql/v1/sql_query.cpp
diff options
context:
space:
mode:
authordeminds <[email protected]>2025-06-04 12:36:47 +0300
committerdeminds <[email protected]>2025-06-04 12:51:33 +0300
commit14c42c6f9a85a081cde9ba58db0b008b3ade11f7 (patch)
tree7d76d30ab6610e938b0399956cd45fcc5105854b /yql/essentials/sql/v1/sql_query.cpp
parent62b27c7d93a63b7c2ab41fe6882cbcbdfc5218a6 (diff)
support database settings in ALTER DATABASE
The main goal is to enable setting SchemeLimits (ShardsLimit and PathsLimit) via YQL. Issue: - https://github.com/ydb-platform/ydb/issues/16742 commit_hash:e873849e3b4bb494e349ccebbb1ff6d51655c5d1
Diffstat (limited to 'yql/essentials/sql/v1/sql_query.cpp')
-rw-r--r--yql/essentials/sql/v1/sql_query.cpp45
1 files changed, 32 insertions, 13 deletions
diff --git a/yql/essentials/sql/v1/sql_query.cpp b/yql/essentials/sql/v1/sql_query.cpp
index 8ba4226d684..d852fee277f 100644
--- a/yql/essentials/sql/v1/sql_query.cpp
+++ b/yql/essentials/sql/v1/sql_query.cpp
@@ -1937,26 +1937,45 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core&
break;
}
case TRule_sql_stmt_core::kAltSqlStmtCore61: {
- // alter_database_stmt: ALTER DATABASE an_id_schema OWNER TO role_name
- auto& node = core.GetAlt_sql_stmt_core61().GetRule_alter_database_stmt1();
-
- TDeferredAtom roleName;
- {
- bool allowSystemRoles = true;
- if (!RoleNameClause(node.GetRule_role_name6(), roleName, allowSystemRoles)) {
- return false;
+ // alter_database_stmt: ALTER DATABASE an_id_schema alter_database_action
+ const auto& node = core.GetAlt_sql_stmt_core61().GetRule_alter_database_stmt1();
+ const auto& action = node.GetRule_alter_database_action4();
+
+ TAlterDatabaseParameters params;
+ params.DbPath = TDeferredAtom(Ctx.Pos(), Id(node.GetRule_an_id_schema3(), *this));
+
+ switch (action.GetAltCase()) {
+ case TRule_alter_database_action::kAltAlterDatabaseAction1: {
+ // OWNER TO role_name
+ const auto& ownerAction = action.GetAlt_alter_database_action1();
+ TDeferredAtom roleName;
+ {
+ bool allowSystemRoles = true;
+ if (!RoleNameClause(ownerAction.GetRule_role_name3(), roleName, allowSystemRoles)) {
+ return false;
+ }
+ }
+ params.Owner = roleName;
+ break;
}
+ case TRule_alter_database_action::kAltAlterDatabaseAction2: {
+ // SET ( database_settings )
+ const auto& settings = action.GetAlt_alter_database_action2().GetRule_set_database_settings1().GetRule_database_settings3();
+ if (!ParseDatabaseSettings(settings, params.DatabaseSettings)) {
+ return false;
+ }
+ break;
+ }
+ case TRule_alter_database_action::ALT_NOT_SET:
+ AltNotImplemented("alter_database_action", action);
+ return false;
}
- TAlterDatabaseParameters alterDatabaseParams;
- alterDatabaseParams.Owner = roleName;
- alterDatabaseParams.DbPath = TDeferredAtom(Ctx.Pos(), Id(node.GetRule_an_id_schema3(), *this));
-
const TPosition pos = Ctx.Pos();
TString service = Ctx.Scoped->CurrService;
TDeferredAtom cluster = Ctx.Scoped->CurrCluster;
- auto stmt = BuildAlterDatabase(pos, service, cluster, alterDatabaseParams, Ctx.Scoped);
+ auto stmt = BuildAlterDatabase(pos, service, cluster, params, Ctx.Scoped);
AddStatementToBlocks(blocks, stmt);
break;
}