[ 
https://issues.apache.org/jira/browse/DERBY-5537?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13169254#comment-13169254
 ] 

Knut Anders Hatlen commented on DERBY-5537:
-------------------------------------------

SQLChar.java has this comment:

            /*
            ** Check whether any non-blank characters will be truncated.
            */
            if (errorOnTrunc)
                hasNonBlankChars(getString(), desiredWidth, sourceWidth);
            //RESOLVE: should issue a warning instead

Similar in SQLBit.java:

                        if (errorOnTrunc)
                        {
                                // error if truncating non pad characters.
                                for (int i = desiredWidth; i < 
dataValue.length; i++) {

                                        if (dataValue[i] != SQLBinary.PAD)
                                                throw 
StandardException.newException(SQLState.LANG_STRING_TRUNCATION, getTypeName(), 
                                                                        
StringUtil.formatForPrint(this.toString()),
                                                                        
String.valueOf(desiredWidth));
                                }
                        }
                        //else
                        //{
                        // RESOLVE: when we have warnings, issue a warning if
                        // truncation of non-zero bits will occur
                        //}

One thing to note is that SQLBit is silent about the truncation, also in the 
cases where truncation should cause an exception, if all the truncated bytes 
are equal to SQLBinary.PAD (0x20). According to 6.12 <cast specification>, 
general rule 12, we should always generate a warning on truncation of binary 
string types. For character string types, on the other hand, it is correct not 
to warn if all the truncated characters are <space>s.
                
> Casting to a shorter string type does not warn about truncation
> ---------------------------------------------------------------
>
>                 Key: DERBY-5537
>                 URL: https://issues.apache.org/jira/browse/DERBY-5537
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.8.2.2
>            Reporter: Knut Anders Hatlen
>
> SQL:2003, part 2, 6.12 <cast specification> specifies that a truncation 
> warning should be raised when casting from one (character or binary) string 
> data type to another. Derby does truncate, but it doesn't raise a warning:
> ij> values cast('abc' as char(2));
> 1 
> --
> ab
> 1 row selected
> ij> values cast(x'cafebabe' as char(2) for bit data);
> 1   
> ----
> cafe
> 1 row selected
> We should generate a warning in order to be compliant.

--
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

        

Reply via email to