@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 public void merge_with_keys_columns_and_values() { // keys + columns + values assertEquals(1, merge(survey).keys(survey.id) .set(survey.id, 5) .set(survey.name, "Hello World").execute()); }
@Test public void merge_with_keys_columns_and_values_using_null() { // keys + columns + values assertEquals(1, merge(survey).keys(survey.id) .set(survey.id, 5) .set(survey.name, (String) null).execute()); }
@Test @IncludeIn(H2) public void merge_with_keys_and_values() { // NOTE : doesn't work with composite merge implementation // keys + values assertEquals(1, merge(survey).keys(survey.id).values(5, "Hello World", "Hello").execute()); }
@Test @IncludeIn(H2) public void merge_with_templateExpression_in_batch() { SQLMergeClause merge = merge(survey) .keys(survey.id) .set(survey.id, 5) .set(survey.name, Expressions.stringTemplate("'5'")) .addBatch(); assertEquals(1, merge.execute()); }
@Test @IncludeIn(H2) public void merge_with_keys_and_subQuery() { assertEquals(1, insert(survey).set(survey.id, 6).set(survey.name, "H").execute()); // keys + subquery QSurvey survey2 = new QSurvey("survey2"); assertEquals(2, merge(survey).keys(survey.id).select( query().from(survey2).select(survey2.id.add(1), survey2.name, survey2.name2)).execute()); }
@Test @IncludeIn(H2) public void mergeBatch_with_subquery() { SQLMergeClause merge = merge(survey) .keys(survey.id) .columns(survey.id, survey.name) .select(query().from(survey2).select(survey2.id.add(20), survey2.name)) .addBatch(); merge(survey) .keys(survey.id) .columns(survey.id, survey.name) .select(query().from(survey2).select(survey2.id.add(40), survey2.name)) .addBatch(); assertEquals(1, merge.execute()); }
@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()); }