]> granicus.if.org Git - postgresql/commitdiff
Patches applied:
authorBarry Lind <barry@xythos.com>
Mon, 30 Jun 2003 16:38:30 +0000 (16:38 +0000)
committerBarry Lind <barry@xythos.com>
Mon, 30 Jun 2003 16:38:30 +0000 (16:38 +0000)
1) Patch from Kris Jurka to fix IPv6 parsing of the jdbc URL
2) Patch from Kris Jurka to fix an ArrayIndexOutOfBounds error
   when calling moveToCurrentRow while currentRow is "beforeFirst"
3) Patch from Kim Ho to fix add some bounds checking in setMaxRows(),
   setQueryTimeout(), setFetchSize()

 Modified Files:
  jdbc/org/postgresql/Driver.java.in
  jdbc/org/postgresql/errors.properties
  jdbc/org/postgresql/jdbc1/AbstractJdbc1Statement.java
  jdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java
  jdbc/org/postgresql/jdbc2/AbstractJdbc2Statement.java

src/interfaces/jdbc/org/postgresql/Driver.java.in
src/interfaces/jdbc/org/postgresql/errors.properties
src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1Statement.java
src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java
src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2Statement.java

index e37428491acc2e6d7006030a60a83c8fce922397..96754e5b84661dbaa5bdf58fb87f75681ebec75a 100644 (file)
@@ -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++)
index d75ca97e9d51f4674149beaa10bdd90333c5518e..b3f6e1ad210976de83640978a6ae3a2dadc6f0cf 100644 (file)
@@ -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.
index 93d4fcae33a669910a2398f7b0af5c9f2d56589c..c3d7af25137d4de28f124c22e06a9a1e0385955a 100644 (file)
@@ -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;
        }
 
index 21514235027ffb510db8d31605286bdd68a35c8f..2f0ad3cb277bffdd1feb2f674c78911ec6ecfc6d 100644 (file)
@@ -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;
index 510cc4242b05361111a0f1932984f568ac5feae3..2512a9790ef475a289d55e20588e1d6b0bf9c660 100644 (file)
@@ -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;
        }