@Test @ExcludeIn({CUBRID, DB2, DERBY, POSTGRESQL, SQLSERVER, TERADATA}) public void merge_with_keys_Null_Id() throws SQLException { ResultSet rs = merge(survey).keys(survey.id) .setNull(survey.id) .set(survey.name, "Hello World").executeWithKeys(); assertTrue(rs.next()); assertTrue(rs.getObject(1) != null); rs.close(); }
@Test public void merge_listener() { final AtomicInteger calls = new AtomicInteger(0); SQLListener listener = new SQLBaseListener() { @Override public void end(SQLListenerContext context) { if (context.getData(AbstractSQLQuery.PARENT_CONTEXT) == null) { calls.incrementAndGet(); } } }; SQLMergeClause clause = merge(survey).keys(survey.id) .set(survey.id, 5) .set(survey.name, "Hello World"); clause.addListener(listener); assertEquals(1, clause.execute()); assertEquals(1, calls.intValue()); }
@Test @ExcludeIn({H2, CUBRID, SQLSERVER}) public void merge_with_keys_Projected2() throws SQLException { Path<Object> idPath = ExpressionUtils.path(Object.class, "id"); Object id = merge(survey).keys(survey.id) .set(survey.id, 9) .set(survey.name, "Hello you").executeWithKey(idPath); assertNotNull(id); }
@Test @ExcludeIn({H2, CUBRID, SQLSERVER}) public void merge_with_keys_listener() throws SQLException { final AtomicBoolean result = new AtomicBoolean(); SQLListener listener = new SQLBaseListener() { @Override public void end(SQLListenerContext context) { result.set(true); } }; SQLMergeClause clause = merge(survey).keys(survey.id) .set(survey.id, 7) .set(survey.name, "Hello World"); clause.addListener(listener); ResultSet rs = clause.executeWithKeys(); assertTrue(rs.next()); assertTrue(rs.getObject(1) != null); rs.close(); assertTrue(result.get()); }
@Test @IncludeIn(H2) public void mergeBatch_templates() { SQLMergeClause merge = merge(survey) .keys(survey.id) .set(survey.id, 5) .set(survey.name, Expressions.stringTemplate("'5'")) .addBatch(); merge .keys(survey.id) .set(survey.id, 6) .set(survey.name, Expressions.stringTemplate("'6'")) .addBatch(); assertEquals(2, merge.execute()); assertEquals(1L, query().from(survey).where(survey.name.eq("5")).fetchCount()); assertEquals(1L, query().from(survey).where(survey.name.eq("6")).fetchCount()); }
@Test @IncludeIn(H2) public void mergeBatch() { SQLMergeClause merge = merge(survey) .keys(survey.id) .set(survey.id, 5) .set(survey.name, "5") .addBatch(); assertEquals(1, merge.getBatchCount()); assertFalse(merge.isEmpty()); merge .keys(survey.id) .set(survey.id, 6) .set(survey.name, "6") .addBatch(); assertEquals(2, merge.getBatchCount()); assertEquals(2, merge.execute()); assertEquals(1L, query().from(survey).where(survey.name.eq("5")).fetchCount()); assertEquals(1L, query().from(survey).where(survey.name.eq("6")).fetchCount()); }
@Test public void clear() { KeyAccessorsTest.QEmployee emp1 = new KeyAccessorsTest.QEmployee("emp1"); SQLMergeClause merge = new SQLMergeClause(null, new H2Templates(), emp1); merge.set(emp1.id, 1); merge.addBatch(); assertEquals(1, merge.getBatchCount()); merge.clear(); assertEquals(0, merge.getBatchCount()); } }