]> granicus.if.org Git - postgresql/commitdiff
Correctly cast the return value of a CallableStatement when getShort
authorKris Jurka <books@ejurka.com>
Thu, 21 Oct 2004 19:13:55 +0000 (19:13 +0000)
committerKris Jurka <books@ejurka.com>
Thu, 21 Oct 2004 19:13:55 +0000 (19:13 +0000)
is called.  getByte presents a can't happen situation as no function
can return a TINYINT because pg doesn't have an equivalent type.
Make this throw an exception if we get to this point.

Thanks to Christian Niles.

src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1Statement.java

index f4ad4763eb771ef6fe60c5008ab7f4b14798195a..833a12b83e874374af7724b78ad98a34248dcc08 100644 (file)
@@ -26,7 +26,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.41.2.7 2004/09/13 08:02:41 jurka Exp $
+/* $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc1/Attic/AbstractJdbc1Statement.java,v 1.41.2.8 2004/10/21 19:13:55 jurka 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
@@ -1864,9 +1864,12 @@ public abstract class AbstractJdbc1Statement implements BaseStatement
        public byte getByte(int parameterIndex) throws SQLException
        {
                checkIndex (parameterIndex, Types.TINYINT, "Byte");
-               if (callResult == null)
-                       return 0;
-               return (byte)((Integer)callResult).intValue ();
+               // We expect the above checkIndex call to fail because
+               // we don't have an equivalent pg type for TINYINT.
+               // Possibly "char" (not char(N)), could be used, but
+               // for the moment we just bail out.
+               //
+               throw new PSQLException("postgresql.unusual", PSQLState.UNEXPECTED_ERROR);
        }
 
        /*
@@ -1881,7 +1884,7 @@ public abstract class AbstractJdbc1Statement implements BaseStatement
                checkIndex (parameterIndex, Types.SMALLINT, "Short");
                if (callResult == null)
                        return 0;
-               return (short)((Integer)callResult).intValue ();
+               return (short)((Short)callResult).intValue ();
        }