I updated our XTest method to account for nested exceptions. The new test results show 1400 more EXPECTED_ERROR_GOT_SAME_ERROR results.
Side Node: - HyracksDataException extends HyracksException which extends IOException - AlgebricksException extends Exception It may not be possible without changes to Hyracks to remove the nested exceptions. On Thu, Feb 19, 2015 at 6:15 AM, Till Westmann <[email protected]> wrote: > I think that throwing them is fine. > The problem might be that they are too deeply nested into other exceptions > that we need to wrap around them in order to work well with the > Hyracks/Algebricks interfaces. > If that's the problem we could either unwrap them or derive our exceptions > from the Hyracks/Algebricks exceptions. > However, we probably need more investigation to find out if deriving the > exceptions would solve the problem. > > Cheers, > Till > > > On 18 Feb 2015, at 21:49, Eldon Carman wrote: > > I am looking at the testing framework for VXQuery that we use to run XQTS. >> I have a question about how to throw SystemExceptions. >> >> Consider the following query that should return XPTY0004 error. >> >> (:*******************************************************:) >> (: Test: K-NumericAdd-38 :) >> (: Written by: Frans Englich :) >> (: Date: 2007-11-22T11:31:20+01:00 :) >> (: Purpose: Arithmethics involving operands of integer type but with wrong >> cardinality. :) >> (:*******************************************************:) >> empty((1, 2) + ()) >> >> The actual exception thrown is the following: >> >> Exception in thread "main" >> edu.uci.ics.hyracks.api.exceptions.HyracksDataException: >> edu.uci.ics.hyracks.api.exceptions.HyracksDataException: >> edu.uci.ics.hyracks.api.exceptions.HyracksDataException: >> edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException: >> org.apache.vxquery.exceptions.SystemException: XPTY0004: It is a type >> error >> if, during the static analysis phase, an expression is found to have a >> static type that is not appropriate for the context in which the >> expression >> occurs, or during the dynamic evaluation phase, the dynamic type of a >> value >> does not match a required type as specified by the matching rules in 2.5.4 >> SequenceType Matching. >> at >> edu.uci.ics.hyracks.client.dataset.HyracksDatasetReader.nextPartition( >> HyracksDatasetReader.java:117) >> at >> edu.uci.ics.hyracks.client.dataset.HyracksDatasetReader. >> read(HyracksDatasetReader.java:127) >> at org.apache.vxquery.cli.VXQuery.runJob(VXQuery.java:348) >> at org.apache.vxquery.cli.VXQuery.runQueries(VXQuery.java:288) >> at org.apache.vxquery.cli.VXQuery.execute(VXQuery.java:161) >> at org.apache.vxquery.cli.VXQuery.main(VXQuery.java:121) >> Caused by: edu.uci.ics.hyracks.api.exceptions.HyracksDataException: >> edu.uci.ics.hyracks.api.exceptions.HyracksDataException: >> edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException: >> org.apache.vxquery.exceptions.SystemException: XPTY0004: It is a type >> error >> if, during the static analysis phase, an expression is found to have a >> static type that is not appropriate for the context in which the >> expression >> occurs, or during the dynamic evaluation phase, the dynamic type of a >> value >> does not match a required type as specified by the matching rules in 2.5.4 >> SequenceType Matching. >> at >> edu.uci.ics.hyracks.control.common.utils.ExceptionUtils. >> setNodeIds(ExceptionUtils.java:41) >> at edu.uci.ics.hyracks.control.nc.Task.run(Task.java:296) >> at >> java.util.concurrent.ThreadPoolExecutor.runWorker( >> ThreadPoolExecutor.java:1145) >> at >> java.util.concurrent.ThreadPoolExecutor$Worker.run( >> ThreadPoolExecutor.java:615) >> at java.lang.Thread.run(Thread.java:745) >> Caused by: edu.uci.ics.hyracks.api.exceptions.HyracksDataException: >> edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException: >> org.apache.vxquery.exceptions.SystemException: XPTY0004: It is a type >> error >> if, during the static analysis phase, an expression is found to have a >> static type that is not appropriate for the context in which the >> expression >> occurs, or during the dynamic evaluation phase, the dynamic type of a >> value >> does not match a required type as specified by the matching rules in 2.5.4 >> SequenceType Matching. >> at >> edu.uci.ics.hyracks.algebricks.runtime.operators. >> std.AssignRuntimeFactory$1.produceTuple(AssignRuntimeFactory.java:146) >> at >> edu.uci.ics.hyracks.algebricks.runtime.operators. >> std.AssignRuntimeFactory$1.nextFrame(AssignRuntimeFactory.java:127) >> at >> edu.uci.ics.hyracks.dataflow.common.comm.util.FrameUtils. >> flushFrame(FrameUtils.java:38) >> at >> edu.uci.ics.hyracks.algebricks.runtime.operators.std. >> EmptyTupleSourceRuntimeFactory$1.open(EmptyTupleSourceRuntimeFactory >> .java:55) >> at >> edu.uci.ics.hyracks.algebricks.runtime.operators.meta. >> AlgebricksMetaOperatorDescriptor$1.initialize( >> AlgebricksMetaOperatorDescriptor.java:104) >> at >> edu.uci.ics.hyracks.api.rewriter.runtime.SuperActivityOperatorNodePusha >> ble.initialize(SuperActivityOperatorNodePushable.java:81) >> at edu.uci.ics.hyracks.control.nc.Task.run(Task.java:239) >> ... 3 more >> Caused by: >> edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException: >> org.apache.vxquery.exceptions.SystemException: XPTY0004: It is a type >> error >> if, during the static analysis phase, an expression is found to have a >> static type that is not appropriate for the context in which the >> expression >> occurs, or during the dynamic evaluation phase, the dynamic type of a >> value >> does not match a required type as specified by the matching rules in 2.5.4 >> SequenceType Matching. >> at >> org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentSca >> larEvaluator.evaluate(AbstractTaggedValueArgumentScalarEvaluator.java:52) >> at >> org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentSca >> larEvaluator.evaluate(AbstractTaggedValueArgumentScalarEvaluator.java:47) >> at >> edu.uci.ics.hyracks.algebricks.runtime.operators. >> std.AssignRuntimeFactory$1.produceTuple(AssignRuntimeFactory.java:144) >> ... 9 more >> Caused by: org.apache.vxquery.exceptions.SystemException: XPTY0004: It >> is a >> type error if, during the static analysis phase, an expression is found to >> have a static type that is not appropriate for the context in which the >> expression occurs, or during the dynamic evaluation phase, the dynamic >> type >> of a value does not match a required type as specified by the matching >> rules in 2.5.4 SequenceType Matching. >> at >> org.apache.vxquery.runtime.functions.arithmetic. >> AbstractArithmeticScalarEvaluatorFactory$1.evaluate( >> AbstractArithmeticScalarEvaluatorFactory.java:61) >> at >> org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentSca >> larEvaluator.evaluate(AbstractTaggedValueArgumentScalarEvaluator.java:50) >> ... 11 more >> >> Is this an issue with our testing software identifying the correct >> exception or with VXQuery's method of throwing the SystemException? >> >
