Search in sources :

Example 6 with Column

use of io.shardingjdbc.core.parsing.parser.context.condition.Column in project sharding-jdbc by shardingjdbc.

the class UpdateStatementParserTest method assertUpdateStatementWithoutParameter.

private void assertUpdateStatementWithoutParameter(final DMLStatement updateStatement) {
    assertThat(updateStatement.getTables().find("TABLE_XXX").get().getName(), is("TABLE_XXX"));
    assertThat(updateStatement.getTables().find("TABLE_XXX").get().getAlias().get(), is("xxx"));
    Condition condition1 = updateStatement.getConditions().find(new Column("field1", "TABLE_XXX")).get();
    assertThat(condition1.getOperator(), is(ShardingOperator.EQUAL));
    assertThat(((ListShardingValue<? extends Comparable>) condition1.getShardingValue(Collections.emptyList())).getValues().iterator().next(), is((Comparable) 1));
    Condition condition2 = updateStatement.getConditions().find(new Column("field2", "TABLE_XXX")).get();
    assertThat(condition2.getOperator(), is(ShardingOperator.IN));
    Iterator<?> shardingValues2 = ((ListShardingValue) condition2.getShardingValue(Collections.emptyList())).getValues().iterator();
    assertThat(shardingValues2.next(), is((Object) 1));
    assertThat(shardingValues2.next(), is((Object) 3));
    assertFalse(shardingValues2.hasNext());
    Condition condition3 = updateStatement.getConditions().find(new Column("field3", "TABLE_XXX")).get();
    Range shardingValues3 = ((RangeShardingValue) condition3.getShardingValue(Collections.emptyList())).getValueRange();
    assertThat(condition3.getOperator(), is(ShardingOperator.BETWEEN));
    assertThat(shardingValues3.lowerEndpoint(), is((Comparable) 5));
    assertThat(shardingValues3.upperEndpoint(), is((Comparable) 20));
}
Also used : Condition(io.shardingjdbc.core.parsing.parser.context.condition.Condition) RangeShardingValue(io.shardingjdbc.core.api.algorithm.sharding.RangeShardingValue) Column(io.shardingjdbc.core.parsing.parser.context.condition.Column) Range(com.google.common.collect.Range)

Example 7 with Column

use of io.shardingjdbc.core.parsing.parser.context.condition.Column in project sharding-jdbc by shardingjdbc.

the class UpdateStatementParserTest method assertUpdateStatementWitParameter.

private void assertUpdateStatementWitParameter(final DMLStatement updateStatement) {
    assertThat(updateStatement.getTables().find("TABLE_XXX").get().getName(), is("TABLE_XXX"));
    assertThat(updateStatement.getTables().find("TABLE_XXX").get().getAlias().get(), is("xxx"));
    List<Object> actualParameters = Arrays.<Object>asList(0, 10, 20, 30, 40, 50, 60, 70, 80);
    Condition condition1 = updateStatement.getConditions().find(new Column("field1", "TABLE_XXX")).get();
    assertThat(condition1.getOperator(), is(ShardingOperator.EQUAL));
    assertThat(((ListShardingValue<? extends Comparable>) condition1.getShardingValue(actualParameters)).getValues().iterator().next(), is((Comparable) 20));
    Condition condition2 = updateStatement.getConditions().find(new Column("field2", "TABLE_XXX")).get();
    assertThat(condition2.getOperator(), is(ShardingOperator.IN));
    Iterator<?> shardingValue2 = ((ListShardingValue) condition2.getShardingValue(actualParameters)).getValues().iterator();
    assertThat(shardingValue2.next(), is((Object) 40));
    assertThat(shardingValue2.next(), is((Object) 50));
    assertFalse(shardingValue2.hasNext());
    Condition condition3 = updateStatement.getConditions().find(new Column("field3", "TABLE_XXX")).get();
    assertThat(condition3.getOperator(), is(ShardingOperator.BETWEEN));
    Range shardingValue3 = ((RangeShardingValue) condition3.getShardingValue(actualParameters)).getValueRange();
    assertThat(shardingValue3.lowerEndpoint(), is((Comparable) 70));
    assertThat(shardingValue3.upperEndpoint(), is((Comparable) 80));
}
Also used : Condition(io.shardingjdbc.core.parsing.parser.context.condition.Condition) RangeShardingValue(io.shardingjdbc.core.api.algorithm.sharding.RangeShardingValue) Column(io.shardingjdbc.core.parsing.parser.context.condition.Column) Range(com.google.common.collect.Range)

