You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by rh...@apache.org on 2012/06/21 20:40:07 UTC

svn commit: r1352648 - in /db/derby/code/branches/10.9: ./ java/engine/org/apache/derby/diag/ java/engine/org/apache/derby/iapi/sql/dictionary/ java/engine/org/apache/derby/impl/sql/catalog/ java/testing/org/apache/derbyTesting/functionTests/tests/lang/

Author: rhillegas
Date: Thu Jun 21 18:40:06 2012
New Revision: 1352648

URL: http://svn.apache.org/viewvc?rev=1352648&view=rev
Log:
DERBY-5554: Port 1351714 and 1351795 from trunk to the 10.9 branch.

Modified:
    db/derby/code/branches/10.9/   (props changed)
    db/derby/code/branches/10.9/java/engine/org/apache/derby/diag/SpaceTable.java
    db/derby/code/branches/10.9/java/engine/org/apache/derby/iapi/sql/dictionary/DataDictionary.java
    db/derby/code/branches/10.9/java/engine/org/apache/derby/impl/sql/catalog/DataDictionaryImpl.java
    db/derby/code/branches/10.9/java/testing/org/apache/derbyTesting/functionTests/tests/lang/SysDiagVTIMappingTest.java

Propchange: db/derby/code/branches/10.9/
------------------------------------------------------------------------------
  Merged /db/derby/code/trunk:r1351714,1351795

Modified: db/derby/code/branches/10.9/java/engine/org/apache/derby/diag/SpaceTable.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.9/java/engine/org/apache/derby/diag/SpaceTable.java?rev=1352648&r1=1352647&r2=1352648&view=diff
==============================================================================
--- db/derby/code/branches/10.9/java/engine/org/apache/derby/diag/SpaceTable.java (original)
+++ db/derby/code/branches/10.9/java/engine/org/apache/derby/diag/SpaceTable.java Thu Jun 21 18:40:06 2012
@@ -91,6 +91,7 @@ import org.apache.derby.vti.VTIEnvironme
 	</LI>
 	<LI>ESTIMSPACESAVING bigint - not nullable.  The estimated space which 
     could possibly be saved by compressing the conglomerate, in bytes.</LI>
+	<LI>TABLEID char(36) - not nullable.  The UUID of the table.</LI>
 	</UL>
 
 
@@ -115,6 +116,7 @@ public class SpaceTable extends VTITempl
     private SpaceInfo spaceInfo;
     private TransactionController tc;
 
+    public  SpaceTable() {}
 
     public SpaceTable(String schemaName, String tableName)
     {
@@ -133,24 +135,49 @@ public class SpaceTable extends VTITempl
         DataDictionary dd = lcc.getDataDictionary();
 		
 		if (schemaName == null)
-			schemaName = lcc.getCurrentSchemaName();
+		{ schemaName = lcc.getCurrentSchemaName(); }
 
-        // if schemaName is null, it gets the default schema
-        SchemaDescriptor sd = dd.getSchemaDescriptor(schemaName, tc, true);
-        TableDescriptor td = dd.getTableDescriptor(tableName,sd, tc);
-        if (td == null)  // table does not exist
+        ConglomerateDescriptor[] cds;
+
+        if ( tableName != null )
+        {
+            // if schemaName is null, it gets the default schema
+            SchemaDescriptor sd = dd.getSchemaDescriptor(schemaName, tc, true);
+            TableDescriptor td = dd.getTableDescriptor(tableName,sd, tc);
+            if (td == null)  // table does not exist
+            {
+                conglomTable = new ConglomInfo[0];   // make empty conglom table
+                return;
+            }
+            cds = td.getConglomerateDescriptors();
+        }
+        else // 0-arg constructor, no table name, get all conglomerates
         {
-            conglomTable = new ConglomInfo[0];   // make empty conglom table
-            return;
+            cds = dd.getConglomerateDescriptors( null );
         }
-        ConglomerateDescriptor[] cds = td.getConglomerateDescriptors();
+        
         // initialize spaceTable
         conglomTable = new ConglomInfo[cds.length];
         for (int i = 0; i < cds.length; i++)
-            conglomTable[i] = new ConglomInfo(
-                cds[i].getConglomerateNumber(),
-                cds[i].isIndex() ? cds[i].getConglomerateName() : tableName,
-                cds[i].isIndex());
+        {
+            String  conglomerateName;
+
+            if ( cds[i].isIndex() ) { conglomerateName = cds[i].getConglomerateName(); }
+            else if ( tableName != null ) { conglomerateName = tableName; }
+            else
+            {
+                // 0-arg constructor. need to ask data dictionary for name of table
+                conglomerateName = dd.getTableDescriptor( cds[i].getTableID() ).getName();
+            }
+            
+            conglomTable[i] = new ConglomInfo
+                (
+                 cds[i].getTableID().toString(),
+                 cds[i].getConglomerateNumber(),
+                 conglomerateName,
+                 cds[i].isIndex()
+                 );
+        }
     }
 
 
