diff options
| author | Barry Lind <barry@xythos.com> | 2002-08-23 20:45:49 +0000 |
|---|---|---|
| committer | Barry Lind <barry@xythos.com> | 2002-08-23 20:45:49 +0000 |
| commit | fe2dec75a9b428f2e4271af32c4f6a31717889f4 (patch) | |
| tree | 95e00adfdd223c29e5b8355928bd052905c3e9cf /src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2Statement.java | |
| parent | a2a3192802e12e056806d5921c3fc4a7a6df8b09 (diff) | |
| download | postgresql-fe2dec75a9b428f2e4271af32c4f6a31717889f4.tar.gz | |
Enhancements to how queries with bind values are stored internally and sent to
the server. Previously we allocated a new String object for the entire final
query we were sending to the database. If you had a big query, or especially
if you had large bind values you ended up with essentially two copies in memory.
This change will reuse the existing objects and therefore should take 1/2 the
memory it does today for a given query. This restructuring will also allow
in the future the ability to stream bytea data to the server instead of the current approach of pulling it all into memory.
I also fixed a test that was failing on a 7.2 database.
Also renamed some internal variables and some minor cleanup.
Modified Files:
jdbc/org/postgresql/core/QueryExecutor.java
jdbc/org/postgresql/jdbc1/AbstractJdbc1Connection.java
jdbc/org/postgresql/jdbc1/AbstractJdbc1Statement.java
jdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java
jdbc/org/postgresql/jdbc2/AbstractJdbc2Statement.java
jdbc/org/postgresql/test/jdbc2/DatabaseMetaDataTest.java
Diffstat (limited to 'src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2Statement.java')
| -rw-r--r-- | src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2Statement.java | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2Statement.java b/src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2Statement.java index d8d16985ad..457f36e941 100644 --- a/src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2Statement.java +++ b/src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2Statement.java @@ -8,7 +8,7 @@ import java.util.Vector; import org.postgresql.largeobject.*; import org.postgresql.util.PSQLException; -/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc2/Attic/AbstractJdbc2Statement.java,v 1.3 2002/07/25 22:45:28 barry Exp $ +/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc2/Attic/AbstractJdbc2Statement.java,v 1.4 2002/08/23 20:45:49 barry Exp $ * This class defines methods of the jdbc2 specification. This class extends * org.postgresql.jdbc1.AbstractJdbc1Statement which provides the jdbc1 * methods. The real Statement class (for jdbc2) is org.postgresql.jdbc2.Jdbc2Statement @@ -43,32 +43,28 @@ public abstract class AbstractJdbc2Statement extends org.postgresql.jdbc1.Abstra * an update count or there are no more results * @exception SQLException if a database access error occurs */ - public boolean execute(String sql) throws SQLException + public boolean execute() throws SQLException { - boolean l_return = super.execute(sql); + boolean l_return = super.execute(); //Now do the jdbc2 specific stuff //required for ResultSet.getStatement() to work and updateable resultsets ((AbstractJdbc2ResultSet)result).setStatement((Statement)this); - // Added this so that the Updateable resultset knows the query that gave this - ((AbstractJdbc2ResultSet)result).setSQLQuery(sql); - return l_return; } // ** JDBC 2 Extensions ** - public void addBatch(String sql) throws SQLException + public void addBatch(String p_sql) throws SQLException { if (batch == null) batch = new Vector(); - batch.addElement(sql); + batch.addElement(p_sql); } public void clearBatch() throws SQLException { - if (batch != null) - batch.removeAllElements(); + batch = null; } public int[] executeBatch() throws SQLException @@ -155,7 +151,7 @@ public abstract class AbstractJdbc2Statement extends org.postgresql.jdbc1.Abstra public void addBatch() throws SQLException { - addBatch(compileQuery()); + addBatch(this.toString()); } public java.sql.ResultSetMetaData getMetaData() throws SQLException @@ -388,4 +384,9 @@ public abstract class AbstractJdbc2Statement extends org.postgresql.jdbc1.Abstra } + //This is needed by AbstractJdbc2ResultSet to determine if the query is updateable or not + protected String[] getSqlFragments() { + return m_sqlFragments; + } + } |
