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 ka...@apache.org on 2007/03/06 16:13:47 UTC

svn commit: r515139 [1/2] - in /db/derby/code/trunk: java/engine/org/apache/derby/iapi/jdbc/ java/engine/org/apache/derby/impl/jdbc/ java/engine/org/apache/derby/impl/sql/catalog/ java/engine/org/apache/derby/loc/ java/shared/org/apache/derby/shared/co...

Author: kahatlen
Date: Tue Mar  6 07:13:34 2007
New Revision: 515139

URL: http://svn.apache.org/viewvc?view=rev&rev=515139
Log:
DERBY-2257: Implementing the stored procedures called by the LOB
related JDBC methods

Patch contributed by V. Narayanan.

Added:
    db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/LOBStoredProcedure.java   (with props)
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/BlobStoredProcedureTest.java   (with props)
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/ClobStoredProcedureTest.java   (with props)
Modified:
    db/derby/code/trunk/java/engine/org/apache/derby/iapi/jdbc/BrokeredConnection.java
    db/derby/code/trunk/java/engine/org/apache/derby/iapi/jdbc/EngineConnection.java
    db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedConnection.java
    db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedConnection40.java
    db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/build.xml
    db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/DataDictionaryImpl.java
    db/derby/code/trunk/java/engine/org/apache/derby/loc/messages.xml
    db/derby/code/trunk/java/shared/org/apache/derby/shared/common/reference/SQLState.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/metadata.out
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/odbc_metadata.out
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/metadata.out
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/odbc_metadata.out
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbc4/TestDbMetaData.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/_Suite.java
    db/derby/code/trunk/tools/jar/extraDBMSclasses.properties

Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/jdbc/BrokeredConnection.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/iapi/jdbc/BrokeredConnection.java?view=diff&rev=515139&r1=515138&r2=515139
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/iapi/jdbc/BrokeredConnection.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/iapi/jdbc/BrokeredConnection.java Tue Mar  6 07:13:34 2007
@@ -615,4 +615,25 @@
         return holdability;
         
     }
+	/**
+	* Dummy implementation for method in EngineConnection.
+        *
+	* @param LOBReference The object which contains the LOB object that
+	*                     that is added to the HashMap.
+	* @return an integer that represents the locator that has been
+	*         allocated to this LOB.
+	*/
+	public int addLOBMapping(Object LOBReference) { return -1;}
+
+	/**
+	* Dummy implementation for method in EngineConnection.
+	*/
+	public void clearLOBMapping() {}
+
+	/**
+	* Dummy implementation for method in EngineConnection.
+	* @param key the integer that represents the LOB locator value.
+	* @return the LOB Object corresponding to this locator.
+	*/
+	public Object getLOBMapping(int key) { return null;}
 }

Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/jdbc/EngineConnection.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/iapi/jdbc/EngineConnection.java?view=diff&rev=515139&r1=515138&r2=515139
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/iapi/jdbc/EngineConnection.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/iapi/jdbc/EngineConnection.java Tue Mar  6 07:13:34 2007
@@ -93,4 +93,27 @@
     public void addWarning(SQLWarning newWarning)
         throws SQLException;
 
+    /**
+    * Add the locator and the corresponding LOB object into the
+    * HashMap
+    * @param LOBReference The object which contains the LOB object that
+    *                     that is added to the HashMap.
+    * @return an integer that represents the locator that has been
+    *         allocated to this LOB.
+    */
+    public int addLOBMapping(Object LOBReference);
+
+    /**
+    * Clear the HashTable of all entries.
+    * Called when a commit or rollback of the transaction
+    * happens.
+    */
+    public void clearLOBMapping() throws SQLException;
+
+    /**
+    * Get the LOB reference corresponding to the locator.
+    * @param key the integer that represents the LOB locator value.
+    * @return the LOB Object corresponding to this locator.
+    */
+    public Object getLOBMapping(int key);
 }

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedConnection.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedConnection.java?view=diff&rev=515139&r1=515138&r2=515139
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedConnection.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedConnection.java Tue Mar  6 07:13:34 2007
@@ -52,12 +52,16 @@
 */
 import java.sql.PreparedStatement;
 import java.sql.CallableStatement;
+import java.sql.Blob;
+import java.sql.Clob;
 import java.sql.DatabaseMetaData;
 import java.sql.SQLException;
 import java.sql.SQLWarning;
 import java.sql.Statement;
 
+import java.util.HashMap;
 import java.util.Properties;
+import java.util.Iterator;
 
 import org.apache.derby.impl.jdbc.authentication.NoneAuthenticationServiceImpl;
 
@@ -117,6 +121,8 @@
 
 	final TransactionResourceImpl tr; // always access tr thru getTR()
 
+	private HashMap lobHashMap = null;
+	private int lobHMKey = 0;
 
 	//////////////////////////////////////////////////////////
 	// STATE (copied to new nested connections, but nesting
@@ -950,6 +956,7 @@
 			try
 			{
 		    	getTR().commit();
+		    	clearLOBMapping();
 			}
             catch (Throwable t)
 			{
@@ -985,6 +992,7 @@
 			try
 			{
 		    	getTR().rollback();
+		    	clearLOBMapping();
 			} catch (Throwable t) {
 				throw handleException(t);
 			}
@@ -2057,4 +2065,118 @@
     }
 
 
+	/**
+	*
+	* Constructs an object that implements the <code>Clob</code> interface. The object
+	* returned initially contains no data.  The <code>setAsciiStream</code>,
+	* <code>setCharacterStream</code> and <code>setString</code> methods of
+	* the <code>Clob</code> interface may be used to add data to the <code>Clob</code>.
+	*
+	* @return An object that implements the <code>Clob</code> interface
+	* @throws SQLException if an object that implements the
+	* <code>Clob</code> interface can not be constructed, this method is
+	* called on a closed connection or a database access error occurs.
+	*
+	*/
+	public Clob createClob() throws SQLException {
+		checkIfClosed();
+		return new EmbedClob("", this);
+	}
+
+	/**
+	*
+	* Constructs an object that implements the <code>Blob</code> interface. The object
+	* returned initially contains no data.  The <code>setBinaryStream</code> and
+	* <code>setBytes</code> methods of the <code>Blob</code> interface may be used to add data to
+	* the <code>Blob</code>.
+	*
+	* @return  An object that implements the <code>Blob</code> interface
+	* @throws SQLException if an object that implements the
+	* <code>Blob</code> interface can not be constructed, this method is
+	* called on a closed connection or a database access error occurs.
+	*
+	*/
+	public Blob createBlob() throws SQLException {
+		checkIfClosed();
+		return new EmbedBlob(new byte[0], this);
+	}
+
+	/**
+	* Add the locator and the corresponding LOB object into the
+	* HashMap
+	*
+	* @param lobHashMap The object which contains the LOB object that
+	*                     that is added to the HashMap.
+	* @return an integer that represents the locator that has been
+	*         allocated to this LOB.
+	*/
+	public int addLOBMapping(Object LOBReference) {
+		int loc = getIncLOBKey();
+		getlobHMObj().put(new Integer(loc), LOBReference);
+		return loc;
+	}
+
+	/**
+	* Remove the key(LOCATOR) from the hash table.
+	* @param key an integer that represents the locator that needs to be
+	*            removed from the table.
+	*/
+	public void removeLOBMapping(int key) {
+		getlobHMObj().remove(new Integer(key));
+	}
+
+	/**
+	* Get the LOB reference corresponding to the locator.
+	* @param key the integer that represents the LOB locator value.
+	* @return the LOB Object corresponding to this locator.
+	*/
+	public Object getLOBMapping(int key) {
+		return getlobHMObj().get(new Integer(key));
+	}
+
+	/**
+	* Clear the HashMap of all entries.
+	* Called when a commit or rollback of the transaction
+	* happens.
+	*/
+	public void clearLOBMapping() throws SQLException {
+
+		//free all the lob resources in the HashMap
+		//initialize the locator value to 0 and
+		//the hash table object to null.
+		if (lobHashMap != null) {
+			for (Iterator e = getlobHMObj().keySet().iterator();
+				e.hasNext() ;) {
+				Object obj = e.next();
+				if (obj instanceof Clob)  {
+					EmbedClob temp = (EmbedClob)obj;
+					temp.free();
+				}
+				if (obj instanceof Blob) {
+					EmbedBlob temp = (EmbedBlob)obj;
+					temp.free();
+				}
+			}
+		}
+		getlobHMObj().clear();
+	}
+
+	/**
+	* Return the current locator value
+	* @return an integer that represents the most recent locator value.
+	*/
+	private int getIncLOBKey() {
+		return ++rootConnection.lobHMKey;
+	}
+
+	/**
+	* Return the Hash Map in the root connection
+	* @return the HashMap that contains the locator to LOB object mapping
+	*/
+	public HashMap getlobHMObj() {
+		if (rootConnection.lobHashMap == null) {
+			rootConnection.lobHashMap = new HashMap();
+		}
+		return rootConnection.lobHashMap;
+	}
 }

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedConnection40.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedConnection40.java?view=diff&rev=515139&r1=515138&r2=515139
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedConnection40.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedConnection40.java Tue Mar  6 07:13:34 2007
@@ -65,42 +65,6 @@
         throw Util.notImplemented();
     }
     
-    /**
-     *
-     * Constructs an object that implements the <code>Clob</code> interface. The object
-     * returned initially contains no data.  The <code>setAsciiStream</code>,
-     * <code>setCharacterStream</code> and <code>setString</code> methods of 
-     * the <code>Clob</code> interface may be used to add data to the <code>Clob</code>.
-     *
-     * @return An object that implements the <code>Clob</code> interface
-     * @throws SQLException if an object that implements the
-     * <code>Clob</code> interface can not be constructed, this method is 
-     * called on a closed connection or a database access error occurs.
-     *
-     */
-    public Clob createClob() throws SQLException {
-        checkIfClosed();
-        return new EmbedClob("",this);
-    }
-    
-    /**
-     *
-     * Constructs an object that implements the <code>Blob</code> interface. The object
-     * returned initially contains no data.  The <code>setBinaryStream</code> and
-     * <code>setBytes</code> methods of the <code>Blob</code> interface may be used to add data to
-     * the <code>Blob</code>.
-     *
-     * @return  An object that implements the <code>Blob</code> interface
-     * @throws SQLException if an object that implements the
-     * <code>Blob</code> interface can not be constructed, this method is 
-     * called on a closed connection or a database access error occurs.
-     *
-     */
-    public Blob createBlob() throws SQLException {
-        checkIfClosed();
-        return new EmbedBlob(new byte[0],this);
-    }
-    
     public NClob createNClob() throws SQLException {
         throw Util.notImplemented();
     }

