/* Qualify all identifiers for the parent expression. Checks for duplicate aliases. */ func (this *SubqueryTerm) Formalize(parent *expression.Formalizer) (f *expression.Formalizer, err error) { err = this.subquery.Formalize() if err != nil { return } alias := this.Alias() if alias == "" { err = errors.NewNoTermNameError("FROM", "plan.subquery.requires_name_or_alias") return } _, ok := parent.Allowed.Field(alias) if ok { err = errors.NewDuplicateAliasError("subquery", alias, "plan.subquery.duplicate_alias") return nil, err } allowed := value.NewScopeValue(make(map[string]interface{}), parent.Allowed) allowed.SetField(alias, alias) f = expression.NewFormalizer() f.Keyspace = alias f.Allowed = allowed return }
/* Qualify all identifiers for the parent expression. Checks is a unnest alias exists and if it is a duplicate alias. */ func (this *Unnest) Formalize(parent *expression.Formalizer) (f *expression.Formalizer, err error) { f, err = this.left.Formalize(parent) if err != nil { return } this.expr, err = f.Map(this.expr) if err != nil { return } alias := this.Alias() if alias == "" { err = errors.NewNoTermNameError("UNNEST", "plan.unnest.requires_name_or_alias") return nil, err } _, ok := f.Allowed.Field(alias) if ok { err = errors.NewDuplicateAliasError("UNNEST", alias, "plan.unnest.duplicate_alias") return nil, err } f.Keyspace = "" f.Allowed.SetField(alias, alias) return }
/* Qualify all identifiers for the parent expression. Checks is a join alias exists and if it is a duplicate alias. */ func (this *Join) Formalize(parent *expression.Formalizer) (f *expression.Formalizer, err error) { f, err = this.left.Formalize(parent) if err != nil { return } f.Keyspace = "" this.right.keys, err = f.Map(this.right.keys) if err != nil { return } alias := this.Alias() if alias == "" { err = errors.NewNoTermNameError("JOIN", "plan.join.requires_name_or_alias") return nil, err } _, ok := f.Allowed.Field(alias) if ok { err = errors.NewDuplicateAliasError("JOIN", alias, "plan.join.duplicate_alias") return nil, err } f.Allowed.SetField(alias, alias) return }
/* Qualify all identifiers for the parent expression. Checks for duplicate aliases. */ func (this *KeyspaceTerm) Formalize(parent *expression.Formalizer) (f *expression.Formalizer, err error) { keyspace := this.Alias() if keyspace == "" { err = errors.NewNoTermNameError("FROM", "plan.keyspace.requires_name_or_alias") return } if this.keys != nil { _, err = this.keys.Accept(parent) if err != nil { return } } _, ok := parent.Allowed.Field(keyspace) if ok { err = errors.NewDuplicateAliasError("subquery", keyspace, "plan.keyspace.duplicate_alias") return nil, err } allowed := value.NewScopeValue(make(map[string]interface{}), parent.Allowed) allowed.SetField(keyspace, keyspace) f = expression.NewFormalizer() f.Keyspace = keyspace f.Allowed = allowed return }
/* Qualify all identifiers for the parent expression. Checks for duplicate aliases. */ func (this *SubqueryTerm) Formalize(parent *expression.Formalizer) (f *expression.Formalizer, err error) { err = this.subquery.Formalize() if err != nil { return } alias := this.Alias() if alias == "" { err = errors.NewNoTermNameError("FROM", "plan.subquery.requires_name_or_alias") return } _, ok := parent.Allowed().Field(alias) if ok { err = errors.NewDuplicateAliasError("subquery", alias, "plan.subquery.duplicate_alias") return nil, err } f = expression.NewFormalizer(alias, parent) return }
/* Qualify all identifiers for the parent expression. Checks is a nest alias exists and if it is a duplicate alias. */ func (this *IndexNest) Formalize(parent *expression.Formalizer) (f *expression.Formalizer, err error) { f, err = this.left.Formalize(parent) if err != nil { return } _, ok := f.Allowed.Field(this.keyFor) if !ok { err = errors.NewUnknownForError("NEST", this.keyFor, "plan.nest.unknown_for") return nil, err } alias := this.Alias() if alias == "" { err = errors.NewNoTermNameError("NEST", "plan.nest.requires_name_or_alias") return nil, err } _, ok = f.Allowed.Field(alias) if ok { err = errors.NewDuplicateAliasError("NEST", alias, "plan.nest.duplicate_alias") return nil, err } f.Allowed.SetField(alias, alias) f.Keyspace = "" var p *expression.Formalizer if parent != nil { p = parent.Copy() } else { p = expression.NewFormalizer() } p.Allowed.SetField(alias, alias) this.right.keys, err = p.Map(this.right.keys) return }
/* Qualify all identifiers for the parent expression. Checks is a nest alias exists and if it is a duplicate alias. */ func (this *IndexNest) Formalize(parent *expression.Formalizer) (f *expression.Formalizer, err error) { f, err = this.left.Formalize(parent) if err != nil { return } _, ok := f.Allowed().Field(this.keyFor) if !ok { err = errors.NewUnknownForError("NEST", this.keyFor, "plan.nest.unknown_for") return nil, err } alias := this.Alias() if alias == "" { err = errors.NewNoTermNameError("NEST", "plan.nest.requires_name_or_alias") return nil, err } _, ok = f.Allowed().Field(alias) if ok { err = errors.NewDuplicateAliasError("NEST", alias, "plan.nest.duplicate_alias") return nil, err } f.Allowed().SetField(alias, alias) f.SetKeyspace("") p := expression.NewFormalizer("", parent) p.Allowed().SetField(alias, alias) this.right.keys, err = p.Map(this.right.keys) for ident, val := range p.Identifiers() { f.Identifiers()[ident] = val } return }
/* Qualify all identifiers for the parent expression. Checks for duplicate aliases. */ func (this *KeyspaceTerm) Formalize(parent *expression.Formalizer) (f *expression.Formalizer, err error) { keyspace := this.Alias() if keyspace == "" { err = errors.NewNoTermNameError("FROM", "plan.keyspace.requires_name_or_alias") return } f = expression.NewFormalizer("", parent) if this.keys != nil { _, err = this.keys.Accept(f) if err != nil { return } } _, ok := parent.Allowed().Field(keyspace) if ok { err = errors.NewDuplicateAliasError("subquery", keyspace, "plan.keyspace.duplicate_alias") return nil, err } f.SetKeyspace(keyspace) return }