List:Commits« Previous MessageNext Message »
From:jonas oreland Date:January 21 2012 7:29am
Subject:bzr push into mysql-5.5-cluster-7.2 branch (jonas.oreland:3776 to 3777)
View as plain text  
 3777 jonas oreland	2012-01-21 [merge]
      ndb - merge 71 to 72

    added:
      storage/ndb/clusterj/clusterj-test/src/main/java/testsuite/clusterj/StressTest.java
      storage/ndb/clusterj/clusterj-tie/src/test/java/testsuite/clusterj/tie/StressTest.java
    modified:
      mysql-test/suite/ndb/t/clusterj.test
      storage/ndb/clusterj/clusterj-api/pom.xml
      storage/ndb/clusterj/clusterj-bindings/pom.xml
      storage/ndb/clusterj/clusterj-core/pom.xml
      storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/metadata/DomainFieldHandlerImpl.java
      storage/ndb/clusterj/clusterj-jdbc/pom.xml
      storage/ndb/clusterj/clusterj-jpatest/pom.xml
      storage/ndb/clusterj/clusterj-openjpa/pom.xml
      storage/ndb/clusterj/clusterj-test/pom.xml
      storage/ndb/clusterj/clusterj-test/src/main/java/testsuite/clusterj/DynamicObjectTest.java
      storage/ndb/clusterj/clusterj-test/src/main/resources/schema.sql
      storage/ndb/clusterj/clusterj-tie/pom.xml
      storage/ndb/clusterj/pom.xml
 3776 jonas oreland	2012-01-20 [merge]
      ndb - merge 71 to 72

    modified:
      storage/ndb/test/ndbapi/testSystemRestart.cpp
=== modified file 'mysql-test/suite/ndb/t/clusterj.test'
--- a/mysql-test/suite/ndb/t/clusterj.test	2011-03-22 15:32:28 +0000
+++ b/mysql-test/suite/ndb/t/clusterj.test	2012-01-21 04:31:13 +0000
@@ -49,6 +49,7 @@ DROP TABLE longlongstringfk;
 DROP TABLE longlongstringpk;
 DROP TABLE longvarbinarypk;
 DROP TABLE nullvalues;
+DROP TABLE stress;
 DROP TABLE stringtype;
 DROP TABLE t_basic;
 DROP TABLE timestamptypes;

=== modified file 'storage/ndb/clusterj/clusterj-api/pom.xml'
--- a/storage/ndb/clusterj/clusterj-api/pom.xml	2011-12-05 22:04:20 +0000
+++ b/storage/ndb/clusterj/clusterj-api/pom.xml	2012-01-21 02:01:48 +0000
@@ -20,13 +20,13 @@
   <parent>
     <groupId>com.mysql.clusterj</groupId>
     <artifactId>clusterj-aggregate</artifactId>
-    <version>7.1.19-SNAPSHOT</version>
+    <version>7.1.20-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.mysql.clusterj</groupId>
   <artifactId>clusterj-api</artifactId>
   <packaging>bundle</packaging>
-  <version>7.1.19-SNAPSHOT</version>
+  <version>7.1.20-SNAPSHOT</version>
   <name>ClusterJ API</name>
   <description>The API for ClusterJ</description>
   <build>

=== modified file 'storage/ndb/clusterj/clusterj-bindings/pom.xml'
--- a/storage/ndb/clusterj/clusterj-bindings/pom.xml	2011-12-05 22:04:20 +0000
+++ b/storage/ndb/clusterj/clusterj-bindings/pom.xml	2012-01-21 02:01:48 +0000
@@ -20,13 +20,13 @@
   <parent>
     <groupId>com.mysql.clusterj</groupId>
     <artifactId>clusterj-aggregate</artifactId>
-    <version>7.1.19-SNAPSHOT</version>
+    <version>7.1.20-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.mysql.clusterj</groupId>
   <artifactId>clusterj-bindings</artifactId>
   <packaging>bundle</packaging>
