summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMikhail Surin <[email protected]>2022-06-09 20:34:39 +0300
committerMikhail Surin <[email protected]>2022-06-09 20:34:39 +0300
commit66aefc6939acaf049ce10d9506310a1b5e05cfa9 (patch)
tree2a4e806c5761600d646a769c59a7c0c43ac76436
parent4258d2388ee66028a2ef9331bdd3ad46673c3a8e (diff)
revert r9496078
ref:1d130d14ea46c2653f0c41dea1a6f75347451b16
-rw-r--r--ydb/core/kqp/ut/kqp_yql_ut.cpp26
-rw-r--r--ydb/library/yql/core/yql_expr_type_annotation.cpp18
-rw-r--r--ydb/library/yql/public/issue/yql_issue_manager.cpp30
-rw-r--r--ydb/library/yql/public/issue/yql_issue_manager.h8
-rw-r--r--ydb/services/ydb/ydb_table_ut.cpp1
5 files changed, 11 insertions, 72 deletions
diff --git a/ydb/core/kqp/ut/kqp_yql_ut.cpp b/ydb/core/kqp/ut/kqp_yql_ut.cpp
index 616fc91aa7f..67b87ea3060 100644
--- a/ydb/core/kqp/ut/kqp_yql_ut.cpp
+++ b/ydb/core/kqp/ut/kqp_yql_ut.cpp
@@ -309,32 +309,6 @@ Y_UNIT_TEST_SUITE(KqpYql) {
[[2u];["Two"]]
])", FormatResultSetYson(result.GetResultSet(0)));
}
-
- Y_UNIT_TEST_NEW_ENGINE(ColumnTypeMismatch) {
- TKikimrRunner kikimr;
- auto db = kikimr.GetTableClient();
- auto session = db.CreateSession().GetValueSync().GetSession();
-
- auto params = TParamsBuilder()
- .AddParam("$key").Uint64(1).Build()
- .AddParam("$value").Uint64(2).Build()
- .Build();
-
- TExecDataQuerySettings settings;
- auto req = session.ExecuteDataQuery(Q_(R"(
- DECLARE $key AS Uint64;
- DECLARE $value AS Uint64;
-
- REPLACE INTO `KeyValue`
- (Key, Value)
- VALUES
- ($key, $value);
- )"), TTxControl::BeginTx().CommitTx(), params).ExtractValueSync();
-
- req.GetIssues().PrintTo(Cerr);
- UNIT_ASSERT_VALUES_EQUAL(req.GetStatus(), EStatus::GENERIC_ERROR);
- UNIT_ASSERT_STRING_CONTAINS(req.GetIssues().ToString(), "Failed to convert 'Value': Uint64 to Optional<String>");
- }
}
} // namespace NKqp
diff --git a/ydb/library/yql/core/yql_expr_type_annotation.cpp b/ydb/library/yql/core/yql_expr_type_annotation.cpp
index 19da3cdc1ce..f2a0013f5c8 100644
--- a/ydb/library/yql/core/yql_expr_type_annotation.cpp
+++ b/ydb/library/yql/core/yql_expr_type_annotation.cpp
@@ -385,8 +385,6 @@ IGraphTransformer::TStatus TryConvertToImpl(TExprContext& ctx, TExprNode::TPtr&
TExprNode::TPtr field;
if (!pos) {
if (newField->GetItemType()->GetKind() != ETypeAnnotationKind::Optional) {
- ctx.AddError(TIssue(node->Pos(ctx), TStringBuilder() <<
- "Can't find '" << newField->GetName() << "': " << *newField->GetItemType() << " in " << sourceType));
return IGraphTransformer::TStatus::Error;
}
@@ -408,8 +406,6 @@ IGraphTransformer::TStatus TryConvertToImpl(TExprContext& ctx, TExprNode::TPtr&
YQL_ENSURE(field);
auto status = TryConvertToImpl(ctx, field, *oldType->GetItemType(), *newField->GetItemType(), flags);
if (status.Level == IGraphTransformer::TStatus::Error) {
- ctx.AddError(TIssue(node->Pos(ctx), TStringBuilder() <<
- "Failed to convert '" << newField->GetName() << "': " << *oldType->GetItemType() << " to " << *newField->GetItemType()));
return status;
}
}
@@ -451,8 +447,6 @@ IGraphTransformer::TStatus TryConvertToImpl(TExprContext& ctx, TExprNode::TPtr&
.Seal()
.Build();
} else {
- ctx.AddError(TIssue(node->Pos(ctx), TStringBuilder() <<
- "Can't find '" << newField->GetName() << ": " << *newField->GetItemType() << "' in " << sourceType));
return IGraphTransformer::TStatus::Error;
}
} else {
@@ -467,8 +461,6 @@ IGraphTransformer::TStatus TryConvertToImpl(TExprContext& ctx, TExprNode::TPtr&
auto status = TryConvertToImpl(ctx, field, *oldType->GetItemType(), *newField->GetItemType(), flags);
if (status.Level == IGraphTransformer::TStatus::Error) {
- ctx.AddError(TIssue(node->Pos(ctx), TStringBuilder() <<
- "Failed to convert '" << newField->GetName() << "': " << *oldType->GetItemType() << " to " << *newField->GetItemType()));
return status;
}
}
@@ -3434,14 +3426,12 @@ IGraphTransformer::TStatus TryConvertTo(TExprNode::TPtr& node, const TTypeAnnota
return IGraphTransformer::TStatus::Error;
}
- TIssueScopeGuard guard(ctx.IssueManager, [&] {
- return MakeIntrusive<TIssue>(ctx.GetPosition(node->Pos()),
- TStringBuilder() << "Failed to convert type: " << sourceType << " to " << expectedType);
- });
auto status = TryConvertToImpl(ctx, node, sourceType, expectedType, flags);
- if (status.Level == IGraphTransformer::TStatus::Error) {
- guard.RaiseIssueForEmptyScope();
+ if (status.Level == IGraphTransformer::TStatus::Error) {
+ ctx.AddError(TIssue(ctx.GetPosition(node->Pos()), TStringBuilder() << "Failed to convert type: " <<
+ sourceType << " to " << expectedType));
}
+
return status;
}
diff --git a/ydb/library/yql/public/issue/yql_issue_manager.cpp b/ydb/library/yql/public/issue/yql_issue_manager.cpp
index 08daf0fcdd0..7375d2d30f0 100644
--- a/ydb/library/yql/public/issue/yql_issue_manager.cpp
+++ b/ydb/library/yql/public/issue/yql_issue_manager.cpp
@@ -69,45 +69,29 @@ void TIssueManager::LeaveScope() {
}
}
-void TIssueManager::RaiseIssueForEmptyScope() {
- if (RawIssues_.top().first.Empty()) {
- TIssuePtr materialized = RawIssues_.top().second();
- if (auto p = CheckUniqAndLimit(materialized)) {
- RawIssues_.top().first = p;
- }
- }
-}
-
void TIssueManager::LeaveAllScopes() {
while (!RawIssues_.empty()) {
LeaveScope();
}
}
-TIssuePtr TIssueManager::CheckUniqAndLimit(TIssuePtr issue) {
- const auto severity = issue->GetSeverity();
+TIssuePtr TIssueManager::CheckUniqAndLimit(const TIssue& issue) {
+ const auto severity = issue.GetSeverity();
if (OverflowIssues_[severity]) {
return {};
}
- if (UniqueIssues_[severity].contains(issue)) {
+ TIssuePtr p = MakeIntrusive<TIssue>(issue);
+ if (UniqueIssues_[severity].contains(p)) {
return {};
}
if (IssueLimit_ && UniqueIssues_[severity].size() == IssueLimit_) {
OverflowIssues_[severity] = MakeIntrusive<TIssue>(TStringBuilder()
- << "Too many " << SeverityToString(issue->GetSeverity()) << " issues");
+ << "Too many " << SeverityToString(issue.GetSeverity()) << " issues");
OverflowIssues_[severity]->Severity = severity;
return {};
}
- UniqueIssues_[severity].insert(issue);
- return issue;
-}
-
-TIssuePtr TIssueManager::CheckUniqAndLimit(const TIssue& issue) {
- const auto severity = issue.GetSeverity();
- if (OverflowIssues_[severity]) {
- return {};
- }
- return CheckUniqAndLimit(MakeIntrusive<TIssue>(issue));
+ UniqueIssues_[severity].insert(p);
+ return p;
}
void TIssueManager::RaiseIssue(const TIssue& issue) {
diff --git a/ydb/library/yql/public/issue/yql_issue_manager.h b/ydb/library/yql/public/issue/yql_issue_manager.h
index d9ab4a2821f..9ad5ac7bb40 100644
--- a/ydb/library/yql/public/issue/yql_issue_manager.h
+++ b/ydb/library/yql/public/issue/yql_issue_manager.h
@@ -36,11 +36,8 @@ public:
IssueLimit_ = limit;
}
- void RaiseIssueForEmptyScope();
-
private:
TIssuePtr CheckUniqAndLimit(const TIssue& issue);
- TIssuePtr CheckUniqAndLimit(TIssuePtr issue);
struct TIssueHash {
ui64 operator()(const TIssuePtr& p) {
@@ -69,11 +66,6 @@ public:
{
Manager_.AddScope(fn);
}
-
- void RaiseIssueForEmptyScope() {
- Manager_.RaiseIssueForEmptyScope();
- }
-
~TIssueScopeGuard()
{
Manager_.LeaveScope();
diff --git a/ydb/services/ydb/ydb_table_ut.cpp b/ydb/services/ydb/ydb_table_ut.cpp
index de43ed56e24..c5854ec7bec 100644
--- a/ydb/services/ydb/ydb_table_ut.cpp
+++ b/ydb/services/ydb/ydb_table_ut.cpp
@@ -197,7 +197,6 @@ Y_UNIT_TEST_SUITE(YdbYqlClient) {
auto ref = R"___(<main>: Error: Type annotation, code: 1030
<main>:2:25: Error: At function: KiWriteTable!
<main>:2:43: Error: Failed to convert type: Struct<'Key':String,'Value':String> to Struct<'Key':Uint32?,'Value':String?>
- <main>:2:43: Error: Failed to convert 'Key': String to Optional<Uint32>
<main>:2:43: Error: Failed to convert input columns types to scheme types, code: 2031
)___";
UNIT_ASSERT_EQUAL(result.GetIssues().Size(), 1);