Notice: Read this to be informed of the new features added to the successive versions of XQuare Bridge.
- Maintenance release (bug fixes).
An 1.2 version is currently been prepared and will support the XQuery 04 April 2005 syntax and several XQuery enhancements.
Storage / Mapping Language
- New attribute updateColumnWhenMissingadded to mapping language to control if in update mode a column must be updated with null or with the default value when the element or attribute is missing in the inserted XML document. By default, columns are not updated.
- The new attribute noNamespaceSchemaLocationon the mappingelement can now be used to use schemas without target namespace.
- Bug fix (#300486): now the attributeelement of the mapping language is fully endowed with the same attributes and features than the elementelement (ref& mapattributes) since a table mapping, under certain circumstances, can also be defined for an attribute.
- Bug fix (#300490): a new kind of generator use has been introduced that allow to implement a custom storage for simple-content elements and attributes data. These generators that allow the user to transform XML data before storage are called substitutiongenerators.
Most of these new mapping features are available only if you use the URI for the new version of the mapping language, i.e., http://www.xquark.org/Bridge/1.1/Mapping
- Bug fix (#300507): an XQuare XML Schema implementation bug prevented the use in mapping of XML types derived (under certain circumstances) by extension.
- Documentation has been improved especially for user generators and a chapter has been added describing a tuple lifecycle.
- Before only nullable or auto-generated column (default values for instance) could be ignored in a mapping. Other cases led to an exception. Now the exception is no more raised and was replaced by a warning. This could lead to unexpected storage exceptions but seems definitively more flexible.
- Support for Oracle LOBs added using standard stream JDBC API.
Version 1.1 beta 2
General / J2EE integration
- JDBC DataSources supported and accessible through JNDI.
- The Apache Commons Logging API is now used for warnings and traces.
- Apache Connection Pool (DBCP) and log4j integrated in the distribution.
- Full HTML documentation through Apache Forrest.
- Support for PreparedStatements: server-side performance can be perceptibly improved.
- Bug fixes.
- New samples added.
- Storage bugs fixed in the check/update mode.
Version 1.1 beta 1
- Support of the "W3C Working Draft 12 November 2003" XQuery syntax.
- Support for functions (views) and modules.
- Support for computed constructors.
- Enhanced support of standard XQuery serialization allowing (as much as possible) the user to get uniform and conformant output from the various RDBMS supported.
- New abstract JDBC types supported (BINARY, VARBINARY, LONGVARCHAR, LONGVARBINARY, BLOB, CLOB) with some limitations (see below).
- Preliminary support of conditional expressions in the return clause.
- Two table mappings associated to the same element can now reference each other. This provides better support for storing n-n relations.
- Syntax: the generator "method" attribute is replaced by a more explicit "class" attribute.
- JDBC batch size control enabled via the "map" element attribute "batchSize".
- Generators can now be associated to attribute elements.
- A built-in generator was added for simple key generation.
Supported databases versions
This software has been thoroughly tested with Oracle 8.1.7 and its associated JDBC thin driver. It is known to work with Oracle 9i, provided that the 9i JDBC driver is used.
The driver can be downloaded at http://otn.oracle.com/software/tech/java/sqlj_jdbc/content.html (an Oracle Technology Network login is needed to access this page).
This software has been thoroughly tested with MS SQLServer 2000 and its associated JDBC driver.
The driver can be downloaded at http://www.microsoft.com/sql
XQBridge use SQLServer cursor features. To enable them, use the ;SelectMethod=cursor suffix with your connection string.
This software has been thoroughly tested with Sybase 11.9.2 and the jConnect5.5 JDBC driver.
The driver can be downloaded at http://www.sybase.com, searching for jConnect.
In order to get XQuare Bridge running on Sybase 11.9.2, the Sybase administrator must setup the Sybase metadata views using the script located in the file jConnect-5_5/sp/sql_server.sql.
This software has been thoroughly tested with MySQL 3.23 and mySQL-connector-3.0.9.
This driver is included in the distribution.
Known bugs and limitations
- Clob and blob not supported (no standard JDBC support in Oracle8.1.7 driver).
- XQuery extraction requires in some cases that table or view rows have a unique ID (primary key, rowid or implicit key built from all row columns) to work properly. Wrong results may otherwise be produced with the following kinds of queries:
MySQL: some complex queries do not work (for instance multiple some or every clauses appearing in disjunctions).
MySQL/SQLServer/Sybase: Comparison between VARCHAR and CHAR columns does not consider trailing CHAR blanks. This must be taken into account when writing where clauses...
Oracle: predicates including compararisons with '' (empty string) don't work as expected since '' is equivalent to NULL on this DBMS. Use the exists function instead. For instance != '' is translated as != NULL by Oracle and is always evaluated as false (not equivalent to 'IS NOT NULL').
- Nested FLWOR expressions. Keys are needed for reconstruction except for the innermost FLWORs.
- With MySQL, aggregate rewriting introduces group by clauses that may also collapse duplicate rows.