Message5017

Author pjenvey
Recipients cgroves, lijihuai, pjenvey
Date 2009-08-12.03:57:23
SpamBayes Score 4.30333e-06
Marked as misclassified No
Message-id <1250049445.04.0.589763121645.issue1430@psf.upfronthosting.co.za>
In-reply-to
Content
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
History
Date User Action Args
2009-08-12 03:57:25pjenveysetmessageid: <1250049445.04.0.589763121645.issue1430@psf.upfronthosting.co.za>
2009-08-12 03:57:25pjenveysetrecipients: + pjenvey, cgroves, lijihuai
2009-08-12 03:57:25pjenveylinkissue1430 messages
2009-08-12 03:57:23pjenveycreate