Author: tomdz
Date: Sat Feb 25 12:16:50 2006
New Revision: 380979

URL: http://svn.apache.org/viewcvs?rev=380979&view=rev
Log:
Fixed/enhanced Sybase (ASE) implementation

Modified:
    
db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/PlatformImplBase.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/SqlBuilder.java
    
db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseBuilder.java
    
db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybasePlatform.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/util/JdbcSupport.java

Modified: 
db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/PlatformImplBase.java
URL: 
http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/PlatformImplBase.java?rev=380979&r1=380978&r2=380979&view=diff
==============================================================================
--- 
db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/PlatformImplBase.java 
(original)
+++ 
db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/PlatformImplBase.java 
Sat Feb 25 12:16:50 2006
@@ -854,7 +854,7 @@
         finally 
         {
             // the iterator should return the connection automatically
-            // so this is usuallynot necessary (but just in case)
+            // so this is usually not necessary (but just in case)
             closeStatement(statement);
             returnConnection(connection);
         }
@@ -1655,7 +1655,23 @@
         int     typeCode = property.getColumn().getTypeCode();
         Object  value    = dynaBean.get(property.getName());
 
-        if (value == null)
+        setStatementParameterValue(statement, sqlIndex, typeCode, value);
+    }
+
+       /**
+        * This is the core method to set the parameter of a prepared statement 
to a given value.
+        * The primary purpose of this method is to call the appropriate method 
on the statement,
+        * and to give database-specific implementations the ability to change 
this behavior.
+        * 
+        * @param statement The statement
+        * @param sqlIndex  The parameter index
+        * @param typeCode  The JDBC type code
+        * @param value     The value
+        * @throws SQLException If an error occurred while setting the 
parameter value
+        */
+       protected void setStatementParameterValue(PreparedStatement statement, 
int sqlIndex, int typeCode, Object value) throws SQLException
+       {
+               if (value == null)
         {
             statement.setNull(sqlIndex, typeCode);
         }
@@ -1704,7 +1720,7 @@
         {
             statement.setObject(sqlIndex, value, typeCode);
         }
-    }
+       }
 
     /**
      * Helper method esp. for the [EMAIL PROTECTED] 
ModelBasedResultSetIterator} class that retrieves
@@ -1742,92 +1758,7 @@
                 // we should not use the Clob interface if the database 
doesn't map to this type 
                 jdbcType = targetJdbcType;
             }
-            switch (jdbcType)
-            {
-                case Types.CHAR:
-                case Types.VARCHAR:
-                case Types.LONGVARCHAR:
-                    value = resultSet.getString(columnName);
-                    break;
-                case Types.NUMERIC:
-                case Types.DECIMAL:
-                    value = resultSet.getBigDecimal(columnName);
-                    break;
-                case Types.BIT:
-                    value = new Boolean(resultSet.getBoolean(columnName));
-                    break;
-                case Types.TINYINT:
-                case Types.SMALLINT:
-                case Types.INTEGER:
-                    value = new Integer(resultSet.getInt(columnName));
-                    break;
-                case Types.BIGINT:
-                    value = new Long(resultSet.getLong(columnName));
-                    break;
-                case Types.REAL:
-                    value = new Float(resultSet.getFloat(columnName));
-                    break;
-                case Types.FLOAT:
-                case Types.DOUBLE:
-                    value = new Double(resultSet.getDouble(columnName));
-                    break;
-                case Types.BINARY:
-                case Types.VARBINARY:
-                case Types.LONGVARBINARY:
-                    value = resultSet.getBytes(columnName);
-                    break;
-                case Types.DATE:
-                    value = resultSet.getDate(columnName);
-                    break;
-                case Types.TIME:
-                    value = resultSet.getTime(columnName);
-                    break;
-                case Types.TIMESTAMP:
-                    value = resultSet.getTimestamp(columnName);
-                    break;
-                case Types.CLOB:
-                    Clob clob = resultSet.getClob(columnName);
-
-                    if ((clob == null) || (clob.length() > Integer.MAX_VALUE))
-                    {
-                        value = clob;
-                    }
-                    else
-                    {
-                        value = clob.getSubString(1l, (int)clob.length());
-                    }
-                    break;
-                case Types.BLOB:
-                    Blob blob = resultSet.getBlob(columnName);
-
-                    if ((blob == null) || (blob.length() > Integer.MAX_VALUE))
-                    {
-                        value = blob;
-                    }
-                    else
-                    {
-                        value = blob.getBytes(1l, (int)blob.length());
-                    }
-                    break;
-                case Types.ARRAY:
-                    value = resultSet.getArray(columnName);
-                    break;
-                case Types.REF:
-                    value = resultSet.getRef(columnName);
-                    break;
-                default:
-                    // special handling for Java 1.4/JDBC 3 types
-                    if (Jdbc3Utils.supportsJava14JdbcTypes() &&
-                        (jdbcType == Jdbc3Utils.determineBooleanTypeCode()))
-                    {
-                        value = new Boolean(resultSet.getBoolean(columnName));
-                    }
-                    else
-                    {
-                        value = resultSet.getObject(columnName);
-                    }
-                    break;
-            }
+            value = extractColumnValue(resultSet, columnName, jdbcType);
         }
         else
         {
@@ -1835,6 +1766,110 @@
         }
         return value;
     }
+
+       /**
+        * This is the core method to retrieve a value for a column from a 
result set. Its  primary
+        * purpose is to call the appropriate method on the result set, and to 
provide an extension
+        * point where database-specific implementations can change this 
behavior.
+        * 
+        * @param resultSet  The result set to extract the value from
+        * @param columnName The name of the column
+        * @param jdbcType   The jdbc type to extract
+        * @return The value
+        * @throws SQLException If an error occurred while accessing the result 
set
+        */
+       protected Object extractColumnValue(ResultSet resultSet, String 
columnName, int jdbcType) throws SQLException
+       {
+               Object value;
+
+               switch (jdbcType)
+               {
+                   case Types.CHAR:
+                   case Types.VARCHAR:
+                   case Types.LONGVARCHAR:
+                       value = resultSet.getString(columnName);
+                       break;
+                   case Types.NUMERIC:
+                   case Types.DECIMAL:
+                       value = resultSet.getBigDecimal(columnName);
+                       break;
+                   case Types.BIT:
+                       value = new Boolean(resultSet.getBoolean(columnName));
+                       break;
+                   case Types.TINYINT:
+                   case Types.SMALLINT:
+                   case Types.INTEGER:
+                       value = new Integer(resultSet.getInt(columnName));
+                       break;
+                   case Types.BIGINT:
+                       value = new Long(resultSet.getLong(columnName));
+                       break;
+                   case Types.REAL:
+                       value = new Float(resultSet.getFloat(columnName));
+                       break;
+                   case Types.FLOAT:
+                   case Types.DOUBLE:
+                       value = new Double(resultSet.getDouble(columnName));
+                       break;
+                   case Types.BINARY:
+                   case Types.VARBINARY:
+                   case Types.LONGVARBINARY:
+                       value = resultSet.getBytes(columnName);
+                       break;
+                   case Types.DATE:
+                       value = resultSet.getDate(columnName);
+                       break;
+                   case Types.TIME:
+                       value = resultSet.getTime(columnName);
+                       break;
+                   case Types.TIMESTAMP:
+                       value = resultSet.getTimestamp(columnName);
+                       break;
+                   case Types.CLOB:
+                       Clob clob = resultSet.getClob(columnName);
+
+                       if ((clob == null) || (clob.length() > 
Integer.MAX_VALUE))
+                       {
+                           value = clob;
+                       }
+                       else
+                       {
+                           value = clob.getSubString(1l, (int)clob.length());
+                       }
+                       break;
+                   case Types.BLOB:
+                       Blob blob = resultSet.getBlob(columnName);
+
+                       if ((blob == null) || (blob.length() > 
Integer.MAX_VALUE))
+                       {
+                           value = blob;
+                       }
+                       else
+                       {
+                           value = blob.getBytes(1l, (int)blob.length());
+                       }
+                       break;
+                   case Types.ARRAY:
+                       value = resultSet.getArray(columnName);
+                       break;
+                   case Types.REF:
+                       value = resultSet.getRef(columnName);
+                       break;
+                   default:
+                       // special handling for Java 1.4/JDBC 3 types
+                       if (Jdbc3Utils.supportsJava14JdbcTypes() &&
+                           (jdbcType == Jdbc3Utils.determineBooleanTypeCode()))
+                       {
+                           value = new 
Boolean(resultSet.getBoolean(columnName));
+                       }
+                       else
+                       {
+                           value = resultSet.getObject(columnName);
+                       }
+                       break;
+               }
+               return value;
+       }
 
     
     /**

Modified: 
db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/SqlBuilder.java
URL: 
http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/SqlBuilder.java?rev=380979&r1=380978&r2=380979&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/SqlBuilder.java 
(original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/SqlBuilder.java Sat 
Feb 25 12:16:50 2006
@@ -1121,7 +1121,7 @@
         return shortenName(column.getName(), 
getPlatformInfo().getMaxIdentifierLength());
     }
 
-    /** 
+    /**
      * Outputs the DDL for the specified column.
      * 
      * @param table  The table containing the column
@@ -1301,7 +1301,12 @@
         }
         else
         {
-            print(getNativeDefaultValue(column).toString());
+               Object nativeDefault = getNativeDefaultValue(column);
+
+               if (nativeDefault != null)
+               {
+                       print(nativeDefault.toString());
+               }
         }
     }
 

Modified: 
db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseBuilder.java
URL: 
http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseBuilder.java?rev=380979&r1=380978&r2=380979&view=diff
==============================================================================
--- 
db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseBuilder.java
 (original)
+++ 
db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseBuilder.java
 Sat Feb 25 12:16:50 2006
@@ -17,13 +17,19 @@
  */
 
 import java.io.IOException;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.sql.Types;
 import java.util.Map;
 
+import org.apache.ddlutils.DynaSqlException;
 import org.apache.ddlutils.PlatformInfo;
+import org.apache.ddlutils.model.Column;
 import org.apache.ddlutils.model.Database;
 import org.apache.ddlutils.model.ForeignKey;
 import org.apache.ddlutils.model.Table;
 import org.apache.ddlutils.platform.SqlBuilder;
+import org.apache.ddlutils.util.Jdbc3Utils;
 
 /**
  * The SQL Builder for Sybase.
@@ -54,13 +60,77 @@
         super.createTable(database, table, parameters);
     }
 
-    /**
+       /**
+        * [EMAIL PROTECTED]
+        */
+       protected void writeColumn(Table table, Column column) throws 
IOException
+       {
+        printIdentifier(getColumnName(column));
+        print(" ");
+        print(getSqlType(column));
+
+        if (column.getDefaultValue() != null)
+        {
+            if (!getPlatformInfo().isSupportingDefaultValuesForLongTypes() && 
+                ((column.getTypeCode() == Types.LONGVARBINARY) || 
(column.getTypeCode() == Types.LONGVARCHAR)))
+            {
+                throw new DynaSqlException("The platform does not support 
default values for LONGVARCHAR or LONGVARBINARY columns");
+            }
+            print(" DEFAULT ");
+            writeColumnDefaultValue(table, column);
+        }
+        // Sybase does not like NOT NULL and IDENTITY together
+        if (column.isRequired() && !column.isAutoIncrement())
+        {
+            print(" ");
+            writeColumnNotNullableStmt();
+        }
+        if (column.isAutoIncrement())
+        {
+            print(" ");
+            writeColumnAutoIncrementStmt(table, column);
+        }
+       }
+
+       /**
+     * [EMAIL PROTECTED]
+     */
+    protected String getNativeDefaultValue(Column column)
+    {
+        if ((column.getTypeCode() == Types.BIT) ||
+            (Jdbc3Utils.supportsJava14JdbcTypes() && (column.getTypeCode() == 
Jdbc3Utils.determineBooleanTypeCode())))
+        {
+            return getDefaultValueHelper().convert(column.getDefaultValue(), 
column.getTypeCode(), Types.SMALLINT).toString();
+        }
+        else
+        {
+            return super.getNativeDefaultValue(column);
+        }
+    }
+
+       /**
      * [EMAIL PROTECTED]
      */
     protected void alterTable(Database currentModel, Table currentTable, 
Database desiredModel, Table desiredTable, boolean doDrops, boolean 
modifyColumns) throws IOException
     {
-        writeQuotationOnStatement();
+       // we only want to generate the quotation start statement if there is 
something to write
+       // thus we write the alteration commands into a temporary writer
+       // and only if something was written, write the quotation start 
statement and the
+       // alteration commands to the original writer
+       Writer       originalWriter = getWriter();
+       StringWriter tempWriter     = new StringWriter();
+
+       setWriter(tempWriter);
         super.alterTable(currentModel, currentTable, desiredModel, 
desiredTable, doDrops, modifyColumns);
+        setWriter(originalWriter);
+
+        String alterationCommands = tempWriter.toString();
+
+        if (alterationCommands.trim().length() > 0)
+        {
+               writeQuotationOnStatement();
+               getWriter().write(alterationCommands);
+        }
     }
 
     /**
@@ -116,47 +186,6 @@
         {
             print("SET quoted_identifier on");
             printEndOfStatement();
-        }
-    }
-
-    /**
-     * [EMAIL PROTECTED]
-     */
-    public String getDeleteSql(Table table, Map pkValues, boolean 
genPlaceholders)
-    {
-        return getQuotationOnStatement() + super.getDeleteSql(table, pkValues, 
genPlaceholders);
-    }
-
-    /**
-     * [EMAIL PROTECTED]
-     */
-    public String getInsertSql(Table table, Map columnValues, boolean 
genPlaceholders)
-    {
-        return getQuotationOnStatement() + super.getInsertSql(table, 
columnValues, genPlaceholders);
-    }
-
-    /**
-     * [EMAIL PROTECTED]
-     */
-    public String getUpdateSql(Table table, Map columnValues, boolean 
genPlaceholders)
-    {
-        return getQuotationOnStatement() + super.getUpdateSql(table, 
columnValues, genPlaceholders);
-    }
-
-    /**
-     * Returns the statement that turns on the ability to write delimited 
identifiers.
-     * 
-     * @return The quotation-on statement
-     */
-    private String getQuotationOnStatement()
-    {
-        if (getPlatformInfo().isUseDelimitedIdentifiers())
-        {
-            return "SET quoted_identifier on" + 
getPlatformInfo().getSqlCommandDelimiter() + "\n";
-        }
-        else
-        {
-            return "";
         }
     }
 

Modified: 
db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybasePlatform.java
URL: 
http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybasePlatform.java?rev=380979&r1=380978&r2=380979&view=diff
==============================================================================
--- 
db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybasePlatform.java
 (original)
+++ 
db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybasePlatform.java
 Sat Feb 25 12:16:50 2006
@@ -16,9 +16,24 @@
  * limitations under the License.
  */
 
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
 import java.sql.Types;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
 
+import org.apache.ddlutils.DynaSqlException;
 import org.apache.ddlutils.PlatformInfo;
+import org.apache.ddlutils.model.Database;
+import org.apache.ddlutils.model.Table;
+import org.apache.ddlutils.model.TypeMap;
 import org.apache.ddlutils.platform.PlatformImplBase;
 
 /**
@@ -38,6 +53,9 @@
     /** The subprotocol used by the standard Sybase driver. */
     public static final String JDBC_SUBPROTOCOL = "sybase:Tds";
 
+    /** The maximum size that text and binary columns can have. */
+    public static final long MAX_TEXT_SIZE = 2147483647;
+    
     /**
      * Creates a new platform instance.
      */
@@ -45,7 +63,7 @@
     {
         PlatformInfo info = new PlatformInfo();
 
-        info.setMaxIdentifierLength(30);
+        info.setMaxIdentifierLength(28);
         info.setRequiringNullAsDefaultValue(false);
         info.setPrimaryKeyEmbedded(true);
         info.setForeignKeysEmbedded(false);
@@ -54,13 +72,15 @@
         info.setCommentSuffix("*/");
 
         info.addNativeTypeMapping(Types.ARRAY,         "IMAGE");
+        // we're not using the native BIT type because it is rather limited 
(cannot be NULL, cannot be indexed)
+        info.addNativeTypeMapping(Types.BIT,           "SMALLINT",         
Types.SMALLINT);
         info.addNativeTypeMapping(Types.BIGINT,        "DECIMAL(19,0)");
         info.addNativeTypeMapping(Types.BLOB,          "IMAGE");
         info.addNativeTypeMapping(Types.CLOB,          "TEXT");
-        info.addNativeTypeMapping(Types.DATE,          "DATETIME");
+        info.addNativeTypeMapping(Types.DATE,          "DATETIME",         
Types.TIMESTAMP);
         info.addNativeTypeMapping(Types.DISTINCT,      "IMAGE");
         info.addNativeTypeMapping(Types.DOUBLE,        "DOUBLE PRECISION");
-        info.addNativeTypeMapping(Types.FLOAT,         "DOUBLE PRECISION");
+        info.addNativeTypeMapping(Types.FLOAT,         "DOUBLE PRECISION", 
Types.DOUBLE);
         info.addNativeTypeMapping(Types.INTEGER,       "INT");
         info.addNativeTypeMapping(Types.JAVA_OBJECT,   "IMAGE");
         info.addNativeTypeMapping(Types.LONGVARBINARY, "IMAGE");
@@ -69,13 +89,19 @@
         info.addNativeTypeMapping(Types.OTHER,         "IMAGE");
         info.addNativeTypeMapping(Types.REF,           "IMAGE");
         info.addNativeTypeMapping(Types.STRUCT,        "IMAGE");
-        info.addNativeTypeMapping(Types.TIME,          "DATETIME");
-        info.addNativeTypeMapping(Types.TIMESTAMP,     "DATETIME");
-        info.addNativeTypeMapping(Types.TINYINT,       "SMALLINT");
-        info.addNativeTypeMapping("BOOLEAN",  "BIT");
+        info.addNativeTypeMapping(Types.TIME,          "DATETIME",         
Types.TIMESTAMP);
+        info.addNativeTypeMapping(Types.TIMESTAMP,     "DATETIME",         
Types.TIMESTAMP);
+        info.addNativeTypeMapping(Types.TINYINT,       "SMALLINT",         
Types.SMALLINT);
+        info.addNativeTypeMapping("BOOLEAN",  "SMALLINT", "SMALLINT");
         info.addNativeTypeMapping("DATALINK", "IMAGE");
 
+        info.addDefaultSize(Types.BINARY,    254);
+        info.addDefaultSize(Types.VARBINARY, 254);
+        info.addDefaultSize(Types.CHAR,      254);
+        info.addDefaultSize(Types.VARCHAR,   254);
+
         setSqlBuilder(new SybaseBuilder(info));
+        setModelReader(new SybaseModelReader(info));
     }
 
     /**
@@ -85,4 +111,136 @@
     {
         return DATABASENAME;
     }
+
+    /**
+     * Sets the text size which is the maximum amount of bytes that Sybase 
returns in a SELECT statement
+     * for binary/text columns (e.g. blob, longvarchar etc.).
+     * 
+     * @param size The size to set
+     */
+    private void setTextSize(long size)
+    {
+       Connection connection = borrowConnection();
+       Statement  stmt       = null;
+
+       try
+       {
+               stmt = connection.createStatement();
+
+               stmt.execute("SET textsize "+size);
+       }
+       catch (SQLException ex)
+       {
+               throw new DynaSqlException(ex);
+       }
+       finally
+       {
+               closeStatement(stmt);
+               returnConnection(connection);
+       }
+    }
+
+    
+       /**
+     * [EMAIL PROTECTED]
+     */
+       protected Object extractColumnValue(ResultSet resultSet, String 
columnName, int jdbcType) throws SQLException
+       {
+               if (jdbcType == Types.LONGVARBINARY)
+               {
+                       InputStream stream = 
resultSet.getBinaryStream(columnName);
+
+                       if (stream == null)
+                       {
+                               return null;
+                       }
+                       else
+                       {
+                               byte[] buf    = new byte[65536];
+                               byte[] result = new byte[0];
+                               int    len;
+       
+                               try
+                               {
+                                       do
+                                       {
+                                               len = stream.read(buf);
+                                               if (len > 0)
+                                               {
+                                                       byte[] newResult = new 
byte[result.length + len];
+       
+                                                       
System.arraycopy(result, 0, newResult, 0, result.length);
+                                                       System.arraycopy(buf, 
0, newResult, result.length, len);
+                                                       result = newResult;
+                                               }
+                                       }
+                                       while (len > 0);
+                                       stream.close();
+                                       return result;
+                               }
+                               catch (IOException ex)
+                               {
+                                       throw new DynaSqlException("Error while 
extracting the value of column " + columnName + " of type " +
+                                                                          
TypeMap.getJdbcTypeName(jdbcType) + " from a result set", ex);
+                               }
+                       }
+               }
+               else
+               {
+                       return super.extractColumnValue(resultSet, columnName, 
jdbcType);
+               }
+       }
+
+       /**
+     * [EMAIL PROTECTED]
+     */
+       protected void setStatementParameterValue(PreparedStatement statement, 
int sqlIndex, int typeCode, Object value) throws SQLException
+       {
+               if ((value instanceof byte[]) && (typeCode == 
Types.LONGVARBINARY))
+               {
+                       byte[] data = (byte[])value;
+
+                       statement.setBinaryStream(sqlIndex, new 
ByteArrayInputStream(data), data.length);
+               }
+               else
+               {
+                       super.setStatementParameterValue(statement, sqlIndex, 
typeCode, value);
+               }
+       }
+
+       /**
+     * [EMAIL PROTECTED]
+     */
+       public List fetch(Database model, String sql, Collection parameters, 
Table[] queryHints, int start, int end) throws DynaSqlException
+       {
+               setTextSize(MAX_TEXT_SIZE);
+               return super.fetch(model, sql, parameters, queryHints, start, 
end);
+       }
+
+    /**
+     * [EMAIL PROTECTED]
+     */
+       public List fetch(Database model, String sql, Table[] queryHints, int 
start, int end) throws DynaSqlException
+       {
+               setTextSize(MAX_TEXT_SIZE);
+               return super.fetch(model, sql, queryHints, start, end);
+       }
+
+    /**
+     * [EMAIL PROTECTED]
+     */
+       public Iterator query(Database model, String sql, Collection 
parameters, Table[] queryHints) throws DynaSqlException
+       {
+               setTextSize(MAX_TEXT_SIZE);
+               return super.query(model, sql, parameters, queryHints);
+       }
+
+    /**
+     * [EMAIL PROTECTED]
+     */
+       public Iterator query(Database model, String sql, Table[] queryHints) 
throws DynaSqlException
+       {
+               setTextSize(MAX_TEXT_SIZE);
+               return super.query(model, sql, queryHints);
+       }
 }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/util/JdbcSupport.java
URL: 
http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/util/JdbcSupport.java?rev=380979&r1=380978&r2=380979&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/util/JdbcSupport.java 
(original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/util/JdbcSupport.java Sat 
Feb 25 12:16:50 2006
@@ -211,7 +211,7 @@
             }
             catch (Exception e)
             {
-                _log.warn("Ignoring exception closing statement", e);
+                _log.debug("Ignoring exception that occurred while closing 
statement", e);
             }
         }
     }


Reply via email to