zorba-coders team mailing list archive
-
zorba-coders team
-
Mailing list archive
-
Message #06791
[Merge] lp:~zorba-coders/zorba/bug-955135 into lp:zorba
Matthias Brantner has proposed merging lp:~zorba-coders/zorba/bug-955135 into lp:zorba.
Requested reviews:
Matthias Brantner (matthias-brantner)
Ghislain Fourny (gislenius)
Related bugs:
Bug #955135 in Zorba: "err:XQDY0044 not caught by try-catch expressions."
https://bugs.launchpad.net/zorba/+bug/955135
Bug #955170 in Zorba: "Catch clause with URILiteral-based wilcard NameTest"
https://bugs.launchpad.net/zorba/+bug/955170
For more details, see:
https://code.launchpad.net/~zorba-coders/zorba/bug-955135/+merge/99354
fixed bug 955135 (err:XQDY0044 not caught by try-catch expressions)
fixed bug 955170 (Catch clause with URILiteral-based wilcard NameTest)
--
https://code.launchpad.net/~zorba-coders/zorba/bug-955135/+merge/99354
Your team Zorba Coders is subscribed to branch lp:zorba.
=== modified file 'ChangeLog'
--- ChangeLog 2012-03-26 02:37:23 +0000
+++ ChangeLog 2012-03-26 15:35:22 +0000
@@ -1,8 +1,19 @@
Zorba - The XQuery Processor
version 2.5
+
+New Features:
+
+Optimization:
+
+Bug Fixes/Other Changes
* Fixed bug in window iterator
+<<<<<<< TREE
* Fixed bug #872234 (prevent a rewritting to take place in case of sequential expr)
+=======
+ * Fixed bug 955170 (Catch clause with URILiteral-based wilcard NameTest)
+ * Fixed bug 955135 (err:XQDY0044 not caught by try-catch expressions)
+>>>>>>> MERGE-SOURCE
version 2.2
@@ -46,11 +57,11 @@
of the annotations map in expressions.
Bug Fixes/Other Changes:
- * Fixed bug #923015 (clone() not implemented for full-text expressions)
- * Fixed bug #917923 (bug in copying outer var values into the eval dynamic context)
- * Fixed bug #867509 (Can not handle largest xs:unsignedLong values)
- * Fixed bug #924063 (sentence is incorrectly incremented when token characters end without sentence terminator)
- * Fixed bug #909126 (bug in cloning of var_expr)
+ * Fixed bug 923015 (clone() not implemented for full-text expressions)
+ * Fixed bug 917923 (bug in copying outer var values into the eval dynamic context)
+ * Fixed bug 867509 (Can not handle largest xs:unsignedLong values)
+ * Fixed bug 924063 (sentence is incorrectly incremented when token characters end without sentence terminator)
+ * Fixed bug 909126 (bug in cloning of var_expr)
* Fixed bug in destruction of exit_catcher_expr
* Fixed bug #867024 (error messages)
* Fixed bug #957580 (stream read failure in StringToCodepointsIteartor)
=== modified file 'bin/debugger/main.cpp'
--- bin/debugger/main.cpp 2012-03-23 17:32:07 +0000
+++ bin/debugger/main.cpp 2012-03-26 15:35:22 +0000
@@ -18,6 +18,8 @@
# include <windows.h>
# include <string.h>
# include <strsafe.h>
+#else
+#include <unistd.h>
#endif
#include <vector>
=== modified file 'bin/debugger/process_listener.cpp'
--- bin/debugger/process_listener.cpp 2012-03-23 17:32:07 +0000
+++ bin/debugger/process_listener.cpp 2012-03-26 15:35:22 +0000
@@ -18,6 +18,10 @@
#include <iostream>
+#ifndef WIN32
+#include <unistd.h>
+#endif
+
#ifdef ZORBA_HAVE_PTHREAD_H
# include <cassert>
#endif
=== modified file 'src/compiler/translator/translator.cpp'
--- src/compiler/translator/translator.cpp 2012-03-23 17:32:07 +0000
+++ src/compiler/translator/translator.cpp 2012-03-26 15:35:22 +0000
@@ -9044,16 +9044,25 @@
case ParseConstants::wild_all:
cc->add_nametest_h(new NodeNameTest(zstring(), zstring()));
break;
- case ParseConstants::wild_elem: {
+ case ParseConstants::wild_elem:
+ {
// bugfix #3138633; expand the qname and use the namespace instead of the prefix
zstring localname(":wildcard");
- store::Item_t qnItem;
- theSctx->expand_qname(qnItem,
- theSctx->default_elem_type_ns(),
- wildcard->getNsOrPrefix(),
- localname,
- wildcard->get_location());
- cc->add_nametest_h(new NodeNameTest(qnItem->getNamespace(), zstring()));
+
+ if (wildcard->isEQnameMatch())
+ {
+ cc->add_nametest_h(new NodeNameTest(wildcard->getNsOrPrefix(), zstring()));
+ }
+ else
+ {
+ store::Item_t qnItem;
+ theSctx->expand_qname(qnItem,
+ theSctx->default_elem_type_ns(),
+ wildcard->getNsOrPrefix(),
+ localname,
+ wildcard->get_location());
+ cc->add_nametest_h(new NodeNameTest(qnItem->getNamespace(), zstring()));
+ }
break;
}
case ParseConstants::wild_prefix:
=== modified file 'src/runtime/core/constructors.cpp'
--- src/runtime/core/constructors.cpp 2012-03-23 17:32:07 +0000
+++ src/runtime/core/constructors.cpp 2012-03-26 15:35:22 +0000
@@ -543,22 +543,22 @@
BinaryBaseIterator<AttributeIterator, PlanIteratorState>(sctx, loc, qnameIte, valueIte),
theQName(qname),
theIsId(false),
- theIsRoot(isRoot)
+ theIsRoot(isRoot),
+ theRaiseXQDY0074(false),
+ theRaiseXQDY0044(false)
{
- if (theQName != NULL)
+ if (theQName)
{
if (theQName->getLocalName().empty())
{
- RAISE_ERROR(err::XQDY0074, loc,
- ERROR_PARAMS("", ZED(NoEmptyLocalname)));
+ theRaiseXQDY0074 = true;
}
if (ZSTREQ(theQName->getNamespace(), "http://www.w3.org/2000/xmlns/") ||
(theQName->getNamespace().empty() &&
ZSTREQ(theQName->getLocalName(), "xmlns")))
{
- RAISE_ERROR(err::XQDY0044, loc,
- ERROR_PARAMS(theQName->getStringValue()));
+ theRaiseXQDY0044 = true;
}
if ((ZSTREQ(theQName->getNamespace(), "http://www.w3.org/XML/1998/namespace") &&
@@ -567,8 +567,7 @@
(ZSTREQ(theQName->getPrefix(), "xml") &&
!ZSTREQ(theQName->getNamespace(), "http://www.w3.org/XML/1998/namespace")))
{
- RAISE_ERROR(err::XQDY0044, loc,
- ERROR_PARAMS(theQName->getStringValue()));
+ theRaiseXQDY0044 = true;
}
if ((ZSTREQ(theQName->getNamespace(), "http://www.w3.org/2000/xmlns/") &&
@@ -577,11 +576,7 @@
(ZSTREQ(theQName->getPrefix(), "xmlns") &&
!ZSTREQ(theQName->getNamespace(), "http://www.w3.org/2000/xmlns/")))
{
- throw XQUERY_EXCEPTION(
- err::XQDY0044,
- ERROR_PARAMS( theQName->getStringValue() ),
- ERROR_LOC( loc )
- );
+ theRaiseXQDY0044 = true;
}
if (ZSTREQ(theQName->getPrefix(), "xml") &&
@@ -599,6 +594,8 @@
ar & theQName;
ar & theIsId;
ar & theIsRoot;
+ ar & theRaiseXQDY0074;
+ ar & theRaiseXQDY0044;
}
@@ -616,6 +613,24 @@
PlanIteratorState* state;
DEFAULT_STACK_INIT(PlanIteratorState, state, planState);
+ if (theQName != NULL)
+ {
+ // need to raise those errors here and not in the constructor
+ // because they are dynamic errors and might be caught by try-catch
+ // (bug 955135)
+ if (theRaiseXQDY0074)
+ {
+ RAISE_ERROR(err::XQDY0074, loc,
+ ERROR_PARAMS("", ZED(NoEmptyLocalname)));
+ }
+
+ if (theRaiseXQDY0044)
+ {
+ RAISE_ERROR(err::XQDY0044, loc,
+ ERROR_PARAMS(theQName->getStringValue()));
+ }
+ }
+
if (theChild0 != NULL)
{
// Compute the attribute name. Note: we don't have to check that itemQName
=== modified file 'src/runtime/core/constructors.h'
--- src/runtime/core/constructors.h 2012-03-23 17:32:07 +0000
+++ src/runtime/core/constructors.h 2012-03-26 15:35:22 +0000
@@ -170,6 +170,8 @@
store::Item_t theQName;
bool theIsId;
bool theIsRoot;
+ bool theRaiseXQDY0074;
+ bool theRaiseXQDY0044;
public:
SERIALIZABLE_CLASS(AttributeIterator);
=== added file 'test/rbkt/ExpQueryResults/zorba/trycatch/trycatch12.xml.res'
--- test/rbkt/ExpQueryResults/zorba/trycatch/trycatch12.xml.res 1970-01-01 00:00:00 +0000
+++ test/rbkt/ExpQueryResults/zorba/trycatch/trycatch12.xml.res 2012-03-26 15:35:22 +0000
@@ -0,0 +1,1 @@
+Invalid attribute.
=== added file 'test/rbkt/ExpQueryResults/zorba/trycatch/trycatch13.xml.res'
--- test/rbkt/ExpQueryResults/zorba/trycatch/trycatch13.xml.res 1970-01-01 00:00:00 +0000
+++ test/rbkt/ExpQueryResults/zorba/trycatch/trycatch13.xml.res 2012-03-26 15:35:22 +0000
@@ -0,0 +1,1 @@
+Message
=== added file 'test/rbkt/Queries/zorba/trycatch/trycatch12.xq'
--- test/rbkt/Queries/zorba/trycatch/trycatch12.xq 1970-01-01 00:00:00 +0000
+++ test/rbkt/Queries/zorba/trycatch/trycatch12.xq 2012-03-26 15:35:22 +0000
@@ -0,0 +1,1 @@
+try { attribute xmlns {} } catch *:XQDY0044 { "Invalid attribute." }
=== added file 'test/rbkt/Queries/zorba/trycatch/trycatch13.xq'
--- test/rbkt/Queries/zorba/trycatch/trycatch13.xq 1970-01-01 00:00:00 +0000
+++ test/rbkt/Queries/zorba/trycatch/trycatch13.xq 2012-03-26 15:35:22 +0000
@@ -0,0 +1,1 @@
+try { 1 div 0 } catch "http://www.w3.org/2005/xqt-errors":* { "Message"}
Follow ups
-
[Merge] lp:~zorba-coders/zorba/bug-955135 into lp:zorba
From: noreply, 2012-04-11
-
[Merge] lp:~zorba-coders/zorba/bug-955135 into lp:zorba
From: Zorba Build Bot, 2012-04-11
-
[Merge] lp:~zorba-coders/zorba/bug-955135 into lp:zorba
From: Zorba Build Bot, 2012-04-11
-
[Merge] lp:~zorba-coders/zorba/bug-955135 into lp:zorba
From: Matthias Brantner, 2012-04-11
-
Re: [Merge] lp:~zorba-coders/zorba/bug-955135 into lp:zorba
From: Till Westmann, 2012-04-11
-
[Merge] lp:~zorba-coders/zorba/bug-955135 into lp:zorba
From: Zorba Build Bot, 2012-04-10
-
Re: [Merge] lp:~zorba-coders/zorba/bug-955135 into lp:zorba
From: Zorba Build Bot, 2012-04-10
-
[Merge] lp:~zorba-coders/zorba/bug-955135 into lp:zorba
From: Zorba Build Bot, 2012-04-10
-
[Merge] lp:~zorba-coders/zorba/bug-955135 into lp:zorba
From: Zorba Build Bot, 2012-04-10
-
[Merge] lp:~zorba-coders/zorba/bug-955135 into lp:zorba
From: Ghislain Fourny, 2012-04-10
-
[Merge] lp:~zorba-coders/zorba/bug-955135 into lp:zorba
From: Ghislain Fourny, 2012-04-10
-
[Merge] lp:~zorba-coders/zorba/bug-955135 into lp:zorba
From: Ghislain Fourny, 2012-04-10
-
Re: [Merge] lp:~zorba-coders/zorba/bug-955135 into lp:zorba
From: Ghislain Fourny, 2012-04-10
-
Re: [Merge] lp:~zorba-coders/zorba/bug-955135 into lp:zorba
From: Matthias Brantner, 2012-03-26
-
[Merge] lp:~zorba-coders/zorba/bug-955135 into lp:zorba
From: Matthias Brantner, 2012-03-26