[ 
https://issues.apache.org/jira/browse/PIG-1303?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12860297#action_12860297
 ] 

hc busy commented on PIG-1303:
------------------------------

But the problem is that inside the EvalFunc constructor, in case of Algebraic 
classes, it constructs each of Initial, Intermediate and final which are 
EvalFunc's that, in my case, require a parameter to operate correctly.

If I declare the helper class that represent the initial/intermediate/final 


{code}
        public class HelperClass extends EvalFunc<Tuple> {
                public HelperClass() {
                        super();
                }

                public Tuple exec(Tuple input) throws IOException {
                        return extreme(fieldIndex, sign, input, reporter);
                }

        }
{code}

where the fieldIndex and sign come from the surrounding class (note the class 
is not static) then the code crashes. It's not able to construct the 
HelperClass with this error

{quote}
could not instantiate 
'org.apache.pig.piggybank.evaluation.ExtremalTupleByNthField$HelperClass' with 
arguments 'null'
java.lang.RuntimeException: could not instantiate 
'org.apache.pig.piggybank.evaluation.ExtremalTupleByNthField$HelperClass' with 
arguments 'null'
        at 
org.apache.pig.impl.PigContext.instantiateFuncFromSpec(PigContext.java:498)
        at org.apache.pig.EvalFunc.getReturnTypeFromSpec(EvalFunc.java:136)
        at org.apache.pig.EvalFunc.<init>(EvalFunc.java:123)
        at 
org.apache.pig.piggybank.evaluation.ExtremalTupleByNthField.<init>(ExtremalTupleByNthField.java:77)
        at 
org.apache.pig.piggybank.evaluation.TestExtremalTupleByNthField.testMin(Unknown 
Source)
Caused by: java.lang.InstantiationException: 
org.apache.pig.piggybank.evaluation.ExtremalTupleByNthField$HelperClass
        at java.lang.Class.newInstance0(Class.java:340)
        at java.lang.Class.newInstance(Class.java:308)
        at 
org.apache.pig.impl.PigContext.instantiateFuncFromSpec(PigContext.java:468)
{quote}

Basically, I think it's not able to construct because the class can only be 
constructed from an instance of ExtremalTupleByNthField.
{code}
        ExtremalTupleByNthField etbnf = new ExtremalTupleByNthField("1","max");
        etbnf.new ExtremalTupleByNthField.HelperClass();
{code}

So my solution to this problem was to make this class static. But make it so 
that EvalFunc can take a vararg that will eventually contain the actual 
parameters.

the handleChildConstructorParameters method in the EvalFunc will construct a 
string that represents the call into the initial/intermediate/final methods but 
it contains parameters that came from the ExtremalTupleByNthField.

> unable to set outgoing format for 
> org.apache.pig.piggybank.evaluation.util.apachelogparser.DateExtractor
> --------------------------------------------------------------------------------------------------------
>
>                 Key: PIG-1303
>                 URL: https://issues.apache.org/jira/browse/PIG-1303
>             Project: Pig
>          Issue Type: Bug
>    Affects Versions: 0.6.0
>         Environment: pig 0.6.0 on a fedora linux machine, jdk 1.6 u11
>            Reporter: Johannes Rußek
>            Assignee: Dmitriy V. Ryaboy
>         Attachments: TypeCheckingVisitor.java.diff
>
>
> I'm unable to set the format of the outgoing date string in the constructor 
> as it's supposed to work. 
> The only way i could change the format was to change the default in the java 
> class and rebuild piggybank.
> Apparently this has something to do with the way pig instantiates 
> DateExtractor, quoting a replier on the mailing list:
> David Vrensk said:
> I ran into the same problem a couple of weeks ago, and
> played around with the code inserting some print/log statements.  It turns
> out that the arguments are only used in the initial constructor calls, when
> the pig process is starting, but once pig reaches the point where it would
> use the udf, it creates new DateExtractors without passing the arguments.

-- 
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