sql_values.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #pragma once
  2. #include "sql_translation.h"
  3. #include <yql/essentials/parser/proto_ast/gen/v1_proto_split/SQLv1Parser.pb.main.h>
  4. namespace NSQLTranslationV1 {
  5. using namespace NSQLv1Generated;
  6. class TSqlValues: public TSqlTranslation {
  7. public:
  8. TSqlValues(TContext& ctx, NSQLTranslation::ESqlMode mode)
  9. : TSqlTranslation(ctx, mode)
  10. {
  11. }
  12. TSourcePtr Build(const TRule_values_stmt& node, TPosition& valuesPos, const TVector<TString>& derivedColumns = {}, TPosition derivedColumnsPos = TPosition());
  13. protected:
  14. bool BuildRows(const TRule_values_source_row_list& node, TVector<TVector<TNodePtr>>& rows);
  15. TSourcePtr ValuesSource(const TRule_values_source& node, const TVector<TString>& columnsHint,
  16. const TString& operationName);
  17. private:
  18. bool BuildRow(const TRule_values_source_row& inRow, TVector<TNodePtr>& outRow);
  19. };
  20. class TSqlIntoValues: public TSqlValues {
  21. public:
  22. TSqlIntoValues(TContext& ctx, NSQLTranslation::ESqlMode mode)
  23. : TSqlValues(ctx, mode)
  24. {
  25. }
  26. TSourcePtr Build(const TRule_into_values_source& node, const TString& operationName);
  27. };
  28. class TSqlAsValues: public TSqlValues {
  29. public:
  30. TSqlAsValues(TContext& ctx, NSQLTranslation::ESqlMode mode)
  31. : TSqlValues(ctx, mode)
  32. {
  33. }
  34. TSourcePtr Build(const TRule_values_source& node, const TString& operationName);
  35. };
  36. } // namespace NSQLTranslationV1