visitCommonTableExpression method

  1. @override
void visitCommonTableExpression(
  1. CommonTableExpression e,
  2. void arg
)
override

Implementation

@override
void visitCommonTableExpression(CommonTableExpression e, void arg) {
  identifier(e.cteTableName);
  if (e.columnNames != null) {
    symbol('(', spaceBefore: true);

    var first = true;
    for (final columnName in e.columnNames!) {
      if (!first) {
        symbol(',', spaceAfter: true);
      }

      identifier(columnName, spaceBefore: !first, spaceAfter: false);

      first = false;
    }

    symbol(')', spaceAfter: true);
  }

  keyword(TokenType.as);
  switch (e.materializationHint) {
    case MaterializationHint.notMaterialized:
      keyword(TokenType.not);
      keyword(TokenType.materialized);
      break;
    case MaterializationHint.materialized:
      keyword(TokenType.materialized);
      break;
    case null:
      break;
  }

  symbol('(', spaceBefore: true);
  visit(e.as, arg);
  symbol(')', spaceAfter: true);
}