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?