Re: Patch for getBestRowIdentifier (for testing with Oracle - Mailing list pgsql-jdbc

From Kris Jurka
Subject Re: Patch for getBestRowIdentifier (for testing with Oracle
Date
Msg-id Pine.LNX.4.33.0209121259320.6022-100000@leary.csoft.net
Whole thread Raw
In response to Re: Patch for getBestRowIdentifier (for testing with Oracle JDeveloper)  (snpe <snpe@snpe.co.yu>)
List pgsql-jdbc
I will add a version of this patch to my work on making DatabaseMetaData
schema aware.

Kris Jurka


On Wed, 11 Sep 2002, snpe wrote:

> I'am sorry (reverse *java and *orig)
>
> correct patch
> --- AbstractJdbc1DatabaseMetaData.java.orig    Wed Sep 11 22:20:36 2002
> +++ AbstractJdbc1DatabaseMetaData.java    Wed Sep 11 22:50:37 2002
> @@ -2381,21 +2381,44 @@
>      // Implementation note: This is required for Borland's JBuilder to work
>      public java.sql.ResultSet getBestRowIdentifier(String catalog, String
> schema, String table, int scope, boolean nullable) throws SQLException
>      {
> -        // for now, this returns an empty result set.
> -        Field f[] = new Field[8];
> -        ResultSet r;    // ResultSet for the SQL query that we need to do
> -        Vector v = new Vector();        // The new ResultSet tuple stuff
> +        if (connection.haveMinimumServerVersion("7.3")) {
> +            StringBuffer sql = new StringBuffer(512);
> +            sql.append("SELECT " +
> +                scope + " as SCOPE," +
> +                "a.attname as COLUMN_NAME," +
> +                "a.atttypid as DATA_TYPE," +
> +                "t.typname as TYPE_NAME," +
> +                "t.typlen as COLUMN_SIZE," +
> +                "0::int4 as BUFFER_LENGTH," +
> +                "0::int4 as DECIMAL_DIGITS," +
> +                "0::int4 as PSEUDO_COLUMN " +
> +             "FROM pg_catalog.pg_type t,pg_catalog.pg_class bc," +
> +                "pg_catalog.pg_class ic, pg_catalog.pg_index i, pg_catalog.pg_attribute a
> " +
> +             "WHERE bc.relkind = 'r' " +
> +              "AND t.oid=a.atttypid " +
> +              "AND upper(bc.relname) = upper('" + table + "') " +
> +              "AND i.indrelid = bc.oid " +
> +              "AND i.indexrelid = ic.oid " +
> +              "AND ic.oid = a.attrelid " +
> +              "AND i.indisprimary='t' ");
> +            return connection.createStatement().executeQuery(sql.toString());
> +        } else {
> +            // for now, this returns an empty result set.
> +            Field f[] = new Field[8];
> +            ResultSet r;    // ResultSet for the SQL query that we need to do
> +            Vector v = new Vector();        // The new ResultSet tuple stuff
>
> -        f[0] = new Field(connection, "SCOPE", iInt2Oid, 2);
> -        f[1] = new Field(connection, "COLUMN_NAME", iVarcharOid, NAME_SIZE);
> -        f[2] = new Field(connection, "DATA_TYPE", iInt2Oid, 2);
> -        f[3] = new Field(connection, "TYPE_NAME", iVarcharOid, NAME_SIZE);
> -        f[4] = new Field(connection, "COLUMN_SIZE", iInt4Oid, 4);
> -        f[5] = new Field(connection, "BUFFER_LENGTH", iInt4Oid, 4);
> -        f[6] = new Field(connection, "DECIMAL_DIGITS", iInt2Oid, 2);
> -        f[7] = new Field(connection, "PSEUDO_COLUMN", iInt2Oid, 2);
> +            f[0] = new Field(connection, "SCOPE", iInt2Oid, 2);
> +            f[1] = new Field(connection, "COLUMN_NAME", iVarcharOid, NAME_SIZE);
> +            f[2] = new Field(connection, "DATA_TYPE", iInt2Oid, 2);
> +            f[3] = new Field(connection, "TYPE_NAME", iVarcharOid, NAME_SIZE);
> +            f[4] = new Field(connection, "COLUMN_SIZE", iInt4Oid, 4);
> +            f[5] = new Field(connection, "BUFFER_LENGTH", iInt4Oid, 4);
> +            f[6] = new Field(connection, "DECIMAL_DIGITS", iInt2Oid, 2);
> +            f[7] = new Field(connection, "PSEUDO_COLUMN", iInt2Oid, 2);
>
> -        return connection.getResultSet(null, f, v, "OK", 1);
> +            return connection.getResultSet(null, f, v, "OK", 1);
> +        }
>      }
>
>      /*
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
>


pgsql-jdbc by date:

Previous
From: Kris Jurka
Date:
Subject: Re: Is getProcedureColumns working for pgjdbc2.jar?
Next
From: Stephen Bacon
Date:
Subject: Connection reset errors