Re: [BUGS]log can not be output when use DataSource

From: dmp <danap(at)ttc-cmc(dot)net>
To: Chen Huajun <chenhj(at)cn(dot)fujitsu(dot)com>, pgsql-jdbc(at)postgresql(dot)org
Subject: Re: [BUGS]log can not be output when use DataSource
Date: 2013-01-20 18:19:21
Message-ID: 50FC3529.3060101@ttc-cmc.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Hello Chen,

Lets look at the current behavior without your patch of
both DriverManager and DataSource.

Note:

1. X Indicating Parameter not set
2. Boundary cases <0 and >2
3. DriverManager.getConnection() is the standard as
Chen you have stated, which DataSource should duplicate.

DriverManager.getConnection(connectionString);

Driver.setLogLevel() | ConnectionString &logLevel | Logging

X <0 No Logging
X 0 No Logging
X 1 INFO Logging
X 2 DEBUG Logging
X >2 DEBUG Logging
----------------------------------------
<0 <0 No Logging
<0 0 No Logging
<0 1 INFO Logging
<0 2 DEBUG Logging
<0 >2 DEBUG Logging
----------------------------------------
0 <0 No Logging
0 0 No Logging
0 1 INFO Logging
0 2 DEBUG Logging
0 >2 DEBUG Logging
----------------------------------------
1 <0 No Logging
1 0 No Logging

You can continue down this path, but the behavior
will always be ConnectionString &logLevel overrides
Driver.setLogLevel(). Lets May sure we have the
last case though in the sequence which on review
seems to operate appropriately with logLevel now
following Driver.setLogLevel() when logLevel in
the connectionString is not set.

-----------------------------------------
<0 X No Logging
0 X No Logging
1 X INFO Logging
2 X DEBUG Logging
>2 X DEBUG Logging

DataSource.getConnection()

Driver.setLogLevel() | DataSource.setLogLevel() | Logging

X <0 No Logging
X 0 No Logging
X 1 INFO Logging
X 2 DEBUG Logging
X >2 DEBUG Logging
----------------------------------------
<0 <0 No Logging
<0 0 No Logging
<0 1 INFO Logging
<0 2 DEBUG Logging
<0 >2 DEBUG Logging
----------------------------------------
0 <0 No Logging
0 0 No Logging
0 1 INFO Logging
0 2 DEBUG Logging
0 >2 DEBUG Logging
----------------------------------------
1 <0 No Logging
1 0 No Logging

Again you can continue down this path and everything
looks good with DataSource.setLogLevel() overriding
Driver.setLogLevel(). Lets not forget though the last
case though which is broken as you pointed out.

-----------------------------------------
<0 X No Logging
0 X No Logging
1 X No Logging
2 X No Logging
>2 X No Logging

Now lets look at the current behavior your patch has which
I will present just one case where it breaks the standard
set by the DriverManager.getConnection().

DataSource.getConnection()

Driver.setLogLevel() | DataSource.setLogLevel() | Logging

-----------------------------------------
1 <0 No Logging
1 0 INFO Logging <<<---- Breaks standard
1 1 INFO Logging
1 2 DEBUG Logging
1 >2 DEBUG Logging

Chen,

If you would create sample code to run to validate both your
bug report and test your patch you may have seen the breakage.
I can tell you that in all cases when DataSource.SetLogLevel(0)
your patch breaks the standard of the user overrides the
Driver.setLogLevel() when it is stipulated.

I know that valid inputs maybe only be Driver.INFO & Driver.DEBUG,
but if you treat the PgJDBC has a black box which you stimulate
and watch the output then we can not ignore the boundard cases of
<0, 0, & >2.

danap.

Chen Huajun wrote:
>
> danap I am also a bit confused for what's the expected behavior of
> PgJDBC driver.

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Chen Huajun 2013-01-21 04:45:32 Re: [BUGS]log can not be output when use DataSource
Previous Message Chen Huajun 2013-01-20 10:44:08 Re: [BUGS]log can not be output when use DataSource