Search in sources :

Example 6 with RequestMessage

use of org.teiid.client.RequestMessage in project teiid by teiid.

the class TestDQPCore method testProcedureUpdateCount.

@Test
public void testProcedureUpdateCount() throws Exception {
    // $NON-NLS-1$
    String sql = "{? = call TEIIDSP8(1)}";
    RequestMessage request = exampleRequestMessage(sql);
    request.setResultsMode(ResultsMode.UPDATECOUNT);
    request.setStatementType(StatementType.CALLABLE);
    ResultsMessage rm = execute("A", 1, request);
    assertNull(rm.getException());
    assertEquals(1, rm.getResultsList().size());
}
Also used : ResultsMessage(org.teiid.client.ResultsMessage) RequestMessage(org.teiid.client.RequestMessage) Test(org.junit.Test)

Example 7 with RequestMessage

use of org.teiid.client.RequestMessage in project teiid by teiid.

the class TestDQPCore method testFinalRow.

@Test
public void testFinalRow() throws Exception {
    // $NON-NLS-1$
    String sql = "SELECT A.IntKey FROM BQT1.SmallA as A";
    // $NON-NLS-1$
    String userName = "1";
    // $NON-NLS-1$
    String sessionid = "1";
    RequestMessage reqMsg = exampleRequestMessage(sql);
    reqMsg.setCursorType(ResultSet.TYPE_FORWARD_ONLY);
    DQPWorkContext.getWorkContext().getSession().setSessionId(sessionid);
    DQPWorkContext.getWorkContext().getSession().setUserName(userName);
    ((BufferManagerImpl) core.getBufferManager()).setProcessorBatchSize(10);
    Future<ResultsMessage> message = core.executeRequest(reqMsg.getExecutionId(), reqMsg);
    ResultsMessage rm = message.get(500000, TimeUnit.MILLISECONDS);
    assertNull(rm.getException());
    assertEquals(10, rm.getResultsList().size());
    RequestWorkItem item = core.getRequestWorkItem(DQPWorkContext.getWorkContext().getRequestID(reqMsg.getExecutionId()));
    while (item.isProcessing()) ;
    synchronized (item) {
        for (int i = 0; i < 100; i++) {
            Thread.sleep(10);
        }
    }
    assertEquals(10, item.resultsBuffer.getRowCount());
}
Also used : BufferManagerImpl(org.teiid.common.buffer.impl.BufferManagerImpl) ResultsMessage(org.teiid.client.ResultsMessage) RequestMessage(org.teiid.client.RequestMessage) Test(org.junit.Test)

Example 8 with RequestMessage

use of org.teiid.client.RequestMessage in project teiid by teiid.

the class TestDQPCore method testProcedureMaxRows.

/**
 * Ensure that the row limit is not misapplied.
 * Note that it still could be applied in this example, but the
 * resultset only returns a single row
 */
@Test
public void testProcedureMaxRows() throws Exception {
    // $NON-NLS-1$
    String sql = "{? = call TEIIDSP9(1, ?)}";
    RequestMessage request = exampleRequestMessage(sql);
    request.setRowLimit(1);
    request.setStatementType(StatementType.CALLABLE);
    ResultsMessage rm = execute("A", 1, request);
    assertNull(rm.getException());
    assertEquals(2, rm.getResultsList().size());
}
Also used : ResultsMessage(org.teiid.client.ResultsMessage) RequestMessage(org.teiid.client.RequestMessage) Test(org.junit.Test)

Example 9 with RequestMessage

use of org.teiid.client.RequestMessage in project teiid by teiid.

the class TestDQPCore method testBufferReuse.

@Test
public void testBufferReuse() throws Exception {
    // the sql should return 100 rows
    // $NON-NLS-1$
    String sql = "SELECT A.IntKey FROM BQT1.SmallA as A, BQT1.SmallA as B ORDER BY A.IntKey";
    // $NON-NLS-1$
    String userName = "1";
    // $NON-NLS-1$
    String sessionid = "1";
    RequestMessage reqMsg = exampleRequestMessage(sql);
    reqMsg.setCursorType(ResultSet.TYPE_FORWARD_ONLY);
    DQPWorkContext.getWorkContext().getSession().setSessionId(sessionid);
    DQPWorkContext.getWorkContext().getSession().setUserName(userName);
    ((BufferManagerImpl) core.getBufferManager()).setProcessorBatchSize(1);
    Future<ResultsMessage> message = core.executeRequest(reqMsg.getExecutionId(), reqMsg);
    ResultsMessage rm = message.get(500000, TimeUnit.MILLISECONDS);
    assertNull(rm.getException());
    assertEquals(8, rm.getResultsList().size());
    RequestWorkItem item = core.getRequestWorkItem(DQPWorkContext.getWorkContext().getRequestID(reqMsg.getExecutionId()));
    assertEquals(100, item.resultsBuffer.getRowCount());
}
Also used : BufferManagerImpl(org.teiid.common.buffer.impl.BufferManagerImpl) ResultsMessage(org.teiid.client.ResultsMessage) RequestMessage(org.teiid.client.RequestMessage) Test(org.junit.Test)

Example 10 with RequestMessage

use of org.teiid.client.RequestMessage in project teiid by teiid.

the class TestDQPCore method testLobConcurrency.

@Test
public void testLobConcurrency() throws Exception {
    RequestMessage reqMsg = exampleRequestMessage("select to_bytes(stringkey, 'utf-8') FROM BQT1.SmallA");
    reqMsg.setTxnAutoWrapMode(RequestMessage.TXN_WRAP_OFF);
    agds.setSleep(100);
    ResultsFuture<ResultsMessage> message = core.executeRequest(reqMsg.getExecutionId(), reqMsg);
    final LobThread t = new LobThread(reqMsg);
    t.start();
    message.addCompletionListener(new ResultsFuture.CompletionListener<ResultsMessage>() {

        @Override
        public void onCompletion(ResultsFuture<ResultsMessage> future) {
            try {
                final BlobType bt = (BlobType) future.get().getResultsList().get(0).get(0);
                synchronized (t) {
                    t.bt = bt;
                    t.workContext = DQPWorkContext.getWorkContext();
                    t.notify();
                }
                // give the Thread a chance to run
                Thread.sleep(100);
            } catch (Exception e) {
                t.interrupt();
                throw new RuntimeException(e);
            }
        }
    });
    message.get();
    t.join();
    assertNotNull(t.chunkFuture.get().getBytes());
}
Also used : ResultsFuture(org.teiid.client.util.ResultsFuture) BlobType(org.teiid.core.types.BlobType) ResultsMessage(org.teiid.client.ResultsMessage) RequestMessage(org.teiid.client.RequestMessage) TimeoutException(java.util.concurrent.TimeoutException) TeiidProcessingException(org.teiid.core.TeiidProcessingException) QueryResolverException(org.teiid.api.exception.query.QueryResolverException) ExecutionException(java.util.concurrent.ExecutionException) Test(org.junit.Test)

Aggregations

RequestMessage (org.teiid.client.RequestMessage)44 ResultsMessage (org.teiid.client.ResultsMessage)23 Test (org.junit.Test)22 AtomicRequestMessage (org.teiid.dqp.message.AtomicRequestMessage)10 RequestID (org.teiid.dqp.message.RequestID)8 BufferManagerImpl (org.teiid.common.buffer.impl.BufferManagerImpl)6 FakeTransactionService (org.teiid.dqp.internal.datamgr.FakeTransactionService)6 ResultsFuture (org.teiid.client.util.ResultsFuture)5 List (java.util.List)4 QueryMetadataInterface (org.teiid.query.metadata.QueryMetadataInterface)4 ArrayList (java.util.ArrayList)3 ExecutionException (java.util.concurrent.ExecutionException)3 TeiidComponentException (org.teiid.core.TeiidComponentException)3 TeiidProcessingException (org.teiid.core.TeiidProcessingException)3 Command (org.teiid.query.sql.lang.Command)3 TimeoutException (java.util.concurrent.TimeoutException)2 QueryResolverException (org.teiid.api.exception.query.QueryResolverException)2 TeiidRuntimeException (org.teiid.core.TeiidRuntimeException)2 CommandContext (org.teiid.query.util.CommandContext)2 BatchUpdateException (java.sql.BatchUpdateException)1