Skip to content

Commit 062d996

Browse files
lunnyGuillermo PrandiJim SalemGuillermo Prandiyudppp
committed
For nullable columns, store nil values as NULL (go-xorm#531)
Merge branch 'master' into jcsalem/fix/nil_ptr_is_nullable fix bug when buffersize with iterate (go-xorm#941) Merge branch 'master' into lunny/fix_buffer_iterate Exclude schema from index name (#1505) Merge branch 'master' into fix-schema-idx SetExpr support more go types (#1499) Improve tests SetExpr support more go types fix vet fix drone lint remove go1.10 test on drone Reviewed-on: https://gitea.com/xorm/xorm/pulls/1499 fix vet fix drone lint remove go1.10 test on drone Exclude schema from the index name Co-authored-by: Guillermo Prandi <guillep2k@users.noreply.github.com> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com> Reviewed-on: https://gitea.com/xorm/xorm/pulls/1505 fix test fix bug fix bug when buffersize with iterate SetExpr support more go types (#1499) Improve tests SetExpr support more go types fix vet fix drone lint remove go1.10 test on drone Reviewed-on: https://gitea.com/xorm/xorm/pulls/1499 fix vet fix drone lint remove go1.10 test on drone Fix update with Alias (go-xorm#1455) Co-authored-by: Guillermo Prandi <guillep2k@noreply.gitea.io> Reviewed-on: https://gitea.com/xorm/xorm/pulls/941 fix update map with version (go-xorm#1448) fix test fix update map with version SetExpr support more go types (#1499) Improve tests SetExpr support more go types fix vet fix drone lint remove go1.10 test on drone Reviewed-on: https://gitea.com/xorm/xorm/pulls/1499 fix vet fix drone lint remove go1.10 test on drone Fix update with Alias (go-xorm#1455) Reviewed-on: https://gitea.com/xorm/xorm/pulls/1448 Exclude schema from index name (#1505) Merge branch 'master' into fix-schema-idx SetExpr support more go types (#1499) Improve tests SetExpr support more go types fix vet fix drone lint remove go1.10 test on drone Reviewed-on: https://gitea.com/xorm/xorm/pulls/1499 fix vet fix drone lint remove go1.10 test on drone Exclude schema from the index name Co-authored-by: Guillermo Prandi <guillep2k@users.noreply.github.com> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com> Reviewed-on: https://gitea.com/xorm/xorm/pulls/1505 SetExpr support more go types (#1499) Improve tests SetExpr support more go types fix vet fix drone lint remove go1.10 test on drone Reviewed-on: https://gitea.com/xorm/xorm/pulls/1499 For nullable columns, store nil values as NULL fix vet fix drone lint remove go1.10 test on drone Fix update with Alias (go-xorm#1455) Improve ci tests (#1477) Rewrite Engine.QuoteTo() to accept multi-part identifiers (#1476) Support local sql log (go-xorm#1338) Fix go mod and update version (go-xorm#1460) Move github.com/go-xorm/xorm to xorm.io/xorm (go-xorm#1459) add support custom type Nullfloat64 (go-xorm#1450) fix bug when query map condtion with no quote (go-xorm#1449) Don't warn when bool column default is 1 but not true (go-xorm#1447) * don't warn when bool column default is 1 but not true * fix default case sensitive Fix sync2 with custom table name (go-xorm#1445) * fix sync2 with custom table name * fix bug on postgres * fix bug on postgres fix bug when update with setexpr (go-xorm#1446) add tidb tests on drone ci (go-xorm#1444) improve sync2 (go-xorm#1443) Fix wrong dbmetas (go-xorm#1442) * add tests for db metas * add more tests * fix bug on mssql Fix default value parse bugs (go-xorm#1437) * fix default value * fix default value tags * fix postgres default * fix default on postgres * fix default on postgres * fix mssql default fix arg conversion (go-xorm#1441) * fix arg conversion * fix bugs * fix bug on postgres * use traditional positional parameters on insert into select * remove unnecessary tests upgrade core (go-xorm#1440) add tests (go-xorm#1439) add go1.13 tests on drone (go-xorm#1416) Fix bug on insert where (go-xorm#1436) * fix bug on insert where * fix bug * fix lint fix bug when insert multiple slices with customize table name (go-xorm#1433) * fix bug when insert multiple slices with customize table name * fix tests on mssql * fix tests fix insert where with bool bug on mssql (go-xorm#1432) fix setexpr missing big quotes (go-xorm#1431) * fix setexpr missing big quotes * fix tests * fix tests Add support subquery on SetExpr (go-xorm#1428) * add support subquery on SetExpr * fix tests fix go mod (go-xorm#1427) fix tests (go-xorm#1429) Use strings.Builder instead of builder.StringBuilder (go-xorm#1417) * use strings.Builder instead of builder.StringBuilder * fix dependency * fix dependency Remove unuse get cols code (go-xorm#1413) Add mssql ci test (go-xorm#1410) * add mssql ci test * fix drone test Add insert select where support (go-xorm#1401) Use drone new format (go-xorm#1388) * use drone new format fix get customize type bug (go-xorm#1382) fix bugs (go-xorm#1375) update drone (go-xorm#1374) Add tests for get var (go-xorm#1305) * add test for SQL get * fix tests fix error when get null var (go-xorm#890) * fix error when get null var * add support get for null var * fix bug Remove quotestr totally (go-xorm#1366) * remove QuoteStr() totally * update xorm.core -> v0.7.0 * update dialect Quote remove QuoteStr() usage in dialects (go-xorm#1364) document of FindAndCount() (go-xorm#1365) remove QuoteStr() usage (go-xorm#1360) make sure timeout in context timeout t... Co-authored-by: Guillermo Prandi <guillep2k@noreply.gitea.io> Co-authored-by: Jim Salem <jim@komand.com> Co-authored-by: Guillermo Prandi <guillep2k@noreply@gitea.io> Co-authored-by: yudppp <yu.d.ppp@gmail.com> Co-authored-by: BetaCat <outman99@hotmail.com> Reviewed-on: https://gitea.com/xorm/xorm/pulls/531
1 parent 43b364c commit 062d996

File tree

3 files changed

+13
-2
lines changed

3 files changed

+13
-2
lines changed

helpers.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,17 @@ func isZero(k interface{}) bool {
155155
return false
156156
}
157157

158+
func isZeroValue(v reflect.Value) bool {
159+
if isZero(v.Interface()) {
160+
return true
161+
}
162+
switch v.Kind() {
163+
case reflect.Chan, reflect.Func, reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice:
164+
return v.IsNil()
165+
}
166+
return false
167+
}
168+
158169
func isStructZero(v reflect.Value) bool {
159170
if !v.IsValid() {
160171
return true

session_insert.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -674,7 +674,7 @@ func (session *Session) genInsertColumns(bean interface{}) ([]string, []interfac
674674

675675
// !evalphobia! set fieldValue as nil when column is nullable and zero-value
676676
if _, ok := getFlagForColumn(session.statement.nullableMap, col); ok {
677-
if col.Nullable && isZero(fieldValue.Interface()) {
677+
if col.Nullable && isZeroValue(fieldValue) {
678678
var nilValue *int
679679
fieldValue = reflect.ValueOf(nilValue)
680680
}

session_update.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -517,7 +517,7 @@ func (session *Session) genUpdateColumns(bean interface{}) ([]string, []interfac
517517

518518
// !evalphobia! set fieldValue as nil when column is nullable and zero-value
519519
if _, ok := getFlagForColumn(session.statement.nullableMap, col); ok {
520-
if col.Nullable && isZero(fieldValue.Interface()) {
520+
if col.Nullable && isZeroValue(fieldValue) {
521521
var nilValue *int
522522
fieldValue = reflect.ValueOf(nilValue)
523523
}

0 commit comments

Comments
 (0)