@@ -227,7 +254,19 @@ public class SpaceTable extends VTITempl
 	public String getString(int columnNumber)
 	{
 		ConglomInfo conglomInfo = conglomTable[currentRow];
-		String str = conglomInfo.getConglomName();
+        String          str = null;
+        
+		switch( columnNumber )
+		{
+		    case 1:
+			    str = conglomInfo.getConglomName();
+                break;
+    		case 8:
+			    str = conglomInfo.getTableID();
+                break;
+		    default:
+			    break;
+		}
    		wasNull = (str == null);
 		return str;
 	}
@@ -335,6 +374,7 @@ public class SpaceTable extends VTITempl
 		EmbedResultSetMetaData.getResultColumnDescriptor("NUMUNFILLEDPAGES",  Types.BIGINT, false),
 		EmbedResultSetMetaData.getResultColumnDescriptor("PAGESIZE",          Types.INTEGER, false),
 		EmbedResultSetMetaData.getResultColumnDescriptor("ESTIMSPACESAVING",  Types.BIGINT, false),
+		EmbedResultSetMetaData.getResultColumnDescriptor("TABLEID",  Types.CHAR, false, 36),
 	};
 	
 	private static final ResultSetMetaData metadata = new EmbedResultSetMetaData(columnInfo);
@@ -343,17 +383,21 @@ public class SpaceTable extends VTITempl
 
 class ConglomInfo
 {
+    private String  tableID;
     private long conglomId;
     private String conglomName;
     private boolean isIndex;
 
-    public ConglomInfo(long conglomId, String conglomName, boolean isIndex)
+    public ConglomInfo(String tableID, long conglomId, String conglomName, boolean isIndex)
     {
+        this.tableID = tableID;
         this.conglomId = conglomId;
         this.conglomName = conglomName;
         this.isIndex = isIndex;
     }
 
+    public String getTableID()  { return tableID; }
+
     public long getConglomId()
     {
         return conglomId;

Modified: db/derby/code/branches/10.9/java/engine/org/apache/derby/iapi/sql/dictionary/DataDictionary.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.9/java/engine/org/apache/derby/iapi/sql/dictionary/DataDictionary.java?rev=1352648&r1=1352647&r2=1352648&view=diff
==============================================================================
--- db/derby/code/branches/10.9/java/engine/org/apache/derby/iapi/sql/dictionary/DataDictionary.java (original)
+++ db/derby/code/branches/10.9/java/engine/org/apache/derby/iapi/sql/dictionary/DataDictionary.java Thu Jun 21 18:40:06 2012
@@ -1420,7 +1420,8 @@ public interface DataDictionary
 	/**
 	 * Get an array of ConglomerateDescriptors given the UUID.  If it is a
 	 * heap conglomerate or an index conglomerate not shared by a duplicate
-	 * index, the size of the return array is 1.
+	 * index, the size of the return array is 1. If the uuid argument is null, then
+     * this method retrieves descriptors for all of the conglomerates in the database.
 	 *
 	 * @param uuid	The UUID
 	 *

Modified: db/derby/code/branches/10.9/java/engine/org/apache/derby/impl/sql/catalog/DataDictionaryImpl.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.9/java/engine/org/apache/derby/impl/sql/catalog/DataDictionaryImpl.java?rev=1352648&r1=1352647&r2=1352648&view=diff
==============================================================================
--- db/derby/code/branches/10.9/java/engine/org/apache/derby/impl/sql/catalog/DataDictionaryImpl.java (original)
+++ db/derby/code/branches/10.9/java/engine/org/apache/derby/impl/sql/catalog/DataDictionaryImpl.java Thu Jun 21 18:40:06 2012
@@ -7024,7 +7024,8 @@ public final class	DataDictionaryImpl
 	/**
 	 * Get an array of ConglomerateDescriptors given the UUID.  If it is a
 	 * heap conglomerate or an index conglomerate not shared by a duplicate
-	 * index, the size of the return array is 1.
+	 * index, the size of the return array is 1. If the uuid argument is null, then
+     * this method retrieves descriptors for all of the conglomerates in the database.
 	 *
 	 * @param uuid	The UUID
 	 *
@@ -7040,23 +7041,37 @@ public final class	DataDictionaryImpl
 		DataValueDescriptor		UUIDStringOrderable;
 		TabInfoImpl					ti = coreInfo[SYSCONGLOMERATES_CORE_NUM];
 
-		/* Use UUIDStringOrderable in both start and stop positions for scan */
-		UUIDStringOrderable = getIDValueAsCHAR(uuid);
-
-		/* Set up the start/stop position for the scan */
-		ExecIndexRow keyRow = exFactory.getIndexableRow(1);
-		keyRow.setColumn(1, UUIDStringOrderable);
-
 		List cdl = newSList();
 
-		getDescriptorViaIndex(
-						SYSCONGLOMERATESRowFactory.SYSCONGLOMERATES_INDEX1_ID,
-						keyRow,
-						(ScanQualifier [][]) null,
-						ti,
-						(TupleDescriptor) null,
-						cdl,
-						false);
+        if ( uuid != null )
+        {
+            /* Use UUIDStringOrderable in both start and stop positions for scan */
+            UUIDStringOrderable = getIDValueAsCHAR(uuid);
+
+            /* Set up the start/stop position for the scan */
+            ExecIndexRow keyRow = exFactory.getIndexableRow(1);
+            keyRow.setColumn(1, UUIDStringOrderable);
+
+            getDescriptorViaIndex(
+                                  SYSCONGLOMERATESRowFactory.SYSCONGLOMERATES_INDEX1_ID,
+                                  keyRow,
+                                  (ScanQualifier [][]) null,
+                                  ti,
+                                  (TupleDescriptor) null,
+                                  cdl,
+                                  false);
+        }
+        else
+        {
+            getDescriptorViaHeap
+                (
+                 null,
+                 (ScanQualifier[][]) null,
+                 ti,
+                 (TupleDescriptor) null,
+                 cdl
+                 );
+        }
 
 		ConglomerateDescriptor[] cda = new ConglomerateDescriptor[cdl.size()];
 		cdl.toArray(cda);

Modified: db/derby/code/branches/10.9/java/testing/org/apache/derbyTesting/functionTests/tests/lang/SysDiagVTIMappingTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.9/java/testing/org/apache/derbyTesting/functionTests/tests/lang/SysDiagVTIMappingTest.java?rev=1352648&r1=1352647&r2=1352648&view=diff
==============================================================================
--- db/derby/code/branches/10.9/java/testing/org/apache/derbyTesting/functionTests/tests/lang/SysDiagVTIMappingTest.java (original)
+++ db/derby/code/branches/10.9/java/testing/org/apache/derbyTesting/functionTests/tests/lang/SysDiagVTIMappingTest.java Thu Jun 21 18:40:06 2012
@@ -44,6 +44,12 @@ public final class SysDiagVTIMappingTest
     // Name of the log file to use when testing VTIs that expect one.
     private static final String testLogFile = "sys_vti_test_derby.tstlog";
 
+    private static  final   String[]    ALL_SPACE_TABLE_COLUMNS =
+    {
+        "CONGLOMERATENAME", "ISINDEX", "NUMALLOCATEDPAGES", "NUMFREEPAGES",
+        "NUMUNFILLEDPAGES", "PAGESIZE", "ESTIMSPACESAVING", "TABLEID"
+    };
+
     /**
      * Public constructor required for running test as standalone JUnit.
      */
@@ -146,20 +152,30 @@ public final class SysDiagVTIMappingTest
         
         st.executeUpdate("set schema APP");
 
+        // get table id
+        ResultSet   rs1 = st.executeQuery
+            (
+             "select t.tableid from sys.systables t, sys.sysschemas s\n" +
+             "where t.schemaid = s.schemaid\n" +
+             "and s.schemaname = 'APP'\n" +
+             "and t.tablename = 'T1'"
+             );
+        rs1.next();
+        String      tableID = rs1.getString( 1 );
+        rs1.close();
+
         // These should all return 1 row for APP.T1.
         
         // Two-argument direct call.
         ResultSet rs = st.executeQuery(
             "select * from TABLE(SYSCS_DIAG.SPACE_TABLE('APP', 'T1')) x");
         
-        String [] expColNames = new String [] {
-            "CONGLOMERATENAME", "ISINDEX", "NUMALLOCATEDPAGES", "NUMFREEPAGES",
-            "NUMUNFILLEDPAGES", "PAGESIZE", "ESTIMSPACESAVING"};
+        String [] expColNames = ALL_SPACE_TABLE_COLUMNS;
         JDBC.assertColumnNames(rs, expColNames);
         
         String [][] expRS = new String [][]
         {
-            {"T1", "0", "1", "0", "1", "4096", "0"}
+            {"T1", "0", "1", "0", "1", "4096", "0", tableID}
         };
         
         JDBC.assertFullResultSet(rs, expRS, true);
@@ -168,14 +184,11 @@ public final class SysDiagVTIMappingTest
         rs = st.executeQuery(
             " select * from TABLE(SYSCS_DIAG.SPACE_TABLE('T1')) x");
         
-        expColNames = new String [] {
-            "CONGLOMERATENAME", "ISINDEX", "NUMALLOCATEDPAGES", "NUMFREEPAGES",
-            "NUMUNFILLEDPAGES", "PAGESIZE", "ESTIMSPACESAVING"};
         JDBC.assertColumnNames(rs, expColNames);
         
         expRS = new String [][]
         {
-            {"T1", "0", "1", "0", "1", "4096", "0"}
+            {"T1", "0", "1", "0", "1", "4096", "0", tableID}
         };
         
         JDBC.assertFullResultSet(rs, expRS, true);
@@ -188,14 +201,11 @@ public final class SysDiagVTIMappingTest
         pSt.setString(2, "T1");
 
         rs = pSt.executeQuery();
-        expColNames = new String [] {
-            "CONGLOMERATENAME", "ISINDEX", "NUMALLOCATEDPAGES", "NUMFREEPAGES",
-             "NUMUNFILLEDPAGES", "PAGESIZE", "ESTIMSPACESAVING"};
         JDBC.assertColumnNames(rs, expColNames);
         
         expRS = new String [][]
         {
-            {"T1", "0", "1", "0", "1", "4096", "0"}
+            {"T1", "0", "1", "0", "1", "4096", "0", tableID}
         };
         
         JDBC.assertFullResultSet(rs, expRS, true);
@@ -207,14 +217,11 @@ public final class SysDiagVTIMappingTest
         pSt.setString(1, "T1");
 
         rs = pSt.executeQuery();
-        expColNames = new String [] {
-            "CONGLOMERATENAME", "ISINDEX", "NUMALLOCATEDPAGES", "NUMFREEPAGES",
-            "NUMUNFILLEDPAGES", "PAGESIZE", "ESTIMSPACESAVING"};
         JDBC.assertColumnNames(rs, expColNames);
         
         expRS = new String [][]
         {
-            {"T1", "0", "1", "0", "1", "4096", "0"}
+            {"T1", "0", "1", "0", "1", "4096", "0", tableID}
         };
         
         JDBC.assertFullResultSet(rs, expRS, true);
@@ -225,9 +232,6 @@ public final class SysDiagVTIMappingTest
         rs = st.executeQuery(
             "select * from TABLE(SYSCS_DIAG.SPACE_TABLE('APP')) x");
         
-        expColNames = new String [] {
-            "CONGLOMERATENAME", "ISINDEX", "NUMALLOCATEDPAGES", "NUMFREEPAGES",
-            "NUMUNFILLEDPAGES", "PAGESIZE", "ESTIMSPACESAVING"};
         JDBC.assertColumnNames(rs, expColNames);
         JDBC.assertDrainResults(rs, 0);
         
@@ -235,9 +239,6 @@ public final class SysDiagVTIMappingTest
             "select * from TABLE(SYSCS_DIAG.SPACE_TABLE('APP', "
             + "'NOTTHERE')) x");
         
-        expColNames = new String [] {
-            "CONGLOMERATENAME", "ISINDEX", "NUMALLOCATEDPAGES", "NUMFREEPAGES",
-            "NUMUNFILLEDPAGES", "PAGESIZE", "ESTIMSPACESAVING"};
         JDBC.assertColumnNames(rs, expColNames);
         JDBC.assertDrainResults(rs, 0);
         
@@ -245,9 +246,6 @@ public final class SysDiagVTIMappingTest
             "select * from "
             + "TABLE(SYSCS_DIAG.SPACE_TABLE('SYSCS_DIAG', 'NOTTHERE')) x");
         
