[
https://issues.apache.org/jira/browse/DERBY-6074?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Mikael Hakman closed DERBY-6074.
--------------------------------
Resolution: Not A Problem
> DatabaseMetaData.getTables not updated in multi thread multi connection
> application
> -----------------------------------------------------------------------------------
>
> Key: DERBY-6074
> URL: https://issues.apache.org/jira/browse/DERBY-6074
> Project: Derby
> Issue Type: Bug
> Components: JDBC
> Affects Versions: 10.9.1.0
> Environment: Windows 8
> Reporter: Mikael Hakman
>
> The test application creates two connections (connection1 and connection2) on
> a separate threads. Then connection2 on thrid thread is used to create a
> table which is then committed on the main thread. connection1 is rollbacked
> and closed on main thread. New connection (connection3) is created on a
> separate thread. Then this connection on the main thread is used to retrieve
> DatabaseMetaData which is then used to get list of tables (getTables()). The
> newly created table is not listed but it should because it was commited. I
> can verify that the table is there by using ij. Also when the test is run the
> second time it complains that the table cannot be created because it is
> allready there, Here is the test program listing. I'm sorry I could'nt make
> it smaller. Thanks.
> <pre>
> import java.sql.Connection;
> import java.sql.DatabaseMetaData;
> import java.sql.Driver;
> import java.sql.ResultSet;
> import java.sql.SQLException;
> import java.sql.Statement;
> import java.util.Properties;
> public class TestDerby {
>
> public static void main (String [] args) {
>
> try {
>
> new TestDerby ();
>
> } catch (Exception ex) {
>
> ex.printStackTrace ();
>
> System.exit (1);
> }
> }
> Connection connection1;
> Connection connection2;
>
> public TestDerby () throws InterruptedException, SQLException {
>
> ConnectThread connectThread = new ConnectThread ();
>
> connectThread.start ();
>
> connectThread.join ();
>
> this.connection1 = connectThread.connection;
>
> connectThread = new ConnectThread ();
>
> connectThread.start ();
>
> connectThread.join ();
>
> this.connection2 = connectThread.connection;
>
> CreateTableThread createTableThread = new CreateTableThread ();
>
> createTableThread.start ();
>
> createTableThread.join ();
>
> this.connection2.commit ();
>
> this.connection1.rollback();
>
> this.connection1.close ();
>
> connectThread = new ConnectThread ();
>
> connectThread.start();
>
> connectThread.join ();
>
> this.connection1 = connectThread.connection;
>
> this.checkForTable ();
> }
>
> public void checkForTable () throws SQLException {
>
> DatabaseMetaData dmd = this.connection1.getMetaData();
>
> ResultSet tables = dmd.getTables(null,null,"%",null);
>
> while (tables.next()) {
>
> String tableName = tables.getString ("TABLE_NAME");
>
> if (tableName.equals("testtab")) {
>
> String tableSchema = tables.getString
> ("TABLE_SCHEM");
>
> System.out.println ("Found table " + tableName
> + " in " + tableSchema);
> }
> }
>
> tables.close ();
> }
>
> public class ConnectThread extends Thread {
>
> Connection connection;
>
> public void run () {
>
> try {
>
> Class<?> driverClass =
> Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
>
> Driver driver = (Driver)
> driverClass.newInstance ();
>
> this.connection =
> driver.connect("jdbc:derby:testdb;create=true",new Properties());
>
> this.connection.setAutoCommit(false);
>
> } catch (Exception ex) {
>
> ex.printStackTrace ();
>
> System.exit (1);
> }
> }
> }
>
> public class CreateTableThread extends Thread {
>
> public void run () {
>
> try {
>
> String sql = "create table testtab (
> " +
> " col1 integer not null primary
> key, " +
> " col2 varchar(128)
> " +
> ")
> " ;
>
> Statement stmt = connection2.createStatement ();
>
> stmt.execute (sql);
>
> } catch (SQLException ex) {
>
> ex.printStackTrace ();
>
> System.exit (1);
> }
> }
> }
> }
> </pre>
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira