mirror of
https://github.com/postgres/postgres.git
synced 2025-07-08 11:42:09 +03:00
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
This commit is contained in:
@ -15,15 +15,13 @@ import org.postgresql.util.PGbytea;
|
||||
import org.postgresql.util.PSQLException;
|
||||
|
||||
|
||||
/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc2/Attic/AbstractJdbc2ResultSet.java,v 1.4 2002/08/14 20:35:39 barry Exp $
|
||||
/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc2/Attic/AbstractJdbc2ResultSet.java,v 1.5 2002/08/23 20:45:49 barry Exp $
|
||||
* This class defines methods of the jdbc2 specification. This class extends
|
||||
* org.postgresql.jdbc1.AbstractJdbc1ResultSet which provides the jdbc1
|
||||
* methods. The real Statement class (for jdbc2) is org.postgresql.jdbc2.Jdbc2ResultSet
|
||||
*/
|
||||
public abstract class AbstractJdbc2ResultSet extends org.postgresql.jdbc1.AbstractJdbc1ResultSet {
|
||||
|
||||
protected String sqlQuery = null;
|
||||
|
||||
//needed for updateable result set support
|
||||
protected boolean updateable = false;
|
||||
protected boolean doingUpdates = false;
|
||||
@ -1254,7 +1252,9 @@ public abstract class AbstractJdbc2ResultSet extends org.postgresql.jdbc1.Abstra
|
||||
|
||||
|
||||
public void parseQuery() {
|
||||
StringTokenizer st = new StringTokenizer(sqlQuery, " \r\t");
|
||||
String[] l_sqlFragments = ((AbstractJdbc2Statement)statement).getSqlFragments();
|
||||
String l_sql = l_sqlFragments[0];
|
||||
StringTokenizer st = new StringTokenizer(l_sql, " \r\t");
|
||||
boolean tableFound = false, tablesChecked = false;
|
||||
String name = "";
|
||||
|
||||
@ -1326,11 +1326,6 @@ public abstract class AbstractJdbc2ResultSet extends org.postgresql.jdbc1.Abstra
|
||||
}
|
||||
|
||||
|
||||
public void setSQLQuery(String sqlQuery) {
|
||||
this.sqlQuery = sqlQuery;
|
||||
}
|
||||
|
||||
|
||||
private class PrimaryKey {
|
||||
int index; // where in the result set is this primaryKey
|
||||
String name; // what is the columnName of this primary Key
|
||||
|
Reference in New Issue
Block a user