Thank you. I checked - in the 189 version, all works without errors.

вторник, 18 августа 2015 г., 19:16:49 UTC+3 пользователь Thomas Mueller 
написал:
>
> Hi,
>
> Thanks a lot for the test case! I found and fixed the problem.
>
> Regards,
> Thomas
>
>
>
> On Friday, August 14, 2015, Aleksey Konstantinov <[email protected] 
> <javascript:>> wrote:
>
>> Hi.
>>
>> In 1.4.188 version has a bug with temporary tables (in 1.4.187 it was 
>> not):
>> After you create and add data into temporary tables can not create and 
>> add data in another temporary table.
>>
>> The following code reproduces this bug:
>> package h2test;
>>
>> import java.sql.*;
>>
>> public class H2TempTables {
>> public static void main(String[] args) {
>> System.out.println("*** Test on persistent tables");
>> Test("TABLE");
>> System.out.println("\n");
>> System.out.println("***  Test on temporary tables");
>> Test("LOCAL TEMPORARY TABLE");
>> }
>> private static void Test (String typeTable) { 
>> try {
>> Class.forName("org.h2.Driver");
>> Connection conn = DriverManager.getConnection("jdbc:h2:mem:test", "sa", 
>> "");
>> conn.setAutoCommit(true);
>> System.out.print("Create table1 and table2 ... ");
>> Statement stmt = conn.createStatement();
>> stmt.execute("CREATE " + typeTable + " TABLE1 (ID INT NOT NULL PRIMARY 
>> KEY, NAME VARCHAR(50) NOT NULL)");
>> stmt.execute("CREATE " + typeTable + " TABLE2 (ID INT NOT NULL PRIMARY 
>> KEY, NAME VARCHAR(50) NOT NULL)");
>> System.out.println("OK");
>> System.out.print("Generate 10000 rows to table1 and table2 ... ");
>> PreparedStatement stmtTable1 = conn.prepareStatement("INSERT INTO TABLE1 
>> (ID, NAME) VALUES (?, ?)");
>> PreparedStatement stmtTable2 = conn.prepareStatement("INSERT INTO TABLE2 
>> (ID, NAME) VALUES (?, ?)");
>> int batch = 0;
>> for (int num = 1; num <= 10000; num++) {
>> batch++;
>> stmtTable1.setInt(1, num);
>> stmtTable1.setString(2, "TEST " + String.valueOf(num));
>> stmtTable1.addBatch();
>> stmtTable2.setInt(1, num);
>> stmtTable2.setString(2, "TEST " + String.valueOf(num));
>> stmtTable2.addBatch();
>> if (batch > 1000) {
>> stmtTable1.executeBatch();
>> stmtTable2.executeBatch();
>> batch = 0;
>> }
>> }
>> if (batch > 0) {
>> stmtTable1.executeBatch();
>> stmtTable2.executeBatch();
>> }
>> System.out.println("OK");
>> System.out.print("Create table3 ... ");
>> stmt.execute("CREATE " + typeTable + " TABLE3 (ID INT NOT NULL PRIMARY 
>> KEY, NAME VARCHAR(50) NOT NULL)");
>> System.out.println("OK");
>> System.out.print("Generate 10000 rows to table3 ... ");
>> PreparedStatement stmtTable3 = conn.prepareStatement("INSERT INTO TABLE3 
>> (ID, NAME) VALUES (?, ?)");
>> batch = 0;
>> for (int num = 1; num <= 10000; num++) {
>> batch++;
>> stmtTable3.setInt(1, num);
>> stmtTable3.setString(2, "TEST " + String.valueOf(num));
>> stmtTable3.addBatch();
>> if (batch > 1000) {
>> stmtTable3.executeBatch();
>> batch = 0;
>> }
>> }
>> if (batch > 0) {
>> stmtTable3.executeBatch();
>> }
>> System.out.println("OK");
>> System.out.print("Drop tables table1, table2 and table3 ... ");
>> stmt.execute("DROP TABLE TABLE1, TABLE2, TABLE3");
>> System.out.println("OK");
>> } catch (Exception e) {
>> e.printStackTrace();
>> return;
>> }
>> }
>> }
>>
>> It looks like an error occurs if preparedstatement contains a large 
>> number of rows in batch.
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "H2 Database" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected].
>> To post to this group, send email to [email protected].
>> Visit this group at http://groups.google.com/group/h2-database.
>> For more options, visit https://groups.google.com/d/optout.
>>
>

-- 
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.

Reply via email to