aboutsummaryrefslogtreecommitdiff
path: root/vendor/github.com/go-xorm/builder
diff options
context:
space:
mode:
authorUnknwon <u@gogs.io>2018-06-09 16:28:52 +0800
committerUnknwon <u@gogs.io>2018-06-09 16:28:52 +0800
commita75c4352453f3dfde38f2cd4930a020427951539 (patch)
tree560cde142eb9a89b158299af65c7aeeeff3a1cfa /vendor/github.com/go-xorm/builder
parent53c8e4263b71d20e8decfcc7a6970e3497473bec (diff)
vendor: update github.com/go-xorm/…
Diffstat (limited to 'vendor/github.com/go-xorm/builder')
-rw-r--r--vendor/github.com/go-xorm/builder/README.md3
-rw-r--r--vendor/github.com/go-xorm/builder/builder_insert.go6
-rw-r--r--vendor/github.com/go-xorm/builder/builder_select.go4
-rw-r--r--vendor/github.com/go-xorm/builder/circle.yml4
-rw-r--r--vendor/github.com/go-xorm/builder/cond_and.go6
-rw-r--r--vendor/github.com/go-xorm/builder/cond_compare.go8
-rw-r--r--vendor/github.com/go-xorm/builder/cond_eq.go20
-rw-r--r--vendor/github.com/go-xorm/builder/cond_like.go2
-rw-r--r--vendor/github.com/go-xorm/builder/cond_neq.go20
-rw-r--r--vendor/github.com/go-xorm/builder/cond_not.go24
-rw-r--r--vendor/github.com/go-xorm/builder/go.mod1
11 files changed, 86 insertions, 12 deletions
diff --git a/vendor/github.com/go-xorm/builder/README.md b/vendor/github.com/go-xorm/builder/README.md
index 16287363..e3993e78 100644
--- a/vendor/github.com/go-xorm/builder/README.md
+++ b/vendor/github.com/go-xorm/builder/README.md
@@ -1,6 +1,7 @@
# SQL builder
-[![CircleCI](https://circleci.com/gh/go-xorm/builder/tree/master.svg?style=svg)](https://circleci.com/gh/go-xorm/builder/tree/master)
+[![CircleCI](https://circleci.com/gh/go-xorm/builder/tree/master.svg?style=svg)](https://circleci.com/gh/go-xorm/builder/tree/master) [![codecov](https://codecov.io/gh/go-xorm/builder/branch/master/graph/badge.svg)](https://codecov.io/gh/go-xorm/builder)
+[![](https://goreportcard.com/badge/github.com/go-xorm/builder)](https://goreportcard.com/report/github.com/go-xorm/builder)
Package builder is a lightweight and fast SQL builder for Go and XORM.
diff --git a/vendor/github.com/go-xorm/builder/builder_insert.go b/vendor/github.com/go-xorm/builder/builder_insert.go
index decec931..9b213ec7 100644
--- a/vendor/github.com/go-xorm/builder/builder_insert.go
+++ b/vendor/github.com/go-xorm/builder/builder_insert.go
@@ -15,7 +15,7 @@ func (b *Builder) insertWriteTo(w Writer) error {
return errors.New("no table indicated")
}
if len(b.inserts) <= 0 {
- return errors.New("no column to be update")
+ return errors.New("no column to be insert")
}
if _, err := fmt.Fprintf(w, "INSERT INTO %s (", b.tableName); err != nil {
@@ -26,7 +26,9 @@ func (b *Builder) insertWriteTo(w Writer) error {
var bs []byte
var valBuffer = bytes.NewBuffer(bs)
var i = 0
- for col, value := range b.inserts {
+
+ for _, col := range b.inserts.sortedKeys() {
+ value := b.inserts[col]
fmt.Fprint(w, col)
if e, ok := value.(expr); ok {
fmt.Fprint(valBuffer, e.sql)
diff --git a/vendor/github.com/go-xorm/builder/builder_select.go b/vendor/github.com/go-xorm/builder/builder_select.go
index 05f116e0..3a3967cc 100644
--- a/vendor/github.com/go-xorm/builder/builder_select.go
+++ b/vendor/github.com/go-xorm/builder/builder_select.go
@@ -45,6 +45,10 @@ func (b *Builder) selectWriteTo(w Writer) error {
}
}
+ if !b.cond.IsValid() {
+ return nil
+ }
+
if _, err := fmt.Fprint(w, " WHERE "); err != nil {
return err
}
diff --git a/vendor/github.com/go-xorm/builder/circle.yml b/vendor/github.com/go-xorm/builder/circle.yml
index b2a8bfc9..afb7bf24 100644
--- a/vendor/github.com/go-xorm/builder/circle.yml
+++ b/vendor/github.com/go-xorm/builder/circle.yml
@@ -9,4 +9,6 @@ test:
override:
# './...' is a relative pattern which means all subdirectories
- golint ./...
- - go test -v -race \ No newline at end of file
+ - go test -v -race -coverprofile=coverage.txt -covermode=atomic
+ post:
+ - bash <(curl -s https://codecov.io/bash) \ No newline at end of file
diff --git a/vendor/github.com/go-xorm/builder/cond_and.go b/vendor/github.com/go-xorm/builder/cond_and.go
index 9c30e9c2..e30bd186 100644
--- a/vendor/github.com/go-xorm/builder/cond_and.go
+++ b/vendor/github.com/go-xorm/builder/cond_and.go
@@ -25,7 +25,9 @@ func And(conds ...Cond) Cond {
func (and condAnd) WriteTo(w Writer) error {
for i, cond := range and {
_, isOr := cond.(condOr)
- if isOr {
+ _, isExpr := cond.(expr)
+ wrap := isOr || isExpr
+ if wrap {
fmt.Fprint(w, "(")
}
@@ -34,7 +36,7 @@ func (and condAnd) WriteTo(w Writer) error {
return err
}
- if isOr {
+ if wrap {
fmt.Fprint(w, ")")
}
diff --git a/vendor/github.com/go-xorm/builder/cond_compare.go b/vendor/github.com/go-xorm/builder/cond_compare.go
index e10ef744..1c293719 100644
--- a/vendor/github.com/go-xorm/builder/cond_compare.go
+++ b/vendor/github.com/go-xorm/builder/cond_compare.go
@@ -10,7 +10,13 @@ import "fmt"
func WriteMap(w Writer, data map[string]interface{}, op string) error {
var args = make([]interface{}, 0, len(data))
var i = 0
- for k, v := range data {
+ keys := make([]string, 0, len(data))
+ for k := range data {
+ keys = append(keys, k)
+ }
+
+ for _, k := range keys {
+ v := data[k]
switch v.(type) {
case expr:
if _, err := fmt.Fprintf(w, "%s%s(", k, op); err != nil {
diff --git a/vendor/github.com/go-xorm/builder/cond_eq.go b/vendor/github.com/go-xorm/builder/cond_eq.go
index 8777727f..79d795e6 100644
--- a/vendor/github.com/go-xorm/builder/cond_eq.go
+++ b/vendor/github.com/go-xorm/builder/cond_eq.go
@@ -4,7 +4,10 @@
package builder
-import "fmt"
+import (
+ "fmt"
+ "sort"
+)
// Incr implements a type used by Eq
type Incr int
@@ -19,7 +22,8 @@ var _ Cond = Eq{}
func (eq Eq) opWriteTo(op string, w Writer) error {
var i = 0
- for k, v := range eq {
+ for _, k := range eq.sortedKeys() {
+ v := eq[k]
switch v.(type) {
case []int, []int64, []string, []int32, []int16, []int8, []uint, []uint64, []uint32, []uint16, []interface{}:
if err := In(k, v).WriteTo(w); err != nil {
@@ -94,3 +98,15 @@ func (eq Eq) Or(conds ...Cond) Cond {
func (eq Eq) IsValid() bool {
return len(eq) > 0
}
+
+// sortedKeys returns all keys of this Eq sorted with sort.Strings.
+// It is used internally for consistent ordering when generating
+// SQL, see https://github.com/go-xorm/builder/issues/10
+func (eq Eq) sortedKeys() []string {
+ keys := make([]string, 0, len(eq))
+ for key := range eq {
+ keys = append(keys, key)
+ }
+ sort.Strings(keys)
+ return keys
+}
diff --git a/vendor/github.com/go-xorm/builder/cond_like.go b/vendor/github.com/go-xorm/builder/cond_like.go
index 9291f12c..e34202f8 100644
--- a/vendor/github.com/go-xorm/builder/cond_like.go
+++ b/vendor/github.com/go-xorm/builder/cond_like.go
@@ -16,7 +16,7 @@ func (like Like) WriteTo(w Writer) error {
if _, err := fmt.Fprintf(w, "%s LIKE ?", like[0]); err != nil {
return err
}
- // FIXME: if use other regular express, this will be failed. but for compitable, keep this
+ // FIXME: if use other regular express, this will be failed. but for compatible, keep this
if like[1][0] == '%' || like[1][len(like[1])-1] == '%' {
w.Append(like[1])
} else {
diff --git a/vendor/github.com/go-xorm/builder/cond_neq.go b/vendor/github.com/go-xorm/builder/cond_neq.go
index d07b2b18..3a8f3136 100644
--- a/vendor/github.com/go-xorm/builder/cond_neq.go
+++ b/vendor/github.com/go-xorm/builder/cond_neq.go
@@ -4,7 +4,10 @@
package builder
-import "fmt"
+import (
+ "fmt"
+ "sort"
+)
// Neq defines not equal conditions
type Neq map[string]interface{}
@@ -15,7 +18,8 @@ var _ Cond = Neq{}
func (neq Neq) WriteTo(w Writer) error {
var args = make([]interface{}, 0, len(neq))
var i = 0
- for k, v := range neq {
+ for _, k := range neq.sortedKeys() {
+ v := neq[k]
switch v.(type) {
case []int, []int64, []string, []int32, []int16, []int8:
if err := NotIn(k, v).WriteTo(w); err != nil {
@@ -76,3 +80,15 @@ func (neq Neq) Or(conds ...Cond) Cond {
func (neq Neq) IsValid() bool {
return len(neq) > 0
}
+
+// sortedKeys returns all keys of this Neq sorted with sort.Strings.
+// It is used internally for consistent ordering when generating
+// SQL, see https://github.com/go-xorm/builder/issues/10
+func (neq Neq) sortedKeys() []string {
+ keys := make([]string, 0, len(neq))
+ for key := range neq {
+ keys = append(keys, key)
+ }
+ sort.Strings(keys)
+ return keys
+}
diff --git a/vendor/github.com/go-xorm/builder/cond_not.go b/vendor/github.com/go-xorm/builder/cond_not.go
index 294a7e07..667dfe72 100644
--- a/vendor/github.com/go-xorm/builder/cond_not.go
+++ b/vendor/github.com/go-xorm/builder/cond_not.go
@@ -21,6 +21,18 @@ func (not Not) WriteTo(w Writer) error {
if _, err := fmt.Fprint(w, "("); err != nil {
return err
}
+ case Eq:
+ if len(not[0].(Eq)) > 1 {
+ if _, err := fmt.Fprint(w, "("); err != nil {
+ return err
+ }
+ }
+ case Neq:
+ if len(not[0].(Neq)) > 1 {
+ if _, err := fmt.Fprint(w, "("); err != nil {
+ return err
+ }
+ }
}
if err := not[0].WriteTo(w); err != nil {
@@ -32,6 +44,18 @@ func (not Not) WriteTo(w Writer) error {
if _, err := fmt.Fprint(w, ")"); err != nil {
return err
}
+ case Eq:
+ if len(not[0].(Eq)) > 1 {
+ if _, err := fmt.Fprint(w, ")"); err != nil {
+ return err
+ }
+ }
+ case Neq:
+ if len(not[0].(Neq)) > 1 {
+ if _, err := fmt.Fprint(w, ")"); err != nil {
+ return err
+ }
+ }
}
return nil
diff --git a/vendor/github.com/go-xorm/builder/go.mod b/vendor/github.com/go-xorm/builder/go.mod
new file mode 100644
index 00000000..ef1a659a
--- /dev/null
+++ b/vendor/github.com/go-xorm/builder/go.mod
@@ -0,0 +1 @@
+module "github.com/go-xorm/builder"