@Override public ResultsFuture<ResultsMessage> executeRequest(long reqID,RequestMessage requestMsg) throws TeiidProcessingException { return executeRequest(reqID, requestMsg, null); }
@Override public ResultsFuture<ResultsMessage> executeRequest(long reqID,RequestMessage requestMsg) throws TeiidProcessingException { return executeRequest(reqID, requestMsg, null); }
@Override public ResultsFuture<ResultsMessage> executeRequest(long reqID,RequestMessage requestMsg) throws TeiidProcessingException { return executeRequest(reqID, requestMsg, null); }
/** * Tests whether an exception result is sent when an exception occurs * @since 4.3 */ @Test public void testPlanningException() throws Exception { String sql = "SELECT IntKey FROM BQT1.BadIdea "; //$NON-NLS-1$ RequestMessage reqMsg = exampleRequestMessage(sql); Future<ResultsMessage> message = core.executeRequest(reqMsg.getExecutionId(), reqMsg); try { message.get(5000, TimeUnit.MILLISECONDS); } catch (ExecutionException e) { assertTrue(e.getCause() instanceof QueryResolverException); } }
@Override public void execute(String command, List<?> parameters) { final String sessionId = DQPWorkContext.getWorkContext().getSessionId(); RequestMessage request = new RequestMessage(command); request.setParameterValues(parameters); request.setStatementType(StatementType.PREPARED); ResultsFuture<ResultsMessage> result; try { result = executeRequest(0, request); } catch (TeiidProcessingException e) { throw new TeiidRuntimeException(e); } result.addCompletionListener(new ResultsFuture.CompletionListener<ResultsMessage>() { @Override public void onCompletion( ResultsFuture<ResultsMessage> future) { terminateSession(sessionId); } }); }
@Override public void execute(String command, List<?> parameters) { final String sessionId = DQPWorkContext.getWorkContext().getSessionId(); RequestMessage request = new RequestMessage(command); request.setParameterValues(parameters); request.setStatementType(StatementType.PREPARED); ResultsFuture<ResultsMessage> result; try { result = executeRequest(0, request); } catch (TeiidProcessingException e) { throw new TeiidRuntimeException(e); } result.addCompletionListener(new ResultsFuture.CompletionListener<ResultsMessage>() { @Override public void onCompletion( ResultsFuture<ResultsMessage> future) { terminateSession(sessionId); } }); }
@Override public void execute(String command, List<?> parameters) { final String sessionId = DQPWorkContext.getWorkContext().getSessionId(); RequestMessage request = new RequestMessage(command); request.setParameterValues(parameters); request.setStatementType(StatementType.PREPARED); ResultsFuture<ResultsMessage> result; try { result = executeRequest(0, request); } catch (TeiidProcessingException e) { throw new TeiidRuntimeException(e); } result.addCompletionListener(new ResultsFuture.CompletionListener<ResultsMessage>() { @Override public void onCompletion( ResultsFuture<ResultsMessage> future) { terminateSession(sessionId); } }); }
private ResultsMessage execute(String userName, int sessionid, RequestMessage reqMsg) throws InterruptedException, ExecutionException, TimeoutException, TeiidProcessingException { DQPWorkContext.getWorkContext().getSession().setSessionId(String.valueOf(sessionid)); DQPWorkContext.getWorkContext().getSession().setUserName(userName); Future<ResultsMessage> message = core.executeRequest(reqMsg.getExecutionId(), reqMsg); assertNotNull(core.getClientState(String.valueOf(sessionid), false)); ResultsMessage results = message.get(500000, TimeUnit.MILLISECONDS); return results; } }
public void helpTestVisibilityFails(String sql) throws Exception { RequestMessage reqMsg = exampleRequestMessage(sql); reqMsg.setTxnAutoWrapMode(RequestMessage.TXN_WRAP_OFF); Future<ResultsMessage> message = core.executeRequest(reqMsg.getExecutionId(), reqMsg); ResultsMessage results = message.get(5000, TimeUnit.MILLISECONDS); assertEquals("[QueryValidatorException]Group does not exist: BQT3.SmallA", results.getException().toString()); //$NON-NLS-1$ }
@Override public Void call() throws Exception { DQPWorkContext.setWorkContext(context); RequestMessage reqMsg = exampleRequestMessage("select * FROM BQT1.SmallA"); DQPWorkContext.getWorkContext().getSession().setSessionId("1"); DQPWorkContext.getWorkContext().getSession().setUserName("a"); Future<ResultsMessage> message = null; try { message = core.executeRequest(counter.getAndIncrement(), reqMsg); } finally { submitted.countDown(); } assertNotNull(core.getClientState("1", false)); submitted.await(); //after this, both will be submitted agds.latch.countDown(); //allow the execution to proceed message.get(500000, TimeUnit.MILLISECONDS); return null; } }));
@Test public void testUsingFinalBuffer() throws Exception { String sql = "select intkey from bqt1.smalla order by intkey"; ((BufferManagerImpl)core.getBufferManager()).setProcessorBatchSize(2); agds.sleep = 50; RequestMessage reqMsg = exampleRequestMessage(sql); Future<ResultsMessage> message = core.executeRequest(reqMsg.getExecutionId(), reqMsg); ResultsMessage rm = message.get(500000, TimeUnit.MILLISECONDS); assertNull(rm.getException()); assertEquals(10, rm.getResultsList().size()); message = core.processCursorRequest(reqMsg.getExecutionId(), 3, 2); rm = message.get(500000, TimeUnit.MILLISECONDS); assertNull(rm.getException()); assertEquals(2, rm.getResultsList().size()); }
@Test public void testBufferReuse() throws Exception { //the sql should return 100 rows 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"; //$NON-NLS-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()); }
@Test public void testFinalRow() throws Exception { String sql = "SELECT A.IntKey FROM BQT1.SmallA as A"; //$NON-NLS-1$ String userName = "1"; //$NON-NLS-1$ String sessionid = "1"; //$NON-NLS-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()); }
BufferManagerImpl bufferManager = (BufferManagerImpl)core.getBufferManager(); bufferManager.setProcessorBatchSize(20); Future<ResultsMessage> message = core.executeRequest(reqMsg.getExecutionId(), reqMsg); ResultsMessage rm = message.get(500000, TimeUnit.MILLISECONDS); assertNull(rm.getException());
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()); reqMsg.setExecutionId(id++); message = core.executeRequest(reqMsg.getExecutionId(), reqMsg); rm = message.get(500000, TimeUnit.MILLISECONDS); assertNull(rm.getException()); reqMsg.setSync(true); message = core.executeRequest(reqMsg.getExecutionId(), reqMsg); rm = message.get(0, TimeUnit.MILLISECONDS); assertNull(rm.getException());
@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(); } Thread.sleep(100); //give the Thread a chance to run } catch (Exception e) { t.interrupt(); throw new RuntimeException(e); } } }); message.get(); t.join(); assertNotNull(t.chunkFuture.get().getBytes()); }