Commit Graph

1525 Commits

Author SHA1 Message Date
Russ Egan 45f1a95051 Replace all use of *sql.DB with sqlCommon
Exporting sqlCommon as SQLCommon.

This allows passing alternate implementations of the database connection, or wrapping the connection with middleware.  This change didn't change any usages of the database variables.  All usages were already only using the functions defined in SQLCommon.

This does cause a breaking change in Dialect, since *sql.DB was referenced in the interface.
2017-03-14 17:02:14 -04:00
Bertram Truong eb6a34b138 Remove 'sqlite' dialect registration 2017-03-05 23:07:12 +11:00
Jinzhu 5409931a1b Merge pull request #1364 from captncraig/mssql-fix
Fix issue with mssql NEXT option.
2017-02-22 08:28:20 +08:00
Craig Peterson c3276eb221 fix issue with mssql NEXT option.
Fixes #1205
2017-02-21 14:23:01 -07:00
Jinzhu 5050a58b45 Merge pull request #1352 from DiSiqueira/small_changes
Fixing 4 typos in comments and gofmt -s in all files
2017-02-12 20:45:29 +08:00
DiSiqueira 2cd7acefc3 Fixing 4 typos in comments and gofmt -s in all files 2017-02-10 16:16:38 -02:00
Jinzhu adf9b80fb7 Refactor format log for postgres 2017-02-10 16:50:55 +08:00
Jinzhu df6c3c9237 Refactor format log for postgres 2017-02-10 16:49:28 +08:00
Jinzhu c730b30a78 Fix "Unsupported destination" error when value is pointer of pointer 2017-02-07 08:32:18 +08:00
Jinzhu b870f86fba Fix set Scanner's data type 2017-02-06 08:43:49 +08:00
Jinzhu 6633f325b8 Fix table name in singular mode in some cases 2017-02-05 18:38:30 +08:00
Jinzhu 1558522aaa Refactor 2017-02-05 15:10:28 +08:00
Jinzhu 23abd03a95 Add error if exists after parse query results 2017-02-02 22:29:41 +08:00
Jinzhu 1092523ce2 Fix check length for Array, Map, Slice 2017-02-02 08:58:28 +08:00
Jinzhu e4b130d2d7 Fix customize DeletedAt's column name 2017-02-01 21:33:36 +08:00
Jinzhu 89f6d74b5e Update isBlank checker 2017-01-25 17:42:15 +08:00
Jinzhu 7fb9b62c17 Apply Before('gorm:row_query') for row query callbacks w/o specify order for compatibility 2017-01-16 09:48:06 +08:00
Jinzhu a3b8b332ed Allow customize data type via ParseFieldStructForDialect 2017-01-15 21:45:17 +08:00
Jinzhu c62e9bcabe Query Row, Rows inside RowQuery callbacks 2017-01-15 18:03:12 +08:00
Jinzhu 97949fdbc1 Refactor Logger 2017-01-15 16:58:55 +08:00
Jinzhu 2c025b25fe Merge pull request #1256 from fobispo-link/master
Issue  #1249 fix - replacing $ placeholders in order when logging
2017-01-15 16:03:52 +08:00
Jinzhu 1aa2d4ca89 Fix primary key for embedded struct 2017-01-09 20:07:39 +08:00
Jinzhu 373207d546 Merge pull request #1304 from gernest/patch-1
Fix *Scope.buildNotCondition
2017-01-05 22:27:20 +08:00
Geofrey Ernest eb0880e710 Fix *Scope.buildNotCondition
this fixes the logic of handling empty slice of int family in a query i.e something linke `[]int64{}`

This code snipped doesn't look like it was intended to be this way

```
	if reflect.ValueOf(value).Len() > 0 {
			str = fmt.Sprintf("(%v.%v NOT IN (?))", scope.QuotedTableName(), scope.Quote(primaryKey))
			clause["args"] = []interface{}{value}
		}
		return ""
```

The `return ""` is always guaranteed to be executed regardless of whether the length of value is greater than 0. I believe the intended behavior is to return  `""` when the length of value is zero.
2017-01-05 10:38:39 +03:00
Jinzhu da8c2409ab Merge pull request #1299 from maximesong/master
fix typo
2017-01-04 17:41:28 +08:00
Maxime Song 58cbc9c4b5 fix typo 2017-01-04 15:53:49 +08:00
Jinzhu f828909983 Add how to support this project to README 2017-01-02 20:56:38 +08:00
Jinzhu af31cf33a3 Merge pull request #1287 from gernest/typo
Fix typo
2017-01-02 12:06:51 +08:00
gernest e651609eaa
Fix typo 2016-12-21 11:11:23 +03:00
Jinzhu 0fbff1e8f0 Merge pull request #1284 from sandalwing/master
Compile regexp ahead of time
2016-12-20 18:27:27 +08:00
Xavier Sandal 5a4dca7645 Compile regexp ahead of time
Signed-off-by: Xavier Sandal <sandalwing@sandalwing.com>
2016-12-19 22:36:13 -05:00
Jinzhu 0f2ceb5a77 Add gorm:association:source for association operations for plugins to extend GORM 2016-12-05 18:30:07 +08:00
Jinzhu eb06255b66 Skip order sql when quering with distinct 2016-12-01 16:16:20 +08:00
Jinzhu 066abcef40 Merge pull request #1132 from zardak/preload-dedupe 2016-11-10 09:33:15 +08:00
Francisco Obispo 7f328975cd When using the LogMode(true), the SQL produced during the log message, places the bounded variables in the wrong location, this is due to the fact that the current implementation splits the values with a regex similar to: ($\d+)|?.
That works well for ? placeholders because they should be replaced in order.

However, the numeric placeholders should be replaced based on their value, for instance:

SELECT name,last FROM contact WHERE name=$2 and age=$1
Should NOT be replaced in order, because it will yield an incorrectly formed SQL command, which is not very useful for debugging.

Fixes issue: #1249
2016-11-09 17:05:21 -08:00
Jinzhu 45fc640bf3 Merge pull request #1252 from slockij/block-global-update-delete
Block global updates / deletes
2016-11-10 08:45:29 +08:00
Jinzhu 53d09952be Fix AddError for DB 2016-11-09 10:22:42 +08:00
slockij e26cb8dbc4 In some cases (Error not checked, missed data) one can perform very harmful operation - global update or delete (all records)
This is to prevent it.
2016-11-04 17:54:43 +01:00
Jinzhu 9edd66250e Return error when creating with unaddressable record in postgres 2016-11-04 20:58:41 +08:00
Jinzhu d5d3e3a67b Merge pull request #1242 from calebthompson/make-errors-public
Make gorm.Errors available for use outside gorm
2016-11-03 21:47:49 +08:00
Jinzhu f2fe351aa0 Merge pull request #1243 from smacker/raw_first_last
db.Raw().First() makes wrong sql fix #1214
2016-11-03 21:45:29 +08:00
Jinzhu 4a540f3ac8 Add tag to support skip nested save for associations 2016-10-27 10:31:46 +08:00
smacker cf7fbb56d5 db.Raw().First() makes wrong sql fix #1214 2016-10-26 21:32:27 +07:00
Jinzhu 56a7d1b69e Change query's prefix table for generated conditions 2016-10-26 17:35:51 +08:00
Caleb Thompson c063624c91
Make gorm.Errors available for use outside gorm
gorm.Errors, which usefully implements `error` for an `[]error` as
returned by `DB.GetError()` was already exported, but because it used a
private field `errors`, it was not able to be created due to the
compile-time error:

    implicit assignment of unexported field 'errors' in gorm.Errors literal

The trivial solution would be to export the `errors` field on
`gorm.Errors`, but this led to the issue that the common pattern of
checking `err != nil` failed because a struct{error: nil} != nil.

We can take advantage of type aliasing here to make Errors an []error,
which can in fact be nil and would pass `err != nil` on the happy path.

* Remove `(Errors) GetErrors()`, as it's less useful when Errors is an
  []error which can be iterated over. While this is technically a
  breaking change, we never expose an Errors and its difficult to build
  one (it can be done with the existing `(Errors) Add(error)`), but
  awkwardly. This removal can be reverted without issue and we can make
  it an identity method, but it seemed an opportune time to reduce API
  surface area on something that likely isn't used.
* Remove errorsInterface, as it's not useful without `(Errors)
  GetErrors()`
* Change `(*Errors) Add(error)` => `(Errors) Add(error...) Errors`
  because we can't modify even a *Errors when it's a type alias. This is
  more idiomatic as it follows the pattern of `slice = append(slice,
  element)` Go developers are familiar with.
2016-10-25 11:22:50 -05:00
Jinzhu c1b9cf186e Merge pull request #1210 from baijum/error-zero-args
If no arguments, return error at once
2016-10-23 22:58:23 +08:00
Jinzhu 89b7cbe89c Fix RowsAffected not returned for FirstOrCreate 2016-10-21 11:30:17 +08:00
Jinzhu a667ab8427 Fix Replace has one/many associations 2016-10-20 13:27:26 +08:00
Jinzhu 5d853fc53c Fix null time not allowed in mysql5.7 test error 2016-10-19 12:20:45 +08:00
Baiju Muthukadan bd513dd580 test case for single parameter for Open 2016-10-08 21:52:15 +05:30