use of org.teiid.jdbc.RequestOptions in project teiid by teiid.
the class TestAsynch method testAsynchPlaning.
@Test
public void testAsynchPlaning() throws Exception {
Statement stmt = this.internalConnection.createStatement();
TeiidStatement ts = stmt.unwrap(TeiidStatement.class);
ef.addData("SELECT someTable.col FROM someTable", Arrays.asList(Arrays.asList(1)));
final ResultsFuture<Integer> result = new ResultsFuture<Integer>();
ts.submitExecute("select * from someTable", new StatementCallback() {
int rowCount;
@Override
public void onRow(Statement s, ResultSet rs) {
try {
rowCount++;
if (rowCount == 3) {
s.close();
}
} catch (SQLException e) {
result.getResultsReceiver().exceptionOccurred(e);
throw new RuntimeException(e);
}
}
@Override
public void onException(Statement s, Exception e) {
result.getResultsReceiver().exceptionOccurred(e);
}
@Override
public void onComplete(Statement s) {
result.getResultsReceiver().receiveResults(rowCount);
}
}, new RequestOptions().continuous(true));
assertEquals(3, result.get().intValue());
assertEquals(3, partIds.size());
assertEquals(partIds.get(0), partIds.get(1));
assertEquals(partIds.get(1), partIds.get(2));
}
use of org.teiid.jdbc.RequestOptions in project teiid by teiid.
the class TestAsynch method testAsynchContinuousEmpty.
@Test
public void testAsynchContinuousEmpty() throws Exception {
Statement stmt = this.internalConnection.createStatement();
TeiidStatement ts = stmt.unwrap(TeiidStatement.class);
final ResultsFuture<Integer> result = new ResultsFuture<Integer>();
ts.submitExecute("select * from SYS.Schemas where 1 = 0", new ContinuousStatementCallback() {
int execCount;
@Override
public void onRow(Statement s, ResultSet rs) throws SQLException {
fail();
}
@Override
public void onException(Statement s, Exception e) {
result.getResultsReceiver().exceptionOccurred(e);
}
@Override
public void onComplete(Statement s) {
result.getResultsReceiver().receiveResults(execCount);
}
@Override
public void beforeNextExecution(Statement s) throws SQLException {
execCount++;
assertEquals(-1, s.getResultSet().unwrap(TeiidResultSet.class).available());
if (execCount == 1024) {
s.close();
}
}
}, new RequestOptions().continuous(true));
assertEquals(1024, result.get().intValue());
}
use of org.teiid.jdbc.RequestOptions in project teiid by teiid.
the class TestAsynch method testTransactionCycle.
@Test
public void testTransactionCycle() throws Exception {
Statement stmt = this.internalConnection.createStatement();
TeiidStatement ts = stmt.unwrap(TeiidStatement.class);
final ResultsFuture<Void> result = new ResultsFuture<Void>();
ts.submitExecute("start transaction", new StatementCallback() {
@Override
public void onRow(Statement s, ResultSet rs) {
}
@Override
public void onException(Statement s, Exception e) {
result.getResultsReceiver().exceptionOccurred(e);
}
@Override
public void onComplete(Statement s) {
result.getResultsReceiver().receiveResults(null);
}
}, new RequestOptions());
result.get();
final ResultsFuture<Void> rollBackResult = new ResultsFuture<Void>();
ts.submitExecute("rollback", new StatementCallback() {
@Override
public void onRow(Statement s, ResultSet rs) {
}
@Override
public void onException(Statement s, Exception e) {
rollBackResult.getResultsReceiver().exceptionOccurred(e);
}
@Override
public void onComplete(Statement s) {
rollBackResult.getResultsReceiver().receiveResults(null);
}
}, new RequestOptions());
rollBackResult.get();
}
use of org.teiid.jdbc.RequestOptions in project teiid by teiid.
the class TestExecutionReuse method testReusableAsynchContinuous.
@Test
public void testReusableAsynchContinuous() throws Exception {
Connection c = server.createConnection("jdbc:teiid:partssupplier");
Statement s = c.createStatement();
TeiidStatement ts = s.unwrap(TeiidStatement.class);
final ResultsFuture<Integer> result = new ResultsFuture<Integer>();
ts.submitExecute("select part_id from parts order by part_id", new StatementCallback() {
int rowCount;
@Override
public void onRow(Statement stmt, ResultSet rs) throws SQLException {
rowCount++;
if (rowCount == EXEC_COUNT) {
stmt.close();
}
}
@Override
public void onException(Statement stmt, Exception e) {
result.getResultsReceiver().exceptionOccurred(e);
}
@Override
public void onComplete(Statement stmt) {
result.getResultsReceiver().receiveResults(rowCount);
}
}, new RequestOptions().continuous(true));
synchronized (TestExecutionReuse.class) {
while (!isDisposed) {
TestExecutionReuse.class.wait();
}
}
assertEquals(EXEC_COUNT, result.get().intValue());
assertTrue(ec.getCommandContext().isContinuous());
Mockito.verify(execution, Mockito.times(1)).dispose();
Mockito.verify(execution, Mockito.times(EXEC_COUNT)).execute();
Mockito.verify(execution, Mockito.times(EXEC_COUNT)).close();
Mockito.verify(execution, Mockito.times(EXEC_COUNT - 1)).reset((Command) Mockito.anyObject(), (ExecutionContext) Mockito.anyObject(), Mockito.anyObject());
}
use of org.teiid.jdbc.RequestOptions in project teiid by teiid.
the class TestAsynch method testAsynchContinuousMergeBlock.
@Test
public void testAsynchContinuousMergeBlock() throws Exception {
Statement stmt = this.internalConnection.createStatement();
stmt.execute("create temporary table t (c string, primary key (c))");
stmt.execute("set autoCommitTxn off");
TeiidStatement ts = stmt.unwrap(TeiidStatement.class);
final ResultsFuture<Integer> result = new ResultsFuture<Integer>();
ts.submitExecute("begin merge into t select name from schemas limit 2; select rowcount; end", new StatementCallback() {
int rowCount;
@Override
public void onRow(Statement s, ResultSet rs) throws SQLException {
rowCount++;
if (rowCount == 10) {
s.close();
}
}
@Override
public void onException(Statement s, Exception e) {
result.getResultsReceiver().exceptionOccurred(e);
}
@Override
public void onComplete(Statement s) {
result.getResultsReceiver().receiveResults(rowCount);
}
}, new RequestOptions().continuous(true));
assertEquals(10, result.get().intValue());
stmt = this.internalConnection.createStatement();
ResultSet rs = stmt.executeQuery("select count(*) from t");
rs.next();
assertEquals(2, rs.getInt(1));
}
Aggregations