Behaviour of setAutoCommit may not be completely correct.

Поиск
Список
Период
Сортировка
От João Paulo Ribeiro
Тема Behaviour of setAutoCommit may not be completely correct.
Дата
Msg-id 442CFE4E.9000309@mobicomp.com
обсуждение исходный текст
Ответы Re: Behaviour of setAutoCommit may not be completely correct.  (Markus Schaber <schabi@logix-tt.com>)
Re: Behaviour of setAutoCommit may not be completely correct.  (Dave Cramer <pg@fastcrypt.com>)
Список pgsql-jdbc
Hello.

I found a situation that is causing db locks using enhydra dods with postgresql due to somethinf that look like a bad
behaviourof postgresql. 
Since version 6.0, i think, dods do all the db queries with setAutoCommit(false). The expected behaviour of
setAutocommit(...)is that the current transaction is commited, allowing the db backend to free resources previously
allocated,and a new one is created with the autocommit set to the value passed. 

From the specs: "If the value of auto-commit is changed in the middle of a transaction, the current transaction is
committed."

The postgresql have a problem with setAutocommit(...): if the value passed (false or true) is the same that was
previouslyset, it just does nothing. 

I looked to the postgresql driver and found this:

    public void setAutoCommit(boolean autoCommit) throws SQLException
    {
        if (this.autoCommit == autoCommit)
            return ;
        if (autoCommit)
        {
                execSQL("end");
        }
        else
        {
            if (haveMinimumServerVersion("7.1"))
            {
                execSQL("begin;" + getIsolationLevelSQL());
            }
            else
            {
                execSQL("begin");
                execSQL(getIsolationLevelSQL());
            }
        }
        this.autoCommit = autoCommit;
    }

The driver do nothing when the value passed (false or true) is the same
that was previously set.
I fixed the driver and found that the behaviour was the same: it's look
likes the backend is using the same logic and that explain why someone
at the driver JDBC decided to not pass this to the backend.
My tests were done with Postgresql 7.4.12.
Can someone confirm that the problem exist and it is in the driver code
and the backend server?
Is this still happening with postgresql 8.1?

Best regards
João Paulo Ribeiro

--
João Paulo Ribeiro | Senior Software Engineer
jp@mobicomp.com

PHONE: + 351 253 305 250
FAX  : + 351 253 305 250
www.mobicomp.com

________________________________________________________________

About Solutions | Wireless World

CONFIDENTIALITY NOTICE: This message, as well as existing attached files, is confidential and intended exclusively for
theindividual(s) named as addressees. If you are not the intended recipient, you are kindly requested not to make any
usewhatsoever of its contents and to proceed to the destruction of the message, thereby notifying the sender. 
DISCLAIMER: The sender of this message can not ensure the security of its electronic transmission and consequently does
notaccept liability for any fact which may interfere with the integrity of its content. 


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

Предыдущее
От: Heikki Linnakangas
Дата:
Сообщение: Re: gcj has a lot of complaints about 8.1-405 release
Следующее
От: Markus Schaber
Дата:
Сообщение: Re: Behaviour of setAutoCommit may not be completely correct.