Issue1430
Created on 2009-08-10.08:40:33 by lijihuai, last changed 2009-08-17.01:10:49 by lijihuai.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | Remove |
| jdbc_connection_close_bug.png | lijihuai, 2009-08-10.08:40:33 | jdbc connection of oracle can not be closed | ||
| unnamed | lijihuai, 2009-08-12.05:20:35 | |||
| issue1430.tar.gz | pjenvey, 2009-08-16.00:55:22 | |||
| unnamed | lijihuai, 2009-08-17.01:10:48 | |||
| Messages | |||
|---|---|---|---|
| msg5017 (view) | Author: Philip Jenvey (pjenvey) | Date: 2009-08-12.03:57:23 | |
I was able to reproduce this. The oracle Connection object implements 3
DBAccess interfaces that define their own close methods that take 1
argument. For some reason the descriptor for close gets confused into
thinking they are the only available close() methods:
>>> c =
DriverManager.getConnection('jdbc:oracle:thin:@192.168.21.128:1521:xe',
'scott', 'tiger')
>>> c.close()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: close(): expected 1 args; got 0
>>> c
oracle.jdbc.driver.T4CConnection@d27a744
>>> T4CConnection = type(c)
>>> T4CConnection.close.printArgs()
nargs: 3
interface oracle.sql.BfileDBAccess, false, 0, public abstract void
oracle.sql.BfileDBAccess.close(oracle.sql.BFILE) throws
java.sql.SQLException
(oracle.sql.BFILE, )
interface oracle.sql.BlobDBAccess, false, 0, public abstract void
oracle.sql.BlobDBAccess.close(oracle.sql.BLOB) throws
java.sql.SQLException
(oracle.sql.BLOB, )
interface oracle.sql.ClobDBAccess, false, 0, public abstract void
oracle.sql.ClobDBAccess.close(oracle.sql.CLOB) throws
java.sql.SQLException
(oracle.sql.CLOB, )
>>> T4CConnection.__bases__
(<type 'oracle.sql.BfileDBAccess'>, <type 'oracle.sql.BlobDBAccess'>,
<type 'oracle.sql.ClobDBAccess'>, <type
'oracle.jdbc.driver.PhysicalConnection'>)
>>> T4CConnection.__mro__
(<type 'oracle.jdbc.driver.T4CConnection'>, <type
'oracle.sql.BfileDBAccess'>, <type 'oracle.sql.BlobDBAccess'>, <type
'oracle.sql.ClobDBAccess'>, <type
'oracle.jdbc.driver.PhysicalConnection'>, <type
'oracle.jdbc.driver.OracleConnection'>, <type
'oracle.jdbc.internal.OracleConnection'>, <type
'oracle.jdbc.internal.ClientDataSupport'>, <type
'oracle.jdbc.OracleConnectionWrapper'>, <type
'oracle.jdbc.OracleConnection'>, <type 'java.sql.Connection'>, <type
'java.sql.Wrapper'>, <type 'java.lang.Object'>, <type 'object'>)
>>> for t in T4CConnection.__mro__:
... if hasattr(t, 'close'): % t
... print '---- %s ----' % t
... print t.close.printArgs()
...
---- <type 'oracle.jdbc.driver.T4CConnection'> ----
nargs: 3
interface oracle.sql.BfileDBAccess, false, 0, public abstract void
oracle.sql.BfileDBAccess.close(oracle.sql.BFILE) throws
java.sql.SQLException
(oracle.sql.BFILE, )
interface oracle.sql.BlobDBAccess, false, 0, public abstract void
oracle.sql.BlobDBAccess.close(oracle.sql.BLOB) throws
java.sql.SQLException
(oracle.sql.BLOB, )
interface oracle.sql.ClobDBAccess, false, 0, public abstract void
oracle.sql.ClobDBAccess.close(oracle.sql.CLOB) throws
java.sql.SQLException
(oracle.sql.CLOB, )
None
---- <type 'oracle.sql.BfileDBAccess'> ----
nargs: 1
interface oracle.sql.BfileDBAccess, false, 0, public abstract void
oracle.sql.BfileDBAccess.close(oracle.sql.BFILE) throws
java.sql.SQLException
(oracle.sql.BFILE, )
None
---- <type 'oracle.sql.BlobDBAccess'> ----
nargs: 1
interface oracle.sql.BlobDBAccess, false, 0, public abstract void
oracle.sql.BlobDBAccess.close(oracle.sql.BLOB) throws
java.sql.SQLException
(oracle.sql.BLOB, )
None
---- <type 'oracle.sql.ClobDBAccess'> ----
nargs: 1
interface oracle.sql.ClobDBAccess, false, 0, public abstract void
oracle.sql.ClobDBAccess.close(oracle.sql.CLOB) throws
java.sql.SQLException
(oracle.sql.CLOB, )
None
---- <type 'oracle.jdbc.driver.PhysicalConnection'> ----
nargs: 3
class oracle.jdbc.OracleConnectionWrapper, false, 0, public void
oracle.jdbc.OracleConnectionWrapper.close() throws java.sql.SQLException
()
class oracle.jdbc.OracleConnectionWrapper, false, 0, public void
oracle.jdbc.OracleConnectionWrapper.close(int) throws
java.sql.SQLException
(int, )
class oracle.jdbc.OracleConnectionWrapper, false, 0, public void
oracle.jdbc.OracleConnectionWrapper.close(java.util.Properties) throws
java.sql.SQLException
(java.util.Properties, )
None
---- <type 'oracle.jdbc.driver.OracleConnection'> ----
nargs: 3
interface java.sql.Connection, false, 0, public abstract void
java.sql.Connection.close() throws java.sql.SQLException
()
interface oracle.jdbc.OracleConnection, false, 0, public abstract void
oracle.jdbc.OracleConnection.close(int) throws java.sql.SQLException
(int, )
interface oracle.jdbc.OracleConnection, false, 0, public abstract void
oracle.jdbc.OracleConnection.close(java.util.Properties) throws
java.sql.SQLException
(java.util.Properties, )
None
---- <type 'oracle.jdbc.internal.OracleConnection'> ----
nargs: 3
interface java.sql.Connection, false, 0, public abstract void
java.sql.Connection.close() throws java.sql.SQLException
()
interface oracle.jdbc.OracleConnection, false, 0, public abstract void
oracle.jdbc.OracleConnection.close(int) throws java.sql.SQLException
(int, )
interface oracle.jdbc.OracleConnection, false, 0, public abstract void
oracle.jdbc.OracleConnection.close(java.util.Properties) throws
java.sql.SQLException
(java.util.Properties, )
None
---- <type 'oracle.jdbc.OracleConnectionWrapper'> ----
nargs: 3
class oracle.jdbc.OracleConnectionWrapper, false, 0, public void
oracle.jdbc.OracleConnectionWrapper.close() throws java.sql.SQLException
()
class oracle.jdbc.OracleConnectionWrapper, false, 0, public void
oracle.jdbc.OracleConnectionWrapper.close(int) throws
java.sql.SQLException
(int, )
class oracle.jdbc.OracleConnectionWrapper, false, 0, public void
oracle.jdbc.OracleConnectionWrapper.close(java.util.Properties) throws
java.sql.SQLException
(java.util.Properties, )
None
---- <type 'oracle.jdbc.OracleConnection'> ----
nargs: 3
interface java.sql.Connection, false, 0, public abstract void
java.sql.Connection.close() throws java.sql.SQLException
()
interface oracle.jdbc.OracleConnection, false, 0, public abstract void
oracle.jdbc.OracleConnection.close(int) throws java.sql.SQLException
(int, )
interface oracle.jdbc.OracleConnection, false, 0, public abstract void
oracle.jdbc.OracleConnection.close(java.util.Properties) throws
java.sql.SQLException
(java.util.Properties, )
None
---- <type 'java.sql.Connection'> ----
nargs: 1
interface java.sql.Connection, false, 0, public abstract void
java.sql.Connection.close() throws java.sql.SQLException
()
None
|
|||
| msg5019 (view) | Author: lijihuai (lijihuai) | Date: 2009-08-12.05:20:36 | |
Philip Jenvey,你好
just waiting next release ?
to a javaer, working with jython is happy
lijihuai,lijihuai@126.com
2009-08-12
----- Original Message -----
From: Philip Jenvey
To: lijihuai
Sent: 2009-08-12, 11:57:25
Subject: [issue1430] Oracle JDBC Connection close
New submission from Philip Jenvey <pjenvey@users.sourceforge.net>:
I was able to reproduce this. The oracle Connection object implements 3
DBAccess interfaces that define their own close methods that take 1
argument. For some reason the descriptor for close gets confused into
thinking they are the only available close() methods:
DriverManager.getConnection('jdbc:oracle:thin:@192.168.21.128:1521:xe',
'scott', 'tiger')
>>> c.close()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: close(): expected 1 args; got 0
>>> c
oracle.jdbc.driver.T4CConnection@d27a744
>>> T4CConnection = type(c)
>>> T4CConnection.close.printArgs()
nargs: 3
interface oracle.sql.BfileDBAccess, false, 0, public abstract void
oracle.sql.BfileDBAccess.close(oracle.sql.BFILE) throws
java.sql.SQLException
(oracle.sql.BFILE, )
interface oracle.sql.BlobDBAccess, false, 0, public abstract void
oracle.sql.BlobDBAccess.close(oracle.sql.BLOB) throws
java.sql.SQLException
(oracle.sql.BLOB, )
interface oracle.sql.ClobDBAccess, false, 0, public abstract void
oracle.sql.ClobDBAccess.close(oracle.sql.CLOB) throws
java.sql.SQLException
(oracle.sql.CLOB, )
>>> T4CConnection.__bases__
(<type 'oracle.sql.BfileDBAccess'>, <type 'oracle.sql.BlobDBAccess'>,
<type 'oracle.sql.ClobDBAccess'>, <type
'oracle.jdbc.driver.PhysicalConnection'>)
>>> T4CConnection.__mro__
(<type 'oracle.jdbc.driver.T4CConnection'>, <type
'oracle.sql.BfileDBAccess'>, <type 'oracle.sql.BlobDBAccess'>, <type
'oracle.sql.ClobDBAccess'>, <type
'oracle.jdbc.driver.PhysicalConnection'>, <type
'oracle.jdbc.driver.OracleConnection'>, <type
'oracle.jdbc.internal.OracleConnection'>, <type
'oracle.jdbc.internal.ClientDataSupport'>, <type
'oracle.jdbc.OracleConnectionWrapper'>, <type
'oracle.jdbc.OracleConnection'>, <type 'java.sql.Connection'>, <type
'java.sql.Wrapper'>, <type 'java.lang.Object'>, <type 'object'>)
>>> for t in T4CConnection.__mro__:
.... if hasattr(t, 'close'): % t
.... print '---- %s ----' % t
.... print t.close.printArgs()
....
---- <type 'oracle.jdbc.driver.T4CConnection'> ----
nargs: 3
interface oracle.sql.BfileDBAccess, false, 0, public abstract void
oracle.sql.BfileDBAccess.close(oracle.sql.BFILE) throws
java.sql.SQLException
(oracle.sql.BFILE, )
interface oracle.sql.BlobDBAccess, false, 0, public abstract void
oracle.sql.BlobDBAccess.close(oracle.sql.BLOB) throws
java.sql.SQLException
(oracle.sql.BLOB, )
interface oracle.sql.ClobDBAccess, false, 0, public abstract void
oracle.sql.ClobDBAccess.close(oracle.sql.CLOB) throws
java.sql.SQLException
(oracle.sql.CLOB, )
None
---- <type 'oracle.sql.BfileDBAccess'> ----
nargs: 1
interface oracle.sql.BfileDBAccess, false, 0, public abstract void
oracle.sql.BfileDBAccess.close(oracle.sql.BFILE) throws
java.sql.SQLException
(oracle.sql.BFILE, )
None
---- <type 'oracle.sql.BlobDBAccess'> ----
nargs: 1
interface oracle.sql.BlobDBAccess, false, 0, public abstract void
oracle.sql.BlobDBAccess.close(oracle.sql.BLOB) throws
java.sql.SQLException
(oracle.sql.BLOB, )
None
---- <type 'oracle.sql.ClobDBAccess'> ----
nargs: 1
interface oracle.sql.ClobDBAccess, false, 0, public abstract void
oracle.sql.ClobDBAccess.close(oracle.sql.CLOB) throws
java.sql.SQLException
(oracle.sql.CLOB, )
None
---- <type 'oracle.jdbc.driver.PhysicalConnection'> ----
nargs: 3
class oracle.jdbc.OracleConnectionWrapper, false, 0, public void
oracle.jdbc.OracleConnectionWrapper.close() throws java.sql.SQLException
()
class oracle.jdbc.OracleConnectionWrapper, false, 0, public void
oracle.jdbc.OracleConnectionWrapper.close(int) throws
java.sql.SQLException
(int, )
class oracle.jdbc.OracleConnectionWrapper, false, 0, public void
oracle.jdbc.OracleConnectionWrapper.close(java.util.Properties) throws
java.sql.SQLException
(java.util.Properties, )
None
---- <type 'oracle.jdbc.driver.OracleConnection'> ----
nargs: 3
interface java.sql.Connection, false, 0, public abstract void
java.sql.Connection.close() throws java.sql.SQLException
()
interface oracle.jdbc.OracleConnection, false, 0, public abstract void
oracle.jdbc.OracleConnection.close(int) throws java.sql.SQLException
(int, )
interface oracle.jdbc.OracleConnection, false, 0, public abstract void
oracle.jdbc.OracleConnection.close(java.util.Properties) throws
java.sql.SQLException
(java.util.Properties, )
None
---- <type 'oracle.jdbc.internal.OracleConnection'> ----
nargs: 3
interface java.sql.Connection, false, 0, public abstract void
java.sql.Connection.close() throws java.sql.SQLException
()
interface oracle.jdbc.OracleConnection, false, 0, public abstract void
oracle.jdbc.OracleConnection.close(int) throws java.sql.SQLException
(int, )
interface oracle.jdbc.OracleConnection, false, 0, public abstract void
oracle.jdbc.OracleConnection.close(java.util.Properties) throws
java.sql.SQLException
(java.util.Properties, )
None
---- <type 'oracle.jdbc.OracleConnectionWrapper'> ----
nargs: 3
class oracle.jdbc.OracleConnectionWrapper, false, 0, public void
oracle.jdbc.OracleConnectionWrapper.close() throws java.sql.SQLException
()
class oracle.jdbc.OracleConnectionWrapper, false, 0, public void
oracle.jdbc.OracleConnectionWrapper.close(int) throws
java.sql.SQLException
(int, )
class oracle.jdbc.OracleConnectionWrapper, false, 0, public void
oracle.jdbc.OracleConnectionWrapper.close(java.util.Properties) throws
java.sql.SQLException
(java.util.Properties, )
None
---- <type 'oracle.jdbc.OracleConnection'> ----
nargs: 3
interface java.sql.Connection, false, 0, public abstract void
java.sql.Connection.close() throws java.sql.SQLException
()
interface oracle.jdbc.OracleConnection, false, 0, public abstract void
oracle.jdbc.OracleConnection.close(int) throws java.sql.SQLException
(int, )
interface oracle.jdbc.OracleConnection, false, 0, public abstract void
oracle.jdbc.OracleConnection.close(java.util.Properties) throws
java.sql.SQLException
(java.util.Properties, )
None
---- <type 'java.sql.Connection'> ----
nargs: 1
interface java.sql.Connection, false, 0, public abstract void
java.sql.Connection.close() throws java.sql.SQLException
()
None
----------
nosy: +cgroves, pjenvey
priority: -> high
_______________________________________
Jython tracker <report@bugs.jython.org>
<http://bugs.jython.org/issue1430>
_______________________________________
|
|||
| msg5028 (view) | Author: Charlie Groves (cgroves) | Date: 2009-08-15.20:39:40 | |
Is there some javadoc or something like that online for the Connection object in question? I'd like to make something or the same form as a test for Jython to try to fix this. |
|||
| msg5036 (view) | Author: Philip Jenvey (pjenvey) | Date: 2009-08-16.00:55:22 | |
I narrowed this down since I could reproduce it. Basically one of the
classes in the chain isn't public but overrides
java.sql.Connection.close. That combined with the interfaces having
their own different close method causes the java.sql.Connection.close to
not show up
Extract the tar ball and run:
$ jython test.py
nargs: 1
interface SpecialConnection, false, 0, public abstract void
SpecialConnection.close(int)
(int, )
None
Traceback (most recent call last):
File "test.py", line 4, in <module>
c.close()
TypeError: close(): expected 1 args; got 0
|
|||
| msg5043 (view) | Author: Charlie Groves (cgroves) | Date: 2009-08-16.10:30:12 | |
Should be fixed in r6676. Thanks for the report! |
|||
| msg5048 (view) | Author: lijihuai (lijihuai) | Date: 2009-08-17.01:10:49 | |
Philip Jenvey,你好
thanks
it's a great project
lijihuai,lijihuai@126.com
2009-08-17
----- Original Message -----
From: Philip Jenvey
To: lijihuai
Sent: 2009-08-16, 08:55:22
Subject: [issue1430] Oracle JDBC Connection close
Philip Jenvey <pjenvey@users.sourceforge.net> added the comment:
I narrowed this down since I could reproduce it. Basically one of the
classes in the chain isn't public but overrides
java.sql.Connection.close. That combined with the interfaces having
their own different close method causes the java.sql.Connection.close to
not show up
Extract the tar ball and run:
$ jython test.py
nargs: 1
interface SpecialConnection, false, 0, public abstract void
SpecialConnection.close(int)
(int, )
None
Traceback (most recent call last):
File "test.py", line 4, in <module>
c.close()
TypeError: close(): expected 1 args; got 0
----------
assignee: -> cgroves
Added file: http://bugs.jython.org/file723/issue1430.tar.gz
_______________________________________
Jython tracker <report@bugs.jython.org>
<http://bugs.jython.org/issue1430>
_______________________________________
|
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2009-08-17 01:10:49 | lijihuai | set | files:
+ unnamed messages: + msg5048 |
| 2009-08-16 10:30:12 | cgroves | set | status: open -> closed resolution: fixed messages: + msg5043 |
| 2009-08-16 00:55:22 | pjenvey | set | files:
+ issue1430.tar.gz assignee: cgroves messages: + msg5036 |
| 2009-08-15 20:39:40 | cgroves | set | messages: + msg5028 |
| 2009-08-12 05:20:36 | lijihuai | set | files:
+ unnamed messages: + msg5019 |
| 2009-08-12 03:57:25 | pjenvey | set | priority: high nosy: + cgroves, pjenvey messages: + msg5017 |
| 2009-08-10 08:40:33 | lijihuai | create | |
Supported by Python Software Foundation,
Powered by Roundup