### Eclipse Workspace Patch 1.0 #P postgres jdbc Index: org/postgresql/test/jdbc2/DatabaseMetaDataTest.java =================================================================== RCS file: /usr/local/cvsroot/pgjdbc/pgjdbc/org/postgresql/test/jdbc2/DatabaseMetaDataTest.java,v retrieving revision 1.36 diff -u -r1.36 DatabaseMetaDataTest.java --- org/postgresql/test/jdbc2/DatabaseMetaDataTest.java 3 Feb 2006 21:10:15 -0000 1.36 +++ org/postgresql/test/jdbc2/DatabaseMetaDataTest.java 6 Feb 2007 09:27:39 -0000 @@ -39,7 +39,10 @@ TestUtil.createTable( con, "sercoltest", "a int, b serial, c bigserial"); TestUtil.createTable( con, "\"a\\\"", "a int4"); TestUtil.createTable( con, "\"a'\"", "a int4"); - + TestUtil.createFunction(con, "inargtest", "arg1 int, arg2 varchar", "integer" , "select * from pg_proc;"); + TestUtil.createFunction(con, "outargtest", "arg1 int, arg2 varchar, out arg3 int4, out arg4 char", "record" , "select * from pg_proc;"); + TestUtil.createFunction(con, "inoutargtest", "arg1 int, arg2 varchar, out arg3 int4, out arg4 char, inout arg5 int4, inout arg6 varchar", "record" , "select * from pg_proc;"); + Statement stmt = con.createStatement(); //we add the following comments to ensure the joins to the comments //are done correctly. This ensures we correctly test that case. @@ -54,6 +57,9 @@ TestUtil.dropSequence( con, "sercoltest_c_seq"); TestUtil.dropTable( con, "\"a\\\""); TestUtil.dropTable( con, "\"a'\""); + TestUtil.dropFunction(con, "inargtest (int, varchar)"); +// TestUtil.dropFunction(con, "outargtest (IN int,IN varchar,OUT int4,OUT char)"); +// TestUtil.dropFunction(con, "inoutargtest (IN int,IN varchar,OUT int4,OUT char,INOUT int4,INOUT varchar)"); TestUtil.closeDB( con ); } @@ -420,15 +426,201 @@ rs.close(); } - public void testProcedureColumns() throws SQLException + public void testProcedureColumnsIN() throws SQLException { - // At the moment just test that no exceptions are thrown KJ DatabaseMetaData dbmd = con.getMetaData(); assertNotNull(dbmd); - ResultSet rs = dbmd.getProcedureColumns(null, null, null, null); + ResultSet rs = dbmd.getProcedureColumns(null, null, "inargtest", "%"); + + assertTrue(rs.next()); + assertEquals("inargtest",rs.getString(3)); + if (TestUtil.haveMinimumServerVersion(con, "8.0")) + assertEquals("returnValue",rs.getString(4)); + + if (TestUtil.haveMinimumServerVersion(con, "8.1")) + assertEquals("5",rs.getString(5)); + + assertEquals("4",rs.getString(6)); + assertEquals("int4",rs.getString(7)); + assertEquals("2",rs.getString(12)); + + assertTrue(rs.next()); + if (TestUtil.haveMinimumServerVersion(con, "8.0")) + assertEquals("arg1",rs.getString(4)); + + if (TestUtil.haveMinimumServerVersion(con, "8.1")) + assertEquals("1",rs.getString(5)); + + assertEquals("4",rs.getString(6)); + assertEquals("int4",rs.getString(7)); + assertEquals("2",rs.getString(12)); + + assertTrue(rs.next()); + if (TestUtil.haveMinimumServerVersion(con, "8.0")) + assertEquals("arg2",rs.getString(4)); + + if (TestUtil.haveMinimumServerVersion(con, "8.1")) + assertEquals("1",rs.getString(5)); + + assertEquals("12",rs.getString(6)); + assertEquals("varchar",rs.getString(7)); + assertEquals("2",rs.getString(12)); rs.close(); + } + public void testProcedureColumnsOUT() throws SQLException + { + DatabaseMetaData dbmd = con.getMetaData(); + assertNotNull(dbmd); + ResultSet rs = dbmd.getProcedureColumns(null, null, "outargtest", "%"); + + assertTrue(rs.next()); + assertEquals("outargtest",rs.getString(3)); + if (TestUtil.haveMinimumServerVersion(con, "8.0")) + assertEquals("returnValue",rs.getString(4)); + + if (TestUtil.haveMinimumServerVersion(con, "8.1")) + assertEquals("5",rs.getString(5)); + + assertEquals("1111",rs.getString(6)); + assertEquals("record",rs.getString(7)); + assertEquals("2",rs.getString(12)); + + assertTrue(rs.next()); + if (TestUtil.haveMinimumServerVersion(con, "8.0")) + assertEquals("arg1",rs.getString(4)); + + if (TestUtil.haveMinimumServerVersion(con, "8.1")) + assertEquals("1",rs.getString(5)); + + assertEquals("4",rs.getString(6)); + assertEquals("int4",rs.getString(7)); + assertEquals("2",rs.getString(12)); + + assertTrue(rs.next()); + if (TestUtil.haveMinimumServerVersion(con, "8.0")) + assertEquals("arg2",rs.getString(4)); + + if (TestUtil.haveMinimumServerVersion(con, "8.1")) + assertEquals("1",rs.getString(5)); + + assertEquals("12",rs.getString(6)); + assertEquals("varchar",rs.getString(7)); + assertEquals("2",rs.getString(12)); + + assertTrue(rs.next()); + if (TestUtil.haveMinimumServerVersion(con, "8.0")) + assertEquals("arg3",rs.getString(4)); + + if (TestUtil.haveMinimumServerVersion(con, "8.1")) + assertEquals("4",rs.getString(5)); + + assertNull(rs.getString(6)); + assertNull(rs.getString(7)); + assertEquals("2",rs.getString(12)); + + assertTrue(rs.next()); + if (TestUtil.haveMinimumServerVersion(con, "8.0")) + assertEquals("arg4",rs.getString(4)); + + if (TestUtil.haveMinimumServerVersion(con, "8.1")) + assertEquals("4",rs.getString(5)); + + assertNull(rs.getString(6)); + assertNull(rs.getString(7)); + assertEquals("2",rs.getString(12)); + rs.close(); + + } + + public void testProcedureColumnsINOUT() throws SQLException + { + DatabaseMetaData dbmd = con.getMetaData(); + assertNotNull(dbmd); + ResultSet rs = dbmd.getProcedureColumns(null, null, "inoutargtest", "%"); + + assertTrue(rs.next()); + assertEquals("inoutargtest",rs.getString(3)); + if (TestUtil.haveMinimumServerVersion(con, "8.0")) + assertEquals("returnValue",rs.getString(4)); + + if (TestUtil.haveMinimumServerVersion(con, "8.1")) + assertEquals("5",rs.getString(5)); + + assertEquals("1111",rs.getString(6)); + assertEquals("record",rs.getString(7)); + assertEquals("2",rs.getString(12)); + + assertTrue(rs.next()); + if (TestUtil.haveMinimumServerVersion(con, "8.0")) + assertEquals("arg1",rs.getString(4)); + + if (TestUtil.haveMinimumServerVersion(con, "8.1")) + assertEquals("1",rs.getString(5)); + + assertEquals("4",rs.getString(6)); + assertEquals("int4",rs.getString(7)); + assertEquals("2",rs.getString(12)); + + assertTrue(rs.next()); + if (TestUtil.haveMinimumServerVersion(con, "8.0")) + assertEquals("arg2",rs.getString(4)); + + if (TestUtil.haveMinimumServerVersion(con, "8.1")) + assertEquals("1",rs.getString(5)); + + assertEquals("12",rs.getString(6)); + assertEquals("varchar",rs.getString(7)); + assertEquals("2",rs.getString(12)); + + assertTrue(rs.next()); + if (TestUtil.haveMinimumServerVersion(con, "8.0")) + assertEquals("arg3",rs.getString(4)); + + if (TestUtil.haveMinimumServerVersion(con, "8.1")) + assertEquals("4",rs.getString(5)); + + assertNull(rs.getString(6)); + assertNull(rs.getString(7)); + assertEquals("2",rs.getString(12)); + + assertTrue(rs.next()); + if (TestUtil.haveMinimumServerVersion(con, "8.0")) + assertEquals("arg4",rs.getString(4)); + + if (TestUtil.haveMinimumServerVersion(con, "8.1")) + assertEquals("4",rs.getString(5)); + + assertNull(rs.getString(6)); + assertNull(rs.getString(7)); + assertEquals("2",rs.getString(12)); + + assertTrue(rs.next()); + if (TestUtil.haveMinimumServerVersion(con, "8.0")) + assertEquals("arg5",rs.getString(4)); + + if (TestUtil.haveMinimumServerVersion(con, "8.1")) + assertEquals("2",rs.getString(5)); + + assertEquals("4",rs.getString(6)); + assertEquals("int4",rs.getString(7)); + assertEquals("2",rs.getString(12)); + + assertTrue(rs.next()); + if (TestUtil.haveMinimumServerVersion(con, "8.0")) + assertEquals("arg6",rs.getString(4)); + + if (TestUtil.haveMinimumServerVersion(con, "8.1")) + assertEquals("2",rs.getString(5)); + + assertEquals("12",rs.getString(6)); + assertEquals("varchar",rs.getString(7)); + assertEquals("2",rs.getString(12)); + rs.close(); + + } + public void testVersionColumns() throws SQLException { // At the moment just test that no exceptions are thrown KJ