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 2007/05/02 22:45:19 UTC
svn commit: r534610 - in /db/derby/code/trunk/java:
client/org/apache/derby/client/net/NetStatementRequest.java
drda/org/apache/derby/impl/drda/DRDAConnThread.java
Author: rhillegas
Date: Wed May 2 13:45:17 2007
New Revision: 534610
URL: http://svn.apache.org/viewvc?view=rev&rev=534610
Log:
DERBY-2506: Committed Narayanan's PreparedCallable_DRDA_v5.diff, adding some BLOB locator support.
Modified:
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
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=534610&r1=534609&r2=534610
==============================================================================
--- 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 May 2 13:45:17 2007
@@ -849,6 +849,20 @@
}
break;
+ case DRDAConstants.DRDA_TYPE_NLOBLOC:
+ //The FD:OCA data or the FDODTA contains the locator
+ //value corresponding to the LOB. write the integer
+ //value representing the locator here.
+ writeIntFdocaData(((Blob)inputs[i]).
+ getLocator());
+ break;
+ case DRDAConstants.DRDA_TYPE_NCLOBLOC:
+ //The FD:OCA data or the FDODTA contains the locator
+ //value corresponding to the LOB. write the integer
+ //value representing the locator here.
+ writeIntFdocaData(((Clob)inputs[i]).
+ getLocator());
+ break;
default:
throw new SqlException(netAgent_.logWriter_,
new ClientMessageId(SQLState.NET_UNRECOGNIZED_JDBC_TYPE),
@@ -1325,6 +1339,14 @@
lidAndLengths[i][0] = DRDAConstants.DRDA_TYPE_NLOBBYTES;
lidAndLengths[i][1] =
buildPlaceholderLength(parameterMetaData.sqlLength_[i]);
+ } else if (b instanceof Blob && ((Blob)b).isLocator()){
+ //we are sending locators.
+ //Here the LID local identifier in the FDODSC
+ //FD:OCA descriptor should be initialized as
+ //to contain a BLOB locator.
+ lidAndLengths[i][0] =
+ DRDAConstants.DRDA_TYPE_NLOBLOC;
+ lidAndLengths[i][1] = 4;
} else {
lidAndLengths[i][0] = DRDAConstants.DRDA_TYPE_NLOBBYTES;
try {
@@ -1356,6 +1378,15 @@
if (c == null) {
lobLength = parameterMetaData.sqlLength_[i];
+ } else if (c instanceof Clob && ((Clob)c).isLocator()) {
+ //The inputRow contains an Integer meaning that
+ //we are sending locators.
+ //Here the LID local identifier in the FDODSC
+ //FD:OCA descriptor should be initialized as
+ //to contain a CLOB locator.
+ lidAndLengths[i][0] =
+ DRDAConstants.DRDA_TYPE_NCLOBLOC;
+ lidAndLengths[i][1] = 4;
} else if (isExternalClob) {
try {
lobLength = c.length();
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=534610&r1=534609&r2=534610
==============================================================================
--- 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 May 2 13:45:17 2007
@@ -4439,6 +4439,42 @@
}
break;
}
+ case DRDAConstants.DRDA_TYPE_NLOBLOC:
+ {
+ //read the locator value
+ int paramVal = reader.readInt(getByteOrder());
+
+ if (SanityManager.DEBUG)
+ trace("locator value is: "+paramVal);
+
+ //Map the locator value to the Blob object in the
+ //Hash map.
+ java.sql.Blob blobFromLocator = (java.sql.Blob)
+ database.getConnection().getLOBMapping(paramVal);
+
+ //set the PreparedStatement parameter to the mapped
+ //Blob object.
+ ps.setBlob(i+1, blobFromLocator);
+ break;
+ }
+ case DRDAConstants.DRDA_TYPE_NCLOBLOC:
+ {
+ //read the locator value.
+ int paramVal = reader.readInt(getByteOrder());
+
+ if (SanityManager.DEBUG)
+ trace("locator value is: "+paramVal);
+
+ //Map the locator value to the Clob object in the
+ //Hash Map.
+ java.sql.Clob clobFromLocator = (java.sql.Clob)
+ database.getConnection().getLOBMapping(paramVal);
+
+ //set the PreparedStatement parameter to the mapped
+ //Clob object.
+ ps.setClob(i+1, clobFromLocator);
+ break;
+ }
default:
{
String paramVal = reader.readLDStringData(stmt.ccsidMBCEncoding);