Skip to content

Commit 3ae5024

Browse files
committed
Return all columns not in both insert and update columns when doing upsert
1 parent cc34619 commit 3ae5024

File tree

4 files changed

+12
-5
lines changed

4 files changed

+12
-5
lines changed

drivers/sqlboiler-mssql/driver/override/main/17_upsert.go.tpl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ func (o *{{$alias.UpSingular}}) Upsert({{if .NoContext}}exec boil.Executor{{else
7171
var err error
7272

7373
if !cached {
74-
insert, ret := insertColumns.InsertColumnSet(
74+
insert, _ := insertColumns.InsertColumnSet(
7575
{{$alias.DownSingular}}AllColumns,
7676
{{$alias.DownSingular}}ColumnsWithDefault,
7777
{{$alias.DownSingular}}ColumnsWithoutDefault,
@@ -98,6 +98,8 @@ func (o *{{$alias.UpSingular}}) Upsert({{if .NoContext}}exec boil.Executor{{else
9898
insert = strmangle.SetComplement(insert, {{$alias.DownSingular}}GeneratedColumns)
9999
{{end}}
100100

101+
ret := strmangle.SetComplement({{$alias.DownSingular}}AllColumns, strmangle.SetIntersect(insert, update))
102+
101103
if !updateColumns.IsNone() && len(update) == 0 {
102104
return errors.New("{{.PkgName}}: unable to upsert {{.Table.Name}}, could not build update column list")
103105
}

drivers/sqlboiler-mysql/driver/override/main/17_upsert.go.tpl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ func (o *{{$alias.UpSingular}}) Upsert({{if .NoContext}}exec boil.Executor{{else
8989
var err error
9090

9191
if !cached {
92-
insert, ret := insertColumns.InsertColumnSet(
92+
insert, _ := insertColumns.InsertColumnSet(
9393
{{$alias.DownSingular}}AllColumns,
9494
{{$alias.DownSingular}}ColumnsWithDefault,
9595
{{$alias.DownSingular}}ColumnsWithoutDefault,
@@ -109,7 +109,8 @@ func (o *{{$alias.UpSingular}}) Upsert({{if .NoContext}}exec boil.Executor{{else
109109
return errors.New("{{.PkgName}}: unable to upsert {{.Table.Name}}, could not build update column list")
110110
}
111111

112-
ret = strmangle.SetComplement(ret, nzUniques)
112+
ret := strmangle.SetComplement({{$alias.DownSingular}}AllColumns, strmangle.SetIntersect(insert, update))
113+
113114
cache.query = buildUpsertQueryMySQL(dialect, "{{$schemaTable}}", update, insert)
114115
cache.retQuery = fmt.Sprintf(
115116
"SELECT %s FROM {{.LQ}}{{.Table.Name}}{{.RQ}} WHERE %s",

drivers/sqlboiler-psql/driver/override/main/17_upsert.go.tpl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ func (o *{{$alias.UpSingular}}) Upsert({{if .NoContext}}exec boil.Executor{{else
8282
var err error
8383

8484
if !cached {
85-
insert, ret := insertColumns.InsertColumnSet(
85+
insert, _ := insertColumns.InsertColumnSet(
8686
{{$alias.DownSingular}}AllColumns,
8787
{{$alias.DownSingular}}ColumnsWithDefault,
8888
{{$alias.DownSingular}}ColumnsWithoutDefault,
@@ -102,6 +102,8 @@ func (o *{{$alias.UpSingular}}) Upsert({{if .NoContext}}exec boil.Executor{{else
102102
return errors.New("{{.PkgName}}: unable to upsert {{.Table.Name}}, could not build update column list")
103103
}
104104

105+
ret := strmangle.SetComplement({{$alias.DownSingular}}AllColumns, strmangle.SetIntersect(insert, update))
106+
105107
conflict := conflictColumns
106108
if len(conflict) == 0 {
107109
conflict = make([]string, len({{$alias.DownSingular}}PrimaryKeyColumns))

drivers/sqlboiler-sqlite3/driver/override/main/17_upsert.go.tpl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ func (o *{{$alias.UpSingular}}) Upsert({{if .NoContext}}exec boil.Executor{{else
8282
var err error
8383

8484
if !cached {
85-
insert, ret := insertColumns.InsertColumnSet(
85+
insert, _ := insertColumns.InsertColumnSet(
8686
{{$alias.DownSingular}}AllColumns,
8787
{{$alias.DownSingular}}ColumnsWithDefault,
8888
{{$alias.DownSingular}}ColumnsWithoutDefault,
@@ -97,6 +97,8 @@ func (o *{{$alias.UpSingular}}) Upsert({{if .NoContext}}exec boil.Executor{{else
9797
return errors.New("{{.PkgName}}: unable to upsert {{.Table.Name}}, could not build update column list")
9898
}
9999

100+
ret := strmangle.SetComplement({{$alias.DownSingular}}AllColumns, strmangle.SetIntersect(insert, update))
101+
100102
conflict := conflictColumns
101103
if len(conflict) == 0 {
102104
conflict = make([]string, len({{$alias.DownSingular}}PrimaryKeyColumns))

0 commit comments

Comments
 (0)