[ 
https://issues.apache.org/jira/browse/DERBY-3458?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Kathey Marsden updated DERBY-3458:
----------------------------------

    Fix Version/s: 10.3.2.2

Adding 10.3.2.2 to fix version as this fix was ported to the 10.3 branch.

> dblook fails on TERRITORY_BASED databases
> -----------------------------------------
>
>                 Key: DERBY-3458
>                 URL: https://issues.apache.org/jira/browse/DERBY-3458
>             Project: Derby
>          Issue Type: Bug
>          Components: Tools
>    Affects Versions: 10.3.2.1
>            Reporter: Stephan van Loendersloot
>            Assignee: Stephan van Loendersloot
>            Priority: Minor
>             Fix For: 10.3.2.2, 10.4.1.3
>
>         Attachments: DERBY-3458_patch_1.stat, DERBY-3458_patch_1.txt, 
> DERBY-3458_patch_2.stat, DERBY-3458_patch_2.txt, DERBY-3458_patch_3.stat, 
> DERBY-3458_patch_3.txt, DERBY-3458_patch_3_function_tests.txt, 
> DERBY-3458_patch_4.stat, DERBY-3458_patch_4.txt, 
> DERBY-3458_patch_4_function_tests.txt
>
>
> I've created small patches for myself by replacing all related queries in the 
> 'tools' section with CASTs to CHARs and VARCHARs and would like to contribute 
> these to the community in case anyone else can confirm this is a bug.
> A small test case to reproduce the problem is provided below, the version of 
> Derby that provides the stacktrace is 10.3.2.1.
> Regards,
> Stephan van Loendersloot.
> Reproduction steps:
> ---------- 1: create_territory_db.sql  ----------
> CONNECT 
> 'jdbc:derby://localhost/dutch;user=dutch;password=dutch;create=true;territory=nl_NL;collation=TERRITORY_BASED';
> AUTOCOMMIT OFF;
> CREATE TABLE AIRLINES
>  (
>     AIRLINE CHAR(2) NOT NULL ,
>     AIRLINE_FULL VARCHAR(24),
>     BASIC_RATE DOUBLE PRECISION,
>     DISTANCE_DISCOUNT DOUBLE PRECISION,
>     BUSINESS_LEVEL_FACTOR DOUBLE PRECISION,
>     FIRSTCLASS_LEVEL_FACTOR DOUBLE PRECISION,
>     ECONOMY_SEATS INTEGER,
>     BUSINESS_SEATS INTEGER,
>     FIRSTCLASS_SEATS INTEGER
>  );
> COMMIT;
> DISCONNECT;
> EXIT;
> ---------- 2: use dbloook ----------
> dblook -d "jdbc:derby://localhost/dutch;user=dutch;password=dutch" -o 
> dutch.sql
> ---------- 3: stacktrace ----------
> java.sql.SQLSyntaxErrorException: Comparisons between 'CHAR (UCS_BASIC)' and 
> 'CHAR (TERRITORY_BASED)' are not supported. Types must be comparable. String 
> types must also have matching collation. If collation does not match, a 
> possible solution is to cast operands to force them to the default collation 
> (e.g. select tablename from sys.systables where CAST(tablename as 
> VARCHAR(128)) = 'T1')
>   at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown 
> Source)
>   at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)
>   at org.apache.derby.client.am.Statement.executeQuery(Unknown Source)
>   at org.apache.derby.tools.dblook.prepForDump(Unknown Source)
>   at org.apache.derby.tools.dblook.go(Unknown Source)
>   at org.apache.derby.tools.dblook.<init>(Unknown Source)
>   at org.apache.derby.tools.dblook.main(Unknown Source)
> Caused by: org.apache.derby.client.am.SqlException: Comparisons between 'CHAR 
> (UCS_BASIC)' and 'CHAR (TERRITORY_BASED)' are not supported. Types must be 
> comparable. String types must also have matching collation. If collation does 
> not match, a possible solution is to cast operands to force them to the 
> default collation (e.g. select tablename from sys.systables where 
> CAST(tablename as VARCHAR(128)) = 'T1')
>   at org.apache.derby.client.am.Statement.completeSqlca(Unknown Source)
>   at org.apache.derby.client.net.NetStatementReply.parsePrepareError(Unknown 
> Source)
>   at 
> org.apache.derby.client.net.NetStatementReply.parsePRPSQLSTTreply(Unknown 
> Source)
>   at 
> org.apache.derby.client.net.NetStatementReply.readPrepareDescribeOutput(Unknown
>  Source)
>   at 
> org.apache.derby.client.net.StatementReply.readPrepareDescribeOutput(Unknown 
> Source)
>   at 
> org.apache.derby.client.net.NetStatement.readPrepareDescribeOutput_(Unknown 
> Source)
>   at org.apache.derby.client.am.Statement.readPrepareDescribeOutput(Unknown 
> Source)
>   at org.apache.derby.client.am.Statement.flowExecute(Unknown Source)
>   at org.apache.derby.client.am.Statement.executeQueryX(Unknown Source)
>   ... 5 more
> -- **--> DEBUG: Comparisons between 'CHAR (UCS_BASIC)' and 'CHAR 
> (TERRITORY_BASED)' are not supported. Types must be comparable. String types 
> must also have matching collation. If collation does not match, a possible 
> solution is to cast operands to force them to the default collation (e.g. 
> select tablename from sys.systables where CAST(tablename as VARCHAR(128)) = 
> 'T1') 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to