// ShowColumns of a table. // Privileges: None. // Notes: postgres does not have a SHOW COLUMNS statement. // mysql only returns columns you have privileges on. func (p *planner) ShowColumns(n *parser.ShowColumns) (planNode, error) { desc, err := p.getTableDesc(n.Table) if err != nil { return nil, err } if desc == nil { return nil, sqlbase.NewUndefinedTableError(n.Table.String()) } v := &valuesNode{ columns: []ResultColumn{ {Name: "Field", Typ: parser.TypeString}, {Name: "Type", Typ: parser.TypeString}, {Name: "Null", Typ: parser.TypeBool}, {Name: "Default", Typ: parser.TypeString}, }, } for i, col := range desc.Columns { defaultExpr := parser.Datum(parser.DNull) if e := desc.Columns[i].DefaultExpr; e != nil { defaultExpr = parser.NewDString(*e) } v.rows = append(v.rows, []parser.Datum{ parser.NewDString(desc.Columns[i].Name), parser.NewDString(col.Type.SQLString()), parser.MakeDBool(parser.DBool(desc.Columns[i].Nullable)), defaultExpr, }) } return v, nil }
// ShowColumns of a table. // Privileges: None. // Notes: postgres does not have a SHOW COLUMNS statement. // mysql only returns columns you have privileges on. func (p *planner) ShowColumns(n *parser.ShowColumns) (planNode, *roachpb.Error) { desc, pErr := p.getTableDesc(n.Table) if pErr != nil { return nil, pErr } v := &valuesNode{ columns: []column{ {name: "Field", typ: parser.DummyString}, {name: "Type", typ: parser.DummyString}, {name: "Null", typ: parser.DummyBool}, {name: "Default", typ: parser.DummyString}, }, } for i, col := range desc.Columns { defaultExpr := parser.Datum(parser.DNull) if e := desc.Columns[i].DefaultExpr; e != nil { defaultExpr = parser.DString(*e) } v.rows = append(v.rows, []parser.Datum{ parser.DString(desc.Columns[i].Name), parser.DString(col.Type.SQLString()), parser.DBool(desc.Columns[i].Nullable), defaultExpr, }) } return v, nil }
// ShowColumns of a table. // Privileges: None. // Notes: postgres does not have a SHOW COLUMNS statement. // mysql only returns columns you have privileges on. func (p *planner) ShowColumns(n *parser.ShowColumns) (planNode, error) { desc, err := p.getTableDesc(n.Table) if err != nil { return nil, err } v := &valuesNode{columns: []string{"Field", "Type", "Null", "Default"}} for i, col := range desc.Columns { defaultExpr := parser.Datum(parser.DNull) if e := desc.Columns[i].DefaultExpr; e != nil { defaultExpr = parser.DString(*e) } v.rows = append(v.rows, []parser.Datum{ parser.DString(desc.Columns[i].Name), parser.DString(col.Type.SQLString()), parser.DBool(desc.Columns[i].Nullable), defaultExpr, }) } return v, nil }