Thread: Patches for ResultSetMetaData.java for Postgresql 7.1.3 (sorry, here is the diff -c with explanations)

This patch fixes the exception thrown to inform the user the method
getColumnClassName(int) is not implemented. This will futher fixes method
ResultSet.getObject(int) since it requires the getColumnClassName(int)
method to return the proper java class used to map the database column.

*** ResultSetMetaData.java.orig Mon Apr 17 16:07:51 2000
--- ResultSetMetaData.java Mon Dec 17 22:26:24 2001
***************
*** 448,454 ****
--- 448,513 ----
      // This can hook into our PG_Object mechanism
      public String getColumnClassName(int column) throws SQLException
      {
+ /*
+     The following data type mapping came from ../Field.java.
+
+     "int2",
+     "int4","oid",
+     "int8",
+     "cash","money",
+     "numeric",
+     "float4",
+     "float8",
+     "bpchar","char","char2","char4","char8","char16",
+     "varchar","text","name","filename",
+     "bool",
+     "date",
+     "time",
+     "abstime","timestamp"
+
+     Types.SMALLINT,
+     Types.INTEGER,Types.INTEGER,
+     Types.BIGINT,
+     Types.DOUBLE,Types.DOUBLE,
+     Types.NUMERIC,
+     Types.REAL,
+     Types.DOUBLE,
+     Types.CHAR,Types.CHAR,Types.CHAR,Types.CHAR,Types.CHAR,Types.CHAR,
+     Types.VARCHAR,Types.VARCHAR,Types.VARCHAR,Types.VARCHAR,
+     Types.BIT,
+     Types.DATE,
+     Types.TIME,
+     Types.TIMESTAMP,Types.TIMESTAMP
+ */
+
+     int sql_type = getField(column).getSQLType();
+
+     switch (sql_type)
+       {
+       case Types.BIT:
+         return("java.lang.Boolean");
+       case Types.SMALLINT:
+         return("java.lang.Integer");
+       case Types.INTEGER:
+         return("java.lang.Integer");
+       case Types.BIGINT:
+         return("java.lang.Long");
+       case Types.NUMERIC:
+         return("java.math.BigDecimal");
+       case Types.REAL:
+         return("java.lang.Float");
+       case Types.DOUBLE:
+         return("java.lang.Double");
+       case Types.CHAR:
+       case Types.VARCHAR:
+         return("java.lang.String");
+       case Types.DATE:
+       case Types.TIME:
+       case Types.TIMESTAMP:
+         return("java.sql.Timestamp");
+       default:
   throw org.postgresql.Driver.notImplemented();
+       }
      }

  }


Re: Patches for ResultSetMetaData.java for Postgresql 7.1.3 (sorry,

From
Bruce Momjian
Date:
Saved for 7.3:

    http://candle.pha.pa.us/cgi-bin/pgpatches2

---------------------------------------------------------------------------


Ed Yu wrote:
> This patch fixes the exception thrown to inform the user the method
> getColumnClassName(int) is not implemented. This will futher fixes method
> ResultSet.getObject(int) since it requires the getColumnClassName(int)
> method to return the proper java class used to map the database column.
>
> *** ResultSetMetaData.java.orig Mon Apr 17 16:07:51 2000
> --- ResultSetMetaData.java Mon Dec 17 22:26:24 2001
> ***************
> *** 448,454 ****
> --- 448,513 ----
>       // This can hook into our PG_Object mechanism
>       public String getColumnClassName(int column) throws SQLException
>       {
> + /*
> +     The following data type mapping came from ../Field.java.
> +
> +     "int2",
> +     "int4","oid",
> +     "int8",
> +     "cash","money",
> +     "numeric",
> +     "float4",
> +     "float8",
> +     "bpchar","char","char2","char4","char8","char16",
> +     "varchar","text","name","filename",
> +     "bool",
> +     "date",
> +     "time",
> +     "abstime","timestamp"
> +
> +     Types.SMALLINT,
> +     Types.INTEGER,Types.INTEGER,
> +     Types.BIGINT,
> +     Types.DOUBLE,Types.DOUBLE,
> +     Types.NUMERIC,
> +     Types.REAL,
> +     Types.DOUBLE,
> +     Types.CHAR,Types.CHAR,Types.CHAR,Types.CHAR,Types.CHAR,Types.CHAR,
> +     Types.VARCHAR,Types.VARCHAR,Types.VARCHAR,Types.VARCHAR,
> +     Types.BIT,
> +     Types.DATE,
> +     Types.TIME,
> +     Types.TIMESTAMP,Types.TIMESTAMP
> + */
> +
> +     int sql_type = getField(column).getSQLType();
> +
> +     switch (sql_type)
> +       {
> +       case Types.BIT:
> +         return("java.lang.Boolean");
> +       case Types.SMALLINT:
> +         return("java.lang.Integer");
> +       case Types.INTEGER:
> +         return("java.lang.Integer");
> +       case Types.BIGINT:
> +         return("java.lang.Long");
> +       case Types.NUMERIC:
> +         return("java.math.BigDecimal");
> +       case Types.REAL:
> +         return("java.lang.Float");
> +       case Types.DOUBLE:
> +         return("java.lang.Double");
> +       case Types.CHAR:
> +       case Types.VARCHAR:
> +         return("java.lang.String");
> +       case Types.DATE:
> +       case Types.TIME:
> +       case Types.TIMESTAMP:
> +         return("java.sql.Timestamp");
> +       default:
>    throw org.postgresql.Driver.notImplemented();
> +       }
>       }
>
>   }
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo@postgresql.org so that your
> message can get through to the mailing list cleanly
>

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026