I run the following statements against a Vertica database, one at a time:
BEGIN TRANSACTION; UPDATE table SET col1 = 'something' WHERE col2 = 'something else'; SELECT COUNT(*) FROM table WHERE col1 = 'something'; ROLLBACK TRANSACTION;
I run the first line fine... OK, now I'm in a transaction.
I run my update... OK, that worked.
I run my
SELECT test to make sure things worked as expected... Oh wait, it looks like I missed a condition in the
WHERE clause of my
No worries! That's why I did this in a transaction.
=> ROLLBACK TRANSACTION; [Vertica][JDBC](10040) Cannot use commit while Connection is in auto-commit mode.
Jones, hand over that roll of toilet paper you have on your desk.
So Vertica happily accepted my
BEGIN TRANSACTION, knowing full well that very soon after that I would try to run either a
Yet, I can't! My connection is in auto-commit mode, so
COMMIT mean nothing. My
UPDATE was committed the moment it completed.
Did I miss something, or am I right in thinking this is just a very bad implementation on Vertica's part?
Why would Vertica accept a
BEGIN TRANSACTION on a connection in auto-commit mode if the logical consequences (
COMMIT) are illegal?