mirror of
https://github.com/postgres/postgres.git
synced 2025-09-11 00:12:06 +03:00
Added support for JDBC3. The driver will now build under JDBC3 (i.e. Java 1.4).
This concludes my changes that restructured the code to support JDBC3. The jdbc unit tests were also resturctured to allow different tests between jdbc2 and jdbc3, although currently make check (aka ant test) for JDBC3 just runs the JDBC2 tests. Of special note the largeobject/PGblob and PGclob classes have been moved under the jdbc2/jdbc3 specific directories as they now differ by jdbc version. Also note that this checkin removes the PostgresqlDataSource and files in the xa directory. A recent checkin has added new datasource support that replaces the functionality provided by these classes. Modified Files: jdbc/build.xml jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java jdbc/org/postgresql/jdbc1/AbstractJdbc1ResultSet.java jdbc/org/postgresql/jdbc1/AbstractJdbc1ResultSetMetaData.java jdbc/org/postgresql/jdbc1/AbstractJdbc1Statement.java jdbc/org/postgresql/jdbc2/AbstractJdbc2Connection.java jdbc/org/postgresql/jdbc2/AbstractJdbc2DatabaseMetaData.java jdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java jdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSetMetaData.java jdbc/org/postgresql/jdbc2/AbstractJdbc2Statement.java jdbc/org/postgresql/jdbc2/Array.java jdbc/org/postgresql/jdbc2/Jdbc2CallableStatement.java jdbc/org/postgresql/jdbc2/Jdbc2Connection.java jdbc/org/postgresql/jdbc2/Jdbc2DatabaseMetaData.java jdbc/org/postgresql/jdbc2/Jdbc2PreparedStatement.java jdbc/org/postgresql/jdbc2/Jdbc2ResultSet.java jdbc/org/postgresql/jdbc2/Jdbc2ResultSetMetaData.java jdbc/org/postgresql/jdbc2/Jdbc2Statement.java jdbc/org/postgresql/test/jdbc2/BatchExecuteTest.java jdbc/org/postgresql/test/jdbc2/BlobTest.java jdbc/org/postgresql/test/jdbc2/CallableStmtTest.java jdbc/org/postgresql/test/jdbc2/ConnectionTest.java jdbc/org/postgresql/test/jdbc2/DatabaseMetaDataTest.java jdbc/org/postgresql/test/jdbc2/DateTest.java jdbc/org/postgresql/test/jdbc2/DriverTest.java jdbc/org/postgresql/test/jdbc2/JBuilderTest.java jdbc/org/postgresql/test/jdbc2/MiscTest.java jdbc/org/postgresql/test/jdbc2/ResultSetTest.java jdbc/org/postgresql/test/jdbc2/TimeTest.java jdbc/org/postgresql/test/jdbc2/TimestampTest.java jdbc/org/postgresql/test/jdbc2/UpdateableResultTest.java Added Files: jdbc/org/postgresql/jdbc2/AbstractJdbc2Blob.java jdbc/org/postgresql/jdbc2/AbstractJdbc2Clob.java jdbc/org/postgresql/jdbc2/Jdbc2Blob.java jdbc/org/postgresql/jdbc2/Jdbc2Clob.java jdbc/org/postgresql/jdbc3/AbstractJdbc3Blob.java jdbc/org/postgresql/jdbc3/AbstractJdbc3Clob.java jdbc/org/postgresql/jdbc3/AbstractJdbc3Connection.java jdbc/org/postgresql/jdbc3/AbstractJdbc3DatabaseMetaData.java jdbc/org/postgresql/jdbc3/AbstractJdbc3ResultSet.java jdbc/org/postgresql/jdbc3/AbstractJdbc3Statement.java jdbc/org/postgresql/jdbc3/Jdbc3Blob.java jdbc/org/postgresql/jdbc3/Jdbc3CallableStatement.java jdbc/org/postgresql/jdbc3/Jdbc3Clob.java jdbc/org/postgresql/jdbc3/Jdbc3Connection.java jdbc/org/postgresql/jdbc3/Jdbc3DatabaseMetaData.java jdbc/org/postgresql/jdbc3/Jdbc3PreparedStatement.java jdbc/org/postgresql/jdbc3/Jdbc3ResultSet.java jdbc/org/postgresql/jdbc3/Jdbc3ResultSetMetaData.java jdbc/org/postgresql/jdbc3/Jdbc3Statement.java jdbc/org/postgresql/test/TestUtil.java jdbc/org/postgresql/test/jdbc2/Jdbc2TestSuite.java jdbc/org/postgresql/test/jdbc3/Jdbc3TestSuite.java Removed Files: jdbc/org/postgresql/PostgresqlDataSource.java jdbc/org/postgresql/largeobject/PGblob.java jdbc/org/postgresql/largeobject/PGclob.java jdbc/org/postgresql/test/JDBC2Tests.java jdbc/org/postgresql/xa/ClientConnection.java jdbc/org/postgresql/xa/TwoPhaseConnection.java jdbc/org/postgresql/xa/TxConnection.java jdbc/org/postgresql/xa/XAConnectionImpl.java jdbc/org/postgresql/xa/XADataSourceImpl.java
This commit is contained in:
178
src/interfaces/jdbc/org/postgresql/test/TestUtil.java
Normal file
178
src/interfaces/jdbc/org/postgresql/test/TestUtil.java
Normal file
@@ -0,0 +1,178 @@
|
||||
package org.postgresql.test;
|
||||
|
||||
import java.sql.*;
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/*
|
||||
* Utility class for JDBC tests
|
||||
*/
|
||||
public class TestUtil
|
||||
{
|
||||
/*
|
||||
* Returns the Test database JDBC URL
|
||||
*/
|
||||
public static String getURL()
|
||||
{
|
||||
return System.getProperty("database");
|
||||
}
|
||||
|
||||
/*
|
||||
* Returns the Postgresql username
|
||||
*/
|
||||
public static String getUser()
|
||||
{
|
||||
return System.getProperty("username");
|
||||
}
|
||||
|
||||
/*
|
||||
* Returns the user's password
|
||||
*/
|
||||
public static String getPassword()
|
||||
{
|
||||
return System.getProperty("password");
|
||||
}
|
||||
|
||||
/*
|
||||
* Helper - opens a connection.
|
||||
*/
|
||||
public static java.sql.Connection openDB()
|
||||
{
|
||||
try
|
||||
{
|
||||
Class.forName("org.postgresql.Driver");
|
||||
return java.sql.DriverManager.getConnection(getURL(), getUser(), getPassword());
|
||||
}
|
||||
catch (ClassNotFoundException ex)
|
||||
{
|
||||
TestCase.fail(ex.getMessage());
|
||||
}
|
||||
catch (SQLException ex)
|
||||
{
|
||||
TestCase.fail(ex.getMessage());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/*
|
||||
* Helper - closes an open connection. This rewrites SQLException to a failed
|
||||
* assertion. It's static so other classes can use it.
|
||||
*/
|
||||
public static void closeDB(Connection con)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (con != null)
|
||||
con.close();
|
||||
}
|
||||
catch (SQLException ex)
|
||||
{
|
||||
TestCase.fail(ex.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Helper - creates a test table for use by a test
|
||||
*/
|
||||
public static void createTable(Connection con,
|
||||
String table,
|
||||
String columns)
|
||||
{
|
||||
try
|
||||
{
|
||||
Statement st = con.createStatement();
|
||||
try
|
||||
{
|
||||
// Drop the table
|
||||
dropTable(con, table);
|
||||
|
||||
// Now create the table
|
||||
st.executeUpdate("create table " + table + " (" + columns + ")");
|
||||
}
|
||||
finally
|
||||
{
|
||||
st.close();
|
||||
}
|
||||
}
|
||||
catch (SQLException ex)
|
||||
{
|
||||
TestCase.fail(ex.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Helper - drops a table
|
||||
*/
|
||||
public static void dropTable(Connection con, String table)
|
||||
{
|
||||
try
|
||||
{
|
||||
Statement stmt = con.createStatement();
|
||||
try
|
||||
{
|
||||
stmt.executeUpdate("DROP TABLE " + table);
|
||||
}
|
||||
catch (SQLException ex)
|
||||
{
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
catch (SQLException ex)
|
||||
{
|
||||
TestCase.fail(ex.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Helper - generates INSERT SQL - very simple
|
||||
*/
|
||||
public static String insertSQL(String table, String values)
|
||||
{
|
||||
return insertSQL(table, null, values);
|
||||
}
|
||||
|
||||
public static String insertSQL(String table, String columns, String values)
|
||||
{
|
||||
String s = "INSERT INTO " + table;
|
||||
|
||||
if (columns != null)
|
||||
s = s + " (" + columns + ")";
|
||||
|
||||
return s + " VALUES (" + values + ")";
|
||||
}
|
||||
|
||||
/*
|
||||
* Helper - generates SELECT SQL - very simple
|
||||
*/
|
||||
public static String selectSQL(String table, String columns)
|
||||
{
|
||||
return selectSQL(table, columns, null, null);
|
||||
}
|
||||
|
||||
public static String selectSQL(String table, String columns, String where)
|
||||
{
|
||||
return selectSQL(table, columns, where, null);
|
||||
}
|
||||
|
||||
public static String selectSQL(String table, String columns, String where, String other)
|
||||
{
|
||||
String s = "SELECT " + columns + " FROM " + table;
|
||||
|
||||
if (where != null)
|
||||
s = s + " WHERE " + where;
|
||||
if (other != null)
|
||||
s = s + " " + other;
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
/*
|
||||
* Helper to prefix a number with leading zeros - ugly but it works...
|
||||
* @param v value to prefix
|
||||
* @param l number of digits (0-10)
|
||||
*/
|
||||
public static String fix(int v, int l)
|
||||
{
|
||||
String s = "0000000000".substring(0, l) + Integer.toString(v);
|
||||
return s.substring(s.length() - l);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user