aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgalaxycrab <UgnineSirdis@ydb.tech>2022-10-31 13:50:00 +0300
committergalaxycrab <UgnineSirdis@ydb.tech>2022-10-31 13:50:00 +0300
commitf7d9221df266d13b4a7036d90d4fe374c7b3e056 (patch)
treeab29ccd7db373b54b85d6a750ee21909523bcdfe
parent1a8010a735a218f84480e8ef1e6ffd5a45033c94 (diff)
downloadydb-f7d9221df266d13b4a7036d90d4fe374c7b3e056.tar.gz
Fix crash caused by writing nonutf-8 to issue message
В issue поле Message является публичным, поэтому легко записать в него всё что угодно. Хотя кострукторы TIssue делают эскейпинг строк. В S3 source был парсинг сжатых бинарных данных как json'а (юзер забыл указать в биндинге, что файл сжат с помощью gzip) и парсер (clickhouse) выдал в качестве ошибки кусочек этих данных, который затем пошёл в Message (напрямую, не через конструктор, который эскейпит их). В результате не-utf-8 строка была записана в протобуф и передана в акторном сообщении на другую ноду. Другая нода упала в верифайке на распаковке сообщения: протобуф проверяет, что поле типа string должно содержать строку в utf-8. Сделал поле Message private и в методе SetMessage() вызвал эскейпинг строки, такой же, какой делается в конструкторе.
-rw-r--r--ydb/core/base/kikimr_issue.h2
-rw-r--r--ydb/core/client/minikql_compile/yql_expr_minikql_compile_ut.cpp2
-rw-r--r--ydb/core/kqp/provider/yql_kikimr_provider.cpp4
-rw-r--r--ydb/core/kqp/ut/kqp_indexes_multishard_ut.cpp4
-rw-r--r--ydb/core/kqp/ut/kqp_limits_ut.cpp8
-rw-r--r--ydb/core/kqp/ut/kqp_locks_ut.cpp8
-rw-r--r--ydb/core/kqp/ut/kqp_mvcc_ut.cpp2
-rw-r--r--ydb/core/kqp/ut/kqp_ne_effects_ut.cpp12
-rw-r--r--ydb/core/kqp/ut/kqp_ne_inplace_update_ut.cpp2
-rw-r--r--ydb/core/kqp/ut/kqp_query_ut.cpp16
-rw-r--r--ydb/core/kqp/ut/kqp_scan_ut.cpp8
-rw-r--r--ydb/core/tx/datashard/datashard_ut_kqp_errors.cpp8
-rw-r--r--ydb/core/yq/libs/config/yq_issue.cpp8
-rw-r--r--ydb/core/yq/libs/control_plane_storage/events/events.h2
-rw-r--r--ydb/library/yql/ast/yql_ast_ut.cpp2
-rw-r--r--ydb/library/yql/ast/yql_expr.cpp4
-rw-r--r--ydb/library/yql/ast/yql_type_string.cpp2
-rw-r--r--ydb/library/yql/ast/yql_type_string_ut.cpp2
-rw-r--r--ydb/library/yql/core/facade/yql_facade.cpp2
-rw-r--r--ydb/library/yql/core/yql_expr_type_annotation.cpp4
-rw-r--r--ydb/library/yql/core/yql_library_compiler.cpp4
-rw-r--r--ydb/library/yql/core/yql_type_helpers.cpp2
-rw-r--r--ydb/library/yql/dq/actors/compute/ut/dq_compute_issues_buffer_ut.cpp12
-rw-r--r--ydb/library/yql/parser/pg_wrapper/ut/parser_ut.cpp4
-rw-r--r--ydb/library/yql/providers/common/mkql/yql_provider_mkql.cpp22
-rw-r--r--ydb/library/yql/providers/common/schema/expr/yql_expr_schema.cpp2
-rw-r--r--ydb/library/yql/providers/dq/actors/grouped_issues.cpp2
-rw-r--r--ydb/library/yql/providers/dq/provider/exec/yql_dq_exectransformer.cpp4
-rw-r--r--ydb/library/yql/providers/s3/actors/yql_s3_read_actor.cpp4
-rw-r--r--ydb/library/yql/public/issue/yql_issue.cpp2
-rw-r--r--ydb/library/yql/public/issue/yql_issue.h40
-rw-r--r--ydb/library/yql/public/issue/yql_issue_manager.cpp12
-rw-r--r--ydb/library/yql/public/issue/yql_issue_manager_ut.cpp20
-rw-r--r--ydb/library/yql/public/issue/yql_issue_message.cpp2
-rw-r--r--ydb/library/yql/public/issue/yql_issue_ut.cpp54
-rw-r--r--ydb/library/yql/public/issue/yql_issue_utils.cpp15
-rw-r--r--ydb/library/yql/sql/v0/builtin.cpp4
-rw-r--r--ydb/library/yql/sql/v0/context.cpp2
-rw-r--r--ydb/library/yql/sql/v0/query.cpp2
-rw-r--r--ydb/library/yql/sql/v0/sql.cpp2
-rw-r--r--ydb/library/yql/sql/v1/builtin.cpp4
-rw-r--r--ydb/library/yql/sql/v1/context.cpp2
-rw-r--r--ydb/library/yql/sql/v1/query.cpp4
-rw-r--r--ydb/library/yql/sql/v1/sql.cpp4
-rw-r--r--ydb/services/ydb/ydb_table_ut.cpp2
45 files changed, 195 insertions, 134 deletions
diff --git a/ydb/core/base/kikimr_issue.h b/ydb/core/base/kikimr_issue.h
index fd7e232d2c..843f2a65a1 100644
--- a/ydb/core/base/kikimr_issue.h
+++ b/ydb/core/base/kikimr_issue.h
@@ -35,7 +35,7 @@ inline NYql::TIssue MakeIssue(NKikimrIssues::TIssuesIds::EIssueCode id, const TS
NYql::TIssue issue;
SetIssueCode(id, issue);
- issue.Message = message;
+ issue.SetMessage(message);
return issue;
}
diff --git a/ydb/core/client/minikql_compile/yql_expr_minikql_compile_ut.cpp b/ydb/core/client/minikql_compile/yql_expr_minikql_compile_ut.cpp
index c8da0731a9..c56e7501d7 100644
--- a/ydb/core/client/minikql_compile/yql_expr_minikql_compile_ut.cpp
+++ b/ydb/core/client/minikql_compile/yql_expr_minikql_compile_ut.cpp
@@ -320,7 +320,7 @@ Y_UNIT_TEST_SUITE(TTestYqlToMiniKQLCompile) {
TConvertResult result;
UNIT_ASSERT(!TryProgramText2Bin(programText, services, result));
UNIT_ASSERT(!result.Errors.Empty());
- UNIT_ASSERT_NO_DIFF(result.Errors.begin()->Message, "At function: SelectRange");
+ UNIT_ASSERT_NO_DIFF(result.Errors.begin()->GetMessage(), "At function: SelectRange");
}
Y_UNIT_TEST(Extract) {
diff --git a/ydb/core/kqp/provider/yql_kikimr_provider.cpp b/ydb/core/kqp/provider/yql_kikimr_provider.cpp
index 68a8dcecb5..a60d91fef7 100644
--- a/ydb/core/kqp/provider/yql_kikimr_provider.cpp
+++ b/ydb/core/kqp/provider/yql_kikimr_provider.cpp
@@ -642,8 +642,8 @@ bool AddDmlIssue(const TIssue& issue, bool strictDml, TExprContext& ctx) {
if (strictDml) {
TIssue newIssue;
newIssue.SetCode(issue.GetCode(), ESeverity::TSeverityIds_ESeverityId_S_ERROR);
- newIssue.Message = "Detected violation of logical DML constraints. YDB transactions don't see their own"
- " changes, make sure you perform all table reads before any modifications.";
+ newIssue.SetMessage("Detected violation of logical DML constraints. YDB transactions don't see their own"
+ " changes, make sure you perform all table reads before any modifications.");
newIssue.AddSubIssue(new TIssue(issue));
diff --git a/ydb/core/kqp/ut/kqp_indexes_multishard_ut.cpp b/ydb/core/kqp/ut/kqp_indexes_multishard_ut.cpp
index fe2436bfac..4a026cadea 100644
--- a/ydb/core/kqp/ut/kqp_indexes_multishard_ut.cpp
+++ b/ydb/core/kqp/ut/kqp_indexes_multishard_ut.cpp
@@ -254,7 +254,7 @@ Y_UNIT_TEST_SUITE(KqpMultishardIndex) {
UNIT_ASSERT_C(HasIssue(result.GetIssues(), NYql::TIssuesIds::KIKIMR_WRONG_INDEX_USAGE,
[](const NYql::TIssue& issue) {
- return issue.Message.Contains("Given predicate is not suitable for used index: index");
+ return issue.GetMessage().Contains("Given predicate is not suitable for used index: index");
}), result.GetIssues().ToString());
UNIT_ASSERT(result.IsSuccess());
@@ -270,7 +270,7 @@ Y_UNIT_TEST_SUITE(KqpMultishardIndex) {
UNIT_ASSERT_C(HasIssue(result.GetIssues(), NYql::TIssuesIds::KIKIMR_WRONG_INDEX_USAGE,
[](const NYql::TIssue& issue) {
- return issue.Message.Contains("Given predicate is not suitable for used index: index");
+ return issue.GetMessage().Contains("Given predicate is not suitable for used index: index");
}), result.GetIssues().ToString());
UNIT_ASSERT(result.IsSuccess());
UNIT_ASSERT_VALUES_EQUAL(NYdb::FormatResultSetYson(result.GetResultSet(0)), "[[[2000000000u]]]");
diff --git a/ydb/core/kqp/ut/kqp_limits_ut.cpp b/ydb/core/kqp/ut/kqp_limits_ut.cpp
index 75839354bb..b1905eb042 100644
--- a/ydb/core/kqp/ut/kqp_limits_ut.cpp
+++ b/ydb/core/kqp/ut/kqp_limits_ut.cpp
@@ -258,7 +258,7 @@ Y_UNIT_TEST_SUITE(KqpLimits) {
UNIT_ASSERT_VALUES_EQUAL(result.GetStatus(), EStatus::BAD_REQUEST);
UNIT_ASSERT(HasIssue(result.GetIssues(), NYql::TIssuesIds::DEFAULT_ERROR,
[] (const NYql::TIssue& issue) {
- return issue.Message.Contains("exceeds limit");
+ return issue.GetMessage().Contains("exceeds limit");
}));
}
@@ -283,7 +283,7 @@ Y_UNIT_TEST_SUITE(KqpLimits) {
UNIT_ASSERT_VALUES_EQUAL(result.GetStatus(), EStatus::GENERIC_ERROR);
UNIT_ASSERT(HasIssue(result.GetIssues(), NYql::TIssuesIds::DEFAULT_ERROR,
[] (const NYql::TIssue& issue) {
- return issue.Message.Contains("larger than the allowed threshold");
+ return issue.GetMessage().Contains("larger than the allowed threshold");
}));
}
@@ -380,7 +380,7 @@ Y_UNIT_TEST_SUITE(KqpLimits) {
UNIT_ASSERT_VALUES_EQUAL(result.GetStatus(), EStatus::PRECONDITION_FAILED);
UNIT_ASSERT(HasIssue(result.GetIssues(), NYql::TIssuesIds::KIKIMR_PRECONDITION_FAILED,
[] (const NYql::TIssue& issue) {
- return issue.Message.Contains("Transaction total read size");
+ return issue.GetMessage().Contains("Transaction total read size");
}));
result = session.ExecuteDataQuery(Q_(R"(
@@ -415,7 +415,7 @@ Y_UNIT_TEST_SUITE(KqpLimits) {
UNIT_ASSERT_VALUES_EQUAL(result.GetStatus(), EStatus::PRECONDITION_FAILED);
UNIT_ASSERT(HasIssue(result.GetIssues(), NYql::TIssuesIds::KIKIMR_PRECONDITION_FAILED,
[] (const NYql::TIssue& issue) {
- return issue.Message.Contains("Memory limit exceeded");
+ return issue.GetMessage().Contains("Memory limit exceeded");
}));
}
diff --git a/ydb/core/kqp/ut/kqp_locks_ut.cpp b/ydb/core/kqp/ut/kqp_locks_ut.cpp
index 62b0b94ca3..b4b22cdbfb 100644
--- a/ydb/core/kqp/ut/kqp_locks_ut.cpp
+++ b/ydb/core/kqp/ut/kqp_locks_ut.cpp
@@ -39,7 +39,7 @@ Y_UNIT_TEST_SUITE(KqpLocks) {
result.GetIssues().PrintTo(Cerr);
UNIT_ASSERT(HasIssue(result.GetIssues(), NYql::TIssuesIds::KIKIMR_LOCKS_INVALIDATED,
[] (const NYql::TIssue& issue) {
- return issue.Message.Contains("/Root/Test");
+ return issue.GetMessage().Contains("/Root/Test");
}));
result = session2.ExecuteDataQuery(Q_(R"(
@@ -78,7 +78,7 @@ Y_UNIT_TEST_SUITE(KqpLocks) {
commitResult.GetIssues().PrintTo(Cerr);
UNIT_ASSERT(HasIssue(commitResult.GetIssues(), NYql::TIssuesIds::KIKIMR_LOCKS_INVALIDATED,
[] (const NYql::TIssue& issue) {
- return issue.Message.Contains("/Root/Test");
+ return issue.GetMessage().Contains("/Root/Test");
}));
result = session2.ExecuteDataQuery(Q_(R"(
@@ -148,7 +148,7 @@ Y_UNIT_TEST_SUITE(KqpLocks) {
result.GetIssues().PrintTo(Cerr);
UNIT_ASSERT(HasIssue(result.GetIssues(), NYql::TIssuesIds::KIKIMR_LOCKS_INVALIDATED,
[] (const NYql::TIssue& issue) {
- return issue.Message.Contains("/Root/Test");
+ return issue.GetMessage().Contains("/Root/Test");
}));
result = session1.ExecuteDataQuery(Q1_(R"(
@@ -193,7 +193,7 @@ Y_UNIT_TEST_SUITE(KqpLocks) {
result.GetIssues().PrintTo(Cerr);
UNIT_ASSERT(HasIssue(result.GetIssues(), NYql::TIssuesIds::KIKIMR_LOCKS_INVALIDATED,
[] (const NYql::TIssue& issue) {
- return issue.Message.Contains("/Root/Test");
+ return issue.GetMessage().Contains("/Root/Test");
}));
result = session1.ExecuteDataQuery(Q1_(R"(
diff --git a/ydb/core/kqp/ut/kqp_mvcc_ut.cpp b/ydb/core/kqp/ut/kqp_mvcc_ut.cpp
index 3dc16b8e44..365d1ac69f 100644
--- a/ydb/core/kqp/ut/kqp_mvcc_ut.cpp
+++ b/ydb/core/kqp/ut/kqp_mvcc_ut.cpp
@@ -52,7 +52,7 @@ Y_UNIT_TEST_SUITE(KqpSnapshotRead) {
UNIT_ASSERT_C(HasIssue(result.GetIssues(), NYql::TIssuesIds::DEFAULT_ERROR,
[](const NYql::TIssue& issue){
- return issue.Message.Contains("stale snapshot");
+ return issue.GetMessage().Contains("stale snapshot");
}), result.GetIssues().ToString());
caught = true;
diff --git a/ydb/core/kqp/ut/kqp_ne_effects_ut.cpp b/ydb/core/kqp/ut/kqp_ne_effects_ut.cpp
index 5ceb914997..b8dca5c860 100644
--- a/ydb/core/kqp/ut/kqp_ne_effects_ut.cpp
+++ b/ydb/core/kqp/ut/kqp_ne_effects_ut.cpp
@@ -42,7 +42,7 @@ Y_UNIT_TEST_SUITE(KqpNewEngineEffects) {
)", TTxControl::BeginTx().CommitTx()).ExtractValueSync();
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::PRECONDITION_FAILED, result.GetIssues().ToString());
UNIT_ASSERT(HasIssue(result.GetIssues(), NYql::TIssuesIds::KIKIMR_CONSTRAINT_VIOLATION, [](const NYql::TIssue& issue) {
- return issue.Message.Contains("Duplicated keys found.");
+ return issue.GetMessage().Contains("Duplicated keys found.");
}));
result = session.ExecuteDataQuery(R"(
@@ -64,7 +64,7 @@ Y_UNIT_TEST_SUITE(KqpNewEngineEffects) {
)", TTxControl::BeginTx().CommitTx()).ExtractValueSync();
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::PRECONDITION_FAILED, result.GetIssues().ToString());
UNIT_ASSERT_C(HasIssue(result.GetIssues(), NYql::TIssuesIds::KIKIMR_CONSTRAINT_VIOLATION, [](const NYql::TIssue& issue) {
- return issue.Message.Contains("Conflict with existing key.");
+ return issue.GetMessage().Contains("Conflict with existing key.");
}), result.GetIssues().ToString());
result = session.ExecuteDataQuery(R"(
@@ -145,7 +145,7 @@ Y_UNIT_TEST_SUITE(KqpNewEngineEffects) {
)", TTxControl::BeginTx().CommitTx(), std::move(params)).ExtractValueSync();
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::PRECONDITION_FAILED, result.GetIssues().ToString());
UNIT_ASSERT(HasIssue(result.GetIssues(), NYql::TIssuesIds::KIKIMR_CONSTRAINT_VIOLATION, [](const NYql::TIssue& issue) {
- return issue.Message.Contains("Duplicated keys found.");
+ return issue.GetMessage().Contains("Duplicated keys found.");
}));
result = session.ExecuteDataQuery(R"(
@@ -184,7 +184,7 @@ Y_UNIT_TEST_SUITE(KqpNewEngineEffects) {
)", TTxControl::BeginTx().CommitTx(), std::move(params)).ExtractValueSync();
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::PRECONDITION_FAILED, result.GetIssues().ToString());
UNIT_ASSERT(HasIssue(result.GetIssues(), NYql::TIssuesIds::KIKIMR_CONSTRAINT_VIOLATION, [](const NYql::TIssue& issue) {
- return issue.Message.Contains("Conflict with existing key.");
+ return issue.GetMessage().Contains("Conflict with existing key.");
}));
result = session.ExecuteDataQuery(R"(
@@ -261,7 +261,7 @@ Y_UNIT_TEST_SUITE(KqpNewEngineEffects) {
)", TTxControl::BeginTx().CommitTx()).ExtractValueSync();
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::PRECONDITION_FAILED, result.GetIssues().ToString());
UNIT_ASSERT(HasIssue(result.GetIssues(), NYql::TIssuesIds::KIKIMR_CONSTRAINT_VIOLATION, [](const NYql::TIssue& issue) {
- return issue.Message.Contains("Duplicated keys found.");
+ return issue.GetMessage().Contains("Duplicated keys found.");
}));
result = session.ExecuteDataQuery(R"(
@@ -300,7 +300,7 @@ Y_UNIT_TEST_SUITE(KqpNewEngineEffects) {
)", TTxControl::BeginTx().CommitTx()).ExtractValueSync();
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::PRECONDITION_FAILED, result.GetIssues().ToString());
UNIT_ASSERT(HasIssue(result.GetIssues(), NYql::TIssuesIds::KIKIMR_CONSTRAINT_VIOLATION, [](const NYql::TIssue& issue) {
- return issue.Message.Contains("Conflict with existing key.");
+ return issue.GetMessage().Contains("Conflict with existing key.");
}));
result = session.ExecuteDataQuery(R"(
diff --git a/ydb/core/kqp/ut/kqp_ne_inplace_update_ut.cpp b/ydb/core/kqp/ut/kqp_ne_inplace_update_ut.cpp
index fb652cd3dc..bf3c944cd3 100644
--- a/ydb/core/kqp/ut/kqp_ne_inplace_update_ut.cpp
+++ b/ydb/core/kqp/ut/kqp_ne_inplace_update_ut.cpp
@@ -392,7 +392,7 @@ Y_UNIT_TEST_TWIN(BigRow, EnableInplaceUpdate) {
if constexpr (EnableInplaceUpdate) {
UNIT_ASSERT_VALUES_EQUAL(result.GetStatus(), EStatus::BAD_REQUEST);
UNIT_ASSERT(HasIssue(result.GetIssues(), NYql::TIssuesIds::DEFAULT_ERROR, [](const NYql::TIssue& issue) {
- return issue.Message.Contains("READ_SIZE_EXECEEDED");
+ return issue.GetMessage().Contains("READ_SIZE_EXECEEDED");
}));
} else {
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
diff --git a/ydb/core/kqp/ut/kqp_query_ut.cpp b/ydb/core/kqp/ut/kqp_query_ut.cpp
index 005ae38dc8..45951e4f6a 100644
--- a/ydb/core/kqp/ut/kqp_query_ut.cpp
+++ b/ydb/core/kqp/ut/kqp_query_ut.cpp
@@ -590,7 +590,7 @@ Y_UNIT_TEST_SUITE(KqpQuery) {
auto result = session.ExecuteDataQuery(query, TTxControl::BeginTx().CommitTx()).ExtractValueSync();
UNIT_ASSERT_VALUES_EQUAL(result.GetStatus(), EStatus::UNSUPPORTED);
UNIT_ASSERT(HasIssue(result.GetIssues(), NYql::TIssuesIds::KIKIMR_UNSUPPORTED, [](const NYql::TIssue& issue) {
- return issue.Message.Contains("ATOM evaluation is not supported in YDB queries.");
+ return issue.GetMessage().Contains("ATOM evaluation is not supported in YDB queries.");
}));
}
@@ -999,7 +999,7 @@ Y_UNIT_TEST_SUITE(KqpQuery) {
)"), TTxControl::BeginTx().CommitTx()).ExtractValueSync();
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::UNSUPPORTED, result.GetIssues().ToString());
UNIT_ASSERT(HasIssue(result.GetIssues(), NYql::TIssuesIds::KIKIMR_UNSUPPORTED, [](const NYql::TIssue& issue) {
- return issue.Message.Contains("EVALUATE IF is not supported in YDB queries.");
+ return issue.GetMessage().Contains("EVALUATE IF is not supported in YDB queries.");
}));
}
@@ -1011,7 +1011,7 @@ Y_UNIT_TEST_SUITE(KqpQuery) {
)"), TTxControl::BeginTx().CommitTx()).ExtractValueSync();
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::UNSUPPORTED, result.GetIssues().ToString());
UNIT_ASSERT(HasIssue(result.GetIssues(), NYql::TIssuesIds::KIKIMR_UNSUPPORTED, [](const NYql::TIssue& issue) {
- return issue.Message.Contains("EVALUATE is not supported in YDB queries.");
+ return issue.GetMessage().Contains("EVALUATE is not supported in YDB queries.");
}));
}
@@ -1049,7 +1049,7 @@ Y_UNIT_TEST_SUITE(KqpQuery) {
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::UNSUPPORTED, result.GetIssues().ToString());
UNIT_ASSERT(HasIssue(result.GetIssues(), NYql::TIssuesIds::KIKIMR_UNSUPPORTED, [](const NYql::TIssue& issue) {
- return issue.Message.Contains("ATOM evaluation is not supported in YDB queries.");
+ return issue.GetMessage().Contains("ATOM evaluation is not supported in YDB queries.");
}));
}
}
@@ -1066,7 +1066,7 @@ Y_UNIT_TEST_SUITE(KqpQuery) {
result.GetIssues().PrintTo(Cerr);
UNIT_ASSERT_VALUES_EQUAL(result.GetStatus(), EStatus::GENERIC_ERROR);
UNIT_ASSERT(HasIssue(result.GetIssues(), NYql::TIssuesIds::DEFAULT_ERROR, [](const NYql::TIssue& issue) {
- return issue.Message.Contains("Execution failed");
+ return issue.GetMessage().Contains("Execution failed");
}));
}
@@ -1099,7 +1099,7 @@ Y_UNIT_TEST_SUITE(KqpQuery) {
result.GetIssues().PrintTo(Cerr);
UNIT_ASSERT_VALUES_EQUAL(result.GetStatus(), EStatus::GENERIC_ERROR);
UNIT_ASSERT(HasIssue(result.GetIssues(), NYql::TIssuesIds::DEFAULT_ERROR, [](const NYql::TIssue& issue) {
- return issue.Message.Contains("not supported");
+ return issue.GetMessage().Contains("not supported");
}));
result = session.ExecuteDataQuery(Q_(R"(
@@ -1108,7 +1108,7 @@ Y_UNIT_TEST_SUITE(KqpQuery) {
result.GetIssues().PrintTo(Cerr);
UNIT_ASSERT_VALUES_EQUAL(result.GetStatus(), EStatus::GENERIC_ERROR);
UNIT_ASSERT(HasIssue(result.GetIssues(), NYql::TIssuesIds::DEFAULT_ERROR, [](const NYql::TIssue& issue) {
- return issue.Message.Contains("not supported");
+ return issue.GetMessage().Contains("not supported");
}));
result = session.ExecuteDataQuery(Q_(R"(
@@ -1117,7 +1117,7 @@ Y_UNIT_TEST_SUITE(KqpQuery) {
result.GetIssues().PrintTo(Cerr);
UNIT_ASSERT_VALUES_EQUAL(result.GetStatus(), EStatus::GENERIC_ERROR);
UNIT_ASSERT(HasIssue(result.GetIssues(), NYql::TIssuesIds::DEFAULT_ERROR, [](const NYql::TIssue& issue) {
- return issue.Message.Contains("not supported");
+ return issue.GetMessage().Contains("not supported");
}));
}
diff --git a/ydb/core/kqp/ut/kqp_scan_ut.cpp b/ydb/core/kqp/ut/kqp_scan_ut.cpp
index 029c9010d8..ed666347f1 100644
--- a/ydb/core/kqp/ut/kqp_scan_ut.cpp
+++ b/ydb/core/kqp/ut/kqp_scan_ut.cpp
@@ -1235,7 +1235,7 @@ Y_UNIT_TEST_SUITE(KqpScan) {
part.GetIssues().PrintTo(Cerr);
UNIT_ASSERT(HasIssue(part.GetIssues(), NYql::TIssuesIds::KIKIMR_PRECONDITION_FAILED,
[](const NYql::TIssue& issue) {
- return issue.Message.Contains("Requested too many execution units");
+ return issue.GetMessage().Contains("Requested too many execution units");
}));
part = it.ReadNext().GetValueSync();
@@ -1672,8 +1672,8 @@ Y_UNIT_TEST_SUITE(KqpScan) {
UNIT_ASSERT_C(!streamPart.EOS(), streamPart.GetIssues().ToString());
UNIT_ASSERT(
HasIssue(streamPart.GetIssues(), NYql::TIssuesIds::DEFAULT_ERROR, [](const NYql::TIssue& issue) {
- return issue.Message.Contains("Terminate was called") // general termination prefix
- && issue.Message.Contains("Bad filter value."); // test specific UDF exception
+ return issue.GetMessage().Contains("Terminate was called") // general termination prefix
+ && issue.GetMessage().Contains("Bad filter value."); // test specific UDF exception
}));
};
@@ -1892,7 +1892,7 @@ Y_UNIT_TEST_SUITE(KqpScan) {
auto result = it.ReadNext().GetValueSync();
UNIT_ASSERT_VALUES_EQUAL(result.GetStatus(), EStatus::UNSUPPORTED);
UNIT_ASSERT(HasIssue(result.GetIssues(), NYql::TIssuesIds::KIKIMR_UNSUPPORTED, [](const NYql::TIssue& issue) {
- return issue.Message.Contains("ATOM evaluation is not supported in YDB queries.");
+ return issue.GetMessage().Contains("ATOM evaluation is not supported in YDB queries.");
}));
}
diff --git a/ydb/core/tx/datashard/datashard_ut_kqp_errors.cpp b/ydb/core/tx/datashard/datashard_ut_kqp_errors.cpp
index ad2af0255e..5144078da6 100644
--- a/ydb/core/tx/datashard/datashard_ut_kqp_errors.cpp
+++ b/ydb/core/tx/datashard/datashard_ut_kqp_errors.cpp
@@ -21,7 +21,7 @@ bool HasIssue(const TIssues& issues, ui32 code, TStringBuf message, std::functio
for (auto& issue : issues) {
WalkThroughIssues(issue, false, [&] (const TIssue& issue, int) {
- if (!hasIssue && issue.GetCode() == code && (!message || message == issue.Message)) {
+ if (!hasIssue && issue.GetCode() == code && (!message || message == issue.GetMessage())) {
hasIssue = !predicate || predicate(issue);
}
});
@@ -255,7 +255,7 @@ Y_UNIT_TEST(ProposeRequestUndelivered) {
"Kikimr cluster or one of its subsystems was unavailable."), record.GetResponse().DebugString());
UNIT_ASSERT_C(HasIssue(issues, NYql::TIssuesIds::DEFAULT_ERROR, "", [] (const TIssue& issue) {
- return issue.Message.StartsWith("Could not deliver program to shard ");
+ return issue.GetMessage().StartsWith("Could not deliver program to shard ");
}), record.GetResponse().DebugString());
}
@@ -313,7 +313,7 @@ Y_UNIT_TEST(ProposeResultLost_RoTx) {
"Kikimr cluster or one of its subsystems was unavailable."), record.GetResponse().DebugString());
UNIT_ASSERT_C(HasIssue(issues, NKikimrIssues::TIssuesIds::TX_STATE_UNKNOWN, "", [] (const TIssue& issue) {
- return issue.Message.StartsWith("Tx state unknown for shard ");
+ return issue.GetMessage().StartsWith("Tx state unknown for shard ");
}), record.GetResponse().DebugString());
});
}
@@ -334,7 +334,7 @@ Y_UNIT_TEST(ProposeResultLost_RwTx) {
"State of operation is unknown."), record.GetResponse().DebugString());
UNIT_ASSERT_C(HasIssue(issues, NKikimrIssues::TIssuesIds::TX_STATE_UNKNOWN, "", [] (const TIssue& issue) {
- return issue.Message.StartsWith("Tx state unknown for shard ");
+ return issue.GetMessage().StartsWith("Tx state unknown for shard ");
}), record.GetResponse().DebugString());
});
}
diff --git a/ydb/core/yq/libs/config/yq_issue.cpp b/ydb/core/yq/libs/config/yq_issue.cpp
index f66ab2eb0c..3a128d5d04 100644
--- a/ydb/core/yq/libs/config/yq_issue.cpp
+++ b/ydb/core/yq/libs/config/yq_issue.cpp
@@ -8,28 +8,28 @@ namespace NYq {
NYql::TIssue MakeFatalIssue(TIssuesIds::EIssueCode id, const TString& message) {
NYql::TIssue issue;
issue.SetCode(id, NYql::TSeverityIds::S_FATAL);
- issue.Message = message;
+ issue.SetMessage(message);
return issue;
}
NYql::TIssue MakeErrorIssue(TIssuesIds::EIssueCode id, const TString& message) {
NYql::TIssue issue;
issue.SetCode(id, NYql::TSeverityIds::S_ERROR);
- issue.Message = message;
+ issue.SetMessage(message);
return issue;
}
NYql::TIssue MakeWarningIssue(TIssuesIds::EIssueCode id, const TString& message) {
NYql::TIssue issue;
issue.SetCode(id, NYql::TSeverityIds::S_WARNING);
- issue.Message = message;
+ issue.SetMessage(message);
return issue;
}
NYql::TIssue MakeInfoIssue(TIssuesIds::EIssueCode id, const TString& message) {
NYql::TIssue issue;
issue.SetCode(id, NYql::TSeverityIds::S_INFO);
- issue.Message = message;
+ issue.SetMessage(message);
return issue;
}
diff --git a/ydb/core/yq/libs/control_plane_storage/events/events.h b/ydb/core/yq/libs/control_plane_storage/events/events.h
index 03233ff1dd..a142d1b565 100644
--- a/ydb/core/yq/libs/control_plane_storage/events/events.h
+++ b/ydb/core/yq/libs/control_plane_storage/events/events.h
@@ -120,7 +120,7 @@ namespace {
for (const auto& issue: issues) {
NYql::WalkThroughIssues(issue, false, [&size](const auto& issue, ui16) {
size += sizeof(issue);
- size += issue.Message.size();
+ size += issue.GetMessage().size();
});
}
size += issues.Size() * sizeof(NYql::TIssue);
diff --git a/ydb/library/yql/ast/yql_ast_ut.cpp b/ydb/library/yql/ast/yql_ast_ut.cpp
index 23e140653d..6f228966c2 100644
--- a/ydb/library/yql/ast/yql_ast_ut.cpp
+++ b/ydb/library/yql/ast/yql_ast_ut.cpp
@@ -185,7 +185,7 @@ Y_UNIT_TEST_SUITE(TParseYqlAst) {
UNIT_ASSERT(false == ast.IsOk());
UNIT_ASSERT(false == !!ast.Root);
UNIT_ASSERT(false == ast.Issues.Empty());
- UNIT_ASSERT_STRINGS_EQUAL(ast.Issues.begin()->Message, expectedError);
+ UNIT_ASSERT_STRINGS_EQUAL(ast.Issues.begin()->GetMessage(), expectedError);
}
Y_UNIT_TEST(BadArbitraryAtom) {
diff --git a/ydb/library/yql/ast/yql_expr.cpp b/ydb/library/yql/ast/yql_expr.cpp
index 7d74174c3b..30da615cbe 100644
--- a/ydb/library/yql/ast/yql_expr.cpp
+++ b/ydb/library/yql/ast/yql_expr.cpp
@@ -782,8 +782,8 @@ namespace {
TAstNode::NewLiteralAtom(TPosition(), err.Position.File, pool, TNodeFlags::ArbitraryContent) :
TAstNode::NewAtom(TPosition(), err.Position.File, pool, TNodeFlags::ArbitraryContent);
auto message = refAtoms ?
- TAstNode::NewLiteralAtom(TPosition(), err.Message, pool, TNodeFlags::ArbitraryContent) :
- TAstNode::NewAtom(TPosition(), err.Message, pool, TNodeFlags::ArbitraryContent);
+ TAstNode::NewLiteralAtom(TPosition(), err.GetMessage(), pool, TNodeFlags::ArbitraryContent) :
+ TAstNode::NewAtom(TPosition(), err.GetMessage(), pool, TNodeFlags::ArbitraryContent);
return TAstNode::NewList(TPosition(), pool, self, row, column, file, message);
}
diff --git a/ydb/library/yql/ast/yql_type_string.cpp b/ydb/library/yql/ast/yql_type_string.cpp
index 78ced74895..33876d45ad 100644
--- a/ydb/library/yql/ast/yql_type_string.cpp
+++ b/ydb/library/yql/ast/yql_type_string.cpp
@@ -1433,7 +1433,7 @@ private:
Out_ << pos.Row << ':' << pos.Column << ':';
}
- EscapeArbitraryAtom(type.GetError().Message, '\'', &Out_);
+ EscapeArbitraryAtom(type.GetError().GetMessage(), '\'', &Out_);
Out_ << '>';
}
diff --git a/ydb/library/yql/ast/yql_type_string_ut.cpp b/ydb/library/yql/ast/yql_type_string_ut.cpp
index 4d9c61a331..655d7a6091 100644
--- a/ydb/library/yql/ast/yql_type_string_ut.cpp
+++ b/ydb/library/yql/ast/yql_type_string_ut.cpp
@@ -15,7 +15,7 @@ Y_UNIT_TEST_SUITE(TTypeString)
UNIT_ASSERT(res == nullptr);
UNIT_ASSERT(!errors.Empty());
errors.PrintWithProgramTo(Cerr, "-memory-", TString(prog));
- UNIT_ASSERT_STRINGS_EQUAL(errors.begin()->Message, expectedError);
+ UNIT_ASSERT_STRINGS_EQUAL(errors.begin()->GetMessage(), expectedError);
UNIT_ASSERT_VALUES_EQUAL(errors.begin()->Position.Column, column);
}
diff --git a/ydb/library/yql/core/facade/yql_facade.cpp b/ydb/library/yql/core/facade/yql_facade.cpp
index 89cdb29b36..04bed4adb9 100644
--- a/ydb/library/yql/core/facade/yql_facade.cpp
+++ b/ydb/library/yql/core/facade/yql_facade.cpp
@@ -378,7 +378,7 @@ bool TProgram::FillParseResult(NYql::TAstParseResult&& astRes, NYql::TWarningRul
}
iManager.AddScope([this]() {
TIssuePtr issueHolder = new TIssue();
- issueHolder->Message = TStringBuilder() << "Parse " << SourceSyntax_;
+ issueHolder->SetMessage(TStringBuilder() << "Parse " << SourceSyntax_);
issueHolder->Severity = TSeverityIds::S_INFO;
return issueHolder;
});
diff --git a/ydb/library/yql/core/yql_expr_type_annotation.cpp b/ydb/library/yql/core/yql_expr_type_annotation.cpp
index 617e9166c6..4e6a43e9b6 100644
--- a/ydb/library/yql/core/yql_expr_type_annotation.cpp
+++ b/ydb/library/yql/core/yql_expr_type_annotation.cpp
@@ -4697,7 +4697,7 @@ TMaybe<TIssue> NormalizeName(TPosition position, TString& name) {
TString NormalizeName(const TStringBuf& name) {
TString result(name);
TMaybe<TIssue> error = NormalizeName(TPosition(), result);
- YQL_ENSURE(error.Empty(), "" << error->Message);
+ YQL_ENSURE(error.Empty(), "" << error->GetMessage());
return result;
}
@@ -4954,7 +4954,7 @@ TExprNode::TPtr ExpandTypeNoCache(TPositionHandle position, const TTypeAnnotatio
ctx.NewAtom(position, ToString(err.Position.Row)),
ctx.NewAtom(position, ToString(err.Position.Column)),
ctx.NewAtom(position, err.Position.File),
- ctx.NewAtom(position, err.Message)
+ ctx.NewAtom(position, err.GetMessage())
});
}
diff --git a/ydb/library/yql/core/yql_library_compiler.cpp b/ydb/library/yql/core/yql_library_compiler.cpp
index 79296792e6..c5cf012d7a 100644
--- a/ydb/library/yql/core/yql_library_compiler.cpp
+++ b/ydb/library/yql/core/yql_library_compiler.cpp
@@ -94,8 +94,8 @@ bool CompileLibrary(const TString& alias, const TString& script, TExprContext& c
for (const auto& originalError : res.Issues) {
TIssue error(originalError);
TStringBuilder message;
- message << error.Message << " (at " << alias << ")";
- error.Message = message;
+ message << error.GetMessage() << " (at " << alias << ")";
+ error.SetMessage(message);
ctx.AddError(error);
}
return false;
diff --git a/ydb/library/yql/core/yql_type_helpers.cpp b/ydb/library/yql/core/yql_type_helpers.cpp
index 9ae7cab56f..884c6f29dc 100644
--- a/ydb/library/yql/core/yql_type_helpers.cpp
+++ b/ydb/library/yql/core/yql_type_helpers.cpp
@@ -93,7 +93,7 @@ const TTypeAnnotationNode* GetSequenceItemType(NNodes::TExprBase listNode, bool
TIssue error;
if (!SilentGetSequenceItemType({}, *listNode.Ref().GetTypeAnn(), allowMultiIO, itemType, error)) {
// position is not used
- YQL_ENSURE(false, "" << error.Message);
+ YQL_ENSURE(false, "" << error.GetMessage());
}
return itemType;
}
diff --git a/ydb/library/yql/dq/actors/compute/ut/dq_compute_issues_buffer_ut.cpp b/ydb/library/yql/dq/actors/compute/ut/dq_compute_issues_buffer_ut.cpp
index 64ee3679af..c9f32e1bce 100644
--- a/ydb/library/yql/dq/actors/compute/ut/dq_compute_issues_buffer_ut.cpp
+++ b/ydb/library/yql/dq/actors/compute/ut/dq_compute_issues_buffer_ut.cpp
@@ -24,7 +24,7 @@ Y_UNIT_TEST_SUITE(TIssuesBufferTest) {
const auto dumps = buffer.Dump();
UNIT_ASSERT_VALUES_EQUAL(dumps.size(), 1);
- UNIT_ASSERT_STRINGS_EQUAL(dumps.at(0).Issues.begin()->Message, "issue1");
+ UNIT_ASSERT_STRINGS_EQUAL(dumps.at(0).Issues.begin()->GetMessage(), "issue1");
}
Y_UNIT_TEST(TestPushWithOverflow) {
@@ -41,8 +41,8 @@ Y_UNIT_TEST_SUITE(TIssuesBufferTest) {
const auto dumps = buffer.Dump();
UNIT_ASSERT_VALUES_EQUAL(dumps.size(), 2);
- UNIT_ASSERT_STRINGS_EQUAL(dumps.at(0).Issues.begin()->Message, "issue2");
- UNIT_ASSERT_STRINGS_EQUAL(dumps.at(1).Issues.begin()->Message, "issue3");
+ UNIT_ASSERT_STRINGS_EQUAL(dumps.at(0).Issues.begin()->GetMessage(), "issue2");
+ UNIT_ASSERT_STRINGS_EQUAL(dumps.at(1).Issues.begin()->GetMessage(), "issue3");
}
Y_UNIT_TEST(TestSmallBuffer) {
@@ -59,7 +59,7 @@ Y_UNIT_TEST_SUITE(TIssuesBufferTest) {
const auto dumps = buffer.Dump();
UNIT_ASSERT_VALUES_EQUAL(dumps.size(), 1);
- UNIT_ASSERT_STRINGS_EQUAL(dumps.at(0).Issues.begin()->Message, "issue3");
+ UNIT_ASSERT_STRINGS_EQUAL(dumps.at(0).Issues.begin()->GetMessage(), "issue3");
}
Y_UNIT_TEST(TestUseAfterDump) {
@@ -79,8 +79,8 @@ Y_UNIT_TEST_SUITE(TIssuesBufferTest) {
UNIT_ASSERT_VALUES_EQUAL(buffer.GetAllAddedIssuesCount(), 4);
const auto dumps = buffer.Dump();
UNIT_ASSERT_VALUES_EQUAL(dumps.size(), 2);
- UNIT_ASSERT_STRINGS_EQUAL(dumps.at(0).Issues.begin()->Message, "issue3");
- UNIT_ASSERT_STRINGS_EQUAL(dumps.at(1).Issues.begin()->Message, "issue4");
+ UNIT_ASSERT_STRINGS_EQUAL(dumps.at(0).Issues.begin()->GetMessage(), "issue3");
+ UNIT_ASSERT_STRINGS_EQUAL(dumps.at(1).Issues.begin()->GetMessage(), "issue4");
}
}
diff --git a/ydb/library/yql/parser/pg_wrapper/ut/parser_ut.cpp b/ydb/library/yql/parser/pg_wrapper/ut/parser_ut.cpp
index bbf0680dbe..972cfec012 100644
--- a/ydb/library/yql/parser/pg_wrapper/ut/parser_ut.cpp
+++ b/ydb/library/yql/parser/pg_wrapper/ut/parser_ut.cpp
@@ -39,7 +39,7 @@ Y_UNIT_TEST_SUITE(TWrapperTests) {
PGParse(TString(" \n SELECT1"), events);
UNIT_ASSERT(!events.Result);
UNIT_ASSERT(events.Issue);
- auto msg = events.Issue->Message;
+ auto msg = events.Issue->GetMessage();
UNIT_ASSERT_NO_DIFF(msg, "syntax error at or near \"SELECT1\"");
UNIT_ASSERT_VALUES_EQUAL(events.Issue->Position.Row, 2);
UNIT_ASSERT_VALUES_EQUAL(events.Issue->Position.Column, 3);
@@ -94,7 +94,7 @@ Y_UNIT_TEST_SUITE(TMTWrapperTests) {
PGParse(TString(" \n SELECT1"), events);
Y_ENSURE(!events.Result);
Y_ENSURE(events.Issue);
- auto msg = events.Issue->Message;
+ auto msg = events.Issue->GetMessage();
Y_ENSURE(msg == "syntax error at or near \"SELECT1\"");
Y_ENSURE(events.Issue->Position.Row == 2);
Y_ENSURE(events.Issue->Position.Column == 3);
diff --git a/ydb/library/yql/providers/common/mkql/yql_provider_mkql.cpp b/ydb/library/yql/providers/common/mkql/yql_provider_mkql.cpp
index a456f70679..2417754956 100644
--- a/ydb/library/yql/providers/common/mkql/yql_provider_mkql.cpp
+++ b/ydb/library/yql/providers/common/mkql/yql_provider_mkql.cpp
@@ -1464,18 +1464,18 @@ TMkqlCommonCallableCompiler::TShared::TShared() {
const auto rightTupleType = rightItemType->Cast<TMultiExprType>();
const auto outputTupleType = outputItemType->Cast<TMultiExprType>();
- node.Child(3)->ForEachChild([&](TExprNode& child){
- leftKeyColumns.emplace_back(*GetFieldPosition(*leftTupleType, child.Content()));
+ node.Child(3)->ForEachChild([&](TExprNode& child){
+ leftKeyColumns.emplace_back(*GetFieldPosition(*leftTupleType, child.Content()));
});
- node.Child(4)->ForEachChild([&](TExprNode& child){
+ node.Child(4)->ForEachChild([&](TExprNode& child){
rightKeyColumns.emplace_back(*GetFieldPosition(*rightTupleType, child.Content())); });
bool s = false;
- node.Child(5)->ForEachChild([&](TExprNode& child){
+ node.Child(5)->ForEachChild([&](TExprNode& child){
leftRenames.emplace_back(*GetFieldPosition((s = !s) ? *leftTupleType : *outputTupleType, child.Content())); });
s = false;
node.Child(6)->ForEachChild([&](TExprNode& child){
- rightRenames.emplace_back(*GetFieldPosition((s = !s) ? *rightTupleType : *outputTupleType, child.Content()));
-
+ rightRenames.emplace_back(*GetFieldPosition((s = !s) ? *rightTupleType : *outputTupleType, child.Content()));
+
});
const auto returnType = BuildType(node, *node.GetTypeAnn(), ctx.ProgramBuilder);
@@ -1708,7 +1708,7 @@ TMkqlCommonCallableCompiler::TShared::TShared() {
TMaybe<ui64> itemsCount;
bool isCompact;
if (const auto error = ParseToDictSettings(node, ctx.ExprCtx, isMany, isHashed, itemsCount, isCompact)) {
- ythrow TNodeException(node) << error->Message;
+ ythrow TNodeException(node) << error->GetMessage();
}
const auto factory = *isHashed ? &TProgramBuilder::ToHashedDict : &TProgramBuilder::ToSortedDict;
@@ -1726,7 +1726,7 @@ TMkqlCommonCallableCompiler::TShared::TShared() {
TMaybe<ui64> itemsCount;
bool isCompact;
if (const auto error = ParseToDictSettings(node, ctx.ExprCtx, isMany, isHashed, itemsCount, isCompact)) {
- ythrow TNodeException(node) << error->Message;
+ ythrow TNodeException(node) << error->GetMessage();
}
const auto factory = *isHashed ? &TProgramBuilder::SqueezeToHashedDict : &TProgramBuilder::SqueezeToSortedDict;
@@ -1744,7 +1744,7 @@ TMkqlCommonCallableCompiler::TShared::TShared() {
TMaybe<ui64> itemsCount;
bool isCompact;
if (const auto error = ParseToDictSettings(node, ctx.ExprCtx, isMany, isHashed, itemsCount, isCompact)) {
- ythrow TNodeException(node) << error->Message;
+ ythrow TNodeException(node) << error->GetMessage();
}
const auto factory = *isHashed ? &TProgramBuilder::NarrowSqueezeToHashedDict : &TProgramBuilder::NarrowSqueezeToSortedDict;
@@ -2123,12 +2123,12 @@ TMkqlCommonCallableCompiler::TShared::TShared() {
AddCallable("Error", [](const TExprNode& node, TMkqlBuildContext& ctx)->NKikimr::NMiniKQL::TRuntimeNode {
const auto err = node.GetTypeAnn()->Cast<TErrorExprType>()->GetError();
- ythrow TNodeException(ctx.ExprCtx.AppendPosition(err.Position)) << err.Message;
+ ythrow TNodeException(ctx.ExprCtx.AppendPosition(err.Position)) << err.GetMessage();
});
AddCallable("ErrorType", [](const TExprNode& node, TMkqlBuildContext& ctx)->NKikimr::NMiniKQL::TRuntimeNode {
const auto err = node.GetTypeAnn()->Cast<TTypeExprType>()->GetType()->Cast<TErrorExprType>()->GetError();
- ythrow TNodeException(ctx.ExprCtx.AppendPosition(err.Position)) << err.Message;
+ ythrow TNodeException(ctx.ExprCtx.AppendPosition(err.Position)) << err.GetMessage();
});
AddCallable("Join", [](const TExprNode& node, TMkqlBuildContext& ctx) {
diff --git a/ydb/library/yql/providers/common/schema/expr/yql_expr_schema.cpp b/ydb/library/yql/providers/common/schema/expr/yql_expr_schema.cpp
index 8b71560f75..1031e0a495 100644
--- a/ydb/library/yql/providers/common/schema/expr/yql_expr_schema.cpp
+++ b/ydb/library/yql/providers/common/schema/expr/yql_expr_schema.cpp
@@ -146,7 +146,7 @@ class TExprTypeSaver: public TSaver<TExprTypeSaver<TSaver>> {
TBase::Writer.OnListItem();
TBase::Writer.OnStringScalar(err.Position.File);
TBase::Writer.OnListItem();
- TBase::Writer.OnStringScalar(err.Message);
+ TBase::Writer.OnStringScalar(err.GetMessage());
TBase::Writer.OnEndList();
}
diff --git a/ydb/library/yql/providers/dq/actors/grouped_issues.cpp b/ydb/library/yql/providers/dq/actors/grouped_issues.cpp
index 2d955fadea..862821ae99 100644
--- a/ydb/library/yql/providers/dq/actors/grouped_issues.cpp
+++ b/ydb/library/yql/providers/dq/actors/grouped_issues.cpp
@@ -14,7 +14,7 @@ NYql::TIssues NYql::NDq::GroupedIssues::ToIssues() {
});
for (auto& [issue, meta]: issueVector) {
- auto modified_issue_message = issue.Message + " " + meta.InfoString();
+ auto modified_issue_message = issue.GetMessage() + " " + meta.InfoString();
auto modified_issue = NYql::TIssue(issue.Position, issue.EndPosition, modified_issue_message);
issues.AddIssue(modified_issue);
}
diff --git a/ydb/library/yql/providers/dq/provider/exec/yql_dq_exectransformer.cpp b/ydb/library/yql/providers/dq/provider/exec/yql_dq_exectransformer.cpp
index f3c7bcade1..bc505f924a 100644
--- a/ydb/library/yql/providers/dq/provider/exec/yql_dq_exectransformer.cpp
+++ b/ydb/library/yql/providers/dq/provider/exec/yql_dq_exectransformer.cpp
@@ -1220,7 +1220,7 @@ private:
}
if (error) {
- issue.Message = "Too big result " + trStr;
+ issue.SetMessage("Too big result " + trStr);
issue.Severity = TSeverityIds::S_ERROR;
}
ctx.IssueManager.RaiseIssue(issue);
@@ -1652,7 +1652,7 @@ private:
}
if (neverFallback) {
- issue.Message = "Too big precompute result";
+ issue.SetMessage("Too big precompute result");
issue.Severity = TSeverityIds::S_ERROR;
}
ctx.IssueManager.RaiseIssue(issue);
diff --git a/ydb/library/yql/providers/s3/actors/yql_s3_read_actor.cpp b/ydb/library/yql/providers/s3/actors/yql_s3_read_actor.cpp
index fe5d7f8b64..d5a6759d49 100644
--- a/ydb/library/yql/providers/s3/actors/yql_s3_read_actor.cpp
+++ b/ydb/library/yql/providers/s3/actors/yql_s3_read_actor.cpp
@@ -547,7 +547,7 @@ private:
} catch (const TDtorException&) {
throw;
} catch (const std::exception& err) {
- exceptIssue.Message = TStringBuilder() << "Error while reading file " << Path << ", details: " << err.what();
+ exceptIssue.SetMessage(TStringBuilder() << "Error while reading file " << Path << ", details: " << err.what());
fatalCode = NYql::NDqProto::StatusIds::INTERNAL_ERROR;
RetryStuff->Cancel();
}
@@ -565,7 +565,7 @@ private:
Issues.AddIssues(BuildIssues(HttpResponseCode, errorCode, message));
}
- if (exceptIssue.Message) {
+ if (exceptIssue.GetMessage()) {
Issues.AddIssue(exceptIssue);
}
diff --git a/ydb/library/yql/public/issue/yql_issue.cpp b/ydb/library/yql/public/issue/yql_issue.cpp
index 3b89156874..b8d76a09c4 100644
--- a/ydb/library/yql/public/issue/yql_issue.cpp
+++ b/ydb/library/yql/public/issue/yql_issue.cpp
@@ -196,7 +196,7 @@ void TIssues::PrintWithProgramTo(
out << Purple() << issue.Range() << Old();
auto color = (issue.GetSeverity() == TSeverityIds::S_WARNING) ? Yellow() : LightRed();
auto severityName = SeverityToString(issue.GetSeverity());
- out << color << ": "<< severityName << ": " << issue.Message << Old() << '\n';
+ out << color << ": "<< severityName << ": " << issue.GetMessage() << Old() << '\n';
Indent(out, shift);
if (issue.Position.HasValue()) {
out << '\t' << lines[issue.Position.Row] << '\n';
diff --git a/ydb/library/yql/public/issue/yql_issue.h b/ydb/library/yql/public/issue/yql_issue.h
index 7b97674c9d..8ad69a20bd 100644
--- a/ydb/library/yql/public/issue/yql_issue.h
+++ b/ydb/library/yql/public/issue/yql_issue.h
@@ -109,10 +109,10 @@ class TIssue;
using TIssuePtr = TIntrusivePtr<TIssue>;
class TIssue: public TThrRefBase {
TVector<TIntrusivePtr<TIssue>> Children_;
+ TString Message;
public:
TPosition Position;
TPosition EndPosition;
- TString Message;
TIssueCode IssueCode = 0U;
ESeverity Severity = TSeverityIds::S_ERROR;
@@ -120,18 +120,18 @@ public:
template <typename T>
explicit TIssue(const T& message)
- : Position(TPosition())
+ : Message(message)
+ , Position(TPosition())
, EndPosition(TPosition())
- , Message(message)
{
SanitizeNonAscii(Message);
}
template <typename T>
TIssue(TPosition position, const T& message)
- : Position(position)
+ : Message(message)
+ , Position(position)
, EndPosition(position)
- , Message(message)
{
SanitizeNonAscii(Message);
}
@@ -142,9 +142,9 @@ public:
template <typename T>
TIssue(TPosition position, TPosition endPosition, const T& message)
- : Position(position)
+ : Message(message)
+ , Position(position)
, EndPosition(endPosition)
- , Message(message)
{
SanitizeNonAscii(Message);
}
@@ -169,6 +169,12 @@ public:
return *this;
}
+ TIssue& SetMessage(const TString& msg) {
+ Message = msg;
+ SanitizeNonAscii(Message);
+ return *this;
+ }
+
ESeverity GetSeverity() const {
return Severity;
}
@@ -177,6 +183,10 @@ public:
return IssueCode;
}
+ const TString& GetMessage() const {
+ return Message;
+ }
+
TIssue& AddSubIssue(TIntrusivePtr<TIssue> issue) {
Severity = (ESeverity)Min((ui32)issue->GetSeverity(), (ui32)Severity);
Children_.push_back(issue);
@@ -194,6 +204,20 @@ public:
PrintTo(out, oneLine);
return out.Str();
}
+
+ // Unsafe method. Doesn't call SanitizeNonAscii(Message)
+ TString* MutableMessage() {
+ return &Message;
+ }
+
+ TIssue& CopyWithoutSubIssues(const TIssue& src) {
+ Message = src.Message;
+ IssueCode = src.IssueCode;
+ Severity = src.Severity;
+ Position = src.Position;
+ EndPosition = src.EndPosition;
+ return *this;
+ }
};
void WalkThroughIssues(const TIssue& topIssue, bool leafOnly, std::function<void(const TIssue&, ui16 level)> fn, std::function<void(const TIssue&, ui16 level)> afterChildrenFn = {});
@@ -246,7 +270,7 @@ public:
inline void AddIssues(const TPosition& pos, const TIssues& errors) {
Issues_.reserve(Issues_.size() + errors.Size());
for (const auto& e: errors) {
- Issues_.push_back(TIssue(pos, e.Message));
+ Issues_.push_back(TIssue(pos, e.GetMessage()));
}
}
diff --git a/ydb/library/yql/public/issue/yql_issue_manager.cpp b/ydb/library/yql/public/issue/yql_issue_manager.cpp
index 08daf0fcdd..3277abe688 100644
--- a/ydb/library/yql/public/issue/yql_issue_manager.cpp
+++ b/ydb/library/yql/public/issue/yql_issue_manager.cpp
@@ -38,15 +38,15 @@ void TIssueManager::LeaveScope() {
if (subIssue->GetSubIssues().size() == 1) {
auto nestedIssue = subIssue->GetSubIssues().front();
if (!nestedIssue->GetSubIssues().empty() && nestedIssue->Position == subIssue->Position && nestedIssue->EndPosition == subIssue->EndPosition) {
- auto msg = subIssue->Message;
- if (nestedIssue->Message) {
+ auto msg = subIssue->GetMessage();
+ if (nestedIssue->GetMessage()) {
if (msg) {
msg.append(", ");
}
- msg.append(nestedIssue->Message);
+ msg.append(nestedIssue->GetMessage());
}
subIssue = nestedIssue;
- subIssue->Message = msg;
+ subIssue->SetMessage(msg);
}
}
RawIssues_.pop();
@@ -149,7 +149,7 @@ bool TIssueManager::RaiseWarning(TIssue issue) {
if (WarningToErrorTreatMessage_) {
TIssue newIssue;
newIssue.SetCode(issue.GetCode(), ESeverity::TSeverityIds_ESeverityId_S_ERROR);
- newIssue.Message = WarningToErrorTreatMessage_.GetRef();
+ newIssue.SetMessage(WarningToErrorTreatMessage_.GetRef());
newIssue.AddSubIssue(new TIssue(issue));
issue = newIssue;
}
@@ -196,7 +196,7 @@ void TIssueManager::AddIssues(const TIssues& issues) {
void TIssueManager::AddIssues(const TPosition& pos, const TIssues& issues) {
for (auto& issue: issues) {
- if (auto p = CheckUniqAndLimit(TIssue(pos, issue.Message))) {
+ if (auto p = CheckUniqAndLimit(TIssue(pos, issue.GetMessage()))) {
CompletedIssues_.AddIssue(*p);
}
}
diff --git a/ydb/library/yql/public/issue/yql_issue_manager_ut.cpp b/ydb/library/yql/public/issue/yql_issue_manager_ut.cpp
index 287f63fedd..e3308163c3 100644
--- a/ydb/library/yql/public/issue/yql_issue_manager_ut.cpp
+++ b/ydb/library/yql/public/issue/yql_issue_manager_ut.cpp
@@ -56,10 +56,10 @@ Y_UNIT_TEST_SUITE(TIssueManagerTest) {
auto issues = issueManager.GetIssues();
UNIT_ASSERT_VALUES_EQUAL(issues.Size(), 1);
auto scopeIssue = issues.begin();
- UNIT_ASSERT_VALUES_EQUAL(scopeIssue->Message, "A");
+ UNIT_ASSERT_VALUES_EQUAL(scopeIssue->GetMessage(), "A");
auto subIssues = scopeIssue->GetSubIssues();
UNIT_ASSERT_VALUES_EQUAL(subIssues.size(), 1);
- UNIT_ASSERT_VALUES_EQUAL(subIssues[0]->Message, "IssueOne");
+ UNIT_ASSERT_VALUES_EQUAL(subIssues[0]->GetMessage(), "IssueOne");
}
Y_UNIT_TEST(OneErrorTwoLevelsTest) {
@@ -72,13 +72,13 @@ Y_UNIT_TEST_SUITE(TIssueManagerTest) {
auto issues = issueManager.GetIssues();
UNIT_ASSERT_VALUES_EQUAL(issues.Size(), 1);
auto scopeIssue = issues.begin();
- UNIT_ASSERT_VALUES_EQUAL(scopeIssue->Message, "A");
+ UNIT_ASSERT_VALUES_EQUAL(scopeIssue->GetMessage(), "A");
auto subIssues = scopeIssue->GetSubIssues();
UNIT_ASSERT_VALUES_EQUAL(subIssues.size(), 1);
- UNIT_ASSERT_VALUES_EQUAL(subIssues[0]->Message, "B");
+ UNIT_ASSERT_VALUES_EQUAL(subIssues[0]->GetMessage(), "B");
UNIT_ASSERT_VALUES_EQUAL(subIssues[0]->GetSubIssues().size(), 1);
- UNIT_ASSERT_VALUES_EQUAL(subIssues[0]->GetSubIssues()[0]->Message, "IssueOne");
+ UNIT_ASSERT_VALUES_EQUAL(subIssues[0]->GetSubIssues()[0]->GetMessage(), "IssueOne");
}
Y_UNIT_TEST(MultiErrorsMultiLevelsTest) {
@@ -98,11 +98,11 @@ Y_UNIT_TEST_SUITE(TIssueManagerTest) {
auto subIssues = scopeIssue->GetSubIssues();
UNIT_ASSERT_VALUES_EQUAL(subIssues.size(), 2);
UNIT_ASSERT_VALUES_EQUAL(subIssues[0]->GetSubIssues().size(), 0); //WarningScope1
- UNIT_ASSERT_VALUES_EQUAL(subIssues[0]->Message, "WarningScope1");
+ UNIT_ASSERT_VALUES_EQUAL(subIssues[0]->GetMessage(), "WarningScope1");
UNIT_ASSERT_VALUES_EQUAL(subIssues[1]->GetSubIssues().size(), 2);
UNIT_ASSERT_VALUES_EQUAL(subIssues[1]->GetSubIssues()[0]->GetSubIssues().size(), 1);
- UNIT_ASSERT_VALUES_EQUAL(subIssues[1]->GetSubIssues()[0]->GetSubIssues()[0]->Message, "ErrorScope3");
- UNIT_ASSERT_VALUES_EQUAL(subIssues[1]->GetSubIssues()[1]->Message, "ErrorScope2");
+ UNIT_ASSERT_VALUES_EQUAL(subIssues[1]->GetSubIssues()[0]->GetSubIssues()[0]->GetMessage(), "ErrorScope3");
+ UNIT_ASSERT_VALUES_EQUAL(subIssues[1]->GetSubIssues()[1]->GetMessage(), "ErrorScope2");
auto ref = R"___(<main>: Error: A
<main>: Error: WarningScope1
<main>:1:1: Error: B
@@ -122,10 +122,10 @@ Y_UNIT_TEST_SUITE(TIssueManagerTest) {
auto issues = issueManager.GetIssues();
UNIT_ASSERT_VALUES_EQUAL(issues.Size(), 1);
auto scopeIssue = issues.begin();
- UNIT_ASSERT_VALUES_EQUAL(scopeIssue->Message, "A");
+ UNIT_ASSERT_VALUES_EQUAL(scopeIssue->GetMessage(), "A");
auto subIssues = scopeIssue->GetSubIssues();
UNIT_ASSERT_VALUES_EQUAL(subIssues.size(), 1);
- UNIT_ASSERT_VALUES_EQUAL(subIssues[0]->Message, "ErrorScope1");
+ UNIT_ASSERT_VALUES_EQUAL(subIssues[0]->GetMessage(), "ErrorScope1");
}
Y_UNIT_TEST(FuseScopesTest) {
diff --git a/ydb/library/yql/public/issue/yql_issue_message.cpp b/ydb/library/yql/public/issue/yql_issue_message.cpp
index f9d512ca5a..15a3202b52 100644
--- a/ydb/library/yql/public/issue/yql_issue_message.cpp
+++ b/ydb/library/yql/public/issue/yql_issue_message.cpp
@@ -73,7 +73,7 @@ void IssueToMessage(const TIssue& topIssue, TIssueMessage* issueMessage) {
endPosition.set_row(issue.EndPosition.Row);
endPosition.set_column(issue.EndPosition.Column);
}
- message.set_message(issue.Message);
+ message.set_message(issue.GetMessage());
message.set_issue_code(issue.GetCode());
message.set_severity(issue.GetSeverity());
diff --git a/ydb/library/yql/public/issue/yql_issue_ut.cpp b/ydb/library/yql/public/issue/yql_issue_ut.cpp
index 87b417da39..0b13e4c2fc 100644
--- a/ydb/library/yql/public/issue/yql_issue_ut.cpp
+++ b/ydb/library/yql/public/issue/yql_issue_ut.cpp
@@ -1,10 +1,13 @@
#include "yql_issue.h"
+#include "yql_issue_message.h"
#include <library/cpp/testing/unittest/registar.h>
#include <ydb/library/yql/public/issue/protos/issue_message.pb.h>
#include <ydb/library/yql/public/issue/yql_issue_message.h>
#include <ydb/public/api/protos/ydb_issue_message.pb.h>
+#include <util/charset/utf8.h>
+
#include <google/protobuf/message.h>
#include <google/protobuf/descriptor.h>
@@ -46,13 +49,13 @@ void ensureMessageTypesSame(const Descriptor* a, const Descriptor* b, THashSet<T
Y_UNIT_TEST_SUITE(IssueTest) {
Y_UNIT_TEST(Ascii) {
TIssue issue1("тест abc");
- UNIT_ASSERT_VALUES_EQUAL(issue1.Message, "тест abc");
+ UNIT_ASSERT_VALUES_EQUAL(issue1.GetMessage(), "тест abc");
TIssue issue2("\xFF abc");
- UNIT_ASSERT_VALUES_EQUAL(issue2.Message, "? abc");
+ UNIT_ASSERT_VALUES_EQUAL(issue2.GetMessage(), "? abc");
TIssue issue3("");
- UNIT_ASSERT_VALUES_EQUAL(issue3.Message, "");
+ UNIT_ASSERT_VALUES_EQUAL(issue3.GetMessage(), "");
TIssue issue4("abc");
- UNIT_ASSERT_VALUES_EQUAL(issue4.Message, "abc");
+ UNIT_ASSERT_VALUES_EQUAL(issue4.GetMessage(), "abc");
}
}
@@ -137,3 +140,46 @@ Y_UNIT_TEST_SUITE(ToOneLineStringTest) {
UNIT_ASSERT_STRINGS_EQUAL(issues.ToOneLineString(), "[ { file.abc:34:12: Error: error subissue: { <main>: Error: suberror } } { abc.file:2:100: Error: my message } ]");
}
}
+
+Y_UNIT_TEST_SUITE(ToMessage) {
+ Y_UNIT_TEST(NonUtf8) {
+ TString s;
+ int chars[] = {
+ 0x7f,
+ 0xf8,
+ 0xf7,
+ 0xff,
+ 0xf8,
+ 0x1f,
+ 0xff,
+ 0xf2,
+ 0xaf,
+ 0xbf,
+ 0xfe,
+ 0xfa,
+ 0xf5,
+ 0x7f,
+ 0xfe,
+ 0xfa,
+ 0x27,
+ 0x20,
+ 0x7d,
+ 0x20,
+ 0x5d,
+ 0x2e
+ };
+ for (int i : chars) {
+ s.append(static_cast<char>(i));
+ }
+ UNIT_ASSERT(!IsUtf(s));
+ TIssue issue;
+ issue.SetMessage(s);
+
+ Ydb::Issue::IssueMessage msg;
+ IssueToMessage(issue, &msg);
+ TString serialized;
+ UNIT_ASSERT(msg.SerializeToString(&serialized));
+ Ydb::Issue::IssueMessage msg2;
+ UNIT_ASSERT(msg2.ParseFromString(serialized));
+ }
+}
diff --git a/ydb/library/yql/public/issue/yql_issue_utils.cpp b/ydb/library/yql/public/issue/yql_issue_utils.cpp
index 364560ea4d..2be0b8e57b 100644
--- a/ydb/library/yql/public/issue/yql_issue_utils.cpp
+++ b/ydb/library/yql/public/issue/yql_issue_utils.cpp
@@ -63,14 +63,6 @@ TIssue TruncateIssueLevels(const TIssue& topIssue, TTruncateIssueOpts opts) {
}
leafs.clear();
- auto copyIssue = [](TIssue& target, const TIssue& src) {
- target.Message = src.Message;
- target.IssueCode = src.IssueCode;
- target.Severity = src.Severity;
- target.Position = src.Position;
- target.EndPosition = src.EndPosition;
- };
-
TIssue result;
for (auto& i: issues) {
const auto srcIssue = std::get<0>(i);
@@ -82,7 +74,7 @@ TIssue TruncateIssueLevels(const TIssue& topIssue, TTruncateIssueOpts opts) {
if (0 == level) {
targetIssue = &result;
- copyIssue(*targetIssue, *srcIssue);
+ targetIssue->CopyWithoutSubIssues(*srcIssue);
} else if (visible) {
auto& parentRec = issues.at(visibleParent);
auto& parentTargetIssue = std::get<1>(parentRec);
@@ -96,12 +88,12 @@ TIssue TruncateIssueLevels(const TIssue& topIssue, TTruncateIssueOpts opts) {
parentSkipIssue = newIssue.Get();
}
auto newIssue = MakeIntrusive<TIssue>(TString{});
- copyIssue(*newIssue, *srcIssue);
+ newIssue->CopyWithoutSubIssues(*srcIssue);
parentSkipIssue->AddSubIssue(newIssue);
targetIssue = newIssue.Get();
} else {
auto newIssue = MakeIntrusive<TIssue>(TString{});
- copyIssue(*newIssue, *srcIssue);
+ newIssue->CopyWithoutSubIssues(*srcIssue);
parentTargetIssue->AddSubIssue(newIssue);
targetIssue = newIssue.Get();
}
@@ -111,4 +103,3 @@ TIssue TruncateIssueLevels(const TIssue& topIssue, TTruncateIssueOpts opts) {
}
} // namspace NYql
-
diff --git a/ydb/library/yql/sql/v0/builtin.cpp b/ydb/library/yql/sql/v0/builtin.cpp
index a0945f9d05..ed4b8b0261 100644
--- a/ydb/library/yql/sql/v0/builtin.cpp
+++ b/ydb/library/yql/sql/v0/builtin.cpp
@@ -2194,7 +2194,7 @@ TNodePtr BuildBuiltinFunc(TContext& ctx, TPosition pos, TString name, const TVec
if (ns.empty()) {
TMaybe<TIssue> error = NormalizeName(pos, normalizedName);
if (!error.Empty()) {
- return new TInvalidBuiltin(pos, error->Message);
+ return new TInvalidBuiltin(pos, error->GetMessage());
}
auto coreFunc = coreFuncs.find(normalizedName);
@@ -2358,7 +2358,7 @@ TNodePtr BuildBuiltinFunc(TContext& ctx, TPosition pos, TString name, const TVec
auto aggNormalizedName = *args[0]->GetLiteral("String");
auto error = NormalizeName(pos, aggNormalizedName);
if (!error.Empty()) {
- return new TInvalidBuiltin(pos, error->Message);
+ return new TInvalidBuiltin(pos, error->GetMessage());
}
if (aggNormalizedName == "aggregateby") {
diff --git a/ydb/library/yql/sql/v0/context.cpp b/ydb/library/yql/sql/v0/context.cpp
index a3a9013f2b..6a7ef8e00f 100644
--- a/ydb/library/yql/sql/v0/context.cpp
+++ b/ydb/library/yql/sql/v0/context.cpp
@@ -141,7 +141,7 @@ IOutputStream& TContext::MakeIssue(ESeverity severity, TIssueCode code, NYql::TP
auto& curIssue = Issues.back();
curIssue.Severity = severity;
curIssue.IssueCode = code;
- IssueMsgHolder.Reset(new TStringOutput(Issues.back().Message));
+ IssueMsgHolder.Reset(new TStringOutput(*Issues.back().MutableMessage()));
return *IssueMsgHolder;
}
diff --git a/ydb/library/yql/sql/v0/query.cpp b/ydb/library/yql/sql/v0/query.cpp
index 7752b28b01..92411bc008 100644
--- a/ydb/library/yql/sql/v0/query.cpp
+++ b/ydb/library/yql/sql/v0/query.cpp
@@ -329,7 +329,7 @@ public:
for (auto& hint: Hints) {
TMaybe<TIssue> normalizeError = NormalizeName(Pos, hint);
if (!normalizeError.Empty()) {
- ctx.Error() << normalizeError->Message;
+ ctx.Error() << normalizeError->GetMessage();
ctx.IncrementMonCounter("sql_errors", "NormalizeHintError");
return false;
}
diff --git a/ydb/library/yql/sql/v0/sql.cpp b/ydb/library/yql/sql/v0/sql.cpp
index b028fc0439..9b3091044f 100644
--- a/ydb/library/yql/sql/v0/sql.cpp
+++ b/ydb/library/yql/sql/v0/sql.cpp
@@ -4574,7 +4574,7 @@ TNodePtr TSqlQuery::PragmaStatement(const TRule_pragma_stmt& stmt, bool& success
TString normalizedPragma(pragma);
TMaybe<TIssue> normalizeError = NormalizeName(Ctx.Pos(), normalizedPragma);
if (!normalizeError.Empty()) {
- Error() << normalizeError->Message;
+ Error() << normalizeError->GetMessage();
Ctx.IncrementMonCounter("sql_errors", "NormalizePragmaError");
return {};
}
diff --git a/ydb/library/yql/sql/v1/builtin.cpp b/ydb/library/yql/sql/v1/builtin.cpp
index c3bf4a7c78..a225305c80 100644
--- a/ydb/library/yql/sql/v1/builtin.cpp
+++ b/ydb/library/yql/sql/v1/builtin.cpp
@@ -3191,7 +3191,7 @@ TNodePtr BuildBuiltinFunc(TContext& ctx, TPosition pos, TString name, const TVec
if (ns.empty()) {
TMaybe<TIssue> error = NormalizeName(pos, normalizedName);
if (!error.Empty()) {
- return new TInvalidBuiltin(pos, error->Message);
+ return new TInvalidBuiltin(pos, error->GetMessage());
}
auto coreFunc = coreFuncs.find(normalizedName);
@@ -3439,7 +3439,7 @@ TNodePtr BuildBuiltinFunc(TContext& ctx, TPosition pos, TString name, const TVec
auto aggNormalizedName = *args[0]->GetLiteral("String");
auto error = NormalizeName(pos, aggNormalizedName);
if (!error.Empty()) {
- return new TInvalidBuiltin(pos, error->Message);
+ return new TInvalidBuiltin(pos, error->GetMessage());
}
if (aggNormalizedName == "aggregateby") {
diff --git a/ydb/library/yql/sql/v1/context.cpp b/ydb/library/yql/sql/v1/context.cpp
index 5ec69a5662..2c12c1c2c8 100644
--- a/ydb/library/yql/sql/v1/context.cpp
+++ b/ydb/library/yql/sql/v1/context.cpp
@@ -236,7 +236,7 @@ IOutputStream& TContext::MakeIssue(ESeverity severity, TIssueCode code, NYql::TP
auto& curIssue = Issues.back();
curIssue.Severity = severity;
curIssue.IssueCode = code;
- IssueMsgHolder.Reset(new TStringOutput(Issues.back().Message));
+ IssueMsgHolder.Reset(new TStringOutput(*Issues.back().MutableMessage()));
return *IssueMsgHolder;
}
diff --git a/ydb/library/yql/sql/v1/query.cpp b/ydb/library/yql/sql/v1/query.cpp
index f09522778b..3b432d884e 100644
--- a/ydb/library/yql/sql/v1/query.cpp
+++ b/ydb/library/yql/sql/v1/query.cpp
@@ -477,7 +477,7 @@ public:
TString hintName = hint.first;
TMaybe<TIssue> normalizeError = NormalizeName(Pos, hintName);
if (!normalizeError.Empty()) {
- ctx.Error() << normalizeError->Message;
+ ctx.Error() << normalizeError->GetMessage();
ctx.IncrementMonCounter("sql_errors", "NormalizeHintError");
return false;
}
@@ -536,7 +536,7 @@ public:
TString hintName = hint.first;
TMaybe<TIssue> normalizeError = NormalizeName(Pos, hintName);
if (!normalizeError.Empty()) {
- ctx.Error() << normalizeError->Message;
+ ctx.Error() << normalizeError->GetMessage();
ctx.IncrementMonCounter("sql_errors", "NormalizeHintError");
return false;
}
diff --git a/ydb/library/yql/sql/v1/sql.cpp b/ydb/library/yql/sql/v1/sql.cpp
index 458e2a3477..2523a379b0 100644
--- a/ydb/library/yql/sql/v1/sql.cpp
+++ b/ydb/library/yql/sql/v1/sql.cpp
@@ -7234,7 +7234,7 @@ bool TGroupByClause::Build(const TRule_group_by_clause& node) {
TString mode = Id(node.GetBlock6().GetRule_an_id2(), *this);
TMaybe<TIssue> normalizeError = NormalizeName(Ctx.Pos(), mode);
if (!normalizeError.Empty()) {
- Error() << normalizeError->Message;
+ Error() << normalizeError->GetMessage();
Ctx.IncrementMonCounter("sql_errors", "NormalizeGroupByModeError");
return false;
}
@@ -9412,7 +9412,7 @@ TNodePtr TSqlQuery::PragmaStatement(const TRule_pragma_stmt& stmt, bool& success
TString normalizedPragma(pragma);
TMaybe<TIssue> normalizeError = NormalizeName(Ctx.Pos(), normalizedPragma);
if (!normalizeError.Empty()) {
- Error() << normalizeError->Message;
+ Error() << normalizeError->GetMessage();
Ctx.IncrementMonCounter("sql_errors", "NormalizePragmaError");
return {};
}
diff --git a/ydb/services/ydb/ydb_table_ut.cpp b/ydb/services/ydb/ydb_table_ut.cpp
index 3875bf3978..d1b81d41b4 100644
--- a/ydb/services/ydb/ydb_table_ut.cpp
+++ b/ydb/services/ydb/ydb_table_ut.cpp
@@ -54,7 +54,7 @@ bool HasIssue(const NYql::TIssues& issues, ui32 code, std::string_view message,
for (auto& issue : issues) {
NYql::WalkThroughIssues(issue, false, [&] (const NYql::TIssue& issue, int) {
- if (!hasIssue && issue.GetCode() == code && (message.empty() || message == issue.Message)) {
+ if (!hasIssue && issue.GetCode() == code && (message.empty() || message == issue.GetMessage())) {
hasIssue = !predicate || predicate(issue);
}
});