[ https://issues.apache.org/jira/browse/DRILL-1537?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14179255#comment-14179255 ]
Xiao Meng commented on DRILL-1537: ---------------------------------- Hi Parth, I think that *application context* is a more appropriate name. Now if the query submitter want to handle multiple queries, it have to handle the map of query to some unique Identification number to manage the query. The driver have to do some thing like this, a wrapper on drillclient object is shared by multiple objects (say object S). The state of object S is set by this listener context. The wrapper of drillclient need to handle the map between queries and query results. > C++ Client: Passing the listener context to queryResultListener function > ------------------------------------------------------------------------ > > Key: DRILL-1537 > URL: https://issues.apache.org/jira/browse/DRILL-1537 > Project: Apache Drill > Issue Type: Bug > Components: Client - ODBC > Reporter: Alexander Zarei > Attachments: Drill-1537-patch-1.diff > > > When submitting queries by the function *SubmitQuery(QueryType t, string& > plan, pfnQueryResultsListener l, void\* lCtx)* of drillClientImp class, the > listenerContext parameter provides a convenient way of associating returned > results with submitted queries. > The way it works is that the calling application passes the context to > *SubmitQuery* and when returning results, *processQueryResult* passes the > context to the *queryResultListener* callback function. As such, the callback > function can associate the returned result with the context. > When we were updating QuerySubmitter example to showcase usage of > *SubmitQuery* with context, we noticed *processQueryResult* function does not > pass the context directly to the *queryResultListener* callback function; > Instead, an instance of DrillClientQueryResult which contains the context as > a data member is passed to the *queryResultListener*. This requires the > *queryResultListener* function, which is implemented in consumers of the C++ > Client, to know about the *DrillClientQueryResult*. > However, *DrillClientQueryResult* is not in the public API of the C++ Client. > Two solutions are imaginable at the first glance: First, passing the context > instead of a *DrillClientQueryResult*, which we implemented and tested it; > Second, moving *DrillClientQueryResult* to the public API; Moving > *DrillClientQueryResult* to the public API does not seem to be desirable as > it is internal detail for the C++ Client. > I was wondering what your thoughts are on this. > Thanks, > Alex -- This message was sent by Atlassian JIRA (v6.3.4#6332)