MCPcopy Index your code
hub / github.com/ent/ent / TestSelectWithLock

Function TestSelectWithLock

dialect/sql/builder_test.go:1733–1783  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

1731}
1732
1733func TestSelectWithLock(t *testing.T) {
1734 query, args := Dialect(dialect.MySQL).
1735 Select().
1736 From(Table("users")).
1737 Where(EQ("id", 1)).
1738 ForUpdate().
1739 Query()
1740 require.Equal(t, "SELECT * FROM `users` WHERE `id` = ? FOR UPDATE", query)
1741 require.Equal(t, 1, args[0])
1742
1743 query, args = Dialect(dialect.Postgres).
1744 Select().
1745 From(Table("users")).
1746 Where(EQ("id", 1)).
1747 ForUpdate(WithLockAction(NoWait)).
1748 Query()
1749 require.Equal(t, `SELECT * FROM "users" WHERE "id" = $1 FOR UPDATE NOWAIT`, query)
1750 require.Equal(t, 1, args[0])
1751
1752 users, pets := Table("users"), Table("pets")
1753 query, args = Dialect(dialect.Postgres).
1754 Select().
1755 From(pets).
1756 Join(users).
1757 On(pets.C("owner_id"), users.C("id")).
1758 Where(EQ("id", 20)).
1759 ForUpdate(
1760 WithLockAction(SkipLocked),
1761 WithLockTables("pets"),
1762 ).
1763 Query()
1764 require.Equal(t, `SELECT * FROM "pets" JOIN "users" AS "t1" ON "pets"."owner_id" = "t1"."id" WHERE "id" = $1 FOR UPDATE OF "pets" SKIP LOCKED`, query)
1765 require.Equal(t, 20, args[0])
1766
1767 query, args = Dialect(dialect.MySQL).
1768 Select().
1769 From(Table("users")).
1770 Where(EQ("id", 20)).
1771 ForShare(WithLockClause("LOCK IN SHARE MODE")).
1772 Query()
1773 require.Equal(t, "SELECT * FROM `users` WHERE `id` = ? LOCK IN SHARE MODE", query)
1774 require.Equal(t, 20, args[0])
1775
1776 s := Dialect(dialect.SQLite).
1777 Select().
1778 From(Table("users")).
1779 Where(EQ("id", 1)).
1780 ForUpdate()
1781 s.Query()
1782 require.EqualError(t, s.Err(), "sql: SELECT .. FOR UPDATE/SHARE not supported in SQLite")
1783}
1784
1785func TestSelector_UnionOrderBy(t *testing.T) {
1786 table := Table("users")

Callers

nothing calls this directly

Calls 15

DialectFunction · 0.85
WithLockActionFunction · 0.85
WithLockTablesFunction · 0.85
WithLockClauseFunction · 0.85
OnMethod · 0.80
TableFunction · 0.70
EQFunction · 0.70
QueryMethod · 0.65
WhereMethod · 0.65
CMethod · 0.65
ErrMethod · 0.65
ForUpdateMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…