func (this *builder) selectPrimaryScan(keyspace datastore.Keyspace, node *algebra.KeyspaceTerm) (Operator, error) { indexers, err := keyspace.Indexers() if err != nil { return nil, err } var primary datastore.PrimaryIndex for _, indexer := range indexers { indexes, err := indexer.PrimaryIndexes() if err != nil { return nil, err } for _, index := range indexes { state, _, er := index.State() if er != nil { return nil, er } if state != datastore.ONLINE { primary = index continue } scan := NewPrimaryScan(index, node) return scan, nil } } if primary == nil { return nil, fmt.Errorf( "No primary index on keyspace %s. Use CREATE PRIMARY INDEX to create one.", keyspace.Name()) } return nil, fmt.Errorf("Primary index %s not online.", primary.Name()) }