func (this *builder) VisitKeyspaceTerm(node *algebra.KeyspaceTerm) (interface{}, error) { node.SetDefaultNamespace(this.namespace) keyspace, err := this.getTermKeyspace(node) if err != nil { return nil, err } if this.subquery && this.correlated && node.Keys() == nil { return nil, errors.NewSubqueryMissingKeysError(node.Keyspace()) } scan, err := this.selectScan(keyspace, node, this.limit) if err != nil { return nil, err } this.children = append(this.children, scan) if this.coveringScan == nil { fetch := plan.NewFetch(keyspace, node) this.subChildren = append(this.subChildren, fetch) } return nil, nil }
func (this *builder) getTermKeyspace(node *algebra.KeyspaceTerm) (datastore.Keyspace, error) { node.SetDefaultNamespace(this.namespace) ns := node.Namespace() datastore := this.datastore if strings.ToLower(ns) == "#system" { datastore = this.systemstore } namespace, err := datastore.NamespaceByName(ns) if err != nil { return nil, err } keyspace, err := namespace.KeyspaceByName(node.Keyspace()) if err != nil { return nil, err } return keyspace, nil }