Den "rigtige måde" at streame med Slick og Postgres omfatter tre ting:
-
Skal bruge db.stream()
-
Skal deaktivere
autoCommit
i JDBC-driver. En måde er at få forespørgslen til at køre i en transaktion ved at tilføje.transactionally
. -
Skal indstille
fetchSize
at være noget andet end 0, ellers vil postgres skubbe hele resultatsættet til klienten på én gang.
Eks:
DB.stream(
find(0L, 0L)
.transactionally
.withStatementParameters(fetchSize = 1000)
).foreach(println)
Nyttige links:
https://github.com/slick/slick/issues/1038
https://github.com/slick/slick/issues/809