Example 8 with Column

use of io.shardingjdbc.core.parsing.parser.context.condition.Column in project sharding-jdbc by shardingjdbc.

the class UpdateStatementParserTest method parseWithSpecialSyntax.

private void parseWithSpecialSyntax(final DatabaseType dbType, final String actualSQL) {
    ShardingRule shardingRule = createShardingRule();
    DMLStatement updateStatement = (DMLStatement) new SQLParsingEngine(dbType, actualSQL, shardingRule).parse();
    assertThat(updateStatement.getTables().find("TABLE_XXX").get().getName(), is("TABLE_XXX"));
    assertFalse(updateStatement.getTables().find("TABLE_XXX").get().getAlias().isPresent());
    Condition condition = updateStatement.getConditions().find(new Column("field1", "TABLE_XXX")).get();
    assertThat(condition.getOperator(), is(ShardingOperator.EQUAL));
    assertThat(((ListShardingValue<? extends Comparable>) condition.getShardingValue(Collections.emptyList())).getValues().iterator().next(), is((Object) 1));
}
Also used : Condition(io.shardingjdbc.core.parsing.parser.context.condition.Condition) Column(io.shardingjdbc.core.parsing.parser.context.condition.Column) ShardingRule(io.shardingjdbc.core.rule.ShardingRule) DMLStatement(io.shardingjdbc.core.parsing.parser.sql.dml.DMLStatement) SQLParsingEngine(io.shardingjdbc.core.parsing.SQLParsingEngine)

Example 9 with Column

use of io.shardingjdbc.core.parsing.parser.context.condition.Column in project sharding-jdbc by shardingjdbc.

the class DeleteStatementParserTest method assertDeleteStatementWithParameter.

private void assertDeleteStatementWithParameter(final DMLStatement deleteStatement) {
    assertThat(deleteStatement.getTables().find("TABLE_XXX").get().getName(), is("TABLE_XXX"));
    assertThat(deleteStatement.getTables().find("xxx").get().getAlias().get(), is("xxx"));
    List<Object> actualParameters = Arrays.<Object>asList(0, 10, 20, 30, 40, 50, 60, 70, 80);
    Condition condition1 = deleteStatement.getConditions().find(new Column("field1", "TABLE_XXX")).get();
    assertThat(condition1.getOperator(), is(ShardingOperator.EQUAL));
    assertThat(((ListShardingValue) condition1.getShardingValue(actualParameters)).getValues().iterator().next(), is((Object) 10));
    Condition condition2 = deleteStatement.getConditions().find(new Column("field2", "TABLE_XXX")).get();
    assertThat(condition2.getOperator(), is(ShardingOperator.IN));
    Iterator<?> shardingValues2 = ((ListShardingValue) condition2.getShardingValue(actualParameters)).getValues().iterator();
    assertThat(shardingValues2.next(), is((Object) 30));
    assertThat(shardingValues2.next(), is((Object) 40));
    Condition condition3 = deleteStatement.getConditions().find(new Column("field3", "TABLE_XXX")).get();
    assertThat(condition3.getOperator(), is(ShardingOperator.BETWEEN));
    Range shardingValues3 = ((RangeShardingValue) condition3.getShardingValue(actualParameters)).getValueRange();
    assertThat(shardingValues3.lowerEndpoint(), is((Comparable) 60));
    assertThat(shardingValues3.upperEndpoint(), is((Comparable) 70));
}
Also used : Condition(io.shardingjdbc.core.parsing.parser.context.condition.Condition) RangeShardingValue(io.shardingjdbc.core.api.algorithm.sharding.RangeShardingValue) Column(io.shardingjdbc.core.parsing.parser.context.condition.Column) Range(com.google.common.collect.Range)

