Re: JDBC: ERROR: portal "C_2" does not exist

Поиск
Список
Период
Сортировка
От Dave Cramer
Тема Re: JDBC: ERROR: portal "C_2" does not exist
Дата
Msg-id CADK3HHLU0WyDe5_+tRY-=nyDDTndqQ+Vfw9Su1ba9zggGVW-_w@mail.gmail.com
обсуждение исходный текст
Ответ на Re: JDBC: ERROR: portal "C_2" does not exist  (Sehrope Sarkuni <sehrope@jackdb.com>)
Список pgsql-jdbc
Hi Blake


On Fri, 11 Mar 2022 at 14:04, Sehrope Sarkuni <sehrope@jackdb.com> wrote:
When auto commit is diabled and using a non-zero fetch size, the pgjdbc driver creates a portal to read the query results from the server in chunks of fetch size. The portals have a string identifier and the driver generates them sequentially per connection with a "C_" prefix, so "C_1", "C_2", "C_3", ... etc.

As you read results via ResultSet.next(), the driver checks if it has the next row already buffered. If not, it reads from the named portal to retrieve the next chunk of fetchSize quantity of rows.

A fetch size of 50 and the error happening at row 51 likely means that something either closed the portal or the connection itself is not correct.

Are you using a connection pool like pgbouncer in between your Java application and the database server?

If so, the connection pooler must be transaction aware to ensure that the same connection is used throughout the entire transaction.

Actually the recommendation for pgbouncer and I presume other poolers is to turn off prepared statements 

Disabling prepared statements in JDBC

The proper way to do it for JDBC is adding the prepareThreshold=0 parameter to the connection string.



Dave




 

В списке pgsql-jdbc по дате отправления:

Предыдущее
От: Sehrope Sarkuni
Дата:
Сообщение: Re: JDBC: ERROR: portal "C_2" does not exist
Следующее
От: Blake McBride
Дата:
Сообщение: Re: JDBC: ERROR: portal "C_2" does not exist