summaryrefslogtreecommitdiffstats
path: root/yql/essentials/sql/v1/sql_translation.cpp
diff options
context:
space:
mode:
authorgrigoriypisar <[email protected]>2025-09-04 12:04:05 +0300
committergrigoriypisar <[email protected]>2025-09-04 12:26:12 +0300
commitc029afad9f05609faea295c8ba76996f9a07fbef (patch)
tree74bd8c20f7089ff6aa5a8a9535d58bd16c422450 /yql/essentials/sql/v1/sql_translation.cpp
parent89ffb9c4ebdd8a2eedfbf7a2f4778dfb6ef50161 (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.cpp42
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(