[ https://issues.apache.org/jira/browse/DERBY-5525?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13166244#comment-13166244 ] Dag H. Wanvik commented on DERBY-5525: -------------------------------------- Yes, my point was exactly that the metadata type is for the resultset. not the column. So, in order not to get truncation, one would have to write something like: values cast(upper('Straße') as varchar(7)); This also displays correctly: ij> values upper('Straße') , '1234567'; 1 ------- STRASSE 1234567 So, we should this issue as invalid. Do we generate a truncation warning, though? > I don't see much value in adding a truncation warning for the case where upper() can be evaluated at compilation-time: > > select ... where col1 = upper( 'Straße' ) I think we should. The semantics for the case according to the standard should be the same. Since we *do* generate a result set which shows the truncation, I believe we should generate the warning as well. As for lcase and ucase in JDBC, aren't these supposed to map to underlying functions if they are available? If so, why should they have different semantics? Sounds confusing to me.. > Precision for UPPER function is wrong if the returned value is longer than the literal argument > ----------------------------------------------------------------------------------------------- > > Key: DERBY-5525 > URL: https://issues.apache.org/jira/browse/DERBY-5525 > Project: Derby > Issue Type: Bug > Components: SQL > Affects Versions: 10.8.2.2 > Reporter: Knut Anders Hatlen > > Seen in ij in a database with territory based collation and German locale: > ==vv= COPIED FROM IJ CONSOLE =vv== > ij> VALUES UCASE('Straßenbahn'); > 1 > ----------- > STRASSENBA& > 1 Zeile ausgewählt > ================================== > And with JDBC calls: > Connection c = DriverManager.getConnection( > "jdbc:derby:memory:db;create=true;territory=de_DE;" + > "collation=TERRITORY_BASED"); > Statement s = c.createStatement(); > ResultSet rs = s.executeQuery("values upper('Straße')"); > System.out.println(rs.getMetaData().getPrecision(1)); > rs.next(); > System.out.println(rs.getString(1)); > This prints > 6 > STRASSE > The precision is wrong, since the returned value is 7 characters long. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira