High memory usage
Here is a patch which inspired by Michael Stephens that should work Dave Cramer
This commit is contained in:
parent
06f6404c42
commit
54361b4233
@ -41,8 +41,8 @@ public class PreparedStatement extends Statement implements java.sql.PreparedSta
|
|||||||
|
|
||||||
// We use ThreadLocal for SimpleDateFormat's because they are not that
|
// We use ThreadLocal for SimpleDateFormat's because they are not that
|
||||||
// thread safe, so each calling thread has its own object.
|
// thread safe, so each calling thread has its own object.
|
||||||
private ThreadLocal tl_df = new ThreadLocal(); // setDate() SimpleDateFormat
|
private static ThreadLocal tl_df = new ThreadLocal(); // setDate() SimpleDateFormat
|
||||||
private ThreadLocal tl_tsdf = new ThreadLocal(); // setTimestamp() SimpleDateFormat
|
private static ThreadLocal tl_tsdf = new ThreadLocal(); // setTimestamp() SimpleDateFormat
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor for the PreparedStatement class.
|
* Constructor for the PreparedStatement class.
|
||||||
@ -64,6 +64,15 @@ public class PreparedStatement extends Statement implements java.sql.PreparedSta
|
|||||||
|
|
||||||
this.sql = sql;
|
this.sql = sql;
|
||||||
this.connection = connection;
|
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)
|
for (i = 0; i < sql.length(); ++i)
|
||||||
{
|
{
|
||||||
int c = sql.charAt(i);
|
int c = sql.charAt(i);
|
||||||
@ -89,10 +98,11 @@ public class PreparedStatement extends Statement implements java.sql.PreparedSta
|
|||||||
/**
|
/**
|
||||||
* New in 7.1 - overides Statement.close() to dispose of a few local objects
|
* New in 7.1 - overides Statement.close() to dispose of a few local objects
|
||||||
*/
|
*/
|
||||||
public void close() throws SQLException {
|
public void close() throws SQLException
|
||||||
|
{
|
||||||
// free the ThreadLocal caches
|
// free the ThreadLocal caches
|
||||||
tl_df.set(null);
|
tl_df.set(null);
|
||||||
|
tl_tsdf.set(null);
|
||||||
super.close();
|
super.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -333,10 +343,6 @@ public class PreparedStatement extends Statement implements java.sql.PreparedSta
|
|||||||
public void setDate(int parameterIndex, java.sql.Date x) throws SQLException
|
public void setDate(int parameterIndex, java.sql.Date x) throws SQLException
|
||||||
{
|
{
|
||||||
SimpleDateFormat df = (SimpleDateFormat) tl_df.get();
|
SimpleDateFormat df = (SimpleDateFormat) tl_df.get();
|
||||||
if(df==null) {
|
|
||||||
df = new SimpleDateFormat("''yyyy-MM-dd''");
|
|
||||||
tl_df.set(df);
|
|
||||||
}
|
|
||||||
|
|
||||||
set(parameterIndex, df.format(x));
|
set(parameterIndex, df.format(x));
|
||||||
|
|
||||||
@ -376,10 +382,6 @@ public class PreparedStatement extends Statement implements java.sql.PreparedSta
|
|||||||
public void setTimestamp(int parameterIndex, Timestamp x) throws SQLException
|
public void setTimestamp(int parameterIndex, Timestamp x) throws SQLException
|
||||||
{
|
{
|
||||||
SimpleDateFormat df = (SimpleDateFormat) tl_tsdf.get();
|
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"));
|
df.setTimeZone(TimeZone.getTimeZone("GMT"));
|
||||||
|
|
||||||
// Use the shared StringBuffer
|
// Use the shared StringBuffer
|
||||||
|
Loading…
x
Reference in New Issue
Block a user