* Copyright (c) 2003, PostgreSQL Global Development Group
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/Attic/Driver.java.in,v 1.36 2003/09/13 04:02:12 barry Exp $
+ * $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/Attic/Driver.java.in,v 1.37 2003/11/03 15:22:06 davec Exp $
*
*-------------------------------------------------------------------------
*/
*
* Our protocol takes the forms:
* <PRE>
- * jdbc:org.postgresql://host:port/database?param1=val1&...
+ * jdbc:postgresql://host:port/database?param1=val1&...
* </PRE>
*
* @param url the URL of the database to connect to
* Returns true if the driver thinks it can open a connection to the
* given URL. Typically, drivers will return true if they understand
* the subprotocol specified in the URL and false if they don't. Our
- * protocols start with jdbc:org.postgresql:
+ * protocols start with jdbc:postgresql:
*
* @see java.sql.Driver#acceptsURL
* @param url the URL of the driver
//parse the server part of the url
StringTokenizer st = new StringTokenizer(l_urlServer, ":/", true);
- for (int count = 0; (st.hasMoreTokens()); count++)
+ int count;
+ for (count = 0; (st.hasMoreTokens()); count++)
{
String token = st.nextToken();
}
}
}
+ if (count <= 1) {
+ return null;
+ }
// if we extracted an IPv6 address out earlier put it back
if (ipv6address != null)
//parse the args part of the url
StringTokenizer qst = new StringTokenizer(l_urlArgs, "&");
- for (int count = 0; (qst.hasMoreTokens()); count++)
+ for (count = 0; (qst.hasMoreTokens()); count++)
{
String token = qst.nextToken();
int l_pos = token.indexOf('=');
if ( deleteRule != null )
{
- String rule = updateRule.substring(8, updateRule.length() - 4);
+ String rule = deleteRule.substring(8, deleteRule.length() - 4);
int action = java.sql.DatabaseMetaData.importedKeyNoAction;
if ("cascade".equals(rule))
action = java.sql.DatabaseMetaData.importedKeySetNull;
else if ("setdefault".equals(rule))
action = java.sql.DatabaseMetaData.importedKeySetDefault;
+ else if ("restrict".equals(rule))
+ action = java.sql.DatabaseMetaData.importedKeyRestrict;
tuple[10] = Integer.toString(action).getBytes();
}
* Copyright (c) 2003, PostgreSQL Global Development Group
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc1/Attic/AbstractJdbc1ResultSet.java,v 1.22 2003/10/29 02:39:09 davec Exp $
+ * $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc1/Attic/AbstractJdbc1ResultSet.java,v 1.23 2003/11/03 15:22:07 davec Exp $
*
*-------------------------------------------------------------------------
*/
public byte getByte(int columnIndex) throws SQLException
{
String s = getString(columnIndex);
-
- if (s != null)
+
+ if (s != null )
{
try
{
s = s.trim();
break;
}
+ if ( s.length() == 0 ) return 0;
return Byte.parseByte(s);
}
catch (NumberFormatException e)
*
* PS: Do you know how difficult it is to type on a train? ;-)
*
- * $Id: DatabaseMetaDataTest.java,v 1.18 2003/05/29 04:39:48 barry Exp $
+ * $Id: DatabaseMetaDataTest.java,v 1.19 2003/11/03 15:22:07 davec Exp $
*/
public class DatabaseMetaDataTest extends TestCase
fail(ex.getMessage());
}
}
+
+ public void testForeignKeyActions()
+ {
+ try {
+ Connection conn = TestUtil.openDB();
+ TestUtil.createTable(conn, "pkt", "id int primary key");
+ TestUtil.createTable(conn, "fkt1", "id int references pkt on update restrict on delete cascade");
+ TestUtil.createTable(conn, "fkt2", "id int references pkt on update set null on delete set default");
+ DatabaseMetaData dbmd = conn.getMetaData();
+
+ ResultSet rs = dbmd.getImportedKeys(null,"","fkt1");
+ assertTrue(rs.next());
+ assertTrue(rs.getInt("UPDATE_RULE") == DatabaseMetaData.importedKeyRestrict);
+ assertTrue(rs.getInt("DELETE_RULE") == DatabaseMetaData.importedKeyCascade);
+ rs.close();
+
+ rs = dbmd.getImportedKeys(null,"","fkt2");
+ assertTrue(rs.next());
+ assertTrue(rs.getInt("UPDATE_RULE") == DatabaseMetaData.importedKeySetNull);
+ assertTrue(rs.getInt("DELETE_RULE") == DatabaseMetaData.importedKeySetDefault);
+ rs.close();
+
+ TestUtil.dropTable(conn,"fkt2");
+ TestUtil.dropTable(conn,"fkt1");
+ TestUtil.dropTable(conn,"pkt");
+ }
+ catch (SQLException ex)
+ {
+ fail(ex.getMessage());
+ }
+ }
+
public void testForeignKeys()
{
try
import java.sql.*;
/*
- * $Id: DriverTest.java,v 1.5 2002/08/14 20:35:40 barry Exp $
+ * $Id: DriverTest.java,v 1.6 2003/11/03 15:22:07 davec Exp $
*
* Tests the dynamically created class org.postgresql.Driver
*
assertTrue(drv.acceptsURL("jdbc:postgresql://localhost:5432/test"));
assertTrue(drv.acceptsURL("jdbc:postgresql://127.0.0.1/anydbname"));
assertTrue(drv.acceptsURL("jdbc:postgresql://127.0.0.1:5433/hidden"));
+ assertTrue(drv.acceptsURL("jdbc:postgresql://[::1]:5740/db"));
// Badly formatted url's
assertTrue(!drv.acceptsURL("jdbc:postgres:test"));
assertTrue(!drv.acceptsURL("postgresql:test"));
+ assertTrue(!drv.acceptsURL("db"));
}
catch (SQLException ex)