visitSelectStatement method

  1. @override
void visitSelectStatement(
  1. SelectStatement e,
  2. void arg
)
override

Implementation

@override
void visitSelectStatement(SelectStatement e, void arg) {
  visitNullable(e.withClause, arg);
  keyword(TokenType.select);
  if (e.distinct) {
    keyword(TokenType.distinct);
  }

  _join(e.columns, ',');

  _from(e.from);
  _where(e.where);
  visitNullable(e.groupBy, arg);
  if (e.windowDeclarations.isNotEmpty) {
    keyword(TokenType.window);

    var isFirst = true;
    for (final declaration in e.windowDeclarations) {
      if (!isFirst) {
        symbol(',', spaceAfter: true);
      }

      identifier(declaration.name);
      keyword(TokenType.as);

      visit(declaration.definition, arg);
      isFirst = false;
    }
  }
  visitNullable(e.orderBy, arg);
  visitNullable(e.limit, arg);
}