diff options
author | aneporada <aneporada@yandex-team.ru> | 2022-04-18 00:01:42 +0300 |
---|---|---|
committer | aneporada <aneporada@yandex-team.ru> | 2022-04-18 00:01:42 +0300 |
commit | d814f23525220a4b4dd9eced8519fd598fd0e3bc (patch) | |
tree | 08ae04fe64e143c72747d443132dd49fd1ff9a81 | |
parent | ae64ee242c379632d1a0d81a4a5fee66aaba7d2d (diff) | |
download | ydb-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.cpp | 18 | ||||
-rw-r--r-- | ydb/library/yql/parser/lexer_common/hints.h | 2 | ||||
-rw-r--r-- | ydb/library/yql/parser/lexer_common/ut/hints_ut.cpp | 2 |
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; } |