@@ -1770,10 +1770,16 @@ instance Row.Cons label Unit rest row => HasClause label row
17701770class HasAnyDML :: Row Type -> Constraint
17711771class HasAnyDML stage
17721772
1773−instance Row.Cons "select" Unit rest stage => HasAnyDML stage
1774−else instance Row.Cons "set" Unit rest stage => HasAnyDML stage
1775−else instance Row.Cons "delete" Unit rest stage => HasAnyDML stage
1776−else instance Fail (Text "WHERE requires a preceding SELECT, UPDATE (set), or DELETE") => HasAnyDML stage
1773+instance (RL.RowToList stage rl, HasAnyDMLRL rl) => HasAnyDML stage
1774+
1775+class HasAnyDMLRL :: RL.RowList Type -> Constraint
1776+class HasAnyDMLRL rl
1777+
1778+instance HasAnyDMLRL (RL.Cons "select" Unit rest)
1779+else instance HasAnyDMLRL (RL.Cons "set" Unit rest)
1780+else instance HasAnyDMLRL (RL.Cons "delete" Unit rest)
1781+else instance HasAnyDMLRL rest => HasAnyDMLRL (RL.Cons label typ rest)
1782+else instance Fail (Text "WHERE requires a preceding SELECT, UPDATE (set), or DELETE") => HasAnyDMLRL RL.Nil
17771783
17781784toSQL :: forall tables result params stage. Q tables result params stage -> String
17791785toSQL (Q q) = q.sql