-        expColNames = new String [] {
-            "CONGLOMERATENAME", "ISINDEX", "NUMALLOCATEDPAGES", "NUMFREEPAGES",
-            "NUMUNFILLEDPAGES", "PAGESIZE", "ESTIMSPACESAVING"};
         JDBC.assertColumnNames(rs, expColNames);
         JDBC.assertDrainResults(rs, 0);
         
@@ -258,9 +256,6 @@ public final class SysDiagVTIMappingTest
             "select * from "
             + "TABLE(SYSCS_DIAG.SPACE_TABLE('SYSCS_DIAG', 'LOCK_TABLE')) x");
         
-        expColNames = new String [] {
-            "CONGLOMERATENAME", "ISINDEX", "NUMALLOCATEDPAGES", "NUMFREEPAGES",
-            "NUMUNFILLEDPAGES", "PAGESIZE", "ESTIMSPACESAVING"};
         JDBC.assertColumnNames(rs, expColNames);
         JDBC.assertDrainResults(rs, 0);
         
@@ -278,14 +273,11 @@ public final class SysDiagVTIMappingTest
         pSt.setString(2, "T1");
 
         rs = pSt.executeQuery();
-        expColNames = new String [] {
-            "CONGLOMERATENAME", "ISINDEX", "NUMALLOCATEDPAGES", "NUMFREEPAGES",
-            "NUMUNFILLEDPAGES", "PAGESIZE", "ESTIMSPACESAVING"};
         JDBC.assertColumnNames(rs, expColNames);
         
         expRS = new String [][]
         {
-            {"T1", "0", "1", "0", "1", "4096", "0"}
+            {"T1", "0", "1", "0", "1", "4096", "0", tableID}
         };
         
         JDBC.assertFullResultSet(rs, expRS, true);
