You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
// Copyright 2018 The Xorm Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package builder
import ( "fmt" "strings" )
func (b *Builder) setOpWriteTo(w Writer) error { if b.limitation != nil || b.cond.IsValid() || b.orderBy != "" || b.having != "" || b.groupBy != "" { return ErrNotUnexpectedUnionConditions }
for idx, o := range b.setOps { current := o.builder if current.optype != selectType { return ErrUnsupportedUnionMembers }
if len(b.setOps) == 1 { if err := current.selectWriteTo(w); err != nil { return err } } else { if b.dialect != "" && b.dialect != current.dialect { return ErrInconsistentDialect }
if idx != 0 { if o.distinctType == "" { fmt.Fprint(w, fmt.Sprintf(" %s ", strings.ToUpper(o.opType))) } else { fmt.Fprint(w, fmt.Sprintf(" %s %s ", strings.ToUpper(o.opType), strings.ToUpper(o.distinctType))) } } fmt.Fprint(w, "(")
if err := current.selectWriteTo(w); err != nil { return err }
fmt.Fprint(w, ")") } }
return nil }
|