Return argument of prepare with batch action does not type correctly
deusaquilus opened this issue · comments
Version: 3.3.0-SNAPSHOT
Module: quill-jdbc
Database: ALL
Expected behavior
The typing in the following should work:
val preparers: Connection => List[PreparedStatement] =
ctx.prepare(liftQuery(products).foreach(e => query[Product].insert(e)))
Actual behavior
Instead the following exception is thrown:
Error:(29, 42) polymorphic expression cannot be instantiated to expected type;
found : [A <: io.getquill.MyJdbcTest.ctx.Action[_]]io.getquill.MyJdbcTest.ctx.BatchAction[A]
required: io.getquill.MyJdbcTest.ctx.Quoted[io.getquill.MyJdbcTest.ctx.BatchAction[io.getquill.MyJdbcTest.ctx.Action[_]]]
ctx.prepare(liftQuery(products).foreach(e => query[Product].insert(e)))
Workaround
Quote the batch insert first:
val q = quote {
liftQuery(products).foreach(e => query[Product].insert(e))
}
val preparers: Connection => List[PreparedStatement] = ctx.prepare(q)
@getquill/maintainers