Hi,
I didn't run the test so far. But what what is the problem (what result do
you expect, and what result do you get)?
Regards,
Thomas
On Saturday, May 5, 2012, wburzyns wrote:
> Please see below for a standalone testcase. However after playing with
> it I no longer claim that the issue is related to the two-phase
> commit...
>
>
>
>
>
> import java.sql.Connection;
> import java.sql.PreparedStatement;
> import java.sql.Savepoint;
> import java.sql.Statement;
> import java.util.Random;
> import org.h2.jdbcx.JdbcDataSource;
>
>
> public class H2_TwoPhaseCommit_issue
> {
> private static final String DATA_TABLE_NAME = "MATDB_DATA";
>
> private static final String DATA_STAMP_SEQUENCE_NAME =
> "DATA_STAMP";
>
> private static final int DATA_STAMP_SEQUENCE_CACHE_SIZE = 1024;
>
> private static final String PREPARED_TXN_NAME = "BULK_ENSURED";
>
>
> public static void main(String[] args) throws Exception
> {
> // create/open the DB
> System.setProperty("h2.lobInDatabase", "true");
> String dbUrl = "jdbc:h2:split:" +
> System.getProperty("java.io.tmpdir") + "txn_log_issue";
>
> JdbcDataSource ds = new JdbcDataSource();
> ds.setURL(dbUrl);
> Connection dbConn = ds.getConnection();
>
> // create data table and a relevant precompiled insertion
> statement
> Statement st = null;
> st = dbConn.createStatement();
> st.executeUpdate("CREATE SEQUENCE IF NOT EXISTS " +
> DATA_STAMP_SEQUENCE_NAME + " CACHE " +
> DATA_STAMP_SEQUENCE_CACHE_SIZE);
> st.executeUpdate("CREATE TABLE IF NOT EXISTS " +
> DATA_TABLE_NAME + "("
> + "GLOBAL_STAMP BIGINT NOT NULL DEFAULT NEXT VALUE FOR
> " + DATA_STAMP_SEQUENCE_NAME + " PRIMARY KEY, "
> + "DATA BLOB, "
> + "DESC BLOB)");
> PreparedStatement tableDataInsertSt =
> dbConn.prepareStatement("INSERT INTO " + DATA_TABLE_NAME + " VALUES("
> + "DEFAULT, "
> + "?, "
> + "?)", Statement.RETURN_GENERATED_KEYS);
>
> Random random = new Random(0xBAD); // ensure full
> repeatability
> for (int i = 0; i < 2048; ++i) {
> // start a transaction
> dbConn.setAutoCommit(false);
> String dbSpName = "a savepoint";
> Savepoint dbSp = dbConn.setSavepoint(dbSpName);
>
> // generate some data
> byte[] data = new byte[(int)(random.nextDouble() *
> 10240)];
> byte[] desc = new byte[(int)(random.nextDouble() *
> 10240)];
> random.nextBytes(data);
> random.nextBytes(desc);
>
> // save the data in the DB
> tableDataInsertSt.setBytes(1, data);
> tableDataInsertSt.setBytes(2, desc);
> tableDataInsertSt.executeUpdate();
>
> // commit the transaction (using two-phase commit)
> st.executeUpdate("PREPARE COMMIT " + PREPARED_TXN_NAME);
> dbConn.commit();
> dbConn.setAutoCommit(true);
> //st.executeUpdate("CHECKPOINT"); // if uncommented this
> prevents the transaction log from growing
> }
>
> // done
> dbConn.close();
> }
> }
>
> --
> You received this message because you are subscribed to the Google Groups
> "H2 Database" group.
> To post to this group, send email to
> [email protected]<javascript:;>
> .
> To unsubscribe from this group, send email to
> [email protected] <javascript:;>.
> For more options, visit this group at
> http://groups.google.com/group/h2-database?hl=en.
>
>
--
You received this message because you are subscribed to the Google Groups "H2
Database" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/h2-database?hl=en.