[ 
https://issues.apache.org/jira/browse/HIVE-1096?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12893022#action_12893022
 ] 

Carl Steinbach commented on HIVE-1096:
--------------------------------------

The reviewboard jiraposter is temporarily down so I'm posting this by hand. The 
original comments and context are here: https://review.cloudera.org/r/229/


* trunk/conf/hive-default.xml:
Spelling: substituation

* trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/VariableSubstitution.java:
Make these variables private?

* trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/VariableSubstitution.java:
This should be static. No need to instantiate a VariableSubstitution object.

* 
trunk/ql/src/java/org/apache/hadoop/hive/ql/processors/AddResourceProcessor.java:
Since we want to do substitution for all commands it would probably make sense 
to do the substitution in CommandProcessorFactory.get() and make 
CommandProcessor an abstract class with the following implementation:

{code}
public abstract class {
  protected String command;

  CommandProcessor(String command) {
    this.command = command;
  }

  public abstract CommandProcessorResponse run();

  public String getCommand() {
    return command;
  }
}
{code}

In other words, CommandProcessorFactory would return a CommandProcessor object 
that has been initialized with a substituted copy of the command.

* trunk/ql/src/java/org/apache/hadoop/hive/ql/processors/SetProcessor.java:
Replace these string literals with constants, e.g:

{code}
public static final String ENV_PREFIX = "env:";
public static final String SYSTEM_PREFIX = "system:"
public static final String HIVECONF_PREFIX = "hiveconf:"
{code}


* trunk/ql/src/java/org/apache/hadoop/hive/ql/processors/SetProcessor.java:
String propName = varname.substring(SYSTEM_PREFIX.length());


* trunk/ql/src/java/org/apache/hadoop/hive/ql/processors/SetProcessor.java:
Can we remove this special case for "silent"? In SessionState this actually 
maps to "hive.session.silent" and I don't see any test cases that cover this 
case, i.e. that call "set silent" or "set silent=x". It also seems that this 
introduces in inconsistency since "set silent" will show the value of 
"hive.session.silent", but the output of "set" will not list a value for the 
property "silent".

Anyone know if there is any older code that depends on this behavior?


> Hive Variables
> --------------
>
>                 Key: HIVE-1096
>                 URL: https://issues.apache.org/jira/browse/HIVE-1096
>             Project: Hadoop Hive
>          Issue Type: New Feature
>          Components: Query Processor
>            Reporter: Edward Capriolo
>            Assignee: Edward Capriolo
>             Fix For: 0.6.0, 0.7.0
>
>         Attachments: 1096-9.diff, hive-1096-10-patch.txt, 
> hive-1096-11-patch.txt, hive-1096-12.patch.txt, hive-1096-2.diff, 
> hive-1096-7.diff, hive-1096-8.diff, hive-1096.diff
>
>
> From mailing list:
> --Amazon Elastic MapReduce version of Hive seems to have a nice feature 
> called "Variables." Basically you can define a variable via command-line 
> while invoking hive with -d DT=2009-12-09 and then refer to the variable via 
> ${DT} within the hive queries. This could be extremely useful. I can't seem 
> to find this feature even on trunk. Is this feature currently anywhere in the 
> roadmap?--
> This could be implemented in many places.
> A simple place to put this is 
> in Driver.compile or Driver.run we can do string substitutions at that level, 
> and further downstream need not be effected. 
> There could be some benefits to doing this further downstream, parser,plan. 
> but based on the simple needs we may not need to overthink this.
> I will get started on implementing in compile unless someone wants to discuss 
> this more.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to