db-derby-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bpendle...@apache.org
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 GMT
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;



Mime
View raw message