use of io.shardingjdbc.core.parsing.parser.sql.SQLStatement in project sharding-jdbc by shardingjdbc.
the class ParsingSQLRouter method parse.
@Override
public SQLStatement parse(final String logicSQL) {
SQLParsingEngine parsingEngine = new SQLParsingEngine(databaseType, logicSQL, shardingRule);
SQLStatement result = parsingEngine.parse();
if (result instanceof InsertStatement) {
((InsertStatement) result).appendGenerateKeyToken(shardingRule);
}
return result;
}
use of io.shardingjdbc.core.parsing.parser.sql.SQLStatement in project sharding-jdbc by shardingjdbc.
the class MasterSlaveStatement method executeUpdate.
@Override
public int executeUpdate(final String sql, final String[] columnNames) throws SQLException {
int result = 0;
SQLStatement sqlStatement = new SQLJudgeEngine(sql).judge();
for (Connection each : connection.getConnections(sqlStatement.getType())) {
Statement statement = each.createStatement(resultSetType, resultSetConcurrency, resultSetHoldability);
routedStatements.add(statement);
result += statement.executeUpdate(sql, columnNames);
}
return result;
}
use of io.shardingjdbc.core.parsing.parser.sql.SQLStatement in project sharding-jdbc by shardingjdbc.
the class MasterSlaveStatement method execute.
@Override
public boolean execute(final String sql, final int[] columnIndexes) throws SQLException {
boolean result = false;
SQLStatement sqlStatement = new SQLJudgeEngine(sql).judge();
for (Connection each : connection.getConnections(sqlStatement.getType())) {
Statement statement = each.createStatement(resultSetType, resultSetConcurrency, resultSetHoldability);
routedStatements.add(statement);
result = statement.execute(sql, columnIndexes);
}
return result;
}
use of io.shardingjdbc.core.parsing.parser.sql.SQLStatement in project sharding-jdbc by shardingjdbc.
the class ComStmtPreparePacket method execute.
@Override
public List<DatabaseProtocolPacket> execute() {
log.debug("COM_STMT_PREPARE received for Sharding-Proxy: {}", sql);
List<DatabaseProtocolPacket> result = new LinkedList<>();
int currentSequenceId = 0;
SQLStatement sqlStatement = new SQLParsingEngine(DatabaseType.MySQL, sql, ShardingRuleRegistry.getInstance().getShardingRule()).parse();
result.add(new ComStmtPrepareOKPacket(++currentSequenceId, PreparedStatementRegistry.getInstance().register(sql), getNumColumns(sqlStatement), sqlStatement.getParametersIndex(), 0));
for (int i = 0; i < sqlStatement.getParametersIndex(); i++) {
// TODO add column name
result.add(new ColumnDefinition41Packet(++currentSequenceId, ShardingConstant.LOGIC_SCHEMA_NAME, sqlStatement.getTables().isSingleTable() ? sqlStatement.getTables().getSingleTableName() : "", "", "", "", 100, ColumnType.MYSQL_TYPE_VARCHAR, 0));
}
if (sqlStatement.getParametersIndex() > 0) {
result.add(new EofPacket(++currentSequenceId, 0, StatusFlag.SERVER_STATUS_AUTOCOMMIT.getValue()));
}
// TODO add If numColumns > 0
return result;
}
use of io.shardingjdbc.core.parsing.parser.sql.SQLStatement in project sharding-jdbc by shardingjdbc.
the class MergeEngineFactoryTest method assertNewInstanceWithOtherStatement.
@Test(expected = UnsupportedOperationException.class)
public void assertNewInstanceWithOtherStatement() throws SQLException {
SQLStatement insertStatement = new InsertStatement();
MergeEngineFactory.newInstance(null, queryResults, insertStatement);
}
Aggregations