According to your project site, you appear to finish your gsoc project one
week ago. Could you let me know a brief status of the project?

- hyunsik

2013년 9월 15일 일요일에 camelia c님이 작성:

> Hello,
>
> 1)
> I'm still waiting for Your answer on this question please.
> I re-tell You the problem.
>
> I have a table A with a column fkA of type INT4 which is a foreign key
> referencing table B's primary key pkB.
> The data in column fkA contains both numbers and null values (NullDatum).
>
>
> In table B, column pkB is of type INT4 and it is the primary key => all
> its values are non-null. So in pkB we have only numbers.
>
> When faced with testing the join condition
>
>
> if (joinQual != null) {
>         joinQual.eval(qualCtx, inSchema, frameTuple);
>         if (joinQual.terminate(qualCtx).asBool()) {
>
> there is a problem:
>
> ERROR worker.Task:
> org.apache.tajo.datum.exception.InvalidOperationException
>     at org.apache.tajo.datum.Int4Datum.equalsTo(Int4Datum.java:122)
>     at
> org.apache.tajo.engine.eval.BinaryEval.terminate(BinaryEval.java:158)
>     at
> org.apache.tajo.engine.planner.physical.LeftOuter_NLJoinExec.next(LeftOuter_NLJoinExec.java:157)
>     at
>
>  
> org.apache.tajo.engine.planner.physical.StoreTableExec.next(StoreTableExec.java:85)
>     at org.apache.tajo.worker.Task.run(Task.java:378)
>     at org.apache.tajo.worker.TaskRunner$2.run(TaskRunner.java:359)
>     at java.lang.Thread.run(Thread.java:662)
>
>
> So, once again my question is: what should be modified in order to allow
> the comparison of null values residents in an INT4 column to numbers in a
> different table's INT4 column.
>
> 2) How can I perform a specific unit test without having to perform all
> tests. I tried different choices suggested at
> http://tajo.incubator.apache.org/build.html,  but no success.
> For example, say You want to perform only test   TestNLJoinExec.java
> What is the complete command that You type in the terminal?
>
>
>
> Please answer me this message as soon as possible, please.
>
>
> Yours sincerely,
>
> Camelia
>
>
>
>
>
>
>
>
>
>
>
>
>
> ________________________________
>  From: camelia c <[email protected] <javascript:;>>
> To: "[email protected] <javascript:;>" <
> [email protected] <javascript:;>>
> Sent: Wednesday, September 11, 2013 11:06 PM
> Subject: Re: [GSoc2013] - Outer Join -Possible issue about BinaryEvalCtx
> (PS)
>
>
> PS:
>
> The problem is either there in BinaryEvalCtx, or in class
>
> public class Int4Datum extends NumericDatum.
>
>
> in the method
> public int compareTo(Datum datum) {
>
> ...
>
>
> @Override
>  127   public int compareTo(Datum datum) {
>  128     switch (datum.type()) {
>  129       case INT2:
>  130         if (val <
>  datum.asInt2()) {
>  131           return -1;
>  132         } else if (datum.asInt2() < val) {
>  133           return 1;
>  134         } else {
>  135           return 0;
>  136         }
>  137       case INT4:
>  138         if (val < datum.asInt4()) {
>  139           return -1;
>  140         } else if (datum.asInt4() < val) {
>  141           return
>  1;
>  142         } else {
>  143           return 0;
>  144         }
>  145       case INT8:
>  146         if (val < datum.asInt8()) {
>  147           return -1;
>  148         } else if (datum.asInt8() < val) {
>  149           return 1;
>  150         } else {
>  151           return 0;
>  152         }
>  153       case
>  FLOAT4:
>  154         if (val < datum.asFloat4()) {
>  155           return -1;
>  156         } else if (datum.asFloat4() < val) {
>  157           return 1;
>  158         } else {
>  159           return 0;
>  160         }
>  161       case FLOAT8:
>  162         if (val < datum.asFloat8()) {
>  163           return -1;
>  164         } else if (datum.asFloat8() < val)
>  {
>  165           return 1;
>  166         } else {
>  167           return 0;
>  168         }
>  169       default:
>  170         throw new InvalidOperationException(datum.type());
>  171     }
>  172   }
>  173
>
>
>
> Just a hint, maybe it helps You find and solve the issue more quickly.
>
> Camelia
>
>
>
>
> ________________________________
> From: camelia c <[email protected] <javascript:;>>
> To: "[email protected] <javascript:;>" <
> [email protected] <javascript:;>>
> Sent: Wednesday, September 11, 2013 10:18 PM
> Subject: Re: [GSoc2013] - Outer Join -Possible issue about BinaryEvalCtx
>
>
> Hello,
>
> I would like to kindly ask You to take a moment and explain to me how does
> this BinaryEvalCtx handle NULL values in fields. From an error I got
> recently it seems that when it reads NULL values and it has to compare them
> to non-NULL values, it breaks.
>
>
> The portion of code leading to error in  is the same as in the original
> NLJoinExec and other join algorithms, where TAJO needs to verify the join
> condition and then project according to the output schema:
>
> if (joinQual != null) {
>         joinQual.eval(qualCtx, inSchema,
>  frameTuple);
>         if (joinQual.terminate(qualCtx).asBool()) {
>
> Here the verification of the join condition fails if one operand is a NULL
> value and the other is a number, in this case number 10.
>
>
>
> 13/09/11 21:37:01 INFO physical.LeftOuter_NLJoinExec:
> ********leftChild.next() =(0=>10)
>
> 13/09/11 21:37:01 INFO physical.LeftOuter_NLJoinExec:
> ********rightChild.next() =(0=>333.0, 1=>10)
>
> 13/09/11 21:37:01 INFO physical.LeftOuter_NLJoinExec: ******** a result
> matched padded tuple =(0=>10, 1=>333.0)
>
> 13/09/11 21:37:01 INFO physical.LeftOuter_NLJoinExec:
> ********rightChild.next() =(0=>555.0, 1=>10)
>
> 13/09/11 21:37:01 INFO physical.LeftOuter_NLJoinExec: ******** a result
> matched padded tuple =(0=>10, 1=>555.0)
>
> 13/09/11 21:37:01 INFO physical.LeftOuter_NLJoinExec:
>  ********rightChild.next() =(0=>777.0, 1=>NULL)
>
> 13/09/11 21:37:01 ERROR worker.Task:
> org.apache.tajo.datum.exception.InvalidOperationException
>     at org.apache.tajo.datum.Int4Datum.equalsTo(Int4Datum.java:122)
>     at
> org.apache.tajo.engine.eval.BinaryEval.terminate(BinaryEval.java:158)
>     at
> org.apache.tajo.engine.planner.physical.LeftOuter_NLJoinExec.next(LeftOuter_NLJoinExec.java:157)
>     at
> org.apache.tajo.engine.planner.physical.StoreTableExec.next(StoreTableExec.java:85)
>     at org.apache.tajo.worker.Task.run(Task.java:378)
>     at org.apache.tajo.worker.TaskRunner$2.run(TaskRunner.java:359)
>     at java.lang.Thread.run(Thread.java:662)
>
>
> It seems that at this moment, it takes the NULL as being Int4Datum,
> instead of NullDatum.
>
> These classes exist beyond outer join nodes' scope but maybe they
>  weren't tested for NULL values before. Now, some of the outer join's
> processing relies on these classes' correct behavior, that is why I'm
> trying to signal when I find errors.
>
>
>
> Thank You in advance for Your answer and for the understanding!
>
> Yours sincerely,
> Camelia

Reply via email to