-  <version>7.1.19-SNAPSHOT</version>
+  <version>7.1.20-SNAPSHOT</version>
   <name>ClusterJ Bindings</name>
   <description>The ndb-bindings implementation of ClusterJ storage spi</description>
   <build>

=== modified file 'storage/ndb/clusterj/clusterj-core/pom.xml'
--- a/storage/ndb/clusterj/clusterj-core/pom.xml	2011-12-05 22:04:20 +0000
+++ b/storage/ndb/clusterj/clusterj-core/pom.xml	2012-01-21 02:01:48 +0000
@@ -20,13 +20,13 @@
   <parent>
     <groupId>com.mysql.clusterj</groupId>
     <artifactId>clusterj-aggregate</artifactId>
-    <version>7.1.19-SNAPSHOT</version>
+    <version>7.1.20-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.mysql.clusterj</groupId>
   <artifactId>clusterj-core</artifactId>
   <packaging>bundle</packaging>
-  <version>7.1.19-SNAPSHOT</version>
+  <version>7.1.20-SNAPSHOT</version>
   <name>ClusterJ Core</name>
   <description>The core implementation of ClusterJ</description>
   <build>

=== modified file 'storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/metadata/DomainFieldHandlerImpl.java'
--- a/storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/metadata/DomainFieldHandlerImpl.java	2011-12-29 14:39:37 +0000
+++ b/storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/metadata/DomainFieldHandlerImpl.java	2012-01-21 02:12:23 +0000
@@ -1,5 +1,5 @@
 /*
-   Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
+   Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -311,8 +311,6 @@ public class DomainFieldHandlerImpl exte
     public DomainFieldHandlerImpl(
             DomainTypeHandlerImpl<?> domainTypeHandler, Table table, int i,
             com.mysql.clusterj.core.store.Column storeColumn) {
-        if (logger.isDebugEnabled()) logger.debug("new dynamic DomainFieldHandlerImpl: " +
-                "fieldNumber: " + fieldNumber + "; name:" + name);
         this.domainTypeHandler = domainTypeHandler;
         this.fieldNumber = i;
         this.storeColumn = storeColumn;
@@ -325,7 +323,7 @@ public class DomainFieldHandlerImpl exte
                 case Int:
                 case Unsigned:
                     this.objectOperationHandlerDelegate = objectOperationHandlerKeyInt;
-                    this.type = Integer.class;
+                    this.type = int.class;
                     break;
                 case Char:
                 case Varchar:
@@ -335,7 +333,7 @@ public class DomainFieldHandlerImpl exte
                 case Bigint:
                 case Bigunsigned:
                     this.objectOperationHandlerDelegate = objectOperationHandlerKeyLong;
-                    this.type = Long.class;
+                    this.type = long.class;
                     break;
                 case Binary:
                 case Varbinary:
@@ -350,16 +348,26 @@ public class DomainFieldHandlerImpl exte
             switch (this.storeColumnType) {
                 case Bigint:
                 case Bigunsigned:
-                    this.objectOperationHandlerDelegate = objectOperationHandlerObjectLong;
-                    this.type = Long.class;
+                    if (storeColumn.getNullable()) {
+                        this.objectOperationHandlerDelegate = objectOperationHandlerObjectLong;
+                        this.type = Long.class;
+                    } else {
+                        this.objectOperationHandlerDelegate = objectOperationHandlerLong;
+                        this.type = long.class;
+                    }
                     break;
                 case Binary:
                     this.objectOperationHandlerDelegate = objectOperationHandlerBytes;
                     this.type = byte[].class;
                     break;
                 case Bit:
-                    this.objectOperationHandlerDelegate = objectOperationHandlerObjectLong;
-                    this.type = Long.class;
+                    if (storeColumn.getNullable()) {
+                        this.objectOperationHandlerDelegate = objectOperationHandlerObjectLong;
+                        this.type = Long.class;
+                    } else {
+                        this.objectOperationHandlerDelegate = objectOperationHandlerLong;
+                        this.type = long.class;
+                    }
                     break;
                 case Blob:
                     this.objectOperationHandlerDelegate = objectOperationHandlerBytesLob;
@@ -383,16 +391,31 @@ public class DomainFieldHandlerImpl exte
                     this.type = BigDecimal.class;
                     break;
                 case Double:
-                    this.objectOperationHandlerDelegate = objectOperationHandlerObjectDouble;
-                    this.type = Double.class;
+                    if (storeColumn.getNullable()) {
+                        this.objectOperationHandlerDelegate = objectOperationHandlerObjectDouble;
+                        this.type = Double.class;
+                    } else {
+                        this.objectOperationHandlerDelegate = objectOperationHandlerDouble;
+                        this.type = double.class;
+                    }
                     break;
                 case Float:
-                    this.objectOperationHandlerDelegate = objectOperationHandlerObjectFloat;
-                    this.type = Float.class;
+                    if (storeColumn.getNullable()) {
+                        this.objectOperationHandlerDelegate = objectOperationHandlerObjectFloat;
+                        this.type = Float.class;
+                    } else {
+                        this.objectOperationHandlerDelegate = objectOperationHandlerFloat;
+                        this.type = float.class;
+                    }
                     break;
                 case Int:
-                    this.objectOperationHandlerDelegate = objectOperationHandlerObjectInteger;
-                    this.type = Integer.class;
+                    if (storeColumn.getNullable()) {
+                        this.objectOperationHandlerDelegate = objectOperationHandlerObjectInteger;
+                        this.type = Integer.class;
+                    } else {
+                        this.objectOperationHandlerDelegate = objectOperationHandlerInt;
+                        this.type = int.class;
+                    }
                     break;
                 case Longvarbinary:
                     this.objectOperationHandlerDelegate = objectOperationHandlerBytes;
@@ -404,8 +427,13 @@ public class DomainFieldHandlerImpl exte
                     break;
                 case Mediumint:
                 case Mediumunsigned:
-                    this.objectOperationHandlerDelegate = objectOperationHandlerObjectInteger;
-                    this.type = Integer.class;
+                    if (storeColumn.getNullable()) {
+                        this.objectOperationHandlerDelegate = objectOperationHandlerObjectInteger;
+                        this.type = Integer.class;
+                    } else {
+                        this.objectOperationHandlerDelegate = objectOperationHandlerInt;
+                        this.type = int.class;
+                    }
                     break;
                 case Olddecimal:
                     error(local.message("ERR_Unsupported_Field_Type", "Olddecimal", name));
@@ -417,8 +445,13 @@ public class DomainFieldHandlerImpl exte
                     break;
                 case Smallint:
                 case Smallunsigned:
-                    this.objectOperationHandlerDelegate = objectOperationHandlerObjectShort;
-                    this.type = Short.class;
+                    if (storeColumn.getNullable()) {
+                        this.objectOperationHandlerDelegate = objectOperationHandlerObjectShort;
+                        this.type = Short.class;
+                    } else {
+                        this.objectOperationHandlerDelegate = objectOperationHandlerShort;
+                        this.type = short.class;
+                    }
                     break;
                 case Text:
                     this.objectOperationHandlerDelegate = objectOperationHandlerStringLob;
@@ -434,17 +467,26 @@ public class DomainFieldHandlerImpl exte
                     break;
                 case Tinyint:
                 case Tinyunsigned:
-                    this.objectOperationHandlerDelegate = objectOperationHandlerObjectByte;
-                    this.type = Byte.class;
+                    if (storeColumn.getNullable()) {
+                        this.objectOperationHandlerDelegate = objectOperationHandlerObjectByte;
+                        this.type = Byte.class;
+                    } else {
+                        this.objectOperationHandlerDelegate = objectOperationHandlerByte;
+                        this.type = byte.class;
+                    }
                     break;
                 case Undefined:
                     error(local.message("ERR_Unsupported_Field_Type", "Undefined", name));
                     objectOperationHandlerDelegate = objectOperationHandlerUnsupportedType;
                     break;
                 case Unsigned:
-                    this.objectOperationHandlerDelegate = objectOperationHandlerObjectInteger;
-                    this.type = Integer.class;
-                    break;
+                    if (storeColumn.getNullable()) {
+                        this.objectOperationHandlerDelegate = objectOperationHandlerObjectInteger;
+                        this.type = Integer.class;
+                    } else {
+                        this.objectOperationHandlerDelegate = objectOperationHandlerInt;
+                        this.type = int.class;
+                    }
                 case Varbinary:
                     this.objectOperationHandlerDelegate = objectOperationHandlerBytes;
                     this.type = byte[].class;
@@ -454,14 +496,21 @@ public class DomainFieldHandlerImpl exte
                     this.type = String.class;
                     break;
                 case Year:
-                    this.objectOperationHandlerDelegate = objectOperationHandlerObjectShortYear;
-                    this.type = Short.class;
+                    if (storeColumn.getNullable()) {
+                        this.objectOperationHandlerDelegate = objectOperationHandlerObjectShort;
+                        this.type = Short.class;
+                    } else {
+                        this.objectOperationHandlerDelegate = objectOperationHandlerShort;
+                        this.type = short.class;
+                    }
                     break;
                 default:
                     error(local.message("ERR_Unsupported_Field_Type", this.storeColumnType, name));
                     objectOperationHandlerDelegate = objectOperationHandlerUnsupportedType;
             }
         }
+        if (logger.isDebugEnabled()) logger.debug("new dynamic DomainFieldHandlerImpl: " +
+                "fieldNumber: " + fieldNumber + "; name: " + name + "; type: " + type);
         nullValueDelegate = nullValueNONE;
         registerIndices(domainTypeHandler);
         reportErrors();

=== modified file 'storage/ndb/clusterj/clusterj-jdbc/pom.xml'
--- a/storage/ndb/clusterj/clusterj-jdbc/pom.xml	2011-12-05 22:04:20 +0000
+++ b/storage/ndb/clusterj/clusterj-jdbc/pom.xml	2012-01-21 02:01:48 +0000
@@ -19,13 +19,13 @@
   <parent>
     <groupId>com.mysql.clusterj</groupId>
     <artifactId>clusterj-aggregate</artifactId>
-    <version>7.1.19-SNAPSHOT</version>
+    <version>7.1.20-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>clusterj</groupId>
   <artifactId>clusterj-jdbc</artifactId>
   <name>ClusterJ JDBC Plugin</name>
-  <version>7.1.19-SNAPSHOT</version>
+  <version>7.1.20-SNAPSHOT</version>
   <dependencies>
     <dependency>
       <groupId>junit</groupId>

=== modified file 'storage/ndb/clusterj/clusterj-jpatest/pom.xml'
--- a/storage/ndb/clusterj/clusterj-jpatest/pom.xml	2011-12-05 22:04:20 +0000
+++ b/storage/ndb/clusterj/clusterj-jpatest/pom.xml	2012-01-21 02:01:48 +0000
@@ -28,12 +28,12 @@
   <parent>
     <groupId>com.mysql.clusterj</groupId>
     <artifactId>clusterj-aggregate</artifactId>
-    <version>7.1.19-SNAPSHOT</version>
+    <version>7.1.20-SNAPSHOT</version>
   </parent>
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.mysql.clusterj</groupId>
     <artifactId>clusterj-jpatest</artifactId>
-    <version>7.1.19-SNAPSHOT</version>
+    <version>7.1.20-SNAPSHOT</version>
     <packaging>jar</packaging>
     <name>ClusterJ JPA Integration Tests</name>
 

=== modified file 'storage/ndb/clusterj/clusterj-openjpa/pom.xml'
--- a/storage/ndb/clusterj/clusterj-openjpa/pom.xml	2011-12-05 22:04:20 +0000
+++ b/storage/ndb/clusterj/clusterj-openjpa/pom.xml	2012-01-21 02:01:48 +0000
@@ -24,12 +24,12 @@
   <parent>
     <groupId>com.mysql.clusterj</groupId>
     <artifactId>clusterj-aggregate</artifactId>
-    <version>7.1.19-SNAPSHOT</version>
+    <version>7.1.20-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.mysql.clusterj</groupId>
   <artifactId>clusterj-openjpa</artifactId>
-  <version>7.1.19-SNAPSHOT</version>
+  <version>7.1.20-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <name>ClusterJ OpenJPA Integration</name>
 

=== modified file 'storage/ndb/clusterj/clusterj-test/pom.xml'
--- a/storage/ndb/clusterj/clusterj-test/pom.xml	2011-12-05 22:04:20 +0000
+++ b/storage/ndb/clusterj/clusterj-test/pom.xml	2012-01-21 02:01:48 +0000
@@ -20,13 +20,13 @@
   <parent>
     <groupId>com.mysql.clusterj</groupId>
     <artifactId>clusterj-aggregate</artifactId>
-    <version>7.1.19-SNAPSHOT</version>
+    <version>7.1.20-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.mysql.clusterj</groupId>
   <artifactId>clusterj-test</artifactId>
   <packaging>jar</packaging>
-  <version>7.1.19-SNAPSHOT</version>
+  <version>7.1.20-SNAPSHOT</version>
   <name>ClusterJ Test Suite</name>
   <build>
     <plugins>

=== modified file 'storage/ndb/clusterj/clusterj-test/src/main/java/testsuite/clusterj/DynamicObjectTest.java'
--- a/storage/ndb/clusterj/clusterj-test/src/main/java/testsuite/clusterj/DynamicObjectTest.java	2011-03-23 22:41:01 +0000
+++ b/storage/ndb/clusterj/clusterj-test/src/main/java/testsuite/clusterj/DynamicObjectTest.java	2012-01-21 02:12:23 +0000
@@ -1,5 +1,5 @@
 /*
-   Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
+   Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -40,7 +40,7 @@ public class DynamicObjectTest extends A
 
     private Object[] expectedTBasicTypes = new Object[] {ColumnType.Int, ColumnType.Varchar, ColumnType.Int, ColumnType.Int};
 
-    private Object[] expectedTBasicJavaTypes = new Object[] {Integer.class, String.class, Integer.class, Integer.class};
+    private Object[] expectedTBasicJavaTypes = new Object[] {int.class, String.class, Integer.class, int.class};
 
     private Object[] expectedTBasicMaximumLengths = new Object[] {1, 32, 1, 1};
 

=== added file 'storage/ndb/clusterj/clusterj-test/src/main/java/testsuite/clusterj/StressTest.java'
--- a/storage/ndb/clusterj/clusterj-test/src/main/java/testsuite/clusterj/StressTest.java	1970-01-01 00:00:00 +0000
+++ b/storage/ndb/clusterj/clusterj-test/src/main/java/testsuite/clusterj/StressTest.java	2012-01-21 02:22:20 +0000
@@ -0,0 +1,199 @@
+/*
+   Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; version 2 of the License.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+package testsuite.clusterj;
+
+import org.junit.Ignore;
+
+import com.mysql.clusterj.ClusterJFatalUserException;
+import com.mysql.clusterj.ColumnMetadata;
+import com.mysql.clusterj.DynamicObject;
+
+import testsuite.clusterj.AbstractClusterJModelTest;
+import testsuite.clusterj.model.IdBase;
+
+@Ignore
+public class StressTest extends AbstractClusterJModelTest {
+
+    static protected final Runtime rt = Runtime.getRuntime();
+
+    private static final int NUMBER_TO_INSERT = 4000;
+
+    private static final int ITERATIONS = 5;
+
+    private static final String tableName = "stress";
+
+    private ColumnMetadata[] columnMetadatas;
+
+    private Timer timer = new Timer();
+
+    @Override
+    java.lang.Class<? extends IdBase> getModelClass() {
+        return Stress.class;
+    }
+
+    @Override
+    public void localSetUp() {
+        createSessionFactory();
+        session = sessionFactory.getSession();
+        tx = session.currentTransaction();
+        session.deletePersistentAll(Stress.class);
+        columnMetadatas = session.newInstance(Stress.class).columnMetadata();
+    }
+
+    public void testInsAattr_indy() {
+        long total = 0;
+        for (int i = 0; i < ITERATIONS; ++i) {
+            // garbage collect what we can before each test
+            gc();
+            timer.start();
+            for (int key = 0; key < NUMBER_TO_INSERT; ++key) {
+                Stress instance = createObject(key);
+                session.makePersistent(instance);
+            }
+            // drop the first iteration
+            timer.stop();
+            if (i > 0) total += timer.time();
+            System.out.println("testInsAattr_indy: " + timer.time());
+        }
+        System.out.println("Average: " + total/(ITERATIONS - 1) + "\n");
+    }
+
+    public void testInsAattr_each() {
+        long total = 0;
+        for (int i = 0; i < ITERATIONS; ++i) {
+            // garbage collect what we can before each test
+            gc();
+            timer.start();
+            session.currentTransaction().begin();
+            for (int key = 0; key < NUMBER_TO_INSERT; ++key) {
+                Stress instance = createObject(key);
+                session.makePersistent(instance);
+                session.flush();
+            }
+            session.currentTransaction().commit();
+            // drop the first iteration
+            timer.stop();
+            if (i > 0) total += timer.time();
+            System.out.println("testInsAattr_each: " + timer.time());
+        }
+        System.out.println("Average: " + total/(ITERATIONS - 1) + "\n");
+    }
+
+    public void testInsAattr_bulk() {
+        long total = 0;
+        for (int i = 0; i < ITERATIONS; ++i) {
+            // garbage collect what we can before each test
+            gc();
+            timer.start();
+            session.currentTransaction().begin();
+            for (int key = 0; key < NUMBER_TO_INSERT; ++key) {
+                Stress instance = createObject(key);
+                session.makePersistent(instance);
+            }
+            session.currentTransaction().commit();
+            // drop the first iteration
+            timer.stop();
+            if (i > 0) total += timer.time();
+            System.out.println("testInsAattr_bulk: " + timer.time());
+        }
+        System.out.println("Average: " + total/(ITERATIONS - 1) + "\n");
+    }
+
+    protected Stress createObject(int key) {
+        Stress instance = session.newInstance(Stress.class, key);
+        for (int columnNumber = 0; columnNumber < columnMetadatas.length; ++columnNumber) {
+            Object value = null;
+            // create value based on java type
+            ColumnMetadata columnMetadata = columnMetadatas[columnNumber];
+            if (columnMetadata.isPrimaryKey()) {
+                // we have already set the value of the primary key in newInstance
+                continue;
+            }
+            Class<?> cls = columnMetadata.javaType();
+            if (int.class == cls) {
+                value = key;
+            } else if (long.class == cls) {
+                value = (long)key;
+            } else if (float.class == cls) {
+                value = (float)key;
+            } else if (double.class == cls) {
+                value = (double)key;
+            } else {
+                throw new ClusterJFatalUserException("Unsupported column type " + cls.getName()
+                        + " for column " + columnMetadata.name());
+            }
+            instance.set(columnNumber, value);
+        }
+        return instance;
+    }
+
+    public static class Stress extends DynamicObject implements IdBase {
+        public Stress() {}
+
+        public String table() {
+            return tableName;
+        }
+
+        public int getId() {
+            return (Integer) get(0);
+        }
+
+        public void setId(int id) {
+            set(0, id);
+        }
+    }
+
+    static private void gc() {
+        // empirically determined limit after which no further
+        // reduction in memory usage has been observed
+        //final int nFullGCs = 5;
+        final int nFullGCs = 10;
+        for (int i = 0; i < nFullGCs; i++) {
+            //out.print("gc: ");
+            long oldfree;
+            long newfree = rt.freeMemory();
+            do {
+                oldfree = newfree;
+                rt.runFinalization();
+                rt.gc();
+                newfree = rt.freeMemory();
+                //out.print('.');
+            } while (newfree > oldfree);
+            //out.println();
+        }
+    }
+
+    private static class Timer {
+
+        private long time;
+
+        public void start() {
+            time = System.nanoTime() / 1000000;
+        }
+
+        public long stop() {
+            time = (System.nanoTime() / 1000000) - time;
+            return time;
+        }
+
+        public long time() {
+            return time;
+        }
+    }
+
+}

=== modified file 'storage/ndb/clusterj/clusterj-test/src/main/resources/schema.sql'
--- a/storage/ndb/clusterj/clusterj-test/src/main/resources/schema.sql	2011-07-05 12:54:14 +0000
+++ b/storage/ndb/clusterj/clusterj-test/src/main/resources/schema.sql	2012-01-21 07:27:31 +0000
@@ -706,6 +706,91 @@ create table longintstringix (
  KEY idx_long_int_string (longix, intix, stringix)
 ) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
 
+drop table if exists stress;
+create table stress (
+  id int not null primary key,
+  i0 int not null,
+  l0 bigint not null,
+  f0 float not null,
+  d0 double not null,
+  i1 int not null,
+  l1 bigint not null,
+  f1 float not null,
+  d1 double not null,
+  i2 int not null,
+  l2 bigint not null,
+  f2 float not null,
+  d2 double not null,
+  i3 int not null,
+  l3 bigint not null,
+  f3 float not null,
+  d3 double not null,
+  i4 int not null,
+  l4 bigint not null,
+  f4 float not null,
+  d4 double not null,
+  i5 int not null,
+  l5 bigint not null,
+  f5 float not null,
+  d5 double not null,
+  i6 int not null,
+  l6 bigint not null,
+  f6 float not null,
+  d6 double not null,
+  i7 int not null,
+  l7 bigint not null,
+  f7 float not null,
+  d7 double not null,
+  i8 int not null,
+  l8 bigint not null,
+  f8 float not null,
+  d8 double not null,
+  i9 int not null,
+  l9 bigint not null,
+  f9 float not null,
+  d9 double not null,
+  i10 int not null,
+  l10 bigint not null,
+  f10 float not null,
+  d10 double not null,
+  i11 int not null,
+  l11 bigint not null,
+  f11 float not null,
+  d11 double not null,
+  i12 int not null,
+  l12 bigint not null,
+  f12 float not null,
+  d12 double not null,
+  i13 int not null,
+  l13 bigint not null,
+  f13 float not null,
+  d13 double not null,
+  i14 int not null,
+  l14 bigint not null,
+  f14 float not null,
+  d14 double not null,
+  i15 int not null,
+  l15 bigint not null,
+  f15 float not null,
+  d15 double not null,
+  i16 int not null,
+  l16 bigint not null,
+  f16 float not null,
+  d16 double not null,
+  i17 int not null,
+  l17 bigint not null,
+  f17 float not null,
+  d17 double not null,
+  i18 int not null,
+  l18 bigint not null,
+  f18 float not null,
+  d18 double not null,
+  i19 int not null,
+  l19 bigint not null,
+  f19 float not null,
+  d19 double not null
+  ) ENGINE=ndbcluster;
+
 create database if not exists test2;
 use test2;
 drop table if exists t_basic2;

=== modified file 'storage/ndb/clusterj/clusterj-tie/pom.xml'
--- a/storage/ndb/clusterj/clusterj-tie/pom.xml	2011-12-05 22:04:20 +0000
+++ b/storage/ndb/clusterj/clusterj-tie/pom.xml	2012-01-21 02:01:48 +0000
@@ -20,13 +20,13 @@
   <parent>
     <groupId>com.mysql.clusterj</groupId>
     <artifactId>clusterj-aggregate</artifactId>
-    <version>7.1.19-SNAPSHOT</version>
+    <version>7.1.20-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.mysql.clusterj</groupId>
   <artifactId>clusterj-tie</artifactId>
   <packaging>bundle</packaging>
-  <version>7.1.19-SNAPSHOT</version>
+  <version>7.1.20-SNAPSHOT</version>
   <name>ClusterJ Tie</name>
   <description>The ndbj-tie implementation of ClusterJ storage spi</description>
   <build>

=== added file 'storage/ndb/clusterj/clusterj-tie/src/test/java/testsuite/clusterj/tie/StressTest.java'
--- a/storage/ndb/clusterj/clusterj-tie/src/test/java/testsuite/clusterj/tie/StressTest.java	1970-01-01 00:00:00 +0000
+++ b/storage/ndb/clusterj/clusterj-tie/src/test/java/testsuite/clusterj/tie/StressTest.java	2012-01-21 02:22:20 +0000
@@ -0,0 +1,25 @@
+/*
+   Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; version 2 of the License.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+*/
+
+package testsuite.clusterj.tie;
+
+import org.junit.Ignore;
+
+@Ignore
+public class StressTest extends testsuite.clusterj.StressTest {
+
+}

