summaryrefslogtreecommitdiffstats
path: root/vendor/github.com
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com')
-rw-r--r--vendor/github.com/go-sql-driver/mysql/.travis.yml2
-rw-r--r--vendor/github.com/go-sql-driver/mysql/AUTHORS5
-rw-r--r--vendor/github.com/go-sql-driver/mysql/CHANGELOG.md11
-rw-r--r--vendor/github.com/go-sql-driver/mysql/README.md6
-rw-r--r--vendor/github.com/go-sql-driver/mysql/auth.go8
-rw-r--r--vendor/github.com/go-sql-driver/mysql/buffer.go49
-rw-r--r--vendor/github.com/go-sql-driver/mysql/connection.go210
-rw-r--r--vendor/github.com/go-sql-driver/mysql/connection_go18.go207
-rw-r--r--vendor/github.com/go-sql-driver/mysql/driver.go15
-rw-r--r--vendor/github.com/go-sql-driver/mysql/dsn.go2
-rw-r--r--vendor/github.com/go-sql-driver/mysql/packets.go60
-rw-r--r--vendor/github.com/go-sql-driver/mysql/utils.go31
-rw-r--r--vendor/github.com/go-sql-driver/mysql/utils_go17.go40
-rw-r--r--vendor/github.com/go-sql-driver/mysql/utils_go18.go50
-rw-r--r--vendor/github.com/go-xorm/builder/.drone.yml37
-rw-r--r--vendor/github.com/go-xorm/builder/LICENSE27
-rw-r--r--vendor/github.com/go-xorm/builder/README.md206
-rw-r--r--vendor/github.com/go-xorm/builder/builder.go394
-rw-r--r--vendor/github.com/go-xorm/builder/builder_delete.go27
-rw-r--r--vendor/github.com/go-xorm/builder/builder_insert.go89
-rw-r--r--vendor/github.com/go-xorm/builder/builder_limit.go100
-rw-r--r--vendor/github.com/go-xorm/builder/builder_select.go145
-rw-r--r--vendor/github.com/go-xorm/builder/builder_union.go47
-rw-r--r--vendor/github.com/go-xorm/builder/builder_update.go46
-rw-r--r--vendor/github.com/go-xorm/builder/cond.go74
-rw-r--r--vendor/github.com/go-xorm/builder/cond_and.go61
-rw-r--r--vendor/github.com/go-xorm/builder/cond_between.go65
-rw-r--r--vendor/github.com/go-xorm/builder/cond_compare.go160
-rw-r--r--vendor/github.com/go-xorm/builder/cond_eq.go112
-rw-r--r--vendor/github.com/go-xorm/builder/cond_expr.go39
-rw-r--r--vendor/github.com/go-xorm/builder/cond_in.go237
-rw-r--r--vendor/github.com/go-xorm/builder/cond_like.go41
-rw-r--r--vendor/github.com/go-xorm/builder/cond_neq.go94
-rw-r--r--vendor/github.com/go-xorm/builder/cond_not.go77
-rw-r--r--vendor/github.com/go-xorm/builder/cond_notin.go234
-rw-r--r--vendor/github.com/go-xorm/builder/cond_null.go59
-rw-r--r--vendor/github.com/go-xorm/builder/cond_or.go69
-rw-r--r--vendor/github.com/go-xorm/builder/doc.go120
-rw-r--r--vendor/github.com/go-xorm/builder/error.go40
-rw-r--r--vendor/github.com/go-xorm/builder/go.mod1
-rw-r--r--vendor/github.com/go-xorm/builder/sql.go156
-rw-r--r--vendor/github.com/go-xorm/builder/string_builder.go119
-rw-r--r--vendor/github.com/go-xorm/core/.gitignore1
-rw-r--r--vendor/github.com/go-xorm/core/LICENSE27
-rw-r--r--vendor/github.com/go-xorm/core/README.md116
-rw-r--r--vendor/github.com/go-xorm/core/benchmark.sh1
-rw-r--r--vendor/github.com/go-xorm/core/cache.go87
-rw-r--r--vendor/github.com/go-xorm/core/circle.yml15
-rw-r--r--vendor/github.com/go-xorm/core/column.go159
-rw-r--r--vendor/github.com/go-xorm/core/converstion.go8
-rw-r--r--vendor/github.com/go-xorm/core/db.go401
-rw-r--r--vendor/github.com/go-xorm/core/dialect.go315
-rw-r--r--vendor/github.com/go-xorm/core/driver.go27
-rw-r--r--vendor/github.com/go-xorm/core/error.go8
-rw-r--r--vendor/github.com/go-xorm/core/filter.go64
-rw-r--r--vendor/github.com/go-xorm/core/go.mod1
-rw-r--r--vendor/github.com/go-xorm/core/ilogger.go31
-rw-r--r--vendor/github.com/go-xorm/core/index.go63
-rw-r--r--vendor/github.com/go-xorm/core/mapper.go254
-rw-r--r--vendor/github.com/go-xorm/core/pk.go26
-rw-r--r--vendor/github.com/go-xorm/core/rows.go334
-rw-r--r--vendor/github.com/go-xorm/core/scan.go55
-rw-r--r--vendor/github.com/go-xorm/core/table.go150
-rw-r--r--vendor/github.com/go-xorm/core/type.go311
-rw-r--r--vendor/github.com/go-xorm/xorm/.drone.yml4
-rw-r--r--vendor/github.com/go-xorm/xorm/README.md14
-rw-r--r--vendor/github.com/go-xorm/xorm/README_CN.md10
-rw-r--r--vendor/github.com/go-xorm/xorm/cache_lru.go2
-rw-r--r--vendor/github.com/go-xorm/xorm/cache_memory_store.go2
-rw-r--r--vendor/github.com/go-xorm/xorm/circle.yml41
-rw-r--r--vendor/github.com/go-xorm/xorm/dialect_mssql.go26
-rw-r--r--vendor/github.com/go-xorm/xorm/dialect_mysql.go5
-rw-r--r--vendor/github.com/go-xorm/xorm/dialect_oracle.go2
-rw-r--r--vendor/github.com/go-xorm/xorm/dialect_postgres.go18
-rw-r--r--vendor/github.com/go-xorm/xorm/dialect_sqlite3.go2
-rw-r--r--vendor/github.com/go-xorm/xorm/engine.go24
-rw-r--r--vendor/github.com/go-xorm/xorm/engine_cond.go13
-rw-r--r--vendor/github.com/go-xorm/xorm/engine_context.go28
-rw-r--r--vendor/github.com/go-xorm/xorm/engine_group.go17
-rw-r--r--vendor/github.com/go-xorm/xorm/engine_table.go4
-rw-r--r--vendor/github.com/go-xorm/xorm/error.go2
-rw-r--r--vendor/github.com/go-xorm/xorm/go.mod22
-rw-r--r--vendor/github.com/go-xorm/xorm/go.sum50
-rw-r--r--vendor/github.com/go-xorm/xorm/helpers.go2
-rw-r--r--vendor/github.com/go-xorm/xorm/interface.go12
-rw-r--r--vendor/github.com/go-xorm/xorm/json.go31
-rw-r--r--vendor/github.com/go-xorm/xorm/logger.go2
-rw-r--r--vendor/github.com/go-xorm/xorm/rows.go37
-rw-r--r--vendor/github.com/go-xorm/xorm/session.go36
-rw-r--r--vendor/github.com/go-xorm/xorm/session_cols.go2
-rw-r--r--vendor/github.com/go-xorm/xorm/session_cond.go2
-rw-r--r--vendor/github.com/go-xorm/xorm/session_context.go (renamed from vendor/github.com/go-xorm/xorm/context.go)13
-rw-r--r--vendor/github.com/go-xorm/xorm/session_convert.go23
-rw-r--r--vendor/github.com/go-xorm/xorm/session_delete.go6
-rw-r--r--vendor/github.com/go-xorm/xorm/session_exist.go18
-rw-r--r--vendor/github.com/go-xorm/xorm/session_find.go8
-rw-r--r--vendor/github.com/go-xorm/xorm/session_get.go6
-rw-r--r--vendor/github.com/go-xorm/xorm/session_insert.go175
-rw-r--r--vendor/github.com/go-xorm/xorm/session_iterate.go4
-rw-r--r--vendor/github.com/go-xorm/xorm/session_query.go26
-rw-r--r--vendor/github.com/go-xorm/xorm/session_raw.go34
-rw-r--r--vendor/github.com/go-xorm/xorm/session_schema.go4
-rw-r--r--vendor/github.com/go-xorm/xorm/session_tx.go2
-rw-r--r--vendor/github.com/go-xorm/xorm/session_update.go54
-rw-r--r--vendor/github.com/go-xorm/xorm/statement.go48
-rw-r--r--vendor/github.com/go-xorm/xorm/syslogger.go2
-rw-r--r--vendor/github.com/go-xorm/xorm/tag.go2
-rw-r--r--vendor/github.com/go-xorm/xorm/test_mssql.sh2
-rw-r--r--vendor/github.com/go-xorm/xorm/test_tidb.sh1
-rw-r--r--vendor/github.com/go-xorm/xorm/types.go6
-rw-r--r--vendor/github.com/go-xorm/xorm/xorm.go20
111 files changed, 951 insertions, 5939 deletions
diff --git a/vendor/github.com/go-sql-driver/mysql/.travis.yml b/vendor/github.com/go-sql-driver/mysql/.travis.yml
index 75505f1440..cc1268c361 100644
--- a/vendor/github.com/go-sql-driver/mysql/.travis.yml
+++ b/vendor/github.com/go-sql-driver/mysql/.travis.yml
@@ -1,10 +1,10 @@
sudo: false
language: go
go:
+ - 1.7.x
- 1.8.x
- 1.9.x
- 1.10.x
- - 1.11.x
- master
before_install:
diff --git a/vendor/github.com/go-sql-driver/mysql/AUTHORS b/vendor/github.com/go-sql-driver/mysql/AUTHORS
index 5ce4f7eca1..73ff68fbcf 100644
--- a/vendor/github.com/go-sql-driver/mysql/AUTHORS
+++ b/vendor/github.com/go-sql-driver/mysql/AUTHORS
@@ -35,7 +35,6 @@ Hanno Braun <mail at hannobraun.com>
Henri Yandell <flamefew at gmail.com>
Hirotaka Yamamoto <ymmt2005 at gmail.com>
ICHINOSE Shogo <shogo82148 at gmail.com>
-Ilia Cimpoes <ichimpoesh at gmail.com>
INADA Naoki <songofacandy at gmail.com>
Jacek Szwec <szwec.jacek at gmail.com>
James Harr <james.harr at gmail.com>
@@ -73,9 +72,6 @@ Shuode Li <elemount at qq.com>
Soroush Pour <me at soroushjp.com>
Stan Putrya <root.vagner at gmail.com>
Stanley Gunawan <gunawan.stanley at gmail.com>
-Steven Hartland <steven.hartland at multiplay.co.uk>
-Thomas Wodarek <wodarekwebpage at gmail.com>
-Tom Jenkinson <tom at tjenkinson.me>
Xiangyu Hu <xiangyu.hu at outlook.com>
Xiaobing Jiang <s7v7nislands at gmail.com>
Xiuming Chen <cc at cxm.cc>
@@ -91,4 +87,3 @@ Keybase Inc.
Percona LLC
Pivotal Inc.
Stripe Inc.
-Multiplay Ltd.
diff --git a/vendor/github.com/go-sql-driver/mysql/CHANGELOG.md b/vendor/github.com/go-sql-driver/mysql/CHANGELOG.md
index 2d87d74c97..ce1b5330a9 100644
--- a/vendor/github.com/go-sql-driver/mysql/CHANGELOG.md
+++ b/vendor/github.com/go-sql-driver/mysql/CHANGELOG.md
@@ -1,3 +1,14 @@
+## Version 1.4.1 (2018-11-14)
+
+Bugfixes:
+
+ - Fix TIME format for binary columns (#818)
+ - Fix handling of empty auth plugin names (#835)
+ - Fix caching_sha2_password with empty password (#826)
+ - Fix canceled context broke mysqlConn (#862)
+ - Fix OldAuthSwitchRequest support (#870)
+ - Fix Auth Response packet for cleartext password (#887)
+
## Version 1.4 (2018-06-03)
Changes:
diff --git a/vendor/github.com/go-sql-driver/mysql/README.md b/vendor/github.com/go-sql-driver/mysql/README.md
index 341d9194c1..2e9b07eeb2 100644
--- a/vendor/github.com/go-sql-driver/mysql/README.md
+++ b/vendor/github.com/go-sql-driver/mysql/README.md
@@ -40,7 +40,7 @@ A MySQL-Driver for Go's [database/sql](https://golang.org/pkg/database/sql/) pac
* Optional placeholder interpolation
## Requirements
- * Go 1.8 or higher. We aim to support the 3 latest versions of Go.
+ * Go 1.7 or higher. We aim to support the 3 latest versions of Go.
* MySQL (4.1+), MariaDB, Percona Server, Google CloudSQL or Sphinx (2.2.3+)
---------------------------------------
@@ -328,11 +328,11 @@ Timeout for establishing connections, aka dial timeout. The value must be a deci
```
Type: bool / string
-Valid Values: true, false, skip-verify, preferred, <name>
+Valid Values: true, false, skip-verify, <name>
Default: false
```
-`tls=true` enables TLS / SSL encrypted connection to the server. Use `skip-verify` if you want to use a self-signed or invalid certificate (server side) or use `preferred` to use TLS only when advertised by the server. This is similar to `skip-verify`, but additionally allows a fallback to a connection which is not encrypted. Neither `skip-verify` nor `preferred` add any reliable security. You can use a custom TLS config after registering it with [`mysql.RegisterTLSConfig`](https://godoc.org/github.com/go-sql-driver/mysql#RegisterTLSConfig).
+`tls=true` enables TLS / SSL encrypted connection to the server. Use `skip-verify` if you want to use a self-signed or invalid certificate (server side). Use a custom value registered with [`mysql.RegisterTLSConfig`](https://godoc.org/github.com/go-sql-driver/mysql#RegisterTLSConfig).
##### `writeTimeout`
diff --git a/vendor/github.com/go-sql-driver/mysql/auth.go b/vendor/github.com/go-sql-driver/mysql/auth.go
index fec7040d4a..14f678a87b 100644
--- a/vendor/github.com/go-sql-driver/mysql/auth.go
+++ b/vendor/github.com/go-sql-driver/mysql/auth.go
@@ -360,15 +360,13 @@ func (mc *mysqlConn) handleAuthResult(oldAuthData []byte, plugin string) error {
pubKey := mc.cfg.pubKey
if pubKey == nil {
// request public key from server
- data, err := mc.buf.takeSmallBuffer(4 + 1)
- if err != nil {
- return err
- }
+ data := mc.buf.takeSmallBuffer(4 + 1)
data[4] = cachingSha2PasswordRequestPublicKey
mc.writePacket(data)
// parse public key
- if data, err = mc.readPacket(); err != nil {
+ data, err := mc.readPacket()
+ if err != nil {
return err
}
diff --git a/vendor/github.com/go-sql-driver/mysql/buffer.go b/vendor/github.com/go-sql-driver/mysql/buffer.go
index 19486bd6f6..eb4748bf44 100644
--- a/vendor/github.com/go-sql-driver/mysql/buffer.go
+++ b/vendor/github.com/go-sql-driver/mysql/buffer.go
@@ -22,17 +22,17 @@ const defaultBufSize = 4096
// The buffer is similar to bufio.Reader / Writer but zero-copy-ish
// Also highly optimized for this particular use case.
type buffer struct {
- buf []byte // buf is a byte buffer who's length and capacity are equal.
+ buf []byte
nc net.Conn
idx int
length int
timeout time.Duration
}
-// newBuffer allocates and returns a new buffer.
func newBuffer(nc net.Conn) buffer {
+ var b [defaultBufSize]byte
return buffer{
- buf: make([]byte, defaultBufSize),
+ buf: b[:],
nc: nc,
}
}
@@ -105,56 +105,43 @@ func (b *buffer) readNext(need int) ([]byte, error) {
return b.buf[offset:b.idx], nil
}
-// takeBuffer returns a buffer with the requested size.
+// returns a buffer with the requested size.
// If possible, a slice from the existing buffer is returned.
// Otherwise a bigger buffer is made.
// Only one buffer (total) can be used at a time.
-func (b *buffer) takeBuffer(length int) ([]byte, error) {
+func (b *buffer) takeBuffer(length int) []byte {
if b.length > 0 {
- return nil, ErrBusyBuffer
+ return nil
}
// test (cheap) general case first
- if length <= cap(b.buf) {
- return b.buf[:length], nil
+ if length <= defaultBufSize || length <= cap(b.buf) {
+ return b.buf[:length]
}
if length < maxPacketSize {
b.buf = make([]byte, length)
- return b.buf, nil
+ return b.buf
}
-
- // buffer is larger than we want to store.
- return make([]byte, length), nil
+ return make([]byte, length)
}
-// takeSmallBuffer is shortcut which can be used if length is
-// known to be smaller than defaultBufSize.
+// shortcut which can be used if the requested buffer is guaranteed to be
+// smaller than defaultBufSize
// Only one buffer (total) can be used at a time.
-func (b *buffer) takeSmallBuffer(length int) ([]byte, error) {
+func (b *buffer) takeSmallBuffer(length int) []byte {
if b.length > 0 {
- return nil, ErrBusyBuffer
+ return nil
}
- return b.buf[:length], nil
+ return b.buf[:length]
}
// takeCompleteBuffer returns the complete existing buffer.
// This can be used if the necessary buffer size is unknown.
-// cap and len of the returned buffer will be equal.
// Only one buffer (total) can be used at a time.
-func (b *buffer) takeCompleteBuffer() ([]byte, error) {
- if b.length > 0 {
- return nil, ErrBusyBuffer
- }
- return b.buf, nil
-}
-
-// store stores buf, an updated buffer, if its suitable to do so.
-func (b *buffer) store(buf []byte) error {
+func (b *buffer) takeCompleteBuffer() []byte {
if b.length > 0 {
- return ErrBusyBuffer
- } else if cap(buf) <= maxPacketSize && cap(buf) > cap(b.buf) {
- b.buf = buf[:cap(buf)]
+ return nil
}
- return nil
+ return b.buf
}
diff --git a/vendor/github.com/go-sql-driver/mysql/connection.go b/vendor/github.com/go-sql-driver/mysql/connection.go
index fc4ec7597d..e57061412b 100644
--- a/vendor/github.com/go-sql-driver/mysql/connection.go
+++ b/vendor/github.com/go-sql-driver/mysql/connection.go
@@ -9,8 +9,6 @@
package mysql
import (
- "context"
- "database/sql"
"database/sql/driver"
"io"
"net"
@@ -19,6 +17,16 @@ import (
"time"
)
+// a copy of context.Context for Go 1.7 and earlier
+type mysqlContext interface {
+ Done() <-chan struct{}
+ Err() error
+
+ // defined in context.Context, but not used in this driver:
+ // Deadline() (deadline time.Time, ok bool)
+ // Value(key interface{}) interface{}
+}
+
type mysqlConn struct {
buf buffer
netConn net.Conn
@@ -35,7 +43,7 @@ type mysqlConn struct {
// for context support (Go 1.8+)
watching bool
- watcher chan<- context.Context
+ watcher chan<- mysqlContext
closech chan struct{}
finished chan<- struct{}
canceled atomicError // set non-nil if conn is canceled
@@ -182,10 +190,10 @@ func (mc *mysqlConn) interpolateParams(query string, args []driver.Value) (strin
return "", driver.ErrSkip
}
- buf, err := mc.buf.takeCompleteBuffer()
- if err != nil {
+ buf := mc.buf.takeCompleteBuffer()
+ if buf == nil {
// can not take the buffer. Something must be wrong with the connection
- errLog.Print(err)
+ errLog.Print(ErrBusyBuffer)
return "", ErrInvalidConn
}
buf = buf[:0]
@@ -451,193 +459,3 @@ func (mc *mysqlConn) finish() {
case <-mc.closech:
}
}
-
-// Ping implements driver.Pinger interface
-func (mc *mysqlConn) Ping(ctx context.Context) (err error) {
- if mc.closed.IsSet() {
- errLog.Print(ErrInvalidConn)
- return driver.ErrBadConn
- }
-
- if err = mc.watchCancel(ctx); err != nil {
- return
- }
- defer mc.finish()
-
- if err = mc.writeCommandPacket(comPing); err != nil {
- return mc.markBadConn(err)
- }
-
- return mc.readResultOK()
-}
-
-// BeginTx implements driver.ConnBeginTx interface
-func (mc *mysqlConn) BeginTx(ctx context.Context, opts driver.TxOptions) (driver.Tx, error) {
- if err := mc.watchCancel(ctx); err != nil {
- return nil, err
- }
- defer mc.finish()
-
- if sql.IsolationLevel(opts.Isolation) != sql.LevelDefault {
- level, err := mapIsolationLevel(opts.Isolation)
- if err != nil {
- return nil, err
- }
- err = mc.exec("SET TRANSACTION ISOLATION LEVEL " + level)
- if err != nil {
- return nil, err
- }
- }
-
- return mc.begin(opts.ReadOnly)
-}
-
-func (mc *mysqlConn) QueryContext(ctx context.Context, query string, args []driver.NamedValue) (driver.Rows, error) {
- dargs, err := namedValueToValue(args)
- if err != nil {
- return nil, err
- }
-
- if err := mc.watchCancel(ctx); err != nil {
- return nil, err
- }
-
- rows, err := mc.query(query, dargs)
- if err != nil {
- mc.finish()
- return nil, err
- }
- rows.finish = mc.finish
- return rows, err
-}
-
-func (mc *mysqlConn) ExecContext(ctx context.Context, query string, args []driver.NamedValue) (driver.Result, error) {
- dargs, err := namedValueToValue(args)
- if err != nil {
- return nil, err
- }
-
- if err := mc.watchCancel(ctx); err != nil {
- return nil, err
- }
- defer mc.finish()
-
- return mc.Exec(query, dargs)
-}
-
-func (mc *mysqlConn) PrepareContext(ctx context.Context, query string) (driver.Stmt, error) {
- if err := mc.watchCancel(ctx); err != nil {
- return nil, err
- }
-
- stmt, err := mc.Prepare(query)
- mc.finish()
- if err != nil {
- return nil, err
- }
-
- select {
- default:
- case <-ctx.Done():
- stmt.Close()
- return nil, ctx.Err()
- }
- return stmt, nil
-}
-
-func (stmt *mysqlStmt) QueryContext(ctx context.Context, args []driver.NamedValue) (driver.Rows, error) {
- dargs, err := namedValueToValue(args)
- if err != nil {
- return nil, err
- }
-
- if err := stmt.mc.watchCancel(ctx); err != nil {
- return nil, err
- }
-
- rows, err := stmt.query(dargs)
- if err != nil {
- stmt.mc.finish()
- return nil, err
- }
- rows.finish = stmt.mc.finish
- return rows, err
-}
-
-func (stmt *mysqlStmt) ExecContext(ctx context.Context, args []driver.NamedValue) (driver.Result, error) {
- dargs, err := namedValueToValue(args)
- if err != nil {
- return nil, err
- }
-
- if err := stmt.mc.watchCancel(ctx); err != nil {
- return nil, err
- }
- defer stmt.mc.finish()
-
- return stmt.Exec(dargs)
-}
-
-func (mc *mysqlConn) watchCancel(ctx context.Context) error {
- if mc.watching {
- // Reach here if canceled,
- // so the connection is already invalid
- mc.cleanup()
- return nil
- }
- // When ctx is already cancelled, don't watch it.
- if err := ctx.Err(); err != nil {
- return err
- }
- // When ctx is not cancellable, don't watch it.
- if ctx.Done() == nil {
- return nil
- }
- // When watcher is not alive, can't watch it.
- if mc.watcher == nil {
- return nil
- }
-
- mc.watching = true
- mc.watcher <- ctx
- return nil
-}
-
-func (mc *mysqlConn) startWatcher() {
- watcher := make(chan context.Context, 1)
- mc.watcher = watcher
- finished := make(chan struct{})
- mc.finished = finished
- go func() {
- for {
- var ctx context.Context
- select {
- case ctx = <-watcher:
- case <-mc.closech:
- return
- }
-
- select {
- case <-ctx.Done():
- mc.cancel(ctx.Err())
- case <-finished:
- case <-mc.closech:
- return
- }
- }
- }()
-}
-
-func (mc *mysqlConn) CheckNamedValue(nv *driver.NamedValue) (err error) {
- nv.Value, err = converter{}.ConvertValue(nv.Value)
- return
-}
-
-// ResetSession implements driver.SessionResetter.
-// (From Go 1.10)
-func (mc *mysqlConn) ResetSession(ctx context.Context) error {
- if mc.closed.IsSet() {
- return driver.ErrBadConn
- }
- return nil
-}
diff --git a/vendor/github.com/go-sql-driver/mysql/connection_go18.go b/vendor/github.com/go-sql-driver/mysql/connection_go18.go
new file mode 100644
index 0000000000..ce52c7d167
--- /dev/null
+++ b/vendor/github.com/go-sql-driver/mysql/connection_go18.go
@@ -0,0 +1,207 @@
+// Go MySQL Driver - A MySQL-Driver for Go's database/sql package
+//
+// Copyright 2012 The Go-MySQL-Driver Authors. All rights reserved.
+//
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this file,
+// You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// +build go1.8
+
+package mysql
+
+import (
+ "context"
+ "database/sql"
+ "database/sql/driver"
+)
+
+// Ping implements driver.Pinger interface
+func (mc *mysqlConn) Ping(ctx context.Context) (err error) {
+ if mc.closed.IsSet() {
+ errLog.Print(ErrInvalidConn)
+ return driver.ErrBadConn
+ }
+
+ if err = mc.watchCancel(ctx); err != nil {
+ return
+ }
+ defer mc.finish()
+
+ if err = mc.writeCommandPacket(comPing); err != nil {
+ return
+ }
+
+ return mc.readResultOK()
+}
+
+// BeginTx implements driver.ConnBeginTx interface
+func (mc *mysqlConn) BeginTx(ctx context.Context, opts driver.TxOptions) (driver.Tx, error) {
+ if err := mc.watchCancel(ctx); err != nil {
+ return nil, err
+ }
+ defer mc.finish()
+
+ if sql.IsolationLevel(opts.Isolation) != sql.LevelDefault {
+ level, err := mapIsolationLevel(opts.Isolation)
+ if err != nil {
+ return nil, err
+ }
+ err = mc.exec("SET TRANSACTION ISOLATION LEVEL " + level)
+ if err != nil {
+ return nil, err
+ }
+ }
+
+ return mc.begin(opts.ReadOnly)
+}
+
+func (mc *mysqlConn) QueryContext(ctx context.Context, query string, args []driver.NamedValue) (driver.Rows, error) {
+ dargs, err := namedValueToValue(args)
+ if err != nil {
+ return nil, err
+ }
+
+ if err := mc.watchCancel(ctx); err != nil {
+ return nil, err
+ }
+
+ rows, err := mc.query(query, dargs)
+ if err != nil {
+ mc.finish()
+ return nil, err
+ }
+ rows.finish = mc.finish
+ return rows, err
+}
+
+func (mc *mysqlConn) ExecContext(ctx context.Context, query string, args []driver.NamedValue) (driver.Result, error) {
+ dargs, err := namedValueToValue(args)
+ if err != nil {
+ return nil, err
+ }
+
+ if err := mc.watchCancel(ctx); err != nil {
+ return nil, err
+ }
+ defer mc.finish()
+
+ return mc.Exec(query, dargs)
+}
+
+func (mc *mysqlConn) PrepareContext(ctx context.Context, query string) (driver.Stmt, error) {
+ if err := mc.watchCancel(ctx); err != nil {
+ return nil, err
+ }
+
+ stmt, err := mc.Prepare(query)
+ mc.finish()
+ if err != nil {
+ return nil, err
+ }
+
+ select {
+ default:
+ case <-ctx.Done():
+ stmt.Close()
+ return nil, ctx.Err()
+ }
+ return stmt, nil
+}
+
+func (stmt *mysqlStmt) QueryContext(ctx context.Context, args []driver.NamedValue) (driver.Rows, error) {
+ dargs, err := namedValueToValue(args)
+ if err != nil {
+ return nil, err
+ }
+
+ if err := stmt.mc.watchCancel(ctx); err != nil {
+ return nil, err
+ }
+
+ rows, err := stmt.query(dargs)
+ if err != nil {
+ stmt.mc.finish()
+ return nil, err
+ }
+ rows.finish = stmt.mc.finish
+ return rows, err
+}
+
+func (stmt *mysqlStmt) ExecContext(ctx context.Context, args []driver.NamedValue) (driver.Result, error) {
+ dargs, err := namedValueToValue(args)
+ if err != nil {
+ return nil, err
+ }
+
+ if err := stmt.mc.watchCancel(ctx); err != nil {
+ return nil, err
+ }
+ defer stmt.mc.finish()
+
+ return stmt.Exec(dargs)
+}
+
+func (mc *mysqlConn) watchCancel(ctx context.Context) error {
+ if mc.watching {
+ // Reach here if canceled,
+ // so the connection is already invalid
+ mc.cleanup()
+ return nil
+ }
+ // When ctx is already cancelled, don't watch it.
+ if err := ctx.Err(); err != nil {
+ return err
+ }
+ // When ctx is not cancellable, don't watch it.
+ if ctx.Done() == nil {
+ return nil
+ }
+ // When watcher is not alive, can't watch it.
+ if mc.watcher == nil {
+ return nil
+ }
+
+ mc.watching = true
+ mc.watcher <- ctx
+ return nil
+}
+
+func (mc *mysqlConn) startWatcher() {
+ watcher := make(chan mysqlContext, 1)
+ mc.watcher = watcher
+ finished := make(chan struct{})
+ mc.finished = finished
+ go func() {
+ for {
+ var ctx mysqlContext
+ select {
+ case ctx = <-watcher:
+ case <-mc.closech:
+ return
+ }
+
+ select {
+ case <-ctx.Done():
+ mc.cancel(ctx.Err())
+ case <-finished:
+ case <-mc.closech:
+ return
+ }
+ }
+ }()
+}
+
+func (mc *mysqlConn) CheckNamedValue(nv *driver.NamedValue) (err error) {
+ nv.Value, err = converter{}.ConvertValue(nv.Value)
+ return
+}
+
+// ResetSession implements driver.SessionResetter.
+// (From Go 1.10)
+func (mc *mysqlConn) ResetSession(ctx context.Context) error {
+ if mc.closed.IsSet() {
+ return driver.ErrBadConn
+ }
+ return nil
+}
diff --git a/vendor/github.com/go-sql-driver/mysql/driver.go b/vendor/github.com/go-sql-driver/mysql/driver.go
index 9f4967087f..e9ede2c8da 100644
--- a/vendor/github.com/go-sql-driver/mysql/driver.go
+++ b/vendor/github.com/go-sql-driver/mysql/driver.go
@@ -23,6 +23,11 @@ import (
"sync"
)
+// watcher interface is used for context support (From Go 1.8)
+type watcher interface {
+ startWatcher()
+}
+
// MySQLDriver is exported to make the driver directly accessible.
// In general the driver is used via the database/sql package.
type MySQLDriver struct{}
@@ -50,7 +55,7 @@ func RegisterDial(net string, dial DialFunc) {
// Open new Connection.
// See https://github.com/go-sql-driver/mysql#dsn-data-source-name for how
-// the DSN string is formatted
+// the DSN string is formated
func (d MySQLDriver) Open(dsn string) (driver.Conn, error) {
var err error
@@ -77,10 +82,6 @@ func (d MySQLDriver) Open(dsn string) (driver.Conn, error) {
mc.netConn, err = nd.Dial(mc.cfg.Net, mc.cfg.Addr)
}
if err != nil {
- if nerr, ok := err.(net.Error); ok && nerr.Temporary() {
- errLog.Print("net.Error from Dial()': ", nerr.Error())
- return nil, driver.ErrBadConn
- }
return nil, err
}
@@ -95,7 +96,9 @@ func (d MySQLDriver) Open(dsn string) (driver.Conn, error) {
}
// Call startWatcher for context support (From Go 1.8)
- mc.startWatcher()
+ if s, ok := interface{}(mc).(watcher); ok {
+ s.startWatcher()
+ }
mc.buf = newBuffer(mc.netConn)
diff --git a/vendor/github.com/go-sql-driver/mysql/dsn.go b/vendor/github.com/go-sql-driver/mysql/dsn.go
index b9134722eb..be014babe3 100644
--- a/vendor/github.com/go-sql-driver/mysql/dsn.go
+++ b/vendor/github.com/go-sql-driver/mysql/dsn.go
@@ -560,7 +560,7 @@ func parseDSNParams(cfg *Config, params string) (err error) {
} else {
cfg.TLSConfig = "false"
}
- } else if vl := strings.ToLower(value); vl == "skip-verify" || vl == "preferred" {
+ } else if vl := strings.ToLower(value); vl == "skip-verify" {
cfg.TLSConfig = vl
cfg.tls = &tls.Config{InsecureSkipVerify: true}
} else {
diff --git a/vendor/github.com/go-sql-driver/mysql/packets.go b/vendor/github.com/go-sql-driver/mysql/packets.go
index 5e0853767d..9ed6408509 100644
--- a/vendor/github.com/go-sql-driver/mysql/packets.go
+++ b/vendor/github.com/go-sql-driver/mysql/packets.go
@@ -51,7 +51,7 @@ func (mc *mysqlConn) readPacket() ([]byte, error) {
mc.sequence++
// packets with length 0 terminate a previous packet which is a
- // multiple of (2^24)-1 bytes long
+ // multiple of (2^24)−1 bytes long
if pktLen == 0 {
// there was no previous packet
if prevData == nil {
@@ -194,11 +194,7 @@ func (mc *mysqlConn) readHandshakePacket() (data []byte, plugin string, err erro
return nil, "", ErrOldProtocol
}
if mc.flags&clientSSL == 0 && mc.cfg.tls != nil {
- if mc.cfg.TLSConfig == "preferred" {
- mc.cfg.tls = nil
- } else {
- return nil, "", ErrNoTLS
- }
+ return nil, "", ErrNoTLS
}
pos += 2
@@ -290,10 +286,10 @@ func (mc *mysqlConn) writeHandshakeResponsePacket(authResp []byte, plugin string
}
// Calculate packet length and get buffer with that size
- data, err := mc.buf.takeSmallBuffer(pktLen + 4)
- if err != nil {
+ data := mc.buf.takeSmallBuffer(pktLen + 4)
+ if data == nil {
// cannot take the buffer. Something must be wrong with the connection
- errLog.Print(err)
+ errLog.Print(ErrBusyBuffer)
return errBadConnNoWrite
}
@@ -371,10 +367,10 @@ func (mc *mysqlConn) writeHandshakeResponsePacket(authResp []byte, plugin string
// http://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::AuthSwitchResponse
func (mc *mysqlConn) writeAuthSwitchPacket(authData []byte) error {
pktLen := 4 + len(authData)
- data, err := mc.buf.takeSmallBuffer(pktLen)
- if err != nil {
+ data := mc.buf.takeSmallBuffer(pktLen)
+ if data == nil {
// cannot take the buffer. Something must be wrong with the connection
- errLog.Print(err)
+ errLog.Print(ErrBusyBuffer)
return errBadConnNoWrite
}
@@ -391,10 +387,10 @@ func (mc *mysqlConn) writeCommandPacket(command byte) error {
// Reset Packet Sequence
mc.sequence = 0
- data, err := mc.buf.takeSmallBuffer(4 + 1)
- if err != nil {
+ data := mc.buf.takeSmallBuffer(4 + 1)
+ if data == nil {
// cannot take the buffer. Something must be wrong with the connection
- errLog.Print(err)
+ errLog.Print(ErrBusyBuffer)
return errBadConnNoWrite
}
@@ -410,10 +406,10 @@ func (mc *mysqlConn) writeCommandPacketStr(command byte, arg string) error {
mc.sequence = 0
pktLen := 1 + len(arg)
- data, err := mc.buf.takeBuffer(pktLen + 4)
- if err != nil {
+ data := mc.buf.takeBuffer(pktLen + 4)
+ if data == nil {
// cannot take the buffer. Something must be wrong with the connection
- errLog.Print(err)
+ errLog.Print(ErrBusyBuffer)
return errBadConnNoWrite
}
@@ -431,10 +427,10 @@ func (mc *mysqlConn) writeCommandPacketUint32(command byte, arg uint32) error {
// Reset Packet Sequence
mc.sequence = 0
- data, err := mc.buf.takeSmallBuffer(4 + 1 + 4)
- if err != nil {
+ data := mc.buf.takeSmallBuffer(4 + 1 + 4)
+ if data == nil {
// cannot take the buffer. Something must be wrong with the connection
- errLog.Print(err)
+ errLog.Print(ErrBusyBuffer)
return errBadConnNoWrite
}
@@ -887,7 +883,7 @@ func (stmt *mysqlStmt) writeExecutePacket(args []driver.Value) error {
const minPktLen = 4 + 1 + 4 + 1 + 4
mc := stmt.mc
- // Determine threshold dynamically to avoid packet size shortage.
+ // Determine threshould dynamically to avoid packet size shortage.
longDataSize := mc.maxAllowedPacket / (stmt.paramCount + 1)
if longDataSize < 64 {
longDataSize = 64
@@ -897,17 +893,15 @@ func (stmt *mysqlStmt) writeExecutePacket(args []driver.Value) error {
mc.sequence = 0
var data []byte
- var err error
if len(args) == 0 {
- data, err = mc.buf.takeBuffer(minPktLen)
+ data = mc.buf.takeBuffer(minPktLen)
} else {
- data, err = mc.buf.takeCompleteBuffer()
- // In this case the len(data) == cap(data) which is used to optimise the flow below.
+ data = mc.buf.takeCompleteBuffer()
}
- if err != nil {
+ if data == nil {
// cannot take the buffer. Something must be wrong with the connection
- errLog.Print(err)
+ errLog.Print(ErrBusyBuffer)
return errBadConnNoWrite
}
@@ -933,7 +927,7 @@ func (stmt *mysqlStmt) writeExecutePacket(args []driver.Value) error {
pos := minPktLen
var nullMask []byte
- if maskLen, typesLen := (len(args)+7)/8, 1+2*len(args); pos+maskLen+typesLen >= cap(data) {
+ if maskLen, typesLen := (len(args)+7)/8, 1+2*len(args); pos+maskLen+typesLen >= len(data) {
// buffer has to be extended but we don't know by how much so
// we depend on append after all data with known sizes fit.
// We stop at that because we deal with a lot of columns here
@@ -942,11 +936,10 @@ func (stmt *mysqlStmt) writeExecutePacket(args []driver.Value) error {
copy(tmp[:pos], data[:pos])
data = tmp
nullMask = data[pos : pos+maskLen]
- // No need to clean nullMask as make ensures that.
pos += maskLen
} else {
nullMask = data[pos : pos+maskLen]
- for i := range nullMask {
+ for i := 0; i < maskLen; i++ {
nullMask[i] = 0
}
pos += maskLen
@@ -1083,10 +1076,7 @@ func (stmt *mysqlStmt) writeExecutePacket(args []driver.Value) error {
// In that case we must build the data packet with the new values buffer
if valuesCap != cap(paramValues) {
data = append(data[:pos], paramValues...)
- if err = mc.buf.store(data); err != nil {
- errLog.Print(err)
- return errBadConnNoWrite
- }
+ mc.buf.buf = data
}
pos += len(paramValues)
diff --git a/vendor/github.com/go-sql-driver/mysql/utils.go b/vendor/github.com/go-sql-driver/mysql/utils.go
index cb3650bb9b..ca5d47d825 100644
--- a/vendor/github.com/go-sql-driver/mysql/utils.go
+++ b/vendor/github.com/go-sql-driver/mysql/utils.go
@@ -10,10 +10,8 @@ package mysql
import (
"crypto/tls"
- "database/sql"
"database/sql/driver"
"encoding/binary"
- "errors"
"fmt"
"io"
"strconv"
@@ -82,7 +80,7 @@ func DeregisterTLSConfig(key string) {
func getTLSConfigClone(key string) (config *tls.Config) {
tlsConfigLock.RLock()
if v, ok := tlsConfigRegistry[key]; ok {
- config = v.Clone()
+ config = cloneTLSConfig(v)
}
tlsConfigLock.RUnlock()
return
@@ -726,30 +724,3 @@ func (ae *atomicError) Value() error {
}
return nil
}
-
-func namedValueToValue(named []driver.NamedValue) ([]driver.Value, error) {
- dargs := make([]driver.Value, len(named))
- for n, param := range named {
- if len(param.Name) > 0 {
- // TODO: support the use of Named Parameters #561
- return nil, errors.New("mysql: driver does not support the use of Named Parameters")
- }
- dargs[n] = param.Value
- }
- return dargs, nil
-}
-
-func mapIsolationLevel(level driver.IsolationLevel) (string, error) {
- switch sql.IsolationLevel(level) {
- case sql.LevelRepeatableRead:
- return "REPEATABLE READ", nil
- case sql.LevelReadCommitted:
- return "READ COMMITTED", nil
- case sql.LevelReadUncommitted:
- return "READ UNCOMMITTED", nil
- case sql.LevelSerializable:
- return "SERIALIZABLE", nil
- default:
- return "", fmt.Errorf("mysql: unsupported isolation level: %v", level)
- }
-}
diff --git a/vendor/github.com/go-sql-driver/mysql/utils_go17.go b/vendor/github.com/go-sql-driver/mysql/utils_go17.go
new file mode 100644
index 0000000000..f595634567
--- /dev/null
+++ b/vendor/github.com/go-sql-driver/mysql/utils_go17.go
@@ -0,0 +1,40 @@
+// Go MySQL Driver - A MySQL-Driver for Go's database/sql package
+//
+// Copyright 2017 The Go-MySQL-Driver Authors. All rights reserved.
+//
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this file,
+// You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// +build go1.7
+// +build !go1.8
+
+package mysql
+
+import "crypto/tls"
+
+func cloneTLSConfig(c *tls.Config) *tls.Config {
+ return &tls.Config{
+ Rand: c.Rand,
+ Time: c.Time,
+ Certificates: c.Certificates,
+ NameToCertificate: c.NameToCertificate,
+ GetCertificate: c.GetCertificate,
+ RootCAs: c.RootCAs,
+ NextProtos: c.NextProtos,
+ ServerName: c.ServerName,
+ ClientAuth: c.ClientAuth,
+ ClientCAs: c.ClientCAs,
+ InsecureSkipVerify: c.InsecureSkipVerify,
+ CipherSuites: c.CipherSuites,
+ PreferServerCipherSuites: c.PreferServerCipherSuites,
+ SessionTicketsDisabled: c.SessionTicketsDisabled,
+ SessionTicketKey: c.SessionTicketKey,
+ ClientSessionCache: c.ClientSessionCache,
+ MinVersion: c.MinVersion,
+ MaxVersion: c.MaxVersion,
+ CurvePreferences: c.CurvePreferences,
+ DynamicRecordSizingDisabled: c.DynamicRecordSizingDisabled,
+ Renegotiation: c.Renegotiation,
+ }
+}
diff --git a/vendor/github.com/go-sql-driver/mysql/utils_go18.go b/vendor/github.com/go-sql-driver/mysql/utils_go18.go
new file mode 100644
index 0000000000..c35c2a6aab
--- /dev/null
+++ b/vendor/github.com/go-sql-driver/mysql/utils_go18.go
@@ -0,0 +1,50 @@
+// Go MySQL Driver - A MySQL-Driver for Go's database/sql package
+//
+// Copyright 2017 The Go-MySQL-Driver Authors. All rights reserved.
+//
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this file,
+// You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// +build go1.8
+
+package mysql
+
+import (
+ "crypto/tls"
+ "database/sql"
+ "database/sql/driver"
+ "errors"
+ "fmt"
+)
+
+func cloneTLSConfig(c *tls.Config) *tls.Config {
+ return c.Clone()
+}
+
+func namedValueToValue(named []driver.NamedValue) ([]driver.Value, error) {
+ dargs := make([]driver.Value, len(named))
+ for n, param := range named {
+ if len(param.Name) > 0 {
+ // TODO: support the use of Named Parameters #561
+ return nil, errors.New("mysql: driver does not support the use of Named Parameters")
+ }
+ dargs[n] = param.Value
+ }
+ return dargs, nil
+}
+
+func mapIsolationLevel(level driver.IsolationLevel) (string, error) {
+ switch sql.IsolationLevel(level) {
+ case sql.LevelRepeatableRead:
+ return "REPEATABLE READ", nil
+ case sql.LevelReadCommitted:
+ return "READ COMMITTED", nil
+ case sql.LevelReadUncommitted:
+ return "READ UNCOMMITTED", nil
+ case sql.LevelSerializable:
+ return "SERIALIZABLE", nil
+ default:
+ return "", fmt.Errorf("mysql: unsupported isolation level: %v", level)
+ }
+}
diff --git a/vendor/github.com/go-xorm/builder/.drone.yml b/vendor/github.com/go-xorm/builder/.drone.yml
deleted file mode 100644
index ca40377721..0000000000
--- a/vendor/github.com/go-xorm/builder/.drone.yml
+++ /dev/null
@@ -1,37 +0,0 @@
-workspace:
- base: /go
- path: src/github.com/go-xorm/builder
-
-clone:
- git:
- image: plugins/git:next
- depth: 50
- tags: true
-
-matrix:
- GO_VERSION:
- - 1.8
- - 1.9
- - 1.10
- - 1.11
-
-pipeline:
- test:
- image: golang:${GO_VERSION}
- commands:
- - go get -u github.com/golang/lint/golint
- - go get -u github.com/stretchr/testify/assert
- - go get -u github.com/go-xorm/sqlfiddle
- - golint ./...
- - go test -v -race -coverprofile=coverage.txt -covermode=atomic
- when:
- event: [ push, tag, pull_request ]
-
-codecov:
- image: robertstettner/drone-codecov
- group: build
- secrets: [ codecov_token ]
- files:
- - coverage.txt
- when:
- event: [ push, pull_request ] \ No newline at end of file
diff --git a/vendor/github.com/go-xorm/builder/LICENSE b/vendor/github.com/go-xorm/builder/LICENSE
deleted file mode 100644
index 614d5e2829..0000000000
--- a/vendor/github.com/go-xorm/builder/LICENSE
+++ /dev/null
@@ -1,27 +0,0 @@
-Copyright (c) 2016 The Xorm Authors
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
-* Neither the name of the {organization} nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/github.com/go-xorm/builder/README.md b/vendor/github.com/go-xorm/builder/README.md
deleted file mode 100644
index cf516d1fd5..0000000000
--- a/vendor/github.com/go-xorm/builder/README.md
+++ /dev/null
@@ -1,206 +0,0 @@
-# SQL builder
-
-[![GitCI.cn](https://gitci.cn/api/badges/go-xorm/builder/status.svg)](https://gitci.cn/go-xorm/builder) [![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.
-
-Make sure you have installed Go 1.8+ and then:
-
- go get github.com/go-xorm/builder
-
-# Insert
-
-```Go
-sql, args, err := builder.Insert(Eq{"c": 1, "d": 2}).Into("table1").ToSQL()
-
-// INSERT INTO table1 SELECT * FROM table2
-sql, err := builder.Insert().Into("table1").Select().From("table2").ToBoundSQL()
-
-// INSERT INTO table1 (a, b) SELECT b, c FROM table2
-sql, err = builder.Insert("a, b").Into("table1").Select("b, c").From("table2").ToBoundSQL()
-```
-
-# Select
-
-```Go
-// Simple Query
-sql, args, err := Select("c, d").From("table1").Where(Eq{"a": 1}).ToSQL()
-// With join
-sql, args, err = Select("c, d").From("table1").LeftJoin("table2", Eq{"table1.id": 1}.And(Lt{"table2.id": 3})).
- RightJoin("table3", "table2.id = table3.tid").Where(Eq{"a": 1}).ToSQL()
-// From sub query
-sql, args, err := Select("sub.id").From(Select("c").From("table1").Where(Eq{"a": 1}), "sub").Where(Eq{"b": 1}).ToSQL()
-// From union query
-sql, args, err = Select("sub.id").From(
- Select("id").From("table1").Where(Eq{"a": 1}).Union("all", Select("id").From("table1").Where(Eq{"a": 2})),"sub").
- Where(Eq{"b": 1}).ToSQL()
-// With order by
-sql, args, err = Select("a", "b", "c").From("table1").Where(Eq{"f1": "v1", "f2": "v2"}).
- OrderBy("a ASC").ToSQL()
-// With limit.
-// Be careful! You should set up specific dialect for builder before performing a query with LIMIT
-sql, args, err = Dialect(MYSQL).Select("a", "b", "c").From("table1").OrderBy("a ASC").
- Limit(5, 10).ToSQL()
-```
-
-# Update
-
-```Go
-sql, args, err := Update(Eq{"a": 2}).From("table1").Where(Eq{"a": 1}).ToSQL()
-```
-
-# Delete
-
-```Go
-sql, args, err := Delete(Eq{"a": 1}).From("table1").ToSQL()
-```
-
-# Union
-
-```Go
-sql, args, err := Select("*").From("a").Where(Eq{"status": "1"}).
- Union("all", Select("*").From("a").Where(Eq{"status": "2"})).
- Union("distinct", Select("*").From("a").Where(Eq{"status": "3"})).
- Union("", Select("*").From("a").Where(Eq{"status": "4"})).
- ToSQL()
-```
-
-# Conditions
-
-* `Eq` is a redefine of a map, you can give one or more conditions to `Eq`
-
-```Go
-import . "github.com/go-xorm/builder"
-
-sql, args, _ := ToSQL(Eq{"a":1})
-// a=? [1]
-sql, args, _ := ToSQL(Eq{"b":"c"}.And(Eq{"c": 0}))
-// b=? AND c=? ["c", 0]
-sql, args, _ := ToSQL(Eq{"b":"c", "c":0})
-// b=? AND c=? ["c", 0]
-sql, args, _ := ToSQL(Eq{"b":"c"}.Or(Eq{"b":"d"}))
-// b=? OR b=? ["c", "d"]
-sql, args, _ := ToSQL(Eq{"b": []string{"c", "d"}})
-// b IN (?,?) ["c", "d"]
-sql, args, _ := ToSQL(Eq{"b": 1, "c":[]int{2, 3}})
-// b=? AND c IN (?,?) [1, 2, 3]
-```
-
-* `Neq` is the same to `Eq`
-
-```Go
-import . "github.com/go-xorm/builder"
-
-sql, args, _ := ToSQL(Neq{"a":1})
-// a<>? [1]
-sql, args, _ := ToSQL(Neq{"b":"c"}.And(Neq{"c": 0}))
-// b<>? AND c<>? ["c", 0]
-sql, args, _ := ToSQL(Neq{"b":"c", "c":0})
-// b<>? AND c<>? ["c", 0]
-sql, args, _ := ToSQL(Neq{"b":"c"}.Or(Neq{"b":"d"}))
-// b<>? OR b<>? ["c", "d"]
-sql, args, _ := ToSQL(Neq{"b": []string{"c", "d"}})
-// b NOT IN (?,?) ["c", "d"]
-sql, args, _ := ToSQL(Neq{"b": 1, "c":[]int{2, 3}})
-// b<>? AND c NOT IN (?,?) [1, 2, 3]
-```
-
-* `Gt`, `Gte`, `Lt`, `Lte`
-
-```Go
-import . "github.com/go-xorm/builder"
-
-sql, args, _ := ToSQL(Gt{"a", 1}.And(Gte{"b", 2}))
-// a>? AND b>=? [1, 2]
-sql, args, _ := ToSQL(Lt{"a", 1}.Or(Lte{"b", 2}))
-// a<? OR b<=? [1, 2]
-```
-
-* `Like`
-
-```Go
-import . "github.com/go-xorm/builder"
-
-sql, args, _ := ToSQL(Like{"a", "c"})
-// a LIKE ? [%c%]
-```
-
-* `Expr` you can customerize your sql with `Expr`
-
-```Go
-import . "github.com/go-xorm/builder"
-
-sql, args, _ := ToSQL(Expr("a = ? ", 1))
-// a = ? [1]
-sql, args, _ := ToSQL(Eq{"a": Expr("select id from table where c = ?", 1)})
-// a=(select id from table where c = ?) [1]
-```
-
-* `In` and `NotIn`
-
-```Go
-import . "github.com/go-xorm/builder"
-
-sql, args, _ := ToSQL(In("a", 1, 2, 3))
-// a IN (?,?,?) [1,2,3]
-sql, args, _ := ToSQL(In("a", []int{1, 2, 3}))
-// a IN (?,?,?) [1,2,3]
-sql, args, _ := ToSQL(In("a", Expr("select id from b where c = ?", 1))))
-// a IN (select id from b where c = ?) [1]
-```
-
-* `IsNull` and `NotNull`
-
-```Go
-import . "github.com/go-xorm/builder"
-
-sql, args, _ := ToSQL(IsNull{"a"})
-// a IS NULL []
-sql, args, _ := ToSQL(NotNull{"b"})
- // b IS NOT NULL []
-```
-
-* `And(conds ...Cond)`, And can connect one or more condtions via And
-
-```Go
-import . "github.com/go-xorm/builder"
-
-sql, args, _ := ToSQL(And(Eq{"a":1}, Like{"b", "c"}, Neq{"d", 2}))
-// a=? AND b LIKE ? AND d<>? [1, %c%, 2]
-```
-
-* `Or(conds ...Cond)`, Or can connect one or more conditions via Or
-
-```Go
-import . "github.com/go-xorm/builder"
-
-sql, args, _ := ToSQL(Or(Eq{"a":1}, Like{"b", "c"}, Neq{"d", 2}))
-// a=? OR b LIKE ? OR d<>? [1, %c%, 2]
-sql, args, _ := ToSQL(Or(Eq{"a":1}, And(Like{"b", "c"}, Neq{"d", 2})))
-// a=? OR (b LIKE ? AND d<>?) [1, %c%, 2]
-```
-
-* `Between`
-
-```Go
-import . "github.com/go-xorm/builder"
-
-sql, args, _ := ToSQL(Between{"a", 1, 2})
-// a BETWEEN 1 AND 2
-```
-
-* Define yourself conditions
-
-Since `Cond` is an interface.
-
-```Go
-type Cond interface {
- WriteTo(Writer) error
- And(...Cond) Cond
- Or(...Cond) Cond
- IsValid() bool
-}
-```
-
-You can define yourself conditions and compose with other `Cond`. \ No newline at end of file
diff --git a/vendor/github.com/go-xorm/builder/builder.go b/vendor/github.com/go-xorm/builder/builder.go
deleted file mode 100644
index ffe86d4dcb..0000000000
--- a/vendor/github.com/go-xorm/builder/builder.go
+++ /dev/null
@@ -1,394 +0,0 @@
-// Copyright 2016 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 (
- sql2 "database/sql"
- "fmt"
- "sort"
-)
-
-type optype byte
-
-const (
- condType optype = iota // only conditions
- selectType // select
- insertType // insert
- updateType // update
- deleteType // delete
- unionType // union
-)
-
-const (
- POSTGRES = "postgres"
- SQLITE = "sqlite3"
- MYSQL = "mysql"
- MSSQL = "mssql"
- ORACLE = "oracle"
-)
-
-type join struct {
- joinType string
- joinTable string
- joinCond Cond
-}
-
-type union struct {
- unionType string
- builder *Builder
-}
-
-type limit struct {
- limitN int
- offset int
-}
-
-// Builder describes a SQL statement
-type Builder struct {
- optype
- dialect string
- isNested bool
- into string
- from string
- subQuery *Builder
- cond Cond
- selects []string
- joins []join
- unions []union
- limitation *limit
- insertCols []string
- insertVals []interface{}
- updates []Eq
- orderBy string
- groupBy string
- having string
-}
-
-// Dialect sets the db dialect of Builder.
-func Dialect(dialect string) *Builder {
- builder := &Builder{cond: NewCond(), dialect: dialect}
- return builder
-}
-
-// MySQL is shortcut of Dialect(MySQL)
-func MySQL() *Builder {
- return Dialect(MYSQL)
-}
-
-// MsSQL is shortcut of Dialect(MsSQL)
-func MsSQL() *Builder {
- return Dialect(MSSQL)
-}
-
-// Oracle is shortcut of Dialect(Oracle)
-func Oracle() *Builder {
- return Dialect(ORACLE)
-}
-
-// Postgres is shortcut of Dialect(Postgres)
-func Postgres() *Builder {
- return Dialect(POSTGRES)
-}
-
-// SQLite is shortcut of Dialect(SQLITE)
-func SQLite() *Builder {
- return Dialect(SQLITE)
-}
-
-// Where sets where SQL
-func (b *Builder) Where(cond Cond) *Builder {
- if b.cond.IsValid() {
- b.cond = b.cond.And(cond)
- } else {
- b.cond = cond
- }
- return b
-}
-
-// From sets from subject(can be a table name in string or a builder pointer) and its alias
-func (b *Builder) From(subject interface{}, alias ...string) *Builder {
- switch subject.(type) {
- case *Builder:
- b.subQuery = subject.(*Builder)
-
- if len(alias) > 0 {
- b.from = alias[0]
- } else {
- b.isNested = true
- }
- case string:
- b.from = subject.(string)
-
- if len(alias) > 0 {
- b.from = b.from + " " + alias[0]
- }
- }
-
- return b
-}
-
-// TableName returns the table name
-func (b *Builder) TableName() string {
- if b.optype == insertType {
- return b.into
- }
- return b.from
-}
-
-// Into sets insert table name
-func (b *Builder) Into(tableName string) *Builder {
- b.into = tableName
- return b
-}
-
-// Join sets join table and conditions
-func (b *Builder) Join(joinType, joinTable string, joinCond interface{}) *Builder {
- switch joinCond.(type) {
- case Cond:
- b.joins = append(b.joins, join{joinType, joinTable, joinCond.(Cond)})
- case string:
- b.joins = append(b.joins, join{joinType, joinTable, Expr(joinCond.(string))})
- }
-
- return b
-}
-
-// Union sets union conditions
-func (b *Builder) Union(unionTp string, unionCond *Builder) *Builder {
- var builder *Builder
- if b.optype != unionType {
- builder = &Builder{cond: NewCond()}
- builder.optype = unionType
- builder.dialect = b.dialect
- builder.selects = b.selects
-
- currentUnions := b.unions
- // erase sub unions (actually append to new Builder.unions)
- b.unions = nil
-
- for e := range currentUnions {
- currentUnions[e].builder.dialect = b.dialect
- }
-
- builder.unions = append(append(builder.unions, union{"", b}), currentUnions...)
- } else {
- builder = b
- }
-
- if unionCond != nil {
- if unionCond.dialect == "" && builder.dialect != "" {
- unionCond.dialect = builder.dialect
- }
-
- builder.unions = append(builder.unions, union{unionTp, unionCond})
- }
-
- return builder
-}
-
-// Limit sets limitN condition
-func (b *Builder) Limit(limitN int, offset ...int) *Builder {
- b.limitation = &limit{limitN: limitN}
-
- if len(offset) > 0 {
- b.limitation.offset = offset[0]
- }
-
- return b
-}
-
-// InnerJoin sets inner join
-func (b *Builder) InnerJoin(joinTable string, joinCond interface{}) *Builder {
- return b.Join("INNER", joinTable, joinCond)
-}
-
-// LeftJoin sets left join SQL
-func (b *Builder) LeftJoin(joinTable string, joinCond interface{}) *Builder {
- return b.Join("LEFT", joinTable, joinCond)
-}
-
-// RightJoin sets right join SQL
-func (b *Builder) RightJoin(joinTable string, joinCond interface{}) *Builder {
- return b.Join("RIGHT", joinTable, joinCond)
-}
-
-// CrossJoin sets cross join SQL
-func (b *Builder) CrossJoin(joinTable string, joinCond interface{}) *Builder {
- return b.Join("CROSS", joinTable, joinCond)
-}
-
-// FullJoin sets full join SQL
-func (b *Builder) FullJoin(joinTable string, joinCond interface{}) *Builder {
- return b.Join("FULL", joinTable, joinCond)
-}
-
-// Select sets select SQL
-func (b *Builder) Select(cols ...string) *Builder {
- b.selects = cols
- if b.optype == condType {
- b.optype = selectType
- }
- return b
-}
-
-// And sets AND condition
-func (b *Builder) And(cond Cond) *Builder {
- b.cond = And(b.cond, cond)
- return b
-}
-
-// Or sets OR condition
-func (b *Builder) Or(cond Cond) *Builder {
- b.cond = Or(b.cond, cond)
- return b
-}
-
-type insertColsSorter struct {
- cols []string
- vals []interface{}
-}
-
-func (s insertColsSorter) Len() int {
- return len(s.cols)
-}
-func (s insertColsSorter) Swap(i, j int) {
- s.cols[i], s.cols[j] = s.cols[j], s.cols[i]
- s.vals[i], s.vals[j] = s.vals[j], s.vals[i]
-}
-
-func (s insertColsSorter) Less(i, j int) bool {
- return s.cols[i] < s.cols[j]
-}
-
-// Insert sets insert SQL
-func (b *Builder) Insert(eq ...interface{}) *Builder {
- if len(eq) > 0 {
- var paramType = -1
- for _, e := range eq {
- switch t := e.(type) {
- case Eq:
- if paramType == -1 {
- paramType = 0
- }
- if paramType != 0 {
- break
- }
- for k, v := range t {
- b.insertCols = append(b.insertCols, k)
- b.insertVals = append(b.insertVals, v)
- }
- case string:
- if paramType == -1 {
- paramType = 1
- }
- if paramType != 1 {
- break
- }
- b.insertCols = append(b.insertCols, t)
- }
- }
- }
-
- if len(b.insertCols) == len(b.insertVals) {
- sort.Sort(insertColsSorter{
- cols: b.insertCols,
- vals: b.insertVals,
- })
- }
- b.optype = insertType
- return b
-}
-
-// Update sets update SQL
-func (b *Builder) Update(updates ...Eq) *Builder {
- b.updates = make([]Eq, 0, len(updates))
- for _, update := range updates {
- if update.IsValid() {
- b.updates = append(b.updates, update)
- }
- }
- b.optype = updateType
- return b
-}
-
-// Delete sets delete SQL
-func (b *Builder) Delete(conds ...Cond) *Builder {
- b.cond = b.cond.And(conds...)
- b.optype = deleteType
- return b
-}
-
-// WriteTo implements Writer interface
-func (b *Builder) WriteTo(w Writer) error {
- switch b.optype {
- /*case condType:
- return b.cond.WriteTo(w)*/
- case selectType:
- return b.selectWriteTo(w)
- case insertType:
- return b.insertWriteTo(w)
- case updateType:
- return b.updateWriteTo(w)
- case deleteType:
- return b.deleteWriteTo(w)
- case unionType:
- return b.unionWriteTo(w)
- }
-
- return ErrNotSupportType
-}
-
-// ToSQL convert a builder to SQL and args
-func (b *Builder) ToSQL() (string, []interface{}, error) {
- w := NewWriter()
- if err := b.WriteTo(w); err != nil {
- return "", nil, err
- }
-
- // in case of sql.NamedArg in args
- for e := range w.args {
- if namedArg, ok := w.args[e].(sql2.NamedArg); ok {
- w.args[e] = namedArg.Value
- }
- }
-
- var sql = w.writer.String()
- var err error
-
- switch b.dialect {
- case ORACLE, MSSQL:
- // This is for compatibility with different sql drivers
- for e := range w.args {
- w.args[e] = sql2.Named(fmt.Sprintf("p%d", e+1), w.args[e])
- }
-
- var prefix string
- if b.dialect == ORACLE {
- prefix = ":p"
- } else {
- prefix = "@p"
- }
-
- if sql, err = ConvertPlaceholder(sql, prefix); err != nil {
- return "", nil, err
- }
- case POSTGRES:
- if sql, err = ConvertPlaceholder(sql, "$"); err != nil {
- return "", nil, err
- }
- }
-
- return sql, w.args, nil
-}
-
-// ToBoundSQL
-func (b *Builder) ToBoundSQL() (string, error) {
- w := NewWriter()
- if err := b.WriteTo(w); err != nil {
- return "", err
- }
-
- return ConvertToBoundSQL(w.writer.String(), w.args)
-}
diff --git a/vendor/github.com/go-xorm/builder/builder_delete.go b/vendor/github.com/go-xorm/builder/builder_delete.go
deleted file mode 100644
index 317cc3ff9e..0000000000
--- a/vendor/github.com/go-xorm/builder/builder_delete.go
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2016 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"
-)
-
-// Delete creates a delete Builder
-func Delete(conds ...Cond) *Builder {
- builder := &Builder{cond: NewCond()}
- return builder.Delete(conds...)
-}
-
-func (b *Builder) deleteWriteTo(w Writer) error {
- if len(b.from) <= 0 {
- return ErrNoTableName
- }
-
- if _, err := fmt.Fprintf(w, "DELETE FROM %s WHERE ", b.from); err != nil {
- return err
- }
-
- return b.cond.WriteTo(w)
-}
diff --git a/vendor/github.com/go-xorm/builder/builder_insert.go b/vendor/github.com/go-xorm/builder/builder_insert.go
deleted file mode 100644
index 202cad51d8..0000000000
--- a/vendor/github.com/go-xorm/builder/builder_insert.go
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright 2016 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 (
- "bytes"
- "fmt"
-)
-
-// Insert creates an insert Builder
-func Insert(eq ...interface{}) *Builder {
- builder := &Builder{cond: NewCond()}
- return builder.Insert(eq...)
-}
-
-func (b *Builder) insertSelectWriteTo(w Writer) error {
- if _, err := fmt.Fprintf(w, "INSERT INTO %s ", b.into); err != nil {
- return err
- }
-
- if len(b.insertCols) > 0 {
- fmt.Fprintf(w, "(")
- for _, col := range b.insertCols {
- fmt.Fprintf(w, col)
- }
- fmt.Fprintf(w, ") ")
- }
-
- return b.selectWriteTo(w)
-}
-
-func (b *Builder) insertWriteTo(w Writer) error {
- if len(b.into) <= 0 {
- return ErrNoTableName
- }
- if len(b.insertCols) <= 0 && b.from == "" {
- return ErrNoColumnToInsert
- }
-
- if b.into != "" && b.from != "" {
- return b.insertSelectWriteTo(w)
- }
-
- if _, err := fmt.Fprintf(w, "INSERT INTO %s (", b.into); err != nil {
- return err
- }
-
- var args = make([]interface{}, 0)
- var bs []byte
- var valBuffer = bytes.NewBuffer(bs)
-
- for i, col := range b.insertCols {
- value := b.insertVals[i]
- fmt.Fprint(w, col)
- if e, ok := value.(expr); ok {
- fmt.Fprintf(valBuffer, "(%s)", e.sql)
- args = append(args, e.args...)
- } else {
- fmt.Fprint(valBuffer, "?")
- args = append(args, value)
- }
-
- if i != len(b.insertCols)-1 {
- if _, err := fmt.Fprint(w, ","); err != nil {
- return err
- }
- if _, err := fmt.Fprint(valBuffer, ","); err != nil {
- return err
- }
- }
- }
-
- if _, err := fmt.Fprint(w, ") Values ("); err != nil {
- return err
- }
-
- if _, err := w.Write(valBuffer.Bytes()); err != nil {
- return err
- }
- if _, err := fmt.Fprint(w, ")"); err != nil {
- return err
- }
-
- w.Append(args...)
-
- return nil
-}
diff --git a/vendor/github.com/go-xorm/builder/builder_limit.go b/vendor/github.com/go-xorm/builder/builder_limit.go
deleted file mode 100644
index 82435dacbd..0000000000
--- a/vendor/github.com/go-xorm/builder/builder_limit.go
+++ /dev/null
@@ -1,100 +0,0 @@
-// 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) limitWriteTo(w Writer) error {
- if strings.TrimSpace(b.dialect) == "" {
- return ErrDialectNotSetUp
- }
-
- if b.limitation != nil {
- limit := b.limitation
- if limit.offset < 0 || limit.limitN <= 0 {
- return ErrInvalidLimitation
- }
- // erase limit condition
- b.limitation = nil
- ow := w.(*BytesWriter)
-
- switch strings.ToLower(strings.TrimSpace(b.dialect)) {
- case ORACLE:
- if len(b.selects) == 0 {
- b.selects = append(b.selects, "*")
- }
-
- var final *Builder
- selects := b.selects
- b.selects = append(selects, "ROWNUM RN")
-
- var wb *Builder
- if b.optype == unionType {
- wb = Dialect(b.dialect).Select("at.*", "ROWNUM RN").
- From(b, "at")
- } else {
- wb = b
- }
-
- if limit.offset == 0 {
- final = Dialect(b.dialect).Select(selects...).From(wb, "at").
- Where(Lte{"at.RN": limit.limitN})
- } else {
- sub := Dialect(b.dialect).Select("*").
- From(b, "at").Where(Lte{"at.RN": limit.offset + limit.limitN})
-
- final = Dialect(b.dialect).Select(selects...).From(sub, "att").
- Where(Gt{"att.RN": limit.offset})
- }
-
- return final.WriteTo(ow)
- case SQLITE, MYSQL, POSTGRES:
- // if type UNION, we need to write previous content back to current writer
- if b.optype == unionType {
- if err := b.WriteTo(ow); err != nil {
- return err
- }
- }
-
- if limit.offset == 0 {
- fmt.Fprint(ow, " LIMIT ", limit.limitN)
- } else {
- fmt.Fprintf(ow, " LIMIT %v OFFSET %v", limit.limitN, limit.offset)
- }
- case MSSQL:
- if len(b.selects) == 0 {
- b.selects = append(b.selects, "*")
- }
-
- var final *Builder
- selects := b.selects
- b.selects = append(append([]string{fmt.Sprintf("TOP %d %v", limit.limitN+limit.offset, b.selects[0])},
- b.selects[1:]...), "ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS RN")
-
- var wb *Builder
- if b.optype == unionType {
- wb = Dialect(b.dialect).Select("*", "ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS RN").
- From(b, "at")
- } else {
- wb = b
- }
-
- if limit.offset == 0 {
- final = Dialect(b.dialect).Select(selects...).From(wb, "at")
- } else {
- final = Dialect(b.dialect).Select(selects...).From(wb, "at").Where(Gt{"at.RN": limit.offset})
- }
-
- return final.WriteTo(ow)
- default:
- return ErrNotSupportType
- }
- }
-
- return nil
-}
diff --git a/vendor/github.com/go-xorm/builder/builder_select.go b/vendor/github.com/go-xorm/builder/builder_select.go
deleted file mode 100644
index c33b38698b..0000000000
--- a/vendor/github.com/go-xorm/builder/builder_select.go
+++ /dev/null
@@ -1,145 +0,0 @@
-// Copyright 2016 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"
-)
-
-// Select creates a select Builder
-func Select(cols ...string) *Builder {
- builder := &Builder{cond: NewCond()}
- return builder.Select(cols...)
-}
-
-func (b *Builder) selectWriteTo(w Writer) error {
- if len(b.from) <= 0 && !b.isNested {
- return ErrNoTableName
- }
-
- // perform limit before writing to writer when b.dialect between ORACLE and MSSQL
- // this avoid a duplicate writing problem in simple limit query
- if b.limitation != nil && (b.dialect == ORACLE || b.dialect == MSSQL) {
- return b.limitWriteTo(w)
- }
-
- if _, err := fmt.Fprint(w, "SELECT "); err != nil {
- return err
- }
- if len(b.selects) > 0 {
- for i, s := range b.selects {
- if _, err := fmt.Fprint(w, s); err != nil {
- return err
- }
- if i != len(b.selects)-1 {
- if _, err := fmt.Fprint(w, ","); err != nil {
- return err
- }
- }
- }
- } else {
- if _, err := fmt.Fprint(w, "*"); err != nil {
- return err
- }
- }
-
- if b.subQuery == nil {
- if _, err := fmt.Fprint(w, " FROM ", b.from); err != nil {
- return err
- }
- } else {
- if b.cond.IsValid() && len(b.from) <= 0 {
- return ErrUnnamedDerivedTable
- }
- if b.subQuery.dialect != "" && b.dialect != b.subQuery.dialect {
- return ErrInconsistentDialect
- }
-
- // dialect of sub-query will inherit from the main one (if not set up)
- if b.dialect != "" && b.subQuery.dialect == "" {
- b.subQuery.dialect = b.dialect
- }
-
- switch b.subQuery.optype {
- case selectType, unionType:
- fmt.Fprint(w, " FROM (")
- if err := b.subQuery.WriteTo(w); err != nil {
- return err
- }
-
- if len(b.from) == 0 {
- fmt.Fprintf(w, ")")
- } else {
- fmt.Fprintf(w, ") %v", b.from)
- }
- default:
- return ErrUnexpectedSubQuery
- }
- }
-
- for _, v := range b.joins {
- if _, err := fmt.Fprintf(w, " %s JOIN %s ON ", v.joinType, v.joinTable); err != nil {
- return err
- }
-
- if err := v.joinCond.WriteTo(w); err != nil {
- return err
- }
- }
-
- if b.cond.IsValid() {
- if _, err := fmt.Fprint(w, " WHERE "); err != nil {
- return err
- }
-
- if err := b.cond.WriteTo(w); err != nil {
- return err
- }
- }
-
- if len(b.groupBy) > 0 {
- if _, err := fmt.Fprint(w, " GROUP BY ", b.groupBy); err != nil {
- return err
- }
- }
-
- if len(b.having) > 0 {
- if _, err := fmt.Fprint(w, " HAVING ", b.having); err != nil {
- return err
- }
- }
-
- if len(b.orderBy) > 0 {
- if _, err := fmt.Fprint(w, " ORDER BY ", b.orderBy); err != nil {
- return err
- }
- }
-
- if b.limitation != nil {
- if err := b.limitWriteTo(w); err != nil {
- return err
- }
- }
-
- return nil
-}
-
-// OrderBy orderBy SQL
-func (b *Builder) OrderBy(orderBy string) *Builder {
- b.orderBy = orderBy
- return b
-}
-
-// GroupBy groupby SQL
-func (b *Builder) GroupBy(groupby string) *Builder {
- b.groupBy = groupby
- return b
-}
-
-// Having having SQL
-func (b *Builder) Having(having string) *Builder {
- b.having = having
- return b
-}
diff --git a/vendor/github.com/go-xorm/builder/builder_union.go b/vendor/github.com/go-xorm/builder/builder_union.go
deleted file mode 100644
index 4ba9216178..0000000000
--- a/vendor/github.com/go-xorm/builder/builder_union.go
+++ /dev/null
@@ -1,47 +0,0 @@
-// 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) unionWriteTo(w Writer) error {
- if b.limitation != nil || b.cond.IsValid() ||
- b.orderBy != "" || b.having != "" || b.groupBy != "" {
- return ErrNotUnexpectedUnionConditions
- }
-
- for idx, u := range b.unions {
- current := u.builder
- if current.optype != selectType {
- return ErrUnsupportedUnionMembers
- }
-
- if len(b.unions) == 1 {
- if err := current.selectWriteTo(w); err != nil {
- return err
- }
- } else {
- if b.dialect != "" && b.dialect != current.dialect {
- return ErrInconsistentDialect
- }
-
- if idx != 0 {
- fmt.Fprint(w, fmt.Sprintf(" UNION %v ", strings.ToUpper(u.unionType)))
- }
- fmt.Fprint(w, "(")
-
- if err := current.selectWriteTo(w); err != nil {
- return err
- }
-
- fmt.Fprint(w, ")")
- }
- }
-
- return nil
-}
diff --git a/vendor/github.com/go-xorm/builder/builder_update.go b/vendor/github.com/go-xorm/builder/builder_update.go
deleted file mode 100644
index 37b4551526..0000000000
--- a/vendor/github.com/go-xorm/builder/builder_update.go
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2016 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"
-)
-
-// Update creates an update Builder
-func Update(updates ...Eq) *Builder {
- builder := &Builder{cond: NewCond()}
- return builder.Update(updates...)
-}
-
-func (b *Builder) updateWriteTo(w Writer) error {
- if len(b.from) <= 0 {
- return ErrNoTableName
- }
- if len(b.updates) <= 0 {
- return ErrNoColumnToUpdate
- }
-
- if _, err := fmt.Fprintf(w, "UPDATE %s SET ", b.from); err != nil {
- return err
- }
-
- for i, s := range b.updates {
- if err := s.opWriteTo(",", w); err != nil {
- return err
- }
-
- if i != len(b.updates)-1 {
- if _, err := fmt.Fprint(w, ","); err != nil {
- return err
- }
- }
- }
-
- if _, err := fmt.Fprint(w, " WHERE "); err != nil {
- return err
- }
-
- return b.cond.WriteTo(w)
-}
diff --git a/vendor/github.com/go-xorm/builder/cond.go b/vendor/github.com/go-xorm/builder/cond.go
deleted file mode 100644
index e44173bbd5..0000000000
--- a/vendor/github.com/go-xorm/builder/cond.go
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright 2016 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 (
- "io"
-)
-
-// Writer defines the interface
-type Writer interface {
- io.Writer
- Append(...interface{})
-}
-
-var _ Writer = NewWriter()
-
-// BytesWriter implments Writer and save SQL in bytes.Buffer
-type BytesWriter struct {
- writer *StringBuilder
- args []interface{}
-}
-
-// NewWriter creates a new string writer
-func NewWriter() *BytesWriter {
- w := &BytesWriter{
- writer: &StringBuilder{},
- }
- return w
-}
-
-// Write writes data to Writer
-func (s *BytesWriter) Write(buf []byte) (int, error) {
- return s.writer.Write(buf)
-}
-
-// Append appends args to Writer
-func (s *BytesWriter) Append(args ...interface{}) {
- s.args = append(s.args, args...)
-}
-
-// Cond defines an interface
-type Cond interface {
- WriteTo(Writer) error
- And(...Cond) Cond
- Or(...Cond) Cond
- IsValid() bool
-}
-
-type condEmpty struct{}
-
-var _ Cond = condEmpty{}
-
-// NewCond creates an empty condition
-func NewCond() Cond {
- return condEmpty{}
-}
-
-func (condEmpty) WriteTo(w Writer) error {
- return nil
-}
-
-func (condEmpty) And(conds ...Cond) Cond {
- return And(conds...)
-}
-
-func (condEmpty) Or(conds ...Cond) Cond {
- return Or(conds...)
-}
-
-func (condEmpty) IsValid() bool {
- return false
-}
diff --git a/vendor/github.com/go-xorm/builder/cond_and.go b/vendor/github.com/go-xorm/builder/cond_and.go
deleted file mode 100644
index e30bd186cd..0000000000
--- a/vendor/github.com/go-xorm/builder/cond_and.go
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2016 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"
-
-type condAnd []Cond
-
-var _ Cond = condAnd{}
-
-// And generates AND conditions
-func And(conds ...Cond) Cond {
- var result = make(condAnd, 0, len(conds))
- for _, cond := range conds {
- if cond == nil || !cond.IsValid() {
- continue
- }
- result = append(result, cond)
- }
- return result
-}
-
-func (and condAnd) WriteTo(w Writer) error {
- for i, cond := range and {
- _, isOr := cond.(condOr)
- _, isExpr := cond.(expr)
- wrap := isOr || isExpr
- if wrap {
- fmt.Fprint(w, "(")
- }
-
- err := cond.WriteTo(w)
- if err != nil {
- return err
- }
-
- if wrap {
- fmt.Fprint(w, ")")
- }
-
- if i != len(and)-1 {
- fmt.Fprint(w, " AND ")
- }
- }
-
- return nil
-}
-
-func (and condAnd) And(conds ...Cond) Cond {
- return And(and, And(conds...))
-}
-
-func (and condAnd) Or(conds ...Cond) Cond {
- return Or(and, Or(conds...))
-}
-
-func (and condAnd) IsValid() bool {
- return len(and) > 0
-}
diff --git a/vendor/github.com/go-xorm/builder/cond_between.go b/vendor/github.com/go-xorm/builder/cond_between.go
deleted file mode 100644
index 10e0b83152..0000000000
--- a/vendor/github.com/go-xorm/builder/cond_between.go
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright 2016 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"
-
-// Between implmentes between condition
-type Between struct {
- Col string
- LessVal interface{}
- MoreVal interface{}
-}
-
-var _ Cond = Between{}
-
-// WriteTo write data to Writer
-func (between Between) WriteTo(w Writer) error {
- if _, err := fmt.Fprintf(w, "%s BETWEEN ", between.Col); err != nil {
- return err
- }
- if lv, ok := between.LessVal.(expr); ok {
- if err := lv.WriteTo(w); err != nil {
- return err
- }
- } else {
- if _, err := fmt.Fprint(w, "?"); err != nil {
- return err
- }
- w.Append(between.LessVal)
- }
-
- if _, err := fmt.Fprint(w, " AND "); err != nil {
- return err
- }
-
- if mv, ok := between.MoreVal.(expr); ok {
- if err := mv.WriteTo(w); err != nil {
- return err
- }
- } else {
- if _, err := fmt.Fprint(w, "?"); err != nil {
- return err
- }
- w.Append(between.MoreVal)
- }
-
- return nil
-}
-
-// And implments And with other conditions
-func (between Between) And(conds ...Cond) Cond {
- return And(between, And(conds...))
-}
-
-// Or implments Or with other conditions
-func (between Between) Or(conds ...Cond) Cond {
- return Or(between, Or(conds...))
-}
-
-// IsValid tests if the condition is valid
-func (between Between) IsValid() bool {
- return len(between.Col) > 0
-}
diff --git a/vendor/github.com/go-xorm/builder/cond_compare.go b/vendor/github.com/go-xorm/builder/cond_compare.go
deleted file mode 100644
index 1c293719c0..0000000000
--- a/vendor/github.com/go-xorm/builder/cond_compare.go
+++ /dev/null
@@ -1,160 +0,0 @@
-// Copyright 2016 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"
-
-// WriteMap writes conditions' SQL to Writer, op could be =, <>, >, <, <=, >= and etc.
-func WriteMap(w Writer, data map[string]interface{}, op string) error {
- var args = make([]interface{}, 0, len(data))
- var i = 0
- 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 {
- return err
- }
-
- if err := v.(expr).WriteTo(w); err != nil {
- return err
- }
-
- if _, err := fmt.Fprintf(w, ")"); err != nil {
- return err
- }
- case *Builder:
- if _, err := fmt.Fprintf(w, "%s%s(", k, op); err != nil {
- return err
- }
-
- if err := v.(*Builder).WriteTo(w); err != nil {
- return err
- }
-
- if _, err := fmt.Fprintf(w, ")"); err != nil {
- return err
- }
- default:
- if _, err := fmt.Fprintf(w, "%s%s?", k, op); err != nil {
- return err
- }
- args = append(args, v)
- }
- if i != len(data)-1 {
- if _, err := fmt.Fprint(w, " AND "); err != nil {
- return err
- }
- }
- i = i + 1
- }
- w.Append(args...)
- return nil
-}
-
-// Lt defines < condition
-type Lt map[string]interface{}
-
-var _ Cond = Lt{}
-
-// WriteTo write SQL to Writer
-func (lt Lt) WriteTo(w Writer) error {
- return WriteMap(w, lt, "<")
-}
-
-// And implements And with other conditions
-func (lt Lt) And(conds ...Cond) Cond {
- return condAnd{lt, And(conds...)}
-}
-
-// Or implements Or with other conditions
-func (lt Lt) Or(conds ...Cond) Cond {
- return condOr{lt, Or(conds...)}
-}
-
-// IsValid tests if this Eq is valid
-func (lt Lt) IsValid() bool {
- return len(lt) > 0
-}
-
-// Lte defines <= condition
-type Lte map[string]interface{}
-
-var _ Cond = Lte{}
-
-// WriteTo write SQL to Writer
-func (lte Lte) WriteTo(w Writer) error {
- return WriteMap(w, lte, "<=")
-}
-
-// And implements And with other conditions
-func (lte Lte) And(conds ...Cond) Cond {
- return And(lte, And(conds...))
-}
-
-// Or implements Or with other conditions
-func (lte Lte) Or(conds ...Cond) Cond {
- return Or(lte, Or(conds...))
-}
-
-// IsValid tests if this Eq is valid
-func (lte Lte) IsValid() bool {
- return len(lte) > 0
-}
-
-// Gt defines > condition
-type Gt map[string]interface{}
-
-var _ Cond = Gt{}
-
-// WriteTo write SQL to Writer
-func (gt Gt) WriteTo(w Writer) error {
- return WriteMap(w, gt, ">")
-}
-
-// And implements And with other conditions
-func (gt Gt) And(conds ...Cond) Cond {
- return And(gt, And(conds...))
-}
-
-// Or implements Or with other conditions
-func (gt Gt) Or(conds ...Cond) Cond {
- return Or(gt, Or(conds...))
-}
-
-// IsValid tests if this Eq is valid
-func (gt Gt) IsValid() bool {
- return len(gt) > 0
-}
-
-// Gte defines >= condition
-type Gte map[string]interface{}
-
-var _ Cond = Gte{}
-
-// WriteTo write SQL to Writer
-func (gte Gte) WriteTo(w Writer) error {
- return WriteMap(w, gte, ">=")
-}
-
-// And implements And with other conditions
-func (gte Gte) And(conds ...Cond) Cond {
- return And(gte, And(conds...))
-}
-
-// Or implements Or with other conditions
-func (gte Gte) Or(conds ...Cond) Cond {
- return Or(gte, Or(conds...))
-}
-
-// IsValid tests if this Eq is valid
-func (gte Gte) IsValid() bool {
- return len(gte) > 0
-}
diff --git a/vendor/github.com/go-xorm/builder/cond_eq.go b/vendor/github.com/go-xorm/builder/cond_eq.go
deleted file mode 100644
index 79d795e6dd..0000000000
--- a/vendor/github.com/go-xorm/builder/cond_eq.go
+++ /dev/null
@@ -1,112 +0,0 @@
-// Copyright 2016 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"
- "sort"
-)
-
-// Incr implements a type used by Eq
-type Incr int
-
-// Decr implements a type used by Eq
-type Decr int
-
-// Eq defines equals conditions
-type Eq map[string]interface{}
-
-var _ Cond = Eq{}
-
-func (eq Eq) opWriteTo(op string, w Writer) error {
- var i = 0
- 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 {
- return err
- }
- case expr:
- if _, err := fmt.Fprintf(w, "%s=(", k); err != nil {
- return err
- }
-
- if err := v.(expr).WriteTo(w); err != nil {
- return err
- }
-
- if _, err := fmt.Fprintf(w, ")"); err != nil {
- return err
- }
- case *Builder:
- if _, err := fmt.Fprintf(w, "%s=(", k); err != nil {
- return err
- }
-
- if err := v.(*Builder).WriteTo(w); err != nil {
- return err
- }
-
- if _, err := fmt.Fprintf(w, ")"); err != nil {
- return err
- }
- case Incr:
- if _, err := fmt.Fprintf(w, "%s=%s+?", k, k); err != nil {
- return err
- }
- w.Append(int(v.(Incr)))
- case Decr:
- if _, err := fmt.Fprintf(w, "%s=%s-?", k, k); err != nil {
- return err
- }
- w.Append(int(v.(Decr)))
- default:
- if _, err := fmt.Fprintf(w, "%s=?", k); err != nil {
- return err
- }
- w.Append(v)
- }
- if i != len(eq)-1 {
- if _, err := fmt.Fprint(w, op); err != nil {
- return err
- }
- }
- i = i + 1
- }
- return nil
-}
-
-// WriteTo writes SQL to Writer
-func (eq Eq) WriteTo(w Writer) error {
- return eq.opWriteTo(" AND ", w)
-}
-
-// And implements And with other conditions
-func (eq Eq) And(conds ...Cond) Cond {
- return And(eq, And(conds...))
-}
-
-// Or implements Or with other conditions
-func (eq Eq) Or(conds ...Cond) Cond {
- return Or(eq, Or(conds...))
-}
-
-// IsValid tests if this Eq is valid
-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_expr.go b/vendor/github.com/go-xorm/builder/cond_expr.go
deleted file mode 100644
index e5ed572b15..0000000000
--- a/vendor/github.com/go-xorm/builder/cond_expr.go
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2016 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"
-
-type expr struct {
- sql string
- args []interface{}
-}
-
-var _ Cond = expr{}
-
-// Expr generate customerize SQL
-func Expr(sql string, args ...interface{}) Cond {
- return expr{sql, args}
-}
-
-func (expr expr) WriteTo(w Writer) error {
- if _, err := fmt.Fprint(w, expr.sql); err != nil {
- return err
- }
- w.Append(expr.args...)
- return nil
-}
-
-func (expr expr) And(conds ...Cond) Cond {
- return And(expr, And(conds...))
-}
-
-func (expr expr) Or(conds ...Cond) Cond {
- return Or(expr, Or(conds...))
-}
-
-func (expr expr) IsValid() bool {
- return len(expr.sql) > 0
-}
diff --git a/vendor/github.com/go-xorm/builder/cond_in.go b/vendor/github.com/go-xorm/builder/cond_in.go
deleted file mode 100644
index f6366d35c2..0000000000
--- a/vendor/github.com/go-xorm/builder/cond_in.go
+++ /dev/null
@@ -1,237 +0,0 @@
-// Copyright 2016 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"
- "reflect"
- "strings"
-)
-
-type condIn struct {
- col string
- vals []interface{}
-}
-
-var _ Cond = condIn{}
-
-// In generates IN condition
-func In(col string, values ...interface{}) Cond {
- return condIn{col, values}
-}
-
-func (condIn condIn) handleBlank(w Writer) error {
- _, err := fmt.Fprint(w, "0=1")
- return err
-}
-
-func (condIn condIn) WriteTo(w Writer) error {
- if len(condIn.vals) <= 0 {
- return condIn.handleBlank(w)
- }
-
- switch condIn.vals[0].(type) {
- case []int8:
- vals := condIn.vals[0].([]int8)
- if len(vals) <= 0 {
- return condIn.handleBlank(w)
- }
- questionMark := strings.Repeat("?,", len(vals))
- if _, err := fmt.Fprintf(w, "%s IN (%s)", condIn.col, questionMark[:len(questionMark)-1]); err != nil {
- return err
- }
- for _, val := range vals {
- w.Append(val)
- }
- case []int16:
- vals := condIn.vals[0].([]int16)
- if len(vals) <= 0 {
- return condIn.handleBlank(w)
- }
- questionMark := strings.Repeat("?,", len(vals))
- if _, err := fmt.Fprintf(w, "%s IN (%s)", condIn.col, questionMark[:len(questionMark)-1]); err != nil {
- return err
- }
- for _, val := range vals {
- w.Append(val)
- }
- case []int:
- vals := condIn.vals[0].([]int)
- if len(vals) <= 0 {
- return condIn.handleBlank(w)
- }
- questionMark := strings.Repeat("?,", len(vals))
- if _, err := fmt.Fprintf(w, "%s IN (%s)", condIn.col, questionMark[:len(questionMark)-1]); err != nil {
- return err
- }
- for _, val := range vals {
- w.Append(val)
- }
- case []int32:
- vals := condIn.vals[0].([]int32)
- if len(vals) <= 0 {
- return condIn.handleBlank(w)
- }
- questionMark := strings.Repeat("?,", len(vals))
- if _, err := fmt.Fprintf(w, "%s IN (%s)", condIn.col, questionMark[:len(questionMark)-1]); err != nil {
- return err
- }
- for _, val := range vals {
- w.Append(val)
- }
- case []int64:
- vals := condIn.vals[0].([]int64)
- if len(vals) <= 0 {
- return condIn.handleBlank(w)
- }
- questionMark := strings.Repeat("?,", len(vals))
- if _, err := fmt.Fprintf(w, "%s IN (%s)", condIn.col, questionMark[:len(questionMark)-1]); err != nil {
- return err
- }
- for _, val := range vals {
- w.Append(val)
- }
- case []uint8:
- vals := condIn.vals[0].([]uint8)
- if len(vals) <= 0 {
- return condIn.handleBlank(w)
- }
- questionMark := strings.Repeat("?,", len(vals))
- if _, err := fmt.Fprintf(w, "%s IN (%s)", condIn.col, questionMark[:len(questionMark)-1]); err != nil {
- return err
- }
- for _, val := range vals {
- w.Append(val)
- }
- case []uint16:
- vals := condIn.vals[0].([]uint16)
- if len(vals) <= 0 {
- return condIn.handleBlank(w)
- }
- questionMark := strings.Repeat("?,", len(vals))
- if _, err := fmt.Fprintf(w, "%s IN (%s)", condIn.col, questionMark[:len(questionMark)-1]); err != nil {
- return err
- }
- for _, val := range vals {
- w.Append(val)
- }
- case []uint:
- vals := condIn.vals[0].([]uint)
- if len(vals) <= 0 {
- return condIn.handleBlank(w)
- }
- questionMark := strings.Repeat("?,", len(vals))
- if _, err := fmt.Fprintf(w, "%s IN (%s)", condIn.col, questionMark[:len(questionMark)-1]); err != nil {
- return err
- }
- for _, val := range vals {
- w.Append(val)
- }
- case []uint32:
- vals := condIn.vals[0].([]uint32)
- if len(vals) <= 0 {
- return condIn.handleBlank(w)
- }
- questionMark := strings.Repeat("?,", len(vals))
- if _, err := fmt.Fprintf(w, "%s IN (%s)", condIn.col, questionMark[:len(questionMark)-1]); err != nil {
- return err
- }
- for _, val := range vals {
- w.Append(val)
- }
- case []uint64:
- vals := condIn.vals[0].([]uint64)
- if len(vals) <= 0 {
- return condIn.handleBlank(w)
- }
- questionMark := strings.Repeat("?,", len(vals))
- if _, err := fmt.Fprintf(w, "%s IN (%s)", condIn.col, questionMark[:len(questionMark)-1]); err != nil {
- return err
- }
- for _, val := range vals {
- w.Append(val)
- }
- case []string:
- vals := condIn.vals[0].([]string)
- if len(vals) <= 0 {
- return condIn.handleBlank(w)
- }
- questionMark := strings.Repeat("?,", len(vals))
- if _, err := fmt.Fprintf(w, "%s IN (%s)", condIn.col, questionMark[:len(questionMark)-1]); err != nil {
- return err
- }
- for _, val := range vals {
- w.Append(val)
- }
- case []interface{}:
- vals := condIn.vals[0].([]interface{})
- if len(vals) <= 0 {
- return condIn.handleBlank(w)
- }
- questionMark := strings.Repeat("?,", len(vals))
- if _, err := fmt.Fprintf(w, "%s IN (%s)", condIn.col, questionMark[:len(questionMark)-1]); err != nil {
- return err
- }
- w.Append(vals...)
- case expr:
- val := condIn.vals[0].(expr)
- if _, err := fmt.Fprintf(w, "%s IN (", condIn.col); err != nil {
- return err
- }
- if err := val.WriteTo(w); err != nil {
- return err
- }
- if _, err := fmt.Fprintf(w, ")"); err != nil {
- return err
- }
- case *Builder:
- bd := condIn.vals[0].(*Builder)
- if _, err := fmt.Fprintf(w, "%s IN (", condIn.col); err != nil {
- return err
- }
- if err := bd.WriteTo(w); err != nil {
- return err
- }
- if _, err := fmt.Fprintf(w, ")"); err != nil {
- return err
- }
- default:
- v := reflect.ValueOf(condIn.vals[0])
- if v.Kind() == reflect.Slice {
- l := v.Len()
- if l == 0 {
- return condIn.handleBlank(w)
- }
-
- questionMark := strings.Repeat("?,", l)
- if _, err := fmt.Fprintf(w, "%s IN (%s)", condIn.col, questionMark[:len(questionMark)-1]); err != nil {
- return err
- }
-
- for i := 0; i < l; i++ {
- w.Append(v.Index(i).Interface())
- }
- } else {
- questionMark := strings.Repeat("?,", len(condIn.vals))
- if _, err := fmt.Fprintf(w, "%s IN (%s)", condIn.col, questionMark[:len(questionMark)-1]); err != nil {
- return err
- }
- w.Append(condIn.vals...)
- }
- }
- return nil
-}
-
-func (condIn condIn) And(conds ...Cond) Cond {
- return And(condIn, And(conds...))
-}
-
-func (condIn condIn) Or(conds ...Cond) Cond {
- return Or(condIn, Or(conds...))
-}
-
-func (condIn condIn) IsValid() bool {
- return len(condIn.col) > 0 && len(condIn.vals) > 0
-}
diff --git a/vendor/github.com/go-xorm/builder/cond_like.go b/vendor/github.com/go-xorm/builder/cond_like.go
deleted file mode 100644
index e34202f8b0..0000000000
--- a/vendor/github.com/go-xorm/builder/cond_like.go
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2016 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"
-
-// Like defines like condition
-type Like [2]string
-
-var _ Cond = Like{"", ""}
-
-// WriteTo write SQL to Writer
-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 compatible, keep this
- if like[1][0] == '%' || like[1][len(like[1])-1] == '%' {
- w.Append(like[1])
- } else {
- w.Append("%" + like[1] + "%")
- }
- return nil
-}
-
-// And implements And with other conditions
-func (like Like) And(conds ...Cond) Cond {
- return And(like, And(conds...))
-}
-
-// Or implements Or with other conditions
-func (like Like) Or(conds ...Cond) Cond {
- return Or(like, Or(conds...))
-}
-
-// IsValid tests if this condition is valid
-func (like Like) IsValid() bool {
- return len(like[0]) > 0 && len(like[1]) > 0
-}
diff --git a/vendor/github.com/go-xorm/builder/cond_neq.go b/vendor/github.com/go-xorm/builder/cond_neq.go
deleted file mode 100644
index 3a8f3136d9..0000000000
--- a/vendor/github.com/go-xorm/builder/cond_neq.go
+++ /dev/null
@@ -1,94 +0,0 @@
-// Copyright 2016 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"
- "sort"
-)
-
-// Neq defines not equal conditions
-type Neq map[string]interface{}
-
-var _ Cond = Neq{}
-
-// WriteTo writes SQL to Writer
-func (neq Neq) WriteTo(w Writer) error {
- var args = make([]interface{}, 0, len(neq))
- var i = 0
- 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 {
- return err
- }
- case expr:
- if _, err := fmt.Fprintf(w, "%s<>(", k); err != nil {
- return err
- }
-
- if err := v.(expr).WriteTo(w); err != nil {
- return err
- }
-
- if _, err := fmt.Fprintf(w, ")"); err != nil {
- return err
- }
- case *Builder:
- if _, err := fmt.Fprintf(w, "%s<>(", k); err != nil {
- return err
- }
-
- if err := v.(*Builder).WriteTo(w); err != nil {
- return err
- }
-
- if _, err := fmt.Fprintf(w, ")"); err != nil {
- return err
- }
- default:
- if _, err := fmt.Fprintf(w, "%s<>?", k); err != nil {
- return err
- }
- args = append(args, v)
- }
- if i != len(neq)-1 {
- if _, err := fmt.Fprint(w, " AND "); err != nil {
- return err
- }
- }
- i = i + 1
- }
- w.Append(args...)
- return nil
-}
-
-// And implements And with other conditions
-func (neq Neq) And(conds ...Cond) Cond {
- return And(neq, And(conds...))
-}
-
-// Or implements Or with other conditions
-func (neq Neq) Or(conds ...Cond) Cond {
- return Or(neq, Or(conds...))
-}
-
-// IsValid tests if this condition is valid
-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
deleted file mode 100644
index 667dfe7293..0000000000
--- a/vendor/github.com/go-xorm/builder/cond_not.go
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright 2016 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"
-
-// Not defines NOT condition
-type Not [1]Cond
-
-var _ Cond = Not{}
-
-// WriteTo writes SQL to Writer
-func (not Not) WriteTo(w Writer) error {
- if _, err := fmt.Fprint(w, "NOT "); err != nil {
- return err
- }
- switch not[0].(type) {
- case condAnd, condOr:
- 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 {
- return err
- }
-
- switch not[0].(type) {
- case condAnd, condOr:
- 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
-}
-
-// And implements And with other conditions
-func (not Not) And(conds ...Cond) Cond {
- return And(not, And(conds...))
-}
-
-// Or implements Or with other conditions
-func (not Not) Or(conds ...Cond) Cond {
- return Or(not, Or(conds...))
-}
-
-// IsValid tests if this condition is valid
-func (not Not) IsValid() bool {
- return not[0] != nil && not[0].IsValid()
-}
diff --git a/vendor/github.com/go-xorm/builder/cond_notin.go b/vendor/github.com/go-xorm/builder/cond_notin.go
deleted file mode 100644
index dc3ac49a35..0000000000
--- a/vendor/github.com/go-xorm/builder/cond_notin.go
+++ /dev/null
@@ -1,234 +0,0 @@
-// Copyright 2016 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"
- "reflect"
- "strings"
-)
-
-type condNotIn condIn
-
-var _ Cond = condNotIn{}
-
-// NotIn generate NOT IN condition
-func NotIn(col string, values ...interface{}) Cond {
- return condNotIn{col, values}
-}
-
-func (condNotIn condNotIn) handleBlank(w Writer) error {
- _, err := fmt.Fprint(w, "0=0")
- return err
-}
-
-func (condNotIn condNotIn) WriteTo(w Writer) error {
- if len(condNotIn.vals) <= 0 {
- return condNotIn.handleBlank(w)
- }
-
- switch condNotIn.vals[0].(type) {
- case []int8:
- vals := condNotIn.vals[0].([]int8)
- if len(vals) <= 0 {
- return condNotIn.handleBlank(w)
- }
- questionMark := strings.Repeat("?,", len(vals))
- if _, err := fmt.Fprintf(w, "%s NOT IN (%s)", condNotIn.col, questionMark[:len(questionMark)-1]); err != nil {
- return err
- }
- for _, val := range vals {
- w.Append(val)
- }
- case []int16:
- vals := condNotIn.vals[0].([]int16)
- if len(vals) <= 0 {
- return condNotIn.handleBlank(w)
- }
- questionMark := strings.Repeat("?,", len(vals))
- if _, err := fmt.Fprintf(w, "%s NOT IN (%s)", condNotIn.col, questionMark[:len(questionMark)-1]); err != nil {
- return err
- }
- for _, val := range vals {
- w.Append(val)
- }
- case []int:
- vals := condNotIn.vals[0].([]int)
- if len(vals) <= 0 {
- return condNotIn.handleBlank(w)
- }
- questionMark := strings.Repeat("?,", len(vals))
- if _, err := fmt.Fprintf(w, "%s NOT IN (%s)", condNotIn.col, questionMark[:len(questionMark)-1]); err != nil {
- return err
- }
- for _, val := range vals {
- w.Append(val)
- }
- case []int32:
- vals := condNotIn.vals[0].([]int32)
- if len(vals) <= 0 {
- return condNotIn.handleBlank(w)
- }
- questionMark := strings.Repeat("?,", len(vals))
- if _, err := fmt.Fprintf(w, "%s NOT IN (%s)", condNotIn.col, questionMark[:len(questionMark)-1]); err != nil {
- return err
- }
- for _, val := range vals {
- w.Append(val)
- }
- case []int64:
- vals := condNotIn.vals[0].([]int64)
- if len(vals) <= 0 {
- return condNotIn.handleBlank(w)
- }
- questionMark := strings.Repeat("?,", len(vals))
- if _, err := fmt.Fprintf(w, "%s NOT IN (%s)", condNotIn.col, questionMark[:len(questionMark)-1]); err != nil {
- return err
- }
- for _, val := range vals {
- w.Append(val)
- }
- case []uint8:
- vals := condNotIn.vals[0].([]uint8)
- if len(vals) <= 0 {
- return condNotIn.handleBlank(w)
- }
- questionMark := strings.Repeat("?,", len(vals))
- if _, err := fmt.Fprintf(w, "%s NOT IN (%s)", condNotIn.col, questionMark[:len(questionMark)-1]); err != nil {
- return err
- }
- for _, val := range vals {
- w.Append(val)
- }
- case []uint16:
- vals := condNotIn.vals[0].([]uint16)
- if len(vals) <= 0 {
- return condNotIn.handleBlank(w)
- }
- questionMark := strings.Repeat("?,", len(vals))
- if _, err := fmt.Fprintf(w, "%s NOT IN (%s)", condNotIn.col, questionMark[:len(questionMark)-1]); err != nil {
- return err
- }
- for _, val := range vals {
- w.Append(val)
- }
- case []uint:
- vals := condNotIn.vals[0].([]uint)
- if len(vals) <= 0 {
- return condNotIn.handleBlank(w)
- }
- questionMark := strings.Repeat("?,", len(vals))
- if _, err := fmt.Fprintf(w, "%s NOT IN (%s)", condNotIn.col, questionMark[:len(questionMark)-1]); err != nil {
- return err
- }
- for _, val := range vals {
- w.Append(val)
- }
- case []uint32:
- vals := condNotIn.vals[0].([]uint32)
- if len(vals) <= 0 {
- return condNotIn.handleBlank(w)
- }
- questionMark := strings.Repeat("?,", len(vals))
- if _, err := fmt.Fprintf(w, "%s NOT IN (%s)", condNotIn.col, questionMark[:len(questionMark)-1]); err != nil {
- return err
- }
- for _, val := range vals {
- w.Append(val)
- }
- case []uint64:
- vals := condNotIn.vals[0].([]uint64)
- if len(vals) <= 0 {
- return condNotIn.handleBlank(w)
- }
- questionMark := strings.Repeat("?,", len(vals))
- if _, err := fmt.Fprintf(w, "%s NOT IN (%s)", condNotIn.col, questionMark[:len(questionMark)-1]); err != nil {
- return err
- }
- for _, val := range vals {
- w.Append(val)
- }
- case []string:
- vals := condNotIn.vals[0].([]string)
- if len(vals) <= 0 {
- return condNotIn.handleBlank(w)
- }
- questionMark := strings.Repeat("?,", len(vals))
- if _, err := fmt.Fprintf(w, "%s NOT IN (%s)", condNotIn.col, questionMark[:len(questionMark)-1]); err != nil {
- return err
- }
- for _, val := range vals {
- w.Append(val)
- }
- case []interface{}:
- vals := condNotIn.vals[0].([]interface{})
- if len(vals) <= 0 {
- return condNotIn.handleBlank(w)
- }
- questionMark := strings.Repeat("?,", len(vals))
- if _, err := fmt.Fprintf(w, "%s NOT IN (%s)", condNotIn.col, questionMark[:len(questionMark)-1]); err != nil {
- return err
- }
- w.Append(vals...)
- case expr:
- val := condNotIn.vals[0].(expr)
- if _, err := fmt.Fprintf(w, "%s NOT IN (", condNotIn.col); err != nil {
- return err
- }
- if err := val.WriteTo(w); err != nil {
- return err
- }
- if _, err := fmt.Fprintf(w, ")"); err != nil {
- return err
- }
- case *Builder:
- val := condNotIn.vals[0].(*Builder)
- if _, err := fmt.Fprintf(w, "%s NOT IN (", condNotIn.col); err != nil {
- return err
- }
- if err := val.WriteTo(w); err != nil {
- return err
- }
- if _, err := fmt.Fprintf(w, ")"); err != nil {
- return err
- }
- default:
- v := reflect.ValueOf(condNotIn.vals[0])
- if v.Kind() == reflect.Slice {
- l := v.Len()
- if l == 0 {
- return condNotIn.handleBlank(w)
- }
-
- questionMark := strings.Repeat("?,", l)
- if _, err := fmt.Fprintf(w, "%s NOT IN (%s)", condNotIn.col, questionMark[:len(questionMark)-1]); err != nil {
- return err
- }
-
- for i := 0; i < l; i++ {
- w.Append(v.Index(i).Interface())
- }
- } else {
- questionMark := strings.Repeat("?,", len(condNotIn.vals))
- if _, err := fmt.Fprintf(w, "%s NOT IN (%s)", condNotIn.col, questionMark[:len(questionMark)-1]); err != nil {
- return err
- }
- w.Append(condNotIn.vals...)
- }
- }
- return nil
-}
-
-func (condNotIn condNotIn) And(conds ...Cond) Cond {
- return And(condNotIn, And(conds...))
-}
-
-func (condNotIn condNotIn) Or(conds ...Cond) Cond {
- return Or(condNotIn, Or(conds...))
-}
-
-func (condNotIn condNotIn) IsValid() bool {
- return len(condNotIn.col) > 0 && len(condNotIn.vals) > 0
-}
diff --git a/vendor/github.com/go-xorm/builder/cond_null.go b/vendor/github.com/go-xorm/builder/cond_null.go
deleted file mode 100644
index bf2aaf8518..0000000000
--- a/vendor/github.com/go-xorm/builder/cond_null.go
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2016 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"
-
-// IsNull defines IS NULL condition
-type IsNull [1]string
-
-var _ Cond = IsNull{""}
-
-// WriteTo write SQL to Writer
-func (isNull IsNull) WriteTo(w Writer) error {
- _, err := fmt.Fprintf(w, "%s IS NULL", isNull[0])
- return err
-}
-
-// And implements And with other conditions
-func (isNull IsNull) And(conds ...Cond) Cond {
- return And(isNull, And(conds...))
-}
-
-// Or implements Or with other conditions
-func (isNull IsNull) Or(conds ...Cond) Cond {
- return Or(isNull, Or(conds...))
-}
-
-// IsValid tests if this condition is valid
-func (isNull IsNull) IsValid() bool {
- return len(isNull[0]) > 0
-}
-
-// NotNull defines NOT NULL condition
-type NotNull [1]string
-
-var _ Cond = NotNull{""}
-
-// WriteTo write SQL to Writer
-func (notNull NotNull) WriteTo(w Writer) error {
- _, err := fmt.Fprintf(w, "%s IS NOT NULL", notNull[0])
- return err
-}
-
-// And implements And with other conditions
-func (notNull NotNull) And(conds ...Cond) Cond {
- return And(notNull, And(conds...))
-}
-
-// Or implements Or with other conditions
-func (notNull NotNull) Or(conds ...Cond) Cond {
- return Or(notNull, Or(conds...))
-}
-
-// IsValid tests if this condition is valid
-func (notNull NotNull) IsValid() bool {
- return len(notNull[0]) > 0
-}
diff --git a/vendor/github.com/go-xorm/builder/cond_or.go b/vendor/github.com/go-xorm/builder/cond_or.go
deleted file mode 100644
index 52442653a8..0000000000
--- a/vendor/github.com/go-xorm/builder/cond_or.go
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright 2016 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"
-
-type condOr []Cond
-
-var _ Cond = condOr{}
-
-// Or sets OR conditions
-func Or(conds ...Cond) Cond {
- var result = make(condOr, 0, len(conds))
- for _, cond := range conds {
- if cond == nil || !cond.IsValid() {
- continue
- }
- result = append(result, cond)
- }
- return result
-}
-
-// WriteTo implments Cond
-func (o condOr) WriteTo(w Writer) error {
- for i, cond := range o {
- var needQuote bool
- switch cond.(type) {
- case condAnd, expr:
- needQuote = true
- case Eq:
- needQuote = (len(cond.(Eq)) > 1)
- case Neq:
- needQuote = (len(cond.(Neq)) > 1)
- }
-
- if needQuote {
- fmt.Fprint(w, "(")
- }
-
- err := cond.WriteTo(w)
- if err != nil {
- return err
- }
-
- if needQuote {
- fmt.Fprint(w, ")")
- }
-
- if i != len(o)-1 {
- fmt.Fprint(w, " OR ")
- }
- }
-
- return nil
-}
-
-func (o condOr) And(conds ...Cond) Cond {
- return And(o, And(conds...))
-}
-
-func (o condOr) Or(conds ...Cond) Cond {
- return Or(o, Or(conds...))
-}
-
-func (o condOr) IsValid() bool {
- return len(o) > 0
-}
diff --git a/vendor/github.com/go-xorm/builder/doc.go b/vendor/github.com/go-xorm/builder/doc.go
deleted file mode 100644
index 162b150f10..0000000000
--- a/vendor/github.com/go-xorm/builder/doc.go
+++ /dev/null
@@ -1,120 +0,0 @@
-// Copyright 2016 The XORM Authors. All rights reserved.
-// Use of this source code is governed by a BSD
-// license that can be found in the LICENSE file.
-
-/*
-
-Package builder is a simple and powerful sql builder for Go.
-
-Make sure you have installed Go 1.1+ and then:
-
- go get github.com/go-xorm/builder
-
-WARNNING: Currently, only query conditions are supported. Below is the supported conditions.
-
-1. Eq is a redefine of a map, you can give one or more conditions to Eq
-
- import . "github.com/go-xorm/builder"
-
- sql, args, _ := ToSQL(Eq{"a":1})
- // a=? [1]
- sql, args, _ := ToSQL(Eq{"b":"c"}.And(Eq{"c": 0}))
- // b=? AND c=? ["c", 0]
- sql, args, _ := ToSQL(Eq{"b":"c", "c":0})
- // b=? AND c=? ["c", 0]
- sql, args, _ := ToSQL(Eq{"b":"c"}.Or(Eq{"b":"d"}))
- // b=? OR b=? ["c", "d"]
- sql, args, _ := ToSQL(Eq{"b": []string{"c", "d"}})
- // b IN (?,?) ["c", "d"]
- sql, args, _ := ToSQL(Eq{"b": 1, "c":[]int{2, 3}})
- // b=? AND c IN (?,?) [1, 2, 3]
-
-2. Neq is the same to Eq
-
- import . "github.com/go-xorm/builder"
-
- sql, args, _ := ToSQL(Neq{"a":1})
- // a<>? [1]
- sql, args, _ := ToSQL(Neq{"b":"c"}.And(Neq{"c": 0}))
- // b<>? AND c<>? ["c", 0]
- sql, args, _ := ToSQL(Neq{"b":"c", "c":0})
- // b<>? AND c<>? ["c", 0]
- sql, args, _ := ToSQL(Neq{"b":"c"}.Or(Neq{"b":"d"}))
- // b<>? OR b<>? ["c", "d"]
- sql, args, _ := ToSQL(Neq{"b": []string{"c", "d"}})
- // b NOT IN (?,?) ["c", "d"]
- sql, args, _ := ToSQL(Neq{"b": 1, "c":[]int{2, 3}})
- // b<>? AND c NOT IN (?,?) [1, 2, 3]
-
-3. Gt, Gte, Lt, Lte
-
- import . "github.com/go-xorm/builder"
-
- sql, args, _ := ToSQL(Gt{"a", 1}.And(Gte{"b", 2}))
- // a>? AND b>=? [1, 2]
- sql, args, _ := ToSQL(Lt{"a", 1}.Or(Lte{"b", 2}))
- // a<? OR b<=? [1, 2]
-
-4. Like
-
- import . "github.com/go-xorm/builder"
-
- sql, args, _ := ToSQL(Like{"a", "c"})
- // a LIKE ? [%c%]
-
-5. Expr you can customerize your sql with Expr
-
- import . "github.com/go-xorm/builder"
-
- sql, args, _ := ToSQL(Expr("a = ? ", 1))
- // a = ? [1]
- sql, args, _ := ToSQL(Eq{"a": Expr("select id from table where c = ?", 1)})
- // a=(select id from table where c = ?) [1]
-
-6. In and NotIn
-
- import . "github.com/go-xorm/builder"
-
- sql, args, _ := ToSQL(In("a", 1, 2, 3))
- // a IN (?,?,?) [1,2,3]
- sql, args, _ := ToSQL(In("a", []int{1, 2, 3}))
- // a IN (?,?,?) [1,2,3]
- sql, args, _ := ToSQL(In("a", Expr("select id from b where c = ?", 1))))
- // a IN (select id from b where c = ?) [1]
-
-7. IsNull and NotNull
-
- import . "github.com/go-xorm/builder"
-
- sql, args, _ := ToSQL(IsNull{"a"})
- // a IS NULL []
- sql, args, _ := ToSQL(NotNull{"b"})
- // b IS NOT NULL []
-
-8. And(conds ...Cond), And can connect one or more condtions via AND
-
- import . "github.com/go-xorm/builder"
-
- sql, args, _ := ToSQL(And(Eq{"a":1}, Like{"b", "c"}, Neq{"d", 2}))
- // a=? AND b LIKE ? AND d<>? [1, %c%, 2]
-
-9. Or(conds ...Cond), Or can connect one or more conditions via Or
-
- import . "github.com/go-xorm/builder"
-
- sql, args, _ := ToSQL(Or(Eq{"a":1}, Like{"b", "c"}, Neq{"d", 2}))
- // a=? OR b LIKE ? OR d<>? [1, %c%, 2]
- sql, args, _ := ToSQL(Or(Eq{"a":1}, And(Like{"b", "c"}, Neq{"d", 2})))
- // a=? OR (b LIKE ? AND d<>?) [1, %c%, 2]
-
-10. Between
-
- import . "github.com/go-xorm/builder"
-
- sql, args, _ := ToSQL(Between("a", 1, 2))
- // a BETWEEN 1 AND 2
-
-11. define yourself conditions
-Since Cond is a interface, you can define yourself conditions and compare with them
-*/
-package builder
diff --git a/vendor/github.com/go-xorm/builder/error.go b/vendor/github.com/go-xorm/builder/error.go
deleted file mode 100644
index d830ee9955..0000000000
--- a/vendor/github.com/go-xorm/builder/error.go
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2016 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 "errors"
-
-var (
- // ErrNotSupportType not supported SQL type error
- ErrNotSupportType = errors.New("Not supported SQL type")
- // ErrNoNotInConditions no NOT IN params error
- ErrNoNotInConditions = errors.New("No NOT IN conditions")
- // ErrNoInConditions no IN params error
- ErrNoInConditions = errors.New("No IN conditions")
- // ErrNeedMoreArguments need more arguments
- ErrNeedMoreArguments = errors.New("Need more sql arguments")
- // ErrNoTableName no table name
- ErrNoTableName = errors.New("No table indicated")
- // ErrNoColumnToInsert no column to update
- ErrNoColumnToUpdate = errors.New("No column(s) to update")
- // ErrNoColumnToInsert no column to update
- ErrNoColumnToInsert = errors.New("No column(s) to insert")
- // ErrNotSupportDialectType not supported dialect type error
- ErrNotSupportDialectType = errors.New("Not supported dialect type")
- // ErrNotUnexpectedUnionConditions using union in a wrong way
- ErrNotUnexpectedUnionConditions = errors.New("Unexpected conditional fields in UNION query")
- // ErrUnsupportedUnionMembers unexpected members in UNION query
- ErrUnsupportedUnionMembers = errors.New("Unexpected members in UNION query")
- // ErrUnexpectedSubQuery Unexpected sub-query in SELECT query
- ErrUnexpectedSubQuery = errors.New("Unexpected sub-query in SELECT query")
- // ErrDialectNotSetUp dialect is not setup yet
- ErrDialectNotSetUp = errors.New("Dialect is not setup yet, try to use `Dialect(dbType)` at first")
- // ErrInvalidLimitation offset or limit is not correct
- ErrInvalidLimitation = errors.New("Offset or limit is not correct")
- // ErrUnnamedDerivedTable Every derived table must have its own alias
- ErrUnnamedDerivedTable = errors.New("Every derived table must have its own alias")
- // ErrInconsistentDialect Inconsistent dialect in same builder
- ErrInconsistentDialect = errors.New("Inconsistent dialect in same builder")
-)
diff --git a/vendor/github.com/go-xorm/builder/go.mod b/vendor/github.com/go-xorm/builder/go.mod
deleted file mode 100644
index ef1a659ad1..0000000000
--- a/vendor/github.com/go-xorm/builder/go.mod
+++ /dev/null
@@ -1 +0,0 @@
-module "github.com/go-xorm/builder"
diff --git a/vendor/github.com/go-xorm/builder/sql.go b/vendor/github.com/go-xorm/builder/sql.go
deleted file mode 100644
index 0834242768..0000000000
--- a/vendor/github.com/go-xorm/builder/sql.go
+++ /dev/null
@@ -1,156 +0,0 @@
-// 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 (
- sql2 "database/sql"
- "fmt"
- "reflect"
- "time"
-)
-
-func condToSQL(cond Cond) (string, []interface{}, error) {
- if cond == nil || !cond.IsValid() {
- return "", nil, nil
- }
-
- w := NewWriter()
- if err := cond.WriteTo(w); err != nil {
- return "", nil, err
- }
- return w.writer.String(), w.args, nil
-}
-
-func condToBoundSQL(cond Cond) (string, error) {
- if cond == nil || !cond.IsValid() {
- return "", nil
- }
-
- w := NewWriter()
- if err := cond.WriteTo(w); err != nil {
- return "", err
- }
- return ConvertToBoundSQL(w.writer.String(), w.args)
-}
-
-// ToSQL convert a builder or conditions to SQL and args
-func ToSQL(cond interface{}) (string, []interface{}, error) {
- switch cond.(type) {
- case Cond:
- return condToSQL(cond.(Cond))
- case *Builder:
- return cond.(*Builder).ToSQL()
- }
- return "", nil, ErrNotSupportType
-}
-
-// ToBoundSQL convert a builder or conditions to parameters bound SQL
-func ToBoundSQL(cond interface{}) (string, error) {
- switch cond.(type) {
- case Cond:
- return condToBoundSQL(cond.(Cond))
- case *Builder:
- return cond.(*Builder).ToBoundSQL()
- }
- return "", ErrNotSupportType
-}
-
-func noSQLQuoteNeeded(a interface{}) bool {
- switch a.(type) {
- case int, int8, int16, int32, int64:
- return true
- case uint, uint8, uint16, uint32, uint64:
- return true
- case float32, float64:
- return true
- case bool:
- return true
- case string:
- return false
- case time.Time, *time.Time:
- return false
- }
-
- t := reflect.TypeOf(a)
- switch t.Kind() {
- case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
- return true
- case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
- return true
- case reflect.Float32, reflect.Float64:
- return true
- case reflect.Bool:
- return true
- case reflect.String:
- return false
- }
-
- return false
-}
-
-// ConvertToBoundSQL will convert SQL and args to a bound SQL
-func ConvertToBoundSQL(sql string, args []interface{}) (string, error) {
- buf := StringBuilder{}
- var i, j, start int
- for ; i < len(sql); i++ {
- if sql[i] == '?' {
- _, err := buf.WriteString(sql[start:i])
- if err != nil {
- return "", err
- }
- start = i + 1
-
- if len(args) == j {
- return "", ErrNeedMoreArguments
- }
-
- arg := args[j]
- if namedArg, ok := arg.(sql2.NamedArg); ok {
- arg = namedArg.Value
- }
-
- if noSQLQuoteNeeded(arg) {
- _, err = fmt.Fprint(&buf, arg)
- } else {
- _, err = fmt.Fprintf(&buf, "'%v'", arg)
- }
- if err != nil {
- return "", err
- }
- j = j + 1
- }
- }
- _, err := buf.WriteString(sql[start:])
- if err != nil {
- return "", err
- }
- return buf.String(), nil
-}
-
-// ConvertPlaceholder replaces ? to $1, $2 ... or :1, :2 ... according prefix
-func ConvertPlaceholder(sql, prefix string) (string, error) {
- buf := StringBuilder{}
- var i, j, start int
- for ; i < len(sql); i++ {
- if sql[i] == '?' {
- if _, err := buf.WriteString(sql[start:i]); err != nil {
- return "", err
- }
-
- start = i + 1
- j = j + 1
-
- if _, err := buf.WriteString(fmt.Sprintf("%v%d", prefix, j)); err != nil {
- return "", err
- }
- }
- }
-
- if _, err := buf.WriteString(sql[start:]); err != nil {
- return "", err
- }
-
- return buf.String(), nil
-}
diff --git a/vendor/github.com/go-xorm/builder/string_builder.go b/vendor/github.com/go-xorm/builder/string_builder.go
deleted file mode 100644
index d4de8717e7..0000000000
--- a/vendor/github.com/go-xorm/builder/string_builder.go
+++ /dev/null
@@ -1,119 +0,0 @@
-// Copyright 2017 The Go 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 (
- "unicode/utf8"
- "unsafe"
-)
-
-// A StringBuilder is used to efficiently build a string using Write methods.
-// It minimizes memory copying. The zero value is ready to use.
-// Do not copy a non-zero Builder.
-type StringBuilder struct {
- addr *StringBuilder // of receiver, to detect copies by value
- buf []byte
-}
-
-// noescape hides a pointer from escape analysis. noescape is
-// the identity function but escape analysis doesn't think the
-// output depends on the input. noescape is inlined and currently
-// compiles down to zero instructions.
-// USE CAREFULLY!
-// This was copied from the runtime; see issues 23382 and 7921.
-//go:nosplit
-func noescape(p unsafe.Pointer) unsafe.Pointer {
- x := uintptr(p)
- return unsafe.Pointer(x ^ 0)
-}
-
-func (b *StringBuilder) copyCheck() {
- if b.addr == nil {
- // This hack works around a failing of Go's escape analysis
- // that was causing b to escape and be heap allocated.
- // See issue 23382.
- // TODO: once issue 7921 is fixed, this should be reverted to
- // just "b.addr = b".
- b.addr = (*StringBuilder)(noescape(unsafe.Pointer(b)))
- } else if b.addr != b {
- panic("strings: illegal use of non-zero Builder copied by value")
- }
-}
-
-// String returns the accumulated string.
-func (b *StringBuilder) String() string {
- return *(*string)(unsafe.Pointer(&b.buf))
-}
-
-// Len returns the number of accumulated bytes; b.Len() == len(b.String()).
-func (b *StringBuilder) Len() int { return len(b.buf) }
-
-// Reset resets the Builder to be empty.
-func (b *StringBuilder) Reset() {
- b.addr = nil
- b.buf = nil
-}
-
-// grow copies the buffer to a new, larger buffer so that there are at least n
-// bytes of capacity beyond len(b.buf).
-func (b *StringBuilder) grow(n int) {
- buf := make([]byte, len(b.buf), 2*cap(b.buf)+n)
- copy(buf, b.buf)
- b.buf = buf
-}
-
-// Grow grows b's capacity, if necessary, to guarantee space for
-// another n bytes. After Grow(n), at least n bytes can be written to b
-// without another allocation. If n is negative, Grow panics.
-func (b *StringBuilder) Grow(n int) {
- b.copyCheck()
- if n < 0 {
- panic("strings.Builder.Grow: negative count")
- }
- if cap(b.buf)-len(b.buf) < n {
- b.grow(n)
- }
-}
-
-// Write appends the contents of p to b's buffer.
-// Write always returns len(p), nil.
-func (b *StringBuilder) Write(p []byte) (int, error) {
- b.copyCheck()
- b.buf = append(b.buf, p...)
- return len(p), nil
-}
-
-// WriteByte appends the byte c to b's buffer.
-// The returned error is always nil.
-func (b *StringBuilder) WriteByte(c byte) error {
- b.copyCheck()
- b.buf = append(b.buf, c)
- return nil
-}
-
-// WriteRune appends the UTF-8 encoding of Unicode code point r to b's buffer.
-// It returns the length of r and a nil error.
-func (b *StringBuilder) WriteRune(r rune) (int, error) {
- b.copyCheck()
- if r < utf8.RuneSelf {
- b.buf = append(b.buf, byte(r))
- return 1, nil
- }
- l := len(b.buf)
- if cap(b.buf)-l < utf8.UTFMax {
- b.grow(utf8.UTFMax)
- }
- n := utf8.EncodeRune(b.buf[l:l+utf8.UTFMax], r)
- b.buf = b.buf[:l+n]
- return n, nil
-}
-
-// WriteString appends the contents of s to b's buffer.
-// It returns the length of s and a nil error.
-func (b *StringBuilder) WriteString(s string) (int, error) {
- b.copyCheck()
- b.buf = append(b.buf, s...)
- return len(s), nil
-}
diff --git a/vendor/github.com/go-xorm/core/.gitignore b/vendor/github.com/go-xorm/core/.gitignore
deleted file mode 100644
index 98e6ef67fa..0000000000
--- a/vendor/github.com/go-xorm/core/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*.db
diff --git a/vendor/github.com/go-xorm/core/LICENSE b/vendor/github.com/go-xorm/core/LICENSE
deleted file mode 100644
index 1130797806..0000000000
--- a/vendor/github.com/go-xorm/core/LICENSE
+++ /dev/null
@@ -1,27 +0,0 @@
-Copyright (c) 2013 - 2015 Lunny Xiao <xiaolunwen@gmail.com>
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
-* Neither the name of the {organization} nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/github.com/go-xorm/core/README.md b/vendor/github.com/go-xorm/core/README.md
deleted file mode 100644
index 09b72c74b3..0000000000
--- a/vendor/github.com/go-xorm/core/README.md
+++ /dev/null
@@ -1,116 +0,0 @@
-Core is a lightweight wrapper of sql.DB.
-
-[![CircleCI](https://circleci.com/gh/go-xorm/core/tree/master.svg?style=svg)](https://circleci.com/gh/go-xorm/core/tree/master)
-
-# Open
-```Go
-db, _ := core.Open(db, connstr)
-```
-
-# SetMapper
-```Go
-db.SetMapper(SameMapper())
-```
-
-## Scan usage
-
-### Scan
-```Go
-rows, _ := db.Query()
-for rows.Next() {
- rows.Scan()
-}
-```
-
-### ScanMap
-```Go
-rows, _ := db.Query()
-for rows.Next() {
- rows.ScanMap()
-```
-
-### ScanSlice
-
-You can use `[]string`, `[][]byte`, `[]interface{}`, `[]*string`, `[]sql.NullString` to ScanSclice. Notice, slice's length should be equal or less than select columns.
-
-```Go
-rows, _ := db.Query()
-cols, _ := rows.Columns()
-for rows.Next() {
- var s = make([]string, len(cols))
- rows.ScanSlice(&s)
-}
-```
-
-```Go
-rows, _ := db.Query()
-cols, _ := rows.Columns()
-for rows.Next() {
- var s = make([]*string, len(cols))
- rows.ScanSlice(&s)
-}
-```
-
-### ScanStruct
-```Go
-rows, _ := db.Query()
-for rows.Next() {
- rows.ScanStructByName()
- rows.ScanStructByIndex()
-}
-```
-
-## Query usage
-```Go
-rows, err := db.Query("select * from table where name = ?", name)
-
-user = User{
- Name:"lunny",
-}
-rows, err := db.QueryStruct("select * from table where name = ?Name",
- &user)
-
-var user = map[string]interface{}{
- "name": "lunny",
-}
-rows, err = db.QueryMap("select * from table where name = ?name",
- &user)
-```
-
-## QueryRow usage
-```Go
-row := db.QueryRow("select * from table where name = ?", name)
-
-user = User{
- Name:"lunny",
-}
-row := db.QueryRowStruct("select * from table where name = ?Name",
- &user)
-
-var user = map[string]interface{}{
- "name": "lunny",
-}
-row = db.QueryRowMap("select * from table where name = ?name",
- &user)
-```
-
-## Exec usage
-```Go
-db.Exec("insert into user (`name`, title, age, alias, nick_name,created) values (?,?,?,?,?,?)", name, title, age, alias...)
-
-user = User{
- Name:"lunny",
- Title:"test",
- Age: 18,
-}
-result, err = db.ExecStruct("insert into user (`name`, title, age, alias, nick_name,created) values (?Name,?Title,?Age,?Alias,?NickName,?Created)",
- &user)
-
-var user = map[string]interface{}{
- "Name": "lunny",
- "Title": "test",
- "Age": 18,
-}
-result, err = db.ExecMap("insert into user (`name`, title, age, alias, nick_name,created) values (?Name,?Title,?Age,?Alias,?NickName,?Created)",
- &user)
-``` \ No newline at end of file
diff --git a/vendor/github.com/go-xorm/core/benchmark.sh b/vendor/github.com/go-xorm/core/benchmark.sh
deleted file mode 100644
index eab9e57e9f..0000000000
--- a/vendor/github.com/go-xorm/core/benchmark.sh
+++ /dev/null
@@ -1 +0,0 @@
-go test -v -bench=. -run=XXX
diff --git a/vendor/github.com/go-xorm/core/cache.go b/vendor/github.com/go-xorm/core/cache.go
deleted file mode 100644
index 8f9531da94..0000000000
--- a/vendor/github.com/go-xorm/core/cache.go
+++ /dev/null
@@ -1,87 +0,0 @@
-package core
-
-import (
- "bytes"
- "encoding/gob"
- "errors"
- "fmt"
- "strings"
- "time"
-)
-
-const (
- // default cache expired time
- CacheExpired = 60 * time.Minute
- // not use now
- CacheMaxMemory = 256
- // evey ten minutes to clear all expired nodes
- CacheGcInterval = 10 * time.Minute
- // each time when gc to removed max nodes
- CacheGcMaxRemoved = 20
-)
-
-var (
- ErrCacheMiss = errors.New("xorm/cache: key not found.")
- ErrNotStored = errors.New("xorm/cache: not stored.")
-)
-
-// CacheStore is a interface to store cache
-type CacheStore interface {
- // key is primary key or composite primary key
- // value is struct's pointer
- // key format : <tablename>-p-<pk1>-<pk2>...
- Put(key string, value interface{}) error
- Get(key string) (interface{}, error)
- Del(key string) error
-}
-
-// Cacher is an interface to provide cache
-// id format : u-<pk1>-<pk2>...
-type Cacher interface {
- GetIds(tableName, sql string) interface{}
- GetBean(tableName string, id string) interface{}
- PutIds(tableName, sql string, ids interface{})
- PutBean(tableName string, id string, obj interface{})
- DelIds(tableName, sql string)
- DelBean(tableName string, id string)
- ClearIds(tableName string)
- ClearBeans(tableName string)
-}
-
-func encodeIds(ids []PK) (string, error) {
- buf := new(bytes.Buffer)
- enc := gob.NewEncoder(buf)
- err := enc.Encode(ids)
-
- return buf.String(), err
-}
-
-func decodeIds(s string) ([]PK, error) {
- pks := make([]PK, 0)
-
- dec := gob.NewDecoder(strings.NewReader(s))
- err := dec.Decode(&pks)
-
- return pks, err
-}
-
-func GetCacheSql(m Cacher, tableName, sql string, args interface{}) ([]PK, error) {
- bytes := m.GetIds(tableName, GenSqlKey(sql, args))
- if bytes == nil {
- return nil, errors.New("Not Exist")
- }
- return decodeIds(bytes.(string))
-}
-
-func PutCacheSql(m Cacher, ids []PK, tableName, sql string, args interface{}) error {
- bytes, err := encodeIds(ids)
- if err != nil {
- return err
- }
- m.PutIds(tableName, GenSqlKey(sql, args), bytes)
- return nil
-}
-
-func GenSqlKey(sql string, args interface{}) string {
- return fmt.Sprintf("%v-%v", sql, args)
-}
diff --git a/vendor/github.com/go-xorm/core/circle.yml b/vendor/github.com/go-xorm/core/circle.yml
deleted file mode 100644
index e6a05be272..0000000000
--- a/vendor/github.com/go-xorm/core/circle.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-dependencies:
- override:
- # './...' is a relative pattern which means all subdirectories
- - go get -t -d -v ./...
- - go build -v
-
-database:
- override:
- - mysql -u root -e "CREATE DATABASE core_test DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci"
-
-test:
- override:
- # './...' is a relative pattern which means all subdirectories
- - go test -v -race
- - go test -v -race --dbtype=sqlite3
diff --git a/vendor/github.com/go-xorm/core/column.go b/vendor/github.com/go-xorm/core/column.go
deleted file mode 100644
index 20912b713c..0000000000
--- a/vendor/github.com/go-xorm/core/column.go
+++ /dev/null
@@ -1,159 +0,0 @@
-package core
-
-import (
- "fmt"
- "reflect"
- "strings"
- "time"
-)
-
-const (
- TWOSIDES = iota + 1
- ONLYTODB
- ONLYFROMDB
-)
-
-// Column defines database column
-type Column struct {
- Name string
- TableName string
- FieldName string
- SQLType SQLType
- IsJSON bool
- Length int
- Length2 int
- Nullable bool
- Default string
- Indexes map[string]int
- IsPrimaryKey bool
- IsAutoIncrement bool
- MapType int
- IsCreated bool
- IsUpdated bool
- IsDeleted bool
- IsCascade bool
- IsVersion bool
- DefaultIsEmpty bool
- EnumOptions map[string]int
- SetOptions map[string]int
- DisableTimeZone bool
- TimeZone *time.Location // column specified time zone
- Comment string
-}
-
-func NewColumn(name, fieldName string, sqlType SQLType, len1, len2 int, nullable bool) *Column {
- return &Column{
- Name: name,
- TableName: "",
- FieldName: fieldName,
- SQLType: sqlType,
- Length: len1,
- Length2: len2,
- Nullable: nullable,
- Default: "",
- Indexes: make(map[string]int),
- IsPrimaryKey: false,
- IsAutoIncrement: false,
- MapType: TWOSIDES,
- IsCreated: false,
- IsUpdated: false,
- IsDeleted: false,
- IsCascade: false,
- IsVersion: false,
- DefaultIsEmpty: false,
- EnumOptions: make(map[string]int),
- Comment: "",
- }
-}
-
-// generate column description string according dialect
-func (col *Column) String(d Dialect) string {
- sql := d.QuoteStr() + col.Name + d.QuoteStr() + " "
-
- sql += d.SqlType(col) + " "
-
- if col.IsPrimaryKey {
- sql += "PRIMARY KEY "
- if col.IsAutoIncrement {
- sql += d.AutoIncrStr() + " "
- }
- }
-
- if col.Default != "" {
- sql += "DEFAULT " + col.Default + " "
- }
-
- if d.ShowCreateNull() {
- if col.Nullable {
- sql += "NULL "
- } else {
- sql += "NOT NULL "
- }
- }
-
- return sql
-}
-
-func (col *Column) StringNoPk(d Dialect) string {
- sql := d.QuoteStr() + col.Name + d.QuoteStr() + " "
-
- sql += d.SqlType(col) + " "
-
- if col.Default != "" {
- sql += "DEFAULT " + col.Default + " "
- }
-
- if d.ShowCreateNull() {
- if col.Nullable {
- sql += "NULL "
- } else {
- sql += "NOT NULL "
- }
- }
-
- return sql
-}
-
-// return col's filed of struct's value
-func (col *Column) ValueOf(bean interface{}) (*reflect.Value, error) {
- dataStruct := reflect.Indirect(reflect.ValueOf(bean))
- return col.ValueOfV(&dataStruct)
-}
-
-func (col *Column) ValueOfV(dataStruct *reflect.Value) (*reflect.Value, error) {
- var fieldValue reflect.Value
- fieldPath := strings.Split(col.FieldName, ".")
-
- if dataStruct.Type().Kind() == reflect.Map {
- keyValue := reflect.ValueOf(fieldPath[len(fieldPath)-1])
- fieldValue = dataStruct.MapIndex(keyValue)
- return &fieldValue, nil
- } else if dataStruct.Type().Kind() == reflect.Interface {
- structValue := reflect.ValueOf(dataStruct.Interface())
- dataStruct = &structValue
- }
-
- level := len(fieldPath)
- fieldValue = dataStruct.FieldByName(fieldPath[0])
- for i := 0; i < level-1; i++ {
- if !fieldValue.IsValid() {
- break
- }
- if fieldValue.Kind() == reflect.Struct {
- fieldValue = fieldValue.FieldByName(fieldPath[i+1])
- } else if fieldValue.Kind() == reflect.Ptr {
- if fieldValue.IsNil() {
- fieldValue.Set(reflect.New(fieldValue.Type().Elem()))
- }
- fieldValue = fieldValue.Elem().FieldByName(fieldPath[i+1])
- } else {
- return nil, fmt.Errorf("field %v is not valid", col.FieldName)
- }
- }
-
- if !fieldValue.IsValid() {
- return nil, fmt.Errorf("field %v is not valid", col.FieldName)
- }
-
- return &fieldValue, nil
-}
diff --git a/vendor/github.com/go-xorm/core/converstion.go b/vendor/github.com/go-xorm/core/converstion.go
deleted file mode 100644
index 18522fbeeb..0000000000
--- a/vendor/github.com/go-xorm/core/converstion.go
+++ /dev/null
@@ -1,8 +0,0 @@
-package core
-
-// Conversion is an interface. A type implements Conversion will according
-// the custom method to fill into database and retrieve from database.
-type Conversion interface {
- FromDB([]byte) error
- ToDB() ([]byte, error)
-}
diff --git a/vendor/github.com/go-xorm/core/db.go b/vendor/github.com/go-xorm/core/db.go
deleted file mode 100644
index 9969fa4313..0000000000
--- a/vendor/github.com/go-xorm/core/db.go
+++ /dev/null
@@ -1,401 +0,0 @@
-package core
-
-import (
- "database/sql"
- "database/sql/driver"
- "errors"
- "fmt"
- "reflect"
- "regexp"
- "sync"
-)
-
-var (
- DefaultCacheSize = 200
-)
-
-func MapToSlice(query string, mp interface{}) (string, []interface{}, error) {
- vv := reflect.ValueOf(mp)
- if vv.Kind() != reflect.Ptr || vv.Elem().Kind() != reflect.Map {
- return "", []interface{}{}, ErrNoMapPointer
- }
-
- args := make([]interface{}, 0, len(vv.Elem().MapKeys()))
- var err error
- query = re.ReplaceAllStringFunc(query, func(src string) string {
- v := vv.Elem().MapIndex(reflect.ValueOf(src[1:]))
- if !v.IsValid() {
- err = fmt.Errorf("map key %s is missing", src[1:])
- } else {
- args = append(args, v.Interface())
- }
- return "?"
- })
-
- return query, args, err
-}
-
-func StructToSlice(query string, st interface{}) (string, []interface{}, error) {
- vv := reflect.ValueOf(st)
- if vv.Kind() != reflect.Ptr || vv.Elem().Kind() != reflect.Struct {
- return "", []interface{}{}, ErrNoStructPointer
- }
-
- args := make([]interface{}, 0)
- var err error
- query = re.ReplaceAllStringFunc(query, func(src string) string {
- fv := vv.Elem().FieldByName(src[1:]).Interface()
- if v, ok := fv.(driver.Valuer); ok {
- var value driver.Value
- value, err = v.Value()
- if err != nil {
- return "?"
- }
- args = append(args, value)
- } else {
- args = append(args, fv)
- }
- return "?"
- })
- if err != nil {
- return "", []interface{}{}, err
- }
- return query, args, nil
-}
-
-type cacheStruct struct {
- value reflect.Value
- idx int
-}
-
-type DB struct {
- *sql.DB
- Mapper IMapper
- reflectCache map[reflect.Type]*cacheStruct
- reflectCacheMutex sync.RWMutex
-}
-
-func Open(driverName, dataSourceName string) (*DB, error) {
- db, err := sql.Open(driverName, dataSourceName)
- if err != nil {
- return nil, err
- }
- return &DB{
- DB: db,
- Mapper: NewCacheMapper(&SnakeMapper{}),
- reflectCache: make(map[reflect.Type]*cacheStruct),
- }, nil
-}
-
-func FromDB(db *sql.DB) *DB {
- return &DB{
- DB: db,
- Mapper: NewCacheMapper(&SnakeMapper{}),
- reflectCache: make(map[reflect.Type]*cacheStruct),
- }
-}
-
-func (db *DB) reflectNew(typ reflect.Type) reflect.Value {
- db.reflectCacheMutex.Lock()
- defer db.reflectCacheMutex.Unlock()
- cs, ok := db.reflectCache[typ]
- if !ok || cs.idx+1 > DefaultCacheSize-1 {
- cs = &cacheStruct{reflect.MakeSlice(reflect.SliceOf(typ), DefaultCacheSize, DefaultCacheSize), 0}
- db.reflectCache[typ] = cs
- } else {
- cs.idx = cs.idx + 1
- }
- return cs.value.Index(cs.idx).Addr()
-}
-
-func (db *DB) Query(query string, args ...interface{}) (*Rows, error) {
- rows, err := db.DB.Query(query, args...)
- if err != nil {
- if rows != nil {
- rows.Close()
- }
- return nil, err
- }
- return &Rows{rows, db}, nil
-}
-
-func (db *DB) QueryMap(query string, mp interface{}) (*Rows, error) {
- query, args, err := MapToSlice(query, mp)
- if err != nil {
- return nil, err
- }
- return db.Query(query, args...)
-}
-
-func (db *DB) QueryStruct(query string, st interface{}) (*Rows, error) {
- query, args, err := StructToSlice(query, st)
- if err != nil {
- return nil, err
- }
- return db.Query(query, args...)
-}
-
-func (db *DB) QueryRow(query string, args ...interface{}) *Row {
- rows, err := db.Query(query, args...)
- if err != nil {
- return &Row{nil, err}
- }
- return &Row{rows, nil}
-}
-
-func (db *DB) QueryRowMap(query string, mp interface{}) *Row {
- query, args, err := MapToSlice(query, mp)
- if err != nil {
- return &Row{nil, err}
- }
- return db.QueryRow(query, args...)
-}
-
-func (db *DB) QueryRowStruct(query string, st interface{}) *Row {
- query, args, err := StructToSlice(query, st)
- if err != nil {
- return &Row{nil, err}
- }
- return db.QueryRow(query, args...)
-}
-
-type Stmt struct {
- *sql.Stmt
- db *DB
- names map[string]int
-}
-
-func (db *DB) Prepare(query string) (*Stmt, error) {
- names := make(map[string]int)
- var i int
- query = re.ReplaceAllStringFunc(query, func(src string) string {
- names[src[1:]] = i
- i += 1
- return "?"
- })
-
- stmt, err := db.DB.Prepare(query)
- if err != nil {
- return nil, err
- }
- return &Stmt{stmt, db, names}, nil
-}
-
-func (s *Stmt) ExecMap(mp interface{}) (sql.Result, error) {
- vv := reflect.ValueOf(mp)
- if vv.Kind() != reflect.Ptr || vv.Elem().Kind() != reflect.Map {
- return nil, errors.New("mp should be a map's pointer")
- }
-
- args := make([]interface{}, len(s.names))
- for k, i := range s.names {
- args[i] = vv.Elem().MapIndex(reflect.ValueOf(k)).Interface()
- }
- return s.Stmt.Exec(args...)
-}
-
-func (s *Stmt) ExecStruct(st interface{}) (sql.Result, error) {
- vv := reflect.ValueOf(st)
- if vv.Kind() != reflect.Ptr || vv.Elem().Kind() != reflect.Struct {
- return nil, errors.New("mp should be a map's pointer")
- }
-
- args := make([]interface{}, len(s.names))
- for k, i := range s.names {
- args[i] = vv.Elem().FieldByName(k).Interface()
- }
- return s.Stmt.Exec(args...)
-}
-
-func (s *Stmt) Query(args ...interface{}) (*Rows, error) {
- rows, err := s.Stmt.Query(args...)
- if err != nil {
- return nil, err
- }
- return &Rows{rows, s.db}, nil
-}
-
-func (s *Stmt) QueryMap(mp interface{}) (*Rows, error) {
- vv := reflect.ValueOf(mp)
- if vv.Kind() != reflect.Ptr || vv.Elem().Kind() != reflect.Map {
- return nil, errors.New("mp should be a map's pointer")
- }
-
- args := make([]interface{}, len(s.names))
- for k, i := range s.names {
- args[i] = vv.Elem().MapIndex(reflect.ValueOf(k)).Interface()
- }
-
- return s.Query(args...)
-}
-
-func (s *Stmt) QueryStruct(st interface{}) (*Rows, error) {
- vv := reflect.ValueOf(st)
- if vv.Kind() != reflect.Ptr || vv.Elem().Kind() != reflect.Struct {
- return nil, errors.New("mp should be a map's pointer")
- }
-
- args := make([]interface{}, len(s.names))
- for k, i := range s.names {
- args[i] = vv.Elem().FieldByName(k).Interface()
- }
-
- return s.Query(args...)
-}
-
-func (s *Stmt) QueryRow(args ...interface{}) *Row {
- rows, err := s.Query(args...)
- return &Row{rows, err}
-}
-
-func (s *Stmt) QueryRowMap(mp interface{}) *Row {
- vv := reflect.ValueOf(mp)
- if vv.Kind() != reflect.Ptr || vv.Elem().Kind() != reflect.Map {
- return &Row{nil, errors.New("mp should be a map's pointer")}
- }
-
- args := make([]interface{}, len(s.names))
- for k, i := range s.names {
- args[i] = vv.Elem().MapIndex(reflect.ValueOf(k)).Interface()
- }
-
- return s.QueryRow(args...)
-}
-
-func (s *Stmt) QueryRowStruct(st interface{}) *Row {
- vv := reflect.ValueOf(st)
- if vv.Kind() != reflect.Ptr || vv.Elem().Kind() != reflect.Struct {
- return &Row{nil, errors.New("st should be a struct's pointer")}
- }
-
- args := make([]interface{}, len(s.names))
- for k, i := range s.names {
- args[i] = vv.Elem().FieldByName(k).Interface()
- }
-
- return s.QueryRow(args...)
-}
-
-var (
- re = regexp.MustCompile(`[?](\w+)`)
-)
-
-// insert into (name) values (?)
-// insert into (name) values (?name)
-func (db *DB) ExecMap(query string, mp interface{}) (sql.Result, error) {
- query, args, err := MapToSlice(query, mp)
- if err != nil {
- return nil, err
- }
- return db.DB.Exec(query, args...)
-}
-
-func (db *DB) ExecStruct(query string, st interface{}) (sql.Result, error) {
- query, args, err := StructToSlice(query, st)
- if err != nil {
- return nil, err
- }
- return db.DB.Exec(query, args...)
-}
-
-type EmptyScanner struct {
-}
-
-func (EmptyScanner) Scan(src interface{}) error {
- return nil
-}
-
-type Tx struct {
- *sql.Tx
- db *DB
-}
-
-func (db *DB) Begin() (*Tx, error) {
- tx, err := db.DB.Begin()
- if err != nil {
- return nil, err
- }
- return &Tx{tx, db}, nil
-}
-
-func (tx *Tx) Prepare(query string) (*Stmt, error) {
- names := make(map[string]int)
- var i int
- query = re.ReplaceAllStringFunc(query, func(src string) string {
- names[src[1:]] = i
- i += 1
- return "?"
- })
-
- stmt, err := tx.Tx.Prepare(query)
- if err != nil {
- return nil, err
- }
- return &Stmt{stmt, tx.db, names}, nil
-}
-
-func (tx *Tx) Stmt(stmt *Stmt) *Stmt {
- // TODO:
- return stmt
-}
-
-func (tx *Tx) ExecMap(query string, mp interface{}) (sql.Result, error) {
- query, args, err := MapToSlice(query, mp)
- if err != nil {
- return nil, err
- }
- return tx.Tx.Exec(query, args...)
-}
-
-func (tx *Tx) ExecStruct(query string, st interface{}) (sql.Result, error) {
- query, args, err := StructToSlice(query, st)
- if err != nil {
- return nil, err
- }
- return tx.Tx.Exec(query, args...)
-}
-
-func (tx *Tx) Query(query string, args ...interface{}) (*Rows, error) {
- rows, err := tx.Tx.Query(query, args...)
- if err != nil {
- return nil, err
- }
- return &Rows{rows, tx.db}, nil
-}
-
-func (tx *Tx) QueryMap(query string, mp interface{}) (*Rows, error) {
- query, args, err := MapToSlice(query, mp)
- if err != nil {
- return nil, err
- }
- return tx.Query(query, args...)
-}
-
-func (tx *Tx) QueryStruct(query string, st interface{}) (*Rows, error) {
- query, args, err := StructToSlice(query, st)
- if err != nil {
- return nil, err
- }
- return tx.Query(query, args...)
-}
-
-func (tx *Tx) QueryRow(query string, args ...interface{}) *Row {
- rows, err := tx.Query(query, args...)
- return &Row{rows, err}
-}
-
-func (tx *Tx) QueryRowMap(query string, mp interface{}) *Row {
- query, args, err := MapToSlice(query, mp)
- if err != nil {
- return &Row{nil, err}
- }
- return tx.QueryRow(query, args...)
-}
-
-func (tx *Tx) QueryRowStruct(query string, st interface{}) *Row {
- query, args, err := StructToSlice(query, st)
- if err != nil {
- return &Row{nil, err}
- }
- return tx.QueryRow(query, args...)
-}
diff --git a/vendor/github.com/go-xorm/core/dialect.go b/vendor/github.com/go-xorm/core/dialect.go
deleted file mode 100644
index c288a08478..0000000000
--- a/vendor/github.com/go-xorm/core/dialect.go
+++ /dev/null
@@ -1,315 +0,0 @@
-package core
-
-import (
- "fmt"
- "strings"
- "time"
-)
-
-type DbType string
-
-type Uri struct {
- DbType DbType
- Proto string
- Host string
- Port string
- DbName string
- User string
- Passwd string
- Charset string
- Laddr string
- Raddr string
- Timeout time.Duration
- Schema string
-}
-
-// a dialect is a driver's wrapper
-type Dialect interface {
- SetLogger(logger ILogger)
- Init(*DB, *Uri, string, string) error
- URI() *Uri
- DB() *DB
- DBType() DbType
- SqlType(*Column) string
- FormatBytes(b []byte) string
-
- DriverName() string
- DataSourceName() string
-
- QuoteStr() string
- IsReserved(string) bool
- Quote(string) string
- AndStr() string
- OrStr() string
- EqStr() string
- RollBackStr() string
- AutoIncrStr() string
-
- SupportInsertMany() bool
- SupportEngine() bool
- SupportCharset() bool
- SupportDropIfExists() bool
- IndexOnTable() bool
- ShowCreateNull() bool
-
- IndexCheckSql(tableName, idxName string) (string, []interface{})
- TableCheckSql(tableName string) (string, []interface{})
-
- IsColumnExist(tableName string, colName string) (bool, error)
-
- CreateTableSql(table *Table, tableName, storeEngine, charset string) string
- DropTableSql(tableName string) string
- CreateIndexSql(tableName string, index *Index) string
- DropIndexSql(tableName string, index *Index) string
-
- ModifyColumnSql(tableName string, col *Column) string
-
- ForUpdateSql(query string) string
-
- //CreateTableIfNotExists(table *Table, tableName, storeEngine, charset string) error
- //MustDropTable(tableName string) error
-
- GetColumns(tableName string) ([]string, map[string]*Column, error)
- GetTables() ([]*Table, error)
- GetIndexes(tableName string) (map[string]*Index, error)
-
- Filters() []Filter
- SetParams(params map[string]string)
-}
-
-func OpenDialect(dialect Dialect) (*DB, error) {
- return Open(dialect.DriverName(), dialect.DataSourceName())
-}
-
-type Base struct {
- db *DB
- dialect Dialect
- driverName string
- dataSourceName string
- logger ILogger
- *Uri
-}
-
-func (b *Base) DB() *DB {
- return b.db
-}
-
-func (b *Base) SetLogger(logger ILogger) {
- b.logger = logger
-}
-
-func (b *Base) Init(db *DB, dialect Dialect, uri *Uri, drivername, dataSourceName string) error {
- b.db, b.dialect, b.Uri = db, dialect, uri
- b.driverName, b.dataSourceName = drivername, dataSourceName
- return nil
-}
-
-func (b *Base) URI() *Uri {
- return b.Uri
-}
-
-func (b *Base) DBType() DbType {
- return b.Uri.DbType
-}
-
-func (b *Base) FormatBytes(bs []byte) string {
- return fmt.Sprintf("0x%x", bs)
-}
-
-func (b *Base) DriverName() string {
- return b.driverName
-}
-
-func (b *Base) ShowCreateNull() bool {
- return true
-}
-
-func (b *Base) DataSourceName() string {
- return b.dataSourceName
-}
-
-func (b *Base) AndStr() string {
- return "AND"
-}
-
-func (b *Base) OrStr() string {
- return "OR"
-}
-
-func (b *Base) EqStr() string {
- return "="
-}
-
-func (db *Base) RollBackStr() string {
- return "ROLL BACK"
-}
-
-func (db *Base) SupportDropIfExists() bool {
- return true
-}
-
-func (db *Base) DropTableSql(tableName string) string {
- quote := db.dialect.Quote
- return fmt.Sprintf("DROP TABLE IF EXISTS %s", quote(tableName))
-}
-
-func (db *Base) HasRecords(query string, args ...interface{}) (bool, error) {
- db.LogSQL(query, args)
- rows, err := db.DB().Query(query, args...)
- if err != nil {
- return false, err
- }
- defer rows.Close()
-
- if rows.Next() {
- return true, nil
- }
- return false, nil
-}
-
-func (db *Base) IsColumnExist(tableName, colName string) (bool, error) {
- query := "SELECT `COLUMN_NAME` FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA` = ? AND `TABLE_NAME` = ? AND `COLUMN_NAME` = ?"
- query = strings.Replace(query, "`", db.dialect.QuoteStr(), -1)
- return db.HasRecords(query, db.DbName, tableName, colName)
-}
-
-/*
-func (db *Base) CreateTableIfNotExists(table *Table, tableName, storeEngine, charset string) error {
- sql, args := db.dialect.TableCheckSql(tableName)
- rows, err := db.DB().Query(sql, args...)
- if db.Logger != nil {
- db.Logger.Info("[sql]", sql, args)
- }
- if err != nil {
- return err
- }
- defer rows.Close()
-
- if rows.Next() {
- return nil
- }
-
- sql = db.dialect.CreateTableSql(table, tableName, storeEngine, charset)
- _, err = db.DB().Exec(sql)
- if db.Logger != nil {
- db.Logger.Info("[sql]", sql)
- }
- return err
-}*/
-
-func (db *Base) CreateIndexSql(tableName string, index *Index) string {
- quote := db.dialect.Quote
- var unique string
- var idxName string
- if index.Type == UniqueType {
- unique = " UNIQUE"
- }
- idxName = index.XName(tableName)
- return fmt.Sprintf("CREATE%s INDEX %v ON %v (%v)", unique,
- quote(idxName), quote(tableName),
- quote(strings.Join(index.Cols, quote(","))))
-}
-
-func (db *Base) DropIndexSql(tableName string, index *Index) string {
- quote := db.dialect.Quote
- var name string
- if index.IsRegular {
- name = index.XName(tableName)
- } else {
- name = index.Name
- }
- return fmt.Sprintf("DROP INDEX %v ON %s", quote(name), quote(tableName))
-}
-
-func (db *Base) ModifyColumnSql(tableName string, col *Column) string {
- return fmt.Sprintf("alter table %s MODIFY COLUMN %s", tableName, col.StringNoPk(db.dialect))
-}
-
-func (b *Base) CreateTableSql(table *Table, tableName, storeEngine, charset string) string {
- var sql string
- sql = "CREATE TABLE IF NOT EXISTS "
- if tableName == "" {
- tableName = table.Name
- }
-
- sql += b.dialect.Quote(tableName)
- sql += " ("
-
- if len(table.ColumnsSeq()) > 0 {
- pkList := table.PrimaryKeys
-
- for _, colName := range table.ColumnsSeq() {
- col := table.GetColumn(colName)
- if col.IsPrimaryKey && len(pkList) == 1 {
- sql += col.String(b.dialect)
- } else {
- sql += col.StringNoPk(b.dialect)
- }
- sql = strings.TrimSpace(sql)
- if b.DriverName() == MYSQL && len(col.Comment) > 0 {
- sql += " COMMENT '" + col.Comment + "'"
- }
- sql += ", "
- }
-
- if len(pkList) > 1 {
- sql += "PRIMARY KEY ( "
- sql += b.dialect.Quote(strings.Join(pkList, b.dialect.Quote(",")))
- sql += " ), "
- }
-
- sql = sql[:len(sql)-2]
- }
- sql += ")"
-
- if b.dialect.SupportEngine() && storeEngine != "" {
- sql += " ENGINE=" + storeEngine
- }
- if b.dialect.SupportCharset() {
- if len(charset) == 0 {
- charset = b.dialect.URI().Charset
- }
- if len(charset) > 0 {
- sql += " DEFAULT CHARSET " + charset
- }
- }
-
- return sql
-}
-
-func (b *Base) ForUpdateSql(query string) string {
- return query + " FOR UPDATE"
-}
-
-func (b *Base) LogSQL(sql string, args []interface{}) {
- if b.logger != nil && b.logger.IsShowSQL() {
- if len(args) > 0 {
- b.logger.Infof("[SQL] %v %v", sql, args)
- } else {
- b.logger.Infof("[SQL] %v", sql)
- }
- }
-}
-
-func (b *Base) SetParams(params map[string]string) {
-}
-
-var (
- dialects = map[string]func() Dialect{}
-)
-
-// RegisterDialect register database dialect
-func RegisterDialect(dbName DbType, dialectFunc func() Dialect) {
- if dialectFunc == nil {
- panic("core: Register dialect is nil")
- }
- dialects[strings.ToLower(string(dbName))] = dialectFunc // !nashtsai! allow override dialect
-}
-
-// QueryDialect query if registed database dialect
-func QueryDialect(dbName DbType) Dialect {
- if d, ok := dialects[strings.ToLower(string(dbName))]; ok {
- return d()
- }
- return nil
-}
diff --git a/vendor/github.com/go-xorm/core/driver.go b/vendor/github.com/go-xorm/core/driver.go
deleted file mode 100644
index 0f1020b403..0000000000
--- a/vendor/github.com/go-xorm/core/driver.go
+++ /dev/null
@@ -1,27 +0,0 @@
-package core
-
-type Driver interface {
- Parse(string, string) (*Uri, error)
-}
-
-var (
- drivers = map[string]Driver{}
-)
-
-func RegisterDriver(driverName string, driver Driver) {
- if driver == nil {
- panic("core: Register driver is nil")
- }
- if _, dup := drivers[driverName]; dup {
- panic("core: Register called twice for driver " + driverName)
- }
- drivers[driverName] = driver
-}
-
-func QueryDriver(driverName string) Driver {
- return drivers[driverName]
-}
-
-func RegisteredDriverSize() int {
- return len(drivers)
-}
diff --git a/vendor/github.com/go-xorm/core/error.go b/vendor/github.com/go-xorm/core/error.go
deleted file mode 100644
index 640e6036e6..0000000000
--- a/vendor/github.com/go-xorm/core/error.go
+++ /dev/null
@@ -1,8 +0,0 @@
-package core
-
-import "errors"
-
-var (
- ErrNoMapPointer = errors.New("mp should be a map's pointer")
- ErrNoStructPointer = errors.New("mp should be a struct's pointer")
-)
diff --git a/vendor/github.com/go-xorm/core/filter.go b/vendor/github.com/go-xorm/core/filter.go
deleted file mode 100644
index 35b0ece676..0000000000
--- a/vendor/github.com/go-xorm/core/filter.go
+++ /dev/null
@@ -1,64 +0,0 @@
-package core
-
-import (
- "fmt"
- "strings"
-)
-
-// Filter is an interface to filter SQL
-type Filter interface {
- Do(sql string, dialect Dialect, table *Table) string
-}
-
-// QuoteFilter filter SQL replace ` to database's own quote character
-type QuoteFilter struct {
-}
-
-func (s *QuoteFilter) Do(sql string, dialect Dialect, table *Table) string {
- return strings.Replace(sql, "`", dialect.QuoteStr(), -1)
-}
-
-// IdFilter filter SQL replace (id) to primary key column name
-type IdFilter struct {
-}
-
-type Quoter struct {
- dialect Dialect
-}
-
-func NewQuoter(dialect Dialect) *Quoter {
- return &Quoter{dialect}
-}
-
-func (q *Quoter) Quote(content string) string {
- return q.dialect.QuoteStr() + content + q.dialect.QuoteStr()
-}
-
-func (i *IdFilter) Do(sql string, dialect Dialect, table *Table) string {
- quoter := NewQuoter(dialect)
- if table != nil && len(table.PrimaryKeys) == 1 {
- sql = strings.Replace(sql, " `(id)` ", " "+quoter.Quote(table.PrimaryKeys[0])+" ", -1)
- sql = strings.Replace(sql, " "+quoter.Quote("(id)")+" ", " "+quoter.Quote(table.PrimaryKeys[0])+" ", -1)
- return strings.Replace(sql, " (id) ", " "+quoter.Quote(table.PrimaryKeys[0])+" ", -1)
- }
- return sql
-}
-
-// SeqFilter filter SQL replace ?, ? ... to $1, $2 ...
-type SeqFilter struct {
- Prefix string
- Start int
-}
-
-func (s *SeqFilter) Do(sql string, dialect Dialect, table *Table) string {
- segs := strings.Split(sql, "?")
- size := len(segs)
- res := ""
- for i, c := range segs {
- if i < size-1 {
- res += c + fmt.Sprintf("%s%v", s.Prefix, i+s.Start)
- }
- }
- res += segs[size-1]
- return res
-}
diff --git a/vendor/github.com/go-xorm/core/go.mod b/vendor/github.com/go-xorm/core/go.mod
deleted file mode 100644
index 70c86bcbc8..0000000000
--- a/vendor/github.com/go-xorm/core/go.mod
+++ /dev/null
@@ -1 +0,0 @@
-module "github.com/go-xorm/core"
diff --git a/vendor/github.com/go-xorm/core/ilogger.go b/vendor/github.com/go-xorm/core/ilogger.go
deleted file mode 100644
index c8d7849605..0000000000
--- a/vendor/github.com/go-xorm/core/ilogger.go
+++ /dev/null
@@ -1,31 +0,0 @@
-package core
-
-type LogLevel int
-
-const (
- // !nashtsai! following level also match syslog.Priority value
- LOG_DEBUG LogLevel = iota
- LOG_INFO
- LOG_WARNING
- LOG_ERR
- LOG_OFF
- LOG_UNKNOWN
-)
-
-// logger interface
-type ILogger interface {
- Debug(v ...interface{})
- Debugf(format string, v ...interface{})
- Error(v ...interface{})
- Errorf(format string, v ...interface{})
- Info(v ...interface{})
- Infof(format string, v ...interface{})
- Warn(v ...interface{})
- Warnf(format string, v ...interface{})
-
- Level() LogLevel
- SetLevel(l LogLevel)
-
- ShowSQL(show ...bool)
- IsShowSQL() bool
-}
diff --git a/vendor/github.com/go-xorm/core/index.go b/vendor/github.com/go-xorm/core/index.go
deleted file mode 100644
index 9aa1b7ac99..0000000000
--- a/vendor/github.com/go-xorm/core/index.go
+++ /dev/null
@@ -1,63 +0,0 @@
-package core
-
-import (
- "fmt"
- "sort"
- "strings"
-)
-
-const (
- IndexType = iota + 1
- UniqueType
-)
-
-// database index
-type Index struct {
- IsRegular bool
- Name string
- Type int
- Cols []string
-}
-
-func (index *Index) XName(tableName string) string {
- if !strings.HasPrefix(index.Name, "UQE_") &&
- !strings.HasPrefix(index.Name, "IDX_") {
- tableName = strings.Replace(tableName, `"`, "", -1)
- tableName = strings.Replace(tableName, `.`, "_", -1)
- if index.Type == UniqueType {
- return fmt.Sprintf("UQE_%v_%v", tableName, index.Name)
- }
- return fmt.Sprintf("IDX_%v_%v", tableName, index.Name)
- }
- return index.Name
-}
-
-// add columns which will be composite index
-func (index *Index) AddColumn(cols ...string) {
- for _, col := range cols {
- index.Cols = append(index.Cols, col)
- }
-}
-
-func (index *Index) Equal(dst *Index) bool {
- if index.Type != dst.Type {
- return false
- }
- if len(index.Cols) != len(dst.Cols) {
- return false
- }
- sort.StringSlice(index.Cols).Sort()
- sort.StringSlice(dst.Cols).Sort()
-
- for i := 0; i < len(index.Cols); i++ {
- if index.Cols[i] != dst.Cols[i] {
- return false
- }
- }
- return true
-}
-
-// new an index
-func NewIndex(name string, indexType int) *Index {
- return &Index{true, name, indexType, make([]string, 0)}
-}
diff --git a/vendor/github.com/go-xorm/core/mapper.go b/vendor/github.com/go-xorm/core/mapper.go
deleted file mode 100644
index bb72a15662..0000000000
--- a/vendor/github.com/go-xorm/core/mapper.go
+++ /dev/null
@@ -1,254 +0,0 @@
-package core
-
-import (
- "strings"
- "sync"
-)
-
-// name translation between struct, fields names and table, column names
-type IMapper interface {
- Obj2Table(string) string
- Table2Obj(string) string
-}
-
-type CacheMapper struct {
- oriMapper IMapper
- obj2tableCache map[string]string
- obj2tableMutex sync.RWMutex
- table2objCache map[string]string
- table2objMutex sync.RWMutex
-}
-
-func NewCacheMapper(mapper IMapper) *CacheMapper {
- return &CacheMapper{oriMapper: mapper, obj2tableCache: make(map[string]string),
- table2objCache: make(map[string]string),
- }
-}
-
-func (m *CacheMapper) Obj2Table(o string) string {
- m.obj2tableMutex.RLock()
- t, ok := m.obj2tableCache[o]
- m.obj2tableMutex.RUnlock()
- if ok {
- return t
- }
-
- t = m.oriMapper.Obj2Table(o)
- m.obj2tableMutex.Lock()
- m.obj2tableCache[o] = t
- m.obj2tableMutex.Unlock()
- return t
-}
-
-func (m *CacheMapper) Table2Obj(t string) string {
- m.table2objMutex.RLock()
- o, ok := m.table2objCache[t]
- m.table2objMutex.RUnlock()
- if ok {
- return o
- }
-
- o = m.oriMapper.Table2Obj(t)
- m.table2objMutex.Lock()
- m.table2objCache[t] = o
- m.table2objMutex.Unlock()
- return o
-}
-
-// SameMapper implements IMapper and provides same name between struct and
-// database table
-type SameMapper struct {
-}
-
-func (m SameMapper) Obj2Table(o string) string {
- return o
-}
-
-func (m SameMapper) Table2Obj(t string) string {
- return t
-}
-
-// SnakeMapper implements IMapper and provides name transaltion between
-// struct and database table
-type SnakeMapper struct {
-}
-
-func snakeCasedName(name string) string {
- newstr := make([]rune, 0)
- for idx, chr := range name {
- if isUpper := 'A' <= chr && chr <= 'Z'; isUpper {
- if idx > 0 {
- newstr = append(newstr, '_')
- }
- chr -= ('A' - 'a')
- }
- newstr = append(newstr, chr)
- }
-
- return string(newstr)
-}
-
-func (mapper SnakeMapper) Obj2Table(name string) string {
- return snakeCasedName(name)
-}
-
-func titleCasedName(name string) string {
- newstr := make([]rune, 0)
- upNextChar := true
-
- name = strings.ToLower(name)
-
- for _, chr := range name {
- switch {
- case upNextChar:
- upNextChar = false
- if 'a' <= chr && chr <= 'z' {
- chr -= ('a' - 'A')
- }
- case chr == '_':
- upNextChar = true
- continue
- }
-
- newstr = append(newstr, chr)
- }
-
- return string(newstr)
-}
-
-func (mapper SnakeMapper) Table2Obj(name string) string {
- return titleCasedName(name)
-}
-
-// GonicMapper implements IMapper. It will consider initialisms when mapping names.
-// E.g. id -> ID, user -> User and to table names: UserID -> user_id, MyUID -> my_uid
-type GonicMapper map[string]bool
-
-func isASCIIUpper(r rune) bool {
- return 'A' <= r && r <= 'Z'
-}
-
-func toASCIIUpper(r rune) rune {
- if 'a' <= r && r <= 'z' {
- r -= ('a' - 'A')
- }
- return r
-}
-
-func gonicCasedName(name string) string {
- newstr := make([]rune, 0, len(name)+3)
- for idx, chr := range name {
- if isASCIIUpper(chr) && idx > 0 {
- if !isASCIIUpper(newstr[len(newstr)-1]) {
- newstr = append(newstr, '_')
- }
- }
-
- if !isASCIIUpper(chr) && idx > 1 {
- l := len(newstr)
- if isASCIIUpper(newstr[l-1]) && isASCIIUpper(newstr[l-2]) {
- newstr = append(newstr, newstr[l-1])
- newstr[l-1] = '_'
- }
- }
-
- newstr = append(newstr, chr)
- }
- return strings.ToLower(string(newstr))
-}
-
-func (mapper GonicMapper) Obj2Table(name string) string {
- return gonicCasedName(name)
-}
-
-func (mapper GonicMapper) Table2Obj(name string) string {
- newstr := make([]rune, 0)
-
- name = strings.ToLower(name)
- parts := strings.Split(name, "_")
-
- for _, p := range parts {
- _, isInitialism := mapper[strings.ToUpper(p)]
- for i, r := range p {
- if i == 0 || isInitialism {
- r = toASCIIUpper(r)
- }
- newstr = append(newstr, r)
- }
- }
-
- return string(newstr)
-}
-
-// A GonicMapper that contains a list of common initialisms taken from golang/lint
-var LintGonicMapper = GonicMapper{
- "API": true,
- "ASCII": true,
- "CPU": true,
- "CSS": true,
- "DNS": true,
- "EOF": true,
- "GUID": true,
- "HTML": true,
- "HTTP": true,
- "HTTPS": true,
- "ID": true,
- "IP": true,
- "JSON": true,
- "LHS": true,
- "QPS": true,
- "RAM": true,
- "RHS": true,
- "RPC": true,
- "SLA": true,
- "SMTP": true,
- "SSH": true,
- "TLS": true,
- "TTL": true,
- "UI": true,
- "UID": true,
- "UUID": true,
- "URI": true,
- "URL": true,
- "UTF8": true,
- "VM": true,
- "XML": true,
- "XSRF": true,
- "XSS": true,
-}
-
-// provide prefix table name support
-type PrefixMapper struct {
- Mapper IMapper
- Prefix string
-}
-
-func (mapper PrefixMapper) Obj2Table(name string) string {
- return mapper.Prefix + mapper.Mapper.Obj2Table(name)
-}
-
-func (mapper PrefixMapper) Table2Obj(name string) string {
- return mapper.Mapper.Table2Obj(name[len(mapper.Prefix):])
-}
-
-func NewPrefixMapper(mapper IMapper, prefix string) PrefixMapper {
- return PrefixMapper{mapper, prefix}
-}
-
-// provide suffix table name support
-type SuffixMapper struct {
- Mapper IMapper
- Suffix string
-}
-
-func (mapper SuffixMapper) Obj2Table(name string) string {
- return mapper.Mapper.Obj2Table(name) + mapper.Suffix
-}
-
-func (mapper SuffixMapper) Table2Obj(name string) string {
- return mapper.Mapper.Table2Obj(name[:len(name)-len(mapper.Suffix)])
-}
-
-func NewSuffixMapper(mapper IMapper, suffix string) SuffixMapper {
- return SuffixMapper{mapper, suffix}
-}
diff --git a/vendor/github.com/go-xorm/core/pk.go b/vendor/github.com/go-xorm/core/pk.go
deleted file mode 100644
index 1810dd944b..0000000000
--- a/vendor/github.com/go-xorm/core/pk.go
+++ /dev/null
@@ -1,26 +0,0 @@
-package core
-
-import (
- "bytes"
- "encoding/gob"
-)
-
-type PK []interface{}
-
-func NewPK(pks ...interface{}) *PK {
- p := PK(pks)
- return &p
-}
-
-func (p *PK) ToString() (string, error) {
- buf := new(bytes.Buffer)
- enc := gob.NewEncoder(buf)
- err := enc.Encode(*p)
- return buf.String(), err
-}
-
-func (p *PK) FromString(content string) error {
- dec := gob.NewDecoder(bytes.NewBufferString(content))
- err := dec.Decode(p)
- return err
-}
diff --git a/vendor/github.com/go-xorm/core/rows.go b/vendor/github.com/go-xorm/core/rows.go
deleted file mode 100644
index 580de4f9c6..0000000000
--- a/vendor/github.com/go-xorm/core/rows.go
+++ /dev/null
@@ -1,334 +0,0 @@
-package core
-
-import (
- "database/sql"
- "errors"
- "reflect"
- "sync"
-)
-
-type Rows struct {
- *sql.Rows
- db *DB
-}
-
-func (rs *Rows) ToMapString() ([]map[string]string, error) {
- cols, err := rs.Columns()
- if err != nil {
- return nil, err
- }
-
- var results = make([]map[string]string, 0, 10)
- for rs.Next() {
- var record = make(map[string]string, len(cols))
- err = rs.ScanMap(&record)
- if err != nil {
- return nil, err
- }
- results = append(results, record)
- }
- return results, nil
-}
-
-// scan data to a struct's pointer according field index
-func (rs *Rows) ScanStructByIndex(dest ...interface{}) error {
- if len(dest) == 0 {
- return errors.New("at least one struct")
- }
-
- vvvs := make([]reflect.Value, len(dest))
- for i, s := range dest {
- vv := reflect.ValueOf(s)
- if vv.Kind() != reflect.Ptr || vv.Elem().Kind() != reflect.Struct {
- return errors.New("dest should be a struct's pointer")
- }
-
- vvvs[i] = vv.Elem()
- }
-
- cols, err := rs.Columns()
- if err != nil {
- return err
- }
- newDest := make([]interface{}, len(cols))
-
- var i = 0
- for _, vvv := range vvvs {
- for j := 0; j < vvv.NumField(); j++ {
- newDest[i] = vvv.Field(j).Addr().Interface()
- i = i + 1
- }
- }
-
- return rs.Rows.Scan(newDest...)
-}
-
-var (
- fieldCache = make(map[reflect.Type]map[string]int)
- fieldCacheMutex sync.RWMutex
-)
-
-func fieldByName(v reflect.Value, name string) reflect.Value {
- t := v.Type()
- fieldCacheMutex.RLock()
- cache, ok := fieldCache[t]
- fieldCacheMutex.RUnlock()
- if !ok {
- cache = make(map[string]int)
- for i := 0; i < v.NumField(); i++ {
- cache[t.Field(i).Name] = i
- }
- fieldCacheMutex.Lock()
- fieldCache[t] = cache
- fieldCacheMutex.Unlock()
- }
-
- if i, ok := cache[name]; ok {
- return v.Field(i)
- }
-
- return reflect.Zero(t)
-}
-
-// scan data to a struct's pointer according field name
-func (rs *Rows) ScanStructByName(dest interface{}) error {
- vv := reflect.ValueOf(dest)
- if vv.Kind() != reflect.Ptr || vv.Elem().Kind() != reflect.Struct {
- return errors.New("dest should be a struct's pointer")
- }
-
- cols, err := rs.Columns()
- if err != nil {
- return err
- }
-
- newDest := make([]interface{}, len(cols))
- var v EmptyScanner
- for j, name := range cols {
- f := fieldByName(vv.Elem(), rs.db.Mapper.Table2Obj(name))
- if f.IsValid() {
- newDest[j] = f.Addr().Interface()
- } else {
- newDest[j] = &v
- }
- }
-
- return rs.Rows.Scan(newDest...)
-}
-
-// scan data to a slice's pointer, slice's length should equal to columns' number
-func (rs *Rows) ScanSlice(dest interface{}) error {
- vv := reflect.ValueOf(dest)
- if vv.Kind() != reflect.Ptr || vv.Elem().Kind() != reflect.Slice {
- return errors.New("dest should be a slice's pointer")
- }
-
- vvv := vv.Elem()
- cols, err := rs.Columns()
- if err != nil {
- return err
- }
-
- newDest := make([]interface{}, len(cols))
-
- for j := 0; j < len(cols); j++ {
- if j >= vvv.Len() {
- newDest[j] = reflect.New(vvv.Type().Elem()).Interface()
- } else {
- newDest[j] = vvv.Index(j).Addr().Interface()
- }
- }
-
- err = rs.Rows.Scan(newDest...)
- if err != nil {
- return err
- }
-
- srcLen := vvv.Len()
- for i := srcLen; i < len(cols); i++ {
- vvv = reflect.Append(vvv, reflect.ValueOf(newDest[i]).Elem())
- }
- return nil
-}
-
-// scan data to a map's pointer
-func (rs *Rows) ScanMap(dest interface{}) error {
- vv := reflect.ValueOf(dest)
- if vv.Kind() != reflect.Ptr || vv.Elem().Kind() != reflect.Map {
- return errors.New("dest should be a map's pointer")
- }
-
- cols, err := rs.Columns()
- if err != nil {
- return err
- }
-
- newDest := make([]interface{}, len(cols))
- vvv := vv.Elem()
-
- for i, _ := range cols {
- newDest[i] = rs.db.reflectNew(vvv.Type().Elem()).Interface()
- }
-
- err = rs.Rows.Scan(newDest...)
- if err != nil {
- return err
- }
-
- for i, name := range cols {
- vname := reflect.ValueOf(name)
- vvv.SetMapIndex(vname, reflect.ValueOf(newDest[i]).Elem())
- }
-
- return nil
-}
-
-type Row struct {
- rows *Rows
- // One of these two will be non-nil:
- err error // deferred error for easy chaining
-}
-
-// ErrorRow return an error row
-func ErrorRow(err error) *Row {
- return &Row{
- err: err,
- }
-}
-
-// NewRow from rows
-func NewRow(rows *Rows, err error) *Row {
- return &Row{rows, err}
-}
-
-func (row *Row) Columns() ([]string, error) {
- if row.err != nil {
- return nil, row.err
- }
- return row.rows.Columns()
-}
-
-func (row *Row) Scan(dest ...interface{}) error {
- if row.err != nil {
- return row.err
- }
- defer row.rows.Close()
-
- for _, dp := range dest {
- if _, ok := dp.(*sql.RawBytes); ok {
- return errors.New("sql: RawBytes isn't allowed on Row.Scan")
- }
- }
-
- if !row.rows.Next() {
- if err := row.rows.Err(); err != nil {
- return err
- }
- return sql.ErrNoRows
- }
- err := row.rows.Scan(dest...)
- if err != nil {
- return err
- }
- // Make sure the query can be processed to completion with no errors.
- return row.rows.Close()
-}
-
-func (row *Row) ScanStructByName(dest interface{}) error {
- if row.err != nil {
- return row.err
- }
- defer row.rows.Close()
-
- if !row.rows.Next() {
- if err := row.rows.Err(); err != nil {
- return err
- }
- return sql.ErrNoRows
- }
- err := row.rows.ScanStructByName(dest)
- if err != nil {
- return err
- }
- // Make sure the query can be processed to completion with no errors.
- return row.rows.Close()
-}
-
-func (row *Row) ScanStructByIndex(dest interface{}) error {
- if row.err != nil {
- return row.err
- }
- defer row.rows.Close()
-
- if !row.rows.Next() {
- if err := row.rows.Err(); err != nil {
- return err
- }
- return sql.ErrNoRows
- }
- err := row.rows.ScanStructByIndex(dest)
- if err != nil {
- return err
- }
- // Make sure the query can be processed to completion with no errors.
- return row.rows.Close()
-}
-
-// scan data to a slice's pointer, slice's length should equal to columns' number
-func (row *Row) ScanSlice(dest interface{}) error {
- if row.err != nil {
- return row.err
- }
- defer row.rows.Close()
-
- if !row.rows.Next() {
- if err := row.rows.Err(); err != nil {
- return err
- }
- return sql.ErrNoRows
- }
- err := row.rows.ScanSlice(dest)
- if err != nil {
- return err
- }
-
- // Make sure the query can be processed to completion with no errors.
- return row.rows.Close()
-}
-
-// scan data to a map's pointer
-func (row *Row) ScanMap(dest interface{}) error {
- if row.err != nil {
- return row.err
- }
- defer row.rows.Close()
-
- if !row.rows.Next() {
- if err := row.rows.Err(); err != nil {
- return err
- }
- return sql.ErrNoRows
- }
- err := row.rows.ScanMap(dest)
- if err != nil {
- return err
- }
-
- // Make sure the query can be processed to completion with no errors.
- return row.rows.Close()
-}
-
-func (row *Row) ToMapString() (map[string]string, error) {
- cols, err := row.Columns()
- if err != nil {
- return nil, err
- }
-
- var record = make(map[string]string, len(cols))
- err = row.ScanMap(&record)
- if err != nil {
- return nil, err
- }
-
- return record, nil
-}
diff --git a/vendor/github.com/go-xorm/core/scan.go b/vendor/github.com/go-xorm/core/scan.go
deleted file mode 100644
index b7c159b274..0000000000
--- a/vendor/github.com/go-xorm/core/scan.go
+++ /dev/null
@@ -1,55 +0,0 @@
-package core
-
-import (
- "database/sql/driver"
- "fmt"
- "time"
-)
-
-type NullTime time.Time
-
-var (
- _ driver.Valuer = NullTime{}
-)
-
-func (ns *NullTime) Scan(value interface{}) error {
- if value == nil {
- return nil
- }
- return convertTime(ns, value)
-}
-
-// Value implements the driver Valuer interface.
-func (ns NullTime) Value() (driver.Value, error) {
- if (time.Time)(ns).IsZero() {
- return nil, nil
- }
- return (time.Time)(ns).Format("2006-01-02 15:04:05"), nil
-}
-
-func convertTime(dest *NullTime, src interface{}) error {
- // Common cases, without reflect.
- switch s := src.(type) {
- case string:
- t, err := time.Parse("2006-01-02 15:04:05", s)
- if err != nil {
- return err
- }
- *dest = NullTime(t)
- return nil
- case []uint8:
- t, err := time.Parse("2006-01-02 15:04:05", string(s))
- if err != nil {
- return err
- }
- *dest = NullTime(t)
- return nil
- case time.Time:
- *dest = NullTime(s)
- return nil
- case nil:
- default:
- return fmt.Errorf("unsupported driver -> Scan pair: %T -> %T", src, dest)
- }
- return nil
-}
diff --git a/vendor/github.com/go-xorm/core/table.go b/vendor/github.com/go-xorm/core/table.go
deleted file mode 100644
index b5d079404c..0000000000
--- a/vendor/github.com/go-xorm/core/table.go
+++ /dev/null
@@ -1,150 +0,0 @@
-package core
-
-import (
- "reflect"
- "strings"
-)
-
-// database table
-type Table struct {
- Name string
- Type reflect.Type
- columnsSeq []string
- columnsMap map[string][]*Column
- columns []*Column
- Indexes map[string]*Index
- PrimaryKeys []string
- AutoIncrement string
- Created map[string]bool
- Updated string
- Deleted string
- Version string
- Cacher Cacher
- StoreEngine string
- Charset string
- Comment string
-}
-
-func (table *Table) Columns() []*Column {
- return table.columns
-}
-
-func (table *Table) ColumnsSeq() []string {
- return table.columnsSeq
-}
-
-func NewEmptyTable() *Table {
- return NewTable("", nil)
-}
-
-func NewTable(name string, t reflect.Type) *Table {
- return &Table{Name: name, Type: t,
- columnsSeq: make([]string, 0),
- columns: make([]*Column, 0),
- columnsMap: make(map[string][]*Column),
- Indexes: make(map[string]*Index),
- Created: make(map[string]bool),
- PrimaryKeys: make([]string, 0),
- }
-}
-
-func (table *Table) columnsByName(name string) []*Column {
- n := len(name)
-
- for k := range table.columnsMap {
- if len(k) != n {
- continue
- }
- if strings.EqualFold(k, name) {
- return table.columnsMap[k]
- }
- }
- return nil
-}
-
-func (table *Table) GetColumn(name string) *Column {
-
- cols := table.columnsByName(name)
-
- if cols != nil {
- return cols[0]
- }
-
- return nil
-}
-
-func (table *Table) GetColumnIdx(name string, idx int) *Column {
- cols := table.columnsByName(name)
-
- if cols != nil && idx < len(cols) {
- return cols[idx]
- }
-
- return nil
-}
-
-// if has primary key, return column
-func (table *Table) PKColumns() []*Column {
- columns := make([]*Column, len(table.PrimaryKeys))
- for i, name := range table.PrimaryKeys {
- columns[i] = table.GetColumn(name)
- }
- return columns
-}
-
-func (table *Table) ColumnType(name string) reflect.Type {
- t, _ := table.Type.FieldByName(name)
- return t.Type
-}
-
-func (table *Table) AutoIncrColumn() *Column {
- return table.GetColumn(table.AutoIncrement)
-}
-
-func (table *Table) VersionColumn() *Column {
- return table.GetColumn(table.Version)
-}
-
-func (table *Table) UpdatedColumn() *Column {
- return table.GetColumn(table.Updated)
-}
-
-func (table *Table) DeletedColumn() *Column {
- return table.GetColumn(table.Deleted)
-}
-
-// add a column to table
-func (table *Table) AddColumn(col *Column) {
- table.columnsSeq = append(table.columnsSeq, col.Name)
- table.columns = append(table.columns, col)
- colName := strings.ToLower(col.Name)
- if c, ok := table.columnsMap[colName]; ok {
- table.columnsMap[colName] = append(c, col)
- } else {
- table.columnsMap[colName] = []*Column{col}
- }
-
- if col.IsPrimaryKey {
- table.PrimaryKeys = append(table.PrimaryKeys, col.Name)
- }
- if col.IsAutoIncrement {
- table.AutoIncrement = col.Name
- }
- if col.IsCreated {
- table.Created[col.Name] = true
- }
- if col.IsUpdated {
- table.Updated = col.Name
- }
- if col.IsDeleted {
- table.Deleted = col.Name
- }
- if col.IsVersion {
- table.Version = col.Name
- }
-}
-
-// add an index or an unique to table
-func (table *Table) AddIndex(index *Index) {
- table.Indexes[index.Name] = index
-}
diff --git a/vendor/github.com/go-xorm/core/type.go b/vendor/github.com/go-xorm/core/type.go
deleted file mode 100644
index 5cbf930573..0000000000
--- a/vendor/github.com/go-xorm/core/type.go
+++ /dev/null
@@ -1,311 +0,0 @@
-package core
-
-import (
- "reflect"
- "sort"
- "strings"
- "time"
-)
-
-const (
- POSTGRES = "postgres"
- SQLITE = "sqlite3"
- MYSQL = "mysql"
- MSSQL = "mssql"
- ORACLE = "oracle"
-)
-
-// xorm SQL types
-type SQLType struct {
- Name string
- DefaultLength int
- DefaultLength2 int
-}
-
-const (
- UNKNOW_TYPE = iota
- TEXT_TYPE
- BLOB_TYPE
- TIME_TYPE
- NUMERIC_TYPE
-)
-
-func (s *SQLType) IsType(st int) bool {
- if t, ok := SqlTypes[s.Name]; ok && t == st {
- return true
- }
- return false
-}
-
-func (s *SQLType) IsText() bool {
- return s.IsType(TEXT_TYPE)
-}
-
-func (s *SQLType) IsBlob() bool {
- return s.IsType(BLOB_TYPE)
-}
-
-func (s *SQLType) IsTime() bool {
- return s.IsType(TIME_TYPE)
-}
-
-func (s *SQLType) IsNumeric() bool {
- return s.IsType(NUMERIC_TYPE)
-}
-
-func (s *SQLType) IsJson() bool {
- return s.Name == Json || s.Name == Jsonb
-}
-
-var (
- Bit = "BIT"
- TinyInt = "TINYINT"
- SmallInt = "SMALLINT"
- MediumInt = "MEDIUMINT"
- Int = "INT"
- Integer = "INTEGER"
- BigInt = "BIGINT"
-
- Enum = "ENUM"
- Set = "SET"
-
- Char = "CHAR"
- Varchar = "VARCHAR"
- NVarchar = "NVARCHAR"
- TinyText = "TINYTEXT"
- Text = "TEXT"
- NText = "NTEXT"
- Clob = "CLOB"
- MediumText = "MEDIUMTEXT"
- LongText = "LONGTEXT"
- Uuid = "UUID"
- UniqueIdentifier = "UNIQUEIDENTIFIER"
- SysName = "SYSNAME"
-
- Date = "DATE"
- DateTime = "DATETIME"
- Time = "TIME"
- TimeStamp = "TIMESTAMP"
- TimeStampz = "TIMESTAMPZ"
-
- Decimal = "DECIMAL"
- Numeric = "NUMERIC"
-
- Real = "REAL"
- Float = "FLOAT"
- Double = "DOUBLE"
-
- Binary = "BINARY"
- VarBinary = "VARBINARY"
- TinyBlob = "TINYBLOB"
- Blob = "BLOB"
- MediumBlob = "MEDIUMBLOB"
- LongBlob = "LONGBLOB"
- Bytea = "BYTEA"
-
- Bool = "BOOL"
- Boolean = "BOOLEAN"
-
- Serial = "SERIAL"
- BigSerial = "BIGSERIAL"
-
- Json = "JSON"
- Jsonb = "JSONB"
-
- SqlTypes = map[string]int{
- Bit: NUMERIC_TYPE,
- TinyInt: NUMERIC_TYPE,
- SmallInt: NUMERIC_TYPE,
- MediumInt: NUMERIC_TYPE,
- Int: NUMERIC_TYPE,
- Integer: NUMERIC_TYPE,
- BigInt: NUMERIC_TYPE,
-
- Enum: TEXT_TYPE,
- Set: TEXT_TYPE,
- Json: TEXT_TYPE,
- Jsonb: TEXT_TYPE,
-
- Char: TEXT_TYPE,
- Varchar: TEXT_TYPE,
- NVarchar: TEXT_TYPE,
- TinyText: TEXT_TYPE,
- Text: TEXT_TYPE,
- NText: TEXT_TYPE,
- MediumText: TEXT_TYPE,
- LongText: TEXT_TYPE,
- Uuid: TEXT_TYPE,
- Clob: TEXT_TYPE,
- SysName: TEXT_TYPE,
-
- Date: TIME_TYPE,
- DateTime: TIME_TYPE,
- Time: TIME_TYPE,
- TimeStamp: TIME_TYPE,
- TimeStampz: TIME_TYPE,
-
- Decimal: NUMERIC_TYPE,
- Numeric: NUMERIC_TYPE,
- Real: NUMERIC_TYPE,
- Float: NUMERIC_TYPE,
- Double: NUMERIC_TYPE,
-
- Binary: BLOB_TYPE,
- VarBinary: BLOB_TYPE,
-
- TinyBlob: BLOB_TYPE,
- Blob: BLOB_TYPE,
- MediumBlob: BLOB_TYPE,
- LongBlob: BLOB_TYPE,
- Bytea: BLOB_TYPE,
- UniqueIdentifier: BLOB_TYPE,
-
- Bool: NUMERIC_TYPE,
-
- Serial: NUMERIC_TYPE,
- BigSerial: NUMERIC_TYPE,
- }
-
- intTypes = sort.StringSlice{"*int", "*int16", "*int32", "*int8"}
- uintTypes = sort.StringSlice{"*uint", "*uint16", "*uint32", "*uint8"}
-)
-
-// !nashtsai! treat following var as interal const values, these are used for reflect.TypeOf comparison
-var (
- c_EMPTY_STRING string
- c_BOOL_DEFAULT bool
- c_BYTE_DEFAULT byte
- c_COMPLEX64_DEFAULT complex64
- c_COMPLEX128_DEFAULT complex128
- c_FLOAT32_DEFAULT float32
- c_FLOAT64_DEFAULT float64
- c_INT64_DEFAULT int64
- c_UINT64_DEFAULT uint64
- c_INT32_DEFAULT int32
- c_UINT32_DEFAULT uint32
- c_INT16_DEFAULT int16
- c_UINT16_DEFAULT uint16
- c_INT8_DEFAULT int8
- c_UINT8_DEFAULT uint8
- c_INT_DEFAULT int
- c_UINT_DEFAULT uint
- c_TIME_DEFAULT time.Time
-)
-
-var (
- IntType = reflect.TypeOf(c_INT_DEFAULT)
- Int8Type = reflect.TypeOf(c_INT8_DEFAULT)
- Int16Type = reflect.TypeOf(c_INT16_DEFAULT)
- Int32Type = reflect.TypeOf(c_INT32_DEFAULT)
- Int64Type = reflect.TypeOf(c_INT64_DEFAULT)
-
- UintType = reflect.TypeOf(c_UINT_DEFAULT)
- Uint8Type = reflect.TypeOf(c_UINT8_DEFAULT)
- Uint16Type = reflect.TypeOf(c_UINT16_DEFAULT)
- Uint32Type = reflect.TypeOf(c_UINT32_DEFAULT)
- Uint64Type = reflect.TypeOf(c_UINT64_DEFAULT)
-
- Float32Type = reflect.TypeOf(c_FLOAT32_DEFAULT)
- Float64Type = reflect.TypeOf(c_FLOAT64_DEFAULT)
-
- Complex64Type = reflect.TypeOf(c_COMPLEX64_DEFAULT)
- Complex128Type = reflect.TypeOf(c_COMPLEX128_DEFAULT)
-
- StringType = reflect.TypeOf(c_EMPTY_STRING)
- BoolType = reflect.TypeOf(c_BOOL_DEFAULT)
- ByteType = reflect.TypeOf(c_BYTE_DEFAULT)
- BytesType = reflect.SliceOf(ByteType)
-
- TimeType = reflect.TypeOf(c_TIME_DEFAULT)
-)
-
-var (
- PtrIntType = reflect.PtrTo(IntType)
- PtrInt8Type = reflect.PtrTo(Int8Type)
- PtrInt16Type = reflect.PtrTo(Int16Type)
- PtrInt32Type = reflect.PtrTo(Int32Type)
- PtrInt64Type = reflect.PtrTo(Int64Type)
-
- PtrUintType = reflect.PtrTo(UintType)
- PtrUint8Type = reflect.PtrTo(Uint8Type)
- PtrUint16Type = reflect.PtrTo(Uint16Type)
- PtrUint32Type = reflect.PtrTo(Uint32Type)
- PtrUint64Type = reflect.PtrTo(Uint64Type)
-
- PtrFloat32Type = reflect.PtrTo(Float32Type)
- PtrFloat64Type = reflect.PtrTo(Float64Type)
-
- PtrComplex64Type = reflect.PtrTo(Complex64Type)
- PtrComplex128Type = reflect.PtrTo(Complex128Type)
-
- PtrStringType = reflect.PtrTo(StringType)
- PtrBoolType = reflect.PtrTo(BoolType)
- PtrByteType = reflect.PtrTo(ByteType)
-
- PtrTimeType = reflect.PtrTo(TimeType)
-)
-
-// Type2SQLType generate SQLType acorrding Go's type
-func Type2SQLType(t reflect.Type) (st SQLType) {
- switch k := t.Kind(); k {
- case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32:
- st = SQLType{Int, 0, 0}
- case reflect.Int64, reflect.Uint64:
- st = SQLType{BigInt, 0, 0}
- case reflect.Float32:
- st = SQLType{Float, 0, 0}
- case reflect.Float64:
- st = SQLType{Double, 0, 0}
- case reflect.Complex64, reflect.Complex128:
- st = SQLType{Varchar, 64, 0}
- case reflect.Array, reflect.Slice, reflect.Map:
- if t.Elem() == reflect.TypeOf(c_BYTE_DEFAULT) {
- st = SQLType{Blob, 0, 0}
- } else {
- st = SQLType{Text, 0, 0}
- }
- case reflect.Bool:
- st = SQLType{Bool, 0, 0}
- case reflect.String:
- st = SQLType{Varchar, 255, 0}
- case reflect.Struct:
- if t.ConvertibleTo(TimeType) {
- st = SQLType{DateTime, 0, 0}
- } else {
- // TODO need to handle association struct
- st = SQLType{Text, 0, 0}
- }
- case reflect.Ptr:
- st = Type2SQLType(t.Elem())
- default:
- st = SQLType{Text, 0, 0}
- }
- return
-}
-
-// default sql type change to go types
-func SQLType2Type(st SQLType) reflect.Type {
- name := strings.ToUpper(st.Name)
- switch name {
- case Bit, TinyInt, SmallInt, MediumInt, Int, Integer, Serial:
- return reflect.TypeOf(1)
- case BigInt, BigSerial:
- return reflect.TypeOf(int64(1))
- case Float, Real:
- return reflect.TypeOf(float32(1))
- case Double:
- return reflect.TypeOf(float64(1))
- case Char, Varchar, NVarchar, TinyText, Text, NText, MediumText, LongText, Enum, Set, Uuid, Clob, SysName:
- return reflect.TypeOf("")
- case TinyBlob, Blob, LongBlob, Bytea, Binary, MediumBlob, VarBinary, UniqueIdentifier:
- return reflect.TypeOf([]byte{})
- case Bool:
- return reflect.TypeOf(true)
- case DateTime, Date, Time, TimeStamp, TimeStampz:
- return reflect.TypeOf(c_TIME_DEFAULT)
- case Decimal, Numeric:
- return reflect.TypeOf("")
- default:
- return reflect.TypeOf("")
- }
-}
diff --git a/vendor/github.com/go-xorm/xorm/.drone.yml b/vendor/github.com/go-xorm/xorm/.drone.yml
index 0a79ed0216..df9d405bc2 100644
--- a/vendor/github.com/go-xorm/xorm/.drone.yml
+++ b/vendor/github.com/go-xorm/xorm/.drone.yml
@@ -59,8 +59,8 @@ pipeline:
image: golang:${GO_VERSION}
commands:
- go get -t -d -v ./...
- - go get -u github.com/go-xorm/core
- - go get -u github.com/go-xorm/builder
+ - go get -u xorm.io/core
+ - go get -u xorm.io/builder
- go build -v
when:
event: [ push, pull_request ]
diff --git a/vendor/github.com/go-xorm/xorm/README.md b/vendor/github.com/go-xorm/xorm/README.md
index 6a57606e7f..2b839d520f 100644
--- a/vendor/github.com/go-xorm/xorm/README.md
+++ b/vendor/github.com/go-xorm/xorm/README.md
@@ -28,7 +28,7 @@ Xorm is a simple and powerful ORM for Go.
* Optimistic Locking support
-* SQL Builder support via [github.com/go-xorm/builder](https://github.com/go-xorm/builder)
+* SQL Builder support via [xorm.io/builder](https://xorm.io/builder)
* Automatical Read/Write seperatelly
@@ -151,20 +151,20 @@ has, err := engine.Where("name = ?", name).Desc("id").Get(&user)
// SELECT * FROM user WHERE name = ? ORDER BY id DESC LIMIT 1
var name string
-has, err := engine.Where("id = ?", id).Cols("name").Get(&name)
+has, err := engine.Table(&user).Where("id = ?", id).Cols("name").Get(&name)
// SELECT name FROM user WHERE id = ?
var id int64
-has, err := engine.Where("name = ?", name).Cols("id").Get(&id)
+has, err := engine.Table(&user).Where("name = ?", name).Cols("id").Get(&id)
has, err := engine.SQL("select id from user").Get(&id)
// SELECT id FROM user WHERE name = ?
var valuesMap = make(map[string]string)
-has, err := engine.Where("id = ?", id).Get(&valuesMap)
+has, err := engine.Table(&user).Where("id = ?", id).Get(&valuesMap)
// SELECT * FROM user WHERE id = ?
var valuesSlice = make([]interface{}, len(cols))
-has, err := engine.Where("id = ?", id).Cols(cols...).Get(&valuesSlice)
+has, err := engine.Table(&user).Where("id = ?", id).Cols(cols...).Get(&valuesSlice)
// SELECT col1, col2, col3 FROM user WHERE id = ?
```
@@ -363,7 +363,7 @@ return session.Commit()
* Or you can use `Transaction` to replace above codes.
```Go
-res, err := engine.Transaction(func(sess *xorm.Session) (interface{}, error) {
+res, err := engine.Transaction(func(session *xorm.Session) (interface{}, error) {
user1 := Userinfo{Username: "xiaoxiao", Departname: "dev", Alias: "lunny", Created: time.Now()}
if _, err := session.Insert(&user1); err != nil {
return nil, err
@@ -493,4 +493,4 @@ Support this project by becoming a sponsor. Your logo will show up here with a l
## LICENSE
-BSD License [http://creativecommons.org/licenses/BSD/](http://creativecommons.org/licenses/BSD/) \ No newline at end of file
+BSD License [http://creativecommons.org/licenses/BSD/](http://creativecommons.org/licenses/BSD/)
diff --git a/vendor/github.com/go-xorm/xorm/README_CN.md b/vendor/github.com/go-xorm/xorm/README_CN.md
index e2ed95b62c..0cec6ed5c6 100644
--- a/vendor/github.com/go-xorm/xorm/README_CN.md
+++ b/vendor/github.com/go-xorm/xorm/README_CN.md
@@ -153,20 +153,20 @@ has, err := engine.Where("name = ?", name).Desc("id").Get(&user)
// SELECT * FROM user WHERE name = ? ORDER BY id DESC LIMIT 1
var name string
-has, err := engine.Where("id = ?", id).Cols("name").Get(&name)
+has, err := engine.Table(&user).Where("id = ?", id).Cols("name").Get(&name)
// SELECT name FROM user WHERE id = ?
var id int64
-has, err := engine.Where("name = ?", name).Cols("id").Get(&id)
+has, err := engine.Table(&user).Where("name = ?", name).Cols("id").Get(&id)
has, err := engine.SQL("select id from user").Get(&id)
// SELECT id FROM user WHERE name = ?
var valuesMap = make(map[string]string)
-has, err := engine.Where("id = ?", id).Get(&valuesMap)
+has, err := engine.Table(&user).Where("id = ?", id).Get(&valuesMap)
// SELECT * FROM user WHERE id = ?
var valuesSlice = make([]interface{}, len(cols))
-has, err := engine.Where("id = ?", id).Cols(cols...).Get(&valuesSlice)
+has, err := engine.Table(&user).Where("id = ?", id).Cols(cols...).Get(&valuesSlice)
// SELECT col1, col2, col3 FROM user WHERE id = ?
```
@@ -362,7 +362,7 @@ if _, err := session.Exec("delete from userinfo where username = ?", user2.Usern
return session.Commit()
```
-* 事物的简写方法
+* 事务的简写方法
```Go
res, err := engine.Transaction(func(session *xorm.Session) (interface{}, error) {
diff --git a/vendor/github.com/go-xorm/xorm/cache_lru.go b/vendor/github.com/go-xorm/xorm/cache_lru.go
index c9672cebe4..ab948bd28e 100644
--- a/vendor/github.com/go-xorm/xorm/cache_lru.go
+++ b/vendor/github.com/go-xorm/xorm/cache_lru.go
@@ -10,7 +10,7 @@ import (
"sync"
"time"
- "github.com/go-xorm/core"
+ "xorm.io/core"
)
// LRUCacher implments cache object facilities
diff --git a/vendor/github.com/go-xorm/xorm/cache_memory_store.go b/vendor/github.com/go-xorm/xorm/cache_memory_store.go
index 36853b19e3..0c483f4583 100644
--- a/vendor/github.com/go-xorm/xorm/cache_memory_store.go
+++ b/vendor/github.com/go-xorm/xorm/cache_memory_store.go
@@ -7,7 +7,7 @@ package xorm
import (
"sync"
- "github.com/go-xorm/core"
+ "xorm.io/core"
)
var _ core.CacheStore = NewMemoryStore()
diff --git a/vendor/github.com/go-xorm/xorm/circle.yml b/vendor/github.com/go-xorm/xorm/circle.yml
deleted file mode 100644
index 8fde316921..0000000000
--- a/vendor/github.com/go-xorm/xorm/circle.yml
+++ /dev/null
@@ -1,41 +0,0 @@
-dependencies:
- override:
- # './...' is a relative pattern which means all subdirectories
- - go get -t -d -v ./...
- - go get -t -d -v github.com/go-xorm/tests
- - go get -u github.com/go-xorm/core
- - go get -u github.com/go-xorm/builder
- - go build -v
-
-database:
- override:
- - mysql -u root -e "CREATE DATABASE xorm_test DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci"
- - mysql -u root -e "CREATE DATABASE xorm_test1 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci"
- - mysql -u root -e "CREATE DATABASE xorm_test2 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci"
- - mysql -u root -e "CREATE DATABASE xorm_test3 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci"
- - createdb -p 5432 -e -U postgres xorm_test
- - createdb -p 5432 -e -U postgres xorm_test1
- - createdb -p 5432 -e -U postgres xorm_test2
- - createdb -p 5432 -e -U postgres xorm_test3
- - psql xorm_test postgres -c "create schema xorm"
-
-test:
- override:
- # './...' is a relative pattern which means all subdirectories
- - go get -u github.com/wadey/gocovmerge
- - go test -v -race -db="sqlite3" -conn_str="./test.db" -coverprofile=coverage1-1.txt -covermode=atomic
- - go test -v -race -db="sqlite3" -conn_str="./test.db" -cache=true -coverprofile=coverage1-2.txt -covermode=atomic
- - go test -v -race -db="mysql" -conn_str="root:@/xorm_test" -coverprofile=coverage2-1.txt -covermode=atomic
- - go test -v -race -db="mysql" -conn_str="root:@/xorm_test" -cache=true -coverprofile=coverage2-2.txt -covermode=atomic
- - go test -v -race -db="mymysql" -conn_str="xorm_test/root/" -coverprofile=coverage3-1.txt -covermode=atomic
- - go test -v -race -db="mymysql" -conn_str="xorm_test/root/" -cache=true -coverprofile=coverage3-2.txt -covermode=atomic
- - go test -v -race -db="postgres" -conn_str="dbname=xorm_test sslmode=disable" -coverprofile=coverage4-1.txt -covermode=atomic
- - go test -v -race -db="postgres" -conn_str="dbname=xorm_test sslmode=disable" -cache=true -coverprofile=coverage4-2.txt -covermode=atomic
- - go test -v -race -db="postgres" -conn_str="dbname=xorm_test sslmode=disable" -schema=xorm -coverprofile=coverage5-1.txt -covermode=atomic
- - go test -v -race -db="postgres" -conn_str="dbname=xorm_test sslmode=disable" -schema=xorm -cache=true -coverprofile=coverage5-2.txt -covermode=atomic
- - gocovmerge coverage1-1.txt coverage1-2.txt coverage2-1.txt coverage2-2.txt coverage3-1.txt coverage3-2.txt coverage4-1.txt coverage4-2.txt coverage5-1.txt coverage5-2.txt > coverage.txt
- - cd /home/ubuntu/.go_workspace/src/github.com/go-xorm/tests && ./sqlite3.sh
- - cd /home/ubuntu/.go_workspace/src/github.com/go-xorm/tests && ./mysql.sh
- - cd /home/ubuntu/.go_workspace/src/github.com/go-xorm/tests && ./postgres.sh
- post:
- - bash <(curl -s https://codecov.io/bash) \ No newline at end of file
diff --git a/vendor/github.com/go-xorm/xorm/dialect_mssql.go b/vendor/github.com/go-xorm/xorm/dialect_mssql.go
index fb1247094c..3330212c12 100644
--- a/vendor/github.com/go-xorm/xorm/dialect_mssql.go
+++ b/vendor/github.com/go-xorm/xorm/dialect_mssql.go
@@ -7,10 +7,11 @@ package xorm
import (
"errors"
"fmt"
+ "net/url"
"strconv"
"strings"
- "github.com/go-xorm/core"
+ "xorm.io/core"
)
var (
@@ -544,14 +545,23 @@ type odbcDriver struct {
}
func (p *odbcDriver) Parse(driverName, dataSourceName string) (*core.Uri, error) {
- kv := strings.Split(dataSourceName, ";")
var dbName string
- for _, c := range kv {
- vv := strings.Split(strings.TrimSpace(c), "=")
- if len(vv) == 2 {
- switch strings.ToLower(vv[0]) {
- case "database":
- dbName = vv[1]
+
+ if strings.HasPrefix(dataSourceName, "sqlserver://") {
+ u, err := url.Parse(dataSourceName)
+ if err != nil {
+ return nil, err
+ }
+ dbName = u.Query().Get("database")
+ } else {
+ kv := strings.Split(dataSourceName, ";")
+ for _, c := range kv {
+ vv := strings.Split(strings.TrimSpace(c), "=")
+ if len(vv) == 2 {
+ switch strings.ToLower(vv[0]) {
+ case "database":
+ dbName = vv[1]
+ }
}
}
}
diff --git a/vendor/github.com/go-xorm/xorm/dialect_mysql.go b/vendor/github.com/go-xorm/xorm/dialect_mysql.go
index 9f5ae3b2e5..2628042ab3 100644
--- a/vendor/github.com/go-xorm/xorm/dialect_mysql.go
+++ b/vendor/github.com/go-xorm/xorm/dialect_mysql.go
@@ -13,7 +13,7 @@ import (
"strings"
"time"
- "github.com/go-xorm/core"
+ "xorm.io/core"
)
var (
@@ -393,6 +393,9 @@ func (db *mysql) GetColumns(tableName string) ([]string, map[string]*core.Column
if colType == "FLOAT UNSIGNED" {
colType = "FLOAT"
}
+ if colType == "DOUBLE UNSIGNED" {
+ colType = "DOUBLE"
+ }
col.Length = len1
col.Length2 = len2
if _, ok := core.SqlTypes[colType]; ok {
diff --git a/vendor/github.com/go-xorm/xorm/dialect_oracle.go b/vendor/github.com/go-xorm/xorm/dialect_oracle.go
index ac0081b38f..b66145bcbe 100644
--- a/vendor/github.com/go-xorm/xorm/dialect_oracle.go
+++ b/vendor/github.com/go-xorm/xorm/dialect_oracle.go
@@ -11,7 +11,7 @@ import (
"strconv"
"strings"
- "github.com/go-xorm/core"
+ "xorm.io/core"
)
var (
diff --git a/vendor/github.com/go-xorm/xorm/dialect_postgres.go b/vendor/github.com/go-xorm/xorm/dialect_postgres.go
index 738c6a1581..662f6401c1 100644
--- a/vendor/github.com/go-xorm/xorm/dialect_postgres.go
+++ b/vendor/github.com/go-xorm/xorm/dialect_postgres.go
@@ -11,7 +11,7 @@ import (
"strconv"
"strings"
- "github.com/go-xorm/core"
+ "xorm.io/core"
)
// from http://www.postgresql.org/docs/current/static/sql-keywords-appendix.html
@@ -1093,6 +1093,19 @@ func (db *postgres) GetTables() ([]*core.Table, error) {
return tables, nil
}
+
+func getIndexColName(indexdef string) []string {
+ var colNames []string
+
+ cs := strings.Split(indexdef, "(")
+ for _, v := range strings.Split(strings.Split(cs[1], ")")[0], ",") {
+ colNames = append(colNames, strings.Split(strings.TrimLeft(v, " "), " ")[0])
+ }
+
+ return colNames
+}
+
+
func (db *postgres) GetIndexes(tableName string) (map[string]*core.Index, error) {
args := []interface{}{tableName}
s := fmt.Sprintf("SELECT indexname, indexdef FROM pg_indexes WHERE tablename=$1")
@@ -1126,8 +1139,7 @@ func (db *postgres) GetIndexes(tableName string) (map[string]*core.Index, error)
} else {
indexType = core.IndexType
}
- cs := strings.Split(indexdef, "(")
- colNames = strings.Split(cs[1][0:len(cs[1])-1], ",")
+ colNames = getIndexColName(indexdef)
var isRegular bool
if strings.HasPrefix(indexName, "IDX_"+tableName) || strings.HasPrefix(indexName, "UQE_"+tableName) {
newIdxName := indexName[5+len(tableName):]
diff --git a/vendor/github.com/go-xorm/xorm/dialect_sqlite3.go b/vendor/github.com/go-xorm/xorm/dialect_sqlite3.go
index e129481466..e30a7751bf 100644
--- a/vendor/github.com/go-xorm/xorm/dialect_sqlite3.go
+++ b/vendor/github.com/go-xorm/xorm/dialect_sqlite3.go
@@ -11,7 +11,7 @@ import (
"regexp"
"strings"
- "github.com/go-xorm/core"
+ "xorm.io/core"
)
var (
diff --git a/vendor/github.com/go-xorm/xorm/engine.go b/vendor/github.com/go-xorm/xorm/engine.go
index c1bf06e15c..962df125bb 100644
--- a/vendor/github.com/go-xorm/xorm/engine.go
+++ b/vendor/github.com/go-xorm/xorm/engine.go
@@ -7,6 +7,7 @@ package xorm
import (
"bufio"
"bytes"
+ "context"
"database/sql"
"encoding/gob"
"errors"
@@ -19,8 +20,8 @@ import (
"sync"
"time"
- "github.com/go-xorm/builder"
- "github.com/go-xorm/core"
+ "xorm.io/builder"
+ "xorm.io/core"
)
// Engine is the major struct of xorm, it means a database manager.
@@ -52,6 +53,8 @@ type Engine struct {
cachers map[string]core.Cacher
cacherLock sync.RWMutex
+
+ defaultContext context.Context
}
func (engine *Engine) setCacher(tableName string, cacher core.Cacher) {
@@ -122,6 +125,7 @@ func (engine *Engine) Logger() core.ILogger {
// SetLogger set the new logger
func (engine *Engine) SetLogger(logger core.ILogger) {
engine.logger = logger
+ engine.showSQL = logger.IsShowSQL()
engine.dialect.SetLogger(logger)
}
@@ -1351,31 +1355,31 @@ func (engine *Engine) DropIndexes(bean interface{}) error {
}
// Exec raw sql
-func (engine *Engine) Exec(sqlorArgs ...interface{}) (sql.Result, error) {
+func (engine *Engine) Exec(sqlOrArgs ...interface{}) (sql.Result, error) {
session := engine.NewSession()
defer session.Close()
- return session.Exec(sqlorArgs...)
+ return session.Exec(sqlOrArgs...)
}
// Query a raw sql and return records as []map[string][]byte
-func (engine *Engine) Query(sqlorArgs ...interface{}) (resultsSlice []map[string][]byte, err error) {
+func (engine *Engine) Query(sqlOrArgs ...interface{}) (resultsSlice []map[string][]byte, err error) {
session := engine.NewSession()
defer session.Close()
- return session.Query(sqlorArgs...)
+ return session.Query(sqlOrArgs...)
}
// QueryString runs a raw sql and return records as []map[string]string
-func (engine *Engine) QueryString(sqlorArgs ...interface{}) ([]map[string]string, error) {
+func (engine *Engine) QueryString(sqlOrArgs ...interface{}) ([]map[string]string, error) {
session := engine.NewSession()
defer session.Close()
- return session.QueryString(sqlorArgs...)
+ return session.QueryString(sqlOrArgs...)
}
// QueryInterface runs a raw sql and return records as []map[string]interface{}
-func (engine *Engine) QueryInterface(sqlorArgs ...interface{}) ([]map[string]interface{}, error) {
+func (engine *Engine) QueryInterface(sqlOrArgs ...interface{}) ([]map[string]interface{}, error) {
session := engine.NewSession()
defer session.Close()
- return session.QueryInterface(sqlorArgs...)
+ return session.QueryInterface(sqlOrArgs...)
}
// Insert one or more records
diff --git a/vendor/github.com/go-xorm/xorm/engine_cond.go b/vendor/github.com/go-xorm/xorm/engine_cond.go
index 4dde8662e1..702ac80434 100644
--- a/vendor/github.com/go-xorm/xorm/engine_cond.go
+++ b/vendor/github.com/go-xorm/xorm/engine_cond.go
@@ -6,14 +6,13 @@ package xorm
import (
"database/sql/driver"
- "encoding/json"
"fmt"
"reflect"
"strings"
"time"
- "github.com/go-xorm/builder"
- "github.com/go-xorm/core"
+ "xorm.io/builder"
+ "xorm.io/core"
)
func (engine *Engine) buildConds(table *core.Table, bean interface{},
@@ -147,7 +146,7 @@ func (engine *Engine) buildConds(table *core.Table, bean interface{},
} else {
if col.SQLType.IsJson() {
if col.SQLType.IsText() {
- bytes, err := json.Marshal(fieldValue.Interface())
+ bytes, err := DefaultJSONHandler.Marshal(fieldValue.Interface())
if err != nil {
engine.logger.Error(err)
continue
@@ -156,7 +155,7 @@ func (engine *Engine) buildConds(table *core.Table, bean interface{},
} else if col.SQLType.IsBlob() {
var bytes []byte
var err error
- bytes, err = json.Marshal(fieldValue.Interface())
+ bytes, err = DefaultJSONHandler.Marshal(fieldValue.Interface())
if err != nil {
engine.logger.Error(err)
continue
@@ -195,7 +194,7 @@ func (engine *Engine) buildConds(table *core.Table, bean interface{},
}
if col.SQLType.IsText() {
- bytes, err := json.Marshal(fieldValue.Interface())
+ bytes, err := DefaultJSONHandler.Marshal(fieldValue.Interface())
if err != nil {
engine.logger.Error(err)
continue
@@ -212,7 +211,7 @@ func (engine *Engine) buildConds(table *core.Table, bean interface{},
continue
}
} else {
- bytes, err = json.Marshal(fieldValue.Interface())
+ bytes, err = DefaultJSONHandler.Marshal(fieldValue.Interface())
if err != nil {
engine.logger.Error(err)
continue
diff --git a/vendor/github.com/go-xorm/xorm/engine_context.go b/vendor/github.com/go-xorm/xorm/engine_context.go
new file mode 100644
index 0000000000..c6cbb76c1d
--- /dev/null
+++ b/vendor/github.com/go-xorm/xorm/engine_context.go
@@ -0,0 +1,28 @@
+// Copyright 2019 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.
+
+// +build go1.8
+
+package xorm
+
+import "context"
+
+// Context creates a session with the context
+func (engine *Engine) Context(ctx context.Context) *Session {
+ session := engine.NewSession()
+ session.isAutoClose = true
+ return session.Context(ctx)
+}
+
+// SetDefaultContext set the default context
+func (engine *Engine) SetDefaultContext(ctx context.Context) {
+ engine.defaultContext = ctx
+}
+
+// PingContext tests if database is alive
+func (engine *Engine) PingContext(ctx context.Context) error {
+ session := engine.NewSession()
+ defer session.Close()
+ return session.PingContext(ctx)
+}
diff --git a/vendor/github.com/go-xorm/xorm/engine_group.go b/vendor/github.com/go-xorm/xorm/engine_group.go
index 5eee3e6183..42d49eca93 100644
--- a/vendor/github.com/go-xorm/xorm/engine_group.go
+++ b/vendor/github.com/go-xorm/xorm/engine_group.go
@@ -5,9 +5,10 @@
package xorm
import (
+ "context"
"time"
- "github.com/go-xorm/core"
+ "xorm.io/core"
)
// EngineGroup defines an engine group
@@ -74,6 +75,20 @@ func (eg *EngineGroup) Close() error {
return nil
}
+// Context returned a group session
+func (eg *EngineGroup) Context(ctx context.Context) *Session {
+ sess := eg.NewSession()
+ sess.isAutoClose = true
+ return sess.Context(ctx)
+}
+
+// NewSession returned a group session
+func (eg *EngineGroup) NewSession() *Session {
+ sess := eg.Engine.NewSession()
+ sess.sessionType = groupSession
+ return sess
+}
+
// Master returns the master engine
func (eg *EngineGroup) Master() *Engine {
return eg.Engine
diff --git a/vendor/github.com/go-xorm/xorm/engine_table.go b/vendor/github.com/go-xorm/xorm/engine_table.go
index 94871a4bce..eb5aa850af 100644
--- a/vendor/github.com/go-xorm/xorm/engine_table.go
+++ b/vendor/github.com/go-xorm/xorm/engine_table.go
@@ -9,10 +9,10 @@ import (
"reflect"
"strings"
- "github.com/go-xorm/core"
+ "xorm.io/core"
)
-// TableNameWithSchema will automatically add schema prefix on table name
+// tbNameWithSchema will automatically add schema prefix on table name
func (engine *Engine) tbNameWithSchema(v string) string {
// Add schema name as prefix of table name.
// Only for postgres database.
diff --git a/vendor/github.com/go-xorm/xorm/error.go b/vendor/github.com/go-xorm/xorm/error.go
index a223fc4a86..a67527acda 100644
--- a/vendor/github.com/go-xorm/xorm/error.go
+++ b/vendor/github.com/go-xorm/xorm/error.go
@@ -26,6 +26,8 @@ var (
ErrNotImplemented = errors.New("Not implemented")
// ErrConditionType condition type unsupported
ErrConditionType = errors.New("Unsupported condition type")
+ // ErrUnSupportedSQLType parameter of SQL is not supported
+ ErrUnSupportedSQLType = errors.New("unsupported sql type")
)
// ErrFieldIsNotExist columns does not exist
diff --git a/vendor/github.com/go-xorm/xorm/go.mod b/vendor/github.com/go-xorm/xorm/go.mod
index 1856169558..9a30b4b48a 100644
--- a/vendor/github.com/go-xorm/xorm/go.mod
+++ b/vendor/github.com/go-xorm/xorm/go.mod
@@ -1,24 +1,24 @@
module github.com/go-xorm/xorm
require (
+ cloud.google.com/go v0.34.0 // indirect
github.com/cockroachdb/apd v1.1.0 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
- github.com/denisenkom/go-mssqldb v0.0.0-20181014144952-4e0d7dc8888f
- github.com/go-sql-driver/mysql v1.4.0
- github.com/go-xorm/builder v0.3.2
- github.com/go-xorm/core v0.6.0
- github.com/go-xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a // indirect
+ github.com/denisenkom/go-mssqldb v0.0.0-20190121005146-b04fd42d9952
+ github.com/go-sql-driver/mysql v1.4.1
+ github.com/google/go-cmp v0.2.0 // indirect
github.com/jackc/fake v0.0.0-20150926172116-812a484cc733 // indirect
- github.com/jackc/pgx v3.2.0+incompatible
+ github.com/jackc/pgx v3.3.0+incompatible
github.com/kr/pretty v0.1.0 // indirect
github.com/lib/pq v1.0.0
- github.com/mattn/go-sqlite3 v1.9.0
- github.com/pkg/errors v0.8.0 // indirect
- github.com/pmezard/go-difflib v1.0.0 // indirect
+ github.com/mattn/go-sqlite3 v1.10.0
+ github.com/pkg/errors v0.8.1 // indirect
github.com/satori/go.uuid v1.2.0 // indirect
github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24 // indirect
- github.com/stretchr/testify v1.2.2
+ github.com/stretchr/testify v1.3.0
github.com/ziutek/mymysql v1.5.4
+ golang.org/x/crypto v0.0.0-20190122013713-64072686203f // indirect
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect
- gopkg.in/stretchr/testify.v1 v1.2.2
+ xorm.io/builder v0.3.5
+ xorm.io/core v0.6.3
)
diff --git a/vendor/github.com/go-xorm/xorm/go.sum b/vendor/github.com/go-xorm/xorm/go.sum
index dbf757d1d3..307d46d9ad 100644
--- a/vendor/github.com/go-xorm/xorm/go.sum
+++ b/vendor/github.com/go-xorm/xorm/go.sum
@@ -1,21 +1,24 @@
+cloud.google.com/go v0.34.0 h1:eOI3/cP2VTU6uZLDYAoic+eyzzB9YyGmJ7eIjl8rOPg=
+cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I=
github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ=
+github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/denisenkom/go-mssqldb v0.0.0-20181014144952-4e0d7dc8888f h1:WH0w/R4Yoey+04HhFxqZ6VX6I0d7RMyw5aXQ9UTvQPs=
-github.com/denisenkom/go-mssqldb v0.0.0-20181014144952-4e0d7dc8888f/go.mod h1:xN/JuLBIz4bjkxNmByTiV1IbhfnYb6oo99phBn4Eqhc=
-github.com/go-sql-driver/mysql v1.4.0 h1:7LxgVwFb2hIQtMm87NdgAVfXjnt4OePseqT1tKx+opk=
-github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
-github.com/go-xorm/builder v0.3.2 h1:pSsZQRRzJNapKEAEhigw3xLmiLPeAYv5GFlpYZ8+a5I=
-github.com/go-xorm/builder v0.3.2/go.mod h1:v8mE3MFBgtL+RGFNfUnAMUqqfk/Y4W5KuwCFQIEpQLk=
-github.com/go-xorm/core v0.6.0 h1:tp6hX+ku4OD9khFZS8VGBDRY3kfVCtelPfmkgCyHxL0=
-github.com/go-xorm/core v0.6.0/go.mod h1:d8FJ9Br8OGyQl12MCclmYBuBqqxsyeedpXciV5Myih8=
+github.com/denisenkom/go-mssqldb v0.0.0-20190121005146-b04fd42d9952 h1:b5OnbZD49x9g+/FcYbs/vukEt8C/jUbGhCJ3uduQmu8=
+github.com/denisenkom/go-mssqldb v0.0.0-20190121005146-b04fd42d9952/go.mod h1:xN/JuLBIz4bjkxNmByTiV1IbhfnYb6oo99phBn4Eqhc=
+github.com/go-sql-driver/mysql v1.4.1 h1:g24URVg0OFbNUTx9qqY1IRZ9D9z3iPyi5zKhQZpNwpA=
+github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
github.com/go-xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a h1:9wScpmSP5A3Bk8V3XHWUcJmYTh+ZnlHVyc+A4oZYS3Y=
github.com/go-xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:56xuuqnHyryaerycW3BfssRdxQstACi0Epw/yC5E2xM=
+github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ=
+github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
github.com/jackc/fake v0.0.0-20150926172116-812a484cc733 h1:vr3AYkKovP8uR8AvSGGUK1IDqRa5lAAvEkZG1LKaCRc=
github.com/jackc/fake v0.0.0-20150926172116-812a484cc733/go.mod h1:WrMFNQdiFJ80sQsxDoMokWK1W5TQtxBFNpzWTD84ibQ=
-github.com/jackc/pgx v3.2.0+incompatible h1:0Vihzu20St42/UDsvZGdNE6jak7oi/UOeMzwMPHkgFY=
-github.com/jackc/pgx v3.2.0+incompatible/go.mod h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGkVEFm4TeybAXq+I=
+github.com/jackc/pgx v3.3.0+incompatible h1:Wa90/+qsITBAPkAZjiByeIGHFcj3Ztu+VzrrIpHjL90=
+github.com/jackc/pgx v3.3.0+incompatible/go.mod h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGkVEFm4TeybAXq+I=
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
@@ -23,21 +26,32 @@ github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/lib/pq v1.0.0 h1:X5PMW56eZitiTeO7tKzZxFCSpbFZJtkMMooicw2us9A=
github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
-github.com/mattn/go-sqlite3 v1.9.0 h1:pDRiWfl+++eC2FEFRy6jXmQlvp4Yh3z1MJKg4UeYM/4=
-github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
-github.com/pkg/errors v0.8.0 h1:WdK/asTD0HN+q6hsWO3/vpuAkAr+tw6aNJNDFFf0+qw=
-github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/mattn/go-sqlite3 v1.10.0 h1:jbhqpg7tQe4SupckyijYiy0mJJ/pRyHvXf7JdWK860o=
+github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
+github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
+github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww=
github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24 h1:pntxY8Ary0t43dCZ5dqY4YTJCObLY1kIXl0uzMv+7DE=
github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4=
-github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w=
-github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/ziutek/mymysql v1.5.4 h1:GB0qdRGsTwQSBVYuVShFBKaXSnSnYYC2d9knnE1LHFs=
github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0=
+golang.org/x/crypto v0.0.0-20190122013713-64072686203f h1:u1CmMhe3a44hy8VIgpInORnI01UVaUYheqR7x9BxT3c=
+golang.org/x/crypto v0.0.0-20190122013713-64072686203f/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
+golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508=
+google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/stretchr/testify.v1 v1.2.2 h1:yhQC6Uy5CqibAIlk1wlusa/MJ3iAN49/BsR/dCCKz3M=
-gopkg.in/stretchr/testify.v1 v1.2.2/go.mod h1:QI5V/q6UbPmuhtm10CaFZxED9NreB8PnFYN9JcR6TxU=
+xorm.io/builder v0.3.5 h1:EilU39fvWDxjb1cDaELpYhsF+zziRBhew8xk4pngO+A=
+xorm.io/builder v0.3.5/go.mod h1:ZFbByS/KxZI1FKRjL05PyJ4YrK2bcxlUaAxdum5aTR8=
+xorm.io/core v0.6.2 h1:EJLcSxf336POJr670wKB55Mah9f93xzvGYzNRgnT8/Y=
+xorm.io/core v0.6.2/go.mod h1:bwPIfLdm/FzWgVUH8WPVlr+uJhscvNGFcaZKXsI3n2c=
+xorm.io/core v0.6.3 h1:n1NhVZt1s2oLw1BZfX2ocIJsHyso259uPgg63BGr37M=
+xorm.io/core v0.6.3/go.mod h1:8kz/C6arVW/O9vk3PgCiMJO2hIAm1UcuOL3dSPyZ2qo=
diff --git a/vendor/github.com/go-xorm/xorm/helpers.go b/vendor/github.com/go-xorm/xorm/helpers.go
index f1705782e3..db8fc581f3 100644
--- a/vendor/github.com/go-xorm/xorm/helpers.go
+++ b/vendor/github.com/go-xorm/xorm/helpers.go
@@ -12,7 +12,7 @@ import (
"strconv"
"strings"
- "github.com/go-xorm/core"
+ "xorm.io/core"
)
// str2PK convert string value to primary key value according to tp
diff --git a/vendor/github.com/go-xorm/xorm/interface.go b/vendor/github.com/go-xorm/xorm/interface.go
index 33d2078e44..0928f66a9a 100644
--- a/vendor/github.com/go-xorm/xorm/interface.go
+++ b/vendor/github.com/go-xorm/xorm/interface.go
@@ -5,11 +5,12 @@
package xorm
import (
+ "context"
"database/sql"
"reflect"
"time"
- "github.com/go-xorm/core"
+ "xorm.io/core"
)
// Interface defines the interface which Engine, EngineGroup and Session will implementate.
@@ -27,7 +28,7 @@ type Interface interface {
Delete(interface{}) (int64, error)
Distinct(columns ...string) *Session
DropIndexes(bean interface{}) error
- Exec(sqlOrAgrs ...interface{}) (sql.Result, error)
+ Exec(sqlOrArgs ...interface{}) (sql.Result, error)
Exist(bean ...interface{}) (bool, error)
Find(interface{}, ...interface{}) error
FindAndCount(interface{}, ...interface{}) (int64, error)
@@ -49,9 +50,9 @@ type Interface interface {
Omit(columns ...string) *Session
OrderBy(order string) *Session
Ping() error
- Query(sqlOrAgrs ...interface{}) (resultsSlice []map[string][]byte, err error)
- QueryInterface(sqlorArgs ...interface{}) ([]map[string]interface{}, error)
- QueryString(sqlorArgs ...interface{}) ([]map[string]string, error)
+ Query(sqlOrArgs ...interface{}) (resultsSlice []map[string][]byte, err error)
+ QueryInterface(sqlOrArgs ...interface{}) ([]map[string]interface{}, error)
+ QueryString(sqlOrArgs ...interface{}) ([]map[string]string, error)
Rows(bean interface{}) (*Rows, error)
SetExpr(string, string) *Session
SQL(interface{}, ...interface{}) *Session
@@ -73,6 +74,7 @@ type EngineInterface interface {
Before(func(interface{})) *Session
Charset(charset string) *Session
ClearCache(...interface{}) error
+ Context(context.Context) *Session
CreateTables(...interface{}) error
DBMetas() ([]*core.Table, error)
Dialect() core.Dialect
diff --git a/vendor/github.com/go-xorm/xorm/json.go b/vendor/github.com/go-xorm/xorm/json.go
new file mode 100644
index 0000000000..fdb6ce5654
--- /dev/null
+++ b/vendor/github.com/go-xorm/xorm/json.go
@@ -0,0 +1,31 @@
+// Copyright 2019 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 xorm
+
+import "encoding/json"
+
+// JSONInterface represents an interface to handle json data
+type JSONInterface interface {
+ Marshal(v interface{}) ([]byte, error)
+ Unmarshal(data []byte, v interface{}) error
+}
+
+var (
+ // DefaultJSONHandler default json handler
+ DefaultJSONHandler JSONInterface = StdJSON{}
+)
+
+// StdJSON implements JSONInterface via encoding/json
+type StdJSON struct{}
+
+// Marshal implements JSONInterface
+func (StdJSON) Marshal(v interface{}) ([]byte, error) {
+ return json.Marshal(v)
+}
+
+// Unmarshal implements JSONInterface
+func (StdJSON) Unmarshal(data []byte, v interface{}) error {
+ return json.Unmarshal(data, v)
+}
diff --git a/vendor/github.com/go-xorm/xorm/logger.go b/vendor/github.com/go-xorm/xorm/logger.go
index 727d030a4c..7b26e77f3b 100644
--- a/vendor/github.com/go-xorm/xorm/logger.go
+++ b/vendor/github.com/go-xorm/xorm/logger.go
@@ -9,7 +9,7 @@ import (
"io"
"log"
- "github.com/go-xorm/core"
+ "xorm.io/core"
)
// default log options
diff --git a/vendor/github.com/go-xorm/xorm/rows.go b/vendor/github.com/go-xorm/xorm/rows.go
index 54ec7f37a2..bdd44589f8 100644
--- a/vendor/github.com/go-xorm/xorm/rows.go
+++ b/vendor/github.com/go-xorm/xorm/rows.go
@@ -9,16 +9,13 @@ import (
"fmt"
"reflect"
- "github.com/go-xorm/core"
+ "xorm.io/core"
)
// Rows rows wrapper a rows to
type Rows struct {
- NoTypeCheck bool
-
session *Session
rows *core.Rows
- fields []string
beanType reflect.Type
lastError error
}
@@ -57,13 +54,6 @@ func newRows(session *Session, bean interface{}) (*Rows, error) {
return nil, err
}
- rows.fields, err = rows.rows.Columns()
- if err != nil {
- rows.lastError = err
- rows.Close()
- return nil, err
- }
-
return rows, nil
}
@@ -90,7 +80,7 @@ func (rows *Rows) Scan(bean interface{}) error {
return rows.lastError
}
- if !rows.NoTypeCheck && reflect.Indirect(reflect.ValueOf(bean)).Type() != rows.beanType {
+ if reflect.Indirect(reflect.ValueOf(bean)).Type() != rows.beanType {
return fmt.Errorf("scan arg is incompatible type to [%v]", rows.beanType)
}
@@ -98,13 +88,18 @@ func (rows *Rows) Scan(bean interface{}) error {
return err
}
- scanResults, err := rows.session.row2Slice(rows.rows, rows.fields, bean)
+ fields, err := rows.rows.Columns()
+ if err != nil {
+ return err
+ }
+
+ scanResults, err := rows.session.row2Slice(rows.rows, fields, bean)
if err != nil {
return err
}
dataStruct := rValue(bean)
- _, err = rows.session.slice2Bean(scanResults, rows.fields, bean, &dataStruct, rows.session.statement.RefTable)
+ _, err = rows.session.slice2Bean(scanResults, fields, bean, &dataStruct, rows.session.statement.RefTable)
if err != nil {
return err
}
@@ -118,17 +113,9 @@ func (rows *Rows) Close() error {
defer rows.session.Close()
}
- if rows.lastError == nil {
- if rows.rows != nil {
- rows.lastError = rows.rows.Close()
- if rows.lastError != nil {
- return rows.lastError
- }
- }
- } else {
- if rows.rows != nil {
- defer rows.rows.Close()
- }
+ if rows.rows != nil {
+ return rows.rows.Close()
}
+
return rows.lastError
}
diff --git a/vendor/github.com/go-xorm/xorm/session.go b/vendor/github.com/go-xorm/xorm/session.go
index e3437b9181..b33955fdce 100644
--- a/vendor/github.com/go-xorm/xorm/session.go
+++ b/vendor/github.com/go-xorm/xorm/session.go
@@ -5,8 +5,8 @@
package xorm
import (
+ "context"
"database/sql"
- "encoding/json"
"errors"
"fmt"
"hash/crc32"
@@ -14,7 +14,14 @@ import (
"strings"
"time"
- "github.com/go-xorm/core"
+ "xorm.io/core"
+)
+
+type sessionType int
+
+const (
+ engineSession sessionType = iota
+ groupSession
)
// Session keep a pointer to sql.DB and provides all execution of all
@@ -51,7 +58,8 @@ type Session struct {
lastSQL string
lastSQLArgs []interface{}
- err error
+ ctx context.Context
+ sessionType sessionType
}
// Clone copy all the session's content and return a new session
@@ -82,6 +90,8 @@ func (session *Session) Init() {
session.lastSQL = ""
session.lastSQLArgs = []interface{}{}
+
+ session.ctx = session.engine.defaultContext
}
// Close release the connection from pool
@@ -275,7 +285,7 @@ func (session *Session) doPrepare(db *core.DB, sqlStr string) (stmt *core.Stmt,
var has bool
stmt, has = session.stmtCache[crc]
if !has {
- stmt, err = db.Prepare(sqlStr)
+ stmt, err = db.PrepareContext(session.ctx, sqlStr)
if err != nil {
return nil, err
}
@@ -480,13 +490,13 @@ func (session *Session) slice2Bean(scanResults []interface{}, fields []string, b
continue
}
if fieldValue.CanAddr() {
- err := json.Unmarshal(bs, fieldValue.Addr().Interface())
+ err := DefaultJSONHandler.Unmarshal(bs, fieldValue.Addr().Interface())
if err != nil {
return nil, err
}
} else {
x := reflect.New(fieldType)
- err := json.Unmarshal(bs, x.Interface())
+ err := DefaultJSONHandler.Unmarshal(bs, x.Interface())
if err != nil {
return nil, err
}
@@ -510,13 +520,13 @@ func (session *Session) slice2Bean(scanResults []interface{}, fields []string, b
hasAssigned = true
if len(bs) > 0 {
if fieldValue.CanAddr() {
- err := json.Unmarshal(bs, fieldValue.Addr().Interface())
+ err := DefaultJSONHandler.Unmarshal(bs, fieldValue.Addr().Interface())
if err != nil {
return nil, err
}
} else {
x := reflect.New(fieldType)
- err := json.Unmarshal(bs, x.Interface())
+ err := DefaultJSONHandler.Unmarshal(bs, x.Interface())
if err != nil {
return nil, err
}
@@ -532,7 +542,7 @@ func (session *Session) slice2Bean(scanResults []interface{}, fields []string, b
hasAssigned = true
if col.SQLType.IsText() {
x := reflect.New(fieldType)
- err := json.Unmarshal(vv.Bytes(), x.Interface())
+ err := DefaultJSONHandler.Unmarshal(vv.Bytes(), x.Interface())
if err != nil {
return nil, err
}
@@ -647,7 +657,7 @@ func (session *Session) slice2Bean(scanResults []interface{}, fields []string, b
hasAssigned = true
x := reflect.New(fieldType)
if len([]byte(vv.String())) > 0 {
- err := json.Unmarshal([]byte(vv.String()), x.Interface())
+ err := DefaultJSONHandler.Unmarshal([]byte(vv.String()), x.Interface())
if err != nil {
return nil, err
}
@@ -657,7 +667,7 @@ func (session *Session) slice2Bean(scanResults []interface{}, fields []string, b
hasAssigned = true
x := reflect.New(fieldType)
if len(vv.Bytes()) > 0 {
- err := json.Unmarshal(vv.Bytes(), x.Interface())
+ err := DefaultJSONHandler.Unmarshal(vv.Bytes(), x.Interface())
if err != nil {
return nil, err
}
@@ -793,7 +803,7 @@ func (session *Session) slice2Bean(scanResults []interface{}, fields []string, b
case core.Complex64Type:
var x complex64
if len([]byte(vv.String())) > 0 {
- err := json.Unmarshal([]byte(vv.String()), &x)
+ err := DefaultJSONHandler.Unmarshal([]byte(vv.String()), &x)
if err != nil {
return nil, err
}
@@ -803,7 +813,7 @@ func (session *Session) slice2Bean(scanResults []interface{}, fields []string, b
case core.Complex128Type:
var x complex128
if len([]byte(vv.String())) > 0 {
- err := json.Unmarshal([]byte(vv.String()), &x)
+ err := DefaultJSONHandler.Unmarshal([]byte(vv.String()), &x)
if err != nil {
return nil, err
}
diff --git a/vendor/github.com/go-xorm/xorm/session_cols.go b/vendor/github.com/go-xorm/xorm/session_cols.go
index 47d109c6cb..dc3befcf6b 100644
--- a/vendor/github.com/go-xorm/xorm/session_cols.go
+++ b/vendor/github.com/go-xorm/xorm/session_cols.go
@@ -9,7 +9,7 @@ import (
"strings"
"time"
- "github.com/go-xorm/core"
+ "xorm.io/core"
)
type incrParam struct {
diff --git a/vendor/github.com/go-xorm/xorm/session_cond.go b/vendor/github.com/go-xorm/xorm/session_cond.go
index e1d528f2db..b16bdea8e0 100644
--- a/vendor/github.com/go-xorm/xorm/session_cond.go
+++ b/vendor/github.com/go-xorm/xorm/session_cond.go
@@ -4,7 +4,7 @@
package xorm
-import "github.com/go-xorm/builder"
+import "xorm.io/builder"
// Sql provides raw sql input parameter. When you have a complex SQL statement
// and cannot use Where, Id, In and etc. Methods to describe, you can use SQL.
diff --git a/vendor/github.com/go-xorm/xorm/context.go b/vendor/github.com/go-xorm/xorm/session_context.go
index 074ba35a80..915f056858 100644
--- a/vendor/github.com/go-xorm/xorm/context.go
+++ b/vendor/github.com/go-xorm/xorm/session_context.go
@@ -1,18 +1,15 @@
-// Copyright 2017 The Xorm Authors. All rights reserved.
+// Copyright 2019 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.
-// +build go1.8
-
package xorm
import "context"
-// PingContext tests if database is alive
-func (engine *Engine) PingContext(ctx context.Context) error {
- session := engine.NewSession()
- defer session.Close()
- return session.PingContext(ctx)
+// Context sets the context on this session
+func (session *Session) Context(ctx context.Context) *Session {
+ session.ctx = ctx
+ return session
}
// PingContext test if database is ok
diff --git a/vendor/github.com/go-xorm/xorm/session_convert.go b/vendor/github.com/go-xorm/xorm/session_convert.go
index 1f9d8aa1bd..c13b003d6b 100644
--- a/vendor/github.com/go-xorm/xorm/session_convert.go
+++ b/vendor/github.com/go-xorm/xorm/session_convert.go
@@ -7,7 +7,6 @@ package xorm
import (
"database/sql"
"database/sql/driver"
- "encoding/json"
"errors"
"fmt"
"reflect"
@@ -15,7 +14,7 @@ import (
"strings"
"time"
- "github.com/go-xorm/core"
+ "xorm.io/core"
)
func (session *Session) str2Time(col *core.Column, data string) (outTime time.Time, outErr error) {
@@ -103,7 +102,7 @@ func (session *Session) bytes2Value(col *core.Column, fieldValue *reflect.Value,
case reflect.Complex64, reflect.Complex128:
x := reflect.New(fieldType)
if len(data) > 0 {
- err := json.Unmarshal(data, x.Interface())
+ err := DefaultJSONHandler.Unmarshal(data, x.Interface())
if err != nil {
session.engine.logger.Error(err)
return err
@@ -117,7 +116,7 @@ func (session *Session) bytes2Value(col *core.Column, fieldValue *reflect.Value,
if col.SQLType.IsText() {
x := reflect.New(fieldType)
if len(data) > 0 {
- err := json.Unmarshal(data, x.Interface())
+ err := DefaultJSONHandler.Unmarshal(data, x.Interface())
if err != nil {
session.engine.logger.Error(err)
return err
@@ -130,7 +129,7 @@ func (session *Session) bytes2Value(col *core.Column, fieldValue *reflect.Value,
} else {
x := reflect.New(fieldType)
if len(data) > 0 {
- err := json.Unmarshal(data, x.Interface())
+ err := DefaultJSONHandler.Unmarshal(data, x.Interface())
if err != nil {
session.engine.logger.Error(err)
return err
@@ -259,7 +258,7 @@ func (session *Session) bytes2Value(col *core.Column, fieldValue *reflect.Value,
case core.Complex64Type.Kind():
var x complex64
if len(data) > 0 {
- err := json.Unmarshal(data, &x)
+ err := DefaultJSONHandler.Unmarshal(data, &x)
if err != nil {
session.engine.logger.Error(err)
return err
@@ -270,7 +269,7 @@ func (session *Session) bytes2Value(col *core.Column, fieldValue *reflect.Value,
case core.Complex128Type.Kind():
var x complex128
if len(data) > 0 {
- err := json.Unmarshal(data, &x)
+ err := DefaultJSONHandler.Unmarshal(data, &x)
if err != nil {
session.engine.logger.Error(err)
return err
@@ -604,14 +603,14 @@ func (session *Session) value2Interface(col *core.Column, fieldValue reflect.Val
}
if col.SQLType.IsText() {
- bytes, err := json.Marshal(fieldValue.Interface())
+ bytes, err := DefaultJSONHandler.Marshal(fieldValue.Interface())
if err != nil {
session.engine.logger.Error(err)
return 0, err
}
return string(bytes), nil
} else if col.SQLType.IsBlob() {
- bytes, err := json.Marshal(fieldValue.Interface())
+ bytes, err := DefaultJSONHandler.Marshal(fieldValue.Interface())
if err != nil {
session.engine.logger.Error(err)
return 0, err
@@ -620,7 +619,7 @@ func (session *Session) value2Interface(col *core.Column, fieldValue reflect.Val
}
return nil, fmt.Errorf("Unsupported type %v", fieldValue.Type())
case reflect.Complex64, reflect.Complex128:
- bytes, err := json.Marshal(fieldValue.Interface())
+ bytes, err := DefaultJSONHandler.Marshal(fieldValue.Interface())
if err != nil {
session.engine.logger.Error(err)
return 0, err
@@ -632,7 +631,7 @@ func (session *Session) value2Interface(col *core.Column, fieldValue reflect.Val
}
if col.SQLType.IsText() {
- bytes, err := json.Marshal(fieldValue.Interface())
+ bytes, err := DefaultJSONHandler.Marshal(fieldValue.Interface())
if err != nil {
session.engine.logger.Error(err)
return 0, err
@@ -645,7 +644,7 @@ func (session *Session) value2Interface(col *core.Column, fieldValue reflect.Val
(fieldValue.Type().Elem().Kind() == reflect.Uint8) {
bytes = fieldValue.Bytes()
} else {
- bytes, err = json.Marshal(fieldValue.Interface())
+ bytes, err = DefaultJSONHandler.Marshal(fieldValue.Interface())
if err != nil {
session.engine.logger.Error(err)
return 0, err
diff --git a/vendor/github.com/go-xorm/xorm/session_delete.go b/vendor/github.com/go-xorm/xorm/session_delete.go
index dcce543a3a..675d4d8c7d 100644
--- a/vendor/github.com/go-xorm/xorm/session_delete.go
+++ b/vendor/github.com/go-xorm/xorm/session_delete.go
@@ -9,7 +9,7 @@ import (
"fmt"
"strconv"
- "github.com/go-xorm/core"
+ "xorm.io/core"
)
func (session *Session) cacheDelete(table *core.Table, tableName, sqlStr string, args ...interface{}) error {
@@ -79,6 +79,10 @@ func (session *Session) Delete(bean interface{}) (int64, error) {
defer session.Close()
}
+ if session.statement.lastError != nil {
+ return 0, session.statement.lastError
+ }
+
if err := session.statement.setRefBean(bean); err != nil {
return 0, err
}
diff --git a/vendor/github.com/go-xorm/xorm/session_exist.go b/vendor/github.com/go-xorm/xorm/session_exist.go
index 74a660e852..660cc47e42 100644
--- a/vendor/github.com/go-xorm/xorm/session_exist.go
+++ b/vendor/github.com/go-xorm/xorm/session_exist.go
@@ -9,8 +9,8 @@ import (
"fmt"
"reflect"
- "github.com/go-xorm/builder"
- "github.com/go-xorm/core"
+ "xorm.io/builder"
+ "xorm.io/core"
)
// Exist returns true if the record exist otherwise return false
@@ -19,6 +19,10 @@ func (session *Session) Exist(bean ...interface{}) (bool, error) {
defer session.Close()
}
+ if session.statement.lastError != nil {
+ return false, session.statement.lastError
+ }
+
var sqlStr string
var args []interface{}
var err error
@@ -30,6 +34,8 @@ func (session *Session) Exist(bean ...interface{}) (bool, error) {
return false, ErrTableNotFound
}
+ tableName = session.statement.Engine.Quote(tableName)
+
if session.statement.cond.IsValid() {
condSQL, condArgs, err := builder.ToSQL(session.statement.cond)
if err != nil {
@@ -37,14 +43,18 @@ func (session *Session) Exist(bean ...interface{}) (bool, error) {
}
if session.engine.dialect.DBType() == core.MSSQL {
- sqlStr = fmt.Sprintf("SELECT top 1 * FROM %s WHERE %s", tableName, condSQL)
+ sqlStr = fmt.Sprintf("SELECT TOP 1 * FROM %s WHERE %s", tableName, condSQL)
+ } else if session.engine.dialect.DBType() == core.ORACLE {
+ sqlStr = fmt.Sprintf("SELECT * FROM %s WHERE (%s) AND ROWNUM=1", tableName, condSQL)
} else {
sqlStr = fmt.Sprintf("SELECT * FROM %s WHERE %s LIMIT 1", tableName, condSQL)
}
args = condArgs
} else {
if session.engine.dialect.DBType() == core.MSSQL {
- sqlStr = fmt.Sprintf("SELECT top 1 * FROM %s", tableName)
+ sqlStr = fmt.Sprintf("SELECT TOP 1 * FROM %s", tableName)
+ } else if session.engine.dialect.DBType() == core.ORACLE {
+ sqlStr = fmt.Sprintf("SELECT * FROM %s WHERE ROWNUM=1", tableName)
} else {
sqlStr = fmt.Sprintf("SELECT * FROM %s LIMIT 1", tableName)
}
diff --git a/vendor/github.com/go-xorm/xorm/session_find.go b/vendor/github.com/go-xorm/xorm/session_find.go
index a5b4f79342..d3fc0d30dd 100644
--- a/vendor/github.com/go-xorm/xorm/session_find.go
+++ b/vendor/github.com/go-xorm/xorm/session_find.go
@@ -10,8 +10,8 @@ import (
"reflect"
"strings"
- "github.com/go-xorm/builder"
- "github.com/go-xorm/core"
+ "xorm.io/builder"
+ "xorm.io/core"
)
const (
@@ -63,6 +63,10 @@ func (session *Session) FindAndCount(rowsSlicePtr interface{}, condiBean ...inte
}
func (session *Session) find(rowsSlicePtr interface{}, condiBean ...interface{}) error {
+ if session.statement.lastError != nil {
+ return session.statement.lastError
+ }
+
sliceValue := reflect.Indirect(reflect.ValueOf(rowsSlicePtr))
if sliceValue.Kind() != reflect.Slice && sliceValue.Kind() != reflect.Map {
return errors.New("needs a pointer to a slice or a map")
diff --git a/vendor/github.com/go-xorm/xorm/session_get.go b/vendor/github.com/go-xorm/xorm/session_get.go
index 1cea31c5f8..a38707c8c6 100644
--- a/vendor/github.com/go-xorm/xorm/session_get.go
+++ b/vendor/github.com/go-xorm/xorm/session_get.go
@@ -11,7 +11,7 @@ import (
"reflect"
"strconv"
- "github.com/go-xorm/core"
+ "xorm.io/core"
)
// Get retrieve one record from database, bean's non-empty fields
@@ -24,6 +24,10 @@ func (session *Session) Get(bean interface{}) (bool, error) {
}
func (session *Session) get(bean interface{}) (bool, error) {
+ if session.statement.lastError != nil {
+ return false, session.statement.lastError
+ }
+
beanValue := reflect.ValueOf(bean)
if beanValue.Kind() != reflect.Ptr {
return false, errors.New("needs a pointer to a value")
diff --git a/vendor/github.com/go-xorm/xorm/session_insert.go b/vendor/github.com/go-xorm/xorm/session_insert.go
index e673e87425..3cff48f613 100644
--- a/vendor/github.com/go-xorm/xorm/session_insert.go
+++ b/vendor/github.com/go-xorm/xorm/session_insert.go
@@ -8,10 +8,11 @@ import (
"errors"
"fmt"
"reflect"
+ "sort"
"strconv"
"strings"
- "github.com/go-xorm/core"
+ "xorm.io/core"
)
// Insert insert one or more beans
@@ -24,32 +25,67 @@ func (session *Session) Insert(beans ...interface{}) (int64, error) {
}
for _, bean := range beans {
- sliceValue := reflect.Indirect(reflect.ValueOf(bean))
- if sliceValue.Kind() == reflect.Slice {
- size := sliceValue.Len()
- if size > 0 {
- if session.engine.SupportInsertMany() {
- cnt, err := session.innerInsertMulti(bean)
- if err != nil {
- return affected, err
- }
- affected += cnt
- } else {
- for i := 0; i < size; i++ {
- cnt, err := session.innerInsert(sliceValue.Index(i).Interface())
+ switch bean.(type) {
+ case map[string]interface{}:
+ cnt, err := session.insertMapInterface(bean.(map[string]interface{}))
+ if err != nil {
+ return affected, err
+ }
+ affected += cnt
+ case []map[string]interface{}:
+ s := bean.([]map[string]interface{})
+ session.autoResetStatement = false
+ for i := 0; i < len(s); i++ {
+ cnt, err := session.insertMapInterface(s[i])
+ if err != nil {
+ return affected, err
+ }
+ affected += cnt
+ }
+ case map[string]string:
+ cnt, err := session.insertMapString(bean.(map[string]string))
+ if err != nil {
+ return affected, err
+ }
+ affected += cnt
+ case []map[string]string:
+ s := bean.([]map[string]string)
+ session.autoResetStatement = false
+ for i := 0; i < len(s); i++ {
+ cnt, err := session.insertMapString(s[i])
+ if err != nil {
+ return affected, err
+ }
+ affected += cnt
+ }
+ default:
+ sliceValue := reflect.Indirect(reflect.ValueOf(bean))
+ if sliceValue.Kind() == reflect.Slice {
+ size := sliceValue.Len()
+ if size > 0 {
+ if session.engine.SupportInsertMany() {
+ cnt, err := session.innerInsertMulti(bean)
if err != nil {
return affected, err
}
affected += cnt
+ } else {
+ for i := 0; i < size; i++ {
+ cnt, err := session.innerInsert(sliceValue.Index(i).Interface())
+ if err != nil {
+ return affected, err
+ }
+ affected += cnt
+ }
}
}
+ } else {
+ cnt, err := session.innerInsert(bean)
+ if err != nil {
+ return affected, err
+ }
+ affected += cnt
}
- } else {
- cnt, err := session.innerInsert(bean)
- if err != nil {
- return affected, err
- }
- affected += cnt
}
}
@@ -337,21 +373,30 @@ func (session *Session) innerInsert(bean interface{}) (int64, error) {
var sqlStr string
var tableName = session.statement.TableName()
+ var output string
+ if session.engine.dialect.DBType() == core.MSSQL && len(table.AutoIncrement) > 0 {
+ output = fmt.Sprintf(" OUTPUT Inserted.%s", table.AutoIncrement)
+ }
if len(colPlaces) > 0 {
- sqlStr = fmt.Sprintf("INSERT INTO %s (%v%v%v) VALUES (%v)",
+ sqlStr = fmt.Sprintf("INSERT INTO %s (%v%v%v)%s VALUES (%v)",
session.engine.Quote(tableName),
session.engine.QuoteStr(),
strings.Join(colNames, session.engine.Quote(", ")),
session.engine.QuoteStr(),
+ output,
colPlaces)
} else {
if session.engine.dialect.DBType() == core.MYSQL {
sqlStr = fmt.Sprintf("INSERT INTO %s VALUES ()", session.engine.Quote(tableName))
} else {
- sqlStr = fmt.Sprintf("INSERT INTO %s DEFAULT VALUES", session.engine.Quote(tableName))
+ sqlStr = fmt.Sprintf("INSERT INTO %s%s DEFAULT VALUES", session.engine.Quote(tableName), output)
}
}
+ if len(table.AutoIncrement) > 0 && session.engine.dialect.DBType() == core.POSTGRES {
+ sqlStr = sqlStr + " RETURNING " + session.engine.Quote(table.AutoIncrement)
+ }
+
handleAfterInsertProcessorFunc := func(bean interface{}) {
if session.isAutoCommit {
for _, closure := range session.afterClosures {
@@ -423,9 +468,7 @@ func (session *Session) innerInsert(bean interface{}) (int64, error) {
aiValue.Set(int64ToIntValue(id, aiValue.Type()))
return 1, nil
- } else if session.engine.dialect.DBType() == core.POSTGRES && len(table.AutoIncrement) > 0 {
- //assert table.AutoIncrement != ""
- sqlStr = sqlStr + " RETURNING " + session.engine.Quote(table.AutoIncrement)
+ } else if len(table.AutoIncrement) > 0 && (session.engine.dialect.DBType() == core.POSTGRES || session.engine.dialect.DBType() == core.MSSQL) {
res, err := session.queryBytes(sqlStr, args...)
if err != nil {
@@ -445,7 +488,7 @@ func (session *Session) innerInsert(bean interface{}) (int64, error) {
}
if len(res) < 1 {
- return 0, errors.New("insert no error but not returned id")
+ return 0, errors.New("insert successfully but not returned id")
}
idByte := res[0][table.AutoIncrement]
@@ -622,3 +665,83 @@ func (session *Session) genInsertColumns(bean interface{}) ([]string, []interfac
}
return colNames, args, nil
}
+
+func (session *Session) insertMapInterface(m map[string]interface{}) (int64, error) {
+ if len(m) == 0 {
+ return 0, ErrParamsType
+ }
+
+ var columns = make([]string, 0, len(m))
+ for k := range m {
+ columns = append(columns, k)
+ }
+ sort.Strings(columns)
+
+ qm := strings.Repeat("?,", len(columns))
+ qm = "(" + qm[:len(qm)-1] + ")"
+
+ tableName := session.statement.TableName()
+ if len(tableName) <= 0 {
+ return 0, ErrTableNotFound
+ }
+
+ var sql = fmt.Sprintf("INSERT INTO %s (`%s`) VALUES %s", session.engine.Quote(tableName), strings.Join(columns, "`,`"), qm)
+ var args = make([]interface{}, 0, len(m))
+ for _, colName := range columns {
+ args = append(args, m[colName])
+ }
+
+ if err := session.cacheInsert(tableName); err != nil {
+ return 0, err
+ }
+
+ res, err := session.exec(sql, args...)
+ if err != nil {
+ return 0, err
+ }
+ affected, err := res.RowsAffected()
+ if err != nil {
+ return 0, err
+ }
+ return affected, nil
+}
+
+func (session *Session) insertMapString(m map[string]string) (int64, error) {
+ if len(m) == 0 {
+ return 0, ErrParamsType
+ }
+
+ var columns = make([]string, 0, len(m))
+ for k := range m {
+ columns = append(columns, k)
+ }
+ sort.Strings(columns)
+
+ qm := strings.Repeat("?,", len(columns))
+ qm = "(" + qm[:len(qm)-1] + ")"
+
+ tableName := session.statement.TableName()
+ if len(tableName) <= 0 {
+ return 0, ErrTableNotFound
+ }
+
+ var sql = fmt.Sprintf("INSERT INTO %s (`%s`) VALUES %s", session.engine.Quote(tableName), strings.Join(columns, "`,`"), qm)
+ var args = make([]interface{}, 0, len(m))
+ for _, colName := range columns {
+ args = append(args, m[colName])
+ }
+
+ if err := session.cacheInsert(tableName); err != nil {
+ return 0, err
+ }
+
+ res, err := session.exec(sql, args...)
+ if err != nil {
+ return 0, err
+ }
+ affected, err := res.RowsAffected()
+ if err != nil {
+ return 0, err
+ }
+ return affected, nil
+}
diff --git a/vendor/github.com/go-xorm/xorm/session_iterate.go b/vendor/github.com/go-xorm/xorm/session_iterate.go
index 071fce4992..ca996c2884 100644
--- a/vendor/github.com/go-xorm/xorm/session_iterate.go
+++ b/vendor/github.com/go-xorm/xorm/session_iterate.go
@@ -23,6 +23,10 @@ func (session *Session) Iterate(bean interface{}, fun IterFunc) error {
defer session.Close()
}
+ if session.statement.lastError != nil {
+ return session.statement.lastError
+ }
+
if session.statement.bufferSize > 0 {
return session.bufferIterate(bean, fun)
}
diff --git a/vendor/github.com/go-xorm/xorm/session_query.go b/vendor/github.com/go-xorm/xorm/session_query.go
index 6d597cc459..21c00b8d7f 100644
--- a/vendor/github.com/go-xorm/xorm/session_query.go
+++ b/vendor/github.com/go-xorm/xorm/session_query.go
@@ -11,13 +11,13 @@ import (
"strings"
"time"
- "github.com/go-xorm/builder"
- "github.com/go-xorm/core"
+ "xorm.io/builder"
+ "xorm.io/core"
)
-func (session *Session) genQuerySQL(sqlorArgs ...interface{}) (string, []interface{}, error) {
- if len(sqlorArgs) > 0 {
- return convertSQLOrArgs(sqlorArgs...)
+func (session *Session) genQuerySQL(sqlOrArgs ...interface{}) (string, []interface{}, error) {
+ if len(sqlOrArgs) > 0 {
+ return convertSQLOrArgs(sqlOrArgs...)
}
if session.statement.RawSQL != "" {
@@ -78,12 +78,12 @@ func (session *Session) genQuerySQL(sqlorArgs ...interface{}) (string, []interfa
}
// Query runs a raw sql and return records as []map[string][]byte
-func (session *Session) Query(sqlorArgs ...interface{}) ([]map[string][]byte, error) {
+func (session *Session) Query(sqlOrArgs ...interface{}) ([]map[string][]byte, error) {
if session.isAutoClose {
defer session.Close()
}
- sqlStr, args, err := session.genQuerySQL(sqlorArgs...)
+ sqlStr, args, err := session.genQuerySQL(sqlOrArgs...)
if err != nil {
return nil, err
}
@@ -227,12 +227,12 @@ func rows2SliceString(rows *core.Rows) (resultsSlice [][]string, err error) {
}
// QueryString runs a raw sql and return records as []map[string]string
-func (session *Session) QueryString(sqlorArgs ...interface{}) ([]map[string]string, error) {
+func (session *Session) QueryString(sqlOrArgs ...interface{}) ([]map[string]string, error) {
if session.isAutoClose {
defer session.Close()
}
- sqlStr, args, err := session.genQuerySQL(sqlorArgs...)
+ sqlStr, args, err := session.genQuerySQL(sqlOrArgs...)
if err != nil {
return nil, err
}
@@ -247,12 +247,12 @@ func (session *Session) QueryString(sqlorArgs ...interface{}) ([]map[string]stri
}
// QuerySliceString runs a raw sql and return records as [][]string
-func (session *Session) QuerySliceString(sqlorArgs ...interface{}) ([][]string, error) {
+func (session *Session) QuerySliceString(sqlOrArgs ...interface{}) ([][]string, error) {
if session.isAutoClose {
defer session.Close()
}
- sqlStr, args, err := session.genQuerySQL(sqlorArgs...)
+ sqlStr, args, err := session.genQuerySQL(sqlOrArgs...)
if err != nil {
return nil, err
}
@@ -300,12 +300,12 @@ func rows2Interfaces(rows *core.Rows) (resultsSlice []map[string]interface{}, er
}
// QueryInterface runs a raw sql and return records as []map[string]interface{}
-func (session *Session) QueryInterface(sqlorArgs ...interface{}) ([]map[string]interface{}, error) {
+func (session *Session) QueryInterface(sqlOrArgs ...interface{}) ([]map[string]interface{}, error) {
if session.isAutoClose {
defer session.Close()
}
- sqlStr, args, err := session.genQuerySQL(sqlorArgs...)
+ sqlStr, args, err := session.genQuerySQL(sqlOrArgs...)
if err != nil {
return nil, err
}
diff --git a/vendor/github.com/go-xorm/xorm/session_raw.go b/vendor/github.com/go-xorm/xorm/session_raw.go
index 47823d6706..67648ef130 100644
--- a/vendor/github.com/go-xorm/xorm/session_raw.go
+++ b/vendor/github.com/go-xorm/xorm/session_raw.go
@@ -9,8 +9,8 @@ import (
"reflect"
"time"
- "github.com/go-xorm/builder"
- "github.com/go-xorm/core"
+ "xorm.io/builder"
+ "xorm.io/core"
)
func (session *Session) queryPreprocess(sqlStr *string, paramStr ...interface{}) {
@@ -49,7 +49,7 @@ func (session *Session) queryRows(sqlStr string, args ...interface{}) (*core.Row
if session.isAutoCommit {
var db *core.DB
- if session.engine.engineGroup != nil {
+ if session.sessionType == groupSession {
db = session.engine.engineGroup.Slave().DB()
} else {
db = session.DB()
@@ -62,21 +62,21 @@ func (session *Session) queryRows(sqlStr string, args ...interface{}) (*core.Row
return nil, err
}
- rows, err := stmt.Query(args...)
+ rows, err := stmt.QueryContext(session.ctx, args...)
if err != nil {
return nil, err
}
return rows, nil
}
- rows, err := db.Query(sqlStr, args...)
+ rows, err := db.QueryContext(session.ctx, sqlStr, args...)
if err != nil {
return nil, err
}
return rows, nil
}
- rows, err := session.tx.Query(sqlStr, args...)
+ rows, err := session.tx.QueryContext(session.ctx, sqlStr, args...)
if err != nil {
return nil, err
}
@@ -175,7 +175,7 @@ func (session *Session) exec(sqlStr string, args ...interface{}) (sql.Result, er
}
if !session.isAutoCommit {
- return session.tx.Exec(sqlStr, args...)
+ return session.tx.ExecContext(session.ctx, sqlStr, args...)
}
if session.prepareStmt {
@@ -184,24 +184,24 @@ func (session *Session) exec(sqlStr string, args ...interface{}) (sql.Result, er
return nil, err
}
- res, err := stmt.Exec(args...)
+ res, err := stmt.ExecContext(session.ctx, args...)
if err != nil {
return nil, err
}
return res, nil
}
- return session.DB().Exec(sqlStr, args...)
+ return session.DB().ExecContext(session.ctx, sqlStr, args...)
}
-func convertSQLOrArgs(sqlorArgs ...interface{}) (string, []interface{}, error) {
- switch sqlorArgs[0].(type) {
+func convertSQLOrArgs(sqlOrArgs ...interface{}) (string, []interface{}, error) {
+ switch sqlOrArgs[0].(type) {
case string:
- return sqlorArgs[0].(string), sqlorArgs[1:], nil
+ return sqlOrArgs[0].(string), sqlOrArgs[1:], nil
case *builder.Builder:
- return sqlorArgs[0].(*builder.Builder).ToSQL()
+ return sqlOrArgs[0].(*builder.Builder).ToSQL()
case builder.Builder:
- bd := sqlorArgs[0].(builder.Builder)
+ bd := sqlOrArgs[0].(builder.Builder)
return bd.ToSQL()
}
@@ -209,16 +209,16 @@ func convertSQLOrArgs(sqlorArgs ...interface{}) (string, []interface{}, error) {
}
// Exec raw sql
-func (session *Session) Exec(sqlorArgs ...interface{}) (sql.Result, error) {
+func (session *Session) Exec(sqlOrArgs ...interface{}) (sql.Result, error) {
if session.isAutoClose {
defer session.Close()
}
- if len(sqlorArgs) == 0 {
+ if len(sqlOrArgs) == 0 {
return nil, ErrUnSupportedType
}
- sqlStr, args, err := convertSQLOrArgs(sqlorArgs...)
+ sqlStr, args, err := convertSQLOrArgs(sqlOrArgs...)
if err != nil {
return nil, err
}
diff --git a/vendor/github.com/go-xorm/xorm/session_schema.go b/vendor/github.com/go-xorm/xorm/session_schema.go
index 369ec72a4d..da5c885599 100644
--- a/vendor/github.com/go-xorm/xorm/session_schema.go
+++ b/vendor/github.com/go-xorm/xorm/session_schema.go
@@ -9,7 +9,7 @@ import (
"fmt"
"strings"
- "github.com/go-xorm/core"
+ "xorm.io/core"
)
// Ping test if database is ok
@@ -19,7 +19,7 @@ func (session *Session) Ping() error {
}
session.engine.logger.Infof("PING DATABASE %v", session.engine.DriverName())
- return session.DB().Ping()
+ return session.DB().PingContext(session.ctx)
}
// CreateTable create a table according a bean
diff --git a/vendor/github.com/go-xorm/xorm/session_tx.go b/vendor/github.com/go-xorm/xorm/session_tx.go
index c8d759a31a..ee3d473f95 100644
--- a/vendor/github.com/go-xorm/xorm/session_tx.go
+++ b/vendor/github.com/go-xorm/xorm/session_tx.go
@@ -7,7 +7,7 @@ package xorm
// Begin a transaction
func (session *Session) Begin() error {
if session.isAutoCommit {
- tx, err := session.DB().Begin()
+ tx, err := session.DB().BeginTx(session.ctx, nil)
if err != nil {
return err
}
diff --git a/vendor/github.com/go-xorm/xorm/session_update.go b/vendor/github.com/go-xorm/xorm/session_update.go
index 37b34ff3dd..216c4e87dd 100644
--- a/vendor/github.com/go-xorm/xorm/session_update.go
+++ b/vendor/github.com/go-xorm/xorm/session_update.go
@@ -11,8 +11,8 @@ import (
"strconv"
"strings"
- "github.com/go-xorm/builder"
- "github.com/go-xorm/core"
+ "xorm.io/builder"
+ "xorm.io/core"
)
func (session *Session) cacheUpdate(table *core.Table, tableName, sqlStr string, args ...interface{}) error {
@@ -147,6 +147,10 @@ func (session *Session) Update(bean interface{}, condiBean ...interface{}) (int6
defer session.Close()
}
+ if session.statement.lastError != nil {
+ return 0, session.statement.lastError
+ }
+
v := rValue(bean)
t := v.Type()
@@ -240,23 +244,39 @@ func (session *Session) Update(bean interface{}, condiBean ...interface{}) (int6
}
var autoCond builder.Cond
- if !session.statement.noAutoCondition && len(condiBean) > 0 {
- if c, ok := condiBean[0].(map[string]interface{}); ok {
- autoCond = builder.Eq(c)
- } else {
- ct := reflect.TypeOf(condiBean[0])
- k := ct.Kind()
- if k == reflect.Ptr {
- k = ct.Elem().Kind()
+ if !session.statement.noAutoCondition {
+ condBeanIsStruct := false
+ if len(condiBean) > 0 {
+ if c, ok := condiBean[0].(map[string]interface{}); ok {
+ autoCond = builder.Eq(c)
+ } else {
+ ct := reflect.TypeOf(condiBean[0])
+ k := ct.Kind()
+ if k == reflect.Ptr {
+ k = ct.Elem().Kind()
+ }
+ if k == reflect.Struct {
+ var err error
+ autoCond, err = session.statement.buildConds(session.statement.RefTable, condiBean[0], true, true, false, true, false)
+ if err != nil {
+ return 0, err
+ }
+ condBeanIsStruct = true
+ } else {
+ return 0, ErrConditionType
+ }
}
- if k == reflect.Struct {
- var err error
- autoCond, err = session.statement.buildConds(session.statement.RefTable, condiBean[0], true, true, false, true, false)
- if err != nil {
- return 0, err
+ }
+
+ if !condBeanIsStruct && table != nil {
+ if col := table.DeletedColumn(); col != nil && !session.statement.unscoped { // tag "deleted" is enabled
+ autoCond1 := session.engine.CondDeleted(session.engine.Quote(col.Name))
+
+ if autoCond == nil {
+ autoCond = autoCond1
+ } else {
+ autoCond = autoCond.And(autoCond1)
}
- } else {
- return 0, ErrConditionType
}
}
}
diff --git a/vendor/github.com/go-xorm/xorm/statement.go b/vendor/github.com/go-xorm/xorm/statement.go
index a7f7010ad2..88b8423517 100644
--- a/vendor/github.com/go-xorm/xorm/statement.go
+++ b/vendor/github.com/go-xorm/xorm/statement.go
@@ -6,15 +6,14 @@ package xorm
import (
"database/sql/driver"
- "encoding/json"
"errors"
"fmt"
"reflect"
"strings"
"time"
- "github.com/go-xorm/builder"
- "github.com/go-xorm/core"
+ "xorm.io/builder"
+ "xorm.io/core"
)
// Statement save all the sql info for executing SQL
@@ -60,6 +59,7 @@ type Statement struct {
cond builder.Cond
bufferSize int
context ContextCache
+ lastError error
}
// Init reset all the statement's fields
@@ -101,6 +101,7 @@ func (statement *Statement) Init() {
statement.cond = builder.NewCond()
statement.bufferSize = 0
statement.context = nil
+ statement.lastError = nil
}
// NoAutoCondition if you do not want convert bean's field as query condition, then use this function
@@ -125,13 +126,13 @@ func (statement *Statement) SQL(query interface{}, args ...interface{}) *Stateme
var err error
statement.RawSQL, statement.RawParams, err = query.(*builder.Builder).ToSQL()
if err != nil {
- statement.Engine.logger.Error(err)
+ statement.lastError = err
}
case string:
statement.RawSQL = query.(string)
statement.RawParams = args
default:
- statement.Engine.logger.Error("unsupported sql type")
+ statement.lastError = ErrUnSupportedSQLType
}
return statement
@@ -160,7 +161,7 @@ func (statement *Statement) And(query interface{}, args ...interface{}) *Stateme
}
}
default:
- // TODO: not support condition type
+ statement.lastError = ErrConditionType
}
return statement
@@ -406,7 +407,7 @@ func (statement *Statement) buildUpdates(bean interface{},
} else {
// Blank struct could not be as update data
if requiredField || !isStructZero(fieldValue) {
- bytes, err := json.Marshal(fieldValue.Interface())
+ bytes, err := DefaultJSONHandler.Marshal(fieldValue.Interface())
if err != nil {
panic(fmt.Sprintf("mashal %v failed", fieldValue.Interface()))
}
@@ -435,7 +436,7 @@ func (statement *Statement) buildUpdates(bean interface{},
}
if col.SQLType.IsText() {
- bytes, err := json.Marshal(fieldValue.Interface())
+ bytes, err := DefaultJSONHandler.Marshal(fieldValue.Interface())
if err != nil {
engine.logger.Error(err)
continue
@@ -455,7 +456,7 @@ func (statement *Statement) buildUpdates(bean interface{},
fieldType.Elem().Kind() == reflect.Uint8 {
val = fieldValue.Slice(0, 0).Interface()
} else {
- bytes, err = json.Marshal(fieldValue.Interface())
+ bytes, err = DefaultJSONHandler.Marshal(fieldValue.Interface())
if err != nil {
engine.logger.Error(err)
continue
@@ -755,9 +756,32 @@ func (statement *Statement) Join(joinOP string, tablename interface{}, condition
fmt.Fprintf(&buf, "%v JOIN ", joinOP)
}
- tbName := statement.Engine.TableName(tablename, true)
+ switch tp := tablename.(type) {
+ case builder.Builder:
+ subSQL, subQueryArgs, err := tp.ToSQL()
+ if err != nil {
+ statement.lastError = err
+ return statement
+ }
+ tbs := strings.Split(tp.TableName(), ".")
+ var aliasName = strings.Trim(tbs[len(tbs)-1], statement.Engine.QuoteStr())
+ fmt.Fprintf(&buf, "(%s) %s ON %v", subSQL, aliasName, condition)
+ statement.joinArgs = append(statement.joinArgs, subQueryArgs...)
+ case *builder.Builder:
+ subSQL, subQueryArgs, err := tp.ToSQL()
+ if err != nil {
+ statement.lastError = err
+ return statement
+ }
+ tbs := strings.Split(tp.TableName(), ".")
+ var aliasName = strings.Trim(tbs[len(tbs)-1], statement.Engine.QuoteStr())
+ fmt.Fprintf(&buf, "(%s) %s ON %v", subSQL, aliasName, condition)
+ statement.joinArgs = append(statement.joinArgs, subQueryArgs...)
+ default:
+ tbName := statement.Engine.TableName(tablename, true)
+ fmt.Fprintf(&buf, "%s ON %v", tbName, condition)
+ }
- fmt.Fprintf(&buf, "%s ON %v", tbName, condition)
statement.JoinStr = buf.String()
statement.joinArgs = append(statement.joinArgs, args...)
return statement
@@ -1064,7 +1088,7 @@ func (statement *Statement) genSelectSQL(columnStr, condSQL string, needLimit, n
if dialect.DBType() == core.MSSQL {
if statement.LimitN > 0 {
- top = fmt.Sprintf(" TOP %d ", statement.LimitN)
+ top = fmt.Sprintf("TOP %d ", statement.LimitN)
}
if statement.Start > 0 {
var column string
diff --git a/vendor/github.com/go-xorm/xorm/syslogger.go b/vendor/github.com/go-xorm/xorm/syslogger.go
index 8840635d4c..11ba01e7bd 100644
--- a/vendor/github.com/go-xorm/xorm/syslogger.go
+++ b/vendor/github.com/go-xorm/xorm/syslogger.go
@@ -10,7 +10,7 @@ import (
"fmt"
"log/syslog"
- "github.com/go-xorm/core"
+ "xorm.io/core"
)
var _ core.ILogger = &SyslogLogger{}
diff --git a/vendor/github.com/go-xorm/xorm/tag.go b/vendor/github.com/go-xorm/xorm/tag.go
index e1c821fb54..eb87be7829 100644
--- a/vendor/github.com/go-xorm/xorm/tag.go
+++ b/vendor/github.com/go-xorm/xorm/tag.go
@@ -11,7 +11,7 @@ import (
"strings"
"time"
- "github.com/go-xorm/core"
+ "xorm.io/core"
)
type tagContext struct {
diff --git a/vendor/github.com/go-xorm/xorm/test_mssql.sh b/vendor/github.com/go-xorm/xorm/test_mssql.sh
index 6f9cf7295f..7f060cff32 100644
--- a/vendor/github.com/go-xorm/xorm/test_mssql.sh
+++ b/vendor/github.com/go-xorm/xorm/test_mssql.sh
@@ -1 +1 @@
-go test -db=mssql -conn_str="server=192.168.1.58;user id=sa;password=123456;database=xorm_test" \ No newline at end of file
+go test -db=mssql -conn_str="server=localhost;user id=sa;password=yourStrong(!)Password;database=xorm_test" \ No newline at end of file
diff --git a/vendor/github.com/go-xorm/xorm/test_tidb.sh b/vendor/github.com/go-xorm/xorm/test_tidb.sh
new file mode 100644
index 0000000000..03d2d6cd82
--- /dev/null
+++ b/vendor/github.com/go-xorm/xorm/test_tidb.sh
@@ -0,0 +1 @@
+go test -db=mysql -conn_str="root:@tcp(localhost:4000)/xorm_test" -ignore_select_update=true \ No newline at end of file
diff --git a/vendor/github.com/go-xorm/xorm/types.go b/vendor/github.com/go-xorm/xorm/types.go
index 99d761c278..c76a546065 100644
--- a/vendor/github.com/go-xorm/xorm/types.go
+++ b/vendor/github.com/go-xorm/xorm/types.go
@@ -1,9 +1,13 @@
+// Copyright 2017 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 xorm
import (
"reflect"
- "github.com/go-xorm/core"
+ "xorm.io/core"
)
var (
diff --git a/vendor/github.com/go-xorm/xorm/xorm.go b/vendor/github.com/go-xorm/xorm/xorm.go
index 739de8d429..26d00d264d 100644
--- a/vendor/github.com/go-xorm/xorm/xorm.go
+++ b/vendor/github.com/go-xorm/xorm/xorm.go
@@ -7,6 +7,7 @@
package xorm
import (
+ "context"
"fmt"
"os"
"reflect"
@@ -14,7 +15,7 @@ import (
"sync"
"time"
- "github.com/go-xorm/core"
+ "xorm.io/core"
)
const (
@@ -85,14 +86,15 @@ func NewEngine(driverName string, dataSourceName string) (*Engine, error) {
}
engine := &Engine{
- db: db,
- dialect: dialect,
- Tables: make(map[reflect.Type]*core.Table),
- mutex: &sync.RWMutex{},
- TagIdentifier: "xorm",
- TZLocation: time.Local,
- tagHandlers: defaultTagHandlers,
- cachers: make(map[string]core.Cacher),
+ db: db,
+ dialect: dialect,
+ Tables: make(map[reflect.Type]*core.Table),
+ mutex: &sync.RWMutex{},
+ TagIdentifier: "xorm",
+ TZLocation: time.Local,
+ tagHandlers: defaultTagHandlers,
+ cachers: make(map[string]core.Cacher),
+ defaultContext: context.Background(),
}
if uri.DbType == core.SQLITE {