[
https://issues.apache.org/jira/browse/HIVE-862?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12761415#action_12761415
]
Bill Graham commented on HIVE-862:
----------------------------------
I'll take this JIRA. To recap what was discussed on the list and what Edward
and I discussed off-line, here's the proposed approach. Please comment if you
think I should proceed differently:
1. We make a non-backward compatible change to the {{CommandProcessor}}
interface, changing it's sole method from this:
{noformat}
public int run(String command);
{noformat}
to this:
{noformat}
public CommandProcessorResponse run(String command);
{noformat}
2. We create a new {{CommandProcessorResponse}} class that looks like the
current {{Driver.DriverResponse}} class. It's a pojo with the following fields:
- int responseCode
- String errorMessage
- String SQLState
Note: my rational for removing {{DriverResponse}} in lieu of
{{CommandProcessorResponse}} is to bind the response class name more closely
with the common interface that uses it (i.e., {{CommandProcessor}}). If we
instead used {{DriverResponse}} that would make sense for the {{Driver}} class,
but not so much for the command processors.
3. {{Driver.DriverResponse}} will be removed, and {{Driver.run(command)}} will
return an instance of {{CommandProcessorResponse}} instead. The {{runCommand}}
method will be removed and {{HiveServer}} usage will be refactored to use
{{Driver.run}}.
4. The 5 {{CommandProcessors}} that implement the {{run}} method will change to
return a {{CommandProcessorResponse}} object. Callers of these classes will
change to get the response status from the the {{CommandProcessorResponse}}
object.
> CommandProcessor should return DriverResponse
> ---------------------------------------------
>
> Key: HIVE-862
> URL: https://issues.apache.org/jira/browse/HIVE-862
> Project: Hadoop Hive
> Issue Type: New Feature
> Components: Query Processor
> Reporter: Edward Capriolo
> Assignee: Bill Graham
>
> Since Driver now returns DriverResponse CommandProcessor should return a
> similar object.
> {noformat}
> For reference here is how i want to use this:
> Currently:
> HWISessionItem.java
> private List<Integer> queryRet;
> private List<String> queries;
> public void runQuery() {
> //for each query in queries
> if (instanceof driver) {
> //other stuff here
> queryRet.add( qp.run(cmd) );
> } else {
> queryRet.add(proc.run(cmd_1) );
> }
> }
> So I would like to refactor and use DriverResponse.
> private List<DriverResponse> queryRet;
> private List<String> queries;
> public void runQuery() {
> //for each query in queries
>
> if (instanceof driver) {
> //other stuff here
> queryRet.add( qp.run(cmd) ); //<--- this is fine
> } else {
> queryRet.add(proc.run(cmd_1) ); <--this returns an int.
> }
> }
> {noformat}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.