Return-Path: Delivered-To: apmail-db-derby-dev-archive@www.apache.org Received: (qmail 84782 invoked from network); 16 Dec 2010 17:37:27 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 16 Dec 2010 17:37:27 -0000 Received: (qmail 40824 invoked by uid 500); 16 Dec 2010 17:37:27 -0000 Delivered-To: apmail-db-derby-dev-archive@db.apache.org Received: (qmail 40776 invoked by uid 500); 16 Dec 2010 17:37:26 -0000 Mailing-List: contact derby-dev-help@db.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: Delivered-To: mailing list derby-dev@db.apache.org Received: (qmail 40769 invoked by uid 99); 16 Dec 2010 17:37:26 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 16 Dec 2010 17:37:26 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.22] (HELO thor.apache.org) (140.211.11.22) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 16 Dec 2010 17:37:23 +0000 Received: from thor (localhost [127.0.0.1]) by thor.apache.org (8.13.8+Sun/8.13.8) with ESMTP id oBGHb21n008947 for ; Thu, 16 Dec 2010 17:37:02 GMT Message-ID: <20168299.160751292521022101.JavaMail.jira@thor> Date: Thu, 16 Dec 2010 12:37:02 -0500 (EST) From: "Kathey Marsden (JIRA)" To: derby-dev@db.apache.org Subject: [jira] Commented: (DERBY-4946) Derby 10.7 DatabaseMetaData.getTypeInfo() should not return BOOLEAN for a soft upgraded database In-Reply-To: <18813998.149801292462109054.JavaMail.jira@thor> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/jira/browse/DERBY-4946?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12972155#action_12972155 ] Kathey Marsden commented on DERBY-4946: --------------------------------------- Well getBoolean() works on System table BOOLEAN regardless, so not so clear why that would be useful decision point but certainly clear to me that in the contexts where BOOLEAN is not supported the DatabaseMetaData should continue to not return it. I am glad to hear you would not veto someone fixing this regression but a bit perplexed that you would consider doing so. > Derby 10.7 DatabaseMetaData.getTypeInfo() should not return BOOLEAN for a soft upgraded database > ------------------------------------------------------------------------------------------------ > > Key: DERBY-4946 > URL: https://issues.apache.org/jira/browse/DERBY-4946 > Project: Derby > Issue Type: Bug > Components: JDBC > Affects Versions: 10.7.1.1, 10.8.0.0 > Reporter: Kathey Marsden > Attachments: UseDBMetaForBool.java > > > Derby 10.7 DatabaseMetaData.getTypeInfo() should not return the BOOLEAN data type with a soft upgraded database as often applications use getTypeInfo() to determine if tables can be created with this type. > To reproduce and see the impact of the problem, first create the database testdb with 10.6 > ij version 10.6 > ij> connect 'jdbc:derby:testdb;create=true'; > ij> > run the attached program UseDBMetaForBool with 10.6 and it runs fine. > $ java UseDBMetaForBool > getDriverVersion10.6.2.3 - (1026030M) > supportsBoolean = false Make my table accordingly > CREATING SMALLINT TABLE SINCE NO BOOLEAN > getBoolean=true > getString=1 > Next run the program against 10.7 in soft upgrade mode and it fails with: > $ java UseDBMetaForBool > getDriverVersion10.7.1.2 - (1040699M) > supportsBoolean = true Make my table accordingly > CREATING BOOLEAN TABLE > Exception in thread "main" java.sql.SQLException: Use of 'BOOLEAN' requires data > base to be upgraded from version 10.6 to version 10.7 or later. > at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(SQLE > xceptionFactory40.java:95) > at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Util.java:256) > at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException > (TransactionResourceImpl.java:396) > at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Tr > ansactionResourceImpl.java:348) > at org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConne > ction.java:2284) > at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Connection > Child.java:82) > at org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java > :616) > at org.apache.derby.impl.jdbc.EmbedStatement.executeUpdate(EmbedStatemen > t.java:176) > at UseDBMetaForBool.main(UseDBMetaForBool.java:28) > Caused by: java.sql.SQLException: Use of 'BOOLEAN' requires database to be upgra > ded from version 10.6 to version 10.7 or later. > at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExc > eptionFactory.java:45) > at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransport > AcrossDRDA(SQLExceptionFactory40.java:119) > at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(SQLE > xceptionFactory40.java:70) > ... 8 more > Caused by: ERROR XCL47: Use of 'BOOLEAN' requires database to be upgraded from v > ersion 10.6 to version 10.7 or later. > at org.apache.derby.iapi.error.StandardException.newException(StandardEx > ception.java:343) > at org.apache.derby.impl.sql.catalog.DD_Version.checkVersion(DD_Version. > java:845) > at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.checkVersion(Dat > aDictionaryImpl.java:9662) > at org.apache.derby.impl.sql.compile.SQLParser.checkVersion(SQLParser.ja > va:327) > at org.apache.derby.impl.sql.compile.SQLParser.dataTypeCommon(SQLParser. > java:3336) > at org.apache.derby.impl.sql.compile.SQLParser.dataTypeDDL(SQLParser.jav > a:3260) > at org.apache.derby.impl.sql.compile.SQLParser.columnDefinition(SQLParse > r.java:3125) > at org.apache.derby.impl.sql.compile.SQLParser.tableElement(SQLParser.ja > va:3090) > at org.apache.derby.impl.sql.compile.SQLParser.tableElementList(SQLParse > r.java:3061) > at org.apache.derby.impl.sql.compile.SQLParser.tableDefinition(SQLParser > .java:10204) > at org.apache.derby.impl.sql.compile.SQLParser.createStatements(SQLParse > r.java:2079) > at org.apache.derby.impl.sql.compile.SQLParser.StatementPart(SQLParser.j > ava:1974) > at org.apache.derby.impl.sql.compile.SQLParser.Statement(SQLParser.java: > 1892) > at org.apache.derby.impl.sql.compile.ParserImpl.parseStatement(ParserImp > l.java:151) > at org.apache.derby.impl.sql.GenericStatement.prepMinion(GenericStatemen > t.java:282) > at org.apache.derby.impl.sql.GenericStatement.prepare(GenericStatement.j > ava:90) > at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepa > reInternalStatement(GenericLanguageConnectionContext.java:1101) > at org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java > :607) > ... 2 more > Finally, hard upgrade and see it runs again once the upgrade has been performed: > $ java org.apache.derby.tools.ij > ij version 10.7 > ij> connect 'jdbc:derby:testdb;upgrade=true'; > ij> > kmarsden@IBM-93AE43E63C0 ~/repro/softUpgr > $ java UseDBMetaForBool > getDriverVersion10.7.1.2 - (1040699M) > supportsBoolean = true Make my table accordingly > CREATING BOOLEAN TABLE > getBoolean=true > getString=true > The application should run in soft upgrade mode and DatabaseMetaData.getTypeInfo() should not return the BOOLEAN type in soft upgrade before it is available to use. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.