From db491a6d78a44c1cb39f8a00438344921159743a Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Fri, 29 Jun 2001 17:23:33 +0000
Subject: [PATCH] SimpleDateFormat performance improvement, thread-safe.

Barry Lind
---
 .../postgresql/jdbc2/PreparedStatement.java   | 27 ++++++-------------
 1 file changed, 8 insertions(+), 19 deletions(-)

diff --git a/src/interfaces/jdbc/org/postgresql/jdbc2/PreparedStatement.java b/src/interfaces/jdbc/org/postgresql/jdbc2/PreparedStatement.java
index 7b5babfb8d6..69898cc3c93 100644
--- a/src/interfaces/jdbc/org/postgresql/jdbc2/PreparedStatement.java
+++ b/src/interfaces/jdbc/org/postgresql/jdbc2/PreparedStatement.java
@@ -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
-- 
GitLab