SimpleDateFormat performance improvement, thread-safe.
authorBruce Momjian <bruce@momjian.us>
Fri, 29 Jun 2001 17:23:33 +0000 (17:23 +0000)
committerBruce Momjian <bruce@momjian.us>
Fri, 29 Jun 2001 17:23:33 +0000 (17:23 +0000)
Barry Lind

src/interfaces/jdbc/org/postgresql/jdbc2/PreparedStatement.java

index 7b5babfb8d6893ce5dfb8f938d72867f8e98c7de..69898cc3c9339409cd99baa02be3c051e01e4c11 100644 (file)
@@ -65,14 +65,6 @@ public class PreparedStatement extends Statement implements java.sql.PreparedSta
        this.sql = sql;
        this.connection = connection;
    
-       // might just as well create it here, so we don't take the hit later
-
-               SimpleDateFormat df = new SimpleDateFormat("''yyyy-MM-dd''");
-               tl_df.set(df);
-       
-               df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-               tl_tsdf.set(df);
-          
        for (i = 0; i < sql.length(); ++i)
        {
            int c = sql.charAt(i);
@@ -95,17 +87,6 @@ public class PreparedStatement extends Statement implements java.sql.PreparedSta
            templateStrings[i] = (String)v.elementAt(i);
    }
 
-        /**
-         * New in 7.1 - overides Statement.close() to dispose of a few local objects
-         */
-        public void close() throws SQLException
-    {
-          // free the ThreadLocal caches
-          tl_df.set(null);
-     tl_tsdf.set(null);
-          super.close();
-        }
-
    /**
     * A Prepared SQL query is executed and its ResultSet is returned
     *
@@ -343,6 +324,10 @@ public class PreparedStatement extends Statement implements java.sql.PreparedSta
    public void setDate(int parameterIndex, java.sql.Date x) throws SQLException
    {
           SimpleDateFormat df = (SimpleDateFormat) tl_df.get();
+          if(df==null) {
+            df = new SimpleDateFormat("''yyyy-MM-dd''");
+            tl_df.set(df);
+          }
 
      set(parameterIndex, df.format(x));
 
@@ -382,6 +367,10 @@ public class PreparedStatement extends Statement implements java.sql.PreparedSta
    public void setTimestamp(int parameterIndex, Timestamp x) throws SQLException
         {
           SimpleDateFormat df = (SimpleDateFormat) tl_tsdf.get();
+          if(df==null) {
+            df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            tl_tsdf.set(df);
+          }
           df.setTimeZone(TimeZone.getTimeZone("GMT"));
 
           // Use the shared StringBuffer