=== modified file 'storage/ndb/clusterj/pom.xml'
--- a/storage/ndb/clusterj/pom.xml	2011-12-05 22:04:20 +0000
+++ b/storage/ndb/clusterj/pom.xml	2012-01-21 02:01:48 +0000
@@ -24,7 +24,7 @@
   <groupId>com.mysql.clusterj</groupId>
   <artifactId>clusterj-aggregate</artifactId>
   <packaging>pom</packaging>
-  <version>7.1.19-SNAPSHOT</version>
+  <version>7.1.20-SNAPSHOT</version>
   <name>ClusterJ Aggregate</name>
   <description>The aggregate maven project of ClusterJ</description>
   <modules>
@@ -87,32 +87,32 @@
     <dependency>
       <groupId>com.mysql.clusterj</groupId>
       <artifactId>clusterj-api</artifactId>
-      <version>7.1.19-SNAPSHOT</version>
+      <version>7.1.20-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>com.mysql.clusterj</groupId>
       <artifactId>clusterj-core</artifactId>
-      <version>7.1.19-SNAPSHOT</version>
+      <version>7.1.20-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>com.mysql.clusterj</groupId>
       <artifactId>clusterj-test</artifactId>
-      <version>7.1.19-SNAPSHOT</version>
+      <version>7.1.20-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>com.mysql.clusterj</groupId>
       <artifactId>clusterj-tie</artifactId>
-      <version>7.1.19-SNAPSHOT</version>
+      <version>7.1.20-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>com.mysql.clusterj</groupId>
       <artifactId>clusterj-jpatest</artifactId>
-      <version>7.1.19-SNAPSHOT</version>
+      <version>7.1.20-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>ndbjtie</groupId>
       <artifactId>ndbjtie</artifactId>
-      <version>7.1.19-SNAPSHOT</version>
+      <version>7.1.20-SNAPSHOT</version>
     </dependency>
     </dependencies>
   </dependencyManagement>

No bundle (reason: useless for push emails).
Thread
bzr push into mysql-5.5-cluster-7.2 branch (jonas.oreland:3776 to 3777) jonas oreland22 Jan