Re: Different results between PostgreSQL and Oracle for "for update" statement
От | Pavel Stehule |
---|---|
Тема | Re: Different results between PostgreSQL and Oracle for "for update" statement |
Дата | |
Msg-id | CAFj8pRAhAch+ptP8aoYpt7JOwCw3JXbjqCeNe3zZFeRTkqe=Yw@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Different results between PostgreSQL and Oracle for "for update" statement (Andy Fan <zhihui.fan1213@gmail.com>) |
Ответы |
Re: Different results between PostgreSQL and Oracle for "for update" statement
|
Список | pgsql-hackers |
so 21. 11. 2020 v 9:59 odesílatel Andy Fan <zhihui.fan1213@gmail.com> napsal:
Thank all of you for your great insight!On Sat, Nov 21, 2020 at 9:04 AM Peter Geoghegan <pg@bowt.ie> wrote:On Fri, Nov 20, 2020 at 3:04 PM Andreas Karlsson <andreas@proxel.se> wrote:
> I am sadly not familiar enough with Oracle or have access to any Oracle
> license so I cannot comment on how Oracle have implemented their behvior
> or what tradeoffs they have made.
I bet that Oracle does a statement-level rollback for READ COMMITTED
mode's conflict handling.I'd agree with you about this point, this difference can cause more differentbehavior between Postgres & Oracle (not just select .. for update).create table dml(a int, b int);insert into dml values(1, 1), (2,2);-- session 1:begin;delete from dml where a in (select min(a) from dml);--session 2:delete from dml where a in (select min(a) from dml);-- session 1:commit;In Oracle: 1 row deleted in sess 2.In PG: 0 rows are deleted.I'm not sure if this means that it locks multiple rows or not.This is something not really exists and you can ignore this part:)About the statement level rollback, Another difference is related.create table t (a int primary key, b int);begin;insert into t values(1,1);insert into t values(1, 1);commit;Oracle : t has 1 row, PG: t has 0 row (since the whole transaction isaborted).I don't mean we need to be the same as Oracle, but to support acustomer who comes from Oracle, it would be good to know thedifference.
yes, it would be nice to be better documented, somewhere - it should not be part of Postgres documentation. Unfortunately, people who know Postgres perfectly do not have the same knowledge about Oracle.
Some differences are documented in Orafce documentation https://github.com/orafce/orafce/tree/master/doc
but I am afraid so there is nothing about the different behaviour of snapshots.
Regards
Pavel
--Best RegardsAndy Fan
В списке pgsql-hackers по дате отправления: