> > AFAIK view schema is only used by DESCRIBE.
>
> Correction: Spark adds a new Project at the top of the parsed plan from
> view, based on the stored schema, to make sure the view schema doesn't
> change.
>

Thanks Wenchen! I thought I forgot something :) Yes it is the validation
done in *checkAnalysis*:

          // If the view output doesn't have the same number of columns
neither with the child
          // output, nor with the query column names, throw an
AnalysisException.
          // If the view's child output can't up cast to the view output,
          // throw an AnalysisException, too.

The view output comes from the schema:

      val child = View(
        desc = metadata,
        output = metadata.schema.toAttributes,
        child = parser.parsePlan(viewText))

So it is a validation (here) or cache (in DESCRIBE) nice to have but not
"required" or "should be frozen". Thanks Ryan and Burak for pointing that
out in SPIP. I will add a new paragraph accordingly.

Reply via email to