aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorqrort <qrort@yandex-team.com>2023-08-28 18:48:20 +0300
committerqrort <qrort@yandex-team.com>2023-08-28 19:57:26 +0300
commit525cbbe410dcf45c23c93533299857deae7e66ab (patch)
tree8a2af6841a00cd655ef0c55f8dd4bd6ddb458240
parent6866bcc676c44cc5e963a12086ad01b6de099160 (diff)
downloadydb-525cbbe410dcf45c23c93533299857deae7e66ab.tar.gz
KIKIMR-18995: pass only PathNotExist status
-rw-r--r--ydb/core/kqp/provider/CMakeLists.darwin-x86_64.txt2
-rw-r--r--ydb/core/kqp/provider/CMakeLists.linux-aarch64.txt2
-rw-r--r--ydb/core/kqp/provider/CMakeLists.linux-x86_64.txt2
-rw-r--r--ydb/core/kqp/provider/CMakeLists.windows-x86_64.txt2
-rw-r--r--ydb/core/kqp/provider/ya.make2
-rw-r--r--ydb/core/kqp/provider/yql_kikimr_exec.cpp14
-rw-r--r--ydb/core/tx/tx_proxy/schemereq.cpp6
-rw-r--r--ydb/services/ydb/ydb_ut.cpp4
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);
}
}