diff --git a/ydb/core/kqp/provider/yql_kikimr_datasink.cpp b/ydb/core/kqp/provider/yql_kikimr_datasink.cpp index b276eacd8919..3d64d66313fa 100644 --- a/ydb/core/kqp/provider/yql_kikimr_datasink.cpp +++ b/ydb/core/kqp/provider/yql_kikimr_datasink.cpp @@ -200,9 +200,8 @@ class TKiSinkIntentDeterminationTransformer: public TKiSinkVisitorTransformer { } TStatus HandleModifyPermissions(TKiModifyPermissions node, TExprContext& ctx) override { - ctx.AddError(TIssue(ctx.GetPosition(node.Pos()), TStringBuilder() - << "ModifyPermissions is not yet implemented for intent determination transformer")); - return TStatus::Error; + Y_UNUSED(ctx, node); + return TStatus::Ok; } TStatus HandleCreateBackupCollection(TKiCreateBackupCollection node, TExprContext& ctx) override { @@ -242,27 +241,23 @@ class TKiSinkIntentDeterminationTransformer: public TKiSinkVisitorTransformer { } TStatus HandleCreateUser(TKiCreateUser node, TExprContext& ctx) override { - ctx.AddError(TIssue(ctx.GetPosition(node.Pos()), TStringBuilder() - << "CreateUser is not yet implemented for intent determination transformer")); - return TStatus::Error; + Y_UNUSED(ctx, node); + return TStatus::Ok; } TStatus HandleAlterUser(TKiAlterUser node, TExprContext& ctx) override { - ctx.AddError(TIssue(ctx.GetPosition(node.Pos()), TStringBuilder() - << "AlterUser is not yet implemented for intent determination transformer")); - return TStatus::Error; + Y_UNUSED(ctx, node); + return TStatus::Ok; } TStatus HandleDropUser(TKiDropUser node, TExprContext& ctx) override { - ctx.AddError(TIssue(ctx.GetPosition(node.Pos()), TStringBuilder() - << "DropUser is not yet implemented for intent determination transformer")); - return TStatus::Error; + Y_UNUSED(ctx, node); + return TStatus::Ok; } TStatus HandleUpsertObject(TKiUpsertObject node, TExprContext& ctx) override { - ctx.AddError(TIssue(ctx.GetPosition(node.Pos()), TStringBuilder() - << "UpsertObject is not yet implemented for intent determination transformer")); - return TStatus::Error; + Y_UNUSED(ctx, node); + return TStatus::Ok; } TStatus HandleCreateObject(TKiCreateObject node, TExprContext& ctx) override { @@ -284,50 +279,42 @@ class TKiSinkIntentDeterminationTransformer: public TKiSinkVisitorTransformer { } TStatus HandleCreateGroup(TKiCreateGroup node, TExprContext& ctx) override { - ctx.AddError(TIssue(ctx.GetPosition(node.Pos()), TStringBuilder() - << "CreateGroup is not yet implemented for intent determination transformer")); - return TStatus::Error; + Y_UNUSED(ctx, node); + return TStatus::Ok; } TStatus HandleAlterGroup(TKiAlterGroup node, TExprContext& ctx) override { - ctx.AddError(TIssue(ctx.GetPosition(node.Pos()), TStringBuilder() - << "AlterGroup is not yet implemented for intent determination transformer")); - return TStatus::Error; + Y_UNUSED(ctx, node); + return TStatus::Ok; } TStatus HandleRenameGroup(TKiRenameGroup node, TExprContext& ctx) override { - ctx.AddError(TIssue(ctx.GetPosition(node.Pos()), TStringBuilder() - << "RenameGroup is not yet implemented for intent determination transformer")); - return TStatus::Error; + Y_UNUSED(ctx, node); + return TStatus::Ok; } TStatus HandleDropGroup(TKiDropGroup node, TExprContext& ctx) override { - ctx.AddError(TIssue(ctx.GetPosition(node.Pos()), TStringBuilder() - << "DropGroup is not yet implemented for intent determination transformer")); - return TStatus::Error; + Y_UNUSED(ctx, node); + return TStatus::Ok; } TStatus HandlePgDropObject(TPgDropObject node, TExprContext& ctx) override { - ctx.AddError(TIssue(ctx.GetPosition(node.Pos()), TStringBuilder() - << "PgDropObject is not yet implemented for intent determination transformer")); - return TStatus::Error; + Y_UNUSED(ctx, node); + return TStatus::Ok; } TStatus HandleCreateSecret(TKiCreateSecret node, TExprContext& ctx) override { - ctx.AddError(TIssue(ctx.GetPosition(node.Pos()), TStringBuilder() - << "CreateSecret is not yet implemented for intent determination transformer")); + Y_UNUSED(ctx, node); return TStatus::Ok; } TStatus HandleAlterSecret(TKiAlterSecret node, TExprContext& ctx) override { - ctx.AddError(TIssue(ctx.GetPosition(node.Pos()), TStringBuilder() - << "AlterSecret is not yet implemented for intent determination transformer")); + Y_UNUSED(ctx, node); return TStatus::Ok; } TStatus HandleDropSecret(TKiDropSecret node, TExprContext& ctx) override { - ctx.AddError(TIssue(ctx.GetPosition(node.Pos()), TStringBuilder() - << "DropSecret is not yet implemented for intent determination transformer")); + Y_UNUSED(ctx, node); return TStatus::Ok; } diff --git a/ydb/core/kqp/ut/federated_query/datastreams/datastreams_ut.cpp b/ydb/core/kqp/ut/federated_query/datastreams/datastreams_ut.cpp index d085f0951d09..c80a82b774fc 100644 --- a/ydb/core/kqp/ut/federated_query/datastreams/datastreams_ut.cpp +++ b/ydb/core/kqp/ut/federated_query/datastreams/datastreams_ut.cpp @@ -1382,7 +1382,7 @@ Y_UNIT_TEST_SUITE(KqpFederatedQueryDatastreams) { } Y_UNIT_TEST_SUITE(KqpStreamingQueriesDdl) { - Y_UNIT_TEST_F(CreateAndAlterStreamingQuery, TStreamingTestFixture) { + Y_UNIT_TEST_F(CreateAndAlterStreamingQuery, TStreamingWithSchemaSecretsTestFixture) { constexpr char inputTopicName[] = "createAndAlterStreamingQueryInputTopic"; constexpr char outputTopicName[] = "createAndAlterStreamingQueryOutputTopic"; CreateTopic(inputTopicName); @@ -1393,7 +1393,9 @@ Y_UNIT_TEST_SUITE(KqpStreamingQueriesDdl) { constexpr char queryName[] = "streamingQuery"; ExecQuery(fmt::format(R"( + CREATE SECRET test_secret WITH (value = "1234"); CREATE TABLE test_table1 (Key Int32 NOT NULL, PRIMARY KEY (Key)); + GRANT ALL ON `/Root/test_table1` TO `test@builtin`; CREATE STREAMING QUERY `{query_name}` AS DO BEGIN INSERT INTO `{pq_source}`.`{output_topic}` @@ -1412,6 +1414,13 @@ Y_UNIT_TEST_SUITE(KqpStreamingQueriesDdl) { "output_topic"_a = outputTopicName )); + { + const auto tableDesc = Navigate(GetRuntime(), GetRuntime().AllocateEdgeActor(), "/Root/test_table1", NSchemeCache::TSchemeCacheNavigate::EOp::OpUnknown); + const auto& table = tableDesc->ResultSet.at(0); + UNIT_ASSERT_VALUES_EQUAL(table.Kind, NSchemeCache::TSchemeCacheNavigate::EKind::KindTable); + UNIT_ASSERT(table.SecurityObject->CheckAccess(NACLib::GenericFull, NACLib::TUserToken("test@builtin", {}))); + } + CheckScriptExecutionsCount(1, 1); Sleep(TDuration::Seconds(1));