zio / zio-quill

Compile-time Language Integrated Queries for Scala

Home Page:https://zio.dev/zio-quill

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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