diff options
author | qrort <qrort@yandex-team.com> | 2023-08-28 18:48:20 +0300 |
---|---|---|
committer | qrort <qrort@yandex-team.com> | 2023-08-28 19:57:26 +0300 |
commit | 525cbbe410dcf45c23c93533299857deae7e66ab (patch) | |
tree | 8a2af6841a00cd655ef0c55f8dd4bd6ddb458240 | |
parent | 6866bcc676c44cc5e963a12086ad01b6de099160 (diff) | |
download | ydb-525cbbe410dcf45c23c93533299857deae7e66ab.tar.gz |
KIKIMR-18995: pass only PathNotExist status
-rw-r--r-- | ydb/core/kqp/provider/CMakeLists.darwin-x86_64.txt | 2 | ||||
-rw-r--r-- | ydb/core/kqp/provider/CMakeLists.linux-aarch64.txt | 2 | ||||
-rw-r--r-- | ydb/core/kqp/provider/CMakeLists.linux-x86_64.txt | 2 | ||||
-rw-r--r-- | ydb/core/kqp/provider/CMakeLists.windows-x86_64.txt | 2 | ||||
-rw-r--r-- | ydb/core/kqp/provider/ya.make | 2 | ||||
-rw-r--r-- | ydb/core/kqp/provider/yql_kikimr_exec.cpp | 14 | ||||
-rw-r--r-- | ydb/core/tx/tx_proxy/schemereq.cpp | 6 | ||||
-rw-r--r-- | ydb/services/ydb/ydb_ut.cpp | 4 |
8 files changed, 29 insertions, 5 deletions
diff --git a/ydb/core/kqp/provider/CMakeLists.darwin-x86_64.txt b/ydb/core/kqp/provider/CMakeLists.darwin-x86_64.txt index 324ba1b41a..c80c122222 100644 --- a/ydb/core/kqp/provider/CMakeLists.darwin-x86_64.txt +++ b/ydb/core/kqp/provider/CMakeLists.darwin-x86_64.txt @@ -48,6 +48,8 @@ target_link_libraries(core-kqp-provider PUBLIC providers-result-expr_nodes providers-result-provider yql-sql-settings + library-ydb_issue-proto + yql-public-issue tools-enum_parser-enum_serialization_runtime ) target_sources(core-kqp-provider PRIVATE diff --git a/ydb/core/kqp/provider/CMakeLists.linux-aarch64.txt b/ydb/core/kqp/provider/CMakeLists.linux-aarch64.txt index 125cf43faa..c8361d0b23 100644 --- a/ydb/core/kqp/provider/CMakeLists.linux-aarch64.txt +++ b/ydb/core/kqp/provider/CMakeLists.linux-aarch64.txt @@ -49,6 +49,8 @@ target_link_libraries(core-kqp-provider PUBLIC providers-result-expr_nodes providers-result-provider yql-sql-settings + library-ydb_issue-proto + yql-public-issue tools-enum_parser-enum_serialization_runtime ) target_sources(core-kqp-provider PRIVATE diff --git a/ydb/core/kqp/provider/CMakeLists.linux-x86_64.txt b/ydb/core/kqp/provider/CMakeLists.linux-x86_64.txt index 125cf43faa..c8361d0b23 100644 --- a/ydb/core/kqp/provider/CMakeLists.linux-x86_64.txt +++ b/ydb/core/kqp/provider/CMakeLists.linux-x86_64.txt @@ -49,6 +49,8 @@ target_link_libraries(core-kqp-provider PUBLIC providers-result-expr_nodes providers-result-provider yql-sql-settings + library-ydb_issue-proto + yql-public-issue tools-enum_parser-enum_serialization_runtime ) target_sources(core-kqp-provider PRIVATE diff --git a/ydb/core/kqp/provider/CMakeLists.windows-x86_64.txt b/ydb/core/kqp/provider/CMakeLists.windows-x86_64.txt index 324ba1b41a..c80c122222 100644 --- a/ydb/core/kqp/provider/CMakeLists.windows-x86_64.txt +++ b/ydb/core/kqp/provider/CMakeLists.windows-x86_64.txt @@ -48,6 +48,8 @@ target_link_libraries(core-kqp-provider PUBLIC providers-result-expr_nodes providers-result-provider yql-sql-settings + library-ydb_issue-proto + yql-public-issue tools-enum_parser-enum_serialization_runtime ) target_sources(core-kqp-provider PRIVATE diff --git a/ydb/core/kqp/provider/ya.make b/ydb/core/kqp/provider/ya.make index e49a6415fc..ffc37d2291 100644 --- a/ydb/core/kqp/provider/ya.make +++ b/ydb/core/kqp/provider/ya.make @@ -47,6 +47,8 @@ PEERDIR( ydb/library/yql/providers/result/expr_nodes ydb/library/yql/providers/result/provider ydb/library/yql/sql/settings + ydb/library/ydb_issue/proto + ydb/library/yql/public/issue ) YQL_LAST_ABI_VERSION() diff --git a/ydb/core/kqp/provider/yql_kikimr_exec.cpp b/ydb/core/kqp/provider/yql_kikimr_exec.cpp index 8e1bb1ecdd..bb70156364 100644 --- a/ydb/core/kqp/provider/yql_kikimr_exec.cpp +++ b/ydb/core/kqp/provider/yql_kikimr_exec.cpp @@ -13,6 +13,9 @@ #include <ydb/library/yql/providers/common/mkql/yql_type_mkql.h> #include <ydb/library/yql/providers/result/expr_nodes/yql_res_expr_nodes.h> +#include <ydb/library/ydb_issue/proto/issue_id.pb.h> +#include <ydb/library/yql/public/issue/yql_issue.h> + #include <ydb/core/ydb_convert/ydb_convert.h> #include <ydb/public/sdk/cpp/client/ydb_proto/accessor.h> @@ -1006,8 +1009,15 @@ public: future = Gateway->DropTable(table.Metadata->Cluster, table.Metadata->Name); if (missingOk) { future = future.Apply([](const NThreading::TFuture<IKikimrGateway::TGenericResult>& res) { - Y_UNUSED(res); - return CreateDummySuccess(); + auto operationResult = res.GetValue(); + bool pathNotExist = false; + for (const auto& issue : operationResult.Issues()) { + WalkThroughIssues(issue, false, [&pathNotExist](const NYql::TIssue& issue, int level) { + Y_UNUSED(level); + pathNotExist |= (issue.GetCode() == NKikimrIssues::TIssuesIds::PATH_NOT_EXIST); + }); + } + return pathNotExist ? CreateDummySuccess() : res; }); } break; diff --git a/ydb/core/tx/tx_proxy/schemereq.cpp b/ydb/core/tx/tx_proxy/schemereq.cpp index 175e29ebdb..57ee8797db 100644 --- a/ydb/core/tx/tx_proxy/schemereq.cpp +++ b/ydb/core/tx/tx_proxy/schemereq.cpp @@ -442,7 +442,11 @@ struct TBaseSchemeReq: public TActorBootstrapped<TDerived> { << " SEND to# " << Source.ToString() << " Source " << result->ToString()); if (result->Record.GetSchemeShardReason()) { - auto issue = MakeIssue(NKikimrIssues::TIssuesIds::DEFAULT_ERROR, result->Record.GetSchemeShardReason()); + auto issueStatus = NKikimrIssues::TIssuesIds::DEFAULT_ERROR; + if (result->Record.GetSchemeShardStatus() == NKikimrScheme::EStatus::StatusPathDoesNotExist) { + issueStatus = NKikimrIssues::TIssuesIds::PATH_NOT_EXIST; + } + auto issue = MakeIssue(std::move(issueStatus), result->Record.GetSchemeShardReason()); NYql::IssueToMessage(issue, result->Record.AddIssues()); } ctx.Send(Source, result); diff --git a/ydb/services/ydb/ydb_ut.cpp b/ydb/services/ydb/ydb_ut.cpp index 8668b0f8b2..1805ff4aca 100644 --- a/ydb/services/ydb/ydb_ut.cpp +++ b/ydb/services/ydb/ydb_ut.cpp @@ -864,7 +864,7 @@ Y_UNIT_TEST_SUITE(GrpcConnectionStringParserTest) { } Y_UNIT_TEST_SUITE(TGRpcYdbTest) { - Y_UNIT_TEST(RemoveNotExistedDirecroty) { + Y_UNIT_TEST(RemoveNotExistedDirectory) { TKikimrWithGrpcAndRootSchema server; ui16 grpc = server.GetPort(); @@ -889,7 +889,7 @@ Y_UNIT_TEST_SUITE(TGRpcYdbTest) { NYql::TIssues issues; NYql::IssuesFromMessage(deferred.issues(), issues); TString tmp = issues.ToString(); - TString expected = "<main>: Error: Path does not exist\n"; + TString expected = "<main>: Error: Path does not exist, code: 200200\n"; UNIT_ASSERT_NO_DIFF(tmp, expected); } } |