Provide client localization for severe server side exceptions
-------------------------------------------------------------

         Key: DERBY-1369
         URL: http://issues.apache.org/jira/browse/DERBY-1369
     Project: Derby
        Type: Improvement

  Components: Localization, Network Client, Network Server  
    Versions: 10.1.2.1    
    Reporter: Kathey Marsden
    Priority: Minor


Error messages for severe server side exceptions do not get localized according 
to the client locale.  It would be good for these to be localized and print in 
the same format as other exceptions.

Perhaps this could be achieved by bundling these messages with client.  Care 
would need to be taken for compatibility.  The current behaviour is described 
below:

 
Client  relies on calling the SYSIBM.SQLCAMESSAGE procedure to retrieve the 
message text. For severe errors
>= ExceptionSeverity.SESSION_SEVERITY
we do not get the localized exception according to the client locale.  We 
cannot call the stored procedure to get the localized exception from the 
server, so the server just sends the preformatted message in the message tokens 
according to the server locale and the client prints out  a message like this:


 connect 'jdbc:derby://localhost:1527/wombat';
Connection number: 2.
ERROR XJ040: DERBY SQL error: SQLCODE: -1, SQLSTATE: XJ040, SQLERRMC: Failed to 
start database 'wombat', see the next exception for details.::SQLSTATE: 
XSLAPDatabase at C:\marsden\repro\7594\wombat is
 at version 10.2 beta. Beta databases cannot be upgraded,
ij>


This is the code where this processing is done in the server DRDAConnThread
                        // If this is not an EmbedSQLException or is a severe 
excecption where
                        // we have no hope of succussfully calling the 
SYSIBM.SQLCAMESSAGE send
                        // preformatted message using the server locale
                        sqlerrmc = buildPreformattedSqlerrmc(se);
                        }
                        // Truncate the sqlerrmc to a length that the client 
can support.
                        int maxlen = (sqlerrmc == null) ? -1 : 
Math.min(sqlerrmc.length(),
                                        
appRequester.supportedMessageParamLength());
                        if ((maxlen >= 0) && (sqlerrmc.length() > maxlen))
                        // have to truncate so the client can handle it.
                        sqlerrmc = sqlerrmc.substring(0, maxlen);
                        return sqlerrmc;



-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to