Commit Graph

231 Commits

Author SHA1 Message Date
蜻蜓特派员 9f1a7f5351 optimize getColumnAsArray (#2196) 2019-01-02 21:32:08 +08:00
teresy 68f5d25d64 simplify cases of strings.Index with strings.Contains (#2162) 2018-11-03 21:56:27 +08:00
ch3rub1m 5be9bd3413 Rollback transaction when a panic happens in callback (#2093) 2018-09-14 15:53:49 +08:00
Eyal Posener 123d4f50ef lock TagSettings structure when modified (#1796)
The map is modified in different places in the code which results in race conditions
on execution.
This commit locks the map with read-write lock when it is modified
2018-09-10 07:11:00 +08:00
Xy Ziemba 71b7f19aad Fix scanning identical column names occurring >2 times (#2080)
Fix the indexing logic used in selectedColumnsMap to skip fields
that have already been seen. The values of selectedColumns map
must be indexed relative to fields, not relative to selectFields.
2018-09-10 06:12:58 +08:00
Jinzhu dc3b2476c4 Don't save ignored fields into database 2018-09-10 06:03:41 +08:00
Adem Özay 6f58f8a52c added naming strategy option for db, table and column names (#2040) 2018-09-10 05:52:20 +08:00
hector 53995294ef Change buildCondition TableName to struct's TableName when query is interface{} (#2011) 2018-08-19 07:13:16 +08:00
Alexey 409121d9e3 Fixed mysql query syntax for FK removal (#1993) 2018-07-27 07:43:49 +08:00
Kevin ac3ec858a6 Edit DB.clone(), DB.Dialect(), and Scope.Dialect() preserve transactions (#1939)
* Edit DB.clone(), DB.Dialect(), and Scope.Dialect() preserve transactions.

* Adds a test case for tables creations and autoMigrate in the same transaction.
2018-07-27 07:35:53 +08:00
Shane 6842b49a1a fix scope.removeForeignKey method (#1841) 2018-04-16 09:20:02 -05:00
Saúl Ortega 52c5c8127c Support for UTF8 names on DB (#1793) 2018-03-15 22:35:31 +08:00
Jinzhu 6ed508ec6a Fix panic with raw SQL 2018-02-28 07:43:56 +08:00
Jinzhu becd777b1e Fix unicode chars in SQL 2018-02-13 12:37:39 +08:00
Jinzhu 67c4280c57 Fix support embedded pointer type struct, close #1450 2018-02-13 10:00:18 +08:00
Jinzhu cfd1cc586a Add 2D array support, close #1201 2018-02-13 08:33:11 +08:00
Jinzhu 8005321a1c Allow table option when DropTable, close #1514 2018-02-12 14:49:24 +08:00
Jinzhu 30adc80edc Test customize data type for primary key 2018-02-12 13:20:55 +08:00
Jinzhu 7e2bb3d7fa Allow customize table name when creating index, close #1656 2018-02-12 11:56:51 +08:00
Jinzhu 7a8c2bbff8 Refactor build SQL condition 2018-02-12 00:06:31 +08:00
Jinzhu 86c04795b7 Port PR #1655 to Not query builder 2018-02-11 15:52:52 +08:00
andrew 8d66eb4926 fixed wrong param substitution order 2018-02-11 14:58:22 +08:00
Jinzhu 46269198a4 Refactor PR #1569 2018-02-11 13:41:46 +08:00
matematik7 36043ad905 Fix for quoted column names and add test 2018-02-11 13:11:54 +08:00
matematik7 841ea1bde5 Do not always override select on pluck 2018-02-11 13:11:54 +08:00
Jinzhu c503108f83 Refactor fix valuer 2018-02-11 12:48:08 +08:00
Viktor Nikolaiev ba3e6201c7 fixed issue with null values in where conditions 2018-02-11 09:19:57 +08:00
Viktor Nikolaiev 3b6d790e93 Made it possible to implement driver.Valuer for byte slices 2018-02-11 09:19:57 +08:00
Jinzhu fd15156d39 Fix Count in mssql for SQL with group 2018-02-11 09:16:10 +08:00
Jinzhu 85774eb9da
Merge branch 'master' into master 2018-02-10 22:25:28 +08:00
Jinzhu b2b568daa8 Add tag association_autoupdate, association_autocreate, association_save_reference support 2018-02-10 17:34:02 +08:00
Jinzhu 43dc867644 Allow save association relations w/o saving association 2018-02-10 17:34:02 +08:00
Jinzhu 89a726ce5d Move ModifyColumn implemention to Dialect 2018-02-09 22:58:34 +08:00
Jinzhu e9309d361f Fix build exception 2018-02-09 22:34:59 +08:00
Amit Yadav 0e1cb6ece9 Add support to remove foreign key constraints (#1686) 2018-02-09 22:20:26 +08:00
Jinzhu 802104cc7c Use BuildKeyName to build db's index name 2018-02-02 22:01:31 +08:00
Jinzhu 630c12b549 Refactor #1693 2018-01-31 17:14:21 +08:00
Wing Gao 26262ef9bb autoIndex should throw an error on failed 2017-11-28 13:05:48 +08:00
Horacio Duran 3a9e91ab37 Correct ModifyColumn SQL syntax. (#1614)
* Correct ModifyColumn SQL syntax.

The generated SQL for ModifyColumn was:

`ALTER TABLE "tablename" MODIFY "columname" type`

But should have been:

`ALTER TABLE "tablename" ALTER COLUMN "columname" TYPE type`

since Modify does not seem to be entirely compatible with all Engines

* Test ModifyColumn

* Skip ModifyColumnType test on incompatible DBs

Some DB Engines don't fully support alter table so we skip
when the dialect does not correspond to one of the ones that
are known to support it.
2017-09-28 22:48:21 +08:00
Code 56fffcb25b fix count() …
COUNT()函数逻辑有错误,本应该是在执行任何SQL的时候,都可以返回正确的行数。而现在复杂的SQL集合无法正确获取行数。
2017-08-29 18:50:40 +08:00
Jinzhu e5432b14d2 Add QueryExpr, thanks @ManReinsp for PR #1548 2017-08-11 18:41:04 +08:00
Ivan Valkov 2a1463811e Allow use number as column name (#1517)
* Updated scope.go to always quote when adding index

I am using numbers for column names (to be compatible with protobuf) and adding unique index to them does not work since they are not quoted. I do not see a reason to check if the column name is a string in order to quote it. Correct me if I am wrong.

* Updated the columnRegexp to include decimals

* Update scope.go
2017-07-03 21:49:54 +08:00
Jinzhu 2a041971f9 Change bind var to 24652$ to avoid possible confliction 2017-04-18 16:13:02 +08:00
Jinzhu 66d5b42ee9 Add error if exists after parse raw query results, fix #1398 2017-03-24 09:28:06 +08:00
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
Jinzhu e4b130d2d7 Fix customize DeletedAt's column name 2017-02-01 21:33:36 +08:00
Jinzhu c62e9bcabe Query Row, Rows inside RowQuery callbacks 2017-01-15 18:03:12 +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
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