9
9
*
10
10
* PS: Do you know how difficult it is to type on a train? ;-)
11
11
*
12
- * $Id: DatabaseMetaDataTest.java,v 1.5 2002/04/16 15:25:17 davec Exp $
12
+ * $Id: DatabaseMetaDataTest.java,v 1.6 2002/05/30 16:26:55 davec Exp $
13
13
*/
14
14
15
15
public class DatabaseMetaDataTest extends TestCase
@@ -32,7 +32,7 @@ protected void setUp() throws Exception
32
32
protected void tearDown ()throws Exception
33
33
{
34
34
JDBC2Tests .dropTable (con ,"testmetadata" );
35
-
35
+
36
36
JDBC2Tests .closeDB (con );
37
37
}
38
38
/*
@@ -51,23 +51,23 @@ public void testGetMetaData()
51
51
assertTrue (rs .getString ("TABLE_NAME" ).equals ("testmetadata" ) );
52
52
53
53
rs .close ();
54
-
54
+
55
55
rs =dbmd .getColumns ("" ,"" ,"test%" ,"%" );
56
56
assertTrue (rs .next () );
57
57
assertTrue (rs .getString ("TABLE_NAME" ).equals ("testmetadata" ) );
58
58
assertTrue (rs .getString ("COLUMN_NAME" ).equals ("id" ) );
59
59
assertTrue (rs .getInt ("DATA_TYPE" ) ==java .sql .Types .INTEGER );
60
-
60
+
61
61
assertTrue (rs .next () );
62
62
assertTrue (rs .getString ("TABLE_NAME" ).equals ("testmetadata" ) );
63
63
assertTrue (rs .getString ("COLUMN_NAME" ).equals ("name" ) );
64
64
assertTrue (rs .getInt ("DATA_TYPE" ) ==java .sql .Types .VARCHAR );
65
-
65
+
66
66
assertTrue (rs .next () );
67
67
assertTrue (rs .getString ("TABLE_NAME" ).equals ("testmetadata" ) );
68
68
assertTrue (rs .getString ("COLUMN_NAME" ).equals ("updated" ) );
69
69
assertTrue (rs .getInt ("DATA_TYPE" ) ==java .sql .Types .TIMESTAMP );
70
-
70
+
71
71
}
72
72
catch (SQLException ex )
73
73
{
@@ -228,6 +228,75 @@ public void testIdentifiers()
228
228
}
229
229
}
230
230
231
+ public void testForeignKeys ()
232
+ {
233
+ try
234
+ {
235
+ Connection con1 =JDBC2Tests .openDB ();
236
+ JDBC2Tests .createTable (con1 ,"people" ,"id int4 primary key, name text" );
237
+ JDBC2Tests .createTable (con1 ,"policy" ,"id int4 primary key, name text" );
238
+ JDBC2Tests .createTable (con1 ,"users" ,"id int4 primary key, people_id int4, policy_id int4," +
239
+ "CONSTRAINT people FOREIGN KEY (people_id) references people(id)," +
240
+ "constraint policy FOREIGN KEY (policy_id) references policy(id)" );
241
+
242
+
243
+ DatabaseMetaData dbmd =con .getMetaData ();
244
+ assertNotNull (dbmd );
245
+
246
+ ResultSet rs =dbmd .getImportedKeys (null ,"" ,"users" );
247
+ int j =0 ;
248
+ for (;rs .next ();j ++ )
249
+ {
250
+
251
+ String pkTableName =rs .getString ("PKTABLE_NAME" );
252
+ assertTrue (pkTableName .equals ("people" ) ||pkTableName .equals ("policy" ) );
253
+
254
+ String pkColumnName =rs .getString ("PKCOLUMN_NAME" );
255
+ assertTrue (pkColumnName .equals ("id" ) );
256
+
257
+ String fkTableName =rs .getString ("FKTABLE_NAME" );
258
+ assertTrue (fkTableName .equals ("users" ) );
259
+
260
+ String fkColumnName =rs .getString ("FKCOLUMN_NAME" );
261
+ assertTrue (fkColumnName .equals ("people_id" ) ||fkColumnName .equals ("policy_id" ) ) ;
262
+
263
+ String fkName =rs .getString ("FK_NAME" );
264
+ assertTrue (fkName .equals ("people" ) ||fkName .equals ("policy" ) );
265
+
266
+ String pkName =rs .getString ("PK_NAME" );
267
+
268
+ }
269
+
270
+ assertTrue (j ==2 );
271
+
272
+ rs =dbmd .getExportedKeys (null ,"" ,"people" );
273
+
274
+ // this is hacky, but it will serve the purpose
275
+ assertTrue (rs .next () );
276
+
277
+ for (int i =0 ;i <14 ;i ++ )
278
+ {
279
+ assertTrue (rs .getString ("PKTABLE_NAME" ).equals ("people" ) );
280
+ assertTrue (rs .getString ("PKCOLUMN_NAME" ).equals ("id" ) );
281
+
282
+ assertTrue (rs .getString ("FKTABLE_NAME" ).equals ("users" ) );
283
+ assertTrue (rs .getString ("FKCOLUMN_NAME" ).equals ("people_id" ) );
284
+
285
+ assertTrue (rs .getString ("FK_NAME" ).equals ("people" ) );
286
+
287
+ }
288
+
289
+
290
+ JDBC2Tests .dropTable (con1 ,"users" );
291
+ JDBC2Tests .dropTable (con1 ,"people" );
292
+ JDBC2Tests .dropTable (con1 ,"policy" );
293
+
294
+ }
295
+ catch (SQLException ex )
296
+ {
297
+ fail (ex .getMessage ());
298
+ }
299
+ }
231
300
public void testTables ()
232
301
{
233
302
try