aboutsummaryrefslogtreecommitdiff
path: root/vendor/github.com/jmoiron
diff options
context:
space:
mode:
authorNiall Sheridan <nsheridan@gmail.com>2018-06-20 22:39:07 +0100
committerNiall Sheridan <nsheridan@gmail.com>2018-06-20 22:39:07 +0100
commitde6d2c524430287c699aaa898c1325da6afea539 (patch)
treef78eb841208d667668a7bc92a9290d693cc7103b /vendor/github.com/jmoiron
parenteb99016e1629e690e55633de6fc63a14c53e7ea2 (diff)
Update dependencies
Diffstat (limited to 'vendor/github.com/jmoiron')
-rw-r--r--vendor/github.com/jmoiron/sqlx/README.md8
-rw-r--r--vendor/github.com/jmoiron/sqlx/bind.go5
-rw-r--r--vendor/github.com/jmoiron/sqlx/named.go12
-rw-r--r--vendor/github.com/jmoiron/sqlx/reflectx/reflect.go31
-rw-r--r--vendor/github.com/jmoiron/sqlx/sqlx.go18
-rw-r--r--vendor/github.com/jmoiron/sqlx/sqlx_context.go13
6 files changed, 68 insertions, 19 deletions
diff --git a/vendor/github.com/jmoiron/sqlx/README.md b/vendor/github.com/jmoiron/sqlx/README.md
index 5c1bb3c..c0db7f7 100644
--- a/vendor/github.com/jmoiron/sqlx/README.md
+++ b/vendor/github.com/jmoiron/sqlx/README.md
@@ -1,6 +1,6 @@
# sqlx
-[![Build Status](https://drone.io/github.com/jmoiron/sqlx/status.png)](https://drone.io/github.com/jmoiron/sqlx/latest) [![Godoc](http://img.shields.io/badge/godoc-reference-blue.svg?style=flat)](https://godoc.org/github.com/jmoiron/sqlx) [![license](http://img.shields.io/badge/license-MIT-red.svg?style=flat)](https://raw.githubusercontent.com/jmoiron/sqlx/master/LICENSE)
+[![Build Status](https://travis-ci.org/jmoiron/sqlx.svg?branch=master)](https://travis-ci.org/jmoiron/sqlx) [![Coverage Status](https://coveralls.io/repos/github/jmoiron/sqlx/badge.svg?branch=master)](https://coveralls.io/github/jmoiron/sqlx?branch=master) [![Godoc](http://img.shields.io/badge/godoc-reference-blue.svg?style=flat)](https://godoc.org/github.com/jmoiron/sqlx) [![license](http://img.shields.io/badge/license-MIT-red.svg?style=flat)](https://raw.githubusercontent.com/jmoiron/sqlx/master/LICENSE)
sqlx is a library which provides a set of extensions on go's standard
`database/sql` library. The sqlx versions of `sql.DB`, `sql.TX`, `sql.Stmt`,
@@ -66,10 +66,12 @@ usage.
package main
import (
- _ "github.com/lib/pq"
"database/sql"
- "github.com/jmoiron/sqlx"
+ "fmt"
"log"
+
+ _ "github.com/lib/pq"
+ "github.com/jmoiron/sqlx"
)
var schema = `
diff --git a/vendor/github.com/jmoiron/sqlx/bind.go b/vendor/github.com/jmoiron/sqlx/bind.go
index 10f7bdf..0fdc443 100644
--- a/vendor/github.com/jmoiron/sqlx/bind.go
+++ b/vendor/github.com/jmoiron/sqlx/bind.go
@@ -21,7 +21,7 @@ const (
// BindType returns the bindtype for a given database given a drivername.
func BindType(driverName string) int {
switch driverName {
- case "postgres", "pgx":
+ case "postgres", "pgx", "pq-timeouts", "cloudsqlpostgres":
return DOLLAR
case "mysql":
return QUESTION
@@ -113,7 +113,8 @@ func In(query string, args ...interface{}) (string, []interface{}, error) {
v := reflect.ValueOf(arg)
t := reflectx.Deref(v.Type())
- if t.Kind() == reflect.Slice {
+ // []byte is a driver.Value type so it should not be expanded
+ if t.Kind() == reflect.Slice && t != reflect.TypeOf([]byte{}) {
meta[i].length = v.Len()
meta[i].v = v
diff --git a/vendor/github.com/jmoiron/sqlx/named.go b/vendor/github.com/jmoiron/sqlx/named.go
index dd899d3..69eb954 100644
--- a/vendor/github.com/jmoiron/sqlx/named.go
+++ b/vendor/github.com/jmoiron/sqlx/named.go
@@ -163,16 +163,18 @@ func bindArgs(names []string, arg interface{}, m *reflectx.Mapper) ([]interface{
v = v.Elem()
}
- fields := m.TraversalsByName(v.Type(), names)
- for i, t := range fields {
+ err := m.TraversalsByNameFunc(v.Type(), names, func(i int, t []int) error {
if len(t) == 0 {
- return arglist, fmt.Errorf("could not find name %s in %#v", names[i], arg)
+ return fmt.Errorf("could not find name %s in %#v", names[i], arg)
}
+
val := reflectx.FieldByIndexesReadOnly(v, t)
arglist = append(arglist, val.Interface())
- }
- return arglist, nil
+ return nil
+ })
+
+ return arglist, err
}
// like bindArgs, but for maps.
diff --git a/vendor/github.com/jmoiron/sqlx/reflectx/reflect.go b/vendor/github.com/jmoiron/sqlx/reflectx/reflect.go
index f2802b8..73c21eb 100644
--- a/vendor/github.com/jmoiron/sqlx/reflectx/reflect.go
+++ b/vendor/github.com/jmoiron/sqlx/reflectx/reflect.go
@@ -166,20 +166,39 @@ func (m *Mapper) FieldsByName(v reflect.Value, names []string) []reflect.Value {
// traversals for each mapped name. Panics if t is not a struct or Indirectable
// to a struct. Returns empty int slice for each name not found.
func (m *Mapper) TraversalsByName(t reflect.Type, names []string) [][]int {
+ r := make([][]int, 0, len(names))
+ m.TraversalsByNameFunc(t, names, func(_ int, i []int) error {
+ if i == nil {
+ r = append(r, []int{})
+ } else {
+ r = append(r, i)
+ }
+
+ return nil
+ })
+ return r
+}
+
+// TraversalsByNameFunc traverses the mapped names and calls fn with the index of
+// each name and the struct traversal represented by that name. Panics if t is not
+// a struct or Indirectable to a struct. Returns the first error returned by fn or nil.
+func (m *Mapper) TraversalsByNameFunc(t reflect.Type, names []string, fn func(int, []int) error) error {
t = Deref(t)
mustBe(t, reflect.Struct)
tm := m.TypeMap(t)
-
- r := make([][]int, 0, len(names))
- for _, name := range names {
+ for i, name := range names {
fi, ok := tm.Names[name]
if !ok {
- r = append(r, []int{})
+ if err := fn(i, nil); err != nil {
+ return err
+ }
} else {
- r = append(r, fi.Index)
+ if err := fn(i, fi.Index); err != nil {
+ return err
+ }
}
}
- return r
+ return nil
}
// FieldByIndexes returns a value for the field given by the struct traversal
diff --git a/vendor/github.com/jmoiron/sqlx/sqlx.go b/vendor/github.com/jmoiron/sqlx/sqlx.go
index 4859d5a..4385c3f 100644
--- a/vendor/github.com/jmoiron/sqlx/sqlx.go
+++ b/vendor/github.com/jmoiron/sqlx/sqlx.go
@@ -228,6 +228,14 @@ func (r *Row) Columns() ([]string, error) {
return r.rows.Columns()
}
+// ColumnTypes returns the underlying sql.Rows.ColumnTypes(), or the deferred error
+func (r *Row) ColumnTypes() ([]*sql.ColumnType, error) {
+ if r.err != nil {
+ return []*sql.ColumnType{}, r.err
+ }
+ return r.rows.ColumnTypes()
+}
+
// Err returns the error encountered while scanning.
func (r *Row) Err() error {
return r.err
@@ -593,7 +601,7 @@ func (r *Rows) StructScan(dest interface{}) error {
return errors.New("must pass a pointer, not a value, to StructScan destination")
}
- v = reflect.Indirect(v)
+ v = v.Elem()
if !r.started {
columns, err := r.Columns()
@@ -627,10 +635,14 @@ func (r *Rows) StructScan(dest interface{}) error {
func Connect(driverName, dataSourceName string) (*DB, error) {
db, err := Open(driverName, dataSourceName)
if err != nil {
- return db, err
+ return nil, err
}
err = db.Ping()
- return db, err
+ if err != nil {
+ db.Close()
+ return nil, err
+ }
+ return db, nil
}
// MustConnect connects to a database and panics on error.
diff --git a/vendor/github.com/jmoiron/sqlx/sqlx_context.go b/vendor/github.com/jmoiron/sqlx/sqlx_context.go
index 0b17145..d58ff33 100644
--- a/vendor/github.com/jmoiron/sqlx/sqlx_context.go
+++ b/vendor/github.com/jmoiron/sqlx/sqlx_context.go
@@ -237,6 +237,19 @@ func (tx *Tx) NamedStmtContext(ctx context.Context, stmt *NamedStmt) *NamedStmt
}
}
+// PreparexContext returns an sqlx.Stmt instead of a sql.Stmt.
+//
+// The provided context is used for the preparation of the statement, not for
+// the execution of the statement.
+func (tx *Tx) PreparexContext(ctx context.Context, query string) (*Stmt, error) {
+ return PreparexContext(ctx, tx, query)
+}
+
+// PrepareNamedContext returns an sqlx.NamedStmt
+func (tx *Tx) PrepareNamedContext(ctx context.Context, query string) (*NamedStmt, error) {
+ return prepareNamedContext(ctx, tx, query)
+}
+
// MustExecContext runs MustExecContext within a transaction.
// Any placeholder parameters are replaced with supplied args.
func (tx *Tx) MustExecContext(ctx context.Context, query string, args ...interface{}) sql.Result {