@@ -297,9 +289,6 @@ public final class SysDiagVTIMappingTest
         pSt.setString(1, "T1");
 
         rs = pSt.executeQuery();
-        expColNames = new String [] {
-            "CONGLOMERATENAME", "ISINDEX", "NUMALLOCATEDPAGES", "NUMFREEPAGES",
-            "NUMUNFILLEDPAGES", "PAGESIZE", "ESTIMSPACESAVING"};
         JDBC.assertColumnNames(rs, expColNames);
         JDBC.assertDrainResults(rs, 0);
         
@@ -309,9 +298,6 @@ public final class SysDiagVTIMappingTest
         rs = st.executeQuery(
             "select * from TABLE(SPACE_TABLE('LOCK_TABLE')) x");
         
-        expColNames = new String [] {
-            "CONGLOMERATENAME", "ISINDEX", "NUMALLOCATEDPAGES", "NUMFREEPAGES",
-            "NUMUNFILLEDPAGES", "PAGESIZE", "ESTIMSPACESAVING"};
         JDBC.assertColumnNames(rs, expColNames);
         JDBC.assertDrainResults(rs, 0);
         
@@ -343,14 +329,11 @@ public final class SysDiagVTIMappingTest
         rs = st.executeQuery(
             "SELECT * FROM NEW org.apache.derby.diag.SpaceTable('T1') as x");
         
