diff --git a/src/interfaces/jdbc/org/postgresql/Driver.java.in b/src/interfaces/jdbc/org/postgresql/Driver.java.in index e37428491a..96754e5b84 100644 --- a/src/interfaces/jdbc/org/postgresql/Driver.java.in +++ b/src/interfaces/jdbc/org/postgresql/Driver.java.in @@ -6,7 +6,7 @@ * Copyright (c) 2003, PostgreSQL Global Development Group * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/Attic/Driver.java.in,v 1.30 2003/05/29 04:39:51 barry Exp $ + * $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/Attic/Driver.java.in,v 1.31 2003/06/30 16:38:30 barry Exp $ * *------------------------------------------------------------------------- */ @@ -272,6 +272,17 @@ public class Driver implements java.sql.Driver l_urlArgs = url.substring(l_qPos+1); } + // look for an IPv6 address that is enclosed by [] + // the upcoming parsing that uses colons as identifiers can't handle + // the colons in an IPv6 address. + int ipv6start = l_urlServer.indexOf("["); + int ipv6end = l_urlServer.indexOf("]"); + String ipv6address = null; + if (ipv6start != -1 && ipv6end > ipv6start) { + ipv6address = l_urlServer.substring(ipv6start+1,ipv6end); + l_urlServer = l_urlServer.substring(0,ipv6start)+"ipv6host"+l_urlServer.substring(ipv6end+1); + } + //parse the server part of the url StringTokenizer st = new StringTokenizer(l_urlServer, ":/", true); for (int count = 0; (st.hasMoreTokens()); count++) @@ -346,6 +357,10 @@ public class Driver implements java.sql.Driver } } + // if we extracted an IPv6 address out earlier put it back + if (ipv6address != null) + urlProps.put("PGHOST",ipv6address); + //parse the args part of the url StringTokenizer qst = new StringTokenizer(l_urlArgs, "&"); for (int count = 0; (qst.hasMoreTokens()); count++) diff --git a/src/interfaces/jdbc/org/postgresql/errors.properties b/src/interfaces/jdbc/org/postgresql/errors.properties index d75ca97e9d..b3f6e1ad21 100644 --- a/src/interfaces/jdbc/org/postgresql/errors.properties +++ b/src/interfaces/jdbc/org/postgresql/errors.properties @@ -97,3 +97,6 @@ postgresql.call.funcover:Cannot execute Query a call to setXXX (1, ..) was made postgresql.call.wrongget:Parameter of type {0} was registered but call to get{1} (sqltype={2}) was made. postgresql.call.noreturnval:A CallableStatement Function was executed with nothing returned. postgresql.call.wrongrtntype:A CallableStatement Function was executed and the return was of type ({0}) however type={1} was registered. +postgresql.input.fetch.gt0:Fetch size must be a value greater than or equal to 0. +postgresql.input.query.gt0:Query Timeout must be a value greater than or equal to 0. +postgresql.input.rows.gt0:Maximum number of rows must be a value greater than or equal to 0. diff --git a/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1Statement.java b/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1Statement.java index 93d4fcae33..c3d7af2513 100644 --- a/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1Statement.java +++ b/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1Statement.java @@ -25,7 +25,7 @@ import java.sql.Timestamp; import java.sql.Types; import java.util.Vector; -/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc1/Attic/AbstractJdbc1Statement.java,v 1.24 2003/05/29 04:52:44 barry Exp $ +/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc1/Attic/AbstractJdbc1Statement.java,v 1.25 2003/06/30 16:38:30 barry Exp $ * This class defines methods of the jdbc1 specification. This class is * extended by org.postgresql.jdbc2.AbstractJdbc2Statement which adds the jdbc2 * methods. The real Statement class (for jdbc1) is org.postgresql.jdbc1.Jdbc1Statement @@ -554,6 +554,7 @@ public abstract class AbstractJdbc1Statement implements BaseStatement */ public void setMaxRows(int max) throws SQLException { + if (max<0) throw new PSQLException("postgresql.input.rows.gt0"); maxrows = max; } @@ -590,6 +591,7 @@ public abstract class AbstractJdbc1Statement implements BaseStatement */ public void setQueryTimeout(int seconds) throws SQLException { + if (seconds<0) throw new PSQLException("postgresql.input.query.gt0"); timeout = seconds; } diff --git a/src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java b/src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java index 2151423502..2f0ad3cb27 100644 --- a/src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java +++ b/src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java @@ -9,7 +9,7 @@ * Copyright (c) 2003, PostgreSQL Global Development Group * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc2/Attic/AbstractJdbc2ResultSet.java,v 1.19 2003/05/03 20:40:45 barry Exp $ + * $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc2/Attic/AbstractJdbc2ResultSet.java,v 1.20 2003/06/30 16:38:30 barry Exp $ * *------------------------------------------------------------------------- */ @@ -687,10 +687,15 @@ public abstract class AbstractJdbc2ResultSet extends org.postgresql.jdbc1.Abstra throw new PSQLException( "postgresql.updateable.notupdateable" ); } - this_row = (byte[][]) rows.elementAt(current_row); + if (current_row < 0) { + this_row = null; + rowBuffer = null; + } else { + this_row = (byte[][]) rows.elementAt(current_row); - rowBuffer = new byte[this_row.length][]; - System.arraycopy(this_row, 0, rowBuffer, 0, this_row.length); + rowBuffer = new byte[this_row.length][]; + System.arraycopy(this_row, 0, rowBuffer, 0, this_row.length); + } onInsertRow = false; doingUpdates = false; diff --git a/src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2Statement.java b/src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2Statement.java index 510cc4242b..2512a9790e 100644 --- a/src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2Statement.java +++ b/src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2Statement.java @@ -9,7 +9,7 @@ import org.postgresql.Driver; import org.postgresql.largeobject.*; import org.postgresql.util.PSQLException; -/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc2/Attic/AbstractJdbc2Statement.java,v 1.14 2003/05/29 04:52:44 barry Exp $ +/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc2/Attic/AbstractJdbc2Statement.java,v 1.15 2003/06/30 16:38:30 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 @@ -151,6 +151,7 @@ public abstract class AbstractJdbc2Statement extends org.postgresql.jdbc1.Abstra public void setFetchSize(int rows) throws SQLException { + if (rows<0) throw new PSQLException("postgresql.input.fetch.gt0"); super.fetchSize = rows; }