zorba-coders team mailing list archive
-
zorba-coders team
-
Mailing list archive
-
Message #09994
[Merge] lp:~zorba-coders/zorba/bug-1001463 into lp:zorba
Matthias Brantner has proposed merging lp:~zorba-coders/zorba/bug-1001463 into lp:zorba.
Requested reviews:
Matthias Brantner (matthias-brantner)
Markos Zaharioudakis (markos-za)
Related bugs:
Bug #1001463 in Zorba: "type not available during computation of function caching"
https://bugs.launchpad.net/zorba/+bug/1001463
For more details, see:
https://code.launchpad.net/~zorba-coders/zorba/bug-1001463/+merge/106475
fix for bug #1001463 (type not available during computation of function caching).
The problem is that the wrong TypeManager is used for checking the subtype-relationship during the computation of the function-caching property.
I'm not 100% sure whether the suggested fix is the right one. Essentially, the problem is that the udf doesn't have a static_context at the time computeResultCaching is called (I'm not even sure if it will ever have it set).
--
https://code.launchpad.net/~zorba-coders/zorba/bug-1001463/+merge/106475
Your team Zorba Coders is subscribed to branch lp:zorba.
=== modified file 'ChangeLog'
--- ChangeLog 2012-05-16 06:45:13 +0000
+++ ChangeLog 2012-05-18 21:59:20 +0000
@@ -4,6 +4,7 @@
version 2.x
* Fixed bug #867170 (Variables declared in Prolog are Overwritten inside the query)
+ * Fixed bug #1001463 (type not available during computation of function caching)
version 2.5
=== modified file 'src/compiler/codegen/plan_visitor.cpp'
--- src/compiler/codegen/plan_visitor.cpp 2012-05-03 12:31:51 +0000
+++ src/compiler/codegen/plan_visitor.cpp 2012-05-18 21:59:20 +0000
@@ -2335,6 +2335,7 @@
{
// need to computeResultCaching here for iterprint to work
user_function* udf = static_cast<user_function*>(func);
+ udf->setStaticContext(v.get_sctx());
udf->computeResultCaching(theCCB->theXQueryDiagnostics);
}
}
=== modified file 'src/functions/udf.cpp'
--- src/functions/udf.cpp 2012-05-03 12:31:51 +0000
+++ src/functions/udf.cpp 2012-05-18 21:59:20 +0000
@@ -492,7 +492,7 @@
// parameter and return types are subtype of xs:anyAtomicType?
const xqtref_t& lRes = theSignature.returnType();
- TypeManager* tm = lRes->get_manager();
+ TypeManager* tm = getStaticContext()->get_typemanager();
if (!TypeOps::is_subtype(tm,
*lRes,
Follow ups