You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@drill.apache.org by pa...@apache.org on 2015/01/09 23:29:18 UTC
drill git commit: DRILL-1955: C++ client should provide a clean
method for detecting query completion in the async API.
Repository: drill
Updated Branches:
refs/heads/master 7638dbb82 -> f82064973
DRILL-1955: C++ client should provide a clean method for detecting query completion in the async API.
Project: http://git-wip-us.apache.org/repos/asf/drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/drill/commit/f8206497
Tree: http://git-wip-us.apache.org/repos/asf/drill/tree/f8206497
Diff: http://git-wip-us.apache.org/repos/asf/drill/diff/f8206497
Branch: refs/heads/master
Commit: f8206497331e66902fc8779b3e431472a36a2e8b
Parents: 7638dbb
Author: Parth Chandra <pc...@maprtech.com>
Authored: Thu Jan 8 09:52:30 2015 -0800
Committer: Parth Chandra <pc...@maprtech.com>
Committed: Fri Jan 9 14:28:15 2015 -0800
----------------------------------------------------------------------
contrib/native/client/src/clientlib/drillClient.cpp | 5 +++++
.../native/client/src/clientlib/drillClientImpl.cpp | 14 +++++++-------
.../native/client/src/include/drill/drillClient.hpp | 15 +++++++++++----
3 files changed, 23 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/drill/blob/f8206497/contrib/native/client/src/clientlib/drillClient.cpp
----------------------------------------------------------------------
diff --git a/contrib/native/client/src/clientlib/drillClient.cpp b/contrib/native/client/src/clientlib/drillClient.cpp
index a8cfe8c..02bc1a4 100644
--- a/contrib/native/client/src/clientlib/drillClient.cpp
+++ b/contrib/native/client/src/clientlib/drillClient.cpp
@@ -297,6 +297,11 @@ RecordIterator* DrillClient::submitQuery(Drill::QueryType t, const std::string&
void* DrillClient::getApplicationContext(QueryHandle_t handle){
return ((DrillClientQueryResult*)handle)->getListenerContext();
}
+
+status_t DrillClient::getQueryStatus(QueryHandle_t handle){
+ return ((DrillClientQueryResult*)handle)->getQueryStatus();
+}
+
std::string& DrillClient::getError(){
return m_pImpl->getError()->msg;
}
http://git-wip-us.apache.org/repos/asf/drill/blob/f8206497/contrib/native/client/src/clientlib/drillClientImpl.cpp
----------------------------------------------------------------------
diff --git a/contrib/native/client/src/clientlib/drillClientImpl.cpp b/contrib/native/client/src/clientlib/drillClientImpl.cpp
index 84aa6cd..c832a79 100644
--- a/contrib/native/client/src/clientlib/drillClientImpl.cpp
+++ b/contrib/native/client/src/clientlib/drillClientImpl.cpp
@@ -664,7 +664,6 @@ status_t DrillClientImpl::processQueryStatusResult(exec::shared::QueryResult* qr
ret=handleQryError(ret, qr->error(0), pDrillClientQueryResult);
}
break;
-
// m_pendingRequests should be decremented when the query is
// completed
case exec::shared::QueryResult_QueryState_CANCELED:
@@ -677,15 +676,16 @@ status_t DrillClientImpl::processQueryStatusResult(exec::shared::QueryResult* qr
break;
case exec::shared::QueryResult_QueryState_COMPLETED:
{
- // DO NOT call handleTerminateQryState because that
- // signals an error condition and the synchronous API
- // will then free the query result object without it
- // being processed by the application.
- ret=QRY_COMPLETED;
+ //Not clean to call the handleTerminatedQryState method
+ //because it signals an error to the listener.
+ //The ODBC driver expects this though and the sync API
+ //handles this (luckily).
+ ret=handleTerminatedQryState(ret,
+ getMessage(ERR_QRY_COMPLETED),
+ pDrillClientQueryResult);
m_pendingRequests--;
}
break;
-
default:
{
DRILL_LOG(LOG_TRACE) << "DrillClientImpl::processQueryResult: Unknown Query State.\n";
http://git-wip-us.apache.org/repos/asf/drill/blob/f8206497/contrib/native/client/src/include/drill/drillClient.hpp
----------------------------------------------------------------------
diff --git a/contrib/native/client/src/include/drill/drillClient.hpp b/contrib/native/client/src/include/drill/drillClient.hpp
index 490c823..0204855 100644
--- a/contrib/native/client/src/include/drill/drillClient.hpp
+++ b/contrib/native/client/src/include/drill/drillClient.hpp
@@ -191,6 +191,17 @@ class DECLSPEC_DRILL_CLIENT RecordIterator{
class DECLSPEC_DRILL_CLIENT DrillClient{
public:
+ /*
+ * Get the application context from query handle
+ */
+ static void* getApplicationContext(QueryHandle_t handle);
+
+ /*
+ * Get the query status from query handle
+ */
+ static status_t getQueryStatus(QueryHandle_t handle);
+
+
DrillClient();
~DrillClient();
@@ -238,10 +249,6 @@ class DECLSPEC_DRILL_CLIENT DrillClient{
* back. The listener callback will return the handle in the ctx parameter.
*/
status_t submitQuery(Drill::QueryType t, const std::string& plan, pfnQueryResultsListener listener, void* listenerCtx, QueryHandle_t* qHandle);
- /*
- * Get the application context from query handle
- */
- static void* getApplicationContext(QueryHandle_t handle);
/*
* Submit a query asynchronously and wait for results to be returned through an iterator that returns