2020-04-12 18:53:57 +02:00
|
|
|
package postgres
|
|
|
|
|
|
|
|
|
|
import "testing"
|
|
|
|
|
|
|
|
|
|
func TestOnConflict(t *testing.T) {
|
|
|
|
|
|
|
|
|
|
assertClauseSerialize(t, &onConflictClause{}, "")
|
|
|
|
|
|
|
|
|
|
onConflict := &onConflictClause{}
|
|
|
|
|
onConflict.DO_NOTHING()
|
|
|
|
|
assertClauseSerialize(t, onConflict, "")
|
|
|
|
|
|
|
|
|
|
onConflict = &onConflictClause{indexExpressions: ColumnList{table1ColBool}}
|
|
|
|
|
onConflict.DO_NOTHING()
|
|
|
|
|
assertClauseSerialize(t, onConflict, `
|
|
|
|
|
ON CONFLICT (col_bool) DO NOTHING`)
|
|
|
|
|
|
|
|
|
|
onConflict = &onConflictClause{indexExpressions: ColumnList{table1ColBool}}
|
|
|
|
|
onConflict.ON_CONSTRAINT("table_pkey").DO_NOTHING()
|
|
|
|
|
assertClauseSerialize(t, onConflict, `
|
|
|
|
|
ON CONFLICT (col_bool) ON CONSTRAINT table_pkey DO NOTHING`)
|
|
|
|
|
|
|
|
|
|
onConflict = &onConflictClause{indexExpressions: ColumnList{table1ColBool, table2ColFloat}}
|
2020-05-03 20:46:21 +02:00
|
|
|
onConflict.WHERE(table2ColFloat.ADD(table1ColInt).GT(table1ColFloat)).
|
|
|
|
|
DO_UPDATE(
|
|
|
|
|
SET(table1ColBool.SET(Bool(true)),
|
|
|
|
|
table1ColInt.SET(Int(11))).
|
|
|
|
|
WHERE(table2ColFloat.GT(Float(11.1))),
|
|
|
|
|
)
|
2020-04-12 18:53:57 +02:00
|
|
|
assertClauseSerialize(t, onConflict, `
|
|
|
|
|
ON CONFLICT (col_bool, col_float) WHERE (col_float + col_int) > col_float DO UPDATE
|
2021-12-26 17:15:43 +01:00
|
|
|
SET col_bool = $1::boolean,
|
2020-04-12 18:53:57 +02:00
|
|
|
col_int = $2
|
|
|
|
|
WHERE table2.col_float > $3`)
|
|
|
|
|
}
|