-        expColNames = new String [] {
-            "CONGLOMERATENAME", "ISINDEX", "NUMALLOCATEDPAGES", "NUMFREEPAGES",
-            "NUMUNFILLEDPAGES", "PAGESIZE", "ESTIMSPACESAVING"};
-        JDBC.assertColumnNames(rs, expColNames);
+        JDBC.assertColumnNames(rs, ALL_SPACE_TABLE_COLUMNS);
         
         expRS = new String [][]
         {
-            {"T1", "0", "1", "0", "1", "4096", "0"}
+            {"T1", "0", "1", "0", "1", "4096", "0", tableID}
         };
         
         JDBC.assertFullResultSet(rs, expRS, true);
@@ -359,17 +342,30 @@ public final class SysDiagVTIMappingTest
             "SELECT * FROM NEW "
             + "org.apache.derby.diag.SpaceTable('APP', 'T1') as x");
         
-        expColNames = new String [] {
-            "CONGLOMERATENAME", "ISINDEX", "NUMALLOCATEDPAGES", "NUMFREEPAGES",
-            "NUMUNFILLEDPAGES", "PAGESIZE", "ESTIMSPACESAVING"};
-        JDBC.assertColumnNames(rs, expColNames);
+        JDBC.assertColumnNames(rs, ALL_SPACE_TABLE_COLUMNS);
         
         expRS = new String [][]
         {
-            {"T1", "0", "1", "0", "1", "4096", "0"}
+            {"T1", "0", "1", "0", "1", "4096", "0", tableID}
         };
         
         JDBC.assertFullResultSet(rs, expRS, true);
