diff options
| author | grigoriypisar <[email protected]> | 2025-09-04 12:04:05 +0300 |
|---|---|---|
| committer | grigoriypisar <[email protected]> | 2025-09-04 12:26:12 +0300 |
| commit | c029afad9f05609faea295c8ba76996f9a07fbef (patch) | |
| tree | 74bd8c20f7089ff6aa5a8a9535d58bd16c422450 /yql/essentials/sql/v1/sql_translation.cpp | |
| parent | 89ffb9c4ebdd8a2eedfbf7a2f4778dfb6ef50161 (diff) | |
fixed parsing for BEGIN / END in streaming queries
Добавлена возможность отключения отложенного применения '\\n' и '\\r' в TextWalker, чтобы позиции генерируемые им были в точности равны позициям токенов от antlr4 лексера:
<https://nda.ya.ru/t/hmKq_iWN7JVCGe>
commit_hash:15049d23b9ac1232b9e1d281d86d6b51d5822f85
Diffstat (limited to 'yql/essentials/sql/v1/sql_translation.cpp')
| -rw-r--r-- | yql/essentials/sql/v1/sql_translation.cpp | 42 |
1 files changed, 21 insertions, 21 deletions
diff --git a/yql/essentials/sql/v1/sql_translation.cpp b/yql/essentials/sql/v1/sql_translation.cpp index e3ff7464795..635146f77cf 100644 --- a/yql/essentials/sql/v1/sql_translation.cpp +++ b/yql/essentials/sql/v1/sql_translation.cpp @@ -5270,27 +5270,6 @@ bool TSqlTranslation::ParseViewQuery( namespace { -static std::string::size_type GetQueryPosition(const TString& query, const NSQLv1Generated::TToken& token, bool antlr4) { - if (1 == token.GetLine() && 0 == token.GetColumn()) { - return 0; - } - - TPosition pos = {0, 1}; - TTextWalker walker(pos, antlr4); - - std::string::size_type position = 0; - for (char c : query) { - walker.Advance(c); - ++position; - - if (pos.Row == token.GetLine() && pos.Column == token.GetColumn()) { - return position; - } - } - - return std::string::npos; -} - static TString GetLambdaText(TTranslation& ctx, TContext& Ctx, const TRule_lambda_or_parameter& lambdaOrParameter) { static const TString statementSeparator = ";\n"; @@ -5343,6 +5322,27 @@ static TString GetLambdaText(TTranslation& ctx, TContext& Ctx, const TRule_lambd } } +} // anonymous namespace + +std::string::size_type GetQueryPosition(const TString& query, const NSQLv1Generated::TToken& token, bool antlr4) { + if (1 == token.GetLine() && 0 == token.GetColumn()) { + return 0; + } + + TPosition pos = {0, 1}; + TTextWalker walker(pos, antlr4); + + std::string::size_type position = 0; + for (char c : query) { + walker.Advance(c); + ++position; + + if (pos.Row == token.GetLine() && pos.Column == token.GetColumn()) { + return position; + } + } + + return std::string::npos; } bool TSqlTranslation::ParseTransferLambda( |
