This is an automated email from the git hooks/post-receive script. ebourg-guest pushed a commit to tag REL8_4_703 in repository libpostgresql-jdbc-java.
commit 2fcd5ec6f92b267a43f41ba17cefc5de2f9e13c5 Author: Kris Jurka <[email protected]> Date: Sat Oct 23 07:31:00 2010 +0000 If a domain has a not null constraint, report that information in the metadata for both DatabaseMetaData.getColumns and ResultSetMetaData.isNullable. Reported by Thomas Kellerer --- org/postgresql/core/Field.java | 4 ++-- .../jdbc2/AbstractJdbc2DatabaseMetaData.java | 4 ++-- .../test/jdbc2/DatabaseMetaDataTest.java | 24 +++++++++++++++++++++- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/org/postgresql/core/Field.java b/org/postgresql/core/Field.java index e626d07..f783819 100644 --- a/org/postgresql/core/Field.java +++ b/org/postgresql/core/Field.java @@ -3,7 +3,7 @@ * Copyright (c) 2003-2008, PostgreSQL Global Development Group * * IDENTIFICATION -* $PostgreSQL: pgjdbc/org/postgresql/core/Field.java,v 1.12 2008/01/08 06:56:27 jurka Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/core/Field.java,v 1.13 2009/03/12 03:59:50 jurka Exp $ * *------------------------------------------------------------------------- */ @@ -159,7 +159,7 @@ public class Field PreparedStatement ps = null; try { - ps = con.prepareStatement("SELECT attnotnull FROM pg_catalog.pg_attribute WHERE attrelid = ? AND attnum = ?;"); + ps = con.prepareStatement("SELECT a.attnotnull OR (t.typtype = 'd' AND t.typnotnull) FROM pg_catalog.pg_attribute a JOIN pg_catalog.pg_type t ON (a.atttypid = t.oid) WHERE a.attrelid = ? AND a.attnum = ?;"); ps.setInt(1, tableOid); ps.setInt(2, positionInTable); res = ps.executeQuery(); diff --git a/org/postgresql/jdbc2/AbstractJdbc2DatabaseMetaData.java b/org/postgresql/jdbc2/AbstractJdbc2DatabaseMetaData.java index 08ad0e6..58e7a63 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.2.5 2010/08/10 19:46:19 jurka Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/jdbc2/AbstractJdbc2DatabaseMetaData.java,v 1.51.2.6 2010/10/16 00:39:14 jurka Exp $ * *------------------------------------------------------------------------- */ @@ -2281,7 +2281,7 @@ public abstract class AbstractJdbc2DatabaseMetaData else sql = ""; - sql += "SELECT n.nspname,c.relname,a.attname,a.atttypid,a.attnotnull,a.atttypmod,a.attlen,"; + sql += "SELECT n.nspname,c.relname,a.attname,a.atttypid,a.attnotnull OR (t.typtype = 'd' AND t.typnotnull) AS attnotnull,a.atttypmod,a.attlen,"; if (connection.haveMinimumServerVersion("8.4")) sql += "row_number() OVER (PARTITION BY a.attrelid ORDER BY a.attnum) AS attnum, "; diff --git a/org/postgresql/test/jdbc2/DatabaseMetaDataTest.java b/org/postgresql/test/jdbc2/DatabaseMetaDataTest.java index 7dd072c..07c5369 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.44.2.2 2009/12/09 01:06:41 jurka Exp $ +* $PostgreSQL: pgjdbc/org/postgresql/test/jdbc2/DatabaseMetaDataTest.java,v 1.44.2.3 2010/10/16 00:39:14 jurka Exp $ * *------------------------------------------------------------------------- */ @@ -55,6 +55,11 @@ public class DatabaseMetaDataTest extends TestCase stmt.execute("CREATE OR REPLACE FUNCTION f3(IN a int, INOUT b varchar, OUT c timestamptz) AS $f$ BEGIN b := 'a'; c := now(); return; END; $f$ LANGUAGE 'plpgsql'"); } stmt.execute("CREATE OR REPLACE FUNCTION f4(int) RETURNS testmetadata AS 'SELECT 1, ''a''::text, now(), ''c''::text, ''q''::text' LANGUAGE 'SQL'"); + + if (TestUtil.haveMinimumServerVersion(con, "7.3")) { + stmt.execute("CREATE DOMAIN nndom AS int not null"); + stmt.execute("CREATE TABLE domaintable (id nndom)"); + } stmt.close(); } @@ -80,6 +85,10 @@ public class DatabaseMetaDataTest extends TestCase if (TestUtil.haveMinimumServerVersion(con, "8.1")) { stmt.execute("DROP FUNCTION f3(int, varchar)"); } + if (TestUtil.haveMinimumServerVersion(con, "7.3")) { + stmt.execute("DROP TABLE domaintable"); + stmt.execute("DROP DOMAIN nndom"); + } TestUtil.closeDB( con ); } @@ -1016,4 +1025,17 @@ public class DatabaseMetaDataTest extends TestCase assertTrue(!rs.next()); } + public void testNotNullDomainColumn() throws SQLException + { + if (!TestUtil.haveMinimumServerVersion(con, "7.3")) + return; + + DatabaseMetaData dbmd = con.getMetaData(); + ResultSet rs = dbmd.getColumns("", "", "domaintable", ""); + assertTrue(rs.next()); + assertEquals("id", rs.getString("COLUMN_NAME")); + assertEquals("NO", rs.getString("IS_NULLABLE")); + assertTrue(!rs.next()); + } + } -- 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