Example 10 with Column

use of io.shardingjdbc.core.parsing.parser.context.condition.Column in project sharding-jdbc by shardingjdbc.

the class InsertStatementParserTest method parseWithSpecialSyntax.

@SuppressWarnings("unchecked")
private void parseWithSpecialSyntax(final DatabaseType dbType, final String actualSQL) {
    ShardingRule shardingRule = createShardingRule();
    InsertStatement insertStatement = (InsertStatement) new SQLParsingEngine(dbType, actualSQL, shardingRule).parse();
    assertThat(insertStatement.getTables().find("TABLE_XXX").get().getName(), is("TABLE_XXX"));
    assertFalse(insertStatement.getTables().find("TABLE_XXX").get().getAlias().isPresent());
    Condition condition = insertStatement.getConditions().find(new Column("field1", "TABLE_XXX")).get();
    assertThat(condition.getOperator(), is(ShardingOperator.EQUAL));
    assertThat(((ListShardingValue<? extends Comparable>) condition.getShardingValue(Collections.emptyList())).getValues().iterator().next(), is((Comparable) 1));
}
Also used : Condition(io.shardingjdbc.core.parsing.parser.context.condition.Condition) Column(io.shardingjdbc.core.parsing.parser.context.condition.Column) ShardingRule(io.shardingjdbc.core.rule.ShardingRule) SQLParsingEngine(io.shardingjdbc.core.parsing.SQLParsingEngine) InsertStatement(io.shardingjdbc.core.parsing.parser.sql.dml.insert.InsertStatement)

Aggregations

Column (io.shardingjdbc.core.parsing.parser.context.condition.Column)21 Condition (io.shardingjdbc.core.parsing.parser.context.condition.Condition)15 ShardingRuleConfiguration (io.shardingjdbc.core.api.config.ShardingRuleConfiguration)5 Test (org.junit.Test)5 Range (com.google.common.collect.Range)4 RangeShardingValue (io.shardingjdbc.core.api.algorithm.sharding.RangeShardingValue)4 SQLExpression (io.shardingjdbc.core.parsing.parser.expression.SQLExpression)4 LinkedList (java.util.LinkedList)4 SQLParsingEngine (io.shardingjdbc.core.parsing.SQLParsingEngine)3 ShardingRule (io.shardingjdbc.core.rule.ShardingRule)3 TestPreciseShardingAlgorithm (io.shardingjdbc.core.api.algorithm.fixture.TestPreciseShardingAlgorithm)2 StandardShardingStrategyConfiguration (io.shardingjdbc.core.api.config.strategy.StandardShardingStrategyConfiguration)2 SQLNumberExpression (io.shardingjdbc.core.parsing.parser.expression.SQLNumberExpression)2 SQLPlaceholderExpression (io.shardingjdbc.core.parsing.parser.expression.SQLPlaceholderExpression)2 DMLStatement (io.shardingjdbc.core.parsing.parser.sql.dml.DMLStatement)2 ExpectedCondition (io.shardingjdbc.core.parsing.integrate.jaxb.condition.ExpectedCondition)1 GeneratedKey (io.shardingjdbc.core.parsing.parser.context.GeneratedKey)1 SQLIgnoreExpression (io.shardingjdbc.core.parsing.parser.expression.SQLIgnoreExpression)1 SQLTextExpression (io.shardingjdbc.core.parsing.parser.expression.SQLTextExpression)1 InsertStatement (io.shardingjdbc.core.parsing.parser.sql.dml.insert.InsertStatement)1