private synchronized LensQuery getQuery() { if (!isFullyInitialized) { this.actualLensQuery = statement.getQuery(queryHandle); this.isFullyInitialized = true; } return actualLensQuery; } }
/** * This method can be used for executing a query. If waitForQueryToComplete is false, the call to this method returns * immediately after submitting the query to the server without waiting for it to complete execution. * <p> * {@link #getStatus(QueryHandle)} can be used to track to track the query progress and * {@link #getQuery(QueryHandle)} can be used to get complete details (including status) about the query. * * @param sql the sql * @param waitForQueryToComplete the wait for query to complete * @param queryName the query name * @param conf config specific to this query * @return the query handle */ public QueryHandle executeQuery(String sql, boolean waitForQueryToComplete, String queryName, LensConf conf) throws LensAPIException { QueryHandle handle = submitQuery(sql, queryName, conf); if (waitForQueryToComplete) { waitForQueryToComplete(handle); } return handle; }
@Override public boolean execute(String s) throws SQLException { if (closed) { throw new SQLException("Cannot execute statemes on closed statements"); } try { statement.executeQuery(s, true, null, new LensConf()); } catch (Throwable t) { throw new SQLException(t); } return statement.wasQuerySuccessful(); }
/** * Gets the result set meta data for the most recently executed query. */ public QueryResultSetMetadata getResultSetMetaData() { return this.getResultSetMetaData(this.getQuery()); }
/** * Gets http result set for the most recently executed query. */ public Response getHttpResultSet() { return this.getHttpResultSet(this.getQuery()); }
private LensClientResultSetWithStats getResultsFromStatement(LensStatement statement) { QueryStatus.Status status = statement.getStatus().getStatus(); if (status != QueryStatus.Status.SUCCESSFUL) { IdBriefErrorTemplate errorResult = new IdBriefErrorTemplate(IdBriefErrorTemplateKey.QUERY_ID, statement.getQueryHandleString(), new BriefError(statement.getErrorCode(), statement.getErrorMessage())); throw new LensBriefErrorException(errorResult); } LensClientResultSet result = null; if (statement.getStatus().isResultSetAvailable()) { result = new LensClientResultSet(statement.getResultSetMetaData(), statement.getResultSet()); } return new LensClientResultSetWithStats(result, statement.getQuery()); }
System.out.println("Query:" + query); try { QueryHandle handle = queryClient.executeQuery(query, true, null, new LensConf()); System.out.println("Status:" + queryClient.getQuery().getStatus()); System.out.println("Total time in millis:" + (queryClient.getQuery().getFinishTime() - queryClient.getQuery().getSubmissionTime())); System.out.println("Driver run time in millis:" + (queryClient.getQuery().getDriverFinishTime() - queryClient.getQuery().getDriverStartTime())); if (queryClient.wasQuerySuccessful()) { success++; if (queryClient.getQuery().getStatus().isResultSetAvailable()) { System.out.println("Result:"); QueryResult queryResult = queryClient.getResultSet(); if (queryResult instanceof InMemoryQueryResult) { InMemoryQueryResult result = (InMemoryQueryResult) queryResult; System.out.println("Result stored at " + persistentQueryResult.getPersistedURI()); queryClient.closeResultSet();
private LensClientResultSetWithStats getResultsFromHandle(QueryHandle q, boolean async) { if (!async) { statement.waitForQueryToComplete(q); } LensQuery query = statement.getQuery(q); if (query.getStatus().getStatus() == QueryStatus.Status.FAILED) { throw new IllegalStateException(query.getStatus().getErrorMessage()); } LensClientResultSet result = null; if (query.getStatus().isResultSetAvailable()) { result = new LensClientResultSet(statement.getResultSetMetaData(query), statement.getResultSet(query)); } return new LensClientResultSetWithStats(result, query); }
public String getOrDefaultQueryHandleString(String queryHandleString) { if (queryHandleString != null) { return queryHandleString; } if (getClient().getStatement().getQuery() != null) { return getClient().getStatement().getQueryHandleString(); } throw new IllegalArgumentException("Query handle not provided and no queries interacted with in the session."); } }
/** * Gets result set for the most recently executed query. */ public QueryResult getResultSet() { return this.getResultSet(this.getQuery()); }
LensQuery getQueryWithRetryOnTimeout(QueryHandle handle) { while (true) { try { return getQuery(handle); } catch (Exception e) { if (isExceptionDueToSocketTimeout(e)) { log.warn("Could not get query status. Encountered socket timeout. Retrying..."); continue; } else { throw e; } } } }
public QueryHandle executePrepared(QueryPrepareHandle phandle, String queryName, LensConf conf) { return statement.executeQuery(phandle, false, queryName, conf); }
@Override public ResultSet executeQuery(String s) throws SQLException { try { statement.executeQuery(s, true, null, new LensConf()); } catch (LensAPIException e) { log.error("Execution Failed for Statement:{}", s, e); } return new LensJdbcResultSet(statement.getResultSet(), statement.getResultSetMetaData(), this); }
/** * Close result set. * * @return true, if successful */ public boolean closeResultSet() { if (!this.getQuery().getStatus().isResultSetAvailable()) { return false; } Client client = connection.buildClient(); WebTarget target = getQueryWebTarget(client); APIResult result = target.path(query.getQueryHandle().toString()).path("resultset") .queryParam("sessionid", connection.getSessionHandle()).request().delete(APIResult.class); return result.getStatus() == APIResult.Status.SUCCEEDED; }
LensQuery queryDetails = retryOnTimeout ? getQueryWithRetryOnTimeout(handle) : getQuery(handle); while (queryDetails.getStatus().queued()) { queryDetails = retryOnTimeout ? getQueryWithRetryOnTimeout(handle) : getQuery(handle); LensClient.getCliLogger().debug("Query {} status: {}", handle, queryDetails.getStatus()); try { queryDetails = retryOnTimeout ? getQueryWithRetryOnTimeout(handle) : getQuery(handle); LensClient.getCliLogger().info("Query Status:{} ", queryDetails.getStatus()); try {
@Test(dataProvider = "testIterableHttpResultSetDP") public void testHttpResultSet(String query, Map<String, String> queryConf, boolean isResultZipped, int columnNamesExpected, int rowsExpected) throws Exception { for (Map.Entry<String, String> e : queryConf.entrySet()) { client.setConnectionParam(e.getKey(), e.getValue()); } LensConf conf = new LensConf(); Map<String, String> confProps = new HashMap<>(); confProps.put("custom.property.for.validation", "present"); conf.addProperties(confProps); QueryHandle handle = client.executeQueryAsynch(query, "testQuery", conf); client.getStatement().waitForQueryToComplete(handle); assertTrue(client.getStatement().wasQuerySuccessful()); LensQuery persistedQuery = client.getQueryDetails(handle); Assert.assertNotNull(persistedQuery.getQueryConf()); Assert.assertEquals(persistedQuery.getQueryConf().getProperty("custom.property.for.validation"), "present"); ResultSet result = null; boolean isHeaderRowPresent = columnNamesExpected > 0 ? true : false; result = client.getHttpResultSet(handle); assertNotNull(result); validateResult(result, columnNamesExpected, rowsExpected); }
@Test public void testWaitForQueryToCompleteWithAndWithoutRetryOnTimeOut() throws LensAPIException { LensClientConfig config = createLensClientConfigWithServerUrl(); config.set(ENABLE_SLEEP_FOR_GET_QUERY_OP, "true"); config.setInt(LensClientConfig.READ_TIMEOUT_MILLIS, 3000); try (LensClient lensClient = new LensClient(config)) { assertTrue(lensClient.setDatabase(TEST_DB)); //Test waitForQueryToComplete without retry on timeout QueryHandle handle = lensClient.executeQueryAsynch("cube select id,name from test_dim", "test3", new LensConf()); try { lensClient.getStatement().waitForQueryToComplete(handle, false); fail("SocketTimeoutException was expected"); } catch (Exception e) { if (!isExceptionDueToSocketTimeout(e)) { fail("SocketTimeoutException was excepted as part of Read Timeout"); } } //Test waitForQueryToComplete with Retry on timeout handle = lensClient.executeQueryAsynch("cube select id,name from test_dim", "test3", new LensConf()); lensClient.getStatement().waitForQueryToComplete(handle); LensQuery query = lensClient.getQueryDetails(handle); assertTrue(query.getStatus().successful()); } }
public void waitForQueryToComplete(QueryHandle handle) { waitForQueryToComplete(handle, true); }
/** * Instantiates a new lens jdbc statement. * * @param connection the connection */ public LensJdbcStatement(LensJdbcConnection connection) { this.connection = connection; statement = new LensStatement(connection.getConnection()); }