Return-Path: Delivered-To: apmail-db-derby-commits-archive@www.apache.org Received: (qmail 18177 invoked from network); 30 Jul 2010 14:09:56 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 30 Jul 2010 14:09:56 -0000 Received: (qmail 49016 invoked by uid 500); 30 Jul 2010 14:09:56 -0000 Delivered-To: apmail-db-derby-commits-archive@db.apache.org Received: (qmail 48953 invoked by uid 500); 30 Jul 2010 14:09:55 -0000 Mailing-List: contact derby-commits-help@db.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: "Derby Development" List-Id: Delivered-To: mailing list derby-commits@db.apache.org Received: (qmail 48944 invoked by uid 99); 30 Jul 2010 14:09:54 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 30 Jul 2010 14:09:54 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 30 Jul 2010 14:09:53 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id AB2DF2388A2C; Fri, 30 Jul 2010 14:08:32 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r980800 - in /db/derby/code/trunk/java: drda/org/apache/derby/impl/drda/ testing/org/apache/derby/impl/drda/ testing/org/apache/derbyTesting/functionTests/master/ testing/org/apache/derbyTesting/functionTests/tests/derbynet/ testing/org/apa... Date: Fri, 30 Jul 2010 14:08:32 -0000 To: derby-commits@db.apache.org From: bpendleton@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20100730140832.AB2DF2388A2C@eris.apache.org> Author: bpendleton Date: Fri Jul 30 14:08:31 2010 New Revision: 980800 URL: http://svn.apache.org/viewvc?rev=980800&view=rev Log: DERBY-4746: Server support for UTF8 in DRDA This patch was contributed by Tiago R. Espinha (tiago dot derby at yahoo dot co dot uk) The code portion of this change puts in place all the switches necessary on the server-side to enable and disable UTF8 support. Principally, the new internal methods switchToUtf8() and switchToEbcdic() are added to DRDAConnThread, and called appropriately from the ACCSEC code point. The test portion of this change contains the protocol tests and changes to the framework required for the UTF8 protocol tests. The test changes implement the command 'switchToUtf8CcsidManager' in the protocol tests that essentially tells the framework to switch its DDMWriter and Reader to UTF8. Normally, a client would negotiate this through the MGRLVLS but the ProtocolTest doesn't take this into consideration and has to be forced into UTF8 mode. Note that due to DERBY-2031, each time we add a feature to the JUnit protocol test we have to do the same for the other or it'll break. Modified: db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/AppRequester.java db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/CcsidManager.java db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/CodePoint.java db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/CodePointNameTable.java db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/DRDAConnThread.java db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/NetworkServerControlImpl.java db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/TestProto.java db/derby/code/trunk/java/testing/org/apache/derby/impl/drda/ProtocolTest.java db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/testProtocol.out db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/protocol.tests db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/ProtocolTestGrammar.java Modified: db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/AppRequester.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/AppRequester.java?rev=980800&r1=980799&r2=980800&view=diff ============================================================================== --- db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/AppRequester.java (original) +++ db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/AppRequester.java Fri Jul 30 14:08:31 2010 @@ -52,6 +52,7 @@ class AppRequester 6, // SQLAM 1, // SUPERVISOR 5, // SYNCPTMGR + 1208, // UNICODEMGR 0 // XAMGR }; @@ -304,6 +305,14 @@ class AppRequester protected boolean supportsEXTDTAAbort() { return (clientType == DNC_CLIENT && greaterThanOrEqualTo(10, 6, 0)); } + + /** + * Returns whether our AppRequester's UNICODEMGR supports UTF8 (CCSID 1208) + * @return {@code true} if the AppRequester supports CCSID 1208, {@code false} if not + */ + protected boolean supportsUtf8Ccsid() { + return (getManagerLevel(CodePoint.UNICODEMGR) == CcsidManager.UTF8_CCSID); + } protected boolean supportsSessionDataCaching() { return (clientType == DNC_CLIENT && greaterThanOrEqualTo(10, 4, 0)); Modified: db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/CcsidManager.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/CcsidManager.java?rev=980800&r1=980799&r2=980800&view=diff ============================================================================== --- db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/CcsidManager.java (original) +++ db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/CcsidManager.java Fri Jul 30 14:08:31 2010 @@ -32,9 +32,8 @@ abstract class CcsidManager // bytes containing the character representation "value" for the particular ccsid. byte[] numToCharRepresentation; - /* DRDA CCSID levels for UTF8 and EBCDIC */ + /* DRDA CCSID level for UTF8 */ public static final int UTF8_CCSID = 1208; - public static final int EBCDIC_CCSID = 500; CcsidManager (byte space, byte dot, byte[] numToCharRepresentation) { Modified: db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/CodePoint.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/CodePoint.java?rev=980800&r1=980799&r2=980800&view=diff ============================================================================== --- db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/CodePoint.java (original) +++ db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/CodePoint.java Fri Jul 30 14:08:31 2010 @@ -163,6 +163,10 @@ class CodePoint // containing character data. static final int CCSIDMGR = 0x14CC; + // UNICODE Manager. Min. level 0. + // Provides character encoding of the DDM objects and parameters + static final int UNICODEMGR = 0x1C08; + // CCSID for Single-Byte Characters codepoint constant. static final int CCSIDSBC = 0x119C; @@ -873,6 +877,7 @@ class CodePoint SQLAM, SUPERVISOR, SYNCPTMGR, + UNICODEMGR, XAMGR }; protected static final int UNKNOWN_MANAGER = -1; Modified: db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/CodePointNameTable.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/CodePointNameTable.java?rev=980800&r1=980799&r2=980800&view=diff ============================================================================== --- db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/CodePointNameTable.java (original) +++ db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/CodePointNameTable.java Fri Jul 30 14:08:31 2010 @@ -160,6 +160,7 @@ class CodePointNameTable extends java.ut put (new Integer (CodePoint.PBSD), "PBSD"); put (new Integer (CodePoint.PBSD_ISO), "PBSD_ISO"); put (new Integer (CodePoint.PBSD_SCHEMA), "PBSD_SCHEMA"); + put (new Integer (CodePoint.UNICODEMGR), "UNICODEMGR"); } String lookup (int codePoint) Modified: db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/DRDAConnThread.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/DRDAConnThread.java?rev=980800&r1=980799&r2=980800&view=diff ============================================================================== --- db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/DRDAConnThread.java (original) +++ db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/DRDAConnThread.java Fri Jul 30 14:08:31 2010 @@ -953,6 +953,15 @@ class DRDAConnThread extends Thread { case CodePoint.ACCSEC: int securityCheckCode = parseACCSEC(); writeACCSECRD(securityCheckCode); + + /* ACCSECRD is the last reply that is mandatorily in EBCDIC */ + if (appRequester.supportsUtf8Ccsid()) { + switchToUtf8(); + } else { + /* This thread might serve several requests. + * Revert if not supported by current client. */ + switchToEbcdic(); + } checkSecurityCodepoint = true; break; case CodePoint.SECCHK: @@ -1206,6 +1215,22 @@ class DRDAConnThread extends Thread { } /** + * Switch the DDMWriter and DDMReader to UTF8 IF supported + */ + private void switchToUtf8() { + writer.setUtf8Ccsid(); + reader.setUtf8Ccsid(); + } + + /** + * Switch the DDMWriter and DDMReader to EBCDIC + */ + private void switchToEbcdic() { + writer.setEbcdicCcsid(); + reader.setEbcdicCcsid(); + } + + /** * Write RDB Failure * * Instance Variables Modified: db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/NetworkServerControlImpl.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/NetworkServerControlImpl.java?rev=980800&r1=980799&r2=980800&view=diff ============================================================================== --- db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/NetworkServerControlImpl.java (original) +++ db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/NetworkServerControlImpl.java Fri Jul 30 14:08:31 2010 @@ -204,6 +204,7 @@ public final class NetworkServerControlI 7, // SQLAM 0, // SUPERVISOR 0, // SYNCPTMGR + 1208, // UNICODE Manager 7 // XAMGR }; Modified: db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/TestProto.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/TestProto.java?rev=980800&r1=980799&r2=980800&view=diff ============================================================================== --- db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/TestProto.java (original) +++ db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/TestProto.java Fri Jul 30 14:08:31 2010 @@ -110,10 +110,17 @@ public class TestProto { private static final int MORE_DATA = 55; private static final int COMPLETE_TEST = 56; private static final int READ_SECMEC_SECCHKCD = 57; + private static final int SWITCH_TO_UTF8_CCSID_MANAGER = 58; + private static final int DELETE_DATABASE = 59; private static final String MULTIVAL_START = "MULTIVALSTART"; private static final String MULTIVAL_SEP = "SEP"; private static final String MULTIVAL_END = "MULTIVALEND"; + + // Replaces %UTF8TestString% in protocol.tests + private static final String UTF8_TEST_MATCH = "%UTF8TestString%"; + private static final String UTF8_TEST_STRING = "\u4f60\u597d\u4e16\u754cABCDEFGHIJKLMNOPQ"; + // initialize hash tables static { init(); @@ -326,7 +333,9 @@ public class TestProto { commandTable.put("moredata", new Integer(MORE_DATA)); commandTable.put("completetest", new Integer(COMPLETE_TEST)); commandTable.put("readsecmecandsecchkcd", new Integer(READ_SECMEC_SECCHKCD)); - + commandTable.put("switchtoutf8ccsidmanager", new Integer(SWITCH_TO_UTF8_CCSID_MANAGER)); + commandTable.put("deletedatabase", new Integer(DELETE_DATABASE)); + Integer key; for (Enumeration e = codePointNameTable.keys(); e.hasMoreElements(); ) { @@ -516,6 +525,13 @@ public class TestProto { case SKIP_BYTES: reader.skipBytes(); break; + case SWITCH_TO_UTF8_CCSID_MANAGER: + writer.setUtf8Ccsid(); + reader.setUtf8Ccsid(); + break; + case DELETE_DATABASE: + getString(); //NO-OP - automatic cleanup for TestProto + break; default: System.out.println("unknown command in line " + tkn.lineno()); // skip remainder of line @@ -715,6 +731,12 @@ public class TestProto { System.err.println("Expecting word, got " + tkn.nval + " on line " + tkn.lineno()); System.exit(1); } + + /* Check whether '%UTF8TestString%' is in the string and replace + * it with Chinese characters for the UTF8 protocol tests */ + if (tkn.sval.lastIndexOf(UTF8_TEST_MATCH) != -1) + return tkn.sval.replaceAll(UTF8_TEST_MATCH, UTF8_TEST_STRING); + return tkn.sval; } /** Modified: db/derby/code/trunk/java/testing/org/apache/derby/impl/drda/ProtocolTest.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derby/impl/drda/ProtocolTest.java?rev=980800&r1=980799&r2=980800&view=diff ============================================================================== --- db/derby/code/trunk/java/testing/org/apache/derby/impl/drda/ProtocolTest.java (original) +++ db/derby/code/trunk/java/testing/org/apache/derby/impl/drda/ProtocolTest.java Fri Jul 30 14:08:31 2010 @@ -39,6 +39,7 @@ import java.nio.charset.Charset; import java.security.AccessController; import java.security.PrivilegedActionException; +import java.sql.DriverManager; import java.util.ArrayList; import java.util.Arrays; @@ -85,6 +86,10 @@ public class ProtocolTest private static final String MULTIVAL_SEP = "SEP"; private static final String MULTIVAL_END = "MULTIVALEND"; + // Replaces %UTF8TestString% in protocol.tests + private static final String UTF8_TEST_MATCH = "%UTF8TestString%"; + private static final String UTF8_TEST_STRING = "\u4f60\u597d\u4e16\u754cABCDEFGHIJKLMNOPQ"; + static { // Create a mapping from code point value to name. Iterator cpnIter = codePointNameTable.keySet().iterator(); @@ -409,6 +414,13 @@ public class ProtocolTest case SKIP_BYTES: reader.skipBytes(); break; + case SWITCH_TO_UTF8_CCSID_MANAGER: + writer.setUtf8Ccsid(); + reader.setUtf8Ccsid(); + break; + case DELETE_DATABASE: + deleteDatabase(getString(tkn)); + break; default: fail("Command in line " + ln(tkn) + " not implemented: " + cmd.toString()); @@ -585,6 +597,12 @@ public class ProtocolTest int val = tkn.nextToken(); assertTrue("Expected string, got number '" + tkn.nval + "' on line " + ln(tkn), val != StreamTokenizer.TT_NUMBER); + + /* Check whether '%UTF8TestString%' is in the string and replace + * it with Chinese characters for the UTF8 protocol tests */ + if (tkn.sval.contains(UTF8_TEST_MATCH)) + return tkn.sval.replace(UTF8_TEST_MATCH, UTF8_TEST_STRING); + return tkn.sval; } @@ -849,6 +867,21 @@ public class ProtocolTest } /** + * Delete the database with the name 'name' + * @param name Name of the database to delete + */ + private void deleteDatabase(String name) { + String shutdownUrl = "jdbc:derby:"+name+";shutdown=true"; + try { + DriverManager.getConnection(shutdownUrl); + } catch (Exception se) { + // ignore shutdown exception + } + removeDirectory(getSystemProperty("derby.system.home") + File.separator + + name); + } + + /** * Creates a suite of tests dynamically from a file describing protocol * tests. * Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/testProtocol.out URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/testProtocol.out?rev=980800&r1=980799&r2=980800&view=diff ============================================================================== --- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/testProtocol.out (original) +++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/testProtocol.out Fri Jul 30 14:08:31 2010 @@ -306,3 +306,9 @@ Test with 65535 query block size QRYBLKS PASSED Test 2 with 65535 query block size QRYBLKSZ - DERBY-959 PASSED +Test UNICODEMGR at level 1208 while sending UTF8 characters in RDBNAM +PASSED +Test UNICODEMGR at level 1208 while sending UTF8 characters in USRID and PASSWORD +PASSED +Test setting RDBNAM at ACCSEC **and** at SECCHK +PASSED \ No newline at end of file Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/protocol.tests URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/protocol.tests?rev=980800&r1=980799&r2=980800&view=diff ============================================================================== --- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/protocol.tests (original) +++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/protocol.tests Fri Jul 30 14:08:31 2010 @@ -3531,6 +3531,150 @@ flush // but JCC expects SQLCARD and we're nice guys... checkSQLCard 0 " " endTest +// -- +DISPLAY "Test UNICODEMGR at level 1208 while sending UTF8 characters in RDBNAM" +// this include file has all the protocol needed to make a connection +// to the wombat database at sqlam 7 +createDssRequest +startDdm EXCSAT +writeScalarString EXTNAM "test" +startDdm MGRLVLLS +writeCodePoint4Bytes SQLAM 7 +writeCodePoint4Bytes UNICODEMGR 1208 +endDdm +endDdm +endDss +flush +switchToUtf8CcsidManager // tell ProtocolTest.java to switch DDMReader/Writer to UTF8 +createDssRequest +startDdm ACCSEC +writeScalar2Bytes SECMEC 4 // userid password +endDdm +endDss +flush +skipDss // don't care about the EXCSATRM so just skip +skipDss // don't care about the ACCSECRD so just skip +createDssRequest +startDdm SECCHK +writeScalar2Bytes SECMEC 4 // userid password +// %UTF8TestString% will be replaced on runtime by ProtocolTest.java/getString() and TestProto.java +writeScalarString RDBNAM "%UTF8TestString%;create=true" +writeScalarString USRID test +endDdm +endDss +createDssRequest +startDdm ACCRDB +writeScalar2Bytes RDBACCCL SQLAM +writeScalarBytes CRRTKN "0xd5c6f0f0f0f0f0f14bc7c3c2f600ec774aa60e" +writeScalarString PRDID "TST01000" +writeScalarString TYPDEFNAM "QTDSQLASC" +startDdm TYPDEFOVR +writeScalar2Bytes CCSIDSBC 1208 +writeScalar2Bytes CCSIDMBC 1208 +endDdm +endDdm +endDss +flush +skipDss // don't care about SECCHKRM so just skip +skipDss // don't care about ACCRDBRM so just skip +deleteDatabase "%UTF8TestString%" // clean up the UTF8 database +endTest +// -- +DISPLAY "Test UNICODEMGR at level 1208 while sending UTF8 characters in USRID and PASSWORD" +// this include file has all the protocol needed to make a connection +// to the wombat database at sqlam 7 +createDssRequest +startDdm EXCSAT +writeScalarString EXTNAM "test" +startDdm MGRLVLLS +writeCodePoint4Bytes SQLAM 7 +writeCodePoint4Bytes UNICODEMGR 1208 +endDdm +endDdm +endDss +flush +switchToUtf8CcsidManager // tell ProtocolTest.java to switch DDMReader/Writer to UTF8 +createDssRequest +startDdm ACCSEC +writeScalar2Bytes SECMEC 3 // userid password +endDdm +endDss +flush +skipDss // don't care about the EXCSATRM so just skip +skipDss // don't care about the ACCSECRD so just skip +createDssRequest +startDdm SECCHK +writeScalar2Bytes SECMEC 3 // userid password +// %UTF8TestString% will be replaced on runtime by ProtocolTest.java/getString() +writeScalarString RDBNAM "%UTF8TestString%;create=true" +writeScalarString USRID "%UTF8TestString%" +writeScalarString PASSWORD "%UTF8TestString%" +endDdm +endDss +createDssRequest +startDdm ACCRDB +writeScalar2Bytes RDBACCCL SQLAM +writeScalarBytes CRRTKN "0xd5c6f0f0f0f0f0f14bc7c3c2f600ec774aa60e" +writeScalarString PRDID "TST01000" +writeScalarString TYPDEFNAM "QTDSQLASC" +startDdm TYPDEFOVR +writeScalar2Bytes CCSIDSBC 1208 +writeScalar2Bytes CCSIDMBC 1208 +endDdm +endDdm +endDss +flush +skipDss // don't care about SECCHKRM so just skip +skipDss // don't care about ACCRDBRM so just skip +deleteDatabase "%UTF8TestString%" // clean up the UTF8 database +endTest +// -- +DISPLAY "Test setting RDBNAM at ACCSEC **and** at SECCHK" +// this include file has all the protocol needed to make a connection +// to the wombat database at sqlam 7 +createDssRequest +startDdm EXCSAT +writeScalarString EXTNAM "test" +startDdm MGRLVLLS +writeCodePoint4Bytes SQLAM 7 +endDdm +endDdm +endDss +flush +createDssRequest +startDdm ACCSEC +writeScalar2Bytes SECMEC 4 // userid password +// the string below will be replaced on runtime by ProtocolTest.java/getString() +writeScalarString RDBNAM "newname;create=true" +endDdm +endDss +flush +skipDss // don't care about the EXCSATRM so just skip +skipDss // don't care about the ACCSECRD so just skip +createDssRequest +startDdm SECCHK +writeScalar2Bytes SECMEC 4 // userid password +writeScalarString RDBNAM "newname;create=true" +writeScalarString USRID test +endDdm +endDss +createDssRequest +startDdm ACCRDB +writeScalar2Bytes RDBACCCL SQLAM +writeScalarBytes CRRTKN "0xd5c6f0f0f0f0f0f14bc7c3c2f600ec774aa60e" +writeScalarString PRDID "TST01000" +writeScalarString TYPDEFNAM "QTDSQLASC" +startDdm TYPDEFOVR +writeScalar2Bytes CCSIDSBC 1208 +writeScalar2Bytes CCSIDMBC 1208 +endDdm +endDdm +endDss +flush +skipDss // don't care about SECCHKRM so just skip +skipDss // don't care about ACCRDBRM so just skip +deleteDatabase "newname" // delete database created outside ProtocolTest.java +endTest // // // Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/ProtocolTestGrammar.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/ProtocolTestGrammar.java?rev=980800&r1=980799&r2=980800&view=diff ============================================================================== --- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/ProtocolTestGrammar.java (original) +++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/ProtocolTestGrammar.java Fri Jul 30 14:08:31 2010 @@ -87,7 +87,9 @@ public enum ProtocolTestGrammar { WRITE_ENCODED_LDSTRING, CHECK_SQLCARD, MORE_DATA, - READ_SECMEC_AND_SECCHKCD; + READ_SECMEC_AND_SECCHKCD, + SWITCH_TO_UTF8_CCSID_MANAGER, + DELETE_DATABASE; /** String associated with the command. */ private final String cmdString;