@Test public void testUpdateSetExpression() throws Exception { UpdateAnalyzedStatement statement = analyze("update users set other_id=other_id+1"); UpdateAnalyzedStatement.NestedAnalyzedStatement statement1 = statement.nestedStatements().get(0); assertThat(statement1.assignments().size(), is(1)); Symbol value = statement1.assignments().entrySet().iterator().next().getValue(); assertThat(value, isFunction("add")); }
@Test public void testUpdateSetColumnToColumnValue() throws Exception { UpdateAnalyzedStatement statement = analyze("update users set name=name"); UpdateAnalyzedStatement.NestedAnalyzedStatement statement1 = statement.nestedStatements().get(0); assertThat(statement1.assignments().size(), is(1)); Symbol value = statement1.assignments().entrySet().iterator().next().getValue(); assertThat(value, isReference("name")); }
@Test public void testTestUpdateOnTableWithAliasAndFQColumnNameInWhereClause() throws Exception { UpdateAnalyzedStatement statement = analyze("update users t set name = 'foo' where t.name != 'foo'"); Function eqFunction = (Function) ((Function) statement.nestedStatements().get(0).whereClause().query()) .arguments() .get(0); assertThat(eqFunction.arguments().get(0), isReference("name")); }
@Test public void testUsingFQColumnNameShouldBePossibleInWhereClause() throws Exception { UpdateAnalyzedStatement statement = analyze("update users set name = 'foo' where users.name != 'foo'"); Function eqFunction = (Function) ((Function) statement.nestedStatements().get(0).whereClause().query()) .arguments() .get(0); assertThat(eqFunction.arguments().get(0), isReference("name")); }
@Test public void testUpdateAssignments() throws Exception { UpdateAnalyzedStatement statement = analyze("update users set name='Trillian'"); UpdateAnalyzedStatement.NestedAnalyzedStatement statement1 = statement.nestedStatements().get(0); assertThat(statement1.assignments().size(), is(1)); assertThat( ((DocTableRelation) statement.sourceRelation()).tableInfo().ident(), is(new TableIdent(Schemas.DEFAULT_SCHEMA_NAME, "users"))); Reference ref = statement1.assignments().keySet().iterator().next(); assertThat(ref.info().ident().tableIdent().name(), is("users")); assertThat(ref.info().ident().columnIdent().name(), is("name")); assertTrue(statement1.assignments().containsKey(ref)); Symbol value = statement1.assignments().entrySet().iterator().next().getValue(); assertThat(value, isLiteral("Trillian")); }