Zorba - The XQuery Processor version 2.2 New Features: * Add --compile-plan (-c) and --execute-plan (-e) options to zorba command line. * Add XQuery 3.0 concat operator (http://www.w3.org/TR/xquery-30/#id-string-concat-expr) * New URI module providing percent-decoding functions. * The core parse-xml module is now able to parse input files in a streaming mode. A number of new options have also been added. * LibXml2 version 2.7.0 or higher is now required in order to build Zorba. * Added index management function to the C++ api's StaticCollectionManager. * Added createDayTimeDuration, createYearMonthDuration, createDocumentNode, createCommentNode, createPiNode to api's ItemFactory. * Fixed bug #905050 (setting and getting the context item type via the c++ api). * Added split function to the string module that allows for streamable tokenization but doesn't have regular expression * Add new XQuery interface for the PHP bindings. * Added two API methods StaticContext::getFunctions to introspect the functions of a static context * Added API method Item::getNamespaceBindings(). * Added a transcoding streambuffer to the API which allows transcoding arbitrary encodings from and to UTF-8 * file:read-text is able to handle arbitrary encodings (fixes bug #867159) * http:send-request is able to handle arbitrary encodings * Added API method StaticContext::getNamespaceBindings() (see bug #905035) * New version of the JSON converter module in the core of Zorba (no external dependencies anymore) * Added truncate function to the collection modules for efficient deletion of all nodes in a collection. Optimization: * No-copy optimization: avoids copying nodes during node-constructor expressions. * Added external function annotations %ann:propagates-input-nodes and %ann:must-copy-input-nodes to be used by the no-copy optimization. * Caching of results for recursive functions with atomic parameter and return types. * Added %ann:cache and %ann:no-cache to enable or disable caching of results of functions with atomic parameter and return types. * Types-related optimizations for runtime operators (comparisons, FnBoolean, Or, And, Compare, instance-of, cast, castable, treat, promote). * More efficient implementation for base64Binary items * Preallocate and reuse temp sequence iterator for LetVarITerator and CtxVarIterator. * Enhanced push-down of positional predicate into LetVarITerator and CtxVarIterator. * Change the implementation of the free-vars annotation and got rid 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 in destruction of exit_catcher_expr * Fixed bug #867024 (error messages) * Fixed bug #957580 (stream read failure in StringToCodepointsIteartor) * Fixed bug #911585 (management of variables during eval) * Fixed bug #866423 (fn:empty and fn:exists iterators must reset their input in case of early-out) * Fixed bug #945241 (StaticCollectionManager::declaredIndexes() and temporary indexes) * Fixed bug #872288 (reset recursive flag during node rename) * Fixed bug #905041 (allow for the default element and function namespaces to be set multiple times via the c++ api). * Fixed bug #907872 (segfault when returning an input ItemSequence from an external function). * Fixed bug in codegen: do not create a materialize clause if one exists already support. * Fixed bug involving positional var and groupby * Fixed bug #867266 (do not hoist updating expressions) * Fixed bug #867022 (added location and params to some XPTY0004 errors) * zerr is not predeclared anymore to be http://www.zorba-xquery.com/errors * Fixed bug #917981 (disallow declaring same module twice). * Deprecated StaticContext:getNamespaceURIByPrefix() * Fixed bug #943788 (streamable string is not seekable) * Fixed bug #921624 (slow queries with bogus example.com schema URIs) * Fixed bug #918211 (xqueryx fulltext w3c conformance generation) * Fixed bug #918157 (Add XQFTTS to validation queue) * Fixed bug with unversioned modules with C++ external functions * Fixed bug #912579 (validate-in-place on non-root elements) * Fixed bug #891209 (validation with xsi:type returns untyped) * Fixed bug #952829 (Nondeterministic annotation doesn't seem to be checked) * Fixed bug #951772 (Comment node crashes serialization) * Fixed bug #945241 (StaticCollectionManager::declaredIndexes() and temporary indexes) version 2.1 New Features: * New node-position module. This module allows to obtain a representation of a node position, which can be used to assess structural relationships with other nodes. * New node-reference module. References can be obtained for any node, and different nodes cannot have the same identifier. * Custom Full-text thesaurus using Zorba URI resolver mechanism. * Modified C++ API to add isSequential, getExternalVariables, isBoundContextItem and isBoundExternalVariable Functions * Collection allows to retrieve information about the type and the annotations of a static collection. * Implemented the probe-index-range-value for general indexes * Added ExternalFunctionParameter class to be registered in the DynamicContext * New module for compiling and executing XQueries from XQuery (xqxq) * External functions are allowed to be updating (i.e. return a pending update list) Optimization: * Optimization for positioned sequence access (e.g. $x[$x[1]] where $x is a sequence of integers) * Optimization for count(collection()) expressions * Optimization of the fn:substring function in the case when its $start and $length arguments are integers Bug Fixes/Other Changes: * Fixed bug #3403291 (build for Fedora 15) * Fixed bug #3397293 (Incorrect XQueryX error message) * Fixed bug #3398637 (Nested element constructors cause loss of namespace bindings) * Fixed bug #3401592 (Undo of Create Collection doesn't work) * Fixed bug #3404689 (assignment problem in flwor) * Fix for bug #3404450 (testdriver_mt problem: caching and validation of docs) * Fixed installation bug to not install the .so for test modules * Fixed bug #3390410 (Adding a node to a collection causes out of bound in vector) * Fixed bug #3406200 (node types were not being moved to new tree during node detach) * Fixed bug #3406191 (Namespace bindings lost after update due to bug in node detach) * Fixed bug #3290122 (ZDST0003 needs collection name) * Fixed bug #3406272 (merging of adjacent text nodes must be done after all updates have been applied). * Don't raise warnings for unknown annotations. * Fixed bug #3409344 (during detach, if the node being detached is the root of its tree, it should be detached from the tree as well; otherwise memory corruption will occur) * Fixed bug # (Should not destroy the parent of a node that is being detached before the detach is done). * Added const qualifier to StaticContext::getAuditEvent() * Fixed bug #3408181 (available-collection() returns undeclared collections) * Fixed bug #859465 (Fatal error if a PUL contains two deactivate IC primitives) * Fixed bug #859467 (Fatal error if a PUL contains two activate Foreign Key primitives) * Fixed bug #859468 (Fatal error if a PUL contains two activate Simple IC primitives) * Fixed bug #859522 (Fatal error if a PUL contains two delete document primitives) * Fixed bug #859968 (Using put on an attribute produces an invalid XDM instance and may cause segmentation faults) * Fixed bug #855314 (should not fold a constant expr that returns an error item) * Fixed bug when parsing a document with a base-uri attribute. * Fixed bug #863320 (Sentence is incorrectly incremented when token characters end without sentence terminator) * Fixed bug #863730 (static delete-node* functions don't raise ZDDY0012) * Removed ZSTR0005 and ZSTR0006 error codes * Fixed bug #868258 (Assertion failure with two delete collection) * Fixed bug #871623 and #871629 (assertion failures with insertions in dynamic collections) * Fixed bug #867262 (allow reuse of iterator over ExtFuncArgItemSequence) * Fixed bug #869024 (segmentation fault with node-reference) * Fixed bug #869025 (segmentation fault with node-reference) * New node-reference module. References can be obtained for any node, and different nodes cannot have the same identifier. * Fixed bug #872697 (segmentation fault with validation of NMTOKENS) * Added undo for node revalidation * Optimization for count(collection()) expressions * Fixed bug #872796 (validate-in-place can interfere with other update primitives) * Fixed bug #872799 (validate-in-place can set incorrect types) * Fixed bug #855715 (Invalid escaped characters in regex not caught) * Fixed bug #868325 (fn:analyze-string fails with some recursive subgroups) * Fixed bug #872697 (segmentation fault with validation of NMTOKENS) * General index cannot be declared as unique if the type of its key is xs:anyAtomicType or xs:untypedAtomic. * Added undo for node revalidation * Optimization for count(collection()) expressions * Fixed bug #867133 (SWIG PHP build failure on Mac OSX) * Fixed bug #872796 (validate-in-place can interfere with other update primitives) * Fixed bug #872799 (validate-in-place can set incorrect types) * Fixed bug #872850 (Serialization of Tumbling Window For fails) * Fixed bug #855715 (Invalid escaped characters in regex not caught) * Fixed bug #862089 (Split binary/xq install directories for modules) by splitting "module path" into separate URI and Library paths * Fixed bug #872502 (validation of the JSON module xqdoc fails) * Fixed bug #897619 (testdriver_mt can not run the XQueryX tests) * Fixed bug #867107 (xqdoc dependency to zorba is wrong) * Fixed bug #897616 (Fix the generation of the XQFTTS report results for W3C) version 2.0.3 * Fixed bug #867662 ("nullptr" warning) * documentation improvements version 2.0.2 * Fixed bug #3401971 (node-by-reference on dynamic collections) * documentation improvements * installer improvements * Fixed bug #3403291 (build for Fedora 15) * Don't install the .so for test modules * Fix for running ctest on Windows version 2.0.1 * Custom Full-text stemming. * Custom Full-text tokenization. * Fixed scripting bug where apply statement was considered a sequential expr even if the source expr was non-updating and non-sequential. * Fixed bug #3394400 (Element replacement, really unexpected result) * Fixed bug #3394588 (Unexpected error during pul undo) * Fixed bugs #3398511 and #3398552 with "make install" * Fixed bug #3398521 for compiling with ZORBA_NO_XMLSCHEMA version 2.0 * Zorba 2.0 is a major rewrite of previous versions. It doesn't claim to preserve backwards compatibility with any 1.X version. Host language API changes have been made to the following components: - External functions API - XmlDataManager - Error reporting - Debugger API XQuery language and API changes have been made to the following components: - XQuery Scripting Extension - Function APIs - XQuery Data Definition Facility - XQuery modules and module versioning - Changes to conform with the latest XQuery 3.0 - Namespaces of annotations, errors, collations. * In addition to host language API and XQuery language improvements, plenty of bug fixes and optimizations have been made. version 1.4 * added a datetime library module with nondeterministic functions * new nondeterministic read functions in the http-client module * the http-client's send-request function accepts a non-validated request parameter * fixed an issue with a wrong static context being used in eval queries (see bug item #2979317) * added XQuery 1.1 Switch expressions (only available in 1.1 processing mode) * added the fn:parse function from XQuery Functions and Operators 1.1 * improved error reporting for parser errors * improved error reporting for errors regarding sequential expressions * bug fixes - accept relative URIs in xs:anyURI constructors (#2988209) - direct element/attribute construction (#2999765) - deep-equal (#2999772) - schema-attribute(*) is parsed as a function call instead of a node test (#2993286) - handling xml:base attributes during doc loading (#3013096) - fixed build with CMake 2.6.0 on Debian Lenny - try-catch error if XQuery version < 1.1 (#3005344) - W3C test suite bugs CastableAs649 and CastableAs650 (#2999777) - assertion in StatelessExtFunctionCallIterator (#3012651) - http-client return type handling for (*+xml and text/html) * optimization of fn:subsequence * new xqDoc function (xqdoc-content) taking a documented module as string * new xqDoc feature; reporting functions invoked from within a particular function * xqDoc schema change; name element for functions got an arity attribute * added a tidy library module that provides functions to tidy an HTML string and returns a valid XHTML document node (http://www.zorba-xquery.com/modules/tidy) * added a schema library module that provides XML schema related functions (e.g. schema-type) (http://www.zorba-xquery.com/modules/schema) * added a node reference library module that provides functions to retrieve the URI of a node and vice versa (http://www.zorba-xquery.com/modules/reference) * added a hmac module (http://www.zorba-xquery.com/modules/security/hmac) that provides an sha1 function (e.g. used in OAuth) * added a random module (http://www.zorba-xquery.com/modules/random) that provides fuctions for generating (pseudo-)random integers and UUIDs. version 1.2 * more introspection functions (e.g. in-scope-element and in-scope-attribute) * first prototype for higher order functions from XQuery 1.1 * JSON module in (com/zorba-xquery/www/modules/json) * huge performance improvements * added an Atom schema to the build-in schemas * register a callback function in the static context that is called if a collection or index declaration is processed (compiled) * nondeterministic (instead of sequential) functions in the file module * reference counting the store (de)initialization * many bug fixes; for example - compile with Xerces 3.1 - loading external functions (prefix problem) - plan serializer fixes - serialization fixes - base64 decoder - loading documents with general entities - EXPATH http-client fixes - not hoisting nondeterministic functions - scripting related fixes - unicode related fixes (e.g. for parameters to the doc function) - StaticContext::loadProlog fix - SAX serialization fix version 1.0 * Changes in the C++ API * Removed ResultIterator class. All public API methods use simply Iterator. * Added a new class named ExternalModule. This class must be used for registering external functions. This change makes the external function API incompatible with previous releases. * Loading pre-compiled queries (using loadExecutionPlan) requires to pass a SerializationCallback which is used for retrieving registered uri resolvers or trace streams. Moreover, the callback is used for retrieving ExternalModules which have been used when compiling the query. * Changed the append function in zorba::String to const. Now, the function does not change the String itself, but returns a new String. Furgthermore zorba::String::append can now handle other zorba::String objects - not only const char*. Also the operators + and += are defined on zorba::String. * Other language bindings (Java, PHP, python, ruby) also now use simply Iterator; ResultIterator removed. * XQC (C language binding) brought up-to-date with latest revision of that spec (https://xqc.sourceforge.net). * Resolving of modules is now enhanced by the so called "Zorba Module Path". Moreover, multiple ModuleURIResolvers can be registered in one StaticContext. See the documentation for more information. * Added static and dynamic context introspection modules. * Added the excel library to the built-in modules. Implemented the most used excel functions. * Added the math library to the built-in modules (the namespace has changed to http://www.zorba-xquery.com/modules/math) * Pass the Static- and DynamicContext as parameter to the evaluate function of external functions. * The XQuery class got a setTimeout option that allows the user to set a maximum running time of a particular query execution. * The StatelessExternalFunction is now non-pure by default. There is a new subclass called PureStatelessExternalFunction which should be used instead. PureStatelessExternalFunctions don't have access to the Static- and DynamicContext. * Renamed XQuery::serialize to XQuery::execute. The new method also implements the functionality of the XQuery::applyUpdates method (which was removed). * Added the serialize library to the built-in modules. The function util:serialize-to-string has been removed. * The DynamicContext can be used to pass arbitrary name-value pairs to the evaluate method of external functions. * Implemented CSV to XML converters. See csv2xml.xq module. You can convert back and forth between CSV files and XML or formated text files and XML. * Changes in the email functionnality * implemented smtp:send functions as external functions * added support for MIME messages (Text in character sets other than ASCII, Non-text attachments, Message bodies with multiple parts, Header information in non-ASCII character sets) * most of the runtime iterators and functions are generated (see https://sourceforge.net/apps/mediawiki/zorba/index.php?title=Creating_New_Runtime_Iterators_and_Functions) * improved exception messages raised by the serializer * Json is now able to parse Unicode messages * improved functionality for java, php, python and ruby bindings. version 0.9.8-rev1 (2009.09.22) * bug fixes * fixed a crash caused by converting long integers (> 1024 digits) to string * the compile-only check reports the URI of the encapsulating entity in it's error report (used for XQDT semantic checking) * fixed 'for $x in () return $x/test' to return the empty sequence instead of raising a static error * fixed build using Xerces-C 3.0.1 * fixed build for Mac OS X 10.6 (Snow Leopard) * improved error reporting in the command line utility * improved detection of the installed version of Xerces-C (raise an error if a wrong version is installed) version 0.9.8 (2009.08.26) * More XQuery Scripting Features * default initialization for external variables * block local variables * XQuery 1.1 * Support for the "validation as TypeName" feature * Changed the try/catch syntax as specified in XQuery 1.1 (except the try- and catch expressions are ExprSingle and not Expr). * Examples for the Java API * Function library * creating PDFs using XSL Formatting Objects (requires Java) * util:parse function * converter functions to/from JSON or JsonML and XML * function for sending simple text emails * the util:tidy function returns a node instead of a string. * XQDoc module http://www.zorba-xquery.com/zorba/xqdoc-functions * Added a loadProlog function to the static context. * Added support for XQueryX and XQueryX Update * Added compiled query persistence to the C++ API (XQuery::loadExecutionPlan() and XQuery::saveExecutionPlan()) * Added a printPlan function to the XQuery class of the API. * Added new option in the Zorba command line utility: compile-only, parse-only, lib-module, print-errors-as-xml. * Added two plan printing function (printPlanAsXML and printPlanAsDOT) to the SWIG generated APIs. * Implemented 'declare option': options are set in the static context. * fn:trace can be disabled by setting the option QName("http://www.zorba-xquery.org/option", "trace") to "disable". * Changed the scripting syntax of the exit expression from 'exit with' to 'exit returning'.This is due to an ambiguity in the grammar (see http://www.w3.org/Bugs/Public/show_bug.cgi?id=6852 for more information). * Added accessor functions for node items to the Item class in the API (i.e. getChildren, getAttributes, and getNodeName). * Added a UserException to the API which is raised if the user makes a call to the fn:error function. * UTF8 support for the lexer * bug fixes and performance improvements version 0.9.5 (2008.02.17) * Unified the Tidy and Rest API's * Added new sinatures to zorba-util:tidy and zorba-util:tdoc that allow setting of tidy functions * Added Schema imports using target namespace or location hints * Added StaticContext::findFunctions and StaticContext::disableFunciton * Added Functions for collections * Windows packages include a zorba_simplestore.dll * Improved error messages for regular expression processing * Added functions to return an item instead of xs:string * Added a new signature to zorba-util:random in order to be able to call random within a loop and get different numbers each time. * Corrected the types of some functions/operators (YM_DURATION or DT_DURATION instead of DURATION). * Now possible to pass empty sequence as collection URI. * Now cURL is set to follow an infinite number of redirects. * Added validate after update * Fixed schema files without target namespace. * Fixed notation cast. * Added list and union item types to type manager cache * Added validation tests for schema substitution groups * Added message when error during update test driver. * Added partial support for scripting (XQSE) * Added support "default element namespace" schema imports * Added support variable initializers that refer to forward variable declarations. * Various bug fixes and performance enhancements. version 0.9.4 (2008.10.06) * added General FLWOR (GFLWOR) * added Windowing functionality * added ability to perform "outer" joins in the FLWOR with outer for clauses * output numbering added to FLWOR * Added HTTP support to module import * fn:parse() is implemented as per the XQuery proposal * Extended api to register user-defined URI resolvers for documents, collections, schemas, and modules * boost dependencies removed * Added xquery debugging support * Added a store implementation based on Windows DOM. * Added functions to make calls to REST based web services through XQuery * Added PHP bindings to zorba * Added tidy support to convert web pages into xhtml. * Added XML Schema support for validation * Added the ability to revalidate XML data with respect to a Schema after applying updates version 0.9.21-4303 (2008.06.26): * fixed installation problem for python and ruby language bindings * fixed some valgrind reported memory problems * other minor bug fixes and performance improvements version 0.9.2-4251 (2008.06.19): * Module support (as in the XQuery 1.0 W3C recommendation) * Removed boost shared pointers from the API * Performance improvements and bug fixes * C API (zorbac.h) * Rudimentary SWIG interface for generating other language bindings (i.e. Ruby and Python) * Added support for running multiple queries in the command line utility * group by (as in the evolving W3C XQuery 1.1 recommendation) * try-catch (as in the evolving W3C recommendation) * eval facility to dynamically evaluate a string and execute it as a query * some math functions (e.g. sqrt, sin, cos, etc) * Basic schema validation (without post schema validation and substitution groups) * Stabilized the Store API & build the simplestore as a separate library version 0.9.1 (2008.04.30): * Initial release supporting * XQuery 1.0 and XPath 2.0 (as in the W3C recommendation) except modules and only limited support for schema validation * XQuery Update Facility 1.0 (as in the evolving W3C recommendation) * An In-Memory (replaceable) XML store (implements the XQuery Data Model (XDM) W3C recommendation) * This release 0.9 passes 97.6% of the W3C tests of XQuery 1.0 test suite and 99.4% of the XQuery Update Facility test suite.