summaryrefslogtreecommitdiffstats
path: root/yql/essentials/parser
diff options
context:
space:
mode:
authorvvvv <[email protected]>2025-10-08 14:35:50 +0300
committervvvv <[email protected]>2025-10-08 15:09:49 +0300
commit343f6fb150d2e6f4316b082cee900527d4b33a25 (patch)
tree4572f02dd97f8c103af2996f8fdffab253507311 /yql/essentials/parser
parentaa9cbcada343c3aa0a322d5ff3935e98f28d7a76 (diff)
YQL-20086 parser
commit_hash:dd605e5cde39ff07fdadf62f0c2364a8b12c8405
Diffstat (limited to 'yql/essentials/parser')
-rw-r--r--yql/essentials/parser/common/antlr4/error_listener.cpp126
-rw-r--r--yql/essentials/parser/common/antlr4/error_listener.h44
-rw-r--r--yql/essentials/parser/common/antlr4/lexer_tokens_collector.h88
-rw-r--r--yql/essentials/parser/common/antlr4/ya.make2
-rw-r--r--yql/essentials/parser/common/error.cpp60
-rw-r--r--yql/essentials/parser/common/error.h40
-rw-r--r--yql/essentials/parser/common/issue.h48
-rw-r--r--yql/essentials/parser/common/ya.make2
-rw-r--r--yql/essentials/parser/lexer_common/hints.cpp10
-rw-r--r--yql/essentials/parser/lexer_common/hints.h6
-rw-r--r--yql/essentials/parser/lexer_common/lexer.cpp12
-rw-r--r--yql/essentials/parser/lexer_common/lexer.h7
-rw-r--r--yql/essentials/parser/lexer_common/parse_hints_impl.cpp4
-rw-r--r--yql/essentials/parser/lexer_common/parse_hints_impl.h4
-rw-r--r--yql/essentials/parser/lexer_common/tokens.cpp2
-rw-r--r--yql/essentials/parser/lexer_common/ut/hints_ut.cpp26
-rw-r--r--yql/essentials/parser/lexer_common/ut/parse_hints_ut.cpp44
-rw-r--r--yql/essentials/parser/lexer_common/ut/ya.make2
-rw-r--r--yql/essentials/parser/lexer_common/ya.make2
-rw-r--r--yql/essentials/parser/pg_catalog/catalog.cpp392
-rw-r--r--yql/essentials/parser/pg_catalog/catalog.h49
-rwxr-xr-xyql/essentials/parser/pg_catalog/generate_system_columns.py41
-rw-r--r--yql/essentials/parser/pg_catalog/ut/catalog_consts_ut.cpp85
-rw-r--r--yql/essentials/parser/pg_catalog/ut/catalog_ut.cpp338
-rw-r--r--yql/essentials/parser/pg_catalog/ut/ya.make2
-rw-r--r--yql/essentials/parser/pg_catalog/ya.make2
-rw-r--r--yql/essentials/parser/proto_ast/antlr3/proto_ast_antlr3.cpp2
-rw-r--r--yql/essentials/parser/proto_ast/antlr3/proto_ast_antlr3.h136
-rw-r--r--yql/essentials/parser/proto_ast/antlr4/proto_ast_antlr4.h133
-rw-r--r--yql/essentials/parser/proto_ast/antlr4/ya.make2
-rw-r--r--yql/essentials/parser/proto_ast/collect_issues/collect_issues.h2
-rw-r--r--yql/essentials/parser/proto_ast/collect_issues/ya.make2
-rw-r--r--yql/essentials/parser/proto_ast/common.h62
-rw-r--r--yql/essentials/parser/proto_ast/gen/multiproto.py240
-rw-r--r--yql/essentials/parser/proto_ast/ya.make4
35 files changed, 1034 insertions, 987 deletions
diff --git a/yql/essentials/parser/common/antlr4/error_listener.cpp b/yql/essentials/parser/common/antlr4/error_listener.cpp
index 73c14175314..aee07e75bbd 100644
--- a/yql/essentials/parser/common/antlr4/error_listener.cpp
+++ b/yql/essentials/parser/common/antlr4/error_listener.cpp
@@ -8,78 +8,78 @@
namespace antlr4 {
- TVector<size_t> ToVector(const antlrcpp::BitSet& ambigAlts) {
- TVector<size_t> result;
- for (size_t i = 0; i < ambigAlts.size(); ++i) {
- if (ambigAlts.test(i)) {
- result.push_back(i);
- }
+TVector<size_t> ToVector(const antlrcpp::BitSet& ambigAlts) {
+ TVector<size_t> result;
+ for (size_t i = 0; i < ambigAlts.size(); ++i) {
+ if (ambigAlts.test(i)) {
+ result.push_back(i);
}
- return result;
}
-
- YqlErrorListener::YqlErrorListener(NAST::IErrorCollector* errors, bool* error, bool isAmbiguityError)
- : Errors_(errors)
- , Error_(error)
- , IsAmbiguityError_(isAmbiguityError)
- {
+ return result;
+}
+
+YqlErrorListener::YqlErrorListener(NAST::IErrorCollector* errors, bool* error, bool isAmbiguityError)
+ : Errors_(errors)
+ , Error_(error)
+ , IsAmbiguityError_(isAmbiguityError)
+{
+}
+
+void YqlErrorListener::syntaxError(
+ Recognizer* /*recognizer*/, Token* /*offendingSymbol*/,
+ size_t line, size_t charPositionInLine,
+ const std::string& msg, std::exception_ptr /*e*/) {
+ *Error_ = true;
+ Errors_->Error(line, charPositionInLine, msg.c_str());
+}
+
+void YqlErrorListener::reportAmbiguity(
+ Parser* recognizer,
+ const dfa::DFA& dfa,
+ size_t startIndex,
+ size_t stopIndex,
+ bool exact,
+ const antlrcpp::BitSet& ambigAlts,
+ atn::ATNConfigSet* configs)
+{
+ Y_UNUSED(configs);
+
+ size_t ruleIndex = dfa.atnStartState->ruleIndex;
+ std::string_view ruleName = recognizer->getRuleNames()[ruleIndex];
+
+ if ( // FIXME(YQL-20410): It is a known ambiguity, remove it when
+ // an expression (x NOT NULL) is a syntax error.
+ ruleName == "xor_subexpr" ||
+ // Known ambiguity, on ANTLR3 syntactic predicates were used.
+ ruleName == "neq_subexpr") {
+ return;
}
- void YqlErrorListener::syntaxError(
- Recognizer* /*recognizer*/, Token* /*offendingSymbol*/,
- size_t line, size_t charPositionInLine,
- const std::string& msg, std::exception_ptr /*e*/) {
- *Error_ = true;
- Errors_->Error(line, charPositionInLine, msg.c_str());
- }
-
- void YqlErrorListener::reportAmbiguity(
- Parser* recognizer,
- const dfa::DFA& dfa,
- size_t startIndex,
- size_t stopIndex,
- bool exact,
- const antlrcpp::BitSet& ambigAlts,
- atn::ATNConfigSet* configs)
- {
- Y_UNUSED(configs);
-
- size_t ruleIndex = dfa.atnStartState->ruleIndex;
- std::string_view ruleName = recognizer->getRuleNames()[ruleIndex];
-
- if (// FIXME(YQL-20410): It is a known ambiguity, remove it when
- // an expression (x NOT NULL) is a syntax error.
- ruleName == "xor_subexpr" ||
- // Known ambiguity, on ANTLR3 syntactic predicates were used.
- ruleName == "neq_subexpr") {
- return;
- }
-
- TokenStream* tokens = recognizer->getTokenStream();
- Token* start = tokens->get(startIndex);
- Token* stop = tokens->get(stopIndex);
-
- TString alternatives = JoinSeq(", ", ToVector(ambigAlts));
+ TokenStream* tokens = recognizer->getTokenStream();
+ Token* start = tokens->get(startIndex);
+ Token* stop = tokens->get(stopIndex);
- NYql::TPosition startPos(start->getCharPositionInLine(), start->getLine(), "unknown");
- NYql::TPosition stopPos(stop->getCharPositionInLine(), stop->getLine(), "unknown");
+ TString alternatives = JoinSeq(", ", ToVector(ambigAlts));
- TString message = TStringBuilder()
- << "An" << (exact ? " exactly " : " ")
- << "ambiguous decision " << dfa.decision
- << " at rule '" << ruleName << "'"
- << " with conflicted alternatives {" << alternatives << "}";
+ NYql::TPosition startPos(start->getCharPositionInLine(), start->getLine(), "unknown");
+ NYql::TPosition stopPos(stop->getCharPositionInLine(), stop->getLine(), "unknown");
- NYql::TIssue issue(std::move(startPos), std::move(stopPos), std::move(message));
+ TString message = TStringBuilder()
+ << "An" << (exact ? " exactly " : " ")
+ << "ambiguous decision " << dfa.decision
+ << " at rule '" << ruleName << "'"
+ << " with conflicted alternatives {" << alternatives << "}";
- if (IsAmbiguityError_) {
- *Error_ = true;
- issue.SetCode(NYql::UNEXPECTED_ERROR, NYql::TSeverityIds::S_FATAL);
- } else {
- issue.SetCode(NYql::TIssuesIds::YQL_SYNTAX_AMBIGUITY, NYql::TSeverityIds::S_WARNING);
- }
+ NYql::TIssue issue(std::move(startPos), std::move(stopPos), std::move(message));
- Errors_->Report(std::move(issue));
+ if (IsAmbiguityError_) {
+ *Error_ = true;
+ issue.SetCode(NYql::UNEXPECTED_ERROR, NYql::TSeverityIds::S_FATAL);
+ } else {
+ issue.SetCode(NYql::TIssuesIds::YQL_SYNTAX_AMBIGUITY, NYql::TSeverityIds::S_WARNING);
}
+ Errors_->Report(std::move(issue));
+}
+
} // namespace antlr4
diff --git a/yql/essentials/parser/common/antlr4/error_listener.h b/yql/essentials/parser/common/antlr4/error_listener.h
index 3d8f6af8a6b..a5cb3c9ff4e 100644
--- a/yql/essentials/parser/common/antlr4/error_listener.h
+++ b/yql/essentials/parser/common/antlr4/error_listener.h
@@ -6,27 +6,27 @@
namespace antlr4 {
- class ANTLR4CPP_PUBLIC YqlErrorListener: public BaseErrorListener {
- NAST::IErrorCollector* Errors_;
- bool* Error_;
- const bool IsAmbiguityError_;
-
- public:
- YqlErrorListener(NAST::IErrorCollector* errors, bool* error, bool isAmbiguityError = false);
-
- virtual void syntaxError(
- Recognizer* recognizer, Token* offendingSymbol,
- size_t line, size_t charPositionInLine,
- const std::string& msg, std::exception_ptr e) override;
-
- void reportAmbiguity(
- Parser* recognizer,
- const dfa::DFA& dfa,
- size_t startIndex,
- size_t stopIndex,
- bool exact,
- const antlrcpp::BitSet& ambigAlts,
- atn::ATNConfigSet* configs) override;
- };
+class ANTLR4CPP_PUBLIC YqlErrorListener: public BaseErrorListener {
+ NAST::IErrorCollector* Errors_;
+ bool* Error_;
+ const bool IsAmbiguityError_;
+
+public:
+ YqlErrorListener(NAST::IErrorCollector* errors, bool* error, bool isAmbiguityError = false);
+
+ virtual void syntaxError(
+ Recognizer* recognizer, Token* offendingSymbol,
+ size_t line, size_t charPositionInLine,
+ const std::string& msg, std::exception_ptr e) override;
+
+ void reportAmbiguity(
+ Parser* recognizer,
+ const dfa::DFA& dfa,
+ size_t startIndex,
+ size_t stopIndex,
+ bool exact,
+ const antlrcpp::BitSet& ambigAlts,
+ atn::ATNConfigSet* configs) override;
+};
} // namespace antlr4
diff --git a/yql/essentials/parser/common/antlr4/lexer_tokens_collector.h b/yql/essentials/parser/common/antlr4/lexer_tokens_collector.h
index 2e5ef52f48e..672637d72fe 100644
--- a/yql/essentials/parser/common/antlr4/lexer_tokens_collector.h
+++ b/yql/essentials/parser/common/antlr4/lexer_tokens_collector.h
@@ -9,55 +9,55 @@
namespace NAST {
- template <typename TLexer>
- class TLexerTokensCollector4 {
- public:
- TLexerTokensCollector4(TStringBuf data, const TString& queryName = "query")
- : QueryName(queryName)
- , InputStream(std::string(data))
- , Lexer(&InputStream)
- {
- }
-
- void CollectTokens(NAST::IErrorCollector& errors, const NSQLTranslation::ILexer::TTokenCallback& onNextToken) {
- try {
- bool error = false;
- typename antlr4::YqlErrorListener listener(&errors, &error);
- Lexer.removeErrorListeners();
- Lexer.addErrorListener(&listener);
-
- for (;;) {
- auto token = Lexer.nextToken();
- auto type = token->getType();
- const bool isEOF = type == TLexer::EOF;
- NSQLTranslation::TParsedToken last;
- last.Name = GetTokenName(type);
- last.Content = token->getText();
- last.Line = token->getLine();
- last.LinePos = token->getCharPositionInLine();
- onNextToken(std::move(last));
- if (isEOF) {
- break;
- }
+template <typename TLexer>
+class TLexerTokensCollector4 {
+public:
+ TLexerTokensCollector4(TStringBuf data, const TString& queryName = "query")
+ : QueryName(queryName)
+ , InputStream(std::string(data))
+ , Lexer(&InputStream)
+ {
+ }
+
+ void CollectTokens(NAST::IErrorCollector& errors, const NSQLTranslation::ILexer::TTokenCallback& onNextToken) {
+ try {
+ bool error = false;
+ typename antlr4::YqlErrorListener listener(&errors, &error);
+ Lexer.removeErrorListeners();
+ Lexer.addErrorListener(&listener);
+
+ for (;;) {
+ auto token = Lexer.nextToken();
+ auto type = token->getType();
+ const bool isEOF = type == TLexer::EOF;
+ NSQLTranslation::TParsedToken last;
+ last.Name = GetTokenName(type);
+ last.Content = token->getText();
+ last.Line = token->getLine();
+ last.LinePos = token->getCharPositionInLine();
+ onNextToken(std::move(last));
+ if (isEOF) {
+ break;
}
- } catch (const NAST::TTooManyErrors&) {
- } catch (...) {
- errors.Error(0, 0, CurrentExceptionMessage());
}
+ } catch (const NAST::TTooManyErrors&) {
+ } catch (...) {
+ errors.Error(0, 0, CurrentExceptionMessage());
}
+ }
- private:
- TString GetTokenName(size_t type) const {
- auto res = Lexer.getVocabulary().getSymbolicName(type);
- if (res != "") {
- return TString(res);
- }
- return TString(NAST::INVALID_TOKEN_NAME);
+private:
+ TString GetTokenName(size_t type) const {
+ auto res = Lexer.getVocabulary().getSymbolicName(type);
+ if (res != "") {
+ return TString(res);
}
+ return TString(NAST::INVALID_TOKEN_NAME);
+ }
- TString QueryName;
- antlr4::ANTLRInputStream InputStream;
- TLexer Lexer;
- };
+ TString QueryName;
+ antlr4::ANTLRInputStream InputStream;
+ TLexer Lexer;
+};
} // namespace NAST
diff --git a/yql/essentials/parser/common/antlr4/ya.make b/yql/essentials/parser/common/antlr4/ya.make
index d74107fe119..5468514d977 100644
--- a/yql/essentials/parser/common/antlr4/ya.make
+++ b/yql/essentials/parser/common/antlr4/ya.make
@@ -1,5 +1,7 @@
LIBRARY()
+ENABLE(YQL_STYLE_CPP)
+
PEERDIR(
contrib/libs/antlr4_cpp_runtime
yql/essentials/parser/common
diff --git a/yql/essentials/parser/common/error.cpp b/yql/essentials/parser/common/error.cpp
index b6b087631c7..dcddf57d7ea 100644
--- a/yql/essentials/parser/common/error.cpp
+++ b/yql/essentials/parser/common/error.cpp
@@ -2,41 +2,41 @@
namespace NAST {
- IErrorCollector::IErrorCollector(size_t maxErrors)
- : MaxErrors_(maxErrors)
- , NumErrors_(0)
- {
- Y_ENSURE(0 < MaxErrors_);
- }
-
- IErrorCollector::~IErrorCollector()
- {
- }
-
- void IErrorCollector::Error(ui32 line, ui32 col, const TString& message) {
- GuardTooManyErrors();
- AddError(line, col, message);
+IErrorCollector::IErrorCollector(size_t maxErrors)
+ : MaxErrors_(maxErrors)
+ , NumErrors_(0)
+{
+ Y_ENSURE(0 < MaxErrors_);
+}
+
+IErrorCollector::~IErrorCollector()
+{
+}
+
+void IErrorCollector::Error(ui32 line, ui32 col, const TString& message) {
+ GuardTooManyErrors();
+ AddError(line, col, message);
+ ++NumErrors_;
+}
+
+void IErrorCollector::Report(NYql::TIssue&& issue) {
+ GuardTooManyErrors();
+ bool isError = issue.GetSeverity() >= NYql::TSeverityIds::S_WARNING;
+ AddIssue(std::forward<NYql::TIssue>(issue));
+ if (isError) {
++NumErrors_;
}
+}
- void IErrorCollector::Report(NYql::TIssue&& issue) {
- GuardTooManyErrors();
- bool isError = issue.GetSeverity() >= NYql::TSeverityIds::S_WARNING;
- AddIssue(std::forward<NYql::TIssue>(issue));
- if (isError) {
- ++NumErrors_;
- }
+void IErrorCollector::GuardTooManyErrors() {
+ if (NumErrors_ + 1 == MaxErrors_) {
+ AddError(0, 0, "Too many errors");
+ ++NumErrors_;
}
- void IErrorCollector::GuardTooManyErrors() {
- if (NumErrors_ + 1 == MaxErrors_) {
- AddError(0, 0, "Too many errors");
- ++NumErrors_;
- }
-
- if (NumErrors_ >= MaxErrors_) {
- ythrow TTooManyErrors() << "Too many errors";
- }
+ if (NumErrors_ >= MaxErrors_) {
+ ythrow TTooManyErrors() << "Too many errors";
}
+}
} // namespace NAST
diff --git a/yql/essentials/parser/common/error.h b/yql/essentials/parser/common/error.h
index 81a920a2809..0214fe18790 100644
--- a/yql/essentials/parser/common/error.h
+++ b/yql/essentials/parser/common/error.h
@@ -6,33 +6,33 @@
#include <util/generic/fwd.h>
namespace NAST {
- static const char* INVALID_TOKEN_NAME = "nothing";
- static const char* ABSENCE = " absence";
+static const char* INVALID_TOKEN_NAME = "nothing";
+static const char* ABSENCE = " absence";
- class TTooManyErrors: public yexception {
- };
+class TTooManyErrors: public yexception {
+};
- class IErrorCollector {
- public:
- explicit IErrorCollector(size_t maxErrors);
- virtual ~IErrorCollector();
+class IErrorCollector {
+public:
+ explicit IErrorCollector(size_t maxErrors);
+ virtual ~IErrorCollector();
- // throws TTooManyErrors
- void Error(ui32 line, ui32 col, const TString& message);
+ // throws TTooManyErrors
+ void Error(ui32 line, ui32 col, const TString& message);
- // throws TTooManyErrors
- void Report(NYql::TIssue&& issue);
+ // throws TTooManyErrors
+ void Report(NYql::TIssue&& issue);
- private:
- void GuardTooManyErrors();
+private:
+ void GuardTooManyErrors();
- virtual void AddError(ui32 line, ui32 col, const TString& message) = 0;
+ virtual void AddError(ui32 line, ui32 col, const TString& message) = 0;
- virtual void AddIssue(NYql::TIssue&& issue) = 0;
+ virtual void AddIssue(NYql::TIssue&& issue) = 0;
- protected:
- const size_t MaxErrors_;
- size_t NumErrors_;
- };
+protected:
+ const size_t MaxErrors_;
+ size_t NumErrors_;
+};
} // namespace NAST
diff --git a/yql/essentials/parser/common/issue.h b/yql/essentials/parser/common/issue.h
index 3a17252cbdb..2dfa340cdf3 100644
--- a/yql/essentials/parser/common/issue.h
+++ b/yql/essentials/parser/common/issue.h
@@ -8,29 +8,29 @@
namespace NSQLTranslation {
- class TErrorCollectorOverIssues: public NAST::IErrorCollector {
- public:
- TErrorCollectorOverIssues(NYql::TIssues& issues, size_t maxErrors, const TString& file)
- : IErrorCollector(maxErrors)
- , Issues_(issues)
- , File_(file)
- {
- }
-
- private:
- void AddError(ui32 line, ui32 col, const TString& message) override {
- Issues_.AddIssue(NYql::TPosition(col, line, File_), message);
- }
-
- void AddIssue(NYql::TIssue&& issue) override {
- issue.Position.File = File_;
- issue.EndPosition.File = File_;
- Issues_.AddIssue(std::forward<NYql::TIssue>(issue));
- }
-
- private:
- NYql::TIssues& Issues_;
- const TString File_;
- };
+class TErrorCollectorOverIssues: public NAST::IErrorCollector {
+public:
+ TErrorCollectorOverIssues(NYql::TIssues& issues, size_t maxErrors, const TString& file)
+ : IErrorCollector(maxErrors)
+ , Issues_(issues)
+ , File_(file)
+ {
+ }
+
+private:
+ void AddError(ui32 line, ui32 col, const TString& message) override {
+ Issues_.AddIssue(NYql::TPosition(col, line, File_), message);
+ }
+
+ void AddIssue(NYql::TIssue&& issue) override {
+ issue.Position.File = File_;
+ issue.EndPosition.File = File_;
+ Issues_.AddIssue(std::forward<NYql::TIssue>(issue));
+ }
+
+private:
+ NYql::TIssues& Issues_;
+ const TString File_;
+};
} // namespace NSQLTranslation
diff --git a/yql/essentials/parser/common/ya.make b/yql/essentials/parser/common/ya.make
index 290ae7be8b5..fe825d46d94 100644
--- a/yql/essentials/parser/common/ya.make
+++ b/yql/essentials/parser/common/ya.make
@@ -1,5 +1,7 @@
LIBRARY()
+ENABLE(YQL_STYLE_CPP)
+
PEERDIR(
yql/essentials/public/issue
yql/essentials/core/issue
diff --git a/yql/essentials/parser/lexer_common/hints.cpp b/yql/essentials/parser/lexer_common/hints.cpp
index 275ca165e92..ddc071d30fa 100644
--- a/yql/essentials/parser/lexer_common/hints.cpp
+++ b/yql/essentials/parser/lexer_common/hints.cpp
@@ -35,7 +35,8 @@ public:
: QueryFile_(queryFile)
, Hints_(hints)
, Utf8Aware_(utf8Aware)
- {}
+ {
+ }
TPosition ExtractPosition(const TParsedToken& token) const {
return TPosition(token.LinePos + 1, token.Line, QueryFile_);
@@ -74,13 +75,12 @@ private:
const bool Utf8Aware_;
};
-}
+} // namespace
bool CollectSqlHints(ILexer& lexer, const TString& query, const TString& queryName,
- const TString& queryFile, TSQLHints& hints, NYql::TIssues& issues, size_t maxErrors, bool utf8Aware) {
+ const TString& queryFile, TSQLHints& hints, NYql::TIssues& issues, size_t maxErrors, bool utf8Aware) {
TTokenProcessor tp(queryFile, hints, utf8Aware);
return lexer.Tokenize(query, queryName, [&tp](TParsedToken&& token) { tp.ProcessToken(std::move(token)); }, issues, maxErrors);
}
-
-}
+} // namespace NSQLTranslation
diff --git a/yql/essentials/parser/lexer_common/hints.h b/yql/essentials/parser/lexer_common/hints.h
index a59b43aac2e..1366e05d951 100644
--- a/yql/essentials/parser/lexer_common/hints.h
+++ b/yql/essentials/parser/lexer_common/hints.h
@@ -30,12 +30,10 @@ using TSQLHints = TMap<NYql::TPosition, TVector<TSQLHint>>;
// in this case TSQLHints will consist of single entry with position of SELECT token
bool CollectSqlHints(ILexer& lexer, const TString& query, const TString& queryName,
- const TString& queryFile, TSQLHints& hints, NYql::TIssues& issues, size_t maxErrors, bool utf8Aware);
+ const TString& queryFile, TSQLHints& hints, NYql::TIssues& issues, size_t maxErrors, bool utf8Aware);
-}
+} // namespace NSQLTranslation
Y_DECLARE_OUT_SPEC(inline, NSQLTranslation::TSQLHint, stream, value) {
value.Out(stream);
}
-
-
diff --git a/yql/essentials/parser/lexer_common/lexer.cpp b/yql/essentials/parser/lexer_common/lexer.cpp
index c93dd35bd48..7c7dd5bda13 100644
--- a/yql/essentials/parser/lexer_common/lexer.cpp
+++ b/yql/essentials/parser/lexer_common/lexer.cpp
@@ -7,11 +7,12 @@ namespace NSQLTranslation {
namespace {
-class TDummyLexer : public ILexer {
+class TDummyLexer: public ILexer {
public:
TDummyLexer(const TString& name)
: Name_(name)
- {}
+ {
+ }
bool Tokenize(const TString& query, const TString& queryName, const TTokenCallback& onNextToken, NYql::TIssues& issues, size_t maxErrors) final {
Y_UNUSED(query);
@@ -30,7 +31,8 @@ class TDummyFactory: public ILexerFactory {
public:
TDummyFactory(const TString& name)
: Name_(name)
- {}
+ {
+ }
ILexer::TPtr MakeLexer() const final {
return MakeHolder<TDummyLexer>(Name_);
@@ -40,10 +42,10 @@ private:
const TString Name_;
};
-}
+} // namespace
TLexerFactoryPtr MakeDummyLexerFactory(const TString& name) {
return MakeIntrusive<TDummyFactory>(name);
}
-}
+} // namespace NSQLTranslation
diff --git a/yql/essentials/parser/lexer_common/lexer.h b/yql/essentials/parser/lexer_common/lexer.h
index 4de7eedb836..b56e5c1d424 100644
--- a/yql/essentials/parser/lexer_common/lexer.h
+++ b/yql/essentials/parser/lexer_common/lexer.h
@@ -10,7 +10,7 @@ namespace NYql {
class TIssues;
-}
+} // namespace NYql
namespace NSQLTranslation {
@@ -39,7 +39,7 @@ using TParsedTokenList = TVector<TParsedToken>;
IOutputStream& OutputTokens(IOutputStream& out, TParsedTokenList::const_iterator begin, TParsedTokenList::const_iterator end);
bool Tokenize(ILexer& lexer, const TString& query, const TString& queryName, TParsedTokenList& tokens, NYql::TIssues& issues, size_t maxErrors);
-class ILexerFactory : public TThrRefBase {
+class ILexerFactory: public TThrRefBase {
public:
virtual ~ILexerFactory() = default;
@@ -50,5 +50,4 @@ using TLexerFactoryPtr = TIntrusivePtr<ILexerFactory>;
TLexerFactoryPtr MakeDummyLexerFactory(const TString& name);
-}
-
+} // namespace NSQLTranslation
diff --git a/yql/essentials/parser/lexer_common/parse_hints_impl.cpp b/yql/essentials/parser/lexer_common/parse_hints_impl.cpp
index 10a0257e5df..835d69a0ab2 100644
--- a/yql/essentials/parser/lexer_common/parse_hints_impl.cpp
+++ b/yql/essentials/parser/lexer_common/parse_hints_impl.cpp
@@ -100,6 +100,6 @@ TVector<TSQLHint> ParseSqlHints(NYql::TPosition commentPos, const TStringBuf& co
return result;
}
-}
+} // namespace NDetail
-}
+} // namespace NSQLTranslation
diff --git a/yql/essentials/parser/lexer_common/parse_hints_impl.h b/yql/essentials/parser/lexer_common/parse_hints_impl.h
index fdc8536453d..efe6ab4479c 100644
--- a/yql/essentials/parser/lexer_common/parse_hints_impl.h
+++ b/yql/essentials/parser/lexer_common/parse_hints_impl.h
@@ -8,6 +8,6 @@ namespace NDetail {
TVector<TSQLHint> ParseSqlHints(NYql::TPosition commentPos, const TStringBuf& comment, bool utf8Aware);
-}
+} // namespace NDetail
-}
+} // namespace NSQLTranslation
diff --git a/yql/essentials/parser/lexer_common/tokens.cpp b/yql/essentials/parser/lexer_common/tokens.cpp
index 014a815e435..29b41153ddb 100644
--- a/yql/essentials/parser/lexer_common/tokens.cpp
+++ b/yql/essentials/parser/lexer_common/tokens.cpp
@@ -17,4 +17,4 @@ bool Tokenize(ILexer& lexer, const TString& query, const TString& queryName, TPa
return lexer.Tokenize(query, queryName, onNextToken, issues, maxErrors);
}
-}
+} // namespace NSQLTranslation
diff --git a/yql/essentials/parser/lexer_common/ut/hints_ut.cpp b/yql/essentials/parser/lexer_common/ut/hints_ut.cpp
index 2542c1ac266..0a674451ae1 100644
--- a/yql/essentials/parser/lexer_common/ut/hints_ut.cpp
+++ b/yql/essentials/parser/lexer_common/ut/hints_ut.cpp
@@ -28,17 +28,17 @@ TString SerializeHints(const TVector<TSQLHint>& hints) {
}
Y_UNIT_TEST_SUITE(TLexerHintsTests) {
- Y_UNIT_TEST(Basic) {
- TString query = "/*+ some() */ SELECT /*+ foo(one) */ --+ bar(two)";
- auto hintsWithPos = CollectHints(query);
- UNIT_ASSERT(hintsWithPos.size() == 1);
- NYql::TPosition pos = hintsWithPos.begin()->first;
- TVector<TSQLHint> hints = hintsWithPos.begin()->second;
-
- UNIT_ASSERT_EQUAL(pos.Row, 1);
- UNIT_ASSERT_EQUAL(pos.Column, 15);
-
- TStringBuf expected = R"raw("foo":{"one"},"bar":{"two"})raw";
- UNIT_ASSERT_NO_DIFF(SerializeHints(hints), expected);
- }
+Y_UNIT_TEST(Basic) {
+ TString query = "/*+ some() */ SELECT /*+ foo(one) */ --+ bar(two)";
+ auto hintsWithPos = CollectHints(query);
+ UNIT_ASSERT(hintsWithPos.size() == 1);
+ NYql::TPosition pos = hintsWithPos.begin()->first;
+ TVector<TSQLHint> hints = hintsWithPos.begin()->second;
+
+ UNIT_ASSERT_EQUAL(pos.Row, 1);
+ UNIT_ASSERT_EQUAL(pos.Column, 15);
+
+ TStringBuf expected = R"raw("foo":{"one"},"bar":{"two"})raw";
+ UNIT_ASSERT_NO_DIFF(SerializeHints(hints), expected);
}
+} // Y_UNIT_TEST_SUITE(TLexerHintsTests)
diff --git a/yql/essentials/parser/lexer_common/ut/parse_hints_ut.cpp b/yql/essentials/parser/lexer_common/ut/parse_hints_ut.cpp
index f2f4ebca819..206a4c7ca68 100644
--- a/yql/essentials/parser/lexer_common/ut/parse_hints_ut.cpp
+++ b/yql/essentials/parser/lexer_common/ut/parse_hints_ut.cpp
@@ -13,26 +13,26 @@ void CheckParse(TStringBuf comment, TStringBuf expected) {
}
Y_UNIT_TEST_SUITE(TParseTests) {
- Y_UNIT_TEST(NoPlusInComment) {
- CheckParse("/* foo(bar) */", "");
- CheckParse("-- foo(bar)\n", "");
- }
-
- Y_UNIT_TEST(Basic) {
- TStringBuf comment = "/*+Foo( Bar 0Baz*) test\nFoo1(Bar1 Bar2)\n Foo2()*/";
- TStringBuf expected = R"raw("Foo":{"Bar","0Baz*"},"Foo1":{"Bar1","Bar2"},"Foo2":{})raw";
- CheckParse(comment, expected);
- }
-
- Y_UNIT_TEST(Quoted) {
- TStringBuf comment = "/*+Foo('Bar' Baz 'Bar'' quote')*/";
- TStringBuf expected = R"raw("Foo":{"Bar","Baz","Bar' quote"})raw";
- CheckParse(comment, expected);
- }
-
- Y_UNIT_TEST(MissingSpace) {
- TStringBuf comment = "/*+Foo()Bar(x)*/";
- TStringBuf expected = R"raw("Foo":{})raw";
- CheckParse(comment, expected);
- }
+Y_UNIT_TEST(NoPlusInComment) {
+ CheckParse("/* foo(bar) */", "");
+ CheckParse("-- foo(bar)\n", "");
}
+
+Y_UNIT_TEST(Basic) {
+ TStringBuf comment = "/*+Foo( Bar 0Baz*) test\nFoo1(Bar1 Bar2)\n Foo2()*/";
+ TStringBuf expected = R"raw("Foo":{"Bar","0Baz*"},"Foo1":{"Bar1","Bar2"},"Foo2":{})raw";
+ CheckParse(comment, expected);
+}
+
+Y_UNIT_TEST(Quoted) {
+ TStringBuf comment = "/*+Foo('Bar' Baz 'Bar'' quote')*/";
+ TStringBuf expected = R"raw("Foo":{"Bar","Baz","Bar' quote"})raw";
+ CheckParse(comment, expected);
+}
+
+Y_UNIT_TEST(MissingSpace) {
+ TStringBuf comment = "/*+Foo()Bar(x)*/";
+ TStringBuf expected = R"raw("Foo":{})raw";
+ CheckParse(comment, expected);
+}
+} // Y_UNIT_TEST_SUITE(TParseTests)
diff --git a/yql/essentials/parser/lexer_common/ut/ya.make b/yql/essentials/parser/lexer_common/ut/ya.make
index ab4a9d96ea9..591872e21f1 100644
--- a/yql/essentials/parser/lexer_common/ut/ya.make
+++ b/yql/essentials/parser/lexer_common/ut/ya.make
@@ -1,5 +1,7 @@
UNITTEST_FOR(yql/essentials/parser/lexer_common)
+ENABLE(YQL_STYLE_CPP)
+
PEERDIR(
yql/essentials/sql/v1/lexer
yql/essentials/sql/v1/lexer/antlr4
diff --git a/yql/essentials/parser/lexer_common/ya.make b/yql/essentials/parser/lexer_common/ya.make
index 14573434c47..6434e770444 100644
--- a/yql/essentials/parser/lexer_common/ya.make
+++ b/yql/essentials/parser/lexer_common/ya.make
@@ -1,5 +1,7 @@
LIBRARY()
+ENABLE(YQL_STYLE_CPP)
+
PEERDIR(
yql/essentials/public/issue
)
diff --git a/yql/essentials/parser/pg_catalog/catalog.cpp b/yql/essentials/parser/pg_catalog/catalog.cpp
index 37489bd25aa..003849e2897 100644
--- a/yql/essentials/parser/pg_catalog/catalog.cpp
+++ b/yql/essentials/parser/pg_catalog/catalog.cpp
@@ -30,21 +30,20 @@ constexpr ui32 RegOperOid = 2203;
constexpr ui32 RegOperatorOid = 2204;
constexpr ui32 RegClassOid = 2205;
constexpr ui32 RegTypeOid = 2206;
-//constexpr ui32 AnyElementOid = 2283;
-//constexpr ui32 AnyNonArrayOid = 2776;
+// constexpr ui32 AnyElementOid = 2283;
+// constexpr ui32 AnyNonArrayOid = 2776;
constexpr ui32 RegConfigOid = 3734;
constexpr ui32 RegDictionaryOid = 3769;
constexpr ui32 RegNamespaceOid = 4089;
constexpr ui32 RegRoleOid = 4096;
-//constexpr ui32 AnyCompatibleOid = 5077;
-//constexpr ui32 AnyCompatibleArrayOid = 5078;
-//constexpr ui32 AnyCompatibleNonArrayOid = 5079;
+// constexpr ui32 AnyCompatibleOid = 5077;
+// constexpr ui32 AnyCompatibleArrayOid = 5078;
+// constexpr ui32 AnyCompatibleNonArrayOid = 5079;
// See GetCCHashEqFuncs in PG sources
// https://doxygen.postgresql.org/catcache_8c.html#a8a2dc395011dba02c083bfbf6b87ce6c
-const THashSet<ui32> regClasses({
- RegProcOid, RegProcedureOid, RegOperOid, RegOperatorOid, RegClassOid, RegTypeOid,
- RegConfigOid, RegDictionaryOid, RegRoleOid, RegNamespaceOid});
+const THashSet<ui32> regClasses({RegProcOid, RegProcedureOid, RegOperOid, RegOperatorOid, RegClassOid, RegTypeOid,
+ RegConfigOid, RegDictionaryOid, RegRoleOid, RegNamespaceOid});
using TOperators = THashMap<ui32, TOperDesc>;
@@ -319,8 +318,7 @@ bool ValidateOperArgs(const TOperDesc& d, const TVector<ui32>& argTypeIds, const
ui32 expectedArgType;
if (d.Kind == EOperKind::RightUnary || (d.Kind == EOperKind::Binary && i == 0)) {
expectedArgType = d.LeftType;
- }
- else {
+ } else {
expectedArgType = d.RightType;
}
@@ -337,17 +335,18 @@ struct TLazyOperInfo {
TString Negate;
};
-class TOperatorsParser : public TParser {
+class TOperatorsParser: public TParser {
public:
TOperatorsParser(TOperators& operators, const THashMap<TString, ui32>& typeByName, const TTypes& types,
- const THashMap<TString, TVector<ui32>>& procByName, const TProcs& procs, THashMap<ui32, TLazyOperInfo>& lazyInfos)
+ const THashMap<TString, TVector<ui32>>& procByName, const TProcs& procs, THashMap<ui32, TLazyOperInfo>& lazyInfos)
: Operators_(operators)
, TypeByName_(typeByName)
, Types_(types)
, ProcByName_(procByName)
, Procs_(procs)
, LazyInfos_(lazyInfos)
- {}
+ {
+ }
void OnKey(const TString& key, const TString& value) override {
if (key == "oid") {
@@ -442,12 +441,13 @@ private:
TString LastCom_;
};
-class TProcsParser : public TParser {
+class TProcsParser: public TParser {
public:
TProcsParser(TProcs& procs, const THashMap<TString, ui32>& typeByName)
: Procs_(procs)
, TypeByName_(typeByName)
- {}
+ {
+ }
void OnKey(const TString& key, const TString& value) override {
if (key == "oid") {
@@ -610,12 +610,13 @@ struct TLazyTypeInfo {
TString SubscriptFunc;
};
-class TTypesParser : public TParser {
+class TTypesParser: public TParser {
public:
TTypesParser(TTypes& types, THashMap<ui32, TLazyTypeInfo>& lazyInfos)
: Types_(types)
, LazyInfos_(lazyInfos)
- {}
+ {
+ }
void OnKey(const TString& key, const TString& value) override {
if (key == "oid") {
@@ -651,22 +652,30 @@ public:
Y_ENSURE(value.size() == 1);
const auto typType = value[0];
- LastType_.TypType =
- (typType == 'b') ? ETypType::Base :
- (typType == 'c') ? ETypType::Composite :
- (typType == 'd') ? ETypType::Domain :
- (typType == 'e') ? ETypType::Enum :
- (typType == 'm') ? ETypType::Multirange :
- (typType == 'p') ? ETypType::Pseudo :
- (typType == 'r') ? ETypType::Range :
- ythrow yexception() << "Unknown typtype value: " << value;
+ switch (typType) {
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'm':
+ case 'p':
+ case 'r':
+ LastType_.TypType = (ETypType)typType;
+ break;
+ default:
+ throw yexception() << "Unknown typtype value: " << typType;
+ }
} else if (key == "typcollation") {
// hardcode collations for now. There are only three of 'em in .dat file
- LastType_.TypeCollation =
- (value == "default") ? DefaultCollationOid :
- (value == "C") ? C_CollationOid :
- (value == "POSIX") ? PosixCollationOid :
- ythrow yexception() << "Unknown typcollation value: " << value;
+ if (value == "default") {
+ LastType_.TypeCollation = DefaultCollationOid;
+ } else if (value == "C") {
+ LastType_.TypeCollation = C_CollationOid;
+ } else if (value == "POSIX") {
+ LastType_.TypeCollation = PosixCollationOid;
+ } else {
+ throw yexception() << "Unknown typcollation value: " << value;
+ }
} else if (key == "typelem") {
LastLazyTypeInfo_.ElementType = value; // resolve later
} else if (key == "typinput") {
@@ -689,7 +698,7 @@ public:
} else if (value == "t" || value == "FLOAT8PASSBYVAL") {
LastType_.PassByValue = true;
} else {
- ythrow yexception() << "Unknown typbyval value: " << value;
+ throw yexception() << "Unknown typbyval value: " << value;
}
} else if (key == "typispreferred") {
LastType_.IsPreferred = (value == "t");
@@ -735,16 +744,17 @@ private:
TLazyTypeInfo LastLazyTypeInfo_;
};
-class TCastsParser : public TParser {
+class TCastsParser: public TParser {
public:
TCastsParser(TCasts& casts, const THashMap<TString, ui32>& typeByName, const TTypes& types,
- const THashMap<TString, TVector<ui32>>& procByName, const TProcs& procs)
+ const THashMap<TString, TVector<ui32>>& procByName, const TProcs& procs)
: Casts_(casts)
, TypeByName_(typeByName)
, Types_(types)
, ProcByName_(procByName)
, Procs_(procs)
- {}
+ {
+ }
void OnKey(const TString& key, const TString& value) override {
if (key == "castsource") {
@@ -807,17 +817,21 @@ public:
} else if (value == "b") {
LastCast_.Method = ECastMethod::Binary;
} else {
- ythrow yexception() << "Unknown castmethod value: " << value;
+ throw yexception() << "Unknown castmethod value: " << value;
}
} else if (key == "castcontext") {
Y_ENSURE(value.size() == 1);
const auto castCtx = value[0];
- LastCast_.CoercionCode =
- (castCtx == 'i') ? ECoercionCode::Implicit :
- (castCtx == 'a') ? ECoercionCode::Assignment :
- (castCtx == 'e') ? ECoercionCode::Explicit :
- ythrow yexception() << "Unknown castcontext value: " << value;
+ switch (castCtx) {
+ case 'i':
+ case 'a':
+ case 'e':
+ LastCast_.CoercionCode = (ECoercionCode)castCtx;
+ break;
+ default:
+ throw yexception() << "Unknown castcontext value: " << castCtx;
+ }
}
}
@@ -841,16 +855,17 @@ private:
bool IsSupported_ = true;
};
-class TAggregationsParser : public TParser {
+class TAggregationsParser: public TParser {
public:
TAggregationsParser(TAggregations& aggregations, const THashMap<TString, ui32>& typeByName,
- const TTypes& types, const THashMap<TString, TVector<ui32>>& procByName, const TProcs& procs)
+ const TTypes& types, const THashMap<TString, TVector<ui32>>& procByName, const TProcs& procs)
: Aggregations_(aggregations)
, TypeByName_(typeByName)
, Types_(types)
, ProcByName_(procByName)
, Procs_(procs)
- {}
+ {
+ }
void OnKey(const TString& key, const TString& value) override {
Y_UNUSED(ProcByName_);
@@ -878,12 +893,13 @@ public:
} else if (value == "h") {
LastAggregation_.Kind = EAggKind::Hypothetical;
} else {
- ythrow yexception() << "Unknown aggkind value: " << value;
+ throw yexception() << "Unknown aggkind value: " << value;
}
} else if (key == "agginitval") {
LastAggregation_.InitValue = value;
} else if (key == "aggfinalextra") {
- LastAggregation_.FinalExtra = (value == "t");;
+ LastAggregation_.FinalExtra = (value == "t");
+ ;
} else if (key == "aggnumdirectargs") {
LastAggregation_.NumDirectArgs = FromString<ui32>(value);
}
@@ -1050,11 +1066,12 @@ private:
TString LastDeserializeFunc_;
};
-class TOpFamiliesParser : public TParser {
+class TOpFamiliesParser: public TParser {
public:
TOpFamiliesParser(TOpFamilies& opFamilies)
: OpFamilies_(opFamilies)
- {}
+ {
+ }
void OnKey(const TString& key, const TString& value) override {
if (key == "oid") {
@@ -1097,14 +1114,15 @@ private:
bool IsSupported_ = true;
};
-class TOpClassesParser : public TParser {
+class TOpClassesParser: public TParser {
public:
TOpClassesParser(TOpClasses& opClasses, const THashMap<TString, ui32>& typeByName,
- const TOpFamilies &opFamilies)
- : OpClasses_(opClasses)
- , TypeByName_(typeByName)
- , OpFamilies_(opFamilies)
- {}
+ const TOpFamilies& opFamilies)
+ : OpClasses_(opClasses)
+ , TypeByName_(typeByName)
+ , OpFamilies_(opFamilies)
+ {
+ }
void OnKey(const TString& key, const TString& value) override {
if (key == "opcmethod") {
@@ -1135,24 +1153,24 @@ public:
}
}
-void OnFinish() override {
- // Only default opclasses are used so far
- if (IsSupported_ && IsDefault_) {
- Y_ENSURE(!LastOpClass_.Name.empty());
+ void OnFinish() override {
+ // Only default opclasses are used so far
+ if (IsSupported_ && IsDefault_) {
+ Y_ENSURE(!LastOpClass_.Name.empty());
- const auto key = std::make_pair(LastOpClass_.Method, LastOpClass_.TypeId);
+ const auto key = std::make_pair(LastOpClass_.Method, LastOpClass_.TypeId);
- if (OpClasses_.contains(key)) {
- throw yexception() << "Duplicate opclass: (" << (key.first == EOpClassMethod::Btree ? "btree" : "hash")
- << ", " << key.second << ")";
+ if (OpClasses_.contains(key)) {
+ throw yexception() << "Duplicate opclass: (" << (key.first == EOpClassMethod::Btree ? "btree" : "hash")
+ << ", " << key.second << ")";
+ }
+ OpClasses_[key] = LastOpClass_;
}
- OpClasses_[key] = LastOpClass_;
- }
- IsSupported_ = true;
- IsDefault_ = true;
- LastOpClass_ = TOpClassDesc();
-}
+ IsSupported_ = true;
+ IsDefault_ = true;
+ LastOpClass_ = TOpClassDesc();
+ }
private:
TOpClasses& OpClasses_;
@@ -1165,18 +1183,19 @@ private:
bool IsDefault_ = true;
};
-class TAmOpsParser : public TParser {
+class TAmOpsParser: public TParser {
public:
TAmOpsParser(TAmOps& amOps, const THashMap<TString, ui32>& typeByName, const TTypes& types,
- const THashMap<TString, TVector<ui32>>& operatorsByName, const TOperators& operators,
- const TOpFamilies &opFamilies)
+ const THashMap<TString, TVector<ui32>>& operatorsByName, const TOperators& operators,
+ const TOpFamilies& opFamilies)
: AmOps_(amOps)
, TypeByName_(typeByName)
, Types_(types)
, OperatorsByName_(operatorsByName)
, Operators_(operators)
, OpFamilies_(opFamilies)
- {}
+ {
+ }
void OnKey(const TString& key, const TString& value) override {
if (key == "amopfamily") {
@@ -1242,10 +1261,12 @@ private:
bool IsSupported_ = true;
};
-
-class TAmsParser : public TParser {
+class TAmsParser: public TParser {
public:
- TAmsParser(TAms& ams) : Ams_(ams) {}
+ TAmsParser(TAms& ams)
+ : Ams_(ams)
+ {
+ }
void OnKey(const TString& key, const TString& value) override {
if (key == "oid") {
@@ -1276,17 +1297,18 @@ private:
TAms& Ams_;
};
-class TAmProcsParser : public TParser {
+class TAmProcsParser: public TParser {
public:
TAmProcsParser(TAmProcs& amProcs, const THashMap<TString, ui32>& typeByName,
- const THashMap<TString, TVector<ui32>>& procByName, const TProcs& procs,
- const TOpFamilies& opFamilies)
+ const THashMap<TString, TVector<ui32>>& procByName, const TProcs& procs,
+ const TOpFamilies& opFamilies)
: AmProcs_(amProcs)
, TypeByName_(typeByName)
, ProcByName_(procByName)
, Procs_(procs)
, OpFamilies_(opFamilies)
- {}
+ {
+ }
void OnKey(const TString& key, const TString& value) override {
if (key == "amprocfamily") {
@@ -1348,12 +1370,13 @@ private:
bool IsSupported_ = true;
};
-class TConversionsParser : public TParser {
+class TConversionsParser: public TParser {
public:
TConversionsParser(TConversions& conversions, const THashMap<TString, TVector<ui32>>& procByName)
: Conversions_(conversions)
, ProcByName_(procByName)
- {}
+ {
+ }
void OnKey(const TString& key, const TString& value) override {
if (key == "oid") {
@@ -1390,11 +1413,12 @@ private:
TConversionDesc LastConversion_;
};
-class TLanguagesParser : public TParser {
+class TLanguagesParser: public TParser {
public:
TLanguagesParser(TLanguages& languages)
: Languages_(languages)
- {}
+ {
+ }
void OnKey(const TString& key, const TString& value) override {
if (key == "oid") {
@@ -1418,7 +1442,7 @@ private:
};
TOperators ParseOperators(const TString& dat, const THashMap<TString, ui32>& typeByName,
- const TTypes& types, const THashMap<TString, TVector<ui32>>& procByName, const TProcs& procs, THashMap<ui32, TLazyOperInfo>& lazyInfos) {
+ const TTypes& types, const THashMap<TString, TVector<ui32>>& procByName, const TProcs& procs, THashMap<ui32, TLazyOperInfo>& lazyInfos) {
TOperators ret;
TOperatorsParser parser(ret, typeByName, types, procByName, procs, lazyInfos);
parser.Do(dat);
@@ -1480,7 +1504,7 @@ void ApplyLazyOperInfos(TOperators& operators, const THashMap<TString, TVector<u
}
TAggregations ParseAggregations(const TString& dat, const THashMap<TString, ui32>& typeByName,
- const TTypes& types, const THashMap<TString, TVector<ui32>>& procByName, const TProcs& procs) {
+ const TTypes& types, const THashMap<TString, TVector<ui32>>& procByName, const TProcs& procs) {
TAggregations ret;
TAggregationsParser parser(ret, typeByName, types, procByName, procs);
parser.Do(dat);
@@ -1502,7 +1526,7 @@ TTypes ParseTypes(const TString& dat, THashMap<ui32, TLazyTypeInfo>& lazyInfos)
}
TCasts ParseCasts(const TString& dat, const THashMap<TString, ui32>& typeByName, const TTypes& types,
- const THashMap<TString, TVector<ui32>>& procByName, const TProcs& procs) {
+ const THashMap<TString, TVector<ui32>>& procByName, const TProcs& procs) {
TCasts ret;
TCastsParser parser(ret, typeByName, types, procByName, procs);
parser.Do(dat);
@@ -1517,7 +1541,7 @@ TOpFamilies ParseOpFamilies(const TString& dat) {
}
TOpClasses ParseOpClasses(const TString& dat, const THashMap<TString, ui32>& typeByName,
- const TOpFamilies& opFamilies) {
+ const TOpFamilies& opFamilies) {
TOpClasses ret;
TOpClassesParser parser(ret, typeByName, opFamilies);
parser.Do(dat);
@@ -1525,8 +1549,8 @@ TOpClasses ParseOpClasses(const TString& dat, const THashMap<TString, ui32>& typ
}
TAmOps ParseAmOps(const TString& dat, const THashMap<TString, ui32>& typeByName, const TTypes& types,
- const THashMap<TString, TVector<ui32>>& operatorsByName, const TOperators& operators,
- const TOpFamilies& opFamilies) {
+ const THashMap<TString, TVector<ui32>>& operatorsByName, const TOperators& operators,
+ const TOpFamilies& opFamilies) {
TAmOps ret;
TAmOpsParser parser(ret, typeByName, types, operatorsByName, operators, opFamilies);
parser.Do(dat);
@@ -1534,8 +1558,8 @@ TAmOps ParseAmOps(const TString& dat, const THashMap<TString, ui32>& typeByName,
}
TAmProcs ParseAmProcs(const TString& dat, const THashMap<TString, ui32>& typeByName,
- const THashMap<TString, TVector<ui32>>& procByName, const TProcs& procs,
- const TOpFamilies& opFamilies) {
+ const THashMap<TString, TVector<ui32>>& procByName, const TProcs& procs,
+ const TOpFamilies& opFamilies) {
TAmProcs ret;
TAmProcsParser parser(ret, typeByName, procByName, procs, opFamilies);
parser.Do(dat);
@@ -1579,7 +1603,7 @@ struct TTableInfoKeyRaw {
const char* Name;
};
-struct TTableInfoRaw : public TTableInfoKeyRaw {
+struct TTableInfoRaw: public TTableInfoKeyRaw {
ERelKind Kind;
ui32 Oid;
};
@@ -1605,7 +1629,7 @@ const char* AllowedProcsRaw[] = {
#include "postgis_procs.h"
};
-struct TCatalog : public IExtensionSqlBuilder {
+struct TCatalog: public IExtensionSqlBuilder {
TCatalog() {
Init();
}
@@ -1620,69 +1644,52 @@ struct TCatalog : public IExtensionSqlBuilder {
for (size_t i = 0; i < Y_ARRAY_SIZE(AllStaticTablesRaw); ++i) {
const auto& raw = AllStaticTablesRaw[i];
State->AllStaticTables.push_back(
- {{TString(raw.Schema), TString(raw.Name)}, raw.Kind, raw.Oid}
- );
+ {{TString(raw.Schema), TString(raw.Name)}, raw.Kind, raw.Oid});
}
for (size_t i = 0; i < Y_ARRAY_SIZE(AllStaticColumnsRaw); ++i) {
const auto& raw = AllStaticColumnsRaw[i];
State->AllStaticColumns.push_back(
- {TString(raw.Schema), TString(raw.TableName), TString(raw.Name), TString(raw.UdtType)}
- );
+ {TString(raw.Schema), TString(raw.TableName), TString(raw.Name), TString(raw.UdtType)});
}
- if ( GetEnv("YDB_EXPERIMENTAL_PG") == "1"){
+ if (GetEnv("YDB_EXPERIMENTAL_PG") == "1") {
// grafana migration_log
State->AllStaticTables.push_back(
- {{"public", "migration_log"}, ERelKind::Relation, 100001}
- );
+ {{"public", "migration_log"}, ERelKind::Relation, 100001});
State->AllStaticColumns.push_back(
- {"public", "migration_log", "id", "int"}
- );
+ {"public", "migration_log", "id", "int"});
State->AllStaticColumns.push_back(
- {"public", "migration_log", "migration_id", "character varying(255)"}
- );
+ {"public", "migration_log", "migration_id", "character varying(255)"});
State->AllStaticColumns.push_back(
- {"public", "migration_log", "sql", "text"}
- );
+ {"public", "migration_log", "sql", "text"});
State->AllStaticColumns.push_back(
- {"public", "migration_log", "success", "boolean"}
- );
+ {"public", "migration_log", "success", "boolean"});
State->AllStaticColumns.push_back(
- {"public", "migration_log", "error", "text"}
- );
+ {"public", "migration_log", "error", "text"});
State->AllStaticColumns.push_back(
- {"public", "migration_log", "timestamp", "timestamp without time zone"}
- );
+ {"public", "migration_log", "timestamp", "timestamp without time zone"});
// zabbix config
State->AllStaticTables.push_back(
- {{"public", "config"}, ERelKind::Relation, 100001}
- );
+ {{"public", "config"}, ERelKind::Relation, 100001});
State->AllStaticColumns.push_back(
- {"public", "config", "configid", "bigint"}
- );
+ {"public", "config", "configid", "bigint"});
State->AllStaticColumns.push_back(
- {"public", "config", "server_check_interval", "integer"}
- );
+ {"public", "config", "server_check_interval", "integer"});
State->AllStaticColumns.push_back(
- {"public", "config", "dbversion_status", "text"}
- );
+ {"public", "config", "dbversion_status", "text"});
// zabbix dbversion
State->AllStaticTables.push_back(
- {{"public", "dbversion"}, ERelKind::Relation, 100002}
- );
+ {{"public", "dbversion"}, ERelKind::Relation, 100002});
State->AllStaticColumns.push_back(
- {"public", "dbversion", "dbversionid", "bigint"}
- );
+ {"public", "dbversion", "dbversionid", "bigint"});
State->AllStaticColumns.push_back(
- {"public", "dbversion", "mandatory", "integer"}
- );
+ {"public", "dbversion", "mandatory", "integer"});
State->AllStaticColumns.push_back(
- {"public", "dbversion", "mandatory", "optional"}
- );
+ {"public", "dbversion", "mandatory", "optional"});
}
THashSet<ui32> usedTableOids;
for (const auto& t : State->AllStaticTables) {
@@ -1691,7 +1698,7 @@ struct TCatalog : public IExtensionSqlBuilder {
State->StaticTables.insert(std::make_pair(TTableInfoKey(t), t));
}
- for (const auto& c: State->AllStaticColumns) {
+ for (const auto& c : State->AllStaticColumns) {
auto tablePtr = State->StaticColumns.FindPtr(TTableInfoKey{c.Schema, c.TableName});
Y_ENSURE(tablePtr);
tablePtr->push_back(c);
@@ -1829,19 +1836,19 @@ struct TCatalog : public IExtensionSqlBuilder {
}
State->Casts = ParseCasts(castData, State->TypeByName, State->Types, State->ProcByName, State->Procs);
- for (const auto&[k, v] : State->Casts) {
+ for (const auto& [k, v] : State->Casts) {
Y_ENSURE(State->CastsByDir.insert(std::make_pair(std::make_pair(v.SourceId, v.TargetId), k)).second);
}
THashMap<ui32, TLazyOperInfo> lazyOperInfos;
State->Operators = ParseOperators(opData, State->TypeByName, State->Types, State->ProcByName, State->Procs, lazyOperInfos);
- for (const auto&[k, v] : State->Operators) {
+ for (const auto& [k, v] : State->Operators) {
State->OperatorsByName[v.Name].push_back(k);
}
ApplyLazyOperInfos(State->Operators, State->OperatorsByName, State->TypeByName, lazyOperInfos);
State->Aggregations = ParseAggregations(aggData, State->TypeByName, State->Types, State->ProcByName, State->Procs);
- for (const auto&[k, v] : State->Aggregations) {
+ for (const auto& [k, v] : State->Aggregations) {
State->AggregationsByName[v.Name].push_back(k);
}
@@ -1931,7 +1938,7 @@ struct TCatalog : public IExtensionSqlBuilder {
}
TString line = TStringBuilder() << "\"" << name << "\",\n";
- with_lock(ExportGuard) {
+ with_lock (ExportGuard) {
ExportFile->Write(line.data(), line.size());
}
}
@@ -2065,7 +2072,7 @@ struct TCatalog : public IExtensionSqlBuilder {
}
void InsertValues(const TTableInfoKey& table, const TVector<TString>& columns,
- const TVector<TMaybe<TString>>& data) final {
+ const TVector<TMaybe<TString>>& data) final {
Y_ENSURE(State->StaticTables.contains(table));
const auto& columnDefs = *State->StaticColumns.FindPtr(table);
Y_ENSURE(columnDefs.size() == columns.size());
@@ -2304,8 +2311,7 @@ const TProcDesc& LookupProc(ui32 procId, const TVector<ui32>& argTypeIds) {
}
if (!ValidateProcArgs(*procPtr, argTypeIds)) {
- throw yexception() << "Unable to find an overload for proc with oid " << procId << " with given argument types: " <<
- ArgTypesList(argTypeIds);
+ throw yexception() << "Unable to find an overload for proc with oid " << procId << " with given argument types: " << ArgTypesList(argTypeIds);
}
catalog.ExportFunction(procId);
@@ -2336,7 +2342,7 @@ const TProcDesc& LookupProc(const TString& name, const TVector<ui32>& argTypeIds
}
throw yexception() << "Unable to find an overload for proc " << name << " with given argument types: "
- << ArgTypesList(argTypeIds);
+ << ArgTypesList(argTypeIds);
}
const TProcDesc& LookupProc(ui32 procId) {
@@ -2486,7 +2492,6 @@ void EnumOperators(std::function<void(const TOperDesc&)> f) {
}
}
-
bool HasCast(ui32 sourceId, ui32 targetId) {
const auto& catalog = TCatalog::Instance();
return catalog.State->CastsByDir.contains(std::make_pair(sourceId, targetId));
@@ -2511,21 +2516,20 @@ constexpr ui64 NoFitScore = 0;
bool CanUseCoercionType(ECoercionCode requiredCoercionLevel, ECoercionCode actualCoercionLevel) {
switch (requiredCoercionLevel) {
case NYql::NPg::ECoercionCode::Implicit:
- return actualCoercionLevel == ECoercionCode::Implicit;
+ return actualCoercionLevel == ECoercionCode::Implicit;
case NYql::NPg::ECoercionCode::Assignment:
- return (actualCoercionLevel == ECoercionCode::Implicit) || (actualCoercionLevel == ECoercionCode::Assignment);
+ return (actualCoercionLevel == ECoercionCode::Implicit) || (actualCoercionLevel == ECoercionCode::Assignment);
case NYql::NPg::ECoercionCode::Explicit:
- return (actualCoercionLevel != ECoercionCode::Unknown);
+ return (actualCoercionLevel != ECoercionCode::Unknown);
case NYql::NPg::ECoercionCode::Unknown:
return false;
}
}
-enum class ECoercionSearchResult
-{
+enum class ECoercionSearchResult {
None,
Func,
BinaryCompatible,
@@ -2600,13 +2604,13 @@ bool IsCoercible(ui32 fromTypeId, ui32 toTypeId, ECoercionCode coercionType, con
if (toTypeId == AnyOid) {
return true;
}
- //TODO: support polymorphic types
+ // TODO: support polymorphic types
if (fromTypeId == UnknownOid) {
return true;
}
- if (FindCoercionPath(fromTypeId, toTypeId, coercionType, catalog) != ECoercionSearchResult::None ) {
+ if (FindCoercionPath(fromTypeId, toTypeId, coercionType, catalog) != ECoercionSearchResult::None) {
return true;
}
@@ -2638,7 +2642,7 @@ bool IsPreferredType(char categoryId, const TTypeDesc& type) {
}
constexpr ui32 CoercibleMatchShift = 16;
-constexpr ui64 ArgExactTypeMatch = 1ULL << 2*CoercibleMatchShift;
+constexpr ui64 ArgExactTypeMatch = 1ULL << 2 * CoercibleMatchShift;
constexpr ui64 ArgPreferredTypeMatch = 1ULL << CoercibleMatchShift;
constexpr ui64 ArgCoercibleTypeMatch = 1ULL;
constexpr ui64 ArgTypeMismatch = 0;
@@ -2676,8 +2680,7 @@ ui64 CalcBinaryOperatorScore(const TOperDesc& oper, ui32 leftArgTypeId, ui32 rig
if (oper.LeftType == rightArgTypeId && oper.RightType == rightArgTypeId) {
return ArgExactTypeMatch + ArgExactTypeMatch;
}
- }
- else if (rightArgTypeId == UnknownOid && leftArgTypeId != InvalidOid) {
+ } else if (rightArgTypeId == UnknownOid && leftArgTypeId != InvalidOid) {
if (oper.LeftType == leftArgTypeId && oper.RightType == leftArgTypeId) {
return ArgExactTypeMatch + ArgExactTypeMatch;
}
@@ -2760,32 +2763,32 @@ ui64 CalcProcScore(const TVector<ui32>& procArgTypes, ui32 procVariadicType, ui3
[[noreturn]] void ThrowOperatorNotFound(const TString& name, const TVector<ui32>& argTypeIds) {
throw yexception() << "Unable to find an overload for operator " << name << " with given argument type(s): "
- << ArgTypesList(argTypeIds);
+ << ArgTypesList(argTypeIds);
}
[[noreturn]] void ThrowOperatorAmbiguity(const TString& name, const TVector<ui32>& argTypeIds) {
throw yexception() << "Ambiguity for operator " << name << " with given argument type(s): "
- << ArgTypesList(argTypeIds);
+ << ArgTypesList(argTypeIds);
}
[[noreturn]] void ThrowProcNotFound(const TString& name, const TVector<ui32>& argTypeIds) {
throw yexception() << "Unable to find an overload for proc " << name << " with given argument types: "
- << ArgTypesList(argTypeIds);
+ << ArgTypesList(argTypeIds);
}
[[noreturn]] void ThrowProcAmbiguity(const TString& name, const TVector<ui32>& argTypeIds) {
throw yexception() << "Ambiguity for proc " << name << " with given argument type(s): "
- << ArgTypesList(argTypeIds);
+ << ArgTypesList(argTypeIds);
}
[[noreturn]] void ThrowAggregateNotFound(const TString& name, const TVector<ui32>& argTypeIds) {
throw yexception() << "Unable to find an overload for aggregate " << name << " with given argument types: "
- << ArgTypesList(argTypeIds);
+ << ArgTypesList(argTypeIds);
}
[[noreturn]] void ThrowAggregateAmbiguity(const TString& name, const TVector<ui32>& argTypeIds) {
throw yexception() << "Ambiguity for aggregate " << name << " with given argument type(s): "
- << ArgTypesList(argTypeIds);
+ << ArgTypesList(argTypeIds);
}
struct TCommonCategoryDesc {
@@ -2794,11 +2797,15 @@ struct TCommonCategoryDesc {
bool IsPreferred = false;
TCommonCategoryDesc(size_t position, char category, bool isPreferred)
- : Position(position), Category(category), IsPreferred(isPreferred) {}
+ : Position(position)
+ , Category(category)
+ , IsPreferred(isPreferred)
+ {
+ }
};
template <class C>
-char FindCommonCategory(const TVector<const C*> &candidates, std::function<ui32(const C*)> getTypeId, const TCatalog &catalog, bool &isPreferred) {
+char FindCommonCategory(const TVector<const C*>& candidates, std::function<ui32(const C*)> getTypeId, const TCatalog& catalog, bool& isPreferred) {
char category = InvalidCategory;
auto isConflict = false;
isPreferred = false;
@@ -2844,7 +2851,7 @@ TVector<const C*> TryResolveUnknownsByCategory(const TVector<const C*>& candidat
char category = InvalidCategory;
bool isPreferred = false;
- std::function<ui32(const C *)> typeGetter = [i] (const auto* candidate) {
+ std::function<ui32(const C*)> typeGetter = [i](const auto* candidate) {
if constexpr (std::is_same_v<C, TProcDesc>) {
return i < candidate->ArgTypes.size() ? candidate->ArgTypes[i] : candidate->VariadicType;
} else {
@@ -2908,16 +2915,16 @@ TVector<const TOperDesc*> TryResolveUnknownsByCategory<TOperDesc>(const TVector<
char category = InvalidCategory;
bool isPreferred = false;
- std::function <ui32(const TOperDesc*)> typeGetter;
+ std::function<ui32(const TOperDesc*)> typeGetter;
if (i == 1) {
- typeGetter = [] (const auto* candidate) {
+ typeGetter = [](const auto* candidate) {
return candidate->RightType;
};
} else {
- typeGetter = [] (const auto* candidate) {
+ typeGetter = [](const auto* candidate) {
return (candidate->Kind == EOperKind::Binary)
- ? candidate->LeftType
- : candidate->RightType;
+ ? candidate->LeftType
+ : candidate->RightType;
};
}
@@ -2936,8 +2943,9 @@ TVector<const TOperDesc*> TryResolveUnknownsByCategory<TOperDesc>(const TVector<
for (const auto& category : argCommonCategory) {
const auto argTypeId = (category.Position == 1)
- ? candidate->RightType
- : (candidate->Kind == EOperKind::Binary) ? candidate->LeftType : candidate->RightType;
+ ? candidate->RightType
+ : (candidate->Kind == EOperKind::Binary) ? candidate->LeftType
+ : candidate->RightType;
const auto& argTypePtr = catalog.State->Types.FindPtr(argTypeId);
Y_ENSURE(argTypePtr);
@@ -2970,7 +2978,7 @@ bool CanCastImplicitly(ui32 fromTypeId, ui32 toTypeId, const TCatalog& catalog)
return (castPtr->CoercionCode == ECoercionCode::Implicit);
}
-} // NPrivate
+} // namespace NPrivate
bool IsCoercible(ui32 fromTypeId, ui32 toTypeId, ECoercionCode coercionType) {
const auto& catalog = TCatalog::Instance();
@@ -3032,7 +3040,7 @@ std::variant<const TProcDesc*, const TTypeDesc*> LookupProcWithCasts(const TStri
}
const auto coercionType = NPrivate::FindCoercionPath(fromTypeId, typePtr->TypeId,
- ECoercionCode::Explicit, catalog);
+ ECoercionCode::Explicit, catalog);
switch (coercionType) {
case NPrivate::ECoercionSearchResult::BinaryCompatible:
@@ -3077,7 +3085,7 @@ std::variant<const TProcDesc*, const TTypeDesc*> LookupProcWithCasts(const TStri
if (unknownsCount < argTypeIds.size()) {
ui32 commonType = UnknownOid;
- for (const auto argType: argTypeIds) {
+ for (const auto argType : argTypeIds) {
if (argType == UnknownOid) {
continue;
}
@@ -3147,7 +3155,7 @@ TMaybe<TIssue> LookupCommonType(const TVector<ui32>& typeIds, const std::functio
if (otherType.Category != commonCategory) {
// https://www.postgresql.org/docs/14/typeconv-union-case.html, step 4
return TIssue(GetPosition(i), TStringBuilder() << "Cannot infer common type for types "
- << commonType->TypeId << " and " << otherType.TypeId);
+ << commonType->TypeId << " and " << otherType.TypeId);
}
castsNeeded = true;
if (NPrivate::CanCastImplicitly(otherType.TypeId, commonType->TypeId, catalog)) {
@@ -3155,7 +3163,7 @@ TMaybe<TIssue> LookupCommonType(const TVector<ui32>& typeIds, const std::functio
}
if (commonType->IsPreferred || !NPrivate::CanCastImplicitly(commonType->TypeId, otherType.TypeId, catalog)) {
return TIssue(GetPosition(i), TStringBuilder() << "Cannot infer common type for types "
- << commonType->TypeId << " and " << otherType.TypeId);
+ << commonType->TypeId << " and " << otherType.TypeId);
}
commonType = &otherType;
}
@@ -3170,12 +3178,11 @@ TMaybe<TIssue> LookupCommonType(const TVector<ui32>& typeIds, const std::functio
return {};
}
-TMaybe<TIssue> LookupCommonType(const TVector<ui32>& typeIds, const std::function<TPosition(size_t i)>&GetPosition, const TTypeDesc*& typeDesc) {
+TMaybe<TIssue> LookupCommonType(const TVector<ui32>& typeIds, const std::function<TPosition(size_t i)>& GetPosition, const TTypeDesc*& typeDesc) {
bool _;
return LookupCommonType(typeIds, GetPosition, typeDesc, _);
}
-
const TOperDesc& LookupOper(const TString& name, const TVector<ui32>& argTypeIds) {
const auto& catalog = TCatalog::Instance();
@@ -3190,16 +3197,16 @@ const TOperDesc& LookupOper(const TString& name, const TVector<ui32>& argTypeIds
switch (argTypeIds.size()) {
case 2:
expectedOpKind = EOperKind::Binary;
- calcScore = [&] (const auto* d) {
- return NPrivate::CalcBinaryOperatorScore(*d, argTypeIds[0], argTypeIds[1], catalog);
- };
+ calcScore = [&](const auto* d) {
+ return NPrivate::CalcBinaryOperatorScore(*d, argTypeIds[0], argTypeIds[1], catalog);
+ };
break;
case 1:
expectedOpKind = EOperKind::LeftUnary;
- calcScore = [&] (const auto* d) {
+ calcScore = [&](const auto* d) {
return NPrivate::CalcUnaryOperatorScore(*d, argTypeIds[0], catalog);
- };
+ };
break;
default:
@@ -3263,7 +3270,7 @@ const TOperDesc& LookupOper(const TString& name, const TVector<ui32>& argTypeIds
NPrivate::ThrowOperatorNotFound(name, argTypeIds);
}
- auto TryResolveUnknownsBySpreadingType = [&] (ui32 argTypeId, std::function<ui32(const TOperDesc*)> getArgType) {
+ auto TryResolveUnknownsBySpreadingType = [&](ui32 argTypeId, std::function<ui32(const TOperDesc*)> getArgType) {
const TOperDesc* finalCandidate = nullptr;
for (const auto* candidate : candidates) {
@@ -3279,9 +3286,9 @@ const TOperDesc& LookupOper(const TString& name, const TVector<ui32>& argTypeIds
const TOperDesc* finalCandidate = nullptr;
if (argTypeIds[0] == UnknownOid) {
- finalCandidate = TryResolveUnknownsBySpreadingType(argTypeIds[1], [&] (const auto* oper) { return oper->LeftType; });
+ finalCandidate = TryResolveUnknownsBySpreadingType(argTypeIds[1], [&](const auto* oper) { return oper->LeftType; });
} else if (argTypeIds[1] == UnknownOid) {
- finalCandidate = TryResolveUnknownsBySpreadingType(argTypeIds[0], [&] (const auto* oper) { return oper->RightType; });
+ finalCandidate = TryResolveUnknownsBySpreadingType(argTypeIds[0], [&](const auto* oper) { return oper->RightType; });
}
if (finalCandidate) {
@@ -3299,7 +3306,7 @@ const TOperDesc& LookupOper(ui32 operId, const TVector<ui32>& argTypeIds) {
if (!ValidateOperArgs(*operPtr, argTypeIds, catalog.State->Types)) {
throw yexception() << "Unable to find an overload for operator with oid " << operId << " with given argument types: "
- << ArgTypesList(argTypeIds);
+ << ArgTypesList(argTypeIds);
}
return *operPtr;
@@ -3412,7 +3419,7 @@ const TAggregateDesc& LookupAggregation(const TString& name, const TVector<ui32>
if (unknownsCount < argTypeIds.size()) {
ui32 commonType = UnknownOid;
- for (const auto argType: argTypeIds) {
+ for (const auto argType : argTypeIds) {
if (argType == UnknownOid) {
continue;
}
@@ -3477,9 +3484,7 @@ const TAggregateDesc& LookupAggregation(const TString& name, ui32 stateType, ui3
return *d;
}
- throw yexception() << "Unable to find an overload for aggregate " << name << " with given state type: " <<
- NPg::LookupType(stateType).Name << " and result type: " <<
- NPg::LookupType(resultType).Name;
+ throw yexception() << "Unable to find an overload for aggregate " << name << " with given state type: " << NPg::LookupType(stateType).Name << " and result type: " << NPg::LookupType(resultType).Name;
}
void EnumAggregation(std::function<void(ui32, const TAggregateDesc&)> f) {
@@ -3498,8 +3503,9 @@ const TOpClassDesc* LookupDefaultOpClass(EOpClassMethod method, ui32 typeId) {
const auto& catalog = TCatalog::Instance();
auto lookupId = (typeId == VarcharOid ? TextOid : typeId);
const auto opClassPtr = catalog.State->OpClasses.FindPtr(std::make_pair(method, lookupId));
- if (opClassPtr)
+ if (opClassPtr) {
return opClassPtr;
+ }
throw yexception() << "No such opclass";
@@ -3507,7 +3513,7 @@ const TOpClassDesc* LookupDefaultOpClass(EOpClassMethod method, ui32 typeId) {
}
bool HasAmOp(ui32 familyId, ui32 strategy, ui32 leftType, ui32 rightType) {
- const auto &catalog = TCatalog::Instance();
+ const auto& catalog = TCatalog::Instance();
return catalog.State->AmOps.contains(std::make_tuple(familyId, strategy, leftType, rightType));
}
@@ -3522,7 +3528,7 @@ const TAmOpDesc& LookupAmOp(ui32 familyId, ui32 strategy, ui32 leftType, ui32 ri
}
bool HasAmProc(ui32 familyId, ui32 num, ui32 leftType, ui32 rightType) {
- const auto &catalog = TCatalog::Instance();
+ const auto& catalog = TCatalog::Instance();
return catalog.State->AmProcs.contains(std::make_tuple(familyId, num, leftType, rightType));
}
@@ -3537,7 +3543,7 @@ const TAmProcDesc& LookupAmProc(ui32 familyId, ui32 num, ui32 leftType, ui32 rig
}
bool HasConversion(const TString& from, const TString& to) {
- const auto &catalog = TCatalog::Instance();
+ const auto& catalog = TCatalog::Instance();
return catalog.State->Conversions.contains(std::make_pair(from, to));
}
@@ -3602,13 +3608,13 @@ const TVector<TMaybe<TString>>* ReadTable(
auto dataPtr = catalog.State->StaticTablesData.FindPtr(tableKey);
if (!dataPtr) {
throw yexception() << "Missing data for table "
- << tableKey.Schema << "." << tableKey.Name;
+ << tableKey.Schema << "." << tableKey.Name;
}
const auto& allColumns = *catalog.State->StaticColumns.FindPtr(tableKey);
THashMap<TString, size_t> columnsToIndex;
for (size_t i = 0; i < allColumns.size(); ++i) {
- Y_ENSURE(columnsToIndex.emplace(allColumns[i].Name,i).second);
+ Y_ENSURE(columnsToIndex.emplace(allColumns[i].Name, i).second);
}
rowStep = allColumns.size();
@@ -3616,7 +3622,7 @@ const TVector<TMaybe<TString>>* ReadTable(
auto indexPtr = columnsToIndex.FindPtr(columnNames[i]);
if (!indexPtr) {
throw yexception() << "Missing column " << columnNames[i] << " in table "
- << tableKey.Schema << "." << tableKey.Name;
+ << tableKey.Schema << "." << tableKey.Name;
}
columnsRemap[i] = *indexPtr;
@@ -3685,7 +3691,7 @@ void LoadSystemFunctions(ISystemFunctionsParser& parser) {
}
void RegisterExtensions(const TVector<TExtensionDesc>& extensions, bool typesOnly,
- IExtensionSqlParser& parser, IExtensionLoader* loader) {
+ IExtensionSqlParser& parser, IExtensionLoader* loader) {
YQL_PROFILE_FUNC(DEBUG);
if (extensions.size() > MaximumExtensionsCount) {
throw yexception() << "Too many extensions: " << extensions.size();
@@ -4354,4 +4360,4 @@ ui32 LookupExtensionByInstallName(const TString& installName) {
return *indexPtr;
}
-}
+} // namespace NYql::NPg
diff --git a/yql/essentials/parser/pg_catalog/catalog.h b/yql/essentials/parser/pg_catalog/catalog.h
index e753f2ebc82..09e080f7a10 100644
--- a/yql/essentials/parser/pg_catalog/catalog.h
+++ b/yql/essentials/parser/pg_catalog/catalog.h
@@ -13,7 +13,7 @@ struct Node;
namespace NYql {
class TExprNode;
struct TExprContext;
-}
+} // namespace NYql
namespace NYql::NPg {
@@ -27,8 +27,7 @@ constexpr ui32 VarcharOid = 1043;
constexpr ui32 TextOid = 25;
// copied from pg_class.h
-enum class ERelPersistence : char
-{
+enum class ERelPersistence: char {
Permanent = 'p',
Unlogged = 'u',
Temp = 't',
@@ -54,7 +53,7 @@ struct TOperDesc {
ui32 ExtensionIndex = 0;
};
-enum class EProcKind : char {
+enum class EProcKind: char {
Function = 'f',
Aggregate = 'a',
Window = 'w'
@@ -93,7 +92,7 @@ constexpr ui32 C_CollationOid = 950;
constexpr ui32 PosixCollationOid = 951;
// Copied from pg_type_d.h, TYPTYPE_* constants
-enum class ETypType : char {
+enum class ETypType: char {
Base = 'b',
Composite = 'c',
Domain = 'd',
@@ -150,11 +149,11 @@ enum class ECastMethod {
Binary
};
-enum class ECoercionCode : char {
- Unknown = '?', // not specified
- Implicit = 'i', // coercion in context of expression
- Assignment = 'a', // coercion in context of assignment
- Explicit = 'e', // explicit cast operation
+enum class ECoercionCode: char {
+ Unknown = '?', // not specified
+ Implicit = 'i', // coercion in context of expression
+ Assignment = 'a', // coercion in context of assignment
+ Explicit = 'e', // explicit cast operation
};
struct TCastDesc {
@@ -166,7 +165,7 @@ struct TCastDesc {
ui32 ExtensionIndex = 0;
};
-enum class EAggKind : char {
+enum class EAggKind: char {
Normal = 'n',
OrderedSet = 'o',
Hypothetical = 'h'
@@ -337,7 +336,7 @@ inline bool IsArrayType(const TTypeDesc& typeDesc) noexcept {
return typeDesc.ArrayTypeId == typeDesc.TypeId;
}
-enum class ERelKind : char {
+enum class ERelKind: char {
Relation = 'r',
View = 'v'
};
@@ -371,7 +370,7 @@ constexpr ui32 NamespaceRelationOid = 2615;
constexpr ui32 AuthMemRelationOid = 1261;
constexpr ui32 RelationRelationOid = 1259;
-struct TTableInfo : public TTableInfoKey {
+struct TTableInfo: public TTableInfoKey {
ERelKind Kind;
ui32 Oid;
ui32 ExtensionIndex = 0;
@@ -398,13 +397,13 @@ bool AreAllFunctionsAllowed();
void AllowFunction(const TString& name);
struct TExtensionDesc {
- TString Name; // postgis
- TString InstallName; // $libdir/postgis-3
- TVector<TString> SqlPaths; // paths to SQL files with DDL (CREATE TYPE/CREATE FUNCTION/etc), DML (INSERT/VALUES)
- TString LibraryPath; // file path
- bool TypesOnly = false; // Can't be loaded if true
- TString LibraryMD5; // optional
- TString Version; // version of extension
+ TString Name; // postgis
+ TString InstallName; // $libdir/postgis-3
+ TVector<TString> SqlPaths; // paths to SQL files with DDL (CREATE TYPE/CREATE FUNCTION/etc), DML (INSERT/VALUES)
+ TString LibraryPath; // file path
+ bool TypesOnly = false; // Can't be loaded if true
+ TString LibraryMD5; // optional
+ TString Version; // version of extension
};
class IExtensionSqlBuilder {
@@ -413,14 +412,14 @@ public:
virtual void CreateProc(const TProcDesc& desc) = 0;
- virtual void PrepareType(ui32 extensionIndex,const TString& name) = 0;
+ virtual void PrepareType(ui32 extensionIndex, const TString& name) = 0;
virtual void UpdateType(const TTypeDesc& desc) = 0;
virtual void CreateTable(const TTableInfo& table, const TVector<TColumnInfo>& columns) = 0;
virtual void InsertValues(const TTableInfoKey& table, const TVector<TString>& columns,
- const TVector<TMaybe<TString>>& data) = 0; // row based layout
+ const TVector<TMaybe<TString>>& data) = 0; // row based layout
virtual void CreateCast(const TCastDesc& desc) = 0;
@@ -467,7 +466,7 @@ void LoadSystemFunctions(ISystemFunctionsParser& parser);
// either RegisterExtensions or ImportExtensions should be called at most once, see ClearExtensions as well
void RegisterExtensions(const TVector<TExtensionDesc>& extensions, bool typesOnly,
- IExtensionSqlParser& parser, IExtensionLoader* loader);
+ IExtensionSqlParser& parser, IExtensionLoader* loader);
// converts all library paths to basenames
TString ExportExtensions(const TMaybe<TSet<ui32>>& filter = Nothing());
void ImportExtensions(const TString& exported, bool typesOnly, IExtensionLoader* loader);
@@ -478,7 +477,7 @@ const TExtensionDesc& LookupExtension(ui32 extensionIndex);
ui32 LookupExtensionByName(const TString& name);
ui32 LookupExtensionByInstallName(const TString& installName);
-}
+} // namespace NYql::NPg
template <>
inline void Out<NYql::NPg::ETypType>(IOutputStream& o, NYql::NPg::ETypType typType) {
@@ -492,7 +491,7 @@ inline void Out<NYql::NPg::ECoercionCode>(IOutputStream& o, NYql::NPg::ECoercion
template <>
struct THash<NYql::NPg::TTableInfoKey> {
- size_t operator ()(const NYql::NPg::TTableInfoKey& val) const {
+ size_t operator()(const NYql::NPg::TTableInfoKey& val) const {
return val.Hash();
}
};
diff --git a/yql/essentials/parser/pg_catalog/generate_system_columns.py b/yql/essentials/parser/pg_catalog/generate_system_columns.py
index 14764c3e1f0..063a3f21f34 100755
--- a/yql/essentials/parser/pg_catalog/generate_system_columns.py
+++ b/yql/essentials/parser/pg_catalog/generate_system_columns.py
@@ -3,26 +3,37 @@
with open("pg_class.txt") as f:
pg_class_file = f.readlines()
-with open("pg_class.generated.h","w") as f:
+with open("pg_class.generated.h", "w") as f:
for p in pg_class_file[2:-2]:
- s=p.split("|")
- oid=int(s[0].strip())
- relkind=s[1].strip()
- relname=s[2].strip()
- nspname=s[3].strip()
- print(oid,relkind,relname,nspname)
- print('{{"' + nspname + '", "' + relname + '"}, ERelKind::' + ("Relation" if relkind == 'r' else "View") +", " + str(oid) + "},", file=f)
+ s = p.split("|")
+ oid = int(s[0].strip())
+ relkind = s[1].strip()
+ relname = s[2].strip()
+ nspname = s[3].strip()
+ print(oid, relkind, relname, nspname)
+ print(
+ '{{"'
+ + nspname
+ + '", "'
+ + relname
+ + '"}, ERelKind::'
+ + ("Relation" if relkind == 'r' else "View")
+ + ", "
+ + str(oid)
+ + "},",
+ file=f,
+ )
with open("columns.txt") as f:
columns_file = f.readlines()
-with open("columns.generated.h","w") as f:
+with open("columns.generated.h", "w") as f:
for p in columns_file[2:-2]:
- s=p.split("|")
+ s = p.split("|")
print(s)
- name=s[0].strip()
- relname=s[1].strip()
- schemaname=s[2].strip()
- udt=s[3].strip()
- print(schemaname,relname,name,udt)
+ name = s[0].strip()
+ relname = s[1].strip()
+ schemaname = s[2].strip()
+ udt = s[3].strip()
+ print(schemaname, relname, name, udt)
print('{"' + schemaname + '", "' + relname + '", "' + name + '", "' + udt + '"},', file=f)
diff --git a/yql/essentials/parser/pg_catalog/ut/catalog_consts_ut.cpp b/yql/essentials/parser/pg_catalog/ut/catalog_consts_ut.cpp
index 04ec9ee3083..10286c5d5b5 100644
--- a/yql/essentials/parser/pg_catalog/ut/catalog_consts_ut.cpp
+++ b/yql/essentials/parser/pg_catalog/ut/catalog_consts_ut.cpp
@@ -19,53 +19,52 @@ extern "C" {
#include <library/cpp/testing/unittest/registar.h>
-
using namespace NYql::NPg;
Y_UNIT_TEST_SUITE(TConstantsTests) {
- Y_UNIT_TEST(TestCollationConsts) {
- UNIT_ASSERT(NYql::NPg::DefaultCollationOid == DEFAULT_COLLATION_OID);
- UNIT_ASSERT(NYql::NPg::C_CollationOid == C_COLLATION_OID);
- UNIT_ASSERT(NYql::NPg::PosixCollationOid == POSIX_COLLATION_OID);
- }
+Y_UNIT_TEST(TestCollationConsts) {
+ UNIT_ASSERT(NYql::NPg::DefaultCollationOid == DEFAULT_COLLATION_OID);
+ UNIT_ASSERT(NYql::NPg::C_CollationOid == C_COLLATION_OID);
+ UNIT_ASSERT(NYql::NPg::PosixCollationOid == POSIX_COLLATION_OID);
+}
- Y_UNIT_TEST(BTreeAmStrategyConsts) {
- UNIT_ASSERT(static_cast<ui32>(NYql::NPg::EBtreeAmStrategy::Less) == BTLessStrategyNumber);
- UNIT_ASSERT(static_cast<ui32>(NYql::NPg::EBtreeAmStrategy::LessOrEqual) == BTLessEqualStrategyNumber);
- UNIT_ASSERT(static_cast<ui32>(NYql::NPg::EBtreeAmStrategy::Equal) == BTEqualStrategyNumber);
- UNIT_ASSERT(static_cast<ui32>(NYql::NPg::EBtreeAmStrategy::GreaterOrEqual) == BTGreaterEqualStrategyNumber);
- UNIT_ASSERT(static_cast<ui32>(NYql::NPg::EBtreeAmStrategy::Greater) == BTGreaterStrategyNumber);
- }
+Y_UNIT_TEST(BTreeAmStrategyConsts) {
+ UNIT_ASSERT(static_cast<ui32>(NYql::NPg::EBtreeAmStrategy::Less) == BTLessStrategyNumber);
+ UNIT_ASSERT(static_cast<ui32>(NYql::NPg::EBtreeAmStrategy::LessOrEqual) == BTLessEqualStrategyNumber);
+ UNIT_ASSERT(static_cast<ui32>(NYql::NPg::EBtreeAmStrategy::Equal) == BTEqualStrategyNumber);
+ UNIT_ASSERT(static_cast<ui32>(NYql::NPg::EBtreeAmStrategy::GreaterOrEqual) == BTGreaterEqualStrategyNumber);
+ UNIT_ASSERT(static_cast<ui32>(NYql::NPg::EBtreeAmStrategy::Greater) == BTGreaterStrategyNumber);
+}
- Y_UNIT_TEST(TTypeOidConsts) {
- TTypeDesc typeDesc;
- typeDesc = LookupType("unknown");
- UNIT_ASSERT_VALUES_EQUAL(typeDesc.TypeId, UnknownOid);
- typeDesc = LookupType("any");
- UNIT_ASSERT_VALUES_EQUAL(typeDesc.TypeId, AnyOid);
- typeDesc = LookupType("anyarray");
- UNIT_ASSERT_VALUES_EQUAL(typeDesc.TypeId, AnyArrayOid);
- typeDesc = LookupType("record");
- UNIT_ASSERT_VALUES_EQUAL(typeDesc.TypeId, RecordOid);
- typeDesc = LookupType("varchar");
- UNIT_ASSERT_VALUES_EQUAL(typeDesc.TypeId, VarcharOid);
- typeDesc = LookupType("text");
- UNIT_ASSERT_VALUES_EQUAL(typeDesc.TypeId, TextOid);
- typeDesc = LookupType("anynonarray");
- UNIT_ASSERT_VALUES_EQUAL(typeDesc.TypeId, AnyNonArrayOid);
- }
+Y_UNIT_TEST(TTypeOidConsts) {
+ TTypeDesc typeDesc;
+ typeDesc = LookupType("unknown");
+ UNIT_ASSERT_VALUES_EQUAL(typeDesc.TypeId, UnknownOid);
+ typeDesc = LookupType("any");
+ UNIT_ASSERT_VALUES_EQUAL(typeDesc.TypeId, AnyOid);
+ typeDesc = LookupType("anyarray");
+ UNIT_ASSERT_VALUES_EQUAL(typeDesc.TypeId, AnyArrayOid);
+ typeDesc = LookupType("record");
+ UNIT_ASSERT_VALUES_EQUAL(typeDesc.TypeId, RecordOid);
+ typeDesc = LookupType("varchar");
+ UNIT_ASSERT_VALUES_EQUAL(typeDesc.TypeId, VarcharOid);
+ typeDesc = LookupType("text");
+ UNIT_ASSERT_VALUES_EQUAL(typeDesc.TypeId, TextOid);
+ typeDesc = LookupType("anynonarray");
+ UNIT_ASSERT_VALUES_EQUAL(typeDesc.TypeId, AnyNonArrayOid);
+}
- Y_UNIT_TEST(TRelationOidConsts) {
- UNIT_ASSERT_VALUES_EQUAL(TypeRelationOid, TypeRelationId);
- UNIT_ASSERT_VALUES_EQUAL(DatabaseRelationOid, DatabaseRelationId);
- UNIT_ASSERT_VALUES_EQUAL(TableSpaceRelationOid, TableSpaceRelationId);
- UNIT_ASSERT_VALUES_EQUAL(SharedDescriptionRelationOid, SharedDescriptionRelationId);
- UNIT_ASSERT_VALUES_EQUAL(TriggerRelationOid, TriggerRelationId);
- UNIT_ASSERT_VALUES_EQUAL(InheritsRelationOid, InheritsRelationId);
- UNIT_ASSERT_VALUES_EQUAL(DescriptionRelationOid, DescriptionRelationId);
- UNIT_ASSERT_VALUES_EQUAL(AccessMethodRelationOid, AccessMethodRelationId);
- UNIT_ASSERT_VALUES_EQUAL(NamespaceRelationOid, NamespaceRelationId);
- UNIT_ASSERT_VALUES_EQUAL(AuthMemRelationOid, AuthMemRelationId);
- UNIT_ASSERT_VALUES_EQUAL(RelationRelationOid, RelationRelationId);
- }
+Y_UNIT_TEST(TRelationOidConsts) {
+ UNIT_ASSERT_VALUES_EQUAL(TypeRelationOid, TypeRelationId);
+ UNIT_ASSERT_VALUES_EQUAL(DatabaseRelationOid, DatabaseRelationId);
+ UNIT_ASSERT_VALUES_EQUAL(TableSpaceRelationOid, TableSpaceRelationId);
+ UNIT_ASSERT_VALUES_EQUAL(SharedDescriptionRelationOid, SharedDescriptionRelationId);
+ UNIT_ASSERT_VALUES_EQUAL(TriggerRelationOid, TriggerRelationId);
+ UNIT_ASSERT_VALUES_EQUAL(InheritsRelationOid, InheritsRelationId);
+ UNIT_ASSERT_VALUES_EQUAL(DescriptionRelationOid, DescriptionRelationId);
+ UNIT_ASSERT_VALUES_EQUAL(AccessMethodRelationOid, AccessMethodRelationId);
+ UNIT_ASSERT_VALUES_EQUAL(NamespaceRelationOid, NamespaceRelationId);
+ UNIT_ASSERT_VALUES_EQUAL(AuthMemRelationOid, AuthMemRelationId);
+ UNIT_ASSERT_VALUES_EQUAL(RelationRelationOid, RelationRelationId);
}
+} // Y_UNIT_TEST_SUITE(TConstantsTests)
diff --git a/yql/essentials/parser/pg_catalog/ut/catalog_ut.cpp b/yql/essentials/parser/pg_catalog/ut/catalog_ut.cpp
index ea2d4f1212a..0dd8e623c14 100644
--- a/yql/essentials/parser/pg_catalog/ut/catalog_ut.cpp
+++ b/yql/essentials/parser/pg_catalog/ut/catalog_ut.cpp
@@ -15,195 +15,195 @@ const TProcDesc& LookupProcByStrArgTypes(const TString& name, const TVector<TStr
}
Y_UNIT_TEST_SUITE(TTypesTests) {
- Y_UNIT_TEST(TestMissing) {
- UNIT_ASSERT_EXCEPTION(LookupType("_foo_bar_"), yexception);
- UNIT_ASSERT_EXCEPTION(LookupType(0), yexception);
- }
+Y_UNIT_TEST(TestMissing) {
+ UNIT_ASSERT_EXCEPTION(LookupType("_foo_bar_"), yexception);
+ UNIT_ASSERT_EXCEPTION(LookupType(0), yexception);
+}
- Y_UNIT_TEST(TestOk) {
- auto ret = LookupType("text");
- UNIT_ASSERT_VALUES_EQUAL(ret.TypeId, 25);
- UNIT_ASSERT_VALUES_EQUAL(ret.ArrayTypeId, 1009);
- UNIT_ASSERT_VALUES_EQUAL(ret.Name, "text");
- UNIT_ASSERT_VALUES_EQUAL(ret.ElementTypeId, 0);
- UNIT_ASSERT_VALUES_EQUAL(ret.TypeCollation, DefaultCollationOid);
- UNIT_ASSERT_VALUES_EQUAL(ret.TypType, ETypType::Base);
- UNIT_ASSERT(ret.LessProcId);
- UNIT_ASSERT(ret.EqualProcId);
- UNIT_ASSERT(ret.CompareProcId);
- UNIT_ASSERT(ret.HashProcId);
-
- ret = LookupType("point");
- UNIT_ASSERT_VALUES_EQUAL(ret.TypeId, 600);
- UNIT_ASSERT_VALUES_EQUAL(ret.ArrayTypeId, 1017);
- UNIT_ASSERT_VALUES_EQUAL(ret.Name, "point");
- UNIT_ASSERT_VALUES_EQUAL(ret.ElementTypeId, LookupType("float8").TypeId);
- UNIT_ASSERT_VALUES_EQUAL(ret.TypType, ETypType::Base);
- UNIT_ASSERT(ret.TypeSubscriptFuncId);
- UNIT_ASSERT(!ret.LessProcId);
- UNIT_ASSERT(!ret.EqualProcId);
- UNIT_ASSERT(!ret.CompareProcId);
- UNIT_ASSERT(!ret.HashProcId);
-
- ret = LookupType(1009);
- UNIT_ASSERT_VALUES_EQUAL(ret.TypeId, 1009);
- UNIT_ASSERT_VALUES_EQUAL(ret.ArrayTypeId, 1009);
- UNIT_ASSERT_VALUES_EQUAL(ret.Name, "_text");
- UNIT_ASSERT_VALUES_EQUAL(ret.ElementTypeId, 25);
- UNIT_ASSERT_VALUES_EQUAL(ret.TypeCollation, DefaultCollationOid);
- UNIT_ASSERT_VALUES_EQUAL(ret.TypType, ETypType::Base);
- }
+Y_UNIT_TEST(TestOk) {
+ auto ret = LookupType("text");
+ UNIT_ASSERT_VALUES_EQUAL(ret.TypeId, 25);
+ UNIT_ASSERT_VALUES_EQUAL(ret.ArrayTypeId, 1009);
+ UNIT_ASSERT_VALUES_EQUAL(ret.Name, "text");
+ UNIT_ASSERT_VALUES_EQUAL(ret.ElementTypeId, 0);
+ UNIT_ASSERT_VALUES_EQUAL(ret.TypeCollation, DefaultCollationOid);
+ UNIT_ASSERT_VALUES_EQUAL(ret.TypType, ETypType::Base);
+ UNIT_ASSERT(ret.LessProcId);
+ UNIT_ASSERT(ret.EqualProcId);
+ UNIT_ASSERT(ret.CompareProcId);
+ UNIT_ASSERT(ret.HashProcId);
+
+ ret = LookupType("point");
+ UNIT_ASSERT_VALUES_EQUAL(ret.TypeId, 600);
+ UNIT_ASSERT_VALUES_EQUAL(ret.ArrayTypeId, 1017);
+ UNIT_ASSERT_VALUES_EQUAL(ret.Name, "point");
+ UNIT_ASSERT_VALUES_EQUAL(ret.ElementTypeId, LookupType("float8").TypeId);
+ UNIT_ASSERT_VALUES_EQUAL(ret.TypType, ETypType::Base);
+ UNIT_ASSERT(ret.TypeSubscriptFuncId);
+ UNIT_ASSERT(!ret.LessProcId);
+ UNIT_ASSERT(!ret.EqualProcId);
+ UNIT_ASSERT(!ret.CompareProcId);
+ UNIT_ASSERT(!ret.HashProcId);
+
+ ret = LookupType(1009);
+ UNIT_ASSERT_VALUES_EQUAL(ret.TypeId, 1009);
+ UNIT_ASSERT_VALUES_EQUAL(ret.ArrayTypeId, 1009);
+ UNIT_ASSERT_VALUES_EQUAL(ret.Name, "_text");
+ UNIT_ASSERT_VALUES_EQUAL(ret.ElementTypeId, 25);
+ UNIT_ASSERT_VALUES_EQUAL(ret.TypeCollation, DefaultCollationOid);
+ UNIT_ASSERT_VALUES_EQUAL(ret.TypType, ETypType::Base);
}
+} // Y_UNIT_TEST_SUITE(TTypesTests)
Y_UNIT_TEST_SUITE(TFunctionsTests) {
- Y_UNIT_TEST(TestMissing) {
- UNIT_ASSERT_EXCEPTION(LookupProcByStrArgTypes("_foo_bar_", {}), yexception);
- }
+Y_UNIT_TEST(TestMissing) {
+ UNIT_ASSERT_EXCEPTION(LookupProcByStrArgTypes("_foo_bar_", {}), yexception);
+}
- Y_UNIT_TEST(TestMismatchArgTypes) {
- UNIT_ASSERT_EXCEPTION(LookupProcByStrArgTypes("int4pl", {}), yexception);
- }
+Y_UNIT_TEST(TestMismatchArgTypes) {
+ UNIT_ASSERT_EXCEPTION(LookupProcByStrArgTypes("int4pl", {}), yexception);
+}
- Y_UNIT_TEST(TestOk) {
- auto ret = LookupProcByStrArgTypes("int4pl", {"int4", "int4"});
- UNIT_ASSERT_VALUES_EQUAL(ret.ResultType, LookupType("int4").TypeId);
- UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes.size(), 2);
- UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes[0], LookupType("int4").TypeId);
- UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes[1], LookupType("int4").TypeId);
- UNIT_ASSERT_VALUES_EQUAL(ret.Src, "int4pl");
- UNIT_ASSERT(ret.Kind == EProcKind::Function);
-
- ret = LookupProcByStrArgTypes("substring", {"text", "int4", "int4"});
- UNIT_ASSERT_VALUES_EQUAL(ret.ResultType, LookupType("text").TypeId);
- UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes.size(), 3);
- UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes[0], LookupType("text").TypeId);
- UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes[1], LookupType("int4").TypeId);
- UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes[2], LookupType("int4").TypeId);
- UNIT_ASSERT_VALUES_EQUAL(ret.Src, "text_substr");
-
- ret = LookupProcByStrArgTypes("substring", {"text", "int4"});
- UNIT_ASSERT_VALUES_EQUAL(ret.ResultType, LookupType("text").TypeId);
- UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes.size(), 2);
- UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes[0], LookupType("text").TypeId);
- UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes[1], LookupType("int4").TypeId);
- UNIT_ASSERT_VALUES_EQUAL(ret.Src, "text_substr_no_len");
-
- ret = LookupProcByStrArgTypes("sum", {"int4"});
- UNIT_ASSERT(ret.Kind == EProcKind::Aggregate);
-
- ret = LookupProcByStrArgTypes("row_number", {});
- UNIT_ASSERT(ret.Kind == EProcKind::Window);
- }
+Y_UNIT_TEST(TestOk) {
+ auto ret = LookupProcByStrArgTypes("int4pl", {"int4", "int4"});
+ UNIT_ASSERT_VALUES_EQUAL(ret.ResultType, LookupType("int4").TypeId);
+ UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes.size(), 2);
+ UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes[0], LookupType("int4").TypeId);
+ UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes[1], LookupType("int4").TypeId);
+ UNIT_ASSERT_VALUES_EQUAL(ret.Src, "int4pl");
+ UNIT_ASSERT(ret.Kind == EProcKind::Function);
+
+ ret = LookupProcByStrArgTypes("substring", {"text", "int4", "int4"});
+ UNIT_ASSERT_VALUES_EQUAL(ret.ResultType, LookupType("text").TypeId);
+ UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes.size(), 3);
+ UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes[0], LookupType("text").TypeId);
+ UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes[1], LookupType("int4").TypeId);
+ UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes[2], LookupType("int4").TypeId);
+ UNIT_ASSERT_VALUES_EQUAL(ret.Src, "text_substr");
+
+ ret = LookupProcByStrArgTypes("substring", {"text", "int4"});
+ UNIT_ASSERT_VALUES_EQUAL(ret.ResultType, LookupType("text").TypeId);
+ UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes.size(), 2);
+ UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes[0], LookupType("text").TypeId);
+ UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes[1], LookupType("int4").TypeId);
+ UNIT_ASSERT_VALUES_EQUAL(ret.Src, "text_substr_no_len");
+
+ ret = LookupProcByStrArgTypes("sum", {"int4"});
+ UNIT_ASSERT(ret.Kind == EProcKind::Aggregate);
+
+ ret = LookupProcByStrArgTypes("row_number", {});
+ UNIT_ASSERT(ret.Kind == EProcKind::Window);
}
+} // Y_UNIT_TEST_SUITE(TFunctionsTests)
Y_UNIT_TEST_SUITE(TCastsTests) {
- Y_UNIT_TEST(TestMissing) {
- UNIT_ASSERT_EXCEPTION(LookupCast(LookupType("circle").TypeId, LookupType("int8").TypeId), yexception);
- }
+Y_UNIT_TEST(TestMissing) {
+ UNIT_ASSERT_EXCEPTION(LookupCast(LookupType("circle").TypeId, LookupType("int8").TypeId), yexception);
+}
- Y_UNIT_TEST(TestOk) {
- auto ret = LookupCast(LookupType("int8").TypeId, LookupType("int4").TypeId);
- UNIT_ASSERT_VALUES_EQUAL(ret.SourceId, LookupType("int8").TypeId);
- UNIT_ASSERT_VALUES_EQUAL(ret.TargetId, LookupType("int4").TypeId);
- UNIT_ASSERT_VALUES_EQUAL(ret.CoercionCode, ECoercionCode::Assignment);
- UNIT_ASSERT(ret.Method == ECastMethod::Function);
- UNIT_ASSERT_VALUES_UNEQUAL(ret.FunctionId, 0);
-
- ret = LookupCast(LookupType("int4").TypeId, LookupType("oid").TypeId);
- UNIT_ASSERT_VALUES_EQUAL(ret.SourceId, LookupType("int4").TypeId);
- UNIT_ASSERT_VALUES_EQUAL(ret.TargetId, LookupType("oid").TypeId);
- UNIT_ASSERT(ret.Method == ECastMethod::Binary);
- UNIT_ASSERT_VALUES_EQUAL(ret.FunctionId, 0);
-
- ret = LookupCast(LookupType("json").TypeId, LookupType("jsonb").TypeId);
- UNIT_ASSERT_VALUES_EQUAL(ret.SourceId, LookupType("json").TypeId);
- UNIT_ASSERT_VALUES_EQUAL(ret.TargetId, LookupType("jsonb").TypeId);
- UNIT_ASSERT_VALUES_EQUAL(ret.FunctionId, 0);
- }
+Y_UNIT_TEST(TestOk) {
+ auto ret = LookupCast(LookupType("int8").TypeId, LookupType("int4").TypeId);
+ UNIT_ASSERT_VALUES_EQUAL(ret.SourceId, LookupType("int8").TypeId);
+ UNIT_ASSERT_VALUES_EQUAL(ret.TargetId, LookupType("int4").TypeId);
+ UNIT_ASSERT_VALUES_EQUAL(ret.CoercionCode, ECoercionCode::Assignment);
+ UNIT_ASSERT(ret.Method == ECastMethod::Function);
+ UNIT_ASSERT_VALUES_UNEQUAL(ret.FunctionId, 0);
+
+ ret = LookupCast(LookupType("int4").TypeId, LookupType("oid").TypeId);
+ UNIT_ASSERT_VALUES_EQUAL(ret.SourceId, LookupType("int4").TypeId);
+ UNIT_ASSERT_VALUES_EQUAL(ret.TargetId, LookupType("oid").TypeId);
+ UNIT_ASSERT(ret.Method == ECastMethod::Binary);
+ UNIT_ASSERT_VALUES_EQUAL(ret.FunctionId, 0);
+
+ ret = LookupCast(LookupType("json").TypeId, LookupType("jsonb").TypeId);
+ UNIT_ASSERT_VALUES_EQUAL(ret.SourceId, LookupType("json").TypeId);
+ UNIT_ASSERT_VALUES_EQUAL(ret.TargetId, LookupType("jsonb").TypeId);
+ UNIT_ASSERT_VALUES_EQUAL(ret.FunctionId, 0);
}
+} // Y_UNIT_TEST_SUITE(TCastsTests)
Y_UNIT_TEST_SUITE(TAggregationsTests) {
- Y_UNIT_TEST(TestMissing) {
- UNIT_ASSERT_EXCEPTION(LookupAggregation("foo", {}), yexception);
- }
+Y_UNIT_TEST(TestMissing) {
+ UNIT_ASSERT_EXCEPTION(LookupAggregation("foo", {}), yexception);
+}
- Y_UNIT_TEST(TestOk) {
- auto ret = LookupAggregation("sum", {LookupType("int4").TypeId});
- UNIT_ASSERT_VALUES_EQUAL(ret.TransTypeId, LookupType("int8").TypeId);
- UNIT_ASSERT_VALUES_EQUAL(ret.Name, "sum");
- UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes.size(), 1);
- UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes[0], LookupType("int4").TypeId);
- UNIT_ASSERT_VALUES_EQUAL(LookupProc(ret.TransFuncId).Name, "int4_sum");
- UNIT_ASSERT_VALUES_EQUAL(LookupProc(ret.CombineFuncId).Name, "int8pl");
- UNIT_ASSERT_VALUES_EQUAL(ret.FinalFuncId, 0);
- UNIT_ASSERT_VALUES_EQUAL(ret.SerializeFuncId, 0);
- UNIT_ASSERT_VALUES_EQUAL(ret.DeserializeFuncId, 0);
-
- ret = LookupAggregation("sum", {LookupType("int8").TypeId});
- UNIT_ASSERT_VALUES_EQUAL(ret.TransTypeId, LookupType("internal").TypeId);
- UNIT_ASSERT_VALUES_EQUAL(ret.Name, "sum");
- UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes.size(), 1);
- UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes[0], LookupType("int8").TypeId);
- UNIT_ASSERT_VALUES_EQUAL(LookupProc(ret.TransFuncId).Name, "int8_avg_accum");
- UNIT_ASSERT_VALUES_EQUAL(LookupProc(ret.CombineFuncId).Name, "int8_avg_combine");
- UNIT_ASSERT_VALUES_EQUAL(LookupProc(ret.FinalFuncId).Name, "numeric_poly_sum");
- UNIT_ASSERT_VALUES_EQUAL(LookupProc(ret.SerializeFuncId).Name, "int8_avg_serialize");
- UNIT_ASSERT_VALUES_EQUAL(LookupProc(ret.DeserializeFuncId).Name, "int8_avg_deserialize");
-
- ret = LookupAggregation("xmlagg", {LookupType("xml").TypeId});
- UNIT_ASSERT_VALUES_EQUAL(ret.TransTypeId, LookupType("xml").TypeId);
- UNIT_ASSERT_VALUES_EQUAL(ret.Name, "xmlagg");
- UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes.size(), 1);
- UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes[0], LookupType("xml").TypeId);
- UNIT_ASSERT_VALUES_EQUAL(LookupProc(ret.TransFuncId).Name, "xmlconcat2");
- UNIT_ASSERT_VALUES_EQUAL(ret.CombineFuncId, 0);
- UNIT_ASSERT_VALUES_EQUAL(ret.FinalFuncId, 0);
- UNIT_ASSERT_VALUES_EQUAL(ret.SerializeFuncId, 0);
- UNIT_ASSERT_VALUES_EQUAL(ret.DeserializeFuncId, 0);
-
- ret = LookupAggregation("regr_count", {LookupType("float8").TypeId, LookupType("float8").TypeId});
- UNIT_ASSERT_VALUES_EQUAL(ret.TransTypeId, LookupType("int8").TypeId);
- UNIT_ASSERT_VALUES_EQUAL(ret.Name, "regr_count");
- UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes.size(), 2);
- UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes[0], LookupType("float8").TypeId);
- UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes[1], LookupType("float8").TypeId);
- UNIT_ASSERT_VALUES_EQUAL(LookupProc(ret.TransFuncId).Name, "int8inc_float8_float8");
- UNIT_ASSERT_VALUES_EQUAL(LookupProc(ret.CombineFuncId).Name, "int8pl");
- UNIT_ASSERT_VALUES_EQUAL(ret.FinalFuncId, 0);
- UNIT_ASSERT_VALUES_EQUAL(ret.SerializeFuncId, 0);
- UNIT_ASSERT_VALUES_EQUAL(ret.DeserializeFuncId, 0);
- }
+Y_UNIT_TEST(TestOk) {
+ auto ret = LookupAggregation("sum", {LookupType("int4").TypeId});
+ UNIT_ASSERT_VALUES_EQUAL(ret.TransTypeId, LookupType("int8").TypeId);
+ UNIT_ASSERT_VALUES_EQUAL(ret.Name, "sum");
+ UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes.size(), 1);
+ UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes[0], LookupType("int4").TypeId);
+ UNIT_ASSERT_VALUES_EQUAL(LookupProc(ret.TransFuncId).Name, "int4_sum");
+ UNIT_ASSERT_VALUES_EQUAL(LookupProc(ret.CombineFuncId).Name, "int8pl");
+ UNIT_ASSERT_VALUES_EQUAL(ret.FinalFuncId, 0);
+ UNIT_ASSERT_VALUES_EQUAL(ret.SerializeFuncId, 0);
+ UNIT_ASSERT_VALUES_EQUAL(ret.DeserializeFuncId, 0);
+
+ ret = LookupAggregation("sum", {LookupType("int8").TypeId});
+ UNIT_ASSERT_VALUES_EQUAL(ret.TransTypeId, LookupType("internal").TypeId);
+ UNIT_ASSERT_VALUES_EQUAL(ret.Name, "sum");
+ UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes.size(), 1);
+ UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes[0], LookupType("int8").TypeId);
+ UNIT_ASSERT_VALUES_EQUAL(LookupProc(ret.TransFuncId).Name, "int8_avg_accum");
+ UNIT_ASSERT_VALUES_EQUAL(LookupProc(ret.CombineFuncId).Name, "int8_avg_combine");
+ UNIT_ASSERT_VALUES_EQUAL(LookupProc(ret.FinalFuncId).Name, "numeric_poly_sum");
+ UNIT_ASSERT_VALUES_EQUAL(LookupProc(ret.SerializeFuncId).Name, "int8_avg_serialize");
+ UNIT_ASSERT_VALUES_EQUAL(LookupProc(ret.DeserializeFuncId).Name, "int8_avg_deserialize");
+
+ ret = LookupAggregation("xmlagg", {LookupType("xml").TypeId});
+ UNIT_ASSERT_VALUES_EQUAL(ret.TransTypeId, LookupType("xml").TypeId);
+ UNIT_ASSERT_VALUES_EQUAL(ret.Name, "xmlagg");
+ UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes.size(), 1);
+ UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes[0], LookupType("xml").TypeId);
+ UNIT_ASSERT_VALUES_EQUAL(LookupProc(ret.TransFuncId).Name, "xmlconcat2");
+ UNIT_ASSERT_VALUES_EQUAL(ret.CombineFuncId, 0);
+ UNIT_ASSERT_VALUES_EQUAL(ret.FinalFuncId, 0);
+ UNIT_ASSERT_VALUES_EQUAL(ret.SerializeFuncId, 0);
+ UNIT_ASSERT_VALUES_EQUAL(ret.DeserializeFuncId, 0);
+
+ ret = LookupAggregation("regr_count", {LookupType("float8").TypeId, LookupType("float8").TypeId});
+ UNIT_ASSERT_VALUES_EQUAL(ret.TransTypeId, LookupType("int8").TypeId);
+ UNIT_ASSERT_VALUES_EQUAL(ret.Name, "regr_count");
+ UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes.size(), 2);
+ UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes[0], LookupType("float8").TypeId);
+ UNIT_ASSERT_VALUES_EQUAL(ret.ArgTypes[1], LookupType("float8").TypeId);
+ UNIT_ASSERT_VALUES_EQUAL(LookupProc(ret.TransFuncId).Name, "int8inc_float8_float8");
+ UNIT_ASSERT_VALUES_EQUAL(LookupProc(ret.CombineFuncId).Name, "int8pl");
+ UNIT_ASSERT_VALUES_EQUAL(ret.FinalFuncId, 0);
+ UNIT_ASSERT_VALUES_EQUAL(ret.SerializeFuncId, 0);
+ UNIT_ASSERT_VALUES_EQUAL(ret.DeserializeFuncId, 0);
}
+} // Y_UNIT_TEST_SUITE(TAggregationsTests)
Y_UNIT_TEST_SUITE(TOpClassesTests) {
- Y_UNIT_TEST(TestMissing) {
- UNIT_ASSERT_EXCEPTION(LookupDefaultOpClass(EOpClassMethod::Btree, LookupType("json").TypeId), yexception);
- }
+Y_UNIT_TEST(TestMissing) {
+ UNIT_ASSERT_EXCEPTION(LookupDefaultOpClass(EOpClassMethod::Btree, LookupType("json").TypeId), yexception);
+}
- Y_UNIT_TEST(TestOk) {
- auto ret = *LookupDefaultOpClass(EOpClassMethod::Btree, LookupType("int4").TypeId);
- UNIT_ASSERT(ret.Method == EOpClassMethod::Btree);
- UNIT_ASSERT_VALUES_EQUAL(ret.TypeId, LookupType("int4").TypeId);
- UNIT_ASSERT_VALUES_EQUAL(ret.Name, "int4_ops");
- UNIT_ASSERT_VALUES_EQUAL(ret.Family, "btree/integer_ops");
- UNIT_ASSERT_VALUES_EQUAL(ret.FamilyId, 1976);
-
- ret = *LookupDefaultOpClass(EOpClassMethod::Hash, LookupType("int4").TypeId);
- UNIT_ASSERT(ret.Method == EOpClassMethod::Hash);
- UNIT_ASSERT_VALUES_EQUAL(ret.TypeId, LookupType("int4").TypeId);
- UNIT_ASSERT_VALUES_EQUAL(ret.Name, "int4_ops");
- UNIT_ASSERT_VALUES_EQUAL(ret.Family, "hash/integer_ops");
- UNIT_ASSERT_VALUES_EQUAL(ret.FamilyId, 1977);
- }
+Y_UNIT_TEST(TestOk) {
+ auto ret = *LookupDefaultOpClass(EOpClassMethod::Btree, LookupType("int4").TypeId);
+ UNIT_ASSERT(ret.Method == EOpClassMethod::Btree);
+ UNIT_ASSERT_VALUES_EQUAL(ret.TypeId, LookupType("int4").TypeId);
+ UNIT_ASSERT_VALUES_EQUAL(ret.Name, "int4_ops");
+ UNIT_ASSERT_VALUES_EQUAL(ret.Family, "btree/integer_ops");
+ UNIT_ASSERT_VALUES_EQUAL(ret.FamilyId, 1976);
+
+ ret = *LookupDefaultOpClass(EOpClassMethod::Hash, LookupType("int4").TypeId);
+ UNIT_ASSERT(ret.Method == EOpClassMethod::Hash);
+ UNIT_ASSERT_VALUES_EQUAL(ret.TypeId, LookupType("int4").TypeId);
+ UNIT_ASSERT_VALUES_EQUAL(ret.Name, "int4_ops");
+ UNIT_ASSERT_VALUES_EQUAL(ret.Family, "hash/integer_ops");
+ UNIT_ASSERT_VALUES_EQUAL(ret.FamilyId, 1977);
}
+} // Y_UNIT_TEST_SUITE(TOpClassesTests)
Y_UNIT_TEST_SUITE(TConversionTests) {
- Y_UNIT_TEST(TestMissing) {
- UNIT_ASSERT_EXCEPTION(LookupConversion("foo", "bar"), yexception);
- }
+Y_UNIT_TEST(TestMissing) {
+ UNIT_ASSERT_EXCEPTION(LookupConversion("foo", "bar"), yexception);
+}
- Y_UNIT_TEST(TestOk) {
- auto procId = LookupConversion("LATIN1", "UTF8").ProcId;
- UNIT_ASSERT_VALUES_EQUAL(LookupProc(procId).Name, "iso8859_1_to_utf8");
- }
+Y_UNIT_TEST(TestOk) {
+ auto procId = LookupConversion("LATIN1", "UTF8").ProcId;
+ UNIT_ASSERT_VALUES_EQUAL(LookupProc(procId).Name, "iso8859_1_to_utf8");
}
+} // Y_UNIT_TEST_SUITE(TConversionTests)
diff --git a/yql/essentials/parser/pg_catalog/ut/ya.make b/yql/essentials/parser/pg_catalog/ut/ya.make
index 0835e9bbf06..264f1bec741 100644
--- a/yql/essentials/parser/pg_catalog/ut/ya.make
+++ b/yql/essentials/parser/pg_catalog/ut/ya.make
@@ -1,5 +1,7 @@
UNITTEST_FOR(yql/essentials/parser/pg_catalog)
+ENABLE(YQL_STYLE_CPP)
+
SRCS(
catalog_ut.cpp
catalog_consts_ut.cpp
diff --git a/yql/essentials/parser/pg_catalog/ya.make b/yql/essentials/parser/pg_catalog/ya.make
index 815bcaa3408..b24d1b47446 100644
--- a/yql/essentials/parser/pg_catalog/ya.make
+++ b/yql/essentials/parser/pg_catalog/ya.make
@@ -1,5 +1,7 @@
LIBRARY()
+#ENABLE(YQL_STYLE_CPP) need to avoid generated files
+
RESOURCE(data/pg_operator.dat pg_operator.dat)
RESOURCE(data/pg_proc.dat pg_proc.dat)
RESOURCE(data/pg_type.dat pg_type.dat)
diff --git a/yql/essentials/parser/proto_ast/antlr3/proto_ast_antlr3.cpp b/yql/essentials/parser/proto_ast/antlr3/proto_ast_antlr3.cpp
index d317de96982..215c8296d9d 100644
--- a/yql/essentials/parser/proto_ast/antlr3/proto_ast_antlr3.cpp
+++ b/yql/essentials/parser/proto_ast/antlr3/proto_ast_antlr3.cpp
@@ -1 +1 @@
-#include "proto_ast_antlr3.h" \ No newline at end of file
+#include "proto_ast_antlr3.h"
diff --git a/yql/essentials/parser/proto_ast/antlr3/proto_ast_antlr3.h b/yql/essentials/parser/proto_ast/antlr3/proto_ast_antlr3.h
index 878a1d42ba9..a36e2cfda22 100644
--- a/yql/essentials/parser/proto_ast/antlr3/proto_ast_antlr3.h
+++ b/yql/essentials/parser/proto_ast/antlr3/proto_ast_antlr3.h
@@ -5,88 +5,88 @@
#include <contrib/libs/antlr3_cpp_runtime/include/antlr3.hpp>
namespace NProtoAST {
- using namespace NAST;
+using namespace NAST;
- template <typename TParser, typename TLexer>
- class TProtoASTBuilder3 {
- typedef ANTLR_UINT8 TChar;
+template <typename TParser, typename TLexer>
+class TProtoASTBuilder3 {
+ typedef ANTLR_UINT8 TChar;
- public:
- TProtoASTBuilder3(TStringBuf data, const TString& queryName = "query", google::protobuf::Arena* arena = nullptr)
- : QueryName_(queryName)
- , InputStream_((const TChar*)data.data(), antlr3::ENC_8BIT, data.length(), (TChar*)QueryName_.begin()) // Why the hell antlr needs non-const ptr??
- , Lexer_(&InputStream_, static_cast<google::protobuf::Arena*>(nullptr))
- , TokenStream_(ANTLR_SIZE_HINT, Lexer_.get_tokSource())
- , Parser_(&TokenStream_, arena)
- {
- }
+public:
+ TProtoASTBuilder3(TStringBuf data, const TString& queryName = "query", google::protobuf::Arena* arena = nullptr)
+ : QueryName_(queryName)
+ , InputStream_((const TChar*)data.data(), antlr3::ENC_8BIT, data.length(), (TChar*)QueryName_.begin()) // Why the hell antlr needs non-const ptr??
+ , Lexer_(&InputStream_, static_cast<google::protobuf::Arena*>(nullptr))
+ , TokenStream_(ANTLR_SIZE_HINT, Lexer_.get_tokSource())
+ , Parser_(&TokenStream_, arena)
+ {
+ }
- google::protobuf::Message* BuildAST(IErrorCollector& errors) {
- // TODO: find a better way to break on lexer errors
- try {
- Lexer_.ReportErrors(&errors);
- return Parser_.Parse(Lexer_, &errors);
- } catch (const TTooManyErrors&) {
- return nullptr;
- } catch (...) {
- errors.Error(0, 0, CurrentExceptionMessage());
- return nullptr;
- }
+ google::protobuf::Message* BuildAST(IErrorCollector& errors) {
+ // TODO: find a better way to break on lexer errors
+ try {
+ Lexer_.ReportErrors(&errors);
+ return Parser_.Parse(Lexer_, &errors);
+ } catch (const TTooManyErrors&) {
+ return nullptr;
+ } catch (...) {
+ errors.Error(0, 0, CurrentExceptionMessage());
+ return nullptr;
}
+ }
- private:
- TString QueryName_;
+private:
+ TString QueryName_;
- typename TLexer::InputStreamType InputStream_;
- TLexer Lexer_;
+ typename TLexer::InputStreamType InputStream_;
+ TLexer Lexer_;
- typename TParser::TokenStreamType TokenStream_;
- TParser Parser_;
- };
+ typename TParser::TokenStreamType TokenStream_;
+ TParser Parser_;
+};
- template <typename TLexer>
- class TLexerTokensCollector3 {
- typedef ANTLR_UINT8 TChar;
+template <typename TLexer>
+class TLexerTokensCollector3 {
+ typedef ANTLR_UINT8 TChar;
- public:
- TLexerTokensCollector3(TStringBuf data, const char** tokenNames, const TString& queryName = "query")
- : TokenNames_(tokenNames)
- , QueryName_(queryName)
- , InputStream_((const TChar*)data.data(), antlr3::ENC_8BIT, data.length(), (TChar*)QueryName_.begin())
- , Lexer_(&InputStream_, static_cast<google::protobuf::Arena*>(nullptr))
- {
- }
+public:
+ TLexerTokensCollector3(TStringBuf data, const char** tokenNames, const TString& queryName = "query")
+ : TokenNames_(tokenNames)
+ , QueryName_(queryName)
+ , InputStream_((const TChar*)data.data(), antlr3::ENC_8BIT, data.length(), (TChar*)QueryName_.begin())
+ , Lexer_(&InputStream_, static_cast<google::protobuf::Arena*>(nullptr))
+ {
+ }
- void CollectTokens(IErrorCollector& errors, const NSQLTranslation::ILexer::TTokenCallback& onNextToken) {
- try {
- Lexer_.ReportErrors(&errors);
- auto src = Lexer_.get_tokSource();
+ void CollectTokens(IErrorCollector& errors, const NSQLTranslation::ILexer::TTokenCallback& onNextToken) {
+ try {
+ Lexer_.ReportErrors(&errors);
+ auto src = Lexer_.get_tokSource();
- for (;;) {
- auto token = src->nextToken();
- auto type = token->getType();
- const bool isEOF = type == TLexer::CommonTokenType::TOKEN_EOF;
- NSQLTranslation::TParsedToken last;
- last.Name = isEOF ? "EOF" : TokenNames_[type];
- last.Content = token->getText();
- last.Line = token->get_line();
- last.LinePos = token->get_charPositionInLine();
+ for (;;) {
+ auto token = src->nextToken();
+ auto type = token->getType();
+ const bool isEOF = type == TLexer::CommonTokenType::TOKEN_EOF;
+ NSQLTranslation::TParsedToken last;
+ last.Name = isEOF ? "EOF" : TokenNames_[type];
+ last.Content = token->getText();
+ last.Line = token->get_line();
+ last.LinePos = token->get_charPositionInLine();
- onNextToken(std::move(last));
- if (isEOF) {
- break;
- }
+ onNextToken(std::move(last));
+ if (isEOF) {
+ break;
}
- } catch (const TTooManyErrors&) {
- } catch (...) {
- errors.Error(0, 0, CurrentExceptionMessage());
}
+ } catch (const TTooManyErrors&) {
+ } catch (...) {
+ errors.Error(0, 0, CurrentExceptionMessage());
}
+ }
- private:
- const char** TokenNames_;
- TString QueryName_;
- typename TLexer::InputStreamType InputStream_;
- TLexer Lexer_;
- };
+private:
+ const char** TokenNames_;
+ TString QueryName_;
+ typename TLexer::InputStreamType InputStream_;
+ TLexer Lexer_;
+};
} // namespace NProtoAST
diff --git a/yql/essentials/parser/proto_ast/antlr4/proto_ast_antlr4.h b/yql/essentials/parser/proto_ast/antlr4/proto_ast_antlr4.h
index 12b8b87fea1..e126a150bbc 100644
--- a/yql/essentials/parser/proto_ast/antlr4/proto_ast_antlr4.h
+++ b/yql/essentials/parser/proto_ast/antlr4/proto_ast_antlr4.h
@@ -7,90 +7,87 @@
#include <yql/essentials/parser/proto_ast/common.h>
#ifdef ERROR
-#undef ERROR
+ #undef ERROR
#endif
#include <contrib/libs/antlr4_cpp_runtime/src/antlr4-runtime.h>
namespace NProtoAST {
- using namespace NAST;
+using namespace NAST;
- template <typename InputType>
- void InvalidCharacter(IOutputStream& err, const InputType* input);
+template <typename InputType>
+void InvalidCharacter(IOutputStream& err, const InputType* input);
- template <typename TokenType>
- inline void InvalidToken(IOutputStream& err, const TokenType* token);
+template <typename TokenType>
+inline void InvalidToken(IOutputStream& err, const TokenType* token);
- template <>
- inline void InvalidToken<antlr4::Token>(IOutputStream& err, const antlr4::Token* token) {
- if (token) {
- if (token->getInputStream()) {
- err << " '" << token->getText() << "'";
- } else {
- err << ABSENCE;
- }
+template <>
+inline void InvalidToken<antlr4::Token>(IOutputStream& err, const antlr4::Token* token) {
+ if (token) {
+ if (token->getInputStream()) {
+ err << " '" << token->getText() << "'";
+ } else {
+ err << ABSENCE;
}
}
+}
- template <typename TParser, typename TLexer>
- class TProtoASTBuilder4 {
-
- public:
- TProtoASTBuilder4(
- TStringBuf data,
- const TString& queryName = "query",
- google::protobuf::Arena* arena = nullptr,
- bool isAmbiguityError = false,
- bool isAmbiguityDebugging = false
- )
- : QueryName_(queryName)
- , IsAmbiguityError_(isAmbiguityError)
- , InputStream_(data)
- , Lexer_(&InputStream_)
- , TokenStream_(&Lexer_)
- , Parser_(&TokenStream_, arena)
- {
- if (isAmbiguityDebugging) {
- Parser_
- .template getInterpreter<antlr4::atn::ParserATNSimulator>()
- ->setPredictionMode(antlr4::atn::PredictionMode::LL_EXACT_AMBIG_DETECTION);
- }
+template <typename TParser, typename TLexer>
+class TProtoASTBuilder4 {
+public:
+ TProtoASTBuilder4(
+ TStringBuf data,
+ const TString& queryName = "query",
+ google::protobuf::Arena* arena = nullptr,
+ bool isAmbiguityError = false,
+ bool isAmbiguityDebugging = false)
+ : QueryName_(queryName)
+ , IsAmbiguityError_(isAmbiguityError)
+ , InputStream_(data)
+ , Lexer_(&InputStream_)
+ , TokenStream_(&Lexer_)
+ , Parser_(&TokenStream_, arena)
+ {
+ if (isAmbiguityDebugging) {
+ Parser_
+ .template getInterpreter<antlr4::atn::ParserATNSimulator>()
+ ->setPredictionMode(antlr4::atn::PredictionMode::LL_EXACT_AMBIG_DETECTION);
}
+ }
- google::protobuf::Message* BuildAST(IErrorCollector& errors) {
- // TODO: find a better way to break on lexer errors
- typename antlr4::YqlErrorListener listener(&errors, &Parser_.error, IsAmbiguityError_);
- Parser_.removeErrorListeners();
- Parser_.addErrorListener(&listener);
- try {
- auto result = Parser_.Parse(&errors);
- Parser_.removeErrorListener(&listener);
- if (Parser_.error) {
- result = nullptr;
- }
- Parser_.error = false;
- return result;
- } catch (const TTooManyErrors&) {
- Parser_.removeErrorListener(&listener);
- Parser_.error = false;
- return nullptr;
- } catch (...) {
- errors.Error(0, 0, CurrentExceptionMessage());
- Parser_.removeErrorListener(&listener);
- Parser_.error = false;
- return nullptr;
+ google::protobuf::Message* BuildAST(IErrorCollector& errors) {
+ // TODO: find a better way to break on lexer errors
+ typename antlr4::YqlErrorListener listener(&errors, &Parser_.error, IsAmbiguityError_);
+ Parser_.removeErrorListeners();
+ Parser_.addErrorListener(&listener);
+ try {
+ auto result = Parser_.Parse(&errors);
+ Parser_.removeErrorListener(&listener);
+ if (Parser_.error) {
+ result = nullptr;
}
+ Parser_.error = false;
+ return result;
+ } catch (const TTooManyErrors&) {
+ Parser_.removeErrorListener(&listener);
+ Parser_.error = false;
+ return nullptr;
+ } catch (...) {
+ errors.Error(0, 0, CurrentExceptionMessage());
+ Parser_.removeErrorListener(&listener);
+ Parser_.error = false;
+ return nullptr;
}
+ }
- private:
- TString QueryName_;
- bool IsAmbiguityError_;
+private:
+ TString QueryName_;
+ bool IsAmbiguityError_;
- antlr4::ANTLRInputStream InputStream_;
- TLexer Lexer_;
+ antlr4::ANTLRInputStream InputStream_;
+ TLexer Lexer_;
- antlr4::CommonTokenStream TokenStream_;
- TParser Parser_;
- };
+ antlr4::CommonTokenStream TokenStream_;
+ TParser Parser_;
+};
} // namespace NProtoAST
-
diff --git a/yql/essentials/parser/proto_ast/antlr4/ya.make b/yql/essentials/parser/proto_ast/antlr4/ya.make
index 18c68a249bc..22ce23402bc 100644
--- a/yql/essentials/parser/proto_ast/antlr4/ya.make
+++ b/yql/essentials/parser/proto_ast/antlr4/ya.make
@@ -1,5 +1,7 @@
LIBRARY()
+ENABLE(YQL_STYLE_CPP)
+
PEERDIR(
yql/essentials/parser/common/antlr4
yql/essentials/parser/proto_ast
diff --git a/yql/essentials/parser/proto_ast/collect_issues/collect_issues.h b/yql/essentials/parser/proto_ast/collect_issues/collect_issues.h
index 11ba0c86133..92eec6efef7 100644
--- a/yql/essentials/parser/proto_ast/collect_issues/collect_issues.h
+++ b/yql/essentials/parser/proto_ast/collect_issues/collect_issues.h
@@ -1 +1,3 @@
+#pragma once
+
#include <yql/essentials/parser/common/issue.h>
diff --git a/yql/essentials/parser/proto_ast/collect_issues/ya.make b/yql/essentials/parser/proto_ast/collect_issues/ya.make
index e2e6b681dbb..f7600fb3e1e 100644
--- a/yql/essentials/parser/proto_ast/collect_issues/ya.make
+++ b/yql/essentials/parser/proto_ast/collect_issues/ya.make
@@ -1,5 +1,7 @@
LIBRARY()
+ENABLE(YQL_STYLE_CPP)
+
PEERDIR(
yql/essentials/parser/common
)
diff --git a/yql/essentials/parser/proto_ast/common.h b/yql/essentials/parser/proto_ast/common.h
index be0b5ee0810..806dcab5a73 100644
--- a/yql/essentials/parser/proto_ast/common.h
+++ b/yql/essentials/parser/proto_ast/common.h
@@ -10,48 +10,48 @@
namespace NAST {
- template <typename InputType>
- void InvalidCharacter(IOutputStream& err, const InputType* input) {
- wchar32 rune = 0;
- size_t runeLen = 0;
- auto begin = input->get_nextChar();
- auto end = begin + input->get_sizeBuf();
- if (begin != end && SafeReadUTF8Char(rune, runeLen, begin, end) == RECODE_OK) {
- err << " '" << TStringBuf((const char*)begin, runeLen) << "' (Unicode character <" << ui32(rune) << ">)";
- }
+template <typename InputType>
+void InvalidCharacter(IOutputStream& err, const InputType* input) {
+ wchar32 rune = 0;
+ size_t runeLen = 0;
+ auto begin = input->get_nextChar();
+ auto end = begin + input->get_sizeBuf();
+ if (begin != end && SafeReadUTF8Char(rune, runeLen, begin, end) == RECODE_OK) {
+ err << " '" << TStringBuf((const char*)begin, runeLen) << "' (Unicode character <" << ui32(rune) << ">)";
}
-
- template <typename TokenType>
- inline void InvalidToken(IOutputStream& err, const TokenType* token) {
- if (token) {
- if (token->get_input()) {
- err << " '" << token->getText() << "'";
- } else {
- err << ABSENCE;
- }
+}
+
+template <typename TokenType>
+inline void InvalidToken(IOutputStream& err, const TokenType* token) {
+ if (token) {
+ if (token->get_input()) {
+ err << " '" << token->getText() << "'";
+ } else {
+ err << ABSENCE;
}
}
+}
} // namespace NAST
namespace NSQLTranslation {
- class IParser {
- public:
- virtual ~IParser() = default;
+class IParser {
+public:
+ virtual ~IParser() = default;
- virtual google::protobuf::Message* Parse(
- const TString& query, const TString& queryName, NAST::IErrorCollector& err,
- google::protobuf::Arena* arena) = 0;
- };
+ virtual google::protobuf::Message* Parse(
+ const TString& query, const TString& queryName, NAST::IErrorCollector& err,
+ google::protobuf::Arena* arena) = 0;
+};
- class IParserFactory : public TThrRefBase {
- public:
- virtual ~IParserFactory() = default;
+class IParserFactory: public TThrRefBase {
+public:
+ virtual ~IParserFactory() = default;
- virtual std::unique_ptr<IParser> MakeParser() const = 0;
- };
+ virtual std::unique_ptr<IParser> MakeParser() const = 0;
+};
- using TParserFactoryPtr = TIntrusivePtr<IParserFactory>;
+using TParserFactoryPtr = TIntrusivePtr<IParserFactory>;
} // namespace NSQLTranslation
diff --git a/yql/essentials/parser/proto_ast/gen/multiproto.py b/yql/essentials/parser/proto_ast/gen/multiproto.py
index f2cc39feb63..00bb737ffc8 100644
--- a/yql/essentials/parser/proto_ast/gen/multiproto.py
+++ b/yql/essentials/parser/proto_ast/gen/multiproto.py
@@ -1,113 +1,127 @@
-import os
-import sys
-
-NSPLIT=10
-
-def main(argv):
- input_dir="."
- output_dir="."
- name=sys.argv[1]
- if len(argv)>2:
- input_dir=argv[2]
- if len(argv)>3:
- output_dir=argv[3]
- print("name:",name)
- print("input_dir:",input_dir)
- print("output_dir:",output_dir)
-
- in_h=os.path.join(input_dir,name + ".pb.h")
- in_cpp=os.path.join(input_dir,name + ".pb.cc")
- out_h=os.path.join(output_dir,name + ".pb.main.h")
- out_cpp_template=os.path.join(output_dir,name + ".pb.I")
-
- with open(out_h,"w") as out_file:
- with open(in_h,"r") as in_file:
- for line in in_file:
- line = line.replace("inline void RegisterArenaDtor","void RegisterArenaDtor")
- out_file.write(line)
-
- for i in range(0,2 + NSPLIT):
- with open(out_cpp_template.replace("I","code" + str(i) + ".cc" if i<NSPLIT else "data.cc" if i==NSPLIT else "classes.h"),"w") as out_file:
- with open(in_cpp,"r") as in_file:
- line = line.replace("inline ","")
- statement_index=0
- current_types=set()
- is_data_stmt=False
- extern_data=False
- extern_code=False
- in_class_def=False
- for line in in_file:
- if line.startswith("#include") and name + ".pb.h" in line:
- out_file.write('#include "' + name + '.pb.main.h"\n')
- if i!=NSPLIT+1:
- out_file.write('#include "' + name + '.pb.classes.h"\n')
- continue
- if line.strip()=="PROTOBUF_PRAGMA_INIT_SEG":
- out_file.write(line)
- break
- out_file.write(line)
- for line in in_file:
- line=line.replace("inline ","")
- if 'Generated::' in line and line.endswith('_default_instance_._instance,\n'):
- line = 'reinterpret_cast<const ::_pb::Message*>(' + line.removesuffix('._instance,\n') + '),'
- if line.startswith("#"):
- out_file.write(line)
- continue
- if line.startswith("namespace") or line.startswith("PROTOBUF_NAMESPACE_OPEN"):
- open_namespace = True
- out_file.write(line)
- continue
- if (line.startswith("} // namespace") or line.startswith("PROTOBUF_NAMESPACE_CLOSE")) and open_namespace:
- open_namespace = False
- out_file.write(line)
- continue
- if in_class_def:
- if (i==NSPLIT+1):
- out_file.write(line)
- if line.startswith("};"):
- in_class_def=False
- continue
- if line.startswith("PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT"):
- # MOD1 MOD2 MOD3 ... type_name varibale_name;
- type_name=line.split(" ")[-2]
- if type_name in current_types:
- out_file.write(line)
- continue
- if line.startswith("static ") or (line.startswith("const ") and ("[]" in line or "=" in line)) or line.startswith("PROTOBUF_ATTRIBUTE_WEAK") or line.startswith("PROTOBUF_ATTRIBUTE_INIT_PRIORITY2"):
- is_data_stmt = True
- extern_data = "file_level_metadata" in line or ("descriptor_table" in line and "once" in line)
- extern_code = line.startswith("PROTOBUF_ATTRIBUTE_WEAK")
- if line.startswith("class"):
- in_class_def=True
- if i==NSPLIT+1:
- out_file.write(line)
- continue
- if not is_data_stmt and (statement_index % NSPLIT)==i:
- if line.startswith("struct"):
- current_types.add(line.split(" ")[1])
- out_file.write(line)
- if is_data_stmt and i==NSPLIT:
- if extern_data:
- line = line.replace("static ","")
- out_file.write(line)
- if is_data_stmt and i<NSPLIT:
- if extern_data or extern_code:
- if extern_data:
- line = "extern " + line.replace("static ","").replace(" = {",";")
- if extern_code:
- if not "PROTOBUF_ATTRIBUTE_WEAK" in line:
- continue
- line = "extern " + line.replace(" {",";")
- out_file.write(line)
- extern_data = False
- extern_code = False
- if line.startswith("}"):
- if is_data_stmt:
- is_data_stmt=False
- extern_data = False
- extern_code = False
- else:
- statement_index += 1
-
-if __name__ == "__main__":
- main(sys.argv)
+import os
+import sys
+
+NSPLIT = 10
+
+
+def main(argv):
+ input_dir = "."
+ output_dir = "."
+ name = sys.argv[1]
+ if len(argv) > 2:
+ input_dir = argv[2]
+ if len(argv) > 3:
+ output_dir = argv[3]
+ print("name:", name)
+ print("input_dir:", input_dir)
+ print("output_dir:", output_dir)
+
+ in_h = os.path.join(input_dir, name + ".pb.h")
+ in_cpp = os.path.join(input_dir, name + ".pb.cc")
+ out_h = os.path.join(output_dir, name + ".pb.main.h")
+ out_cpp_template = os.path.join(output_dir, name + ".pb.I")
+
+ with open(out_h, "w") as out_file:
+ with open(in_h, "r") as in_file:
+ for line in in_file:
+ line = line.replace("inline void RegisterArenaDtor", "void RegisterArenaDtor")
+ out_file.write(line)
+
+ for i in range(0, 2 + NSPLIT):
+ with open(
+ out_cpp_template.replace(
+ "I", "code" + str(i) + ".cc" if i < NSPLIT else "data.cc" if i == NSPLIT else "classes.h"
+ ),
+ "w",
+ ) as out_file:
+ with open(in_cpp, "r") as in_file:
+ line = line.replace("inline ", "")
+ statement_index = 0
+ current_types = set()
+ is_data_stmt = False
+ extern_data = False
+ extern_code = False
+ in_class_def = False
+ for line in in_file:
+ if line.startswith("#include") and name + ".pb.h" in line:
+ out_file.write('#include "' + name + '.pb.main.h"\n')
+ if i != NSPLIT + 1:
+ out_file.write('#include "' + name + '.pb.classes.h"\n')
+ continue
+ if line.strip() == "PROTOBUF_PRAGMA_INIT_SEG":
+ out_file.write(line)
+ break
+ out_file.write(line)
+ for line in in_file:
+ line = line.replace("inline ", "")
+ if 'Generated::' in line and line.endswith('_default_instance_._instance,\n'):
+ line = 'reinterpret_cast<const ::_pb::Message*>(' + line.removesuffix('._instance,\n') + '),'
+ if line.startswith("#"):
+ out_file.write(line)
+ continue
+ if line.startswith("namespace") or line.startswith("PROTOBUF_NAMESPACE_OPEN"):
+ open_namespace = True
+ out_file.write(line)
+ continue
+ if (
+ line.startswith("} // namespace") or line.startswith("PROTOBUF_NAMESPACE_CLOSE")
+ ) and open_namespace:
+ open_namespace = False
+ out_file.write(line)
+ continue
+ if in_class_def:
+ if i == NSPLIT + 1:
+ out_file.write(line)
+ if line.startswith("};"):
+ in_class_def = False
+ continue
+ if line.startswith("PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT"):
+ # MOD1 MOD2 MOD3 ... type_name varibale_name;
+ type_name = line.split(" ")[-2]
+ if type_name in current_types:
+ out_file.write(line)
+ continue
+ if (
+ line.startswith("static ")
+ or (line.startswith("const ") and ("[]" in line or "=" in line))
+ or line.startswith("PROTOBUF_ATTRIBUTE_WEAK")
+ or line.startswith("PROTOBUF_ATTRIBUTE_INIT_PRIORITY2")
+ ):
+ is_data_stmt = True
+ extern_data = "file_level_metadata" in line or ("descriptor_table" in line and "once" in line)
+ extern_code = line.startswith("PROTOBUF_ATTRIBUTE_WEAK")
+ if line.startswith("class"):
+ in_class_def = True
+ if i == NSPLIT + 1:
+ out_file.write(line)
+ continue
+ if not is_data_stmt and (statement_index % NSPLIT) == i:
+ if line.startswith("struct"):
+ current_types.add(line.split(" ")[1])
+ out_file.write(line)
+ if is_data_stmt and i == NSPLIT:
+ if extern_data:
+ line = line.replace("static ", "")
+ out_file.write(line)
+ if is_data_stmt and i < NSPLIT:
+ if extern_data or extern_code:
+ if extern_data:
+ line = "extern " + line.replace("static ", "").replace(" = {", ";")
+ if extern_code:
+ if not "PROTOBUF_ATTRIBUTE_WEAK" in line:
+ continue
+ line = "extern " + line.replace(" {", ";")
+ out_file.write(line)
+ extern_data = False
+ extern_code = False
+ if line.startswith("}"):
+ if is_data_stmt:
+ is_data_stmt = False
+ extern_data = False
+ extern_code = False
+ else:
+ statement_index += 1
+
+
+if __name__ == "__main__":
+ main(sys.argv)
diff --git a/yql/essentials/parser/proto_ast/ya.make b/yql/essentials/parser/proto_ast/ya.make
index 6daae38e176..973da2e40ad 100644
--- a/yql/essentials/parser/proto_ast/ya.make
+++ b/yql/essentials/parser/proto_ast/ya.make
@@ -1,5 +1,9 @@
LIBRARY()
+HEADERS(common.h)
+
+ENABLE(YQL_STYLE_CPP)
+
PEERDIR(
contrib/libs/protobuf
yql/essentials/parser/common