Re: Memroy leak with jdbc

Поиск
Список
Период
Сортировка
От Barry Lind
Тема Re: Memroy leak with jdbc
Дата
Msg-id 3EB877A9.4010908@xythos.com
обсуждение исходный текст
Ответ на Re: Memroy leak with jdbc  (Barry Lind <blind@xythos.com>)
Ответы Re: Memroy leak with jdbc  (jks@selectacast.net)
Список pgsql-jdbc
Joseph,

This is now fixed in cvs.

thanks,
--Barry

Barry Lind wrote:
> Joseph,
>
> After rereading the javadoc on Connection.getWarnings(),
> Statement.getWarnings() and ResultSet.getWarnings(), I agree with you.
>
> I have a fix ready to checkin for this.  It is basically the same as you
> are doing below, but using the addWarning(String) method on Statement (I
> am not sure why you are trying to add a addWarnings(SQLWarning) method).
>
> thanks,
> --Barry
>
> Joseph Shraibman wrote:
>
>> Barry Lind wrote:
>>
>>> Joseph,
>>>
>>> The reason this is happening is because this particular select
>>> statement is generating a warning message from the server.  If you
>>> turn on logging in the driver (add ?loglevel=2 to the jdbc URL) you
>>> will see the following warning generated for each execution of this
>>> sql statement:
>>>
>>> NOTICE:  Adding missing FROM-clause entry in subquery for table "taba"
>>>
>>> These warning messages are stored up until you read them, or call
>>> clearWarnings().
>>>
>>> This is all correct behavior AFAICT.
>>>
>> I think the warnings should be added to the Statement or ResultSet,
>> not the Connection. I'm trying to hack the cvs version of the driver,
>> but it won't compile for some reason.
>>
>> Here's the patch:
>> *** org/postgresql/core/BaseResultSet.java.orig    Tue May  6 14:41:13
>> 2003
>> --- org/postgresql/core/BaseResultSet.java    Tue May  6 14:55:02 2003
>> ***************
>> *** 46,50 ****
>>       public void reInit (Field[] fields, Vector tuples, String status,
>>                           int updateCount, long insertOID, boolean
>> binaryCursor);
>>       public void setStatement(BaseStatement statement);
>> !
>>   }
>> --- 46,53 ----
>>       public void reInit (Field[] fields, Vector tuples, String status,
>>                           int updateCount, long insertOID, boolean
>> binaryCursor);
>>       public void setStatement(BaseStatement statement);
>> !         /**
>> !          * This adds a warning to the warning chain.
>> !          */
>> !         public void addWarnings(java.sql.SQLWarning warnings);
>>   }
>> *** org/postgresql/core/QueryExecutor.java.orig    Tue May  6 14:41:21
>> 2003
>> --- org/postgresql/core/QueryExecutor.java    Tue May  6 15:08:41 2003
>> ***************
>> *** 148,154 ****
>>                           int t = pgStream.ReceiveChar();
>>                           break;
>>                       case 'N':    // Error Notification
>> !
>> connection.addWarning(pgStream.ReceiveString(connection.getEncoding()));
>>                           break;
>>                       case 'P':    // Portal Name
>>                           String pname =
>> pgStream.ReceiveString(connection.getEncoding());
>> --- 148,155 ----
>>                           int t = pgStream.ReceiveChar();
>>                           break;
>>                       case 'N':    // Error Notification
>> !
>> //connection.addWarning(pgStream.ReceiveString(connection.getEncoding()));
>>
>> !
>> statement.addWarnings(new
>> java.sql.SQLWarning(pgStream.ReceiveString(connection.getEncoding())));
>>                           break;
>>                       case 'P':    // Portal Name
>>                           String pname =
>> pgStream.ReceiveString(connection.getEncoding());
>>
>>
>> But when I try to compile, I get:
>> -------------------------------------
>> /usr/local/ant/bin/ant -buildfile ./build.xml all
>> Buildfile: ./build.xml
>>
>> all:
>>
>> prepare:
>>
>> check_versions:
>> [available] DEPRECATED - <available> used to override an existing
>> property.
>> [available]   Build file should not reuse the same property name for
>> different values.
>>
>> check_driver:
>>
>> driver:
>>
>> compile:
>>     [javac] Compiling 53 source files to
>> /home/jks/work/pgtemp/pgsql/src/interfaces/jdbc/build
>>     [javac]
>> /home/jks/work/pgtemp/pgsql/src/interfaces/jdbc/org/postgresql/core/QueryExecutor.java:152:
>> cannot resolve symbol
>>     [javac] symbol  : method addWarnings (java.sql.SQLWarning)
>>     [javac] location: interface org.postgresql.core.BaseStatement
>>     [javac]
>> statement.addWarnings(new
>> java.sql.SQLWarning(pgStream.ReceiveString(connection.getEncoding())));
>>     [javac]                                                          ^
>>     [javac] Note: Some input files use or override a deprecated API.
>>     [javac] Note: Recompile with -deprecation for details.
>>     [javac] 1 error
>>
>> BUILD FAILED
>> file:/home/jks/work/pgtemp/pgsql/src/interfaces/jdbc/build.xml:108:
>> Compile failed; see the compiler error output for details.
>>
>> Total time: 16 seconds
>> make: *** [all] Error 1
>> -------------------------------------
>> As you can see I did add addWarnings() to the interface, so why is
>> javac complaining? This is with java 1.4.1_02.  Does anyone know how
>> to use jikes with ant(1.5.1)?  I've been poking around the
>> documentation, but I can't find anything.
>>
>>
>> ---------------------------(end of broadcast)---------------------------
>> TIP 5: Have you checked our extensive FAQ?
>>
>> http://www.postgresql.org/docs/faqs/FAQ.html
>>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
> http://archives.postgresql.org
>


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

Предыдущее
От: Barry Lind
Дата:
Сообщение: Re: JDBC 3.0 support?
Следующее
От: Hanasaki JiJi
Дата:
Сообщение: Re: JDBC 3.0 support?