From: | Dave Cramer <pg(at)fastcrypt(dot)com> |
---|---|
To: | "j(dot)random(dot)programmer" <javadesigner(at)yahoo(dot)com> |
Cc: | pgsql-jdbc(at)postgresql(dot)org |
Subject: | Re: Weird behavior in transaction handling (Possible bug ?) |
Date: | 2005-01-14 21:03:50 |
Message-ID: | 41E833B6.9050807@fastcrypt.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-jdbc |
j.random.programmer wrote:
>>The first insert does not fail, it is the duplicate
>>key of the second
>>insert that is the error.
>>
>>
>
>It does fail since the commit() failed silently. There
>is nothing in the database at all.
>
>
What I meant to say it is not the cause of the error, only the second is
the cause of the error
now as I said before because one of the statements in the transaction
had an error none of the statements in the transaction will commit
a transaction is a unit of work, and it is atomic
http://www.postgresql.org/docs/7.4/interactive/tutorial-transactions.html
as the docs referred to above suggest.
>
>
>
>>They read this and will probably not respond because
>>they do not
>>consider this an error.
>>
>>
>
>But it's contrary to what oracle, db2, sybase (I
>think) and
>mysql/innodb do.
>
>It's not documented in the postgresql documentation
>either
>as far as I can tell.
>
>
>
>>This is not a silent failure. The insert errored out
>>and gave you a
>>message. commit is basically just end transaction
>>here.
>>
>>
>
>But why should a insert error mean that I have to
>abort
>the entire transaction ? And if so, then the driver
>can
>warn about that, no ? (especially since the same JDBC
>code
>runs fine on oracle, db2, mysql/innodb and sybase).
>It's
>a postgres specific non-documented thing, so
>shouldn't
>the JDBC driver warn us as to what's going on ?
>
>Or are you saying that I need to special case JDBC
>code
>of postgres ?
>
>
>
Because transactions in postgresql are ATOMIC. It's all or nothing.
How do you handle the case of moving money from one bank account to
another ( for example) and the second update fails.
ie
update bank1 set balance=balance-20;
update bank2 set balance=balance+20;
Does the money just dissappear ? What if the program can't "fix" the
problem. ie the disk is full.
I understand you have an investment in your code, but this is the way
postgres works, no amount of emails are going to change that fact.
>>The user is supposed to handle the errors, not the
>>driver.
>>
>>
>
>But the error is postgresql specific. There is no
>error, only
>a insert within a transaction failed. Why should that
>affect
>the rest of the transaction, if *I* as the user don't
>want it to?
>
>
>
How does postgres know which parts you don't care about ?
Dave
>Best regards,
>
>--j
>
>
>
>__________________________________
>Do you Yahoo!?
>The all-new My Yahoo! - What will yours do?
>http://my.yahoo.com
>
>
>
>
--
Dave Cramer
http://www.postgresintl.com
519 939 0336
ICQ#14675561
From | Date | Subject | |
---|---|---|---|
Next Message | Oliver Jowett | 2005-01-14 21:38:41 | Re: Weird behavior in transaction handling (Possible bug ?) |
Previous Message | j.random.programmer | 2005-01-14 19:54:54 | Re: Weird behavior in transaction handling (Possible bug ?) -- commit fails silently |