+
+        // verify the syntax showcased in the Reference Guide section on SPACE_TABLE
+        // (after the changes introduced by DERBY-5554)
+
+        rs = st.executeQuery
+            (
+             "select t2.*\n" +
+             "    from\n" +
+             "        sys.systables systabs,\n" +
+             "        table (syscs_diag.space_table()) as t2\n" +
+             "    where systabs.tabletype = 'T'\n" +
+             "    and systabs.tableid = t2.tableid\n"
+             );
+        
+        JDBC.assertColumnNames(rs, ALL_SPACE_TABLE_COLUMNS);
+        JDBC.assertFullResultSet(rs, expRS, true);
         
         // Now do some sanity checking to make sure SPACE_TABLE cannot be
         // used in any illegal ways.        
@@ -383,6 +379,104 @@ public final class SysDiagVTIMappingTest
     }
 
     /**
+     * Test the 0-arg constructor of the SPACE_TABLE vti. See DERBY-5554.
+     */
+    public void testSpaceTable_0argConstructor() throws Exception
+    {
+        Statement st = createStatement();
+        ResultSet   rs = st.executeQuery
+            (
+             "select conglomeratename, isindex, pagesize, tableid\n" +
+             "from table(syscs_diag.space_table()) x\n" +
+             "where conglomeratename like 'SYS%'\n" +
+             "order by conglomeratename"
+             );
+
+        String[]  columnNames =
+        {
+            "CONGLOMERATENAME", "ISINDEX", "PAGESIZE", "TABLEID"
+        };
+        JDBC.assertColumnNames( rs, columnNames );
+        
+        String[][]  expRS = new String [][]
+        {
+            { "SYSALIASES", "0", "4096", "c013800d-00d7-ddbd-08ce-000a0a411400" },
+            { "SYSALIASES_INDEX1", "1", "4096", "c013800d-00d7-ddbd-08ce-000a0a411400" },
+            { "SYSALIASES_INDEX2", "1", "4096", "c013800d-00d7-ddbd-08ce-000a0a411400" },
+            { "SYSALIASES_INDEX3", "1", "4096", "c013800d-00d7-ddbd-08ce-000a0a411400" },
+            { "SYSCHECKS", "0", "4096", "80000056-00d0-fd77-3ed8-000a0a0b1900" },
+            { "SYSCHECKS_INDEX1", "1", "4096", "80000056-00d0-fd77-3ed8-000a0a0b1900" },
+            { "SYSCOLPERMS", "0", "4096", "286cc01e-0103-0e39-b8e7-00000010f010" },
+            { "SYSCOLPERMS_INDEX1", "1", "4096", "286cc01e-0103-0e39-b8e7-00000010f010" },
+            { "SYSCOLPERMS_INDEX2", "1", "4096", "286cc01e-0103-0e39-b8e7-00000010f010" },
+            { "SYSCOLPERMS_INDEX3", "1", "4096", "286cc01e-0103-0e39-b8e7-00000010f010" },
+            { "SYSCOLUMNS", "0", "4096", "8000001e-00d0-fd77-3ed8-000a0a0b1900" },
+            { "SYSCOLUMNS_INDEX1", "1", "4096", "8000001e-00d0-fd77-3ed8-000a0a0b1900" },
+            { "SYSCOLUMNS_INDEX2", "1", "4096", "8000001e-00d0-fd77-3ed8-000a0a0b1900" },
+            { "SYSCONGLOMERATES", "0", "4096", "80000010-00d0-fd77-3ed8-000a0a0b1900" },
+            { "SYSCONGLOMERATES_INDEX1", "1", "4096", "80000010-00d0-fd77-3ed8-000a0a0b1900" },
+            { "SYSCONGLOMERATES_INDEX2", "1", "4096", "80000010-00d0-fd77-3ed8-000a0a0b1900" },
+            { "SYSCONGLOMERATES_INDEX3", "1", "4096", "80000010-00d0-fd77-3ed8-000a0a0b1900" },
+            { "SYSCONSTRAINTS", "0", "4096", "8000002f-00d0-fd77-3ed8-000a0a0b1900" },
+            { "SYSCONSTRAINTS_INDEX1", "1", "4096", "8000002f-00d0-fd77-3ed8-000a0a0b1900" },
+            { "SYSCONSTRAINTS_INDEX2", "1", "4096", "8000002f-00d0-fd77-3ed8-000a0a0b1900" },
+            { "SYSCONSTRAINTS_INDEX3", "1", "4096", "8000002f-00d0-fd77-3ed8-000a0a0b1900" },
+            { "SYSDEPENDS", "0", "4096", "8000003e-00d0-fd77-3ed8-000a0a0b1900" },
+            { "SYSDEPENDS_INDEX1", "1", "4096", "8000003e-00d0-fd77-3ed8-000a0a0b1900" },
+            { "SYSDEPENDS_INDEX2", "1", "4096", "8000003e-00d0-fd77-3ed8-000a0a0b1900" },
+            { "SYSDUMMY1", "0", "4096", "c013800d-00f8-5b70-bea3-00000019ed88" },
+            { "SYSFILES", "0", "4096", "80000000-00d3-e222-873f-000a0a0b1900" },
+            { "SYSFILES_INDEX1", "1", "4096", "80000000-00d3-e222-873f-000a0a0b1900" },
+            { "SYSFILES_INDEX2", "1", "4096", "80000000-00d3-e222-873f-000a0a0b1900" },
+            { "SYSFOREIGNKEYS", "0", "4096", "8000005b-00d0-fd77-3ed8-000a0a0b1900" },
+            { "SYSFOREIGNKEYS_INDEX1", "1", "4096", "8000005b-00d0-fd77-3ed8-000a0a0b1900" },
+            { "SYSFOREIGNKEYS_INDEX2", "1", "4096", "8000005b-00d0-fd77-3ed8-000a0a0b1900" },
+            { "SYSKEYS", "0", "4096", "80000039-00d0-fd77-3ed8-000a0a0b1900" },
+            { "SYSKEYS_INDEX1", "1", "4096", "80000039-00d0-fd77-3ed8-000a0a0b1900" },
+            { "SYSPERMS", "0", "4096", "9810800c-0121-c5e1-a2f5-00000043e718" },
+            { "SYSPERMS_INDEX1", "1", "4096", "9810800c-0121-c5e1-a2f5-00000043e718" },
+            { "SYSPERMS_INDEX2", "1", "4096", "9810800c-0121-c5e1-a2f5-00000043e718" },
+            { "SYSPERMS_INDEX3", "1", "4096", "9810800c-0121-c5e1-a2f5-00000043e718" },
+            { "SYSROLES", "0", "4096", "e03f4017-0115-382c-08df-ffffe275b270" },
+            { "SYSROLES_INDEX1", "1", "4096", "e03f4017-0115-382c-08df-ffffe275b270" },
+            { "SYSROLES_INDEX2", "1", "4096", "e03f4017-0115-382c-08df-ffffe275b270" },
+            { "SYSROLES_INDEX3", "1", "4096", "e03f4017-0115-382c-08df-ffffe275b270" },
+            { "SYSROUTINEPERMS", "0", "4096", "2057c01b-0103-0e39-b8e7-00000010f010" },
+            { "SYSROUTINEPERMS_INDEX1", "1", "4096", "2057c01b-0103-0e39-b8e7-00000010f010" },
+            { "SYSROUTINEPERMS_INDEX2", "1", "4096", "2057c01b-0103-0e39-b8e7-00000010f010" },
+            { "SYSROUTINEPERMS_INDEX3", "1", "4096", "2057c01b-0103-0e39-b8e7-00000010f010" },
+            { "SYSSCHEMAS", "0", "4096", "80000022-00d0-fd77-3ed8-000a0a0b1900" },
+            { "SYSSCHEMAS_INDEX1", "1", "4096", "80000022-00d0-fd77-3ed8-000a0a0b1900" },
+            { "SYSSCHEMAS_INDEX2", "1", "4096", "80000022-00d0-fd77-3ed8-000a0a0b1900" },
+            { "SYSSEQUENCES", "0", "4096", "9810800c-0121-c5e2-e794-00000043e718" },
+            { "SYSSEQUENCES_INDEX1", "1", "4096", "9810800c-0121-c5e2-e794-00000043e718" },
+            { "SYSSEQUENCES_INDEX2", "1", "4096", "9810800c-0121-c5e2-e794-00000043e718" },
+            { "SYSSTATEMENTS", "0", "4096", "80000000-00d1-15f7-ab70-000a0a0b1500" },
+            { "SYSSTATEMENTS_INDEX1", "1", "4096", "80000000-00d1-15f7-ab70-000a0a0b1500" },
+            { "SYSSTATEMENTS_INDEX2", "1", "4096", "80000000-00d1-15f7-ab70-000a0a0b1500" },
+            { "SYSSTATISTICS", "0", "4096", "f81e0010-00e3-6612-5a96-009e3a3b5e00" },
+            { "SYSSTATISTICS_INDEX1", "1", "4096", "f81e0010-00e3-6612-5a96-009e3a3b5e00" },
+            { "SYSTABLEPERMS", "0", "4096", "b8450018-0103-0e39-b8e7-00000010f010" },
+            { "SYSTABLEPERMS_INDEX1", "1", "4096", "b8450018-0103-0e39-b8e7-00000010f010" },
+            { "SYSTABLEPERMS_INDEX2", "1", "4096", "b8450018-0103-0e39-b8e7-00000010f010" },
+            { "SYSTABLEPERMS_INDEX3", "1", "4096", "b8450018-0103-0e39-b8e7-00000010f010" },
+            { "SYSTABLES", "0", "4096", "80000018-00d0-fd77-3ed8-000a0a0b1900" },
+            { "SYSTABLES_INDEX1", "1", "4096", "80000018-00d0-fd77-3ed8-000a0a0b1900" },
+            { "SYSTABLES_INDEX2", "1", "4096", "80000018-00d0-fd77-3ed8-000a0a0b1900" },
+            { "SYSTRIGGERS", "0", "4096", "c013800d-00d7-c025-4809-000a0a411200" },
+            { "SYSTRIGGERS_INDEX1", "1", "4096", "c013800d-00d7-c025-4809-000a0a411200" },
+            { "SYSTRIGGERS_INDEX2", "1", "4096", "c013800d-00d7-c025-4809-000a0a411200" },
+            { "SYSTRIGGERS_INDEX3",  "1", "4096", "c013800d-00d7-c025-4809-000a0a411200" },
+            { "SYSUSERS", "0", "4096", "9810800c-0134-14a5-40c1-000004f61f90" },
+            { "SYSUSERS_INDEX1", "1", "4096", "9810800c-0134-14a5-40c1-000004f61f90" },
+            { "SYSVIEWS", "0", "4096", "8000004d-00d0-fd77-3ed8-000a0a0b1900" },
+            { "SYSVIEWS_INDEX1", "1", "4096", "8000004d-00d0-fd77-3ed8-000a0a0b1900" },
+        };
+        
+        JDBC.assertFullResultSet(rs, expRS, true);
+    }
+    
+    /**
      * Just run a couple of sanity checks to makes sure the table
      * mapping for org.apache.derby.diag.StatementDuration() works
      * correctly and fails where it is supposed to.