func (p *Project) Schema() sql.Schema {
	var s = make(sql.Schema, len(p.Projections))
	for i, e := range p.Projections {
		var name string
		if n, ok := e.(sql.Nameable); ok {
			name = n.Name()
		} else {
			name = e.String()
		}
		var table string
		if t, ok := e.(sql.Tableable); ok {
			table = t.Table()
		}
		s[i] = &sql.Column{
			Name:     name,
			Type:     e.Type(),
			Nullable: e.IsNullable(),
			Source:   table,
		}
	}
	return s
}
Schema implements the Node interface.
package plan
import (
	"strings"
	opentracing "github.com/opentracing/opentracing-go"
	"github.com/src-d/go-mysql-server/sql"
)
type Project struct {
	UnaryNode
	Projections []sql.Expression
}
func NewProject(expressions []sql.Expression, child sql.Node) *Project {
	return &Project{
		UnaryNode:   UnaryNode{child},
		Projections: expressions,
	}
}