PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Qual é a maneira correta de trabalhar com os resultados de streaming 3.0.0 do slick e o Postgresql?


A "maneira certa" de fazer streaming com Slick e Postgres inclui três coisas:

  1. Deve usar db.stream()

  2. Deve desabilitar o autoCommit no driver JDBC. Uma maneira é fazer a consulta ser executada em uma transação com o sufixo .transactionally .

  3. Deve definir fetchSize para ser algo diferente de 0 ou então o postgres enviará todo o resultSet para o cliente de uma só vez.

Ex:
DB.stream(
  find(0L, 0L)
    .transactionally
    .withStatementParameters(fetchSize = 1000)
).foreach(println)

Links Úteis:

https://github.com/slick/slick/issues/1038

https://github.com/slick/slick/issues/809