mirror of
https://github.com/ent/ent.git
synced 2026-05-06 01:20:56 +03:00
dialect/sql: reset predicate before execute (#1092)
This commit is contained in:
@@ -769,7 +769,7 @@ func (u *UpdateBuilder) Empty() bool {
|
||||
// Query returns query representation of an `UPDATE` statement.
|
||||
func (u *UpdateBuilder) Query() (string, []interface{}) {
|
||||
u.WriteString("UPDATE ")
|
||||
u.Ident(u.table).Pad().WriteString("SET ")
|
||||
u.Ident(u.table).WriteString(" SET ")
|
||||
for i, c := range u.nulls {
|
||||
if i > 0 {
|
||||
u.Comma()
|
||||
@@ -1219,6 +1219,10 @@ func (p *Predicate) Append(f func(*Builder)) *Predicate {
|
||||
|
||||
// Query returns query representation of a predicate.
|
||||
func (p *Predicate) Query() (string, []interface{}) {
|
||||
if p.Len() > 0 || len(p.args) > 0 {
|
||||
p.Reset()
|
||||
p.args = nil
|
||||
}
|
||||
for _, f := range p.fns {
|
||||
f(&p.Builder)
|
||||
}
|
||||
|
||||
@@ -297,6 +297,20 @@ func TestBuilder(t *testing.T) {
|
||||
wantQuery: `UPDATE "users" SET "name" = $1 WHERE "name" = $2`,
|
||||
wantArgs: []interface{}{"foo", "bar"},
|
||||
},
|
||||
{
|
||||
input: func() Querier {
|
||||
p1, p2 := EQ("name", "bar"), Or(EQ("age", 10), EQ("age", 20))
|
||||
return Dialect(dialect.Postgres).
|
||||
Update("users").
|
||||
Set("name", "foo").
|
||||
Where(p1).
|
||||
Where(p2).
|
||||
Where(p1).
|
||||
Where(p2)
|
||||
}(),
|
||||
wantQuery: `UPDATE "users" SET "name" = $1 WHERE (("name" = $2 AND ("age" = $3 OR "age" = $4)) AND "name" = $5) AND ("age" = $6 OR "age" = $7)`,
|
||||
wantArgs: []interface{}{"foo", "bar", 10, 20, "bar", 10, 20},
|
||||
},
|
||||
{
|
||||
input: Update("users").Set("name", "foo").SetNull("spouse_id"),
|
||||
wantQuery: "UPDATE `users` SET `spouse_id` = NULL, `name` = ?",
|
||||
|
||||
Reference in New Issue
Block a user