pg.ddx.io  pgsql-interfaces@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Christopher Cain <ccain@mhsoftware.com>
To: pgsql-interfaces@postgresql.org
To: pgsql-patches@postgresql.org
Subject: JDBC Patch
Date: Thu, 24 Aug 2000 13:30:14 -0600
Message-ID: <39A577C6.52AD43D8@mhsoftware.com> (raw)

This patch for the 7.0.2 JDBC interface addresses four issues I
encountered while getting my reporting tool up and running with the
driver. All changes are in the DatabaseMetaData class.

Problem: The getDatabaseProductVersion() method was returning "6.5.2"
Resolution: Changed it to return "7.0.2"

Problem: A call to getTables() with an unsupported table type (in the
String array) resulted in a malformed SQL statement and subsequent
parsing error
Resolution: Unsupported table types are now ignored without error

Problem: In a getTables() call, tables and views were both returned by
the "TABLE" table type, and the "VIEW" table type was unsupported
Resolution: Changed the "TABLE" type to return only physical tables and
added support for the "VIEW" table type (returning only views)

Problem: The getIdentifierQuoteString() method was returning null
Resolution: This method now returns a double-quote

Regards ...

- Christopher

Attachments:

jdbc-0824.patch (text/plain, 5.5K) download diff -U 5 -r postgresql-7.0.2/src/interfaces/jdbc/org/postgresql/jdbc1/DatabaseMetaData.java postgresql-7.0.2a/src/interfaces/jdbc/org/postgresql/jdbc1/DatabaseMetaData.java --- postgresql-7.0.2/src/interfaces/jdbc/org/postgresql/jdbc1/DatabaseMetaData.java Mon Apr 17 14:07:48 2000 +++ postgresql-7.0.2a/src/interfaces/jdbc/org/postgresql/jdbc1/DatabaseMetaData.java Thu Aug 24 11:42:28 2000 @@ -177,11 +177,11 @@ * @return the database version * @exception SQLException if a database access error occurs */ public String getDatabaseProductVersion() throws SQLException { - return ("6.5.2"); + return ("7.0.2"); } /** * What is the name of this JDBC driver? If we don't know this * we are doing something wrong! @@ -361,11 +361,11 @@ * @return the quoting string * @exception SQLException if a database access error occurs */ public String getIdentifierQuoteString() throws SQLException { - return null; + return "\""; } /** * Get a comma separated list of all a database's SQL keywords that * are NOT also SQL92 keywords. @@ -1652,14 +1652,14 @@ // Now form the query StringBuffer sql = new StringBuffer("select relname,oid from pg_class where ("); boolean notFirst=false; for(int i=0;i<types.length;i++) { - if(notFirst) - sql.append(" or "); for(int j=0;j<getTableTypes.length;j++) if(getTableTypes[j][0].equals(types[i])) { + if(notFirst) + sql.append(" or "); sql.append(getTableTypes[j][1]); notFirst=true; } } @@ -1704,22 +1704,23 @@ // Each supported type consists of it's name, and the sql where // clause to retrieve that value. // // IMPORTANT: the query must be enclosed in ( ) private static final String getTableTypes[][] = { - {"TABLE", "(relkind='r' and relname !~ '^pg_' and relname !~ '^xinv')"}, + {"TABLE", "(relkind='r' and relhasrules='f' and relname !~ '^pg_' and relname !~ '^xinv')"}, + {"VIEW", "(relkind='r' and relhasrules='t' and relname !~ '^pg_' and relname !~ '^xinv')"}, {"INDEX", "(relkind='i' and relname !~ '^pg_' and relname !~ '^xinx')"}, {"LARGE OBJECT", "(relkind='r' and relname ~ '^xinv')"}, {"SEQUENCE", "(relkind='S' and relname !~ '^pg_')"}, {"SYSTEM TABLE", "(relkind='r' and relname ~ '^pg_')"}, {"SYSTEM INDEX", "(relkind='i' and relname ~ '^pg_')"} }; // These are the default tables, used when NULL is passed to getTables // The choice of these provide the same behaviour as psql's \d private static final String defaultTableTypes[] = { - "TABLE","INDEX","SEQUENCE" + "TABLE","VIEW","INDEX","SEQUENCE" }; /** * Get the schema names available in this database. The results * are ordered by schema name. diff -U 5 -r postgresql-7.0.2/src/interfaces/jdbc/org/postgresql/jdbc2/DatabaseMetaData.java postgresql-7.0.2a/src/interfaces/jdbc/org/postgresql/jdbc2/DatabaseMetaData.java --- postgresql-7.0.2/src/interfaces/jdbc/org/postgresql/jdbc2/DatabaseMetaData.java Mon Apr 17 14:07:50 2000 +++ postgresql-7.0.2a/src/interfaces/jdbc/org/postgresql/jdbc2/DatabaseMetaData.java Wed Aug 23 15:14:50 2000 @@ -177,11 +177,11 @@ * @return the database version * @exception SQLException if a database access error occurs */ public String getDatabaseProductVersion() throws SQLException { - return ("6.5.2"); + return ("7.0.2"); } /** * What is the name of this JDBC driver? If we don't know this * we are doing something wrong! @@ -361,11 +361,11 @@ * @return the quoting string * @exception SQLException if a database access error occurs */ public String getIdentifierQuoteString() throws SQLException { - return null; + return "\""; } /** * Get a comma separated list of all a database's SQL keywords that * are NOT also SQL92 keywords. @@ -1652,14 +1652,14 @@ // Now form the query StringBuffer sql = new StringBuffer("select relname,oid from pg_class where ("); boolean notFirst=false; for(int i=0;i<types.length;i++) { - if(notFirst) - sql.append(" or "); for(int j=0;j<getTableTypes.length;j++) if(getTableTypes[j][0].equals(types[i])) { + if(notFirst) + sql.append(" or "); sql.append(getTableTypes[j][1]); notFirst=true; } } @@ -1704,22 +1704,23 @@ // Each supported type consists of it's name, and the sql where // clause to retrieve that value. // // IMPORTANT: the query must be enclosed in ( ) private static final String getTableTypes[][] = { - {"TABLE", "(relkind='r' and relname !~ '^pg_' and relname !~ '^xinv')"}, + {"TABLE", "(relkind='r' and relhasrules='f' and relname !~ '^pg_' and relname !~ '^xinv')"}, + {"VIEW", "(relkind='r' and relhasrules='t' and relname !~ '^pg_' and relname !~ '^xinv')"}, {"INDEX", "(relkind='i' and relname !~ '^pg_' and relname !~ '^xinx')"}, {"LARGE OBJECT", "(relkind='r' and relname ~ '^xinv')"}, {"SEQUENCE", "(relkind='S' and relname !~ '^pg_')"}, {"SYSTEM TABLE", "(relkind='r' and relname ~ '^pg_')"}, {"SYSTEM INDEX", "(relkind='i' and relname ~ '^pg_')"} }; // These are the default tables, used when NULL is passed to getTables // The choice of these provide the same behaviour as psql's \d private static final String defaultTableTypes[] = { - "TABLE","INDEX","SEQUENCE" + "TABLE","VIEW","INDEX","SEQUENCE" }; /** * Get the schema names available in this database. The results * are ordered by schema name.

view thread (10+ messages)  latest in thread

Message-ID: <39A577C6.52AD43D8@mhsoftware.com>
Permalink:  ../39A577C6.52AD43D8@mhsoftware.com/
Also on:    postgresql.org/message-id/39A577C6.52AD43D8@mhsoftware.com

 ·  · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-interfaces@postgresql.org
  Cc: ccain@mhsoftware.com, pgsql-patches@postgresql.org
  Subject: Re: JDBC Patch
  In-Reply-To: <39A577C6.52AD43D8@mhsoftware.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox