visitCreateViewStatement method

  1. @override
void visitCreateViewStatement(
  1. CreateViewStatement e,
  2. void arg
)
override

Implementation

@override
void visitCreateViewStatement(CreateViewStatement e, void arg) {
  final resolvedColumns = e.query.resolvedColumns;
  if (e.columns == null || resolvedColumns == null) {
    return super.visitCreateViewStatement(e, arg);
  }

  final amountOfNames = e.columns!.length;
  final amountOfColumns = resolvedColumns.length;

  if (amountOfNames != amountOfColumns) {
    context.reportError(AnalysisError(
      type: AnalysisErrorType.viewColumnNamesMismatch,
      relevantNode: e,
      message: 'This view declares $amountOfNames column names, but the '
          'inner select statement returns $amountOfColumns',
    ));
  }

  visitChildren(e, arg);
}