sql_match_recognize.h 1.4 KB

123456789101112131415161718192021222324252627282930
  1. #pragma once
  2. #include "sql_translation.h"
  3. #include "match_recognize.h"
  4. namespace NSQLTranslationV1 {
  5. using namespace NSQLv1Generated;
  6. class TSqlMatchRecognizeClause: public TSqlTranslation {
  7. public:
  8. TSqlMatchRecognizeClause(TContext& ctx, NSQLTranslation::ESqlMode mode)
  9. : TSqlTranslation(ctx, mode)
  10. {}
  11. TMatchRecognizeBuilderPtr CreateBuilder(const TRule_row_pattern_recognition_clause& node);
  12. private:
  13. TVector<TNamedFunction> ParsePartitionBy(const TRule_window_partition_clause& partitionClause);
  14. TNamedFunction ParseOneMeasure(const TRule_row_pattern_measure_definition& node);
  15. TVector<TNamedFunction> ParseMeasures(const TRule_row_pattern_measure_list& node);
  16. std::pair<TPosition, ERowsPerMatch> ParseRowsPerMatch(const TRule_row_pattern_rows_per_match& rowsPerMatchClause);
  17. std::pair<TPosition, NYql::NMatchRecognize::TAfterMatchSkipTo> ParseAfterMatchSkipTo(const TRule_row_pattern_skip_to& skipToClause);
  18. NYql::NMatchRecognize::TRowPatternTerm ParsePatternTerm(const TRule_row_pattern_term& node);
  19. NYql::NMatchRecognize::TRowPattern ParsePattern(const TRule_row_pattern& node);
  20. TNamedFunction ParseOneDefinition(const TRule_row_pattern_definition& node);
  21. TVector<TNamedFunction> ParseDefinitions(const TRule_row_pattern_definition_list& node);
  22. private:
  23. size_t PatternNestingLevel = 0;
  24. };
  25. } // namespace NSQLTranslationV1