Added: db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/LOBStoredProcedure.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/LOBStoredProcedure.java?view=auto&rev=515139
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/LOBStoredProcedure.java (added)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/LOBStoredProcedure.java Tue Mar  6 07:13:34 2007
@@ -0,0 +1,376 @@
+/*
+
+   Derby - Class org.apache.derby.impl.jdbc.LOBStoredProcedure
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to you under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derby.impl.jdbc;
+
+import java.sql.Blob;
+import java.sql.Connection;
+import java.sql.Clob;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+
+import org.apache.derby.iapi.reference.SQLState;
+
+/**
+ * Contains the stored procedures that will be used in the
+ * LOB client side methods.
+ */
+public class LOBStoredProcedure {
+
+    /**
+     * Creates a new empty Clob and registers it in the HashMap in the
+     * Connection and returns the locator value corresponding to this Clob.
+     * @return an integer that maps to the Clob value created.
+     * @throws a SQLException.
+     */
+    public static int CLOBCREATELOCATOR() throws SQLException {
+        Clob clob = getEmbedConnection().createClob();
+        return getEmbedConnection().addLOBMapping(clob);
+    }
+
+    /**
+     * Removes the supplied LOCATOR entry from the hash map.
+     * @param LOCATOR an integer that represents the locator that needs to be
+     *                removed from the hash map.
+     * @throws SQLException.
+     */
+    public static void CLOBRELEASELOCATOR(int LOCATOR) throws SQLException {
+        Clob clob = (Clob)getEmbedConnection().getLOBMapping(LOCATOR);
+        if (clob == null) {
+            throw newSQLException(SQLState.LOB_LOCATOR_INVALID);
+        }
+        EmbedClob embedClob = (EmbedClob)clob;
+        embedClob.free();
+        getEmbedConnection().removeLOBMapping(LOCATOR);
+    }
+
+    /**
+     * returns the first occurrence of the given search string from the
+     * given start search position inside the Clob.
+     *
+     * @param LOCATOR an integer that represents the locator of the Clob
+     *                in which the given position of the given sub-string
+     *                needs to be found.
+     *
+     * @param searchLiteral a String whose occurence inside the Clob needs to
+     *                      be found starting from pos.
+     *
+     * @param pos an integer that represents the position inside the Clob from
+     *            which the search needs to begin.
+     *
+     * @return an integer that represents the position inside the Clob of the
+     *         first occurrence of the sub-string from the given starting
+     *         position.
+     *
+     * @throws an SQLException
+     */
+    public static long CLOBGETPOSITIONFROMSTRING(int LOCATOR, String searchLiteral,
+        long fromPosition) throws SQLException {
+        return getClobObjectCorrespondingtoLOCATOR(LOCATOR).
+            position(searchLiteral, fromPosition);
+    }
+
+    /**
+     * returns the first occurrence of the given search string from the
+     * given start search position inside the Clob.
+     *
+     * @param LOCATOR an integer that represents the locator of the Clob
+     *                in which the given position of the given sub-string
+     *                needs to be found.
+     *
+     * @param searchLocator a Locator representing a Clob whose occurence inside
+     *                      the Clob needs to be found starting from pos.
+     *
+     * @param pos an integer that represents the position inside the Clob from
+     *            which the search needs to begin.
+     *
+     * @return an integer that represents the position inside the Clob of the
+     *         first occurrence of the sub-string from the given starting
+     *         position.
+     *
+     * @throws an SQLException
+     */
+    public static long CLOBGETPOSITIONFROMLOCATOR(int LOCATOR, int searchLocator,
+        long fromPosition) throws SQLException {
+        return getClobObjectCorrespondingtoLOCATOR(LOCATOR).position(
+            getClobObjectCorrespondingtoLOCATOR(searchLocator), fromPosition);
+    }
+
+    /**
+     * returns the length of the Clob corresponding to the LOCATOR value.
+     *
+     * @param LOCATOR an integer that represents the locator of the Clob whose
+     *        length needs to be obtained.
+     * @return an integer that represents the length of the Clob.
+     *
+     */
+    public static long CLOBGETLENGTH(int LOCATOR) throws SQLException {
+        return getClobObjectCorrespondingtoLOCATOR(LOCATOR).length();
+    }
+
+    /**
+     * returns the String starting from pos and of len length
+     * from the LOB corresponding to LOCATOR.
+     * @param LOCATOR_TYPE an integer that defines if the LOCATOR is
+     *                     a CLOB or a BLOB locator.
+     * @param LOCATOR an integer that represents the LOCATOR used
+     *                to retrieve an instance of the LOB.
+     * @param pos a long that represents the position from which
+     *            the substring begins.
+     * @param len an integer that represents the length of the substring.
+     * @return the substring conforming to the indexes we requested for from
+     *         inside the LOB.
+     * @throws a SQLException
+     */
+    public static String CLOBGETSUBSTRING(int LOCATOR,
+        long pos, int len) throws SQLException {
+        return getClobObjectCorrespondingtoLOCATOR(LOCATOR).getSubString(pos, len);
+    }
+
+    /**
+     * replaces the characters starting at fromPosition and with length ForLength
+     *
+     * @param LOCATOR an integer that represents the locator of the Clob in which
+     *                the characters need to be replaced.
+     *
+     * @param pos an integer that represents the position inside the Clob from which
+     *            the string needs to be replaced.
+     *
+     * @param length the number of characters from the string that need to be used for
+     *               replacement.
+     *
+     * @param str the string from which the repalcement characters are built.
+     *
+     * @throws an SQLException.
+     */
+    public static void CLOBSETSTRING(int LOCATOR, long pos, int length,
+        String str) throws SQLException {
+        //Temporary code that will insert a clob with data into
+        //the hashmap and will allow the testing of the locator
+        //stored procedures.
+        //This code will be removed once the set methods are implemented.
+        java.util.HashMap hm = getEmbedConnection().getlobHMObj();
+        EmbedClob clob = new EmbedClob(str, getEmbedConnection());
+        hm.remove(new Integer(LOCATOR));
+        hm.put(new Integer(LOCATOR), clob);
+        getClobObjectCorrespondingtoLOCATOR(LOCATOR).setString(pos, str, 0, length);
+    }
+
+    /**
+     * truncates the Clob value represented by LOCATOR to have a length
+     * of length.
+     *
+     * @param LOCATOR an integer that represents the LOCATOR used to retrieve an
+     *                instance of the LOB.
+     * @param length an integer that represents the length to which the Clob
+     *               must be truncated to.
+     * @throws a SQLException.
+     */
+    public static void CLOBTRUNCATE(int LOCATOR, long length) throws SQLException {
+        getClobObjectCorrespondingtoLOCATOR(LOCATOR).truncate(length);
+    }
+
+    /**
+     * returns the Clob object corresponding to the locator.
+     * @param LOCATOR an integer that represents the locator corresponding
+     *                to the Clob object requested.
+     * @return a Clob object that is mapped to the LOCATOR object passed in.
+     * @throws a SQLException.
+     */
+    private static Clob getClobObjectCorrespondingtoLOCATOR(int LOCATOR)
+    throws SQLException {
+        Clob clob = (Clob)getEmbedConnection().getLOBMapping(LOCATOR);
+        if (clob == null) {
+            throw newSQLException(SQLState.LOB_LOCATOR_INVALID);
+        }
+        return clob;
+    }
+
+    /**
+     * Creates a new empty Blob and registers it in the HashMap in the
+     * Connection and returns the locator value corresponding to this Blob.
+     * @return an integer that maps to the Blob value created.
+     * @throws a SQLException.
+     */
+    public static int BLOBCREATELOCATOR() throws SQLException {
+        Blob blob = getEmbedConnection().createBlob();
+        return getEmbedConnection().addLOBMapping(blob);
+    }
+
+    /**
+     * Removes the supplied LOCATOR entry from the hash map.
+     * @param LOCATOR an integer that represents the locator that needs to be
+     *                removed from the hash map.
+     * @throws SQLException.
+     */
+    public static void BLOBRELEASELOCATOR(int LOCATOR) throws SQLException {
+        Blob blob = (Blob)getEmbedConnection().getLOBMapping(LOCATOR);
+        if (blob == null) {
+            throw newSQLException(SQLState.LOB_LOCATOR_INVALID);
+        }
+        EmbedBlob embedBlob = (EmbedBlob)blob;
+        embedBlob.free();
+        getEmbedConnection().removeLOBMapping(LOCATOR);
+    }
+
+    /**
+     *
+     * Returns the first occurrence of locator in the Blob.
+     *
+     * @param LOCATOR the locator value of the Blob in which the seaching needs
+     *                to be done.
+     * @param searchLocator the locator value of the Blob whose position needs
+     *                      needs to be found.
+     * @param pos the position from which the seaching needs to be done.
+     * @return the position at which the first occurrence of the Blob is
+     *         found.
+     * @throws a SQLException.
+     *
+     */
+    public static long BLOBGETPOSITIONFROMLOCATOR(int LOCATOR,
+        int searchLocator, long pos) throws SQLException {
+        return getBlobObjectCorrespondingtoLOCATOR(LOCATOR).position(
+            getBlobObjectCorrespondingtoLOCATOR(searchLocator), pos);
+    }
+
+    /**
+     *
+     * Returns the first occurrence of the byte array in the Blob.
+     *
+     * @param LOCATOR the locator value of the Blob in which the seaching needs
+     *                to be done.
+     * @param searchBytes the byte array whose position needs needs to be found.
+     * @param pos the position from which the seaching needs to be done.
+     * @return the position at which the first occurrence of the Byte array is
+     *         found.
+     * @throws a SQLException.
+     *
+     */
+    public static long BLOBGETPOSITIONFROMBYTES(int LOCATOR,
+        byte [] searchBytes, long pos) throws SQLException {
+        return getBlobObjectCorrespondingtoLOCATOR(LOCATOR).position(searchBytes, pos);
+    }
+
+    /**
+     *
+     * Returns the length in bytes of the Blob.
+     *
+     * @param LOCATOR the locator value of the Blob whose length needs to
+     *                be found.
+     * @return the length of the Blob object mapped to the locator .
+     * @throws a SQLException.
+     *
+     */
+    public static long BLOBGETLENGTH(int LOCATOR) throws SQLException {
+        return getBlobObjectCorrespondingtoLOCATOR(LOCATOR).length();
+    }
+
+    /**
+     * Returns the Byte array containing the bytes starting from pos and
+     * of length len
+     *
+     * @param LOCATOR the locator value of the Blob from which the byte array
+     *                needs to be retrieved.
+     * @param len the length of te byte array that needs to be retrieved from
+     *            pos
+     * @param pos the position from which the bytes from the Blob need to be
+     *            retrieved.
+     * @return a byte array containing the bytes stating from pos and
+     *         of length len.
+     * @throws a SQLException.
+     *
+     */
+    public static byte[] BLOBGETBYTES(int LOCATOR, long pos, int len)
+    throws SQLException {
+        return getBlobObjectCorrespondingtoLOCATOR(LOCATOR).getBytes(pos, len);
+    }
+
+    /**
+     *
+     * Replaces the bytes at pos with len bytes
+     *
+     * @param LOCATOR the integer that represents the Blob in which the bytes
+     *                need to be replaced.
+     * @param pos the position stating from which the byte replacement needs to
+     *            happen.
+     * @param len the number of bytes that need to be used in replacement.
+     * @param replaceBytes the byte array that contains the bytes that needs to
+     *                     be used for replacement.
+     * @return the number of bytes that have been replaced.
+     * @throws a SQLException.
+     *
+     */
+    public static void BLOBSETBYTES(int LOCATOR, long pos, int len,
+        byte [] replaceBytes) throws SQLException {
+        getBlobObjectCorrespondingtoLOCATOR(LOCATOR).setBytes
+            (pos, replaceBytes, 0, len);
+    }
+
+    /**
+     * truncates the Blob value represented by LOCATOR to have a length
+     * of length.
+     *
+     * @param LOCATOR an integer that represents the LOCATOR used to retrieve an
+     *                instance of the LOB.
+     * @param length an integer that represents the length to which the Blob
+     *               must be truncated to.
+     * @throws a SQLException.
+     */
+    public static void BLOBTRUNCATE(int LOCATOR, long length) throws SQLException {
+        getBlobObjectCorrespondingtoLOCATOR(LOCATOR).truncate(length);
+    }
+
+    /**
+     * returns the Blob object corresponding to the locator.
+     * @param LOCATOR an integer that represents the locator corresponding
+     *                to the Blob object requested.
+     * @return a Blob object that is mapped to the LOCATOR object passed in.
+     * @throws a SQLException.
+     */
+    private static Blob getBlobObjectCorrespondingtoLOCATOR(int LOCATOR)
+    throws SQLException {
+        Blob blob = (Blob)getEmbedConnection().getLOBMapping(LOCATOR);
+        if (blob == null) {
+            throw newSQLException(SQLState.LOB_LOCATOR_INVALID);
+        }
+        return blob;
+    }
+
+    /**
+     * Returns the EmbedConnection object.
+     * @throws SQLException.
+     */
+    private static EmbedConnection getEmbedConnection() throws SQLException {
+        return (EmbedConnection)DriverManager
+            .getConnection("jdbc:default:connection");
+    }
+
+    /**
+     * Generate the SQLException with the appropriate
+     * SQLState.
+     *
+     * @param messageId The messageId of the message associated with this message.
+     * @return a SQLEXception.
+     */
+    private static SQLException newSQLException(String messageId) {
+        return Util.generateCsSQLException(messageId);
+    }
+}

Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/LOBStoredProcedure.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/build.xml
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/build.xml?view=diff&rev=515139&r1=515138&r2=515139
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/build.xml (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/build.xml Tue Mar  6 07:13:34 2007
@@ -58,6 +58,7 @@
 	  <exclude name="${derby.dir}/impl/jdbc/*20.java"/>
 	  <exclude name="${derby.dir}/impl/jdbc/*30.java"/>
 	  <exclude name="${derby.dir}/impl/jdbc/*40.java"/>
+	  <exclude name="${derby.dir}/impl/jdbc/LOBStoredProcedure.java"/>
    </javac>
     <copy file="metadata.properties" tofile="${out.dir}/org/apache/derby/impl/jdbc/metadata.properties"/>
     <javac
@@ -159,6 +160,7 @@
         <pathelement path="${java14compile.classpath}"/>
       </classpath>
 	  <include name="${derby.dir}/impl/jdbc/*30.java"/>
+	  <include name="${derby.dir}/impl/jdbc/LOBStoredProcedure.java"/>
     </javac>
   </target>
 

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/DataDictionaryImpl.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/DataDictionaryImpl.java?view=diff&rev=515139&r1=515138&r2=515139
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/DataDictionaryImpl.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/DataDictionaryImpl.java Tue Mar  6 07:13:34 2007
@@ -8490,6 +8490,11 @@
      * @param return_type   null for procedure.  For functions the return type
      *                      of the function.
      *
+     * @param tc            an instance of the TransactionController
+     *
+     * @param procClass     the fully qualified name of the class that contains
+     *                      java definitions for the stored procedures
+     *
      * @return UUID 		UUID of system routine that got created.
      *
 	 * @exception  StandardException  Standard exception policy.
@@ -8503,7 +8508,8 @@
 	int						num_result_sets,
     short                   routine_sql_control,
     TypeDescriptor          return_type,
-    TransactionController   tc)
+    TransactionController   tc,
+    String procClass)
         throws StandardException
     {
         int num_args = 0;
@@ -8520,9 +8526,6 @@
             }
         }
 
