use of io.shardingjdbc.core.executor.type.statement.StatementUnit in project sharding-jdbc by shardingjdbc.
the class StatementExecutorTest method createStatementUnits.
private Collection<StatementUnit> createStatementUnits(final String sql, final Statement statement, final String dataSource) {
Collection<StatementUnit> result = new LinkedList<>();
SQLBuilder sqlBuilder = new SQLBuilder();
sqlBuilder.appendLiterals(sql);
result.add(new StatementUnit(new SQLExecutionUnit(dataSource, sqlBuilder.toSQL(Collections.<String, String>emptyMap(), null)), statement));
return result;
}
use of io.shardingjdbc.core.executor.type.statement.StatementUnit in project sharding-jdbc by shardingjdbc.
the class ExecuteEventListenerTest method assertSQLException.
@Test(expected = SQLException.class)
public void assertSQLException() throws Exception {
Statement statement = mock(Statement.class);
when(statement.getConnection()).thenReturn(mock(Connection.class));
executorEngine.executeStatement(SQLType.DQL, Collections.singleton(new StatementUnit(new SQLExecutionUnit("ds_0", "select ..."), statement)), new ExecuteCallback<Integer>() {
@Override
public Integer execute(final BaseStatementUnit baseStatementUnit) throws Exception {
throw new SQLException();
}
});
}
use of io.shardingjdbc.core.executor.type.statement.StatementUnit in project sharding-jdbc by shardingjdbc.
the class ExecuteEventListenerTest method assertMultiStatement.
@Test
public void assertMultiStatement() throws Exception {
List<StatementUnit> statementUnitList = new ArrayList<>(2);
Statement stm1 = mock(Statement.class);
when(stm1.getConnection()).thenReturn(mock(Connection.class));
statementUnitList.add(new StatementUnit(new SQLExecutionUnit("ds_0", "insert into ..."), stm1));
Statement stm2 = mock(Statement.class);
when(stm2.getConnection()).thenReturn(mock(Connection.class));
statementUnitList.add(new StatementUnit(new SQLExecutionUnit("ds_0", "insert into ..."), stm2));
executorEngine.executeStatement(SQLType.DML, statementUnitList, new ExecuteCallback<Integer>() {
@Override
public Integer execute(final BaseStatementUnit baseStatementUnit) throws Exception {
return 0;
}
});
assertThat(TRACER.finishedSpans().size(), is(3));
}
use of io.shardingjdbc.core.executor.type.statement.StatementUnit in project sharding-jdbc by shardingjdbc.
the class ExecuteEventListenerTest method assertSingleStatement.
@Test
public void assertSingleStatement() throws Exception {
Statement statement = mock(Statement.class);
when(statement.getConnection()).thenReturn(mock(Connection.class));
executorEngine.executeStatement(SQLType.DML, Collections.singleton(new StatementUnit(new SQLExecutionUnit("ds_0", "insert into ..."), statement)), new ExecuteCallback<Integer>() {
@Override
public Integer execute(final BaseStatementUnit baseStatementUnit) throws Exception {
return 0;
}
});
assertThat(TRACER.finishedSpans().size(), is(2));
}
use of io.shardingjdbc.core.executor.type.statement.StatementUnit in project sharding-jdbc by shardingjdbc.
the class ShardingStatement method generateExecutor.
private StatementExecutor generateExecutor(final String sql) throws SQLException {
clearPrevious();
ShardingContext shardingContext = connection.getShardingContext();
routeResult = new StatementRoutingEngine(shardingContext.getShardingRule(), shardingContext.getDatabaseType(), shardingContext.isShowSQL()).route(sql);
Collection<StatementUnit> statementUnits = new LinkedList<>();
for (SQLExecutionUnit each : routeResult.getExecutionUnits()) {
Collection<Connection> connections;
SQLType sqlType = routeResult.getSqlStatement().getType();
if (SQLType.DDL == sqlType) {
connections = connection.getConnectionsForDDL(each.getDataSource());
} else {
connections = Collections.singletonList(connection.getConnection(each.getDataSource(), routeResult.getSqlStatement().getType()));
}
for (Connection connection : connections) {
Statement statement = connection.createStatement(resultSetType, resultSetConcurrency, resultSetHoldability);
replayMethodsInvocation(statement);
statementUnits.add(new StatementUnit(each, statement));
routedStatements.add(statement);
}
}
return new StatementExecutor(connection.getShardingContext().getExecutorEngine(), routeResult.getSqlStatement().getType(), statementUnits);
}
Aggregations