func (p *planner) processColumns(tableDesc *sqlbase.TableDescriptor, node parser.QualifiedNames) ([]sqlbase.ColumnDescriptor, error) { if node == nil { // VisibleColumns is used here to prevent INSERT INTO <table> VALUES (...) // (as opposed to INSERT INTO <table> (...) VALUES (...)) from writing // hidden columns. At present, the only hidden column is the implicit rowid // primary key column. return tableDesc.VisibleColumns(), nil } cols := make([]sqlbase.ColumnDescriptor, len(node)) colIDSet := make(map[sqlbase.ColumnID]struct{}, len(node)) for i, n := range node { // TODO(pmattis): If the name is qualified, verify the table name matches // tableDesc.Name. if err := n.NormalizeColumnName(); err != nil { return nil, err } col, err := tableDesc.FindActiveColumnByName(n.Column()) if err != nil { return nil, err } if _, ok := colIDSet[col.ID]; ok { return nil, fmt.Errorf("multiple assignments to same column \"%s\"", n.Column()) } colIDSet[col.ID] = struct{}{} cols[i] = col } return cols, nil }
func makeColIDtoRowIndex(row planNode, desc *sqlbase.TableDescriptor) ( map[sqlbase.ColumnID]int, error, ) { columns := row.Columns() colIDtoRowIndex := make(map[sqlbase.ColumnID]int, len(columns)) for i, column := range columns { col, err := desc.FindActiveColumnByName(column.Name) if err != nil { return nil, err } colIDtoRowIndex[col.ID] = i } return colIDtoRowIndex, nil }
func (p *planner) processColumns(tableDesc *sqlbase.TableDescriptor, node parser.UnresolvedNames) ([]sqlbase.ColumnDescriptor, error) { if node == nil { // VisibleColumns is used here to prevent INSERT INTO <table> VALUES (...) // (as opposed to INSERT INTO <table> (...) VALUES (...)) from writing // hidden columns. At present, the only hidden column is the implicit rowid // primary key column. return tableDesc.VisibleColumns(), nil } cols := make([]sqlbase.ColumnDescriptor, len(node)) colIDSet := make(map[sqlbase.ColumnID]struct{}, len(node)) for i, n := range node { c, err := n.NormalizeUnqualifiedColumnItem() if err != nil { return nil, err } if len(c.Selector) > 0 { return nil, util.UnimplementedWithIssueErrorf(8318, "compound types not supported yet: %q", n) } col, err := tableDesc.FindActiveColumnByName(c.ColumnName) if err != nil { return nil, err } if _, ok := colIDSet[col.ID]; ok { return nil, fmt.Errorf("multiple assignments to the same column %q", n) } colIDSet[col.ID] = struct{}{} cols[i] = col } return cols, nil }