[
https://issues.apache.org/jira/browse/PIG-598?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12777317#action_12777317
]
Ashutosh Chauhan commented on PIG-598:
--------------------------------------
One issue I faced while working on PIG-928 was when trying to name variables in
ruby bound to java variables. Ruby variable names (in BSF) needs to be
prepended with $ as shown below.
{code}
define myudf org.apache.pig.scriptedUDFs.GenericEvalFunc('wordtokens','return
$input.split();');
{code}
Now this $ appearing in the script should not be substituted. But parser tries
to substitute it and fails (with error undefined parameter) since param is not
specified while invoking Pig. My hack was to 'escape' this $ and then provide
param-substiution while invoking the script as -p input=input
{code}
define myudf org.apache.pig.scriptedUDFs.GenericEvalFunc('wordtokens','return
$$input.split();');
{code}
Note extra $. Obviously, if we are thinking of adding pig-928 and accept udfs
written in ruby, this will come up as an issue. One possibility is Pig should
not try to do substitution if param is not specified on cmd line. I think way
it currently is parser scans the script for $ and then tries to do substiution.
If substitution was not defined it error outs. I think if it is not specified
on cmd line, then parser should ignore it and continue instead of failing.
> Parameter substitution ($PARAMETER) should not be performed in comments
> -----------------------------------------------------------------------
>
> Key: PIG-598
> URL: https://issues.apache.org/jira/browse/PIG-598
> Project: Pig
> Issue Type: Bug
> Components: impl
> Affects Versions: 0.2.0
> Reporter: David Ciemiewicz
> Assignee: Thejas M Nair
> Attachments: PIG-598.patch
>
>
> Compiling the following code example will generate an error that
> $NOT_A_PARAMETER is an Undefined Parameter.
> This is problematic as sometimes you want to comment out parts of your code,
> including parameters so that you don't have to define them.
> This I think it would be really good if parameter substitution was not
> performed in comments.
> {code}
> -- $NOT_A_PARAMETER
> {code}
> {code}
> -bash-3.00$ pig -exectype local -latest comment.pig
> USING: /grid/0/gs/pig/current
> java.lang.RuntimeException: Undefined parameter : NOT_A_PARAMETER
> at
> org.apache.pig.tools.parameters.PreprocessorContext.substitute(PreprocessorContext.java:221)
> at
> org.apache.pig.tools.parameters.ParameterSubstitutionPreprocessor.parsePigFile(ParameterSubstitutionPreprocessor.java:106)
> at
> org.apache.pig.tools.parameters.ParameterSubstitutionPreprocessor.genSubstitutedFile(ParameterSubstitutionPreprocessor.java:86)
> at org.apache.pig.Main.runParamPreprocessor(Main.java:394)
> at org.apache.pig.Main.main(Main.java:296)
> {code}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.