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 be...@apache.org on 2006/02/01 10:37:54 UTC
svn commit: r374029 - in
/db/derby/code/trunk/java/drda/org/apache/derby/impl/drda:
DRDAConnThread.java DRDAStatement.java
Author: bernt
Date: Wed Feb 1 01:37:45 2006
New Revision: 374029
URL: http://svn.apache.org/viewcvs?rev=374029&view=rev
Log:
DERBY-815 Patch 371897 revrted
Modified:
db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/DRDAConnThread.java
db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/DRDAStatement.java
Modified: db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/DRDAConnThread.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/DRDAConnThread.java?rev=374029&r1=374028&r2=374029&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 Wed Feb 1 01:37:45 2006
@@ -3853,11 +3853,18 @@
*/
private void parseSQLDTA_work(DRDAStatement stmt) throws DRDAProtocolException,SQLException
{
+ String strVal;
PreparedStatement ps = stmt.getPreparedStatement();
- final boolean haveParams = (stmt.getNumParams() > 0);
-
+ int codePoint;
+ EmbedParameterSetMetaData pmeta = null;
+ Vector paramDrdaTypes = new Vector();
+ Vector paramLens = new Vector();
+ ArrayList paramExtPositions = null;
+ int numVars = 0;
+ boolean rtnParam = false;
+
reader.markCollection();
- int codePoint = reader.getCodePoint();
+ codePoint = reader.getCodePoint();
while (codePoint != -1)
{
switch (codePoint)
@@ -3874,44 +3881,21 @@
reader.readByte(); // id
for (int j = 0; j < numVarsInGrp; j++)
{
- final byte drdaType = reader.readByte();
+ paramDrdaTypes.addElement(new Byte(reader.readByte()));
if (SanityManager.DEBUG)
trace("drdaType is: "+ "0x" +
- Integer.toHexString(drdaType));
-
- final int drdaLength = reader.readNetworkShort();
+ Integer.toHexString(((Byte ) paramDrdaTypes.lastElement()).byteValue()));
+ int drdaLength = reader.readNetworkShort();
if (SanityManager.DEBUG)
trace("drdaLength is: "+drdaLength);
-
- if (!haveParams) {
- stmt.addParam(drdaType, drdaLength);
- continue;
- }
- final DRDAStatement.CliParam cp =
- stmt.getCliParam(j);
- if (cp.drdaType != drdaType ||
- cp.drdaLength != drdaLength) {
- if (SanityManager.DEBUG) {
- trace(ps+" param " +j+
- " type: "+
- drdaTypeName(cp.drdaType)+
- "->"+drdaTypeName(drdaType)+
- " length: "+
- cp.drdaLength+"->"+drdaLength);
- }
- // Trust that this is OK...
- cp.drdaType = drdaType;
- cp.drdaLength = drdaLength;
- }
- }
- } // while (reader
-
+ paramLens.addElement(new Integer(drdaLength));
+ }
+ }
+ numVars = paramDrdaTypes.size();
+ if (SanityManager.DEBUG)
+ trace("numVars = " + numVars);
if (ps == null) // it is a CallableStatement under construction
{
- final int numVars = stmt.getNumParams();
- if (SanityManager.DEBUG)
- trace("numVars = " + numVars);
-
String marks = "(?"; // construct parameter marks
for (int i = 1; i < numVars; i++)
marks += ", ?";
@@ -3943,22 +3927,23 @@
// The first exception is the most likely suspect
throw se;
}
+ rtnParam = true;
}
ps = cs;
stmt.ps = ps;
}
+ pmeta = stmt.getParameterMetaData();
+
reader.readBytes(6); // descriptor footer
break;
// optional
case CodePoint.FDODTA:
- EmbedParameterSetMetaData pmeta = stmt.getParameterMetaData();
reader.readByte(); // row indicator
- final int numVars = stmt.getNumParams();
for (int i = 0; i < numVars; i++)
{
- final DRDAStatement.CliParam cp = stmt.getCliParam(i);
- if ((cp.drdaType & 0x1) == 0x1) // nullable
+
+ if ((((Byte)paramDrdaTypes.elementAt(i)).byteValue() & 0x1) == 0x1) // nullable
{
int nullData = reader.readUnsignedByte();
if ((nullData & 0xFF) == FdocaConstants.NULL_DATA)
@@ -3975,8 +3960,15 @@
}
// not null, read and set it
- readAndSetParams(i, stmt, cp, pmeta);
+ paramExtPositions = readAndSetParams(i, stmt,
+ ((Byte)paramDrdaTypes.elementAt(i)).byteValue(),
+ pmeta,
+ paramExtPositions,
+ ((Integer)(paramLens.elementAt(i))).intValue());
}
+ stmt.cliParamExtPositions = paramExtPositions;
+ stmt.cliParamDrdaTypes = paramDrdaTypes;
+ stmt.cliParamLens = paramLens;
break;
case CodePoint.EXTDTA:
readAndSetAllExtParams(stmt);
@@ -3987,6 +3979,8 @@
}
codePoint = reader.getCodePoint();
}
+
+
}
private int getByteOrder()
@@ -3998,21 +3992,25 @@
/**
* Read different types of input parameters and set them in PreparedStatement
* @param i index of the parameter
- * @param stmt drda statement
- * @param cp CliParam object for parameter i
+ * @param stmt drda statement
+ * @param drdaType drda type of the parameter
* @param pmeta parameter meta data
+ * @param paramExtPositions ArrayList of parameters with extdta
+ * @param paramLenNumBytes Number of bytes for encoding LOB Length
*
+ * @return updated paramExtPositions
* @throws DRDAProtocolException
* @throws SQLException
*/
- private void readAndSetParams(int i, DRDAStatement stmt,
- DRDAStatement.CliParam cp,
- EmbedParameterSetMetaData pmeta)
+ private ArrayList readAndSetParams(int i, DRDAStatement stmt, int
+ drdaType, EmbedParameterSetMetaData pmeta,
+ ArrayList paramExtPositions,
+ int paramLenNumBytes)
throws DRDAProtocolException, SQLException
{
PreparedStatement ps = stmt.getPreparedStatement();
// mask out null indicator
- int drdaType = ((cp.drdaType | 0x01) & 0x000000ff);
+ drdaType = ((drdaType | 0x01) & 0x000000ff);
if (ps instanceof CallableStatement)
{
@@ -4071,8 +4069,8 @@
}
case DRDAConstants.DRDA_TYPE_NDECIMAL:
{
- int precision = (cp.drdaLength >> 8) & 0xff;
- int scale = cp.drdaLength & 0xff;
+ int precision = (paramLenNumBytes >> 8) & 0xff;
+ int scale = paramLenNumBytes & 0xff;
BigDecimal paramVal = reader.readBigDecimal(precision, scale);
if (SanityManager.DEBUG)
trace("ndecimal parameter value is: "+paramVal);
@@ -4170,10 +4168,12 @@
case DRDAConstants.DRDA_TYPE_NLOBCSBCS:
case DRDAConstants.DRDA_TYPE_NLOBCDBCS:
{
- long length = readLobLength(cp.drdaLength);
+ long length = readLobLength(paramLenNumBytes);
if (length != 0) //can be -1 for CLI if "data at exec" mode, see clifp/exec test
{
- cp.isExt = true;
+ if (paramExtPositions == null)
+ paramExtPositions = new ArrayList();
+ paramExtPositions.add(new Integer(i));
}
else /* empty */
{
@@ -4192,6 +4192,7 @@
ps.setObject(i+1, paramVal);
}
}
+ return paramExtPositions;
}
private long readLobLength(int extLenIndicator)
@@ -4220,20 +4221,21 @@
private void readAndSetAllExtParams(DRDAStatement stmt)
throws SQLException, DRDAProtocolException
{
- int extCount = 0;
- final int end = stmt.getNumParams();
- for (int i = 0; i < end; i++) {
- final DRDAStatement.CliParam cp = stmt.getCliParam(i);
- if (cp.isExt == false) continue;
-
- // Each extdta in it's own dss, except the first
- if (extCount > 0) {
- correlationID = reader.readDssHeader();
- reader.readLengthAndCodePoint();
- }
- ++extCount;
- readAndSetExtParam(i, stmt, cp.drdaType, cp.drdaLength);
- }
+ int numExt = stmt.cliParamExtPositions.size();
+ for (int i = 0; i < stmt.cliParamExtPositions.size(); i++)
+ {
+ int paramPos = ((Integer) (stmt.cliParamExtPositions).get(i)).intValue();
+ readAndSetExtParam(paramPos,
+ stmt,
+ ((Byte)stmt.cliParamDrdaTypes.elementAt(paramPos)).intValue(),((Integer)(stmt.cliParamLens.elementAt(paramPos))).intValue());
+ // Each extdta in it's own dss
+ if (i < numExt -1)
+ {
+ correlationID = reader.readDssHeader();
+ int codePoint = reader.readLengthAndCodePoint();
+ }
+ }
+
}
@@ -7554,298 +7556,4 @@
}
- /**
- * Get a the name of the int constant representing a drdaType value.
- * This is useful for debugging.
- *
- * @param drdaType the drdaType value
- * @return a string containing the constant name and the value in hex
- */
- public static String drdaTypeName(int drdaType) {
- switch (drdaType) {
- case DRDAConstants.DRDA_TYPE_INTEGER:
- return "DRDA_TYPE_INTEGER (0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NINTEGER:
- return "DRDA_TYPE_NINTEGER(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_SMALL:
- return "DRDA_TYPE_SMALL(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NSMALL:
- return "DRDA_TYPE_NSMALL(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_1BYTE_INT:
- return "DRDA_TYPE_1BYTE_INT(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_N1BYTE_INT:
- return "DRDA_TYPE_N1BYTE_INT(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_FLOAT16:
- return "DRDA_TYPE_FLOAT16(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NFLOAT16:
- return "DRDA_TYPE_NFLOAT16(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_FLOAT8:
- return "DRDA_TYPE_FLOAT8(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NFLOAT8:
- return "DRDA_TYPE_NFLOAT8(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_FLOAT4:
- return "DRDA_TYPE_FLOAT4(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NFLOAT4:
- return "DRDA_TYPE_NFLOAT4(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_DECIMAL:
- return "DRDA_TYPE_DECIMAL(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NDECIMAL:
- return "DRDA_TYPE_NDECIMAL(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_ZDECIMAL:
- return "DRDA_TYPE_ZDECIMAL(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NZDECIMAL:
- return "DRDA_TYPE_NZDECIMAL(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NUMERIC_CHAR:
- return "DRDA_TYPE_NUMERIC_CHAR(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NNUMERIC_CHAR:
- return "DRDA_TYPE_NNUMERIC_CHAR(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_RSET_LOC:
- return "DRDA_TYPE_RSET_LOC(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NRSET_LOC:
- return "DRDA_TYPE_NRSET_LOC(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_INTEGER8:
- return "DRDA_TYPE_INTEGER8(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NINTEGER8:
- return "DRDA_TYPE_NINTEGER8(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_LOBLOC:
- return "DRDA_TYPE_LOBLOC(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NLOBLOC:
- return "DRDA_TYPE_NLOBLOC(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_CLOBLOC:
- return "DRDA_TYPE_CLOBLOC(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NCLOBLOC:
- return "DRDA_TYPE_NCLOBLOC(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_DBCSCLOBLOC:
- return "DRDA_TYPE_DBCSCLOBLOC(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NDBCSCLOBLOC:
- return "DRDA_TYPE_NDBCSCLOBLOC(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_ROWID:
- return "DRDA_TYPE_ROWID(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NROWID:
- return "DRDA_TYPE_NROWID(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_DATE:
- return "DRDA_TYPE_DATE(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NDATE:
- return "DRDA_TYPE_NDATE(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_TIME:
- return "DRDA_TYPE_TIME(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NTIME:
- return "DRDA_TYPE_NTIME(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_TIMESTAMP:
- return "DRDA_TYPE_TIMESTAMP(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NTIMESTAMP:
- return "DRDA_TYPE_NTIMESTAMP(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_FIXBYTE:
- return "DRDA_TYPE_FIXBYTE(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NFIXBYTE:
- return "DRDA_TYPE_NFIXBYTE(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_VARBYTE:
- return "DRDA_TYPE_VARBYTE(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NVARBYTE:
- return "DRDA_TYPE_NVARBYTE(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_LONGVARBYTE:
- return "DRDA_TYPE_LONGVARBYTE(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NLONGVARBYTE:
- return "DRDA_TYPE_NLONGVARBYTE(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NTERMBYTE:
- return "DRDA_TYPE_NTERMBYTE(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NNTERMBYTE:
- return "DRDA_TYPE_NNTERMBYTE(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_CSTR:
- return "DRDA_TYPE_CSTR(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NCSTR:
- return "DRDA_TYPE_NCSTR(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_CHAR:
- return "DRDA_TYPE_CHAR(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NCHAR:
- return "DRDA_TYPE_NCHAR(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_VARCHAR:
- return "DRDA_TYPE_VARCHAR(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NVARCHAR:
- return "DRDA_TYPE_NVARCHAR(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_LONG:
- return "DRDA_TYPE_LONG(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NLONG:
- return "DRDA_TYPE_NLONG(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_GRAPHIC:
- return "DRDA_TYPE_GRAPHIC(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NGRAPHIC:
- return "DRDA_TYPE_NGRAPHIC(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_VARGRAPH:
- return "DRDA_TYPE_VARGRAPH(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NVARGRAPH:
- return "DRDA_TYPE_NVARGRAPH(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_LONGRAPH:
- return "DRDA_TYPE_LONGRAPH(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NLONGRAPH:
- return "DRDA_TYPE_NLONGRAPH(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_MIX:
- return "DRDA_TYPE_MIX(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NMIX:
- return "DRDA_TYPE_NMIX(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_VARMIX:
- return "DRDA_TYPE_VARMIX(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NVARMIX:
- return "DRDA_TYPE_NVARMIX(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_LONGMIX:
- return "DRDA_TYPE_LONGMIX(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NLONGMIX:
- return "DRDA_TYPE_NLONGMIX(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_CSTRMIX:
- return "DRDA_TYPE_CSTRMIX(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NCSTRMIX:
- return "DRDA_TYPE_NCSTRMIX(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_PSCLBYTE:
- return "DRDA_TYPE_PSCLBYTE(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NPSCLBYTE:
- return "DRDA_TYPE_NPSCLBYTE(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_LSTR:
- return "DRDA_TYPE_LSTR(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NLSTR:
- return "DRDA_TYPE_NLSTR(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_LSTRMIX:
- return "DRDA_TYPE_LSTRMIX(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NLSTRMIX:
- return "DRDA_TYPE_NLSTRMIX(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_SDATALINK:
- return "DRDA_TYPE_SDATALINK(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NSDATALINK:
- return "DRDA_TYPE_NSDATALINK(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_MDATALINK:
- return "DRDA_TYPE_MDATALINK(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NMDATALINK:
- return "DRDA_TYPE_NMDATALINK(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_LOBBYTES:
- return "DRDA_TYPE_LOBBYTES(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NLOBBYTES:
- return "DRDA_TYPE_NLOBBYTES(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_LOBCSBCS:
- return "DRDA_TYPE_LOBCSBCS(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NLOBCSBCS:
- return "DRDA_TYPE_NLOBCSBCS(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_LOBCDBCS:
- return "DRDA_TYPE_LOBCDBCS(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NLOBCDBCS:
- return "DRDA_TYPE_NLOBCDBCS(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_LOBCMIXED:
- return "DRDA_TYPE_LOBCMIXED(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NLOBCMIXED:
- return "DRDA_TYPE_NLOBCMIXED(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_BOOLEAN:
- return "DRDA_TYPE_BOOLEAN(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DRDA_TYPE_NBOOLEAN:
- return "DRDA_TYPE_NBOOLEAN(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_DATE:
- return "DB2_SQLTYPE_DATE(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_NDATE:
- return "DB2_SQLTYPE_NDATE(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_TIME:
- return "DB2_SQLTYPE_TIME(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_NTIME:
- return "DB2_SQLTYPE_NTIME(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_TIMESTAMP:
- return "DB2_SQLTYPE_TIMESTAMP(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_NTIMESTAMP:
- return "DB2_SQLTYPE_NTIMESTAMP(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_DATALINK:
- return "DB2_SQLTYPE_DATALINK(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_NDATALINK:
- return "DB2_SQLTYPE_NDATALINK(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_BLOB:
- return "DB2_SQLTYPE_BLOB(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_NBLOB:
- return "DB2_SQLTYPE_NBLOB(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_CLOB:
- return "DB2_SQLTYPE_CLOB(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_NCLOB:
- return "DB2_SQLTYPE_NCLOB(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_DBCLOB:
- return "DB2_SQLTYPE_DBCLOB(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_NDBCLOB:
- return "DB2_SQLTYPE_NDBCLOB(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_VARCHAR:
- return "DB2_SQLTYPE_VARCHAR(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_NVARCHAR:
- return "DB2_SQLTYPE_NVARCHAR(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_CHAR:
- return "DB2_SQLTYPE_CHAR(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_NCHAR:
- return "DB2_SQLTYPE_NCHAR(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_LONG:
- return "DB2_SQLTYPE_LONG(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_NLONG:
- return "DB2_SQLTYPE_NLONG(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_CSTR:
- return "DB2_SQLTYPE_CSTR(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_NCSTR:
- return "DB2_SQLTYPE_NCSTR(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_VARGRAPH:
- return "DB2_SQLTYPE_VARGRAPH(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_NVARGRAPH:
- return "DB2_SQLTYPE_NVARGRAPH(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_GRAPHIC:
- return "DB2_SQLTYPE_GRAPHIC(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_NGRAPHIC:
- return "DB2_SQLTYPE_NGRAPHIC(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_LONGRAPH:
- return "DB2_SQLTYPE_LONGRAPH(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_NLONGRAPH:
- return "DB2_SQLTYPE_NLONGRAPH(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_LSTR:
- return "DB2_SQLTYPE_LSTR(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_NLSTR:
- return "DB2_SQLTYPE_NLSTR(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_FLOAT:
- return "DB2_SQLTYPE_FLOAT(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_NFLOAT:
- return "DB2_SQLTYPE_NFLOAT(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_DECIMAL:
- return "DB2_SQLTYPE_DECIMAL(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_NDECIMAL:
- return "DB2_SQLTYPE_NDECIMAL(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_ZONED:
- return "DB2_SQLTYPE_ZONED(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_NZONED:
- return "DB2_SQLTYPE_NZONED(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_BIGINT:
- return "DB2_SQLTYPE_BIGINT(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_NBIGINT:
- return "DB2_SQLTYPE_NBIGINT(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_INTEGER:
- return "DB2_SQLTYPE_INTEGER(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_NINTEGER:
- return "DB2_SQLTYPE_NINTEGER(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_SMALL:
- return "DB2_SQLTYPE_SMALL(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_NSMALL:
- return "DB2_SQLTYPE_NSMALL(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_NUMERIC:
- return "DB2_SQLTYPE_NUMERIC(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_NNUMERIC:
- return "DB2_SQLTYPE_NNUMERIC(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_ROWID:
- return "DB2_SQLTYPE_ROWID(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_NROWID:
- return "DB2_SQLTYPE_NROWID(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_BLOB_LOCATOR:
- return "DB2_SQLTYPE_BLOB_LOCATOR(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_NBLOB_LOCATOR:
- return "DB2_SQLTYPE_NBLOB_LOCATOR(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_CLOB_LOCATOR:
- return "DB2_SQLTYPE_CLOB_LOCATOR(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_NCLOB_LOCATOR:
- return "DB2_SQLTYPE_NCLOB_LOCATOR(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_DBCLOB_LOCATOR:
- return "DB2_SQLTYPE_DBCLOB_LOCATOR(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_NDBCLOB_LOCATOR:
- return "DB2_SQLTYPE_NDBCLOB_LOCATOR(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_BOOLEAN:
- return "DB2_SQLTYPE_BOOLEAN(0x" + Integer.toHexString(drdaType) + ")";
- case DRDAConstants.DB2_SQLTYPE_NBOOLEAN:
- return "DB2_SQLTYPE_NBOOLEAN(0x" + Integer.toHexString(drdaType) + ")";
-
- default:
- return "DRDA_TYPE_UNKNOWN(0x" + Integer.toHexString(drdaType) + ")";
- }
- }
}
Modified: db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/DRDAStatement.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/DRDAStatement.java?rev=374029&r1=374028&r2=374029&view=diff
==============================================================================
--- db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/DRDAStatement.java (original)
+++ db/derby/code/trunk/java/drda/org/apache/derby/impl/drda/DRDAStatement.java Wed Feb 1 01:37:45 2006
@@ -90,19 +90,9 @@
private int numResultSets = 0;
// State for parameter data
- protected static final class CliParam {
- public CliParam(byte drdaType, int drdaLength) {
- this.drdaType = drdaType;
- this.drdaLength = drdaLength;
- }
- public byte drdaType;
- public int drdaLength;
- public boolean isExt = false;
- }
- private ArrayList cliParams_ = new ArrayList();
- protected final CliParam getCliParam(int i) {
- return (CliParam) cliParams_.get(i);
- }
+ protected Vector cliParamDrdaTypes = new Vector();
+ protected Vector cliParamLens = new Vector();
+ protected ArrayList cliParamExtPositions = null;
// Query options sent on EXCSQLSTT
// These the default for ResultSets created for this statement.
@@ -992,7 +982,10 @@
outputExpected = false;
isCall = false;
explicitlyPrepared = false;
- cliParams_.clear();
+ cliParamDrdaTypes = null;
+ cliParamLens = null;
+ cliParamExtPositions = null;
+
}
/**
@@ -1068,26 +1061,8 @@
}
+
/**
- * Add a parameter.
- *
- * @param drdaType - parameter type
- * @param drdaLength - parameter length
- */
- protected void addParam(byte drdaType, int drdaLength)
- {
- cliParams_.add(new CliParam(drdaType, drdaLength));
- }
-
- /**
- * Reset the cliParams ArrayList.
- *
- */
- protected void resetParams() {
- cliParams_.clear();
- }
-
- /**
* get parameter DRDAType
*
* @param index - starting with 1
@@ -1095,33 +1070,33 @@
*/
protected int getParamDRDAType(int index)
{
- return getCliParam(index-1).drdaType;
+
+ return ((Byte)cliParamDrdaTypes.get(index -1)).intValue();
}
/**
- * set param DRDAType. Assumes that index is a valid index.
+ * set param DRDAType
*
* @param index - starting with 1
* @param type
*/
- protected void setParamDRDAType(int index, byte type)
- {
- getCliParam(index-1).drdaType = type;
- }
-
+ protected void setParamDRDAType(int index, byte type)
+ {
+ cliParamDrdaTypes.addElement(new Byte(type));
+
+ }
/**
* returns drda length of parameter as sent by client.
- * @param index - starting with 1
+ * @param index
* @return data length
*/
protected int getParamLen(int index)
{
- return getCliParam(index-1).drdaLength;
+ return ((Integer) cliParamLens.elementAt(index -1)).intValue();
}
-
/**
* get parameter precision or DB2 max (31)
*
@@ -1169,7 +1144,7 @@
*/
protected void setParamLen(int index, int value)
{
- getCliParam(index-1).drdaLength = value;
+ cliParamLens.add(index -1, new Integer(value));
}
/**
@@ -1177,11 +1152,14 @@
*
* @return number of parameters
*/
- protected int getNumParams()
- {
- return cliParams_.size();
- }
-
+ protected int getNumParams()
+ {
+ if (cliParamDrdaTypes != null)
+ return cliParamDrdaTypes.size();
+ else
+ return 0;
+ }
+
/**
* get the number of result set columns for the current resultSet
*
@@ -1657,3 +1635,13 @@
return currentDrdaRs.isRSCloseImplicit();
}
}
+
+
+
+
+
+
+
+
+
+