-        // Actual procedures are in this class:
-		String procClass = "org.apache.derby.catalog.SystemProcedures";
-
         // all args are only "in" arguments
         int[] arg_modes = null;
         if (num_args != 0)
@@ -8576,6 +8579,55 @@
     }
 
     /**
+     * Generic create procedure routine.
+     * Takes the input procedure and inserts it into the appropriate
+     * catalog.
+     *
+     * Assumes all arguments are "IN" type.
+     *
+     * @param routine_name  name of the routine in java and the SQL
+     *                      procedure name.
+     *
+     * @param arg_names     String array of procedure argument names in order.
+     *
+     * @param arg_types     Internal SQL types of the arguments
+     *
+     * @param routine_sql_control
+     *                      One of the RoutineAliasInfo constants:
+     *                          MODIFIES_SQL_DATA
+     *                          READS_SQL_DATA
+     *                          CONTAINS_SQL
+     *                          NO_SQL
+     *
+     * @param return_type   null for procedure.  For functions the return type
+     *                      of the function.
+     *
+     * @param tc            an instance of the TransactionController
+     *
+     * @return UUID         UUID of system routine that got created.
+     *
+     * @throws  StandardException  Standard exception policy.
+     **/
+    private final UUID createSystemProcedureOrFunction(
+    String                  routine_name,
+    UUID                    schema_uuid,
+    String[]                arg_names,
+    TypeDescriptor[]        arg_types,
+    int                     num_out_param,
+    int                     num_result_sets,
+    short                   routine_sql_control,
+    TypeDescriptor          return_type,
+    TransactionController   tc)
+        throws StandardException
+    {
+        UUID routine_uuid = createSystemProcedureOrFunction(routine_name,
+        schema_uuid, arg_names, arg_types,
+        num_out_param, num_result_sets, routine_sql_control,
+        return_type, tc, "org.apache.derby.catalog.SystemProcedures");
+        return routine_uuid;
+    }
+
+    /**
      * Create system procedures
      * <p>
      * Used to add the system procedures to the database when
@@ -9207,6 +9259,9 @@
         create_10_2_system_procedures(tc, sysUtilUUID);
         // add 10.3 specific system procedures
         create_10_3_system_procedures(tc, sysUtilUUID);
+        //create 10.3 functions used by LOB methods.
+        UUID sysIBMUUID = getSysIBMSchemaDescriptor().getUUID();
+        create_10_3_LOB_Specific_functions(tc, sysIBMUUID);
     }
 
     /**
@@ -9984,7 +10039,402 @@
         }
     }
 
+    /**
+     * Create system procedures added in version 10.3.
+     * Create 10.3 system procedures related to the LOB Methods ,
+     * called by either code creating new
+     * database, or code doing hard upgrade from previous version.
+     *
+     * @param tc            an instance of the TransactionController class.
+     * @param sysUtilUUID   uuid of the SYSUTIL schema.
+     *
+     * @throws StandardException  Standard exception policy.
+     **/
+    private void create_10_3_LOB_Specific_functions(
+        TransactionController   tc,
+        UUID                    schema_uuid)
+        throws StandardException {
+        {
+            UUID routine_uuid = null;
+            String[] arg_names = null;
+
+            TypeDescriptor[] arg_types = null;
+
+            routine_uuid = createSystemProcedureOrFunction(
+                "CLOBCREATELOCATOR",
+                schema_uuid,
+                arg_names,
+                arg_types,
+                0,
+                0,
+                RoutineAliasInfo.CONTAINS_SQL,
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.INTEGER, Integer.MAX_VALUE),
+                tc,
+                "org.apache.derby.impl.jdbc.LOBStoredProcedure");
+        }
+        {
+            UUID routine_uuid = null;
+            String[] arg_names = {"LOCATOR"};
+
+            TypeDescriptor[] arg_types = {
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.INTEGER)};
+
+            routine_uuid = createSystemProcedureOrFunction(
+                "CLOBRELEASELOCATOR",
+                schema_uuid,
+                arg_names,
+                arg_types,
+                0,
+                0,
+                RoutineAliasInfo.CONTAINS_SQL,
+                null,
+                tc,
+                "org.apache.derby.impl.jdbc.LOBStoredProcedure");
+        }
+        {
+            UUID routine_uuid = null;
+            String[] arg_names = {"LOCATOR","SEARCHSTR","POS"};
+
+            // procedure argument types
+            TypeDescriptor[] arg_types = {
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.INTEGER),
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.VARCHAR),
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.BIGINT)
+            };
+            routine_uuid = createSystemProcedureOrFunction(
+                "CLOBGETPOSITIONFROMSTRING",
+                schema_uuid,
+                arg_names,
+                arg_types,
+                0,
+                0,
+                RoutineAliasInfo.CONTAINS_SQL,
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.BIGINT, Limits.DB2_LOB_MAXWIDTH),
+                tc,
+                "org.apache.derby.impl.jdbc.LOBStoredProcedure");
+        }
+        {
+            UUID routine_uuid = null;
+            String[] arg_names = {"LOCATOR","SEARCHLOCATOR","POS"};
+
+            // procedure argument types
+            TypeDescriptor[] arg_types = {
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.INTEGER),
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.INTEGER),
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.BIGINT)
+            };
+            routine_uuid = createSystemProcedureOrFunction(
+                "CLOBGETPOSITIONFROMLOCATOR",
+                schema_uuid,
+                arg_names,
+                arg_types,
+                0,
+                0,
+                RoutineAliasInfo.CONTAINS_SQL,
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.BIGINT, Limits.DB2_LOB_MAXWIDTH),
+                tc,
+                "org.apache.derby.impl.jdbc.LOBStoredProcedure");
+        }
+        {
+            UUID routine_uuid = null;
+            String[] arg_names = {"LOCATOR"};
+
+            // procedure argument types
+            TypeDescriptor[] arg_types = {
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.INTEGER)
+            };
+            routine_uuid = createSystemProcedureOrFunction(
+                "CLOBGETLENGTH",
+                schema_uuid,
+                arg_names,
+                arg_types,
+                0,
+                0,
+                RoutineAliasInfo.CONTAINS_SQL,
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.BIGINT, Limits.DB2_LOB_MAXWIDTH),
+                tc,
+                "org.apache.derby.impl.jdbc.LOBStoredProcedure");
+        }
+        {
+            UUID routine_uuid = null;
+            String[] arg_names = {"LOCATOR","POS","LEN"};
+
+            // procedure argument types
+            TypeDescriptor[] arg_types = {
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.INTEGER),
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.BIGINT),
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.INTEGER)
+            };
+            routine_uuid = createSystemProcedureOrFunction(
+                "CLOBGETSUBSTRING",
+                schema_uuid,
+                arg_names,
+                arg_types,
+                0,
+                0,
+                RoutineAliasInfo.CONTAINS_SQL,
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.VARCHAR, Limits.DB2_VARCHAR_MAXWIDTH),
+                tc,
+                "org.apache.derby.impl.jdbc.LOBStoredProcedure");
+        }
+        {
+            UUID routine_uuid = null;
+            String[] arg_names = {"LOCATOR","POS","LEN","REPLACESTR"};
+
+            // procedure argument types
+            TypeDescriptor[] arg_types = {
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.INTEGER),
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.BIGINT),
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.INTEGER),
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.VARCHAR)
+            };
+            routine_uuid = createSystemProcedureOrFunction(
+                "CLOBSETSTRING",
+                schema_uuid,
+                arg_names,
+                arg_types,
+                0,
+                0,
+                RoutineAliasInfo.CONTAINS_SQL,
+                null,
+                tc,
+                "org.apache.derby.impl.jdbc.LOBStoredProcedure");
+        }
+        {
+            UUID routine_uuid = null;
+            String[] arg_names = {"LOCATOR","LEN"};
+
+            // procedure argument types
+            TypeDescriptor[] arg_types = {
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.INTEGER),
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.BIGINT)
+            };
+            routine_uuid = createSystemProcedureOrFunction(
+                "CLOBTRUNCATE",
+                schema_uuid,
+                arg_names,
+                arg_types,
+                0,
+                0,
+                RoutineAliasInfo.CONTAINS_SQL,
+                null,
+                tc,
+                "org.apache.derby.impl.jdbc.LOBStoredProcedure");
+        }
+
+        //Now create the Stored procedures required for BLOB
+        {
+            UUID routine_uuid = null;
+            String[] arg_names = null;
+
+            TypeDescriptor[] arg_types = null;
 
+            routine_uuid = createSystemProcedureOrFunction(
+                "BLOBCREATELOCATOR",
+                schema_uuid,
+                arg_names,
+                arg_types,
+                0,
+                0,
+                RoutineAliasInfo.CONTAINS_SQL,
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.INTEGER, Integer.MAX_VALUE),
+                tc,
+                "org.apache.derby.impl.jdbc.LOBStoredProcedure");
+        }
+        {
+            UUID routine_uuid = null;
+            String[] arg_names = {"LOCATOR"};
+
+            TypeDescriptor[] arg_types = {
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.INTEGER)};
+
+            routine_uuid = createSystemProcedureOrFunction(
+                "BLOBRELEASELOCATOR",
+                schema_uuid,
+                arg_names,
+                arg_types,
+                0,
+                0,
+                RoutineAliasInfo.CONTAINS_SQL,
+                null,
+                tc,
+                "org.apache.derby.impl.jdbc.LOBStoredProcedure");
+        }
+        {
+            UUID routine_uuid = null;
+            String[] arg_names = {"LOCATOR","SEARCHBYTES","POS"};
+
+            // procedure argument types
+            TypeDescriptor[] arg_types = {
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.INTEGER),
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.VARBINARY),
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.BIGINT)
+            };
+            routine_uuid = createSystemProcedureOrFunction(
+                "BLOBGETPOSITIONFROMBYTES",
+                schema_uuid,
+                arg_names,
+                arg_types,
+                0,
+                0,
+                RoutineAliasInfo.CONTAINS_SQL,
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.BIGINT, Limits.DB2_LOB_MAXWIDTH),
+                tc,
+                "org.apache.derby.impl.jdbc.LOBStoredProcedure");
+        }
+        {
+            UUID routine_uuid = null;
+            String[] arg_names = {"LOCATOR","SEARCHLOCATOR","POS"};
+
+            // procedure argument types
+            TypeDescriptor[] arg_types = {
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.INTEGER),
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.INTEGER),
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.BIGINT)
+            };
+            routine_uuid = createSystemProcedureOrFunction(
+                "BLOBGETPOSITIONFROMLOCATOR",
+                schema_uuid,
+                arg_names,
+                arg_types,
+                0,
+                0,
+                RoutineAliasInfo.CONTAINS_SQL,
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.BIGINT, Limits.DB2_LOB_MAXWIDTH),
+                tc,
+                "org.apache.derby.impl.jdbc.LOBStoredProcedure");
+        }
+        {
+            UUID routine_uuid = null;
+            String[] arg_names = {"LOCATOR"};
+
+            // procedure argument types
+            TypeDescriptor[] arg_types = {
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.INTEGER)
+            };
+            routine_uuid = createSystemProcedureOrFunction(
+                "BLOBGETLENGTH",
+                schema_uuid,
+                arg_names,
+                arg_types,
+                0,
+                0,
+                RoutineAliasInfo.CONTAINS_SQL,
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.BIGINT, Limits.DB2_LOB_MAXWIDTH),
+                tc,
+                "org.apache.derby.impl.jdbc.LOBStoredProcedure");
+        }
+        {
+            UUID routine_uuid = null;
+            String[] arg_names = {"LOCATOR","POS","LEN"};
+
+            // procedure argument types
+            TypeDescriptor[] arg_types = {
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.INTEGER),
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.BIGINT),
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.INTEGER)
+            };
+            routine_uuid = createSystemProcedureOrFunction(
+                "BLOBGETBYTES",
+                schema_uuid,
+                arg_names,
+                arg_types,
+                0,
+                0,
+                RoutineAliasInfo.CONTAINS_SQL,
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.VARBINARY, Limits.DB2_VARCHAR_MAXWIDTH),
+                tc,
+                "org.apache.derby.impl.jdbc.LOBStoredProcedure");
+        }
+        {
+            UUID routine_uuid = null;
+            String[] arg_names = {"LOCATOR","POS","LEN","REPLACEBYTES"};
+
+            // procedure argument types
+            TypeDescriptor[] arg_types = {
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.INTEGER),
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.BIGINT),
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.INTEGER),
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.VARBINARY)
+            };
+            routine_uuid = createSystemProcedureOrFunction(
+                "BLOBSETBYTES",
+                schema_uuid,
+                arg_names,
+                arg_types,
+                0,
+                0,
+                RoutineAliasInfo.CONTAINS_SQL,
+                null,
+                tc,
+                "org.apache.derby.impl.jdbc.LOBStoredProcedure");
+        }
+        {
+            UUID routine_uuid = null;
+            String[] arg_names = {"LOCATOR","LEN"};
+
+            // procedure argument types
+            TypeDescriptor[] arg_types = {
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.INTEGER),
+                DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+                    Types.BIGINT)
+            };
+            routine_uuid = createSystemProcedureOrFunction(
+                "BLOBTRUNCATE",
+                schema_uuid,
+                arg_names,
+                arg_types,
+                0,
+                0,
+                RoutineAliasInfo.CONTAINS_SQL,
+                null,
+                tc,
+                "org.apache.derby.impl.jdbc.LOBStoredProcedure");
+        }
+    }
 
     /**
      * Create system procedures added in version 10.3.

Modified: db/derby/code/trunk/java/engine/org/apache/derby/loc/messages.xml
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/loc/messages.xml?view=diff&rev=515139&r1=515138&r2=515139
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/loc/messages.xml (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/loc/messages.xml Tue Mar  6 07:13:34 2007
@@ -4430,6 +4430,10 @@
                 <name>XJ216.S</name>
                 <text>The length of this BLOB/CLOB is not available yet. When a BLOB or CLOB is accessed as a stream, the length is not available until the entire stream has been processed.</text>
             </msg>
+            <msg>
+                <name>XJ217.S</name>
+                <text>The locator that was supplied for this CLOB/BLOB is invalid</text>
+            </msg>
 
         </family>
 

Modified: db/derby/code/trunk/java/shared/org/apache/derby/shared/common/reference/SQLState.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/shared/org/apache/derby/shared/common/reference/SQLState.java?view=diff&rev=515139&r1=515138&r2=515139
==============================================================================
--- db/derby/code/trunk/java/shared/org/apache/derby/shared/common/reference/SQLState.java (original)
+++ db/derby/code/trunk/java/shared/org/apache/derby/shared/common/reference/SQLState.java Tue Mar  6 07:13:34 2007
@@ -1500,6 +1500,7 @@
     String IO_ERROR_UPON_LOB_FREE = "XJ214.S";
     String LOB_OBJECT_INVALID = "XJ215.S";
     String LOB_OBJECT_LENGTH_UNKNOWN_YET = "XJ216.S";
+    String LOB_LOCATOR_INVALID = "XJ217.S";
     
     //XN - Network-level messages
     String NET_CONNECTION_RESET_NOT_ALLOWED_IN_UNIT_OF_WORK         = "XN001.S";

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/metadata.out
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/metadata.out?view=diff&rev=515139&r1=515138&r2=515139
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/metadata.out (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/metadata.out Tue Mar  6 07:13:34 2007
@@ -57,6 +57,16 @@
 null,SYSCS_UTIL,SYSCS_CHECK_TABLE,org.apache.derby.catalog.SystemProcedures.SYSCS_CHECK_TABLE,xxxxGENERATED-IDxxxx
 null,SYSCS_UTIL,SYSCS_GET_DATABASE_PROPERTY,org.apache.derby.catalog.SystemProcedures.SYSCS_GET_DATABASE_PROPERTY,xxxxGENERATED-IDxxxx
 null,SYSCS_UTIL,SYSCS_GET_RUNTIMESTATISTICS,org.apache.derby.catalog.SystemProcedures.SYSCS_GET_RUNTIMESTATISTICS,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBCREATELOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBCREATELOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETBYTES,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETBYTES,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETLENGTH,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETLENGTH,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETPOSITIONFROMBYTES,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETPOSITIONFROMBYTES,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETPOSITIONFROMLOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETPOSITIONFROMLOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBCREATELOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBCREATELOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETLENGTH,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETLENGTH,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETPOSITIONFROMLOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETPOSITIONFROMLOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETPOSITIONFROMSTRING,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETPOSITIONFROMSTRING,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETSUBSTRING,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETSUBSTRING,xxxxGENERATED-IDxxxx
 getFunctions("Dummy Catalog",null,null):
 FUNCTION_CAT[VARCHAR],FUNCTION_SCHEM[VARCHAR],FUNCTION_NAME[VARCHAR],REMARKS[VARCHAR],SPECIFIC_NAME[VARCHAR]
 null,APP,DUMMY1,java.some.func,xxxxGENERATED-IDxxxx
@@ -66,15 +76,43 @@
 null,SYSCS_UTIL,SYSCS_CHECK_TABLE,org.apache.derby.catalog.SystemProcedures.SYSCS_CHECK_TABLE,xxxxGENERATED-IDxxxx
 null,SYSCS_UTIL,SYSCS_GET_DATABASE_PROPERTY,org.apache.derby.catalog.SystemProcedures.SYSCS_GET_DATABASE_PROPERTY,xxxxGENERATED-IDxxxx
 null,SYSCS_UTIL,SYSCS_GET_RUNTIMESTATISTICS,org.apache.derby.catalog.SystemProcedures.SYSCS_GET_RUNTIMESTATISTICS,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBCREATELOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBCREATELOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETBYTES,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETBYTES,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETLENGTH,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETLENGTH,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETPOSITIONFROMBYTES,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETPOSITIONFROMBYTES,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETPOSITIONFROMLOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETPOSITIONFROMLOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBCREATELOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBCREATELOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETLENGTH,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETLENGTH,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETPOSITIONFROMLOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETPOSITIONFROMLOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETPOSITIONFROMSTRING,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETPOSITIONFROMSTRING,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETSUBSTRING,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETSUBSTRING,xxxxGENERATED-IDxxxx
 getFunctions(null,"%SYS%",null):
 FUNCTION_CAT[VARCHAR],FUNCTION_SCHEM[VARCHAR],FUNCTION_NAME[VARCHAR],REMARKS[VARCHAR],SPECIFIC_NAME[VARCHAR]
 null,SYSCS_UTIL,SYSCS_CHECK_TABLE,org.apache.derby.catalog.SystemProcedures.SYSCS_CHECK_TABLE,xxxxGENERATED-IDxxxx
 null,SYSCS_UTIL,SYSCS_GET_DATABASE_PROPERTY,org.apache.derby.catalog.SystemProcedures.SYSCS_GET_DATABASE_PROPERTY,xxxxGENERATED-IDxxxx
 null,SYSCS_UTIL,SYSCS_GET_RUNTIMESTATISTICS,org.apache.derby.catalog.SystemProcedures.SYSCS_GET_RUNTIMESTATISTICS,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBCREATELOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBCREATELOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETBYTES,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETBYTES,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETLENGTH,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETLENGTH,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETPOSITIONFROMBYTES,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETPOSITIONFROMBYTES,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETPOSITIONFROMLOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETPOSITIONFROMLOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBCREATELOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBCREATELOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETLENGTH,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETLENGTH,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETPOSITIONFROMLOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETPOSITIONFROMLOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETPOSITIONFROMSTRING,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETPOSITIONFROMSTRING,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETSUBSTRING,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETSUBSTRING,xxxxGENERATED-IDxxxx
 getFunctions(null,null,"%GET%"):
 FUNCTION_CAT[VARCHAR],FUNCTION_SCHEM[VARCHAR],FUNCTION_NAME[VARCHAR],REMARKS[VARCHAR],SPECIFIC_NAME[VARCHAR]
 null,SYSCS_UTIL,SYSCS_GET_DATABASE_PROPERTY,org.apache.derby.catalog.SystemProcedures.SYSCS_GET_DATABASE_PROPERTY,xxxxGENERATED-IDxxxx
 null,SYSCS_UTIL,SYSCS_GET_RUNTIMESTATISTICS,org.apache.derby.catalog.SystemProcedures.SYSCS_GET_RUNTIMESTATISTICS,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETBYTES,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETBYTES,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETLENGTH,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETLENGTH,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETPOSITIONFROMBYTES,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETPOSITIONFROMBYTES,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETPOSITIONFROMLOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETPOSITIONFROMLOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETLENGTH,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETLENGTH,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETPOSITIONFROMLOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETPOSITIONFROMLOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETPOSITIONFROMSTRING,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETPOSITIONFROMSTRING,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETSUBSTRING,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETSUBSTRING,xxxxGENERATED-IDxxxx
 getFunctions("","",null):
 FUNCTION_CAT[VARCHAR],FUNCTION_SCHEM[VARCHAR],FUNCTION_NAME[VARCHAR],REMARKS[VARCHAR],SPECIFIC_NAME[VARCHAR]
 getFunctionColumns(null,null,null,null):
@@ -96,6 +134,36 @@
 null,SYSCS_UTIL,SYSCS_GET_DATABASE_PROPERTY,,4,12,VARCHAR,32672,65344,null,null,1,null,65344,0,YES,xxxxGENERATED-IDxxxx,1,-1
 null,SYSCS_UTIL,SYSCS_GET_DATABASE_PROPERTY,KEY,1,12,VARCHAR,128,256,null,null,1,null,256,1,YES,xxxxGENERATED-IDxxxx,1,0
 null,SYSCS_UTIL,SYSCS_GET_RUNTIMESTATISTICS,,4,12,VARCHAR,32672,65344,null,null,1,null,65344,0,YES,xxxxGENERATED-IDxxxx,0,-1
+null,SYSIBM,BLOBCREATELOCATOR,,4,4,INTEGER,0,2147483647,0,10,1,null,null,0,YES,xxxxGENERATED-IDxxxx,0,-1
+null,SYSIBM,BLOBGETBYTES,,4,-3,VARCHAR () FOR BIT DATA,32672,32672,null,null,1,null,32672,0,YES,xxxxGENERATED-IDxxxx,3,-1
+null,SYSIBM,BLOBGETBYTES,LOCATOR,1,4,INTEGER,10,4,0,10,1,null,null,1,YES,xxxxGENERATED-IDxxxx,3,0
+null,SYSIBM,BLOBGETBYTES,POS,1,-5,BIGINT,19,40,0,10,1,null,null,2,YES,xxxxGENERATED-IDxxxx,3,1
+null,SYSIBM,BLOBGETBYTES,LEN,1,4,INTEGER,10,4,0,10,1,null,null,3,YES,xxxxGENERATED-IDxxxx,3,2
+null,SYSIBM,BLOBGETLENGTH,,4,-5,BIGINT,0,40,0,10,1,null,null,0,YES,xxxxGENERATED-IDxxxx,1,-1
+null,SYSIBM,BLOBGETLENGTH,LOCATOR,1,4,INTEGER,10,4,0,10,1,null,null,1,YES,xxxxGENERATED-IDxxxx,1,0
+null,SYSIBM,BLOBGETPOSITIONFROMBYTES,,4,-5,BIGINT,0,40,0,10,1,null,null,0,YES,xxxxGENERATED-IDxxxx,3,-1
+null,SYSIBM,BLOBGETPOSITIONFROMBYTES,LOCATOR,1,4,INTEGER,10,4,0,10,1,null,null,1,YES,xxxxGENERATED-IDxxxx,3,0
+null,SYSIBM,BLOBGETPOSITIONFROMBYTES,SEARCHBYTES,1,-3,VARCHAR () FOR BIT DATA,32672,32672,null,null,1,null,32672,2,YES,xxxxGENERATED-IDxxxx,3,1
+null,SYSIBM,BLOBGETPOSITIONFROMBYTES,POS,1,-5,BIGINT,19,40,0,10,1,null,null,3,YES,xxxxGENERATED-IDxxxx,3,2
+null,SYSIBM,BLOBGETPOSITIONFROMLOCATOR,,4,-5,BIGINT,0,40,0,10,1,null,null,0,YES,xxxxGENERATED-IDxxxx,3,-1
+null,SYSIBM,BLOBGETPOSITIONFROMLOCATOR,LOCATOR,1,4,INTEGER,10,4,0,10,1,null,null,1,YES,xxxxGENERATED-IDxxxx,3,0
+null,SYSIBM,BLOBGETPOSITIONFROMLOCATOR,SEARCHLOCATOR,1,4,INTEGER,10,4,0,10,1,null,null,2,YES,xxxxGENERATED-IDxxxx,3,1
+null,SYSIBM,BLOBGETPOSITIONFROMLOCATOR,POS,1,-5,BIGINT,19,40,0,10,1,null,null,3,YES,xxxxGENERATED-IDxxxx,3,2
+null,SYSIBM,CLOBCREATELOCATOR,,4,4,INTEGER,0,2147483647,0,10,1,null,null,0,YES,xxxxGENERATED-IDxxxx,0,-1
+null,SYSIBM,CLOBGETLENGTH,,4,-5,BIGINT,0,40,0,10,1,null,null,0,YES,xxxxGENERATED-IDxxxx,1,-1
+null,SYSIBM,CLOBGETLENGTH,LOCATOR,1,4,INTEGER,10,4,0,10,1,null,null,1,YES,xxxxGENERATED-IDxxxx,1,0
+null,SYSIBM,CLOBGETPOSITIONFROMLOCATOR,,4,-5,BIGINT,0,40,0,10,1,null,null,0,YES,xxxxGENERATED-IDxxxx,3,-1
+null,SYSIBM,CLOBGETPOSITIONFROMLOCATOR,LOCATOR,1,4,INTEGER,10,4,0,10,1,null,null,1,YES,xxxxGENERATED-IDxxxx,3,0
+null,SYSIBM,CLOBGETPOSITIONFROMLOCATOR,SEARCHLOCATOR,1,4,INTEGER,10,4,0,10,1,null,null,2,YES,xxxxGENERATED-IDxxxx,3,1
+null,SYSIBM,CLOBGETPOSITIONFROMLOCATOR,POS,1,-5,BIGINT,19,40,0,10,1,null,null,3,YES,xxxxGENERATED-IDxxxx,3,2
+null,SYSIBM,CLOBGETPOSITIONFROMSTRING,,4,-5,BIGINT,0,40,0,10,1,null,null,0,YES,xxxxGENERATED-IDxxxx,3,-1
+null,SYSIBM,CLOBGETPOSITIONFROMSTRING,LOCATOR,1,4,INTEGER,10,4,0,10,1,null,null,1,YES,xxxxGENERATED-IDxxxx,3,0
+null,SYSIBM,CLOBGETPOSITIONFROMSTRING,SEARCHSTR,1,12,VARCHAR,32672,65344,null,null,1,null,65344,2,YES,xxxxGENERATED-IDxxxx,3,1
+null,SYSIBM,CLOBGETPOSITIONFROMSTRING,POS,1,-5,BIGINT,19,40,0,10,1,null,null,3,YES,xxxxGENERATED-IDxxxx,3,2
+null,SYSIBM,CLOBGETSUBSTRING,,4,12,VARCHAR,32672,65344,null,null,1,null,65344,0,YES,xxxxGENERATED-IDxxxx,3,-1
+null,SYSIBM,CLOBGETSUBSTRING,LOCATOR,1,4,INTEGER,10,4,0,10,1,null,null,1,YES,xxxxGENERATED-IDxxxx,3,0
+null,SYSIBM,CLOBGETSUBSTRING,POS,1,-5,BIGINT,19,40,0,10,1,null,null,2,YES,xxxxGENERATED-IDxxxx,3,1
+null,SYSIBM,CLOBGETSUBSTRING,LEN,1,4,INTEGER,10,4,0,10,1,null,null,3,YES,xxxxGENERATED-IDxxxx,3,2
 getFunctionColumns(null,"APP","DUMMY%","X"):
 FUNCTION_CAT[VARCHAR],FUNCTION_SCHEM[VARCHAR],FUNCTION_NAME[VARCHAR],COLUMN_NAME[VARCHAR],COLUMN_TYPE[SMALLINT],DATA_TYPE[INTEGER],TYPE_NAME[VARCHAR],PRECISION[INTEGER],LENGTH[INTEGER],SCALE[SMALLINT],RADIX[SMALLINT],NULLABLE[SMALLINT],REMARKS[VARCHAR],CHAR_OCTET_LENGTH[INTEGER],ORDINAL_POSITION[INTEGER],IS_NULLABLE[VARCHAR],SPECIFIC_NAME[VARCHAR],METHOD_ID[SMALLINT],PARAMETER_ID[SMALLINT]
 null,APP,DUMMY1,X,1,5,SMALLINT,5,2,0,10,1,null,null,1,YES,xxxxGENERATED-IDxxxx,1,0

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/odbc_metadata.out
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/odbc_metadata.out?view=diff&rev=515139&r1=515138&r2=515139
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/odbc_metadata.out (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/odbc_metadata.out Tue Mar  6 07:13:34 2007
@@ -87,6 +87,16 @@
 null,SYSCS_UTIL,SYSCS_CHECK_TABLE,org.apache.derby.catalog.SystemProcedures.SYSCS_CHECK_TABLE,xxxxGENERATED-IDxxxx
 null,SYSCS_UTIL,SYSCS_GET_DATABASE_PROPERTY,org.apache.derby.catalog.SystemProcedures.SYSCS_GET_DATABASE_PROPERTY,xxxxGENERATED-IDxxxx
 null,SYSCS_UTIL,SYSCS_GET_RUNTIMESTATISTICS,org.apache.derby.catalog.SystemProcedures.SYSCS_GET_RUNTIMESTATISTICS,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBCREATELOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBCREATELOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETBYTES,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETBYTES,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETLENGTH,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETLENGTH,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETPOSITIONFROMBYTES,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETPOSITIONFROMBYTES,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETPOSITIONFROMLOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETPOSITIONFROMLOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBCREATELOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBCREATELOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETLENGTH,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETLENGTH,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETPOSITIONFROMLOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETPOSITIONFROMLOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETPOSITIONFROMSTRING,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETPOSITIONFROMSTRING,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETSUBSTRING,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETSUBSTRING,xxxxGENERATED-IDxxxx
 getFunctions("Dummy Catalog",null,null):
 FUNCTION_CAT[VARCHAR],FUNCTION_SCHEM[VARCHAR],FUNCTION_NAME[VARCHAR],REMARKS[VARCHAR],SPECIFIC_NAME[VARCHAR]
 null,APP,DUMMY1,java.some.func,xxxxGENERATED-IDxxxx
@@ -96,15 +106,43 @@
 null,SYSCS_UTIL,SYSCS_CHECK_TABLE,org.apache.derby.catalog.SystemProcedures.SYSCS_CHECK_TABLE,xxxxGENERATED-IDxxxx
 null,SYSCS_UTIL,SYSCS_GET_DATABASE_PROPERTY,org.apache.derby.catalog.SystemProcedures.SYSCS_GET_DATABASE_PROPERTY,xxxxGENERATED-IDxxxx
 null,SYSCS_UTIL,SYSCS_GET_RUNTIMESTATISTICS,org.apache.derby.catalog.SystemProcedures.SYSCS_GET_RUNTIMESTATISTICS,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBCREATELOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBCREATELOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETBYTES,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETBYTES,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETLENGTH,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETLENGTH,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETPOSITIONFROMBYTES,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETPOSITIONFROMBYTES,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETPOSITIONFROMLOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETPOSITIONFROMLOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBCREATELOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBCREATELOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETLENGTH,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETLENGTH,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETPOSITIONFROMLOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETPOSITIONFROMLOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETPOSITIONFROMSTRING,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETPOSITIONFROMSTRING,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETSUBSTRING,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETSUBSTRING,xxxxGENERATED-IDxxxx
 getFunctions(null,"%SYS%",null):
 FUNCTION_CAT[VARCHAR],FUNCTION_SCHEM[VARCHAR],FUNCTION_NAME[VARCHAR],REMARKS[VARCHAR],SPECIFIC_NAME[VARCHAR]
 null,SYSCS_UTIL,SYSCS_CHECK_TABLE,org.apache.derby.catalog.SystemProcedures.SYSCS_CHECK_TABLE,xxxxGENERATED-IDxxxx
 null,SYSCS_UTIL,SYSCS_GET_DATABASE_PROPERTY,org.apache.derby.catalog.SystemProcedures.SYSCS_GET_DATABASE_PROPERTY,xxxxGENERATED-IDxxxx
 null,SYSCS_UTIL,SYSCS_GET_RUNTIMESTATISTICS,org.apache.derby.catalog.SystemProcedures.SYSCS_GET_RUNTIMESTATISTICS,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBCREATELOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBCREATELOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETBYTES,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETBYTES,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETLENGTH,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETLENGTH,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETPOSITIONFROMBYTES,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETPOSITIONFROMBYTES,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETPOSITIONFROMLOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETPOSITIONFROMLOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBCREATELOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBCREATELOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETLENGTH,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETLENGTH,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETPOSITIONFROMLOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETPOSITIONFROMLOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETPOSITIONFROMSTRING,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETPOSITIONFROMSTRING,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETSUBSTRING,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETSUBSTRING,xxxxGENERATED-IDxxxx
 getFunctions(null,null,"%GET%"):
 FUNCTION_CAT[VARCHAR],FUNCTION_SCHEM[VARCHAR],FUNCTION_NAME[VARCHAR],REMARKS[VARCHAR],SPECIFIC_NAME[VARCHAR]
 null,SYSCS_UTIL,SYSCS_GET_DATABASE_PROPERTY,org.apache.derby.catalog.SystemProcedures.SYSCS_GET_DATABASE_PROPERTY,xxxxGENERATED-IDxxxx
 null,SYSCS_UTIL,SYSCS_GET_RUNTIMESTATISTICS,org.apache.derby.catalog.SystemProcedures.SYSCS_GET_RUNTIMESTATISTICS,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETBYTES,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETBYTES,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETLENGTH,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETLENGTH,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETPOSITIONFROMBYTES,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETPOSITIONFROMBYTES,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETPOSITIONFROMLOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETPOSITIONFROMLOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETLENGTH,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETLENGTH,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETPOSITIONFROMLOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETPOSITIONFROMLOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETPOSITIONFROMSTRING,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETPOSITIONFROMSTRING,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETSUBSTRING,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETSUBSTRING,xxxxGENERATED-IDxxxx
 getFunctions("","",null):
 FUNCTION_CAT[VARCHAR],FUNCTION_SCHEM[VARCHAR],FUNCTION_NAME[VARCHAR],REMARKS[VARCHAR],SPECIFIC_NAME[VARCHAR]
 getFunctionColumns(null,null,null,null):
@@ -126,6 +164,36 @@
 null,SYSCS_UTIL,SYSCS_GET_DATABASE_PROPERTY,,4,12,VARCHAR,32672,65344,null,null,1,null,65344,0,YES,xxxxGENERATED-IDxxxx,1,-1
 null,SYSCS_UTIL,SYSCS_GET_DATABASE_PROPERTY,KEY,1,12,VARCHAR,128,256,null,null,1,null,256,1,YES,xxxxGENERATED-IDxxxx,1,0
 null,SYSCS_UTIL,SYSCS_GET_RUNTIMESTATISTICS,,4,12,VARCHAR,32672,65344,null,null,1,null,65344,0,YES,xxxxGENERATED-IDxxxx,0,-1
+null,SYSIBM,BLOBCREATELOCATOR,,4,4,INTEGER,0,2147483647,0,10,1,null,null,0,YES,xxxxGENERATED-IDxxxx,0,-1
+null,SYSIBM,BLOBGETBYTES,,4,-3,VARCHAR () FOR BIT DATA,32672,32672,null,null,1,null,32672,0,YES,xxxxGENERATED-IDxxxx,3,-1
+null,SYSIBM,BLOBGETBYTES,LOCATOR,1,4,INTEGER,10,4,0,10,1,null,null,1,YES,xxxxGENERATED-IDxxxx,3,0
+null,SYSIBM,BLOBGETBYTES,POS,1,-5,BIGINT,19,40,0,10,1,null,null,2,YES,xxxxGENERATED-IDxxxx,3,1
+null,SYSIBM,BLOBGETBYTES,LEN,1,4,INTEGER,10,4,0,10,1,null,null,3,YES,xxxxGENERATED-IDxxxx,3,2
+null,SYSIBM,BLOBGETLENGTH,,4,-5,BIGINT,0,40,0,10,1,null,null,0,YES,xxxxGENERATED-IDxxxx,1,-1
+null,SYSIBM,BLOBGETLENGTH,LOCATOR,1,4,INTEGER,10,4,0,10,1,null,null,1,YES,xxxxGENERATED-IDxxxx,1,0
+null,SYSIBM,BLOBGETPOSITIONFROMBYTES,,4,-5,BIGINT,0,40,0,10,1,null,null,0,YES,xxxxGENERATED-IDxxxx,3,-1
+null,SYSIBM,BLOBGETPOSITIONFROMBYTES,LOCATOR,1,4,INTEGER,10,4,0,10,1,null,null,1,YES,xxxxGENERATED-IDxxxx,3,0
+null,SYSIBM,BLOBGETPOSITIONFROMBYTES,SEARCHBYTES,1,-3,VARCHAR () FOR BIT DATA,32672,32672,null,null,1,null,32672,2,YES,xxxxGENERATED-IDxxxx,3,1
+null,SYSIBM,BLOBGETPOSITIONFROMBYTES,POS,1,-5,BIGINT,19,40,0,10,1,null,null,3,YES,xxxxGENERATED-IDxxxx,3,2
+null,SYSIBM,BLOBGETPOSITIONFROMLOCATOR,,4,-5,BIGINT,0,40,0,10,1,null,null,0,YES,xxxxGENERATED-IDxxxx,3,-1
+null,SYSIBM,BLOBGETPOSITIONFROMLOCATOR,LOCATOR,1,4,INTEGER,10,4,0,10,1,null,null,1,YES,xxxxGENERATED-IDxxxx,3,0
+null,SYSIBM,BLOBGETPOSITIONFROMLOCATOR,SEARCHLOCATOR,1,4,INTEGER,10,4,0,10,1,null,null,2,YES,xxxxGENERATED-IDxxxx,3,1
+null,SYSIBM,BLOBGETPOSITIONFROMLOCATOR,POS,1,-5,BIGINT,19,40,0,10,1,null,null,3,YES,xxxxGENERATED-IDxxxx,3,2
+null,SYSIBM,CLOBCREATELOCATOR,,4,4,INTEGER,0,2147483647,0,10,1,null,null,0,YES,xxxxGENERATED-IDxxxx,0,-1
+null,SYSIBM,CLOBGETLENGTH,,4,-5,BIGINT,0,40,0,10,1,null,null,0,YES,xxxxGENERATED-IDxxxx,1,-1
+null,SYSIBM,CLOBGETLENGTH,LOCATOR,1,4,INTEGER,10,4,0,10,1,null,null,1,YES,xxxxGENERATED-IDxxxx,1,0
+null,SYSIBM,CLOBGETPOSITIONFROMLOCATOR,,4,-5,BIGINT,0,40,0,10,1,null,null,0,YES,xxxxGENERATED-IDxxxx,3,-1
+null,SYSIBM,CLOBGETPOSITIONFROMLOCATOR,LOCATOR,1,4,INTEGER,10,4,0,10,1,null,null,1,YES,xxxxGENERATED-IDxxxx,3,0
+null,SYSIBM,CLOBGETPOSITIONFROMLOCATOR,SEARCHLOCATOR,1,4,INTEGER,10,4,0,10,1,null,null,2,YES,xxxxGENERATED-IDxxxx,3,1
+null,SYSIBM,CLOBGETPOSITIONFROMLOCATOR,POS,1,-5,BIGINT,19,40,0,10,1,null,null,3,YES,xxxxGENERATED-IDxxxx,3,2
+null,SYSIBM,CLOBGETPOSITIONFROMSTRING,,4,-5,BIGINT,0,40,0,10,1,null,null,0,YES,xxxxGENERATED-IDxxxx,3,-1
+null,SYSIBM,CLOBGETPOSITIONFROMSTRING,LOCATOR,1,4,INTEGER,10,4,0,10,1,null,null,1,YES,xxxxGENERATED-IDxxxx,3,0
+null,SYSIBM,CLOBGETPOSITIONFROMSTRING,SEARCHSTR,1,12,VARCHAR,32672,65344,null,null,1,null,65344,2,YES,xxxxGENERATED-IDxxxx,3,1
+null,SYSIBM,CLOBGETPOSITIONFROMSTRING,POS,1,-5,BIGINT,19,40,0,10,1,null,null,3,YES,xxxxGENERATED-IDxxxx,3,2
+null,SYSIBM,CLOBGETSUBSTRING,,4,12,VARCHAR,32672,65344,null,null,1,null,65344,0,YES,xxxxGENERATED-IDxxxx,3,-1
+null,SYSIBM,CLOBGETSUBSTRING,LOCATOR,1,4,INTEGER,10,4,0,10,1,null,null,1,YES,xxxxGENERATED-IDxxxx,3,0
+null,SYSIBM,CLOBGETSUBSTRING,POS,1,-5,BIGINT,19,40,0,10,1,null,null,2,YES,xxxxGENERATED-IDxxxx,3,1
+null,SYSIBM,CLOBGETSUBSTRING,LEN,1,4,INTEGER,10,4,0,10,1,null,null,3,YES,xxxxGENERATED-IDxxxx,3,2
 getFunctionColumns(null,"APP","DUMMY%","X"):
 FUNCTION_CAT[VARCHAR],FUNCTION_SCHEM[VARCHAR],FUNCTION_NAME[VARCHAR],COLUMN_NAME[VARCHAR],COLUMN_TYPE[SMALLINT],DATA_TYPE[INTEGER],TYPE_NAME[VARCHAR],PRECISION[INTEGER],LENGTH[INTEGER],SCALE[SMALLINT],RADIX[SMALLINT],NULLABLE[SMALLINT],REMARKS[VARCHAR],CHAR_OCTET_LENGTH[INTEGER],ORDINAL_POSITION[INTEGER],IS_NULLABLE[VARCHAR],SPECIFIC_NAME[VARCHAR],METHOD_ID[SMALLINT],PARAMETER_ID[SMALLINT]
 null,APP,DUMMY1,X,1,5,SMALLINT,5,2,0,10,1,null,null,1,YES,xxxxGENERATED-IDxxxx,1,0

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/metadata.out
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/metadata.out?view=diff&rev=515139&r1=515138&r2=515139
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/metadata.out (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/metadata.out Tue Mar  6 07:13:34 2007
@@ -57,6 +57,16 @@
 null,SYSCS_UTIL,SYSCS_CHECK_TABLE,org.apache.derby.catalog.SystemProcedures.SYSCS_CHECK_TABLE,xxxxGENERATED-IDxxxx
 null,SYSCS_UTIL,SYSCS_GET_DATABASE_PROPERTY,org.apache.derby.catalog.SystemProcedures.SYSCS_GET_DATABASE_PROPERTY,xxxxGENERATED-IDxxxx
 null,SYSCS_UTIL,SYSCS_GET_RUNTIMESTATISTICS,org.apache.derby.catalog.SystemProcedures.SYSCS_GET_RUNTIMESTATISTICS,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBCREATELOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBCREATELOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETBYTES,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETBYTES,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETLENGTH,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETLENGTH,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETPOSITIONFROMBYTES,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETPOSITIONFROMBYTES,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETPOSITIONFROMLOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETPOSITIONFROMLOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBCREATELOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBCREATELOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETLENGTH,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETLENGTH,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETPOSITIONFROMLOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETPOSITIONFROMLOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETPOSITIONFROMSTRING,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETPOSITIONFROMSTRING,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETSUBSTRING,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETSUBSTRING,xxxxGENERATED-IDxxxx
 getFunctions("Dummy Catalog",null,null):
 FUNCTION_CAT[VARCHAR],FUNCTION_SCHEM[VARCHAR],FUNCTION_NAME[VARCHAR],REMARKS[VARCHAR],SPECIFIC_NAME[VARCHAR]
 null,APP,DUMMY1,java.some.func,xxxxGENERATED-IDxxxx
@@ -66,15 +76,43 @@
 null,SYSCS_UTIL,SYSCS_CHECK_TABLE,org.apache.derby.catalog.SystemProcedures.SYSCS_CHECK_TABLE,xxxxGENERATED-IDxxxx
 null,SYSCS_UTIL,SYSCS_GET_DATABASE_PROPERTY,org.apache.derby.catalog.SystemProcedures.SYSCS_GET_DATABASE_PROPERTY,xxxxGENERATED-IDxxxx
 null,SYSCS_UTIL,SYSCS_GET_RUNTIMESTATISTICS,org.apache.derby.catalog.SystemProcedures.SYSCS_GET_RUNTIMESTATISTICS,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBCREATELOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBCREATELOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETBYTES,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETBYTES,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETLENGTH,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETLENGTH,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETPOSITIONFROMBYTES,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETPOSITIONFROMBYTES,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETPOSITIONFROMLOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETPOSITIONFROMLOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBCREATELOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBCREATELOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETLENGTH,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETLENGTH,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETPOSITIONFROMLOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETPOSITIONFROMLOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETPOSITIONFROMSTRING,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETPOSITIONFROMSTRING,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETSUBSTRING,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETSUBSTRING,xxxxGENERATED-IDxxxx
 getFunctions(null,"%SYS%",null):
 FUNCTION_CAT[VARCHAR],FUNCTION_SCHEM[VARCHAR],FUNCTION_NAME[VARCHAR],REMARKS[VARCHAR],SPECIFIC_NAME[VARCHAR]
 null,SYSCS_UTIL,SYSCS_CHECK_TABLE,org.apache.derby.catalog.SystemProcedures.SYSCS_CHECK_TABLE,xxxxGENERATED-IDxxxx
 null,SYSCS_UTIL,SYSCS_GET_DATABASE_PROPERTY,org.apache.derby.catalog.SystemProcedures.SYSCS_GET_DATABASE_PROPERTY,xxxxGENERATED-IDxxxx
 null,SYSCS_UTIL,SYSCS_GET_RUNTIMESTATISTICS,org.apache.derby.catalog.SystemProcedures.SYSCS_GET_RUNTIMESTATISTICS,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBCREATELOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBCREATELOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETBYTES,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETBYTES,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETLENGTH,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETLENGTH,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETPOSITIONFROMBYTES,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETPOSITIONFROMBYTES,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETPOSITIONFROMLOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETPOSITIONFROMLOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBCREATELOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBCREATELOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETLENGTH,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETLENGTH,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETPOSITIONFROMLOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETPOSITIONFROMLOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETPOSITIONFROMSTRING,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETPOSITIONFROMSTRING,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETSUBSTRING,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETSUBSTRING,xxxxGENERATED-IDxxxx
 getFunctions(null,null,"%GET%"):
 FUNCTION_CAT[VARCHAR],FUNCTION_SCHEM[VARCHAR],FUNCTION_NAME[VARCHAR],REMARKS[VARCHAR],SPECIFIC_NAME[VARCHAR]
 null,SYSCS_UTIL,SYSCS_GET_DATABASE_PROPERTY,org.apache.derby.catalog.SystemProcedures.SYSCS_GET_DATABASE_PROPERTY,xxxxGENERATED-IDxxxx
 null,SYSCS_UTIL,SYSCS_GET_RUNTIMESTATISTICS,org.apache.derby.catalog.SystemProcedures.SYSCS_GET_RUNTIMESTATISTICS,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETBYTES,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETBYTES,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETLENGTH,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETLENGTH,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETPOSITIONFROMBYTES,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETPOSITIONFROMBYTES,xxxxGENERATED-IDxxxx
+null,SYSIBM,BLOBGETPOSITIONFROMLOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.BLOBGETPOSITIONFROMLOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETLENGTH,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETLENGTH,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETPOSITIONFROMLOCATOR,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETPOSITIONFROMLOCATOR,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETPOSITIONFROMSTRING,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETPOSITIONFROMSTRING,xxxxGENERATED-IDxxxx
+null,SYSIBM,CLOBGETSUBSTRING,org.apache.derby.impl.jdbc.LOBStoredProcedure.CLOBGETSUBSTRING,xxxxGENERATED-IDxxxx
 getFunctions("","",null):
 FUNCTION_CAT[VARCHAR],FUNCTION_SCHEM[VARCHAR],FUNCTION_NAME[VARCHAR],REMARKS[VARCHAR],SPECIFIC_NAME[VARCHAR]
 getFunctionColumns(null,null,null,null):
@@ -96,6 +134,36 @@
 null,SYSCS_UTIL,SYSCS_GET_DATABASE_PROPERTY,,4,12,VARCHAR,32672,65344,null,null,1,null,65344,0,YES,xxxxGENERATED-IDxxxx,1,-1
 null,SYSCS_UTIL,SYSCS_GET_DATABASE_PROPERTY,KEY,1,12,VARCHAR,128,256,null,null,1,null,256,1,YES,xxxxGENERATED-IDxxxx,1,0
 null,SYSCS_UTIL,SYSCS_GET_RUNTIMESTATISTICS,,4,12,VARCHAR,32672,65344,null,null,1,null,65344,0,YES,xxxxGENERATED-IDxxxx,0,-1
+null,SYSIBM,BLOBCREATELOCATOR,,4,4,INTEGER,0,2147483647,0,10,1,null,null,0,YES,xxxxGENERATED-IDxxxx,0,-1
+null,SYSIBM,BLOBGETBYTES,,4,-3,VARCHAR () FOR BIT DATA,32672,32672,null,null,1,null,32672,0,YES,xxxxGENERATED-IDxxxx,3,-1
+null,SYSIBM,BLOBGETBYTES,LOCATOR,1,4,INTEGER,10,4,0,10,1,null,null,1,YES,xxxxGENERATED-IDxxxx,3,0
+null,SYSIBM,BLOBGETBYTES,POS,1,-5,BIGINT,19,40,0,10,1,null,null,2,YES,xxxxGENERATED-IDxxxx,3,1
+null,SYSIBM,BLOBGETBYTES,LEN,1,4,INTEGER,10,4,0,10,1,null,null,3,YES,xxxxGENERATED-IDxxxx,3,2
+null,SYSIBM,BLOBGETLENGTH,,4,-5,BIGINT,0,40,0,10,1,null,null,0,YES,xxxxGENERATED-IDxxxx,1,-1
+null,SYSIBM,BLOBGETLENGTH,LOCATOR,1,4,INTEGER,10,4,0,10,1,null,null,1,YES,xxxxGENERATED-IDxxxx,1,0
+null,SYSIBM,BLOBGETPOSITIONFROMBYTES,,4,-5,BIGINT,0,40,0,10,1,null,null,0,YES,xxxxGENERATED-IDxxxx,3,-1
+null,SYSIBM,BLOBGETPOSITIONFROMBYTES,LOCATOR,1,4,INTEGER,10,4,0,10,1,null,null,1,YES,xxxxGENERATED-IDxxxx,3,0
+null,SYSIBM,BLOBGETPOSITIONFROMBYTES,SEARCHBYTES,1,-3,VARCHAR () FOR BIT DATA,32672,32672,null,null,1,null,32672,2,YES,xxxxGENERATED-IDxxxx,3,1
+null,SYSIBM,BLOBGETPOSITIONFROMBYTES,POS,1,-5,BIGINT,19,40,0,10,1,null,null,3,YES,xxxxGENERATED-IDxxxx,3,2
+null,SYSIBM,BLOBGETPOSITIONFROMLOCATOR,,4,-5,BIGINT,0,40,0,10,1,null,null,0,YES,xxxxGENERATED-IDxxxx,3,-1
+null,SYSIBM,BLOBGETPOSITIONFROMLOCATOR,LOCATOR,1,4,INTEGER,10,4,0,10,1,null,null,1,YES,xxxxGENERATED-IDxxxx,3,0
+null,SYSIBM,BLOBGETPOSITIONFROMLOCATOR,SEARCHLOCATOR,1,4,INTEGER,10,4,0,10,1,null,null,2,YES,xxxxGENERATED-IDxxxx,3,1
+null,SYSIBM,BLOBGETPOSITIONFROMLOCATOR,POS,1,-5,BIGINT,19,40,0,10,1,null,null,3,YES,xxxxGENERATED-IDxxxx,3,2
+null,SYSIBM,CLOBCREATELOCATOR,,4,4,INTEGER,0,2147483647,0,10,1,null,null,0,YES,xxxxGENERATED-IDxxxx,0,-1
+null,SYSIBM,CLOBGETLENGTH,,4,-5,BIGINT,0,40,0,10,1,null,null,0,YES,xxxxGENERATED-IDxxxx,1,-1
+null,SYSIBM,CLOBGETLENGTH,LOCATOR,1,4,INTEGER,10,4,0,10,1,null,null,1,YES,xxxxGENERATED-IDxxxx,1,0
+null,SYSIBM,CLOBGETPOSITIONFROMLOCATOR,,4,-5,BIGINT,0,40,0,10,1,null,null,0,YES,xxxxGENERATED-IDxxxx,3,-1
+null,SYSIBM,CLOBGETPOSITIONFROMLOCATOR,LOCATOR,1,4,INTEGER,10,4,0,10,1,null,null,1,YES,xxxxGENERATED-IDxxxx,3,0
+null,SYSIBM,CLOBGETPOSITIONFROMLOCATOR,SEARCHLOCATOR,1,4,INTEGER,10,4,0,10,1,null,null,2,YES,xxxxGENERATED-IDxxxx,3,1
+null,SYSIBM,CLOBGETPOSITIONFROMLOCATOR,POS,1,-5,BIGINT,19,40,0,10,1,null,null,3,YES,xxxxGENERATED-IDxxxx,3,2
+null,SYSIBM,CLOBGETPOSITIONFROMSTRING,,4,-5,BIGINT,0,40,0,10,1,null,null,0,YES,xxxxGENERATED-IDxxxx,3,-1
+null,SYSIBM,CLOBGETPOSITIONFROMSTRING,LOCATOR,1,4,INTEGER,10,4,0,10,1,null,null,1,YES,xxxxGENERATED-IDxxxx,3,0
+null,SYSIBM,CLOBGETPOSITIONFROMSTRING,SEARCHSTR,1,12,VARCHAR,32672,65344,null,null,1,null,65344,2,YES,xxxxGENERATED-IDxxxx,3,1
+null,SYSIBM,CLOBGETPOSITIONFROMSTRING,POS,1,-5,BIGINT,19,40,0,10,1,null,null,3,YES,xxxxGENERATED-IDxxxx,3,2
+null,SYSIBM,CLOBGETSUBSTRING,,4,12,VARCHAR,32672,65344,null,null,1,null,65344,0,YES,xxxxGENERATED-IDxxxx,3,-1
+null,SYSIBM,CLOBGETSUBSTRING,LOCATOR,1,4,INTEGER,10,4,0,10,1,null,null,1,YES,xxxxGENERATED-IDxxxx,3,0
+null,SYSIBM,CLOBGETSUBSTRING,POS,1,-5,BIGINT,19,40,0,10,1,null,null,2,YES,xxxxGENERATED-IDxxxx,3,1
+null,SYSIBM,CLOBGETSUBSTRING,LEN,1,4,INTEGER,10,4,0,10,1,null,null,3,YES,xxxxGENERATED-IDxxxx,3,2
 getFunctionColumns(null,"APP","DUMMY%","X"):
 FUNCTION_CAT[VARCHAR],FUNCTION_SCHEM[VARCHAR],FUNCTION_NAME[VARCHAR],COLUMN_NAME[VARCHAR],COLUMN_TYPE[SMALLINT],DATA_TYPE[INTEGER],TYPE_NAME[VARCHAR],PRECISION[INTEGER],LENGTH[INTEGER],SCALE[SMALLINT],RADIX[SMALLINT],NULLABLE[SMALLINT],REMARKS[VARCHAR],CHAR_OCTET_LENGTH[INTEGER],ORDINAL_POSITION[INTEGER],IS_NULLABLE[VARCHAR],SPECIFIC_NAME[VARCHAR],METHOD_ID[SMALLINT],PARAMETER_ID[SMALLINT]
 null,APP,DUMMY1,X,1,5,SMALLINT,5,2,0,10,1,null,null,1,YES,xxxxGENERATED-IDxxxx,1,0