(t *testing.T)
| 1731 | } |
| 1732 | |
| 1733 | func 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 | |
| 1785 | func TestSelector_UnionOrderBy(t *testing.T) { |
| 1786 | table := Table("users") |
nothing calls this directly
no test coverage detected
searching dependent graphs…