pub fn schema(&self) -> DataSchemaRef {
        match self {
            // Base.
            PlanNode::Empty(v) => v.schema(),
            PlanNode::Stage(v) => v.schema(),
            PlanNode::Broadcast(v) => v.schema(),
            PlanNode::Remote(v) => v.schema(),
            PlanNode::Projection(v) => v.schema(),
            PlanNode::Expression(v) => v.schema(),
            PlanNode::AggregatorPartial(v) => v.schema(),
            PlanNode::AggregatorFinal(v) => v.schema(),
            PlanNode::Filter(v) => v.schema(),
            PlanNode::Having(v) => v.schema(),
            PlanNode::Limit(v) => v.schema(),
            PlanNode::LimitBy(v) => v.schema(),
            PlanNode::ReadSource(v) => v.schema(),
            PlanNode::Sort(v) => v.schema(),
            PlanNode::SubQueryExpression(v) => v.schema(),
            PlanNode::Sink(v) => v.schema(),

            // Explain.
            PlanNode::Explain(v) => v.schema(),

            // Query.
            PlanNode::Select(v) => v.schema(),

            // Insert.
            PlanNode::Insert(v) => v.schema(),

            // Copy.
            PlanNode::Copy(v) => v.schema(),

            // Show.
            PlanNode::Show(v) => v.schema(),

            // Database.
            PlanNode::CreateDatabase(v) => v.schema(),
            PlanNode::DropDatabase(v) => v.schema(),
            PlanNode::ShowCreateDatabase(v) => v.schema(),

            // Table.
            PlanNode::CreateTable(v) => v.schema(),
            PlanNode::DropTable(v) => v.schema(),
            PlanNode::TruncateTable(v) => v.schema(),
            PlanNode::OptimizeTable(v) => v.schema(),
            PlanNode::DescribeTable(v) => v.schema(),
            PlanNode::ShowCreateTable(v) => v.schema(),

            // User.
            PlanNode::CreateUser(v) => v.schema(),
            PlanNode::AlterUser(v) => v.schema(),
            PlanNode::DropUser(v) => v.schema(),
            PlanNode::GrantPrivilege(v) => v.schema(),
            PlanNode::RevokePrivilege(v) => v.schema(),

            // Stage.
            PlanNode::CreateUserStage(v) => v.schema(),
            PlanNode::DropUserStage(v) => v.schema(),
            PlanNode::DescribeUserStage(v) => v.schema(),

            // UDF.
            PlanNode::CreateUserUDF(v) => v.schema(),
            PlanNode::DropUserUDF(v) => v.schema(),
            PlanNode::AlterUserUDF(v) => v.schema(),

            // Use.
            PlanNode::UseDatabase(v) => v.schema(),

            // Set.
            PlanNode::SetVariable(v) => v.schema(),

            // Kill.
            PlanNode::Kill(v) => v.schema(),

            // Admin.
            PlanNode::AdminUseTenant(v) => v.schema(),
        }
    }
/// Get a reference to the logical plan's schema
Get a reference to the logical plan's schema
Get a reference to the logical plan ' s schema
pub fn schema(&self) -> DataSchemaRef {
        match self {
            // Base.
            PlanNode::Empty(v) => v.schema(),
            PlanNode::Stage(v) => v.schema(),
            PlanNode::Broadcast(v) => v.schema(),
            PlanNode::Remote(v) => v.schema(),
            PlanNode::Projection(v) => v.schema(),
            PlanNode::Expression(v) => v.schema(),
            PlanNode::AggregatorPartial(v) => v.schema(),
            PlanNode::AggregatorFinal(v) => v.schema(),
            PlanNode::Filter(v) => v.schema(),
            PlanNode::Having(v) => v.schema(),
            PlanNode::Limit(v) => v.schema(),
            PlanNode::LimitBy(v) => v.schema(),
            PlanNode::ReadSource(v) => v.schema(),
            PlanNode::Sort(v) => v.schema(),
            PlanNode::SubQueryExpression(v) => v.schema(),
            PlanNode::Sink(v) => v.schema(),
            // Explain.
            PlanNode::Explain(v) => v.schema(),
            // Query.
            PlanNode::Select(v) => v.schema(),
            // Insert.
            PlanNode::Insert(v) => v.schema(),
            // Copy.
            PlanNode::Copy(v) => v.schema(),
            // Show.
            PlanNode::Show(v) => v.schema(),
            // Database.
            PlanNode::CreateDatabase(v) => v.schema(),
            PlanNode::DropDatabase(v) => v.schema(),
            PlanNode::ShowCreateDatabase(v) => v.schema(),
            // Table.
            PlanNode::CreateTable(v) => v.schema(),
            PlanNode::DropTable(v) => v.schema(),
            PlanNode::TruncateTable(v) => v.schema(),
            PlanNode::OptimizeTable(v) => v.schema(),
            PlanNode::DescribeTable(v) => v.schema(),
            PlanNode::ShowCreateTable(v) => v.schema(),
            // User.
            PlanNode::CreateUser(v) => v.schema(),
            PlanNode::AlterUser(v) => v.schema(),
            PlanNode::DropUser(v) => v.schema(),
            PlanNode::GrantPrivilege(v) => v.schema(),
            PlanNode::RevokePrivilege(v) => v.schema(),
            // Stage.
            PlanNode::CreateUserStage(v) => v.schema(),
            PlanNode::DropUserStage(v) => v.schema(),
            PlanNode::DescribeUserStage(v) => v.schema(),
            // UDF.
            PlanNode::CreateUserUDF(v) => v.schema(),
            PlanNode::DropUserUDF(v) => v.schema(),
            PlanNode::AlterUserUDF(v) => v.schema(),
            // Use.
            PlanNode::UseDatabase(v) => v.schema(),
            // Set.
            PlanNode::SetVariable(v) => v.schema(),
            // Kill.
            PlanNode::Kill(v) => v.schema(),
            // Admin.
            PlanNode::AdminUseTenant(v) => v.schema(),
        }
    }
pub fn schema ( & self ) -> DataSchemaRef { match self { // Base. PlanNode :: Empty ( v ) => v . schema ( ) , PlanNode :: Stage ( v ) => v . schema ( ) , PlanNode :: Broadcast ( v ) => v . schema ( ) , PlanNode :: Remote ( v ) => v . schema ( ) , PlanNode :: Projection ( v ) => v . schema ( ) , PlanNode :: Expression ( v ) => v . schema ( ) , PlanNode :: AggregatorPartial ( v ) => v . schema ( ) , PlanNode :: AggregatorFinal ( v ) => v . schema ( ) , PlanNode :: Filter ( v ) => v . schema ( ) , PlanNode :: Having ( v ) => v . schema ( ) , PlanNode :: Limit ( v ) => v . schema ( ) , PlanNode :: LimitBy ( v ) => v . schema ( ) , PlanNode :: ReadSource ( v ) => v . schema ( ) , PlanNode :: Sort ( v ) => v . schema ( ) , PlanNode :: SubQueryExpression ( v ) => v . schema ( ) , PlanNode :: Sink ( v ) => v . schema ( ) , // Explain. PlanNode :: Explain ( v ) => v . schema ( ) , // Query. PlanNode :: Select ( v ) => v . schema ( ) , // Insert. PlanNode :: Insert ( v ) => v . schema ( ) , // Copy. PlanNode :: Copy ( v ) => v . schema ( ) , // Show. PlanNode :: Show ( v ) => v . schema ( ) , // Database. PlanNode :: CreateDatabase ( v ) => v . schema ( ) , PlanNode :: DropDatabase ( v ) => v . schema ( ) , PlanNode :: ShowCreateDatabase ( v ) => v . schema ( ) , // Table. PlanNode :: CreateTable ( v ) => v . schema ( ) , PlanNode :: DropTable ( v ) => v . schema ( ) , PlanNode :: TruncateTable ( v ) => v . schema ( ) , PlanNode :: OptimizeTable ( v ) => v . schema ( ) , PlanNode :: DescribeTable ( v ) => v . schema ( ) , PlanNode :: ShowCreateTable ( v ) => v . schema ( ) , // User. PlanNode :: CreateUser ( v ) => v . schema ( ) , PlanNode :: AlterUser ( v ) => v . schema ( ) , PlanNode :: DropUser ( v ) => v . schema ( ) , PlanNode :: GrantPrivilege ( v ) => v . schema ( ) , PlanNode :: RevokePrivilege ( v ) => v . schema ( ) , // Stage. PlanNode :: CreateUserStage ( v ) => v . schema ( ) , PlanNode :: DropUserStage ( v ) => v . schema ( ) , PlanNode :: DescribeUserStage ( v ) => v . schema ( ) , // UDF. PlanNode :: CreateUserUDF ( v ) => v . schema ( ) , PlanNode :: DropUserUDF ( v ) => v . schema ( ) , PlanNode :: AlterUserUDF ( v ) => v . schema ( ) , // Use. PlanNode :: UseDatabase ( v ) => v . schema ( ) , // Set. PlanNode :: SetVariable ( v ) => v . schema ( ) , // Kill. PlanNode :: Kill ( v ) => v . schema ( ) , // Admin. PlanNode :: AdminUseTenant ( v ) => v . schema ( ) , } }
Get a reference to the logical plan's schema
Get a reference to the logical plan ' s schema
&self