Return-Path: Delivered-To: apmail-db-derby-dev-archive@www.apache.org Received: (qmail 66948 invoked from network); 20 Dec 2010 09:37:29 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 20 Dec 2010 09:37:29 -0000 Received: (qmail 24328 invoked by uid 500); 20 Dec 2010 09:37:29 -0000 Delivered-To: apmail-db-derby-dev-archive@db.apache.org Received: (qmail 24227 invoked by uid 500); 20 Dec 2010 09:37:28 -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 24154 invoked by uid 99); 20 Dec 2010 09:37:27 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 20 Dec 2010 09:37:27 +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; Mon, 20 Dec 2010 09:37:24 +0000 Received: from thor (localhost [127.0.0.1]) by thor.apache.org (8.13.8+Sun/8.13.8) with ESMTP id oBK9b3Pl023746 for ; Mon, 20 Dec 2010 09:37:03 GMT Message-ID: <18498355.211541292837823195.JavaMail.jira@thor> Date: Mon, 20 Dec 2010 04:37:03 -0500 (EST) From: "Knut Anders Hatlen (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=12973144#action_12973144 ] Knut Anders Hatlen commented on DERBY-4946: ------------------------------------------- Thanks, Rick and Kathey, for looking at the patches. Committed revision 1051026. I'll backport it to 10.7 too (after running tests). Since this fix alters the meta-data queries, I suppose I need to bump the last digit in the version number on the branch too? > 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 > Assignee: Knut Anders Hatlen > Attachments: bool.diff, odbc+tests.diff, 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.