summaryrefslogtreecommitdiffstats
path: root/yql/essentials/sql/v1/sql_values.h
diff options
context:
space:
mode:
authorvvvv <[email protected]>2024-11-07 12:29:36 +0300
committervvvv <[email protected]>2024-11-07 13:49:47 +0300
commitd4c258e9431675bab6745c8638df6e3dfd4dca6b (patch)
treeb5efcfa11351152a4c872fccaea35749141c0b11 /yql/essentials/sql/v1/sql_values.h
parent13a4f274caef5cfdaf0263b24e4d6bdd5521472b (diff)
Moved other yql/essentials libs YQL-19206
init commit_hash:7d4c435602078407bbf20dd3c32f9c90d2bbcbc0
Diffstat (limited to 'yql/essentials/sql/v1/sql_values.h')
-rw-r--r--yql/essentials/sql/v1/sql_values.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/yql/essentials/sql/v1/sql_values.h b/yql/essentials/sql/v1/sql_values.h
new file mode 100644
index 00000000000..7e19d1d8a0d
--- /dev/null
+++ b/yql/essentials/sql/v1/sql_values.h
@@ -0,0 +1,48 @@
+#pragma once
+
+#include "sql_translation.h"
+#include <yql/essentials/parser/proto_ast/gen/v1_proto_split/SQLv1Parser.pb.main.h>
+
+namespace NSQLTranslationV1 {
+
+using namespace NSQLv1Generated;
+
+class TSqlValues: public TSqlTranslation {
+public:
+ TSqlValues(TContext& ctx, NSQLTranslation::ESqlMode mode)
+ : TSqlTranslation(ctx, mode)
+ {
+ }
+
+ TSourcePtr Build(const TRule_values_stmt& node, TPosition& valuesPos, const TVector<TString>& derivedColumns = {}, TPosition derivedColumnsPos = TPosition());
+protected:
+ bool BuildRows(const TRule_values_source_row_list& node, TVector<TVector<TNodePtr>>& rows);
+
+ TSourcePtr ValuesSource(const TRule_values_source& node, const TVector<TString>& columnsHint,
+ const TString& operationName);
+
+private:
+ bool BuildRow(const TRule_values_source_row& inRow, TVector<TNodePtr>& outRow);
+};
+
+class TSqlIntoValues: public TSqlValues {
+public:
+ TSqlIntoValues(TContext& ctx, NSQLTranslation::ESqlMode mode)
+ : TSqlValues(ctx, mode)
+ {
+ }
+
+ TSourcePtr Build(const TRule_into_values_source& node, const TString& operationName);
+};
+
+class TSqlAsValues: public TSqlValues {
+public:
+ TSqlAsValues(TContext& ctx, NSQLTranslation::ESqlMode mode)
+ : TSqlValues(ctx, mode)
+ {
+ }
+
+ TSourcePtr Build(const TRule_values_source& node, const TString& operationName);
+};
+
+} // namespace NSQLTranslationV1