mirror of
https://github.com/ent/ent.git
synced 2026-05-24 09:31:56 +03:00
dialect/sql/sqlgraph: replace id IN with EXISTS for HasNeighbors predicates (#3492)
This commit is contained in:
@@ -460,7 +460,7 @@ func TestHasNeighbors(t *testing.T) {
|
||||
Edge(O2O, false, "nodes", "prev_id"),
|
||||
),
|
||||
selector: sql.Select("*").From(sql.Table("nodes")),
|
||||
wantQuery: "SELECT * FROM `nodes` WHERE `nodes`.`id` IN (SELECT `nodes`.`prev_id` FROM `nodes` WHERE `nodes`.`prev_id` IS NOT NULL)",
|
||||
wantQuery: "SELECT * FROM `nodes` WHERE EXISTS (SELECT `nodes_edge`.`prev_id` FROM `nodes` AS `nodes_edge` WHERE `nodes`.`id` = `nodes_edge`.`prev_id`)",
|
||||
},
|
||||
{
|
||||
name: "O2O/1type/inverse",
|
||||
@@ -482,7 +482,7 @@ func TestHasNeighbors(t *testing.T) {
|
||||
Edge(O2M, false, "pets", "owner_id"),
|
||||
),
|
||||
selector: sql.Select("*").From(sql.Table("users")),
|
||||
wantQuery: "SELECT * FROM `users` WHERE `users`.`id` IN (SELECT `pets`.`owner_id` FROM `pets` WHERE `pets`.`owner_id` IS NOT NULL)",
|
||||
wantQuery: "SELECT * FROM `users` WHERE EXISTS (SELECT `pets`.`owner_id` FROM `pets` WHERE `users`.`id` = `pets`.`owner_id`)",
|
||||
},
|
||||
{
|
||||
name: "M2O/2type2",
|
||||
@@ -526,7 +526,7 @@ func TestHasNeighbors(t *testing.T) {
|
||||
return step
|
||||
}(),
|
||||
selector: sql.Select("*").From(sql.Table("nodes").Schema("s1")),
|
||||
wantQuery: "SELECT * FROM `s1`.`nodes` WHERE `s1`.`nodes`.`id` IN (SELECT `s1`.`nodes`.`prev_id` FROM `s1`.`nodes` WHERE `s1`.`nodes`.`prev_id` IS NOT NULL)",
|
||||
wantQuery: "SELECT * FROM `s1`.`nodes` WHERE EXISTS (SELECT `nodes_edge`.`prev_id` FROM `s1`.`nodes` AS `nodes_edge` WHERE `s1`.`nodes`.`id` = `nodes_edge`.`prev_id`)",
|
||||
},
|
||||
{
|
||||
name: "schema/O2O/1type/inverse",
|
||||
@@ -552,7 +552,7 @@ func TestHasNeighbors(t *testing.T) {
|
||||
return step
|
||||
}(),
|
||||
selector: sql.Select("*").From(sql.Table("users").Schema("s1")),
|
||||
wantQuery: "SELECT * FROM `s1`.`users` WHERE `s1`.`users`.`id` IN (SELECT `s2`.`pets`.`owner_id` FROM `s2`.`pets` WHERE `s2`.`pets`.`owner_id` IS NOT NULL)",
|
||||
wantQuery: "SELECT * FROM `s1`.`users` WHERE EXISTS (SELECT `s2`.`pets`.`owner_id` FROM `s2`.`pets` WHERE `s1`.`users`.`id` = `s2`.`pets`.`owner_id`)",
|
||||
},
|
||||
{
|
||||
name: "schema/M2O/2type2",
|
||||
@@ -600,7 +600,7 @@ func TestHasNeighbors(t *testing.T) {
|
||||
Edge(O2M, false, "pets", "owner_id"),
|
||||
),
|
||||
selector: sql.Select("*").From(sql.Select("*").From(sql.Table("users")).As("users")).As("users"),
|
||||
wantQuery: "SELECT * FROM (SELECT * FROM `users`) AS `users` WHERE `users`.`id` IN (SELECT `pets`.`owner_id` FROM `pets` WHERE `pets`.`owner_id` IS NOT NULL)",
|
||||
wantQuery: "SELECT * FROM (SELECT * FROM `users`) AS `users` WHERE EXISTS (SELECT `pets`.`owner_id` FROM `pets` WHERE `users`.`id` = `pets`.`owner_id`)",
|
||||
},
|
||||
{
|
||||
name: "M2O/2type2/selector",
|
||||
|
||||
Reference in New Issue
Block a user