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 kr...@apache.org on 2007/03/07 14:40:14 UTC

svn commit: r515563 - in /db/derby/code/trunk/java: client/org/apache/derby/client/net/ drda/org/apache/derby/impl/drda/

Author: kristwaa
Date: Wed Mar  7 05:40:14 2007
New Revision: 515563

URL: http://svn.apache.org/viewvc?view=rev&rev=515563
Log:
DERBY-2347: Add code to support request and return of locators over DRDA.

Patch contributed by Øystein Grøvlen.

Modified:
    db/derby/code/trunk/java/client/org/apache/derby/client/net/CodePointNameTable.java
    db/derby/code/trunk/java/client/org/apache/derby/client/net/NetResultSetRequest.java
    db/derby/code/trunk/java/client/org/apache/derby/client/net/NetStatementRequest.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/DRDAResultSet.java

Modified: db/derby/code/trunk/java/client/org/apache/derby/client/net/CodePointNameTable.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/client/org/apache/derby/client/net/CodePointNameTable.java?view=diff&rev=515563&r1=515562&r2=515563
==============================================================================
--- db/derby/code/trunk/java/client/org/apache/derby/client/net/CodePointNameTable.java (original)
+++ db/derby/code/trunk/java/client/org/apache/derby/client/net/CodePointNameTable.java Wed Mar  7 05:40:14 2007
@@ -53,6 +53,7 @@
         put(new Integer(CodePoint.EXCSQLIMM), "EXCSQLIMM");
         put(new Integer(CodePoint.EXCSQLSTT), "EXCSQLSTT");
         put(new Integer(CodePoint.OPNQRY), "OPNQRY");
+        put(new Integer(CodePoint.OUTOVR), "OUTOVR");
         put(new Integer(CodePoint.PRPSQLSTT), "PRPSQLSTT");
         put(new Integer(CodePoint.RDBCMM), "RDBCMM");
         put(new Integer(CodePoint.RDBRLLBCK), "RDBRLLBCK");

Modified: db/derby/code/trunk/java/client/org/apache/derby/client/net/NetResultSetRequest.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/client/org/apache/derby/client/net/NetResultSetRequest.java?view=diff&rev=515563&r1=515562&r2=515563
==============================================================================
--- db/derby/code/trunk/java/client/org/apache/derby/client/net/NetResultSetRequest.java (original)
+++ db/derby/code/trunk/java/client/org/apache/derby/client/net/NetResultSetRequest.java Wed Mar  7 05:40:14 2007
@@ -268,11 +268,16 @@
         updateLengthBytes(); // for cntqry
     }
 
-    private void buildOUTOVR(ResultSet resultSet,
+    private void buildOUTOVR(NetResultSet resultSet,
                              ColumnMetaData resultSetMetaData,
                              boolean firstOutovrBuilt,
                              boolean hasLobs) throws SqlException {
-        return;
+        if (false && hasLobs) {  // Disable use of locators for now
+            if (!firstOutovrBuilt) {
+                buildOUTOVR(resultSet, resultSetMetaData);
+                resultSet.firstOutovrBuilt_ = true;
+            }
+        }
     }
 
     private void buildRTNEXTDTA(int rtnextdta) throws SqlException {

Modified: db/derby/code/trunk/java/client/org/apache/derby/client/net/NetStatementRequest.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/client/org/apache/derby/client/net/NetStatementRequest.java?view=diff&rev=515563&r1=515562&r2=515563
==============================================================================
--- db/derby/code/trunk/java/client/org/apache/derby/client/net/NetStatementRequest.java (original)
+++ db/derby/code/trunk/java/client/org/apache/derby/client/net/NetStatementRequest.java Wed Mar  7 05:40:14 2007
@@ -629,6 +629,19 @@
         int numVars = resultSetMetaData.columns_;
         int[][] lidAndLengths = new int[numVars][2]; //everything initialized to "default triplet"
 
+        for (int i=0; i<numVars; ++i) {
+            switch (resultSetMetaData.types_[i]) {
+                case java.sql.Types.BLOB:
+                    lidAndLengths[i][0] = DRDAConstants.DRDA_TYPE_NLOBLOC;
+                    lidAndLengths[i][1] = 4;
+                    break;
+                case java.sql.Types.CLOB:
+                    lidAndLengths[i][0] = DRDAConstants.DRDA_TYPE_NCLOBLOC;
+                    lidAndLengths[i][1] = 4;
+                    break;
+            }
+        }
+
         return lidAndLengths;
     }
 

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?view=diff&rev=515563&r1=515562&r2=515563
==============================================================================
--- 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 Wed Mar  7 05:40:14 2007
@@ -7322,6 +7322,12 @@
 				case DRDAConstants.DRDA_TYPE_NLONGVARBYTE:
 						writer.writeLDBytes((byte[]) val, index);
 					break;
+                case DRDAConstants.DRDA_TYPE_NLOBLOC:
+                case DRDAConstants.DRDA_TYPE_NCLOBLOC:
+                    // Get locator for LOB
+                    int locator = database.getConnection().addLOBMapping(val);
+                    writer.writeInt(locator);
+                    break;
 				default:
 					if (SanityManager.DEBUG) 
 						trace("ndrdaType is: "+ndrdaType);

Modified: db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/DRDAResultSet.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/DRDAResultSet.java?view=diff&rev=515563&r1=515562&r2=515563
==============================================================================
--- db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/DRDAResultSet.java (original)
+++ db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/DRDAResultSet.java Wed Mar  7 05:40:14 2007
@@ -246,7 +246,11 @@
 	 */
 	protected int getRsDRDAType(int index)
 	{
-		return rsDRDATypes[index -1];
+        if ((outovr_drdaType != null) && (outovr_drdaType[index-1] != 0)) {
+            // Override with requested type.  0 means use default
+            return outovr_drdaType[index-1];
+        }
+        return rsDRDATypes[index -1];
 	}