Markos Zaharioudakis has proposed merging lp:~zorba-coders/zorba/bug911585 into lp:zorba.
Requested reviews: Markos Zaharioudakis (markos-za) Related bugs: Bug #911585 in Zorba: "eval + staticcollectionmanager fails" https://bugs.launchpad.net/zorba/+bug/911585 For more details, see: https://code.launchpad.net/~zorba-coders/zorba/bug911585/+merge/87615 fixed bug #911585 (management of variables during eval) -- https://code.launchpad.net/~zorba-coders/zorba/bug911585/+merge/87615 Your team Zorba Coders is subscribed to branch lp:zorba.
=== modified file 'src/compiler/expression/script_exprs.cpp' --- src/compiler/expression/script_exprs.cpp 2012-01-05 12:49:30 +0000 +++ src/compiler/expression/script_exprs.cpp 2012-01-05 13:03:26 +0000 @@ -80,6 +80,11 @@ } +block_expr::~block_expr() +{ +} + + void block_expr::serialize(::zorba::serialization::Archiver& ar) { serialize_baseclass(ar, (expr*)this); === modified file 'src/compiler/expression/script_exprs.h' --- src/compiler/expression/script_exprs.h 2012-01-05 12:49:30 +0000 +++ src/compiler/expression/script_exprs.h 2012-01-05 13:03:26 +0000 @@ -136,6 +136,8 @@ std::vector<expr_t>& seq, std::vector<var_expr*>* assignedVars); + ~block_expr(); + void add_at(csize pos, const expr_t& arg); csize size() const { return theArgs.size(); } === modified file 'src/runtime/eval/eval.cpp' --- src/runtime/eval/eval.cpp 2012-01-03 12:10:06 +0000 +++ src/runtime/eval/eval.cpp 2012-01-05 13:03:26 +0000 @@ -237,7 +237,7 @@ store::Item_t itemValue; store::TempSeq_t seqValue; - if (!outerDctx->exists_variable(globalVarId)) + if (!outerDctx->is_set_variable(globalVarId)) continue; outerDctx->get_variable(globalVarId, @@ -296,7 +296,7 @@ for (; sctxIte != sctxEnd; ++sctxIte) { - sctxIte->second->getVariables(innerVars); + sctxIte->second->getVariables(innerVars, true, false, true); } FOR_EACH(std::vector<var_expr_t>, ite, innerVars) === added file 'test/rbkt/ExpQueryResults/zorba/eval/eval9.xml.res' --- test/rbkt/ExpQueryResults/zorba/eval/eval9.xml.res 1970-01-01 00:00:00 +0000 +++ test/rbkt/ExpQueryResults/zorba/eval/eval9.xml.res 2012-01-05 13:03:26 +0000 @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +2 === added file 'test/rbkt/Queries/zorba/eval/eval9.xq' --- test/rbkt/Queries/zorba/eval/eval9.xq 1970-01-01 00:00:00 +0000 +++ test/rbkt/Queries/zorba/eval/eval9.xq 2012-01-05 13:03:26 +0000 @@ -0,0 +1,6 @@ +import module namespace refl = "http://www.zorba-xquery.com/modules/reflection"; + +declare variable $x external; + + +refl:eval("1+1") === modified file 'test/unit/CMakeLists.txt' --- test/unit/CMakeLists.txt 2011-12-22 19:11:30 +0000 +++ test/unit/CMakeLists.txt 2012-01-05 13:03:26 +0000 @@ -53,6 +53,9 @@ CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/main_sequential.xq ${CMAKE_CURRENT_BINARY_DIR}/main_sequential.xq) CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/main_sequential.xqlib ${CMAKE_CURRENT_BINARY_DIR}/main_sequential.xqlib) +# belongs to the staticcollectionmanager test +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/main_invoke.xq ${CMAKE_CURRENT_BINARY_DIR}/main_invoke.xq) + #belongs to test context_item CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/context_item1.xq ${CMAKE_CURRENT_BINARY_DIR}/context_item1.xq) CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/context_item2.xq ${CMAKE_CURRENT_BINARY_DIR}/context_item2.xq) @@ -65,6 +68,7 @@ CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/module1.xq ${CMAKE_CURRENT_BINARY_DIR}/module1.xq) CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/module2.xq ${CMAKE_CURRENT_BINARY_DIR}/module2.xq) CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/module3.xq ${CMAKE_CURRENT_BINARY_DIR}/module3.xq) +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/module4.xq ${CMAKE_CURRENT_BINARY_DIR}/module4.xq) SET(UNIT_TESTS_SRCS path_resolver.cpp === added file 'test/unit/main_invoke.xq' --- test/unit/main_invoke.xq 1970-01-01 00:00:00 +0000 +++ test/unit/main_invoke.xq 2012-01-05 13:03:26 +0000 @@ -0,0 +1,9 @@ +xquery version '3.0'; + +import module namespace invoke = 'http://www.zorba-xquery.com/modules/reflection'; + +import module namespace foo = "http://foo.com/" at "${CMAKE_CURRENT_BINARY_DIR}/module4.xq"; + +declare variable $local:function as xs:string external := "foo"; + +1+1 === added file 'test/unit/module4.xq' --- test/unit/module4.xq 1970-01-01 00:00:00 +0000 +++ test/unit/module4.xq 2012-01-05 13:03:26 +0000 @@ -0,0 +1,6 @@ +module namespace foo = "http://foo.com/"; + +declare variable $foo:blub1 := 1; +declare variable $foo:blub2 := 1; + +declare collection foo:bar; === modified file 'test/unit/staticcollectionmanager.cpp' --- test/unit/staticcollectionmanager.cpp 2011-12-21 14:40:33 +0000 +++ test/unit/staticcollectionmanager.cpp 2012-01-05 13:03:26 +0000 @@ -25,6 +25,8 @@ #include <zorba/singleton_item_sequence.h> #include <zorba/static_collection_manager.h> +#include "system/properties.h" + using namespace zorba; bool @@ -225,12 +227,46 @@ return true; } + +bool +staticcollectionamanger4(zorba::Zorba* z) +{ + std::ifstream lIn("main_invoke.xq"); + assert(lIn.good()); + + zorba::XQuery_t lQuery = z->createQuery(); + Zorba_CompilerHints lHints; + lQuery->compile(lIn, lHints); + + size_t i = 0; + + StaticCollectionManager* lMgr = lQuery->getStaticCollectionManager(); + + zorba::ItemSequence_t lSeq = lMgr->declaredCollections(); + zorba::Iterator_t lIter = lSeq->getIterator(); + lIter->open(); + zorba::Item lName; + while (lIter->next(lName)) + { + if (!lMgr->isAvailableCollection(lName)) + { + lMgr->createCollection(lName); + std::cout << "created collection " << lName.getStringValue() << std::endl; + ++i; + } + } + + return i == 1; +} + int staticcollectionmanager(int argc, char* argv[]) { void* store = zorba::StoreManager::getStore(); zorba::Zorba* z = zorba::Zorba::getInstance(store); + zorba::Properties::load(0, NULL); + std::cout << "executing example 1" << std::endl; if (!staticcollectionamanger1(z)) return 1; @@ -246,6 +282,11 @@ return 3; std::cout << std::endl; + std::cout << "executing example 4" << std::endl; + if (!staticcollectionamanger4(z)) + return 4; + std::cout << std::endl; + return 0; }
-- Mailing list: https://launchpad.net/~zorba-coders Post to : zorba-coders@lists.launchpad.net Unsubscribe : https://launchpad.net/~zorba-coders More help : https://help.launchpad.net/ListHelp