You are viewing a plain text version of this content. The canonical link for it is here.
Posted to torque-dev@db.apache.org by tf...@apache.org on 2011/05/02 18:52:00 UTC

svn commit: r1098658 - /db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/util/BasePeer.java

Author: tfischer
Date: Mon May  2 16:52:00 2011
New Revision: 1098658

URL: http://svn.apache.org/viewvc?rev=1098658&view=rev
Log:
Various bugfixes
- use full table name to apply configured schema prefixes
- improve logging
- enable queries with empty from clause
- improve date handling in queries

Modified:
    db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/util/BasePeer.java

Modified: db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/util/BasePeer.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/util/BasePeer.java?rev=1098658&r1=1098657&r2=1098658&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/util/BasePeer.java (original)
+++ db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/util/BasePeer.java Mon May  2 16:52:00 2011
@@ -232,7 +232,8 @@ public abstract class BasePeer
      * @throws TorqueException Any exceptions caught during processing will be
      *         rethrown wrapped into a TorqueException.
      */
-    protected static void doDelete(Criteria criteria, String tableName) throws TorqueException
+    protected static void doDelete(Criteria criteria, String tableName)
+            throws TorqueException
     {
         Connection con = null;
         try
@@ -332,7 +333,11 @@ public abstract class BasePeer
 
         query.setType(Query.Type.DELETE);
         query.getFromClause().clear();
-        query.getFromClause().add(new Query.FromElement(tableName, null, null));
+        String fullTableName = SQLBuilder.getFullTableName(
+                tableName,
+                criteria.getDbName());
+        query.getFromClause().add(
+                new Query.FromElement(fullTableName, null, null));
         String sql = query.toString();
 
         PreparedStatement preparedStatement = null;
@@ -344,7 +349,9 @@ public abstract class BasePeer
                     query.getPreparedStatementReplacements(),
                     0);
             long startTime = System.currentTimeMillis();
-            log.debug("Executing delete " + sql);
+            log.debug("Executing delete " + sql
+                    + ", parameters = "
+                    + query.getPreparedStatementReplacements());
 
             int affectedRows = preparedStatement.executeUpdate();
             long queryEndTime = System.currentTimeMillis();
@@ -504,8 +511,11 @@ public abstract class BasePeer
             replacementObjects.add(value);
         }
 
+        String fullTableName = SQLBuilder.getFullTableName(
+                tableMap.getName(), 
+                dbMap.getName());
         StringBuilder query = new StringBuilder("INSERT INTO ")
-            .append(tableMap.getName())
+            .append(fullTableName)
             .append("(")
             .append(StringUtils.join(columnNames, ","))
             .append(") VALUES (");
@@ -1273,8 +1283,13 @@ public abstract class BasePeer
         Query query = createQuery(criteria);
         query.setType(Query.Type.UPDATE);
 
-        // ignore select columns in criteria
-        query.getSelectClause().clear();
+        query.getFromClause().clear();
+        String fullTableName = SQLBuilder.getFullTableName(
+                updateValues.getTable().getName(),
+                criteria.getDbName());
+        query.getFromClause().add(
+                new Query.FromElement(fullTableName, null, null));
+
         List<JdbcTypedValue> replacementObjects
                 = new ArrayList<JdbcTypedValue>();
         for (Map.Entry<String, JdbcTypedValue> updateValue
@@ -1316,7 +1331,9 @@ public abstract class BasePeer
                     position - 1);
             long startTime = System.currentTimeMillis();
             log.debug("Executing update " + query.toString()
-                    + " using parameters " + replacementObjects);
+                    + " using update parameters " + replacementObjects
+                    + " and query parameters "
+                    + query.getPreparedStatementReplacements());
 
             int affectedRows = preparedStatement.executeUpdate();
             long queryEndTime = System.currentTimeMillis();
@@ -1456,7 +1473,7 @@ public abstract class BasePeer
      * @param mapper The mapper creating the objects from the resultSet,
      *        not null.
      * @param defaultTableMap The table map used for the
-     *        unqualified columns in the query, not null.
+     *        unqualified columns in the query, TODO or null ???.
      * @param connection the database connection for selecting records,
      *        not null.
      *
@@ -1473,6 +1490,14 @@ public abstract class BasePeer
         correctBooleans(criteria, defaultTableMap);
 
         Query query = SQLBuilder.buildQuery(criteria);
+        if (query.getFromClause().isEmpty() && defaultTableMap != null)
+        {
+            String tableName = SQLBuilder.getFullTableName(
+                    defaultTableMap.getName(),
+                    criteria.getDbName());
+            query.getFromClause().add(
+                    new Query.FromElement(tableName, null, null));
+        }
 
         PreparedStatement statement = null;
         ResultSet resultSet = null;
@@ -1601,10 +1626,21 @@ public abstract class BasePeer
         int i = 1 + offset;
         for (Object param : replacements)
         {
-            if (param instanceof java.sql.Date)
+            if (param instanceof java.sql.Timestamp)
+            {
+                statement.setTimestamp(i, (java.sql.Timestamp) param);
+            }
+            else if (param instanceof java.sql.Date)
             {
                 statement.setDate(i, (java.sql.Date) param);
             }
+            else if (param instanceof java.util.Date)
+            {
+                // TODO change to timestamp 
+                java.sql.Date sqlDate = new java.sql.Date(
+                        ((java.util.Date) param).getTime());
+                statement.setDate(i, sqlDate);
+            }
             else if (param instanceof NumberKey)
             {
                 statement.setBigDecimal(i,



---------------------------------------------------------------------
To unsubscribe, e-mail: torque-dev-unsubscribe@db.apache.org
For additional commands, e-mail: torque-dev-help@db.apache.org