func (this *ParentScan) RunOnce(context *Context, parent value.Value) { this.once.Do(func() { defer context.Recover() // Recover from any panic defer close(this.itemChannel) // Broadcast that I have stopped defer this.notify() // Notify that I have stopped // Shallow copy of the parent includes // correlated and annotated aspects this.sendItem(parent.Copy().(value.AnnotatedValue)) }) }
/* This method sorts the input array value, in N1QL collation order. It uses the Sort method in the sort package. If the input value is of type missing return a missing value, and for all non array values return null. */ func (this *ArraySort) Apply(context Context, arg value.Value) (value.Value, error) { if arg.Type() == value.MISSING { return value.MISSING_VALUE, nil } else if arg.Type() != value.ARRAY { return value.NULL_VALUE, nil } cv := arg.Copy() sorter := value.NewSorter(cv) sort.Sort(sorter) return cv, nil }