Search in sources :

Example 1 with TestMergeUsing

use of org.h2.test.db.TestMergeUsing in project h2database by h2database.

the class TestGetGeneratedKeys method testMergeUsing.

/**
 * Test method for MERGE USING operator.
 *
 * @param conn
 *            connection
 * @throws Exception
 *             on exception
 */
private void testMergeUsing(Connection conn) throws Exception {
    Statement stat = conn.createStatement();
    stat.execute("CREATE TABLE SOURCE (ID BIGINT PRIMARY KEY AUTO_INCREMENT," + " UID INT NOT NULL UNIQUE, VALUE INT NOT NULL)");
    stat.execute("CREATE TABLE DESTINATION (ID BIGINT PRIMARY KEY AUTO_INCREMENT," + " UID INT NOT NULL UNIQUE, VALUE INT NOT NULL)");
    PreparedStatement ps = conn.prepareStatement("INSERT INTO SOURCE(UID, VALUE) VALUES (?, ?)");
    for (int i = 1; i <= 100; i++) {
        ps.setInt(1, i);
        ps.setInt(2, i * 10 + 5);
        ps.executeUpdate();
    }
    // Insert first half of a rows with different values
    ps = conn.prepareStatement("INSERT INTO DESTINATION(UID, VALUE) VALUES (?, ?)");
    for (int i = 1; i <= 50; i++) {
        ps.setInt(1, i);
        ps.setInt(2, i * 10);
        ps.executeUpdate();
    }
    // And merge second half into it, first half will be updated with a new values
    ps = conn.prepareStatement("MERGE INTO DESTINATION USING SOURCE ON (DESTINATION.UID = SOURCE.UID)" + " WHEN MATCHED THEN UPDATE SET VALUE = SOURCE.VALUE" + " WHEN NOT MATCHED THEN INSERT (UID, VALUE) VALUES (SOURCE.UID, SOURCE.VALUE)", Statement.RETURN_GENERATED_KEYS);
    // All rows should be either updated or inserted
    assertEquals(100, ps.executeUpdate());
    ResultSet rs = ps.getGeneratedKeys();
    // Only 50 keys for inserted rows should be generated
    for (int i = 1; i <= 50; i++) {
        assertTrue(rs.next());
        assertEquals(i + 50, rs.getLong(1));
    }
    assertFalse(rs.next());
    rs.close();
    // Check merged data
    rs = stat.executeQuery("SELECT ID, UID, VALUE FROM DESTINATION ORDER BY ID");
    for (int i = 1; i <= 100; i++) {
        assertTrue(rs.next());
        assertEquals(i, rs.getLong(1));
        assertEquals(i, rs.getInt(2));
        assertEquals(i * 10 + 5, rs.getInt(3));
    }
    assertFalse(rs.next());
    stat.execute("DROP TABLE SOURCE");
    stat.execute("DROP TABLE DESTINATION");
}
Also used : JdbcStatement(org.h2.jdbc.JdbcStatement) Statement(java.sql.Statement) PreparedStatement(java.sql.PreparedStatement) JdbcPreparedStatement(org.h2.jdbc.JdbcPreparedStatement) ResultSet(java.sql.ResultSet) PreparedStatement(java.sql.PreparedStatement) JdbcPreparedStatement(org.h2.jdbc.JdbcPreparedStatement)

Example 2 with TestMergeUsing

use of org.h2.test.db.TestMergeUsing in project h2database by h2database.

the class TestAll method test.

/**
 * Run all tests with the current settings.
 */
private void test() throws SQLException {
    System.out.println();
    System.out.println("Test " + toString() + " (" + Utils.getMemoryUsed() + " KB used)");
    beforeTest();
    // db
    addTest(new TestScriptSimple());
    addTest(new TestScript());
    addTest(new TestAlter());
    addTest(new TestAlterSchemaRename());
    addTest(new TestAutoRecompile());
    addTest(new TestBackup());
    addTest(new TestBigDb());
    addTest(new TestBigResult());
    addTest(new TestCases());
    addTest(new TestCheckpoint());
    addTest(new TestCompatibility());
    addTest(new TestCompatibilityOracle());
    addTest(new TestCsv());
    addTest(new TestDeadlock());
    if (vmlens) {
        return;
    }
    addTest(new TestDrop());
    addTest(new TestDuplicateKeyUpdate());
    addTest(new TestEncryptedDb());
    addTest(new TestExclusive());
    addTest(new TestFullText());
    addTest(new TestFunctionOverload());
    addTest(new TestFunctions());
    addTest(new TestInit());
    addTest(new TestIndex());
    addTest(new TestIndexHints());
    addTest(new TestLargeBlob());
    addTest(new TestLinkedTable());
    addTest(new TestListener());
    addTest(new TestLob());
    addTest(new TestMergeUsing());
    addTest(new TestMultiConn());
    addTest(new TestMultiDimension());
    addTest(new TestMultiThreadedKernel());
    addTest(new TestOpenClose());
    addTest(new TestOptimizations());
    addTest(new TestOptimizerHints());
    addTest(new TestOutOfMemory());
    addTest(new TestReadOnly());
    addTest(new TestRecursiveQueries());
    addTest(new TestGeneralCommonTableQueries());
    if (!memory) {
        // requires persistent store for reconnection tests
        addTest(new TestPersistentCommonTableExpressions());
    }
    addTest(new TestRights());
    addTest(new TestRunscript());
    addTest(new TestSQLInjection());
    addTest(new TestSessionsLocks());
    addTest(new TestSelectCountNonNullColumn());
    addTest(new TestSequence());
    addTest(new TestShow());
    addTest(new TestSpaceReuse());
    addTest(new TestSpatial());
    addTest(new TestSpeed());
    addTest(new TestTableEngines());
    addTest(new TestRowFactory());
    addTest(new TestTempTables());
    addTest(new TestTransaction());
    addTest(new TestTriggersConstraints());
    addTest(new TestTwoPhaseCommit());
    addTest(new TestView());
    addTest(new TestViewAlterTable());
    addTest(new TestViewDropView());
    addTest(new TestReplace());
    addTest(new TestSynonymForTable());
    addTest(new TestColumnNamer());
    // jaqu
    addTest(new AliasMapTest());
    addTest(new AnnotationsTest());
    addTest(new ClobTest());
    addTest(new ModelsTest());
    addTest(new SamplesTest());
    addTest(new UpdateTest());
    // jdbc
    addTest(new TestBatchUpdates());
    addTest(new TestCallableStatement());
    addTest(new TestCancel());
    addTest(new TestConcurrentConnectionUsage());
    addTest(new TestConnection());
    addTest(new TestDatabaseEventListener());
    addTest(new TestJavaObject());
    addTest(new TestLimitUpdates());
    addTest(new TestLobApi());
    addTest(new TestManyJdbcObjects());
    addTest(new TestMetaData());
    addTest(new TestNativeSQL());
    addTest(new TestPreparedStatement());
    addTest(new TestResultSet());
    addTest(new TestStatement());
    addTest(new TestGetGeneratedKeys());
    addTest(new TestTransactionIsolation());
    addTest(new TestUpdatableResultSet());
    addTest(new TestZloty());
    addTest(new TestCustomDataTypesHandler());
    addTest(new TestSetCollation());
    // jdbcx
    addTest(new TestConnectionPool());
    addTest(new TestDataSource());
    addTest(new TestXA());
    addTest(new TestXASimple());
    // server
    addTest(new TestAutoServer());
    addTest(new TestNestedLoop());
    // mvcc & row level locking
    addTest(new TestMvcc1());
    addTest(new TestMvcc2());
    addTest(new TestMvcc3());
    addTest(new TestMvcc4());
    addTest(new TestMvccMultiThreaded());
    addTest(new TestMvccMultiThreaded2());
    addTest(new TestRowLocks());
    // synth
    addTest(new TestBtreeIndex());
    addTest(new TestConcurrentUpdate());
    addTest(new TestDiskFull());
    addTest(new TestCrashAPI());
    addTest(new TestFuzzOptimizations());
    addTest(new TestLimit());
    addTest(new TestRandomCompare());
    addTest(new TestKillRestart());
    addTest(new TestKillRestartMulti());
    addTest(new TestMultiThreaded());
    addTest(new TestOuterJoins());
    addTest(new TestNestedJoins());
    addTest(new TestStringAggCompatibility());
    runAddedTests();
    // serial
    addTest(new TestDateStorage());
    addTest(new TestDriver());
    addTest(new TestJavaObjectSerializer());
    addTest(new TestLocale());
    addTest(new TestMemoryUsage());
    addTest(new TestMultiThread());
    addTest(new TestPowerOff());
    addTest(new TestReorderWrites());
    addTest(new TestRandomSQL());
    addTest(new TestQueryCache());
    addTest(new TestUrlJavaObjectSerializer());
    addTest(new TestWeb());
    runAddedTests(1);
    afterTest();
}
Also used : TestDuplicateKeyUpdate(org.h2.test.db.TestDuplicateKeyUpdate) TestDeadlock(org.h2.test.db.TestDeadlock) TestPreparedStatement(org.h2.test.jdbc.TestPreparedStatement) TestXA(org.h2.test.jdbcx.TestXA) TestTransactionIsolation(org.h2.test.jdbc.TestTransactionIsolation) TestViewDropView(org.h2.test.db.TestViewDropView) TestRandomCompare(org.h2.test.synth.TestRandomCompare) TestSetCollation(org.h2.test.db.TestSetCollation) TestSelectCountNonNullColumn(org.h2.test.db.TestSelectCountNonNullColumn) TestConcurrentConnectionUsage(org.h2.test.jdbc.TestConcurrentConnectionUsage) TestCompatibility(org.h2.test.db.TestCompatibility) TestUpdatableResultSet(org.h2.test.jdbc.TestUpdatableResultSet) TestMvccMultiThreaded(org.h2.test.mvcc.TestMvccMultiThreaded) TestDatabaseEventListener(org.h2.test.jdbc.TestDatabaseEventListener) TestCheckpoint(org.h2.test.db.TestCheckpoint) TestListener(org.h2.test.db.TestListener) TestCustomDataTypesHandler(org.h2.test.jdbc.TestCustomDataTypesHandler) TestOpenClose(org.h2.test.db.TestOpenClose) TestEncryptedDb(org.h2.test.db.TestEncryptedDb) TestExclusive(org.h2.test.db.TestExclusive) TestViewAlterTable(org.h2.test.db.TestViewAlterTable) TestGetGeneratedKeys(org.h2.test.jdbc.TestGetGeneratedKeys) TestFunctions(org.h2.test.db.TestFunctions) TestManyJdbcObjects(org.h2.test.jdbc.TestManyJdbcObjects) TestLobApi(org.h2.test.jdbc.TestLobApi) TestLocale(org.h2.test.unit.TestLocale) TestLimit(org.h2.test.synth.TestLimit) TestDataSource(org.h2.test.jdbcx.TestDataSource) TestTransaction(org.h2.test.db.TestTransaction) TestJavaObject(org.h2.test.jdbc.TestJavaObject) TestRowLocks(org.h2.test.rowlock.TestRowLocks) TestWeb(org.h2.test.server.TestWeb) TestAutoServer(org.h2.test.server.TestAutoServer) TestNestedLoop(org.h2.test.server.TestNestedLoop) TestMultiDimension(org.h2.test.db.TestMultiDimension) UpdateTest(org.h2.test.jaqu.UpdateTest) TestCases(org.h2.test.db.TestCases) TestJavaObjectSerializer(org.h2.test.jdbc.TestJavaObjectSerializer) TestUrlJavaObjectSerializer(org.h2.test.jdbc.TestUrlJavaObjectSerializer) TestMultiThread(org.h2.test.db.TestMultiThread) TestLob(org.h2.test.db.TestLob) TestFuzzOptimizations(org.h2.test.synth.TestFuzzOptimizations) TestRunscript(org.h2.test.db.TestRunscript) TestTableEngines(org.h2.test.db.TestTableEngines) TestMemoryUsage(org.h2.test.db.TestMemoryUsage) TestConnection(org.h2.test.jdbc.TestConnection) TestRandomSQL(org.h2.test.synth.TestRandomSQL) TestRights(org.h2.test.db.TestRights) TestXASimple(org.h2.test.jdbcx.TestXASimple) TestLargeBlob(org.h2.test.db.TestLargeBlob) TestBatchUpdates(org.h2.test.jdbc.TestBatchUpdates) TestStringAggCompatibility(org.h2.test.synth.TestStringAggCompatibility) TestMvccMultiThreaded2(org.h2.test.mvcc.TestMvccMultiThreaded2) TestSequence(org.h2.test.db.TestSequence) AliasMapTest(org.h2.test.jaqu.AliasMapTest) TestMergeUsing(org.h2.test.db.TestMergeUsing) TestMetaData(org.h2.test.jdbc.TestMetaData) TestMultiThreadedKernel(org.h2.test.db.TestMultiThreadedKernel) TestConcurrentUpdate(org.h2.test.synth.TestConcurrentUpdate) TestResultSet(org.h2.test.jdbc.TestResultSet) ModelsTest(org.h2.test.jaqu.ModelsTest) TestSpaceReuse(org.h2.test.db.TestSpaceReuse) TestDriver(org.h2.test.jdbc.TestDriver) TestGeneralCommonTableQueries(org.h2.test.db.TestGeneralCommonTableQueries) TestBigDb(org.h2.test.db.TestBigDb) TestOutOfMemory(org.h2.test.db.TestOutOfMemory) TestFunctionOverload(org.h2.test.db.TestFunctionOverload) TestPowerOff(org.h2.test.db.TestPowerOff) TestPersistentCommonTableExpressions(org.h2.test.db.TestPersistentCommonTableExpressions) TestKillRestartMulti(org.h2.test.synth.TestKillRestartMulti) TestBtreeIndex(org.h2.test.synth.TestBtreeIndex) TestOptimizations(org.h2.test.db.TestOptimizations) TestMultiThreaded(org.h2.test.synth.TestMultiThreaded) TestLinkedTable(org.h2.test.db.TestLinkedTable) TestTriggersConstraints(org.h2.test.db.TestTriggersConstraints) SamplesTest(org.h2.test.jaqu.SamplesTest) TestSynonymForTable(org.h2.test.db.TestSynonymForTable) TestReadOnly(org.h2.test.db.TestReadOnly) TestCompatibilityOracle(org.h2.test.db.TestCompatibilityOracle) TestInit(org.h2.test.server.TestInit) TestCsv(org.h2.test.db.TestCsv) TestFullText(org.h2.test.db.TestFullText) TestIndexHints(org.h2.test.db.TestIndexHints) AnnotationsTest(org.h2.test.jaqu.AnnotationsTest) TestDiskFull(org.h2.test.synth.TestDiskFull) TestStatement(org.h2.test.jdbc.TestStatement) TestReplace(org.h2.test.db.TestReplace) TestScriptSimple(org.h2.test.scripts.TestScriptSimple) TestTwoPhaseCommit(org.h2.test.db.TestTwoPhaseCommit) TestSessionsLocks(org.h2.test.db.TestSessionsLocks) TestIndex(org.h2.test.db.TestIndex) TestOuterJoins(org.h2.test.synth.TestOuterJoins) TestAlterSchemaRename(org.h2.test.db.TestAlterSchemaRename) TestBackup(org.h2.test.db.TestBackup) TestAutoRecompile(org.h2.test.db.TestAutoRecompile) TestShow(org.h2.test.db.TestShow) TestSQLInjection(org.h2.test.db.TestSQLInjection) TestDrop(org.h2.test.db.TestDrop) TestConnectionPool(org.h2.test.jdbcx.TestConnectionPool) TestCancel(org.h2.test.jdbc.TestCancel) TestScript(org.h2.test.scripts.TestScript) TestCrashAPI(org.h2.test.synth.TestCrashAPI) TestRecursiveQueries(org.h2.test.db.TestRecursiveQueries) TestKillRestart(org.h2.test.synth.TestKillRestart) TestBigResult(org.h2.test.db.TestBigResult) ClobTest(org.h2.test.jaqu.ClobTest) TestNestedJoins(org.h2.test.synth.TestNestedJoins) TestRowFactory(org.h2.test.db.TestRowFactory) TestCallableStatement(org.h2.test.jdbc.TestCallableStatement) TestNativeSQL(org.h2.test.jdbc.TestNativeSQL) TestSpeed(org.h2.test.db.TestSpeed) TestTempTables(org.h2.test.db.TestTempTables) TestZloty(org.h2.test.jdbc.TestZloty) TestMultiConn(org.h2.test.db.TestMultiConn) TestMvcc3(org.h2.test.mvcc.TestMvcc3) TestMvcc4(org.h2.test.mvcc.TestMvcc4) TestMvcc1(org.h2.test.mvcc.TestMvcc1) TestSpatial(org.h2.test.db.TestSpatial) TestMvcc2(org.h2.test.mvcc.TestMvcc2) TestQueryCache(org.h2.test.db.TestQueryCache) TestAlter(org.h2.test.db.TestAlter) TestDateStorage(org.h2.test.db.TestDateStorage) TestColumnNamer(org.h2.test.utils.TestColumnNamer) TestLimitUpdates(org.h2.test.jdbc.TestLimitUpdates) TestReorderWrites(org.h2.test.poweroff.TestReorderWrites) TestView(org.h2.test.db.TestView) TestOptimizerHints(org.h2.test.db.TestOptimizerHints)

Aggregations

PreparedStatement (java.sql.PreparedStatement)1 ResultSet (java.sql.ResultSet)1 Statement (java.sql.Statement)1 JdbcPreparedStatement (org.h2.jdbc.JdbcPreparedStatement)1 JdbcStatement (org.h2.jdbc.JdbcStatement)1 TestAlter (org.h2.test.db.TestAlter)1 TestAlterSchemaRename (org.h2.test.db.TestAlterSchemaRename)1 TestAutoRecompile (org.h2.test.db.TestAutoRecompile)1 TestBackup (org.h2.test.db.TestBackup)1 TestBigDb (org.h2.test.db.TestBigDb)1 TestBigResult (org.h2.test.db.TestBigResult)1 TestCases (org.h2.test.db.TestCases)1 TestCheckpoint (org.h2.test.db.TestCheckpoint)1 TestCompatibility (org.h2.test.db.TestCompatibility)1 TestCompatibilityOracle (org.h2.test.db.TestCompatibilityOracle)1 TestCsv (org.h2.test.db.TestCsv)1 TestDateStorage (org.h2.test.db.TestDateStorage)1 TestDeadlock (org.h2.test.db.TestDeadlock)1 TestDrop (org.h2.test.db.TestDrop)1 TestDuplicateKeyUpdate (org.h2.test.db.TestDuplicateKeyUpdate)1