aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraneporada <aneporada@yandex-team.ru>2022-04-18 00:01:42 +0300
committeraneporada <aneporada@yandex-team.ru>2022-04-18 00:01:42 +0300
commitd814f23525220a4b4dd9eced8519fd598fd0e3bc (patch)
tree08ae04fe64e143c72747d443132dd49fd1ff9a81
parentae64ee242c379632d1a0d81a4a5fee66aaba7d2d (diff)
downloadydb-d814f23525220a4b4dd9eced8519fd598fd0e3bc.tar.gz
[YQL-14290] Add queryFile argument for hints collector. Query file is used in TPosition
ref:023fc09b3a4455f706905b9844ef3ce5aafb4a36
-rw-r--r--ydb/library/yql/parser/lexer_common/hints.cpp18
-rw-r--r--ydb/library/yql/parser/lexer_common/hints.h2
-rw-r--r--ydb/library/yql/parser/lexer_common/ut/hints_ut.cpp2
3 files changed, 12 insertions, 10 deletions
diff --git a/ydb/library/yql/parser/lexer_common/hints.cpp b/ydb/library/yql/parser/lexer_common/hints.cpp
index 8f130beddce..5a74bbbf6a6 100644
--- a/ydb/library/yql/parser/lexer_common/hints.cpp
+++ b/ydb/library/yql/parser/lexer_common/hints.cpp
@@ -29,16 +29,17 @@ void TSQLHint::Out(IOutputStream& o) const {
namespace {
-TPosition ExtractPosition(const TParsedToken& token) {
- return TPosition(token.LinePos + 1, token.Line);
-}
-
class TTokenProcessor {
public:
- explicit TTokenProcessor(TSQLHints& hints)
- : Hints(hints)
+ TTokenProcessor(const TString& queryFile, TSQLHints& hints)
+ : QueryFile(queryFile)
+ , Hints(hints)
{}
+ TPosition ExtractPosition(const TParsedToken& token) const {
+ return TPosition(token.LinePos + 1, token.Line, QueryFile);
+ }
+
void ProcessToken(TParsedToken&& token) {
if (token.Name == "EOF") {
return;
@@ -67,13 +68,14 @@ public:
private:
TMaybe<TPosition> PrevNonCommentPos;
+ const TString QueryFile;
TSQLHints& Hints;
};
}
-bool CollectSqlHints(ILexer& lexer, const TString& query, const TString& queryName, TSQLHints& hints, NYql::TIssues& issues, size_t maxErrors) {
- TTokenProcessor tp(hints);
+bool CollectSqlHints(ILexer& lexer, const TString& query, const TString& queryName, const TString& queryFile, TSQLHints& hints, NYql::TIssues& issues, size_t maxErrors) {
+ TTokenProcessor tp(queryFile, hints);
return lexer.Tokenize(query, queryName, [&tp](TParsedToken&& token) { tp.ProcessToken(std::move(token)); }, issues, maxErrors);
}
diff --git a/ydb/library/yql/parser/lexer_common/hints.h b/ydb/library/yql/parser/lexer_common/hints.h
index f0913e847e3..b42a2a6dd02 100644
--- a/ydb/library/yql/parser/lexer_common/hints.h
+++ b/ydb/library/yql/parser/lexer_common/hints.h
@@ -28,7 +28,7 @@ using TSQLHints = TMap<NYql::TPosition, TVector<TSQLHint>>;
// For example: SELECT /*+ Name(Value) */ -- Name2(Value2)
// in this case TSQLHints will consist of single entry with position of SELECT token
-bool CollectSqlHints(ILexer& lexer, const TString& query, const TString& queryName, TSQLHints& hints, NYql::TIssues& issues, size_t maxErrors);
+bool CollectSqlHints(ILexer& lexer, const TString& query, const TString& queryName, const TString& queryFile, TSQLHints& hints, NYql::TIssues& issues, size_t maxErrors);
}
diff --git a/ydb/library/yql/parser/lexer_common/ut/hints_ut.cpp b/ydb/library/yql/parser/lexer_common/ut/hints_ut.cpp
index 155869582d2..2567bc1c7d3 100644
--- a/ydb/library/yql/parser/lexer_common/ut/hints_ut.cpp
+++ b/ydb/library/yql/parser/lexer_common/ut/hints_ut.cpp
@@ -15,7 +15,7 @@ TSQLHints CollectHints(const TString& query) {
TSQLHints result;
NYql::TIssues issues;
size_t maxErrors = 100;
- UNIT_ASSERT(CollectSqlHints(*lexer, query, "", result, issues, maxErrors));
+ UNIT_ASSERT(CollectSqlHints(*lexer, query, "", "", result, issues, maxErrors));
UNIT_ASSERT(issues.Empty());
return result;
}