[
https://issues.apache.org/jira/browse/PIG-4896?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Koji Noguchi updated PIG-4896:
------------------------------
Attachment: pig-4896-v01.patch
Original issue was from PIG-3359 where we added
{quote}
There's a slight complication with the handling of the warnings in that "val"
passed to those functions in PreprocessorContext is the raw string, which might
not be the same as the val put into param_val. I added a separate hashtable
"param_source" to keep track of this original argument, and if it's seen again
to skip it instead of logging the warning.
{quote}
For non-shell {{processOrdLine}}, I've simply took out this "param_source" and
compare the result from "param_value".
For shell {{processShellCmd}}, I've kept the "param_source' but using the value
after the param replacement so that we only use the cache result when
command-line matches,
Running test.
> Param substitution ignored when redefined
> ------------------------------------------
>
> Key: PIG-4896
> URL: https://issues.apache.org/jira/browse/PIG-4896
> Project: Pig
> Issue Type: Bug
> Components: parser
> Reporter: Koji Noguchi
> Priority: Minor
> Attachments: pig-4896-v01.patch
>
>
> After PIG-3359, the way we cache parameter substitution results changed a bit.
> {code:title=test.pig}
> A = load 'input.txt' ;
> %declare output '/tmp/abc';
> %declare actualoutput '$output.out';
> store A into '$actualoutput';
> %declare output '/tmp/def';
> %declare actualoutput '$output.out';
> store A into '$actualoutput';
> %declare number '1d';
> %declare shellout `bash -c "date -v-$number +'%Y%m%d_%H:%S_%s'; sleep 1" `
> store A into '$shellout';
> %declare shellout `bash -c "date -v-$number +'%Y%m%d_%H:%S_%s'; sleep 1" `
> store A into '$shellout';
> %declare number '2d';
> %declare shellout `bash -c "date -v-$number +'%Y%m%d_%H:%S_%s'; sleep 1" `
> store A into '$shellout';
> {code}
> Result from pig 0.11 (almost correct)
> {panel}
> A = load 'input.txt' ;
> store A into '/tmp/abc.out';
> store A into '/tmp/def.out';
> store A into '20160515_17:32_1463346752';
> store A into '20160515_17:33_1463346753'; {color:red}NO{color}
> store A into '20160514_17:34_1463260354';
> {panel}
> Result from trunk
> {panel}
> A = load 'input.txt' ;
> store A into '/tmp/abc.out';
> store A into '/tmp/abc.out'; {color:red} NO{color}
> store A into '20160515_15:10_1463338810';
> store A into '20160515_15:10_1463338810';
> store A into '20160515_15:10_1463338810'; {color:red}NO{color}
> {panel}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)