This is an automated email from the git hooks/post-receive script. ebourg-guest pushed a commit to tag REL8_4_702 in repository libpostgresql-jdbc-java.
commit df9c12a32c9af8e9bd756ec4f04d76772508f0c1 Author: Kris Jurka <[email protected]> Date: Fri Dec 4 21:22:02 2009 +0000 Add the partial index constraint to the FILTER_CONDITION column returned by DatabaseMetaData.getIndexInfo. Mark Kirkwood --- .../jdbc2/AbstractJdbc2DatabaseMetaData.java | 23 +++++++++++++++++----- .../test/jdbc2/DatabaseMetaDataTest.java | 21 +++++++++++++++++++- 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/org/postgresql/jdbc2/AbstractJdbc2DatabaseMetaData.java b/org/postgresql/jdbc2/AbstractJdbc2DatabaseMetaData.java index 9f4a0ed..8af40e9 100644 --- a/org/postgresql/jdbc2/AbstractJdbc2DatabaseMetaData.java +++ b/org/postgresql/jdbc2/AbstractJdbc2DatabaseMetaData.java @@ -3,7 +3,7 @@ * Copyright (c) 2004-2008, PostgreSQL Global Development Group * * IDENTIFICATION -* $PostgreSQL: pgjdbc/org/postgresql/jdbc2/AbstractJdbc2DatabaseMetaData.java,v 1.51 2009/03/12 03:59:50 jurka Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/jdbc2/AbstractJdbc2DatabaseMetaData.java,v 1.51.2.1 2009/12/04 19:48:01 jurka Exp $ * *------------------------------------------------------------------------- */ @@ -3840,7 +3840,7 @@ public abstract class AbstractJdbc2DatabaseMetaData if( connection.haveMinimumServerVersion("7.4")) { - sql += " CASE WHEN i.indexprs IS NULL THEN a.attname ELSE pg_get_indexdef(ci.oid,a.attnum,false) END AS COLUMN_NAME, "; + sql += " CASE WHEN i.indexprs IS NULL THEN a.attname ELSE pg_catalog.pg_get_indexdef(ci.oid,a.attnum,false) END AS COLUMN_NAME, "; } else { @@ -3850,9 +3850,22 @@ public abstract class AbstractJdbc2DatabaseMetaData sql += " NULL AS ASC_OR_DESC, " + " ci.reltuples AS CARDINALITY, " + - " ci.relpages AS PAGES, " + - " NULL AS FILTER_CONDITION " + - from + + " ci.relpages AS PAGES, "; + + if( connection.haveMinimumServerVersion("7.3")) + { + sql += " pg_catalog.pg_get_expr(i.indpred, i.indrelid) AS FILTER_CONDITION "; + } + else if( connection.haveMinimumServerVersion("7.2")) + { + sql += " pg_get_expr(i.indpred, i.indrelid) AS FILTER_CONDITION "; + } + else + { + sql += " NULL AS FILTER_CONDITION "; + } + + sql += from + " WHERE ct.oid=i.indrelid AND ci.oid=i.indexrelid AND a.attrelid=ci.oid AND ci.relam=am.oid " + where + " AND ct.relname = '" + escapeQuotes(tableName) + "' "; diff --git a/org/postgresql/test/jdbc2/DatabaseMetaDataTest.java b/org/postgresql/test/jdbc2/DatabaseMetaDataTest.java index b405ac6..7e96add 100644 --- a/org/postgresql/test/jdbc2/DatabaseMetaDataTest.java +++ b/org/postgresql/test/jdbc2/DatabaseMetaDataTest.java @@ -3,7 +3,7 @@ * Copyright (c) 2004-2008, PostgreSQL Global Development Group * * IDENTIFICATION -* $PostgreSQL: pgjdbc/org/postgresql/test/jdbc2/DatabaseMetaDataTest.java,v 1.43 2008/04/15 05:22:14 jurka Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/test/jdbc2/DatabaseMetaDataTest.java,v 1.44 2008/11/07 09:11:37 jurka Exp $ * *------------------------------------------------------------------------- */ @@ -447,6 +447,25 @@ public class DatabaseMetaDataTest extends TestCase rs.close(); } + public void testPartialIndexInfo() throws SQLException + { + Statement stmt = con.createStatement(); + stmt.execute("create index idx_p_name_id on testmetadata (name) where id > 5"); + stmt.close(); + + DatabaseMetaData dbmd = con.getMetaData(); + ResultSet rs = dbmd.getIndexInfo(null, null, "testmetadata", false, false); + + assertTrue(rs.next()); + assertEquals("idx_p_name_id", rs.getString("INDEX_NAME")); + assertEquals(1, rs.getInt("ORDINAL_POSITION")); + assertEquals("name", rs.getString("COLUMN_NAME")); + assertEquals("(id > 5)", rs.getString("FILTER_CONDITION")); + assertTrue(rs.getBoolean("NON_UNIQUE")); + + rs.close(); + } + public void testTableTypes() throws SQLException { // At the moment just test that no exceptions are thrown KJ -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/libpostgresql-jdbc-java.git _______________________________________________ pkg-java-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits

