Uni-Logo
Databases and Information Systems
Sie sind hier: Startseite Research Former Projects
 

The GCX XQuery Engine – Download

G(arbage) C(collected) X(query) Engine – An open source in-memory XQuery engine

GCX is an efficient and effective open source in-memory XQuery engine implemented in C++. At runtime, GCX aims at minimizing the amount of data that is kept in main memory. This strategy does not only allow for evaluating large data streams with low main memory consumption, but also speeds up query evaluation as small buffers in many cases enable for fast XQuery evaluation (see also our benchmark results). If you are interested in the theoretical background of GCX you might take a look at the publications on GCX, which provide detailed information on the evaluation strategy. Furthermore, there is a compact FAQ section, which answers additional questions around GCX.

Supported fragment of XQuery 1.0

The current GCX version 2.1 (v2.1) supports an expressive fragment of the XQuery 1.0 standard. Below you can find a list of currently supported features for the latest and previous GCX releases.

Downloads

Since April 2009, GCX is a Sourceforge project. Your can download the latest version (and also older versions of GCX) at the Sourceforge GCX project page. Below we provide a short summary of all GCX versions together with their changes and/or addtions. The GCX bundles contain either the source code or the binary and a set of example queries. Please download the manual separately or use the online version of the manual.


Version
(Release Date)
Type Benchmark Results Changes/Additions Download
v2.1
(2009-06-01)
Independent Work n/a
  • numeric constants
  • rounding function expressions
  • fn:empty function expression
  • fn:doc function expression
  • I(nput)/O(output) stream support
  • exception handling
  • comment expressions
Binaries/Sources
Manual
Developers Stuff
v2.0
(unreleased)
Diploma Thesis n/a
  • multi-step path expressions
  • aggregate function expressions
  • major changes to core parts
  • expanded role assignment to all node types
  • reference counting instead of role (multi-)sets
  • large-scale optimization strategies
  • XML document well-formedness validator
n/a
Gunnar Jehl:
Erweiterung und Optimierung der Garbage Collected XQuery Engine – Pfade mit mehreren Schritten und Aggregatfunktionen – (engl. Extension and Optimization of the Garbage Collected XQuery Engine – Multi-step Paths and Aggregate Functions –), Diploma Thesis 2008 [.pdf] (only available in german)
v1.0β
(2007-01-26)
Diploma Thesis Results n/a Binaries/Sources
Manual

Publications/Papers/Presentations

  • Publications:
    Michael Schmidt, Stefanie Scherzinger, Christoph Koch:
    Combined Static and Dynamic Analysis for Effective Buffer Minimization in Streaming XQuery Evaluation, In Proc. ICDE 2007 [.pdf]

    Christoph Koch, Stefanie Scherzinger, Michael Schmidt:
    The GCX System: Dynamic Buffer Minimization in Streaming XQuery Evaluation, In Proc. VLDB 2007, Demo paper [.pdf]

Supported Features

GCX v2.1 supported fragment of XQuery 1.0

The following syntactic constructs are supported by the GCX v2.1 release (changes/additions marked red):
  • arbitrary (well-formed) XML elements (with or without PCDATA content)
  • string constants in output or conditions
  • numeric constants in output or conditions
  • aggregate function expressions in output or conditions supporting
    • standard functions: fn:sum, fn:avg, fn:min, fn:max and fn:count
    • non-standard functions: fn:stddev_samp, fn:stddev_pop, fn:var_samp, fn:var_pop and fn:median (fn:list removed)
  • rounding function expressions in output or conditions supporting
    • standard functions: fn:ceiling, fn:floor, fn:round and fn:round-half-to-even
    • non-standard functions: fn:abs, fn:cover and fn:truncate
  • arbitrarily deep-nested sequences of expressions
  • nested FWR (for-where-return) expressions
  • if-then-else expressions
  • conditions support
    • conjunctions: and, or
    • functions: fn:not, fn:exists, fn:empty, fn:true, fn:false, all aggregate function expressions and all rounding function expressions
    • relational operators: <, , =, , >,
  • variables defined by FWR expressions (no let-clause support) in output or conditions (with or without multi-step path expressions)
  • multi-step path expressions (arbitrarily length) with (optional) fn:doc function expression for specifying absolute paths using
    • axis: / (child::) or // (descendant::)
    • node tests: node(), text(), wildcard (∗) or a tagname
  • comment expressions "above" a query (not supported inside a query)
⇒ A complete overview of the supported constructs for this GCX release (v2.1) can be found at Fragment XQ.

GCX v2.0 supported fragment of XQuery 1.0

The following syntactic constructs are supported by the GCX v2.0 release (changes/additions marked red):
  • arbitrary (well-formed) XML elements (with or without PCDATA content)
  • string constants in output or conditions
  • aggregate function expressions in output or conditions supporting
    • standard functions: fn:sum, fn:avg, fn:min, fn:max and fn:count
    • non-standard functions: fn:stddev_samp, fn:stddev_pop, fn:var_samp, fn:var_pop and fn:list
  • arbitrarily deep-nested sequences of expressions
  • nested FWR (for-where-return) expressions
  • if-then-else expressions
  • conditions support
    • conjunctions: and, or
    • functions: fn:not, fn:exists, fn:true, fn:false and all aggregate function expressions
    • relational operators: <, , =, , >,
  • variables defined by FWR expressions (no let-clause support) in output or conditions (with or without multi-step path expressions)
  • multi-step path expressions (arbitrarily length) using
    • axis: / (child::) or // (descendant::)
    • node tests: node(), text(), wildcard (∗) or a tagname

GCX v1.0β supported fragment of XQuery 1.0

The following syntactic constructs are supported by the GCX v1.0β release:
  • arbitrary (well-formed) XML elements (with or without PCDATA content)
  • string constants in output or conditions
  • arbitrarily deep-nested sequences of expressions
  • nested FWR (for-where-return) expressions
  • if-then-else expressions
  • conditions support
    • conjunctions: and, or
    • functions: fn:not, fn:exists, fn:true and fn:false
    • relational operators: <, , =, , >,
  • variables defined by FWR expressions (no let-clause support) in output or conditions (with or without single-step path expressions)
  • single-step path expressions using
    • axis: / (child::) or // (descendant::)
    • node tests: node(), text(), wildcard (∗) or a tagname

Last updated: 2009-11-11