Uploaded image for project: 'Derby'
  1. Derby
  2. DERBY-2866

Improve error message when comparing user table and system table columns if collation doesn't match

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Minor
    • Resolution: Duplicate
    • 10.3.1.4
    • None
    • SQL
    • None

    Description

      If I create a database with TERRITORY_BASED collation and try to do a comparison between a user table column and a system table column, I get the following message. If I create it with UCS_BASIC collation there is no problem with the query. It makes sense to me that I can't compare these columns but I think it would be worthwhile to make a more informative error message since in fact normally comparisons between VARCHAR and VARCHAR are supported, just not comparisons between TERRITORY_BASED and UCS_BASIC.

      Kathey

      ij> connect 'jdbc:derby:enusdb;create=true;territory=en_US;collation=TERRITORY_BASED';
      ij(CONNECTION1)> create table t (vc varchar(30));
      0 rows inserted/updated/deleted
      ij(CONNECTION1)> insert into t values('t');
      1 row inserted/updated/deleted
      ij(CONNECTION1)> select tableName, vc from sys.systables, t where vc = tableName;
      ERROR 42818: Comparisons between 'VARCHAR' and 'VARCHAR' are not supported.

      Bryan suggests ...

      Can we make it say something like:

      ERROR 42818: Comparisons between 'VARCHAR(en_US)' and 'VARCHAR(UCS_BASIC)' are not supported.

      That is, sort of pack the collation information into the datatype
      name somehow?

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              kmarsden Katherine Marsden
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: