Re: For SELECT statement (just a reading one, no 'FOR UPDATE'), isCOMMIT or ROLLBACK preferred?

Поиск
Список
Период
Сортировка
От David Wall
Тема Re: For SELECT statement (just a reading one, no 'FOR UPDATE'), isCOMMIT or ROLLBACK preferred?
Дата
Msg-id bd843506-a7d9-6ab3-f4d8-2d6b592ddf0c@computer.org
обсуждение исходный текст
Ответ на Re: For SELECT statement (just a reading one, no 'FOR UPDATE'), isCOMMIT or ROLLBACK preferred?  (Rob Sargent <robjsargent@gmail.com>)
Ответы Re: For SELECT statement (just a reading one, no 'FOR UPDATE'), is COMMIT or ROLLBACK preferred?  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: For SELECT statement (just a reading one, no 'FOR UPDATE'), isCOMMIT or ROLLBACK preferred?  (Luca Ferrari <fluca1978@gmail.com>)
Список pgsql-general
On 8/25/19 12:40 PM, Rob Sargent wrote
>> On Aug 25, 2019, at 1:09 PM, David Wall <d.wall@computer.org> wrote:
>>
>> Using the latest PostgreSQL, does it matter if my code does a ROLLBACK or a COMMIT on an non-modifying SELECT
statement? My impression is they'd be the same as nothing is changed and therefore there's nothing to commit or
rollback,but wondered if there was any difference in how they are processed by Postgres?
 
>>
>> Thanks,
>> David
>>
>>
>>
> In interactive psql, both issue a warning that there is no current transaction.  What is your auto-commit setting and
howis your code sent to the server?
 


We are accessing it via JDBC, and so we SQL via PreparedStatements 
against a Connection, and the connection is not auto-commit.  By 
default, the connection has a BEGIN TRANSACTION in place, so after all 
requests we do, we need to commit/rollback.  The main issue is that if 
we do a SELECT and get a ResultSet that has no rows, if we do a commit 
or a rollback, it seems reasonable that these are identical as no 
changes were made.  My inclination is to do a Connection.commit() on the 
connection because it wasn't in error or anything even if no rows were 
found, but wondered if a Connection.rollback() has any difference 
(positive/negative) in such a scenario.  We have SELECT sql statements 
that sometimes do a rollback after such queries because even though no 
rows was found is fine for SQL, it may be an issue in the application 
that expects there to be at least one row.  So we're trying to determine 
if there's actually any difference between commit/rollback after SELECT 
statements (with rows returned or not), a bit like if there's any 
difference for an UPDATE statement that returns zero rows were updated.






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

Предыдущее
От: Howard Wells
Дата:
Сообщение: Re: Postgres SQLSTATE[08006] [7] timeout expired
Следующее
От: Tom Lane
Дата:
Сообщение: Re: For SELECT statement (just a reading one, no 'FOR UPDATE'), is COMMIT or ROLLBACK preferred?