teiid SVN: r2307 - branches/7.0.x/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution.
by teiid-commits@lists.jboss.org
Author: shawkins
Date: 2010-06-28 10:36:05 -0400 (Mon, 28 Jun 2010)
New Revision: 2307
Modified:
branches/7.0.x/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/QueryExecutionImpl.java
Log:
TEIID-1135 fix for npe with a count query
Modified: branches/7.0.x/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/QueryExecutionImpl.java
===================================================================
--- branches/7.0.x/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/QueryExecutionImpl.java 2010-06-26 03:26:50 UTC (rev 2306)
+++ branches/7.0.x/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/QueryExecutionImpl.java 2010-06-28 14:36:05 UTC (rev 2307)
@@ -114,14 +114,14 @@
@Override
public void execute() throws TranslatorException {
try {
- LogManager.logDetail(LogConstants.CTX_CONNECTOR, getLogPreamble() + "Incoming Query: " + query.toString()); //$NON-NLS-1$
+ LogManager.logDetail(LogConstants.CTX_CONNECTOR, getLogPreamble(), "Incoming Query:", query); //$NON-NLS-1$
List<TableReference> from = ((Select)query).getFrom();
String finalQuery;
if(from.get(0) instanceof Join) {
visitor = new JoinQueryVisitor(metadata);
visitor.visitNode(query);
finalQuery = visitor.getQuery().trim();
- LogManager.logDetail(LogConstants.CTX_CONNECTOR, getLogPreamble() + "Executing Query: " + finalQuery); //$NON-NLS-1$
+ LogManager.logDetail(LogConstants.CTX_CONNECTOR, getLogPreamble(), "Executing Query:", finalQuery); //$NON-NLS-1$
results = connection.query(finalQuery, this.context.getBatchSize(), visitor.getQueryAll());
} else {
@@ -132,7 +132,7 @@
visitor.getTableName(), visitor.getIdInCriteria());
} else {
finalQuery = visitor.getQuery().trim();
- LogManager.logDetail(LogConstants.CTX_CONNECTOR, getLogPreamble() + "Executing Query: " + finalQuery); //$NON-NLS-1$
+ LogManager.logDetail(LogConstants.CTX_CONNECTOR, getLogPreamble(), "Executing Query:", finalQuery); //$NON-NLS-1$
results = connection.query(finalQuery, this.context.getBatchSize(), visitor.getQueryAll());
}
}
@@ -147,6 +147,9 @@
List<?> result;
if (query.getProjectedQuery().getDerivedColumns().get(0)
.getExpression() instanceof AggregateFunction) {
+ if (results == null) {
+ return null;
+ }
result = Arrays.asList(results.getSize());
results = null;
14 years, 6 months
teiid SVN: r2306 - in trunk/documentation/client-developers-guide/src/main/docbook/en-US: content and 1 other directory.
by teiid-commits@lists.jboss.org
Author: shawkins
Date: 2010-06-25 23:26:50 -0400 (Fri, 25 Jun 2010)
New Revision: 2306
Removed:
trunk/documentation/client-developers-guide/src/main/docbook/en-US/content/entitlements.xml
Modified:
trunk/documentation/client-developers-guide/src/main/docbook/en-US/content/appendix-unsupported-jdbc.xml
trunk/documentation/client-developers-guide/src/main/docbook/en-US/content/jdbc-connection.xml
trunk/documentation/client-developers-guide/src/main/docbook/en-US/content/jdbc-extensions.xml
trunk/documentation/client-developers-guide/src/main/docbook/en-US/content/jdbc-transactions.xml
trunk/documentation/client-developers-guide/src/main/docbook/en-US/content/ssl.xml
trunk/documentation/client-developers-guide/src/main/docbook/en-US/content/using-hibernate.xml
trunk/documentation/client-developers-guide/src/main/docbook/en-US/main.xml
Log:
TEIID-1037 refining the client guide
Modified: trunk/documentation/client-developers-guide/src/main/docbook/en-US/content/appendix-unsupported-jdbc.xml
===================================================================
--- trunk/documentation/client-developers-guide/src/main/docbook/en-US/content/appendix-unsupported-jdbc.xml 2010-06-25 19:35:24 UTC (rev 2305)
+++ trunk/documentation/client-developers-guide/src/main/docbook/en-US/content/appendix-unsupported-jdbc.xml 2010-06-26 03:26:50 UTC (rev 2306)
@@ -14,6 +14,15 @@
then only those forms of the method specified are not supported.</para>
<sect1>
+ <title>ResultSet Limitations</title>
+ <itemizedlist>
+ <listitem><para>TYPE_SCROLL_SENSITIVE is not supported.</para></listitem>
+ <listitem><para><code>UPDATABLE</code> ResultSets are not supported.</para></listitem>
+ <listitem><para>Returning multiple ResultSets from Procedure execution is not supported.</para></listitem>
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
<title>Unsupported Classes and Methods in "java.sql"</title>
<table frame='all'>
<title>Connection Properties</title>
Deleted: trunk/documentation/client-developers-guide/src/main/docbook/en-US/content/entitlements.xml
===================================================================
--- trunk/documentation/client-developers-guide/src/main/docbook/en-US/content/entitlements.xml 2010-06-25 19:35:24 UTC (rev 2305)
+++ trunk/documentation/client-developers-guide/src/main/docbook/en-US/content/entitlements.xml 2010-06-26 03:26:50 UTC (rev 2306)
@@ -1,127 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % CustomDTD SYSTEM "../../../../../../docbook/custom.dtd">
-%CustomDTD;
-]>
-<chapter id="entitlements">
- <title>Entitlements/Data Roles</title>
- <para>Entitlements, also called as Data Roles, are a set of rules and permissions that are defined
- per VDB that dictate data access (create, read, update, delete) permissions for the schema defined
- by the VDB. The use of entitlements are controlled system wide with the property in
- <code><jboss-install>/server/<profile>/deploy/teiid/teiid-jboss-beans.xml</code> file
- in bean configuration section of <code>RuntimeEngineDeployer</code> with property <code>useEntitlements</code>.</para>
-
- <para>Once the entitlements are enabled, the access permissions defined in each VDB will then be enforced by the Teiid Server.
- To process an <code>INSERT</code> statement, the user account requires the following access rights:</para>
- <orderedlist>
- <listitem> <para><code>CREATE</code> - on the Table being inserted into.</para></listitem>
- <listitem> <para><code>CREATE</code> - on every column being inserted on that Table.</para></listitem>
- </orderedlist>
-
- <para>To process an <code>UPDATE</code> statement, the user account requires the following access rights:</para>
- <orderedlist>
- <listitem> <para><code>UPDATE</code> - on the Table being updated.</para></listitem>
- <listitem> <para><code>UPDATE</code> - on every column being updated on that Table.</para></listitem>
- <listitem> <para><code>READ</code> - on every column referenced in the criteria.</para></listitem>
- </orderedlist>
-
- <para>To process a <code>DELETE</code> statement, the user account requires the following access rights:</para>
- <orderedlist>
- <listitem> <para><code>DELETE</code> - on the Table being deleted.</para></listitem>
- <listitem> <para><code>READ</code> - on every column referenced in the criteria.</para></listitem>
- </orderedlist>
-
- <para>The data roles are defined inside the <code>META-INF/vdb.xml</code> file, f you used Designer to build your VDB.
- They defined inside the <code>-vdb.xml</code> file defined if you are using the Dynamic VDBs. The below example will show
- a sample "vdb.xml" file with few simple data rules.</para>
-
- <para>For example, if a VDB schema defined a table below in its model files named "modelName"</para>
-
- <programlisting><![CDATA[
- modelName.TableA (
- column1 VARCHAR,
- column2 INT
- )
- ]]></programlisting>
-
- <para>and has three (3) users "UserA", "UserB", "UserC" with following permissions</para>
- <orderedlist>
- <listitem><para>UserA has privileges to read, write access to TableA, but can not delete.</para></listitem>
- <listitem><para>UserB has no privileges that allow access to TableA</para></listitem>
- <listitem><para>UserC has privileges that only allow read access to TableA.column1</para></listitem>
- </orderedlist>
-
- <para>Then the resulting "vdb.xml" file will look like below.</para>
-
- <programlisting><![CDATA[
-<?xml version="1.0" encoding="UTF-8"?>
-<vdb name="sample" version="1">
-
- <model name="modelName">
- <source name="source-name" translator-name="oracle" connection-jndi-name="java:myDS" />
- </model>
-
- <data-policy name="policy-1">
- <description>Allow all, except Delete</description>
-
- <permission>
- <resource-name>modelName.TableA</resource-name>
- <allow-create />
- <allow-read />
- <allow-update />
- </permission>
-
- <permission>
- <resource-name>modelName.TableA.colum1</resource-name>
- <allow-create />
- <allow-read />
- <allow-update />
- </permission>
-
- <permission>
- <resource-name>modelName.TableA.column2</resource-name>
- <allow-create />
- <allow-read />
- <allow-update />
- </permission>
-
- <mapped-role-name>role1</mapped-role-name>
-
- </data-policy>
-
- <data-policy name="policy-2">
- <description>Allow read only</description>
-
- <permission>
- <resource-name>modelName.TableA</resource-name>
- <allow-read />
- </permission>
-
- <permission>
- <resource-name>modelName.TableA.colum1</resource-name>
- <allow-read />
- </permission>
-
- <mapped-role-name>role2</mapped-role-name>
- </data-policy>
-</vdb>
-
- ]]></programlisting>
-
- <para>The above XML defined two data policies, "policy-1" which allows everything except delete on the table, "policy-2" that
- allows only read operation on the table. The "mapped-role-name" defines the "role" to whom these policies are applicable. Each data-policy
- must define a "role" to be enforced by the Teiid Server.</para>
-
- <para>
- The above xml assumes that "UserA" has "role1" role and "UserC" has "role2" role and
- "UserB" does not have either "role1" or "role2" roles.</para>
-
- <para>For assigning the roles to your users, in the JBoss AS,
- check out the instructions for the selected Login Module. Check "Admin Guide" for configuring Login Modules.</para>
-
- <para>"vdb.xml" file is checked against the schema file <code>vdb-deployer.xsd</code>, check the documents sections of the Teiid kit
- to find a copy of the schema file.</para>
-
- <note><para>Currently there is no GUI tooling support in the Designer or any other management tool to create this data roles
- permissions xml, however this is in our roadmap for future releases to provide.</para></note>
-</chapter>
\ No newline at end of file
Modified: trunk/documentation/client-developers-guide/src/main/docbook/en-US/content/jdbc-connection.xml
===================================================================
--- trunk/documentation/client-developers-guide/src/main/docbook/en-US/content/jdbc-connection.xml 2010-06-25 19:35:24 UTC (rev 2305)
+++ trunk/documentation/client-developers-guide/src/main/docbook/en-US/content/jdbc-connection.xml 2010-06-26 03:26:50 UTC (rev 2306)
@@ -6,20 +6,18 @@
<chapter id="teiid_connection">
<title>Connecting to Teiid Server</title>
- <para>The Teiid JDBC API provides Java Database Connectivity (JDBC) access any Virtual Database (VDB) that
- is deployed in the Teiid Server.
- The Teiid JDBC API supports the JDBC 4.0 specification; however, it is not fully JDBC Compliant.
- It does not support advanced features such as updatable result sets or SQL3 data types. </para>
+ <para>The Teiid JDBC API provides Java Database Connectivity (JDBC) access to any Virtual Database (VDB) deployed on a Teiid Server.
+ The Teiid JDBC API is compatible with the JDBC 4.0 specification; however, it does not fully support all <link linkend="unsupported_jdbc">methods</link>.
+ Advanced features, such as updatable result sets or SQL3 data types, are not supported. </para>
- <para>Java client applications connecting to a Teiid Server will need to use Java 1.6 JDK. Previous versions of Java is
- is not supported.</para>
+ <para>Java client applications connecting to a Teiid Server will need to use Java 1.6 JDK. Previous versions of Java are not supported.</para>
<para>Before you can connect to the Teiid Server using the Teiid JDBC API, please do following tasks first.</para>
<orderedlist>
- <listitem> <para>Install the Teiid Server. Check "Admin Guide" for instructions. </para> </listitem>
+ <listitem> <para>Install the Teiid Server. See the "Admin Guide" for instructions. </para> </listitem>
<listitem> <para>Build a Virtual Database (VDB). You can either build a "Dynamic VDB" (Designer not required),
- or you can use Eclipse based GUI tool <ulink url="http://www.jboss.org/teiiddesigner.html">Designer</ulink>.
- Check "Reference Guide" for instructions on how to build a VDB. If you do not know what VDB is, then start with this
+ or you can use the Eclipse based GUI tool <ulink url="http://www.jboss.org/teiiddesigner.html">Designer</ulink>.
+ Check the "Reference Guide" for instructions on how to build a VDB. If you do not know what VDB is, then start with this
<ulink url="http://www.jboss.org/teiid/basics/virtualdatabases.html">document</ulink>.</para> </listitem>
<listitem> <para>Deploy the VDB into Teiid Server. Check "Admin Guide" for instructions. </para> </listitem>
<listitem> <para>Start the Teiid Server (JBoss AS), if it is not already running.</para> </listitem>
@@ -27,211 +25,47 @@
<para>Now that you have the VDB deployed in Teiid Server, client applications
can connect to Teiid Server and issue SQL queries against deployed VDB using Teiid's JDBC API. If you are new to JDBC, learn about
- <ulink url="http://java.sun.com/docs/books/tutorial/jdbc/index.html">JDBC</ulink> here. Teiid kit ships with
- <code>teiid-{version}-client.jar</code> in the <code>"jboss-install/server/<profile>/lib"</code> directory. This JAR file
- contains Teiid JDBC Driver and DataSource classes. Add this JAR to your Java client application's classpath.
- </para>
+ <ulink url="http://java.sun.com/docs/books/tutorial/jdbc/index.html">JDBC</ulink> here. Teiid ships with
+ <code>teiid-&versionNumber;-client.jar</code> in the <code>"jboss-install/server/<profile>/lib"</code> directory.
- <orderedlist numeration="arabic">
- <listitem> <para><code>TeiidDriver</code> - JDBC connections using
+ <itemizedlist>
+ <para>Main classes in the client JAR:</para>
+ <listitem> <para><code>org.teiid.jdbc.TeiidDriver</code> - allows JDBC connections using the
<ulink url="http://java.sun.com/javase/6/docs/api/java/sql/DriverManager.html">DriverManager</ulink> class.</para> </listitem>
- <listitem> <para><code>TeiidDatasource</code> - JDBC connections using
- <ulink url="http://java.sun.com/javase/6/docs/api/javax/sql/DataSource.html">DataSource</ulink> class. You can use this to create JDBC XA connections. </para> </listitem>
- </orderedlist>
+ <listitem> <para><code>org.teiid.jdbc.TeiidDatasource</code> - allows JDBC connections using the
+ <ulink url="http://java.sun.com/javase/6/docs/api/javax/sql/DataSource.html">DataSource</ulink> or <ulink url="http://java.sun.com/javase/6/docs/api/javax/sql/XADataSource.html">XADataSource</ulink> class. You should use this class to create managed or XA connections.</para> </listitem>
+ </itemizedlist>
+ </para>
+ <para>Once you have established a connection with the Teiid Server, you can use standard JDBC API classes, like
+ DatabaseMetadata and ResultSetMetadata, to interrogate metadata and Statement classes to execute queries.</para>
+
<sect1 id="driver_connection">
- <title>Driver Based Connection</title>
- <para>Add the above jar file in your application's class path and use <code>org.teiid.jdbc.TeiidDriver</code> as the driver class.
- Use the following URL format for JDBC connections:
- </para>
+ <title>Driver Connection</title>
+ <para>Use <code>org.teiid.jdbc.TeiidDriver</code> as the driver class.</para>
- <para><emphasis>jdbc:teiid:<vdb-name>@mm[s]://<host>:<port>;[prop-name=prop-value;]*</emphasis></para>
+ <para>Use the following URL format for JDBC connections:<synopsis>jdbc:teiid:<vdb-name>@mm[s]://<host>:<port>;[prop-name=prop-value;]*</synopsis></para>
- <para>Where</para>
+ <para>URL Components</para>
<orderedlist>
<listitem><para><vdb-name> - Name of the VDB you are connecting to</para></listitem>
- <listitem><para>mm - defines Teiid JDBC protocol, mms defines a secure channel (see how to turn on <link linkend="ssl">SSL</link>)</para></listitem>
+ <listitem><para>mm - defines Teiid JDBC protocol, mms defines a secure channel (see the <link linkend="ssl">SSL chapter</link> for more)</para></listitem>
<listitem><para><host> - defines the server where the Teiid Server is installed</para></listitem>
<listitem><para><port> - defines the port on which the Teiid Server is listening for incoming JDBC connections.</para></listitem>
<listitem><para>[prop-name=prop-value] - additionally you can supply any number of name value pairs separated by semi-colon
- [;], further refining the connection. All supported URL properties are defined <link linkend="connection_properties">here</link>.</para></listitem>
+ [;]. All supported URL properties are defined in the <link linkend="connection_properties">connection properties section</link>. Property values should be URL encoded if they contain reserved characters, e.g. ('?', '=', ';', etc.)</para></listitem>
</orderedlist>
-
- <para>Sample Code:</para>
- <programlisting><![CDATA[
- public class TeiidClient {
- public Connection getConnection(String user, String password) throws Exception {
- String url = "jdbc:teiid:myVDB@mm://localhost:31000;ApplicationName=myApp";
- Class.forName("org.teiid.jdbc.TeiidDriver");
- return DriverManager.getConnection(url, user, password);
- }
- }
- ]]></programlisting>
-
- </sect1>
-
- <sect1 id="datasource_connection">
- <title>Datasource Based Connection</title>
- <para>To use a data source based connection use <code>org.teiid.jdbc.TeiidDataSource</code> as the data source class.
- If your JDBC connection needs to participate in an XA transaction, you must use the
- data source connection. Teiid DataSource class is also Serializable, so it possible for it to be used with
- JNDI naming services.</para>
- <para>Sample Code:</para>
- <programlisting><![CDATA[
- public class TeiidClient {
- public Connection getConnection(String user, String password) throws Exception {
- TeiidDataSource ds = new TeiidDataSource();
- ds.setUser(user);
- ds.setPassword(password);
- ds.setServerName("localhost");
- ds.setPortNumber(31000);
- ds.setDatabaseName("myVDB");
- return ds.getConnection();
- }
- }
- ]]></programlisting>
-
- <para>All the Teiid Data Source supported properties are defined <link linkend="connection_properties">here</link>.</para>
-
- <note><para>Teiid supports the XA protocol, if all sources that Teiid is integrating
- also support XA and are configured as XA data sources. If one or more sources are not XA capable, they can be
- marked as read-only and still participate in an XA transaction with the remaining sources.</para>
- </note>
- </sect1>
-
- <sect1 id="ds_in_jbossas">
- <title>As Data Source in JBoss AS</title>
- <para>Teiid can be configured as a JDBC data source in the JBoss Application Server and can be accessed
- from the JNDI for your JEE application. Deploying Teiid as data source in JBoss AS is exactly same as
- deploying any other RDBMS resources like Oracle or DB2. </para>
-
- <para>Defining as data source is not limited to
- JBoss AS, you can also deploy as data source in Glassfish, Tomcat, Websphere, Weblogic etc servers, however their
- configuration files are different than JBoss AS. Consult the respective documentation of the environment
- in which you are deploying.</para>
- <orderedlist numeration="arabic">
- <listitem><para>Copy the <code>teiid-${version}-client.jar</code> into
- <code><jboss-install>/server/default/lib</code> directory.</para></listitem>
- <listitem><para>Create a "teiid-ds.xml" file in <code><jboss-install>/server/<profile>/deploy</code>
- directory. Based on the type of deployment the contents of the deployment file will look like the below
- code fragment.</para></listitem>
- </orderedlist>
- <sect2 id="as_xa_connection">
- <title>DataSource based connection</title>
- <para>The below XML code sample will create an XA data source in the JBoss AS using the
- Teiid DataSource class <code>org.teiid.jdbc.TeiidDataSource</code>. Make sure
- you supply the correct DatabaseName, ServerName, Port number and credentials that are specific
- to your deployment environment. Then deploy this file into the JBoss AS and access the above data source from
- the JNDI in your JEE application with the specified JNDI name.</para>
-
- <programlisting><![CDATA[
- <datasources>
- <xa-datasource>
- <jndi-name>TEIID-DS</jndi-name>
- <xa-datasource-class>org.teiid.jdbc.TeiidDataSource</xa-datasource-class>
- <xa-datasource-property name="DatabaseName">myVDB</xa-datasource-property>
- <xa-datasource-property name="serverName">localhost</xa-datasource-property>
- <xa-datasource-property name="portNumber">31000</xa-datasource-property>
- <xa-datasource-property name="user">admin</xa-datasource-property>
- <xa-datasource-property name="password">password</xa-datasource-property>
- <track-connection-by-tx>true</track-connection-by-tx>
- <isSameRM-override-value>false</isSameRM-override-value>
- <no-tx-separate-pools />
-
- <!-- pool and other JBoss datasource properties -->
- <min-pool-size>5</min-pool-size>
- <max-pool-size>10</max-pool-size>
- </xa-datasource>
- </datasources>
- ]]></programlisting>
- </sect2>
- <sect2 id="as_driver_connection">
- <title>Driver based connection</title>
- <para>You can also use Teiid's JDBC driver class <code>org.teiid.jdbc.TeiidDriver</code> to create a data source</para>
- <programlisting><![CDATA[
- <datasources>
- <local-tx-datasource>
- <jndi-name>TEIID-DS</jndi-name>
- <connection-url>jdbc:metamatrix:myVDB@mm://localhost:31000</connection-url>
- <driver-class>org.teiid.jdbc.TeiidDriver</driver-class>
- <user-name>admin</user-name>
- <password>teiid</password>
-
- <!-- pool and other JBoss datasource properties -->
- <min-pool-size>5</min-pool-size>
- <max-pool-size>10</max-pool-size>
- </local-tx-datasource>
- </datasources>
- ]]></programlisting>
- </sect2>
- <sect2 id="local_connection">
- <title>Local JDBC Connection</title>
- <para>If you are deploying your client application on the same JBoss AS instance as the Teiid runtime is installed, then
- there is no reason for your client application to open socket based JDBC connection, as the
- both applications are running in the same Java VM process.
- You can use slightly modified data source configuration to make the "local" connection, that does not involve socket based
- communication. Here is an example:</para>
- <programlisting><![CDATA[
- <datasources>
- <xa-datasource>
- <jndi-name>TEIID-DS</jndi-name>
- <xa-datasource-class>org.teiid.jdbc.TeiidDataSource</xa-datasource-class>
- <xa-datasource-property name="DatabaseName">myVDB</xa-datasource-property>
- <xa-datasource-property name="user">admin</xa-datasource-property>
- <xa-datasource-property name="password">password</xa-datasource-property>
- <track-connection-by-tx>true</track-connection-by-tx>
- <isSameRM-override-value>false</isSameRM-override-value>
- <no-tx-separate-pools />
-
- <!-- pool and other JBoss datasource properties -->
- <min-pool-size>5</min-pool-size>
- <max-pool-size>10</max-pool-size>
- </xa-datasource>
- </datasources>
- ]]></programlisting>
- <para>In the absense of the "ServerName" and "PortNumber", the JDBC API will lookup a local Teiid runtime in
- the same VM.</para>
- </sect2>
-
- </sect1>
-
- <sect1>
- <title>Using Multiple Hosts</title>
- <para>When Teiid Server is deployed on multiple servers for scalbility, then your application that using
- Teiid JDBC API can automatically use all Teiid Servers in that group. To enable this feature the client application needs
- to specify all the Teiid Servers connection information (host name and port number) on the URL connection string. During the
- connection and authentication, client will randomly pick any one the Teiid server from the list and will have session
- established with that server. In the case of failure of the connected server, the client will try to automatically failover
- to other available servers, if the "autoFailover" connection property is set to "true". Here is example URL connection string</para>
-
- <programlisting><![CDATA[
- jdbc:teiid:<vdb-name>@mm://host1:31000, host1:31001, host2:31000;version=2
- ]]></programlisting>
-
- <para>Currently when the fail over happens, the user is re-authenticated with the new server. The clustering
- feature coming up in the Teiid 7.1 release will define how the transparent session fail over will occur with out the
- re-authentication.</para>
-
- <para>You can also use this feature to distribute the query load among various avaialble Teiid Servers available.
- Load balancing happens automatically, when you are using a data source along with connection pooling. Each time a connection is
- grabbed from the pool, it will randomly select a Teiid Server to distribute the load. Note, that load balacing feature
- is not avaialble if you are using Teiid Driver to make your connection.</para>
-
- <para>If you are using DataSource to connect to Teiid Server, use "AlternateServers" property/method to define the failover servers.
- Check out the Javadoc on the format of the string.</para>
- </sect1>
-
- <sect1 id="connection_properties">
- <title>JDBC Connection Properties</title>
+ <sect2 id="connection_properties">
+ <title>URL Connection Properties</title>
<para>The following table shows all the supported connection properties that can used with Teiid
JDBC Driver URL connection string, or on the Teiid JDBC Data Source class.</para>
<table frame='all'>
<title>Connection Properties</title>
<tgroup cols='3' align='left' colsep='1' rowsep='1'>
- <colspec colname='c1' colwidth="1*" />
- <colspec colname='c2' colwidth="1*" />
+ <colspec colname='c1' colwidth=".75*" />
+ <colspec colname='c2' colwidth=".5*" />
<colspec colname='c3' colwidth="2*" />
<thead>
<row>
@@ -257,18 +91,18 @@
<entry>
<code>int</code>
</entry>
- <entry>Size of the resultset; The default size if 500. <=0 indicates that the value is not set</entry>
+ <entry>Size of the resultset; The default size if 500. <=0 indicates that the default should be used.</entry>
</row>
<row>
<entry>
<code>partialResultsMode</code>
</entry>
<entry>
- <code>String</code>
+ <code>boolean</code>
</entry>
- <entry>Enable/disable support partial results mode. Default is "off". Allowed values are "on" or "off"</entry>
+ <entry>Enable/disable support partial results mode. Default false. See the <link linkend="partial_results">partial results</link> section.</entry>
</row>
- <row>
+ <row id="auto_commit_txn">
<entry>
<code>autoCommitTxn</code>
</entry>
@@ -279,11 +113,12 @@
This determines how a executed command needs to be transactionally wrapped inside the
Teiid engine to maintain the data integrity.
- <orderedlist>
+ <itemizedlist>
<listitem><para>ON - Always wrap command in distributed transaction</para></listitem>
<listitem><para>OFF - Never wrap command in distributed transaction</para></listitem>
<listitem><para>DETECT (default)- If the executed command is spanning more than one source it automatically uses distributed transaction.</para></listitem>
- </orderedlist>
+ </itemizedlist>
+ <link linkend="jdbc_transactions">Transactions with JDBC</link> for more information.
</entry>
</row>
<row>
@@ -293,7 +128,7 @@
<entry>
<code>boolean</code>
</entry>
- <entry> If "true", the autoCommit setting, commit and rollback will be ignored for local transactions.</entry>
+ <entry>If "true", the autoCommit setting, commit and rollback will be ignored for local transactions. Default false.</entry>
</row>
<row>
<entry>
@@ -333,59 +168,70 @@
</entry>
<entry>Version number of the VDB</entry>
</row>
-
- <row>
+ <row>
<entry>
<code>resultSetCacheMode</code>
</entry>
<entry>
<code>boolean</code>
</entry>
- <entry>ResultSet caching is turned on/off; Valid values are true|false</entry>
+ <entry>ResultSet caching is turned on/off. Default false.</entry>
</row>
<row>
<entry>
- <code>SHOWPLAN</code>
+ <code>autoFailover</code>
</entry>
<entry>
- <code>String</code>
+ <code>boolean</code>
</entry>
- <entry>Can be one of ON|OFF|DEBUG</entry>
- </row>
+ <entry>If true, will automatically select a new server instance after a communication exception. Default false.
+ This is typically not needed when connections are managed, as the connection can be purged from the pool.</entry>
+ </row>
<row>
<entry>
- <code>NoExec</code>
+ <code>SHOWPLAN</code>
</entry>
<entry>
- <code>boolean</code>
+ <code>String</code>
</entry>
- <entry>true|false</entry>
- </row>
+ <entry>(typically not set as a connection property) Can be ON|OFF|DEBUG; ON returns the query plan along with the results and DEBUG additionally prints the query planner debug information in the log and returns it with the results. Both the plan and the log are available through JDBC API extensions. Default OFF.</entry>
+ </row>
<row>
<entry>
- <code>autoFailover</code>
+ <code>NoExec</code>
</entry>
<entry>
- <code>boolean</code>
+ <code>String</code>
</entry>
- <entry>If true, will automatically select a new server instance after a communication exception.</entry>
+ <entry>(typically not set as a connection property) Can be ON|OFF; ON prevents query execution, but parsing and planning will still occur. Default OFF.</entry>
</row>
+
</tbody>
</tgroup>
- </table>
-
- <para>All the above properties have "set" methods on the <code>org.teiid.jdbc.TeiidDataSource</code>.
- Some of the the properties that are assumed from the URL string have addtional "set" methods, those proeprties are described in the
- following table.</para>
-
- <table frame='all'>
+ </table>
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="datasource_connection">
+ <title>Datasource Connection</title>
+ <para>To use a data source based connection, use <code>org.teiid.jdbc.TeiidDataSource</code> as the data source class.
+ The <code>TeiidDataSource</code> is also an XADatasource. Teiid DataSource class is also Serializable, so it possible for it to be used with
+ JNDI naming services.</para>
+
+ <note><para>Teiid supports the XA protocol, XA transactions will be extended to Teiid sources that also support XA.</para></note>
+
+ <para>All the properties (except for version, which is known on TeiidDataSource as DatabaseVersion) defined in the <link linkend="connection_properties">connection properties</link>have corresponding "set" methods on the <code>org.teiid.jdbc.TeiidDataSource</code>.
+ Properties that are assumed from the URL string have addtional "set" methods, which are described in the following table.</para>
+
+ <table id="ds_methods" frame='all'>
<title>Datasource Properties</title>
<tgroup cols='3' align='left' colsep='1' rowsep='1'>
- <colspec colname='c1' colwidth="1*" />
- <colspec colname='c2' colwidth="1*" />
+ <colspec colname='c1' colwidth="1.25*" />
+ <colspec colname='c2' colwidth=".7*" />
<colspec colname='c3' colwidth="2*" />
<thead>
<row>
@@ -413,6 +259,24 @@
</entry>
<entry>Server where the Teiid runtime installed</entry>
</row>
+ <!-- <row>
+ <entry>
+ <code>AlternateServers</code>
+ </entry>
+ <entry>
+ <code>String</code>
+ </entry>
+ <entry>Optional , delimited list of host:port entries. See the <link linkend="multiple_hosts">multiple hosts</link> section for more information.</entry>
+ </row> -->
+ <row>
+ <entry>
+ <code>AdditionalProperties</code>
+ </entry>
+ <entry>
+ <code>String</code>
+ </entry>
+ <entry>Optional setting of properties that has the same format as the property string in a connection URL.</entry>
+ </row>
<row>
<entry>
<code>PortNumber</code>
@@ -429,7 +293,7 @@
<entry>
<code>boolean</code>
</entry>
- <entry>Secure connection. Flag to indicate to use SSH based connection between client and server</entry>
+ <entry>Secure connection. Flag to indicate to use SSL (mms) based connection between client and server</entry>
</row>
<row>
<entry>
@@ -451,10 +315,165 @@
</row>
</tbody>
</tgroup>
- </table>
+ </table>
+ </sect1>
+
+ <sect1>
+ <title>Standalone Application</title>
+ <para>To use either Driver or DataSource based connections, add the client JAR to your Java client application's classpath. See the simple client example in the kit for a full Java sample of the following.</para>
+
+ <sect2 id="sa_driver_connection">
+ <title>Driver Connection</title>
+
+ <para>Sample Code:</para>
+ <programlisting><![CDATA[public class TeiidClient {
+ public Connection getConnection(String user, String password) throws Exception {
+ String url = "jdbc:teiid:myVDB@mm://localhost:31000;ApplicationName=myApp";
+ return DriverManager.getConnection(url, user, password);
+ }
+}]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="sa_datasource_connection">
+ <title>Datasource Connection</title>
+
+ <para>Sample Code:</para>
+ <programlisting><![CDATA[public class TeiidClient {
+ public Connection getConnection(String user, String password) throws Exception {
+ TeiidDataSource ds = new TeiidDataSource();
+ ds.setUser(user);
+ ds.setPassword(password);
+ ds.setServerName("localhost");
+ ds.setPortNumber(31000);
+ ds.setDatabaseName("myVDB");
+ return ds.getConnection();
+ }
+}]]></programlisting>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="ds_in_jbossas">
+ <title>JBoss AS Data Source</title>
+ <para>Teiid can be configured as a JDBC data source in the JBoss Application Server to be accessed
+ from JNDI or injected into your JEE applications. Deploying Teiid as data source in JBoss AS is exactly same as
+ deploying any other RDBMS resources like Oracle or DB2.</para>
- <para>Once you have established a connection with the Teiid Server, you can use any standard JDBC API like
- DatabaseMetadata and ResultSetMetadata classes to interrogate metadata of the deployed VDB. You can also use
- data processing classes and objects and process the results. </para>
+ <para>Defining as data source is not limited to
+ JBoss AS, you can also deploy as data source in Glassfish, Tomcat, Websphere, Weblogic etc servers, however their
+ configuration files are different than JBoss AS. Consult the respective documentation of the environment
+ in which you are deploying.</para>
+
+ <orderedlist numeration="arabic">
+ <para>Installation Steps</para>
+ <listitem><para>If Teiid is not installed in the AS instance, copy the <code>teiid-&versionNumber;-client.jar</code> into
+ <code><jboss-install>/server/<profile>/lib</code> directory.</para></listitem>
+ <listitem><para>Create a "<datasource name>-ds.xml" file in <code><jboss-install>/server/<profile>/deploy</code>
+ directory. Based on the type of deployment (XA, driver, or local), the contents of the file will be different. See the following sections for more.</para></listitem>
+ </orderedlist>
+
+ <para>Tje data source will then be accessable through the JNDI name specified in the -ds.xml file.</para>
+
+ <sect2 id="as_xa_connection">
+ <title>DataSource Connection</title>
+ <para>Make sure you know the correct DatabaseName, ServerName, Port number and credentials that are specific
+ to your deployment environment. </para>
+ <example>
+ <title>Sample XADataSource in the JBoss AS using the
+ Teiid DataSource class <code>org.teiid.jdbc.TeiidDataSource</code></title>
+
+ <programlisting><![CDATA[<datasources>
+ <xa-datasource>
+ <jndi-name>TEIID-DS</jndi-name>
+ <xa-datasource-class>org.teiid.jdbc.TeiidDataSource</xa-datasource-class>
+ <xa-datasource-property name="DatabaseName">myVDB</xa-datasource-property>
+ <xa-datasource-property name="serverName">localhost</xa-datasource-property>
+ <xa-datasource-property name="portNumber">31000</xa-datasource-property>
+ <xa-datasource-property name="user">admin</xa-datasource-property>
+ <xa-datasource-property name="password">password</xa-datasource-property>
+ <track-connection-by-tx>true</track-connection-by-tx>
+
+ <isSameRM-override-value>false</isSameRM-override-value>
+ <no-tx-separate-pools />
+
+ <!-- pool and other JBoss datasource properties -->
+ <check-valid-connection-sql>SELECT 1</check-valid-connection-sql>
+ <min-pool-size>5</min-pool-size>
+ <max-pool-size>10</max-pool-size>
+ </xa-datasource>
+</datasources>]]></programlisting> </example>
+ </sect2>
+ <sect2 id="as_driver_connection">
+ <title>Driver based connection</title>
+ <para>You can also use Teiid's JDBC driver class <code>org.teiid.jdbc.TeiidDriver</code> to create a data source</para>
+ <programlisting><![CDATA[<datasources>
+ <local-tx-datasource>
+ <jndi-name>TEIID-DS</jndi-name>
+ <connection-url>jdbc:metamatrix:myVDB@mm://localhost:31000</connection-url>
+ <driver-class>org.teiid.jdbc.TeiidDriver</driver-class>
+ <user-name>admin</user-name>
+ <password>teiid</password>
+
+ <!-- pool and other JBoss datasource properties -->
+ <check-valid-connection-sql>SELECT 1</check-valid-connection-sql>
+ <min-pool-size>5</min-pool-size>
+ <max-pool-size>10</max-pool-size>
+ </local-tx-datasource>
+</datasources>]]></programlisting>
+ </sect2>
+ <sect2 id="local_connection">
+ <title>Local JDBC Connection</title>
+ <para>If you are deploying your client application on the same JBoss AS instance as the Teiid runtime is installed, then
+ there is no reason for your client application to open socket based JDBC connection.
+ You can use slightly modified data source configuration to make a "local" connection, where the JDBC API will lookup a local Teiid runtime in the same VM.</para>
+ <example>
+ <title>Local data source</title>
+ <programlisting><![CDATA[<datasources>
+ <xa-datasource>
+ <jndi-name>TEIID-DS</jndi-name>
+ <xa-datasource-class>org.teiid.jdbc.TeiidDataSource</xa-datasource-class>
+ <xa-datasource-property name="DatabaseName">myVDB</xa-datasource-property>
+ <xa-datasource-property name="user">admin</xa-datasource-property>
+ <xa-datasource-property name="password">password</xa-datasource-property>
+ <track-connection-by-tx>true</track-connection-by-tx>
+ <isSameRM-override-value>false</isSameRM-override-value>
+ <no-tx-separate-pools />
+
+ <!-- pool and other JBoss datasource properties -->
+ <check-valid-connection-sql>SELECT 1</check-valid-connection-sql>
+ <min-pool-size>5</min-pool-size>
+ <max-pool-size>10</max-pool-size>
+ </xa-datasource>
+</datasources>]]></programlisting>
+</example>
+ <para>This is essentially the same as the XA configuration, but "ServerName" and "PortNumber" are not specified.</para>
+ </sect2>
+
</sect1>
+
+ <!-- <sect1 id="multiple_hosts">
+ <title>Using Multiple Hosts</title>
+ <para>When Teiid Server is deployed on multiple servers for scalbility, then your application that using
+ Teiid JDBC API can automatically use all Teiid Servers in that group. To enable this feature the client needs
+ to specify multiple host name and port number combinations on the URL connection string. The client will randomly pick any one the Teiid server from the list and will have session
+ established with that server. If the "autoFailover" connection property is set to "true", a failure with the connected server will cause the client to automatically failover
+ to other available servers. Even if autoFailover is not set, when using a managed DataSource based connection, the connection will randomly select a new server instance when it is returned to the pool.</para>
+
+ <example><title>Example URL connection string</title><programlisting><![CDATA[jdbc:teiid:<vdb-name>@mm://host1:31000, host1:31001, host2:31000;version=2]]></programlisting></example>
+
+ <para>Currently when the fail over happens, the user is re-authenticated with the new server. The clustering
+ feature coming up in the Teiid 7.1 release will define how the transparent session fail over will occur with out the
+ re-authentication.</para>
+
+ <para>You can also use this feature to distribute the query load among various avaialble Teiid Servers available.
+ Load balancing happens automatically, when you are using a data source along with connection pooling. Each time a connection is
+ grabbed from the pool, it will randomly select a Teiid Server to distribute the load. Note, that load balacing feature
+ is not avaialble if you are using Teiid Driver to make your connection.</para>
+
+ <para>If you are using DataSource to connect to Teiid Server, use "AlternateServers" property/method to define the failover servers.
+ Check out the Javadoc on the format of the string.</para>
+ </sect1> -->
+
</chapter>
\ No newline at end of file
Modified: trunk/documentation/client-developers-guide/src/main/docbook/en-US/content/jdbc-extensions.xml
===================================================================
--- trunk/documentation/client-developers-guide/src/main/docbook/en-US/content/jdbc-extensions.xml 2010-06-25 19:35:24 UTC (rev 2305)
+++ trunk/documentation/client-developers-guide/src/main/docbook/en-US/content/jdbc-extensions.xml 2010-06-26 03:26:50 UTC (rev 2306)
@@ -6,12 +6,11 @@
<chapter id="jdbc_extensions">
<title>Teiid extensions to the JDBC API</title>
- <sect1>
+ <sect1 id="statement_extensions">
<title>Statement Extensions</title>
- <para>Teiid provides some extensions to the JDBC statement interface. The Teiid Statement extension interface
- is defined by <code>org.teiid.jdbc.TeiidStatement</code>. To use the extension interface, simply
- cast or unwap the statement returned by the Connection to the extension interface.
- The following methods are provided on the extension interface:</para>
+ <para>The Teiid statement extension interface,
+ <code>org.teiid.jdbc.TeiidStatement</code>, provides functionality beyond the JDBC standard. To use the extension interface, simply
+ cast or unwap the statement returned by the Connection. The following methods are provided on the extension interface:</para>
<table frame='all'>
<title>Connection Properties</title>
@@ -27,133 +26,79 @@
<tbody>
<row>
<entry>
- <code>getAnnotations()</code>
+ <code>getAnnotations</code>
</entry>
<entry>
- <code>Get the query engine annotations if the previously executed command used OPTION PLANONLY or OPTION SHOWPLAN</code>
+ <para>Get the query engine annotations if the statement was last executed with SHOWPLAN ON|DEBUG. Each <code>org.teiid.client.plan.Annotation</code> contains a description,
+ a category, a severity, and possibly a resolution of notes recorded during query planning that can be used to understand choices made by the query planner.</para>
</entry>
</row>
<row>
<entry>
- <code>getDebugLog()</code>
+ <code>getDebugLog</code>
</entry>
<entry>
- <code>Get the debug log if the previously executed command used OPTION DEBUG.</code>
+ <para>Get the debug log if the statement was last executed with SHOWPLAN DEBUG.</para>
</entry>
</row>
<row>
<entry>
- <code>getExecutionProperty(String)</code>
+ <code>getExecutionProperty</code>
</entry>
<entry>
- <code>Get the current value of an execution property on this statement object.</code>
+ <para>Get the current value of an execution property on this statement object.</para>
</entry>
</row>
<row>
<entry>
- <code>getPlanDescription()</code>
+ <code>getPlanDescription</code>
</entry>
<entry>
- <code>Get the query plan description if the previously executed command used OPTION PLANONLY or OPTION SHOWPLAN.</code>
+ <para>Get the query plan description if the statement was last executed with SHOWPLAN ON|DEBUG. The plan is a tree made up of <code>org.teiid.client.plan.PlanNode</code> objects.
+ Typically <code>PlanNode.toString()</code> or <code>PlanNode.toXml()</code></para> will be used to convert the plan into a textual form.
</entry>
</row>
-
<row>
<entry>
- <code>getRequestIdentifier()</code>
+ <code>getRequestIdentifier</code>
</entry>
<entry>
- <code>Get an identifier for the last command executed on this statement. If no command has been executed yet, null is returned.</code>
+ <para>Get an identifier for the last command executed on this statement. If no command has been executed yet, null is returned.</para>
</entry>
</row>
<row>
<entry>
- <code>setExecutionProperty(String, String)</code>
+ <code>setExecutionProperty</code>
</entry>
<entry>
- <code>Set the execution property on this statement. Execution properties are described in more detail below.</code>
+ <para>Set the execution property on this statement. See the <link linkend="execution_properties">execution properties</link> section for more information.
+ It is generally preferable to use the <link linkend="set_statement">SET statement</link> unless the execution property applies only to the statement being executed.</para>
</entry>
</row>
<row>
<entry>
- <code>setPayload(Serializable)</code>
+ <code>setPayload</code>
</entry>
<entry>
- <code>Set a per-command payload to pass to translators. Currently
- this only used for sending hints for Oracle
- data source. For security purposes, this is no longer recommended.</code>
+ <para>Set a per-command payload to pass to translators. Currently
+ the only built-in use is for sending hints for Oracle
+ data source.</para>
</entry>
</row>
</tbody>
</tgroup>
- </table>
+ </table>
+ </sect1>
- <sect2>
- <title>Debug Information</title>
-
- <para>Debug information is only returned when using query options.
- These options are set on the session using the
- <code>SET</code> keyword. The available options for debugging purposes are:</para>
-
- <itemizedlist>
- <para>SET Syntax:
- </para>
- <listitem>
- <para>SET parameter value
- </para>
- </listitem>
- </itemizedlist>
- <itemizedlist>
- <para>Syntax Rules:
- </para>
- <listitem>
- <para>Both parameter and value must be simple literals - they cannot contain spaces.</para>
- </listitem>
- <listitem>
- <para>The value is also not treated as an expression and will not be evaluated prior to being set as the parameter value.</para>
- </listitem>
- </itemizedlist>
- <para>The SET command can be used to control planning and execution.
- </para>
- <itemizedlist>
- <listitem>
- <para>SET SHOWPLAN [ON|DEBUG|OFF] - ON returns the query plan along with the results and DEBUG additionally prints the query planner debug information in the log and returns it with the results. Both the plan and the log are available through JDBC API extensions.</para>
- </listitem>
- <listitem>
- <para>SET NOEXEC [ON|OFF] - ON prevents query execution, but parsing and planning will still occur.</para>
- </listitem>
- </itemizedlist>
-
- <para>Use the Statement object to execute the above command to set the required options.</para>
-
- <para><emphasis>getDebugLog()</emphasis> - method can be used to obtain the output from
- the <code>SET SHOWPLAN DEBUG</code> option.</para>
-
- <para><emphasis>getPlanDescription()</emphasis> - method be used to obtain the query plan from SET SHOWPLAN ON.
- The plan is a tree made up of <code>PlanNode</code> objects. The <code>PlanNode</code> interface is
- also in the <code>org.teiid.client.plan</code> package. A PlanNode simply has a set of properties and
- the ability to traverse to a parent node and the child nodes. The property keys in the
- query plan nodes are dependent on the type of plan and the command itself.</para>
-
- <para><emphasis>getAnnotations()</emphasis> - method can be called to obtain any annotations
- objects. Each annotation contains a description,
- a category, a severity, and possibly a resolution of notes recorded during query planning
- that can be used to understand choices made by the query planner. This is also available when SET SHOWPLAN is used.</para>
- </sect2>
-
- <sect2 id="execution_properties">
+ <sect1 id="execution_properties">
<title>Execution Properties</title>
- <para>When your application executes queries, it can specify optional features for each query.
- Your application can use some of these options only in certain contexts. These execution properties
- share a common interface when they are being set. The execution properties are defined by
- constants in the <code>org.teiid.jdbc.ExecutionProperties</code> interface.</para>
- <para>You can get and set the following execution properties to modify the behavior of query execution by calling
- <code>setExecutionProperty</code> method on the <code>org.teiid.jdbc.TeiidStatement</code> class.</para>
+ <para>Execution properties may be set on a per statement basis through the <link linkend="statement_extensions"><code>TeiidStatement</code></link> interface or on the connection via the <link linkend="set_statement">SET statement</link>.
+ For convenience, the property keys are defined by constants on the <code>org.teiid.jdbc.ExecutionProperties</code> interface.</para>
<table frame='all'>
<title>Execution Properties</title>
@@ -162,74 +107,123 @@
<colspec colname='c2' colwidth="2*" />
<thead>
<row>
- <entry>Property Name</entry>
+ <entry>Property Name/String Constant</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry>
- <code>PROP_TXN_AUTO_WRAP</code>
+ <code>PROP_TXN_AUTO_WRAP / autoCommitTxn</code>
</entry>
<entry>
- <para>Determines how transactions are automatically wrapped used with
- commands when auto commit mode is set to “true”. Does not affect transaction
- behavior when auto commit mode is set to “false”. See
- <link linkend="jdbc_transactions">“Transactions with JDBC”</link> for more information.</para>
+ <para>Same as the connection property.</para>
</entry>
</row>
<row>
<entry>
- <code>PROP_PARTIAL_RESULTS_MODE</code>
+ <code>PROP_PARTIAL_RESULTS_MODE / partialResultsMode</code>
</entry>
<entry>
- <para>Determines whether partial results mode is used for this query or not.</para>
+ <para>See the <link linkend="partial_results">partial results</link> section.</para>
</entry>
</row>
<row>
<entry>
- <code>PROP_XML_FORMAT</code>
+ <code>PROP_XML_FORMAT / XMLFormat</code>
</entry>
<entry>
- <para>Determines the formatting of the returned XML documents. The two supported
- formats are XML_TREE_FORMAT, which is a formatted tree with indentation and
- linefeeds or XML_COMPACT_FORMAT which is a compact message with no extra whitespace.
- If no value is set for this property (the default), then the formatting mode
- specified in the XML document model is used.</para>
+ <para>Determines the formatting of XML documents returned by XML document models. See the <link linkend="document_formatting">document formatting</link> section.</para>
</entry>
</row>
<row>
<entry>
- <code>PROP_XML_VALIDATION</code>
+ <code>PROP_XML_VALIDATION / XMLValidation</code>
</entry>
<entry>
- <para>Determines whether xml result documents will be validated
- against their schema before being returned. If schema validation fails,
- a warning message is returned along with the result documents.
- Using validation significantly reduces performance.</para>
+ <para>Determines whether XML documents returned by XML document models will be validated
+ against their schema after processing. See the <link linkend="document_validation">document validation</link> section.</para>
</entry>
</row>
<row>
<entry>
- <code>RESULT_SET_CACHE_MODE</code>
+ <code>RESULT_SET_CACHE_MODE / resultSetCacheMode</code>
</entry>
<entry>
- <para>Result set caching provides caching of complete result sets based on exact query matches.
- Result set caching is not enabled by default. Result set caching needs to enabled on Server too.
- Once result set caching is enabled, all user
- queries will use the result set cache. Additional control is provided in the JDBC
- driver to turn off use of the result set cache on a per-query basis.</para>
+ <para>Same as the connection property.</para>
</entry>
- </row>
+ </row>
+ <row>
+ <entry>
+ <code>SQL_OPTION_SHOWPLAN / SHOWPLAN</code>
+ </entry>
+ <entry>
+ <para>Same as the connection property.</para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <code>NOEXEC / NOEXEC</code>
+ </entry>
+ <entry>
+ <para>Same as the connection property.</para>
+ </entry>
+ </row>
</tbody>
</tgroup>
</table>
- <para>Each of these properties are described in detail in the following sections.</para>
- </sect2>
+ </sect1>
- <sect2>
+ <sect1 id="set_statement">
+ <title>Set Statement</title>
+
+ <para>Execution properties may also be set on the connection by using the SET statement.
+ The SET statement is not yet a language feature of Teiid and is handled only in the JDBC client.</para>
+
+ <itemizedlist>
+ <para>SET Syntax:
+ </para>
+ <listitem>
+ <para>SET parameter value
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <para>Syntax Rules:
+ </para>
+ <listitem>
+ <para>Both parameter and value must be simple literals - they cannot contain spaces.</para>
+ </listitem>
+ <listitem>
+ <para>The value is also not treated as an expression and will not be evaluated prior to being set as the parameter value.</para>
+ </listitem>
+ </itemizedlist>
+ <para>The SET statement is most commonly used to control planning and execution.</para>
+ <itemizedlist>
+ <listitem>
+ <para>SET SHOWPLAN (ON|DEBUG|OFF)</para>
+ </listitem>
+ <listitem>
+ <para>SET NOEXEC (ON|OFF)</para>
+ </listitem>
+ </itemizedlist>
+
+ <example>
+ <title>Enabling Plan Debug</title>
+ <programlisting>Statement s = connection.createStatement();
+s.execute("SET SHOWPLAN DEBUG");
+...
+Statement s1 = connection.createStatement();
+ResultSet rs = s1.executeQuery("select col from table");
+TeiidStatement ts = s1.unwrap(TeiidStatement.class);
+String debugLog = ts.getDebugLog();
+ </programlisting>
+ </example>
+ </sect1>
+
+ <sect1 id="partial_results">
<title>Partial Results Mode</title>
- <para>The Teiid Server supports a “partial results” query mode. This mode changes the behavior of the
+ <para>The Teiid Server supports a "partial results" query mode. This mode changes the behavior of the
query processor so the server returns results even when some data sources are unavailable.</para>
<para>For example, suppose that two data sources exist for different suppliers and your
@@ -240,7 +234,7 @@
the same query in “partial results” query mode, the server returns data from the
running data source and no data from the data source that is down.</para>
- <para>When using “partial results” mode, if a source throws an exception during
+ <para>When using "partial results" mode, if a source throws an exception during
processing it does not cause the user’s query to fail. Rather, that source is treated
as returning no more rows after the failure point.
Most commonly, that source will return 0 rows. </para>
@@ -253,63 +247,34 @@
<para>For each source that is excluded from the query, a warning will be generated
describing the source and the failure. These warnings can be obtained from the
<code>ResultSet.getWarnings()</code> method. This method returns a <code>SQLWarning</code> object but
- in the case of “partial results” warnings, this will be an object of
+ in the case of "partial results" warnings, this will be an object of
type <code>org.teiid.jdbc.PartialResultsWarning</code> class. This class can be
used to obtain a list of all the failed sources by name and to obtain
the specific exception thrown by each resource adaptor. </para>
<para>Below is an example of printing the list of failed sources:</para>
- <programlisting><![CDATA[
- statement.setExecutionProperty(PROP_PARTIAL_RESULTS_MODE, “true”);
- ResultSet results = statement.executeQuery(“SELECT Name FROM Accounts”);
- SQLWarning warning = results.getWarnings();
- if(warning instanceof PartialResultsWarning) {
- PartialResultsWarning partialWarning = (PartialResultsWarning) warning;
- Collection failedConnectors = partialWarning.getFailedConnectors();
- Iterator iter = failedConnectors.iterator();
- while(iter.hasNext()) {
- String connectorName = (String) iter.next();
- SQLException connectorException = partialWarning.getConnectorException(connectorName);
- System.out.println(connectorName + “: “ +ConnectorException.getMessage();
- }
- }
- ]]></programlisting>
- </sect2>
+ <programlisting><![CDATA[statement.setExecutionProperty(ExecutionProperties.PROP_PARTIAL_RESULTS_MODE, “true”);
+ResultSet results = statement.executeQuery(“SELECT Name FROM Accounts”);
+SQLWarning warning = results.getWarnings();
+if(warning instanceof PartialResultsWarning) {
+ PartialResultsWarning partialWarning = (PartialResultsWarning) warning;
+ Collection failedConnectors = partialWarning.getFailedConnectors();
+ Iterator iter = failedConnectors.iterator();
+ while(iter.hasNext()) {
+ String connectorName = (String) iter.next();
+ SQLException connectorException = partialWarning.getConnectorException(connectorName);
+ System.out.println(connectorName + “: “ +ConnectorException.getMessage();
+ }
+}]]></programlisting>
+ </sect1>
- <sect2>
+ <sect1>
<title>XML extensions</title>
- <para>Your application can use a statement object to execute queries that return XML documents.
- The query must specify a valid document in VDB, or should have used SQL XML functions
- to create a XMl document. When your
- application executes an XML query, the Teiid Server returns a ResultSet
- object that has a single column named xml and often a single row, which
- represents a document. Depending on the XML virtual document model,
- multiple documents may be returned</para>
- <sect3>
- <title>XML Streaming</title>
- <para>XML documents are streamed from Teiid Server to the Teiid JDBC API.
- Normally, the document never materializes in the server memory, avoiding potential
- out-of-memory issues and improving the first response time for large documents.
- When using style sheets, schema validation, or XQuery, the whole document
- must be materialized on the server. Therefore memory issues may occur for large documents.
- A result document can be obtained from the JDBC resultset using <code>getSQLXML</code> method.
- </para>
- <para>The document is broken into pieces when being created and streamed.
- The maximum size of each piece in the stream can be configured with the
- <code>"lobChunkSizeInKB"</code> system property on the Server. The default value is 100 KB.
- At any given time, this is the maximum amount of memory that can be held by a particular
- XML query against the system. In heavily loaded or memory-constrained scenarios,
- this value can decrease the amount of memory used. As a side effect, streaming will o
- ccur in smaller pieces, reducing initial document response time while
- increasing full response time (as this is less efficient). Conversely, increasing this value in
- lightly loaded scenarios uses more server memory and increase the initial
- response time but can make the full response time less</para>
- </sect3>
-
- <sect3>
+ <para>The XML extensions apply on to XML resutls from queries to XML document models, and not to XML produced by SQL/XML or read from some other source.</para>
+ <sect2 id="document_formatting">
<title>Document formatting</title>
<para>The PROP_XML_FORMAT execution property can be set to modify the way that
- XML documents are formatted on return. Valid values for the constant
+ XML documents are formatted from XML document models. Valid values for the constant
are defined in the same ExecutionProperties interface:</para>
<orderedlist>
<listitem><para><code>XML_TREE_FORMAT</code> - Returns a version of the XML formatted for display.
@@ -319,37 +284,18 @@
optimal performance. The XML is a single long string without any
unnecessary white space. </para></listitem>
<listitem><para>Not Set - If no format is set, the formatting flag on the
- XML document in the original model is honored.</para></listitem>
+ XML document in the original model is honored. This may produce either the “tree” or “compact”
+ form of the document depending on the document setting.</para></listitem>
</orderedlist>
- <para>The default is to set neither format and to use the formatting flag specified
- in the document model itself. This may produce either the “tree” or “compact”
- form of the document depending on the document setting. </para>
- </sect3>
+ </sect2>
- <sect3>
+ <sect2 id="schema_validation">
<title>Schema validation</title>
<para>The <code>PROP_XML_VALIDATION</code> execution property can be set to indicate that
- the server should validate documents against their schema before returning them
- to the client. If schema validation is on, then the server will throw
- an exception if the document does not conform to the schema it is associated with.
+ the server should validate XML document model documents against their schema before returning them
+ to the client. If schema validation is on, then the server send a SQLWarning if the document does not conform to the schema it is associated with.
Using schema validation will reduce the performance of your XML queries. </para>
-
- <note><para>Schema validation must materialize the entire document on the server to
- validate the schema. Thus, schema validation will prevent streaming of
- XML results and may increase server memory usage.</para></note>
-
- </sect3>
- </sect2>
+ </sect2>
+ </sect1>
- </sect1>
-
- <sect1>
- <title>ResultSet Limitations</title>
- <orderedlist>
- <listitem><para>Supports only <code>FORWARD_ONLY</code> and <code>SCROLL_INSENSITIVE</code> scroll modes. </para></listitem>
- <listitem><para>Supports only <code>READ_ONLY</code> result sets. <code>UPDATABLE</code> ResultSets are not supported.</para></listitem>
- <listitem><para>Returning multiple ResultSets from Procedure execution is not supported.</para></listitem>
- <listitem><para>Closing the ResultSet does not close the Statement object. Statement must be closed to free the resources.</para> </listitem>
- </orderedlist>
- </sect1>
</chapter>
\ No newline at end of file
Modified: trunk/documentation/client-developers-guide/src/main/docbook/en-US/content/jdbc-transactions.xml
===================================================================
--- trunk/documentation/client-developers-guide/src/main/docbook/en-US/content/jdbc-transactions.xml 2010-06-25 19:35:24 UTC (rev 2305)
+++ trunk/documentation/client-developers-guide/src/main/docbook/en-US/content/jdbc-transactions.xml 2010-06-26 03:26:50 UTC (rev 2306)
@@ -10,40 +10,34 @@
by the Teiid Server as XA transactions.
See the <ulink url="http://java.sun.com/javaee/technologies/jta/index.jsp">JTA specification</ulink> for more on XA Transactions.</para>
- <note><para>Even though in client application, Teiid data source is viewed as single source, Teiid
- itself may be integrating data from multiple data sources underneath. So, any transaction under
- Teiid that involves more than single source is performed as a XA transaction. These
- transaction scopes define the user
- application's interaction with Teiid runtime.</para></note>
-
<sect1>
- <title>Using Local Transactions</title>
+ <title>Local Transactions</title>
<para>The Connection class uses the "autoCommit" flag to explicitly control local transactions. By default, autoCommit
- is set to "true", which indicates request level or implicit transaction control. Following is an example of
+ is set to "true", which indicates request level or implicit transaction control. example of
how to use local transactions by setting the autoCommit flag to false.</para>
-
- <programlisting><![CDATA[
- // Set auto commit to false and start a transaction
- connection.setAutoCommit(false);
-
- try {
- // Execute multiple updates
- Statement statement = connection.createStatement();
- statement.executeUpdate(“INSERT INTO Accounts (ID, Name) VALUES (10, ‘Mike’)”);
- statement.executeUpdate(“INSERT INTO Accounts (ID, Name) VALUES (15, ‘John’)”);
- statement.close();
-
- // Commit the transaction
- connection.commit();
-
- } catch(SQLException e) {
- // If an error occurs, rollback the transaction
- connection.rollback();
- }
- ]]></programlisting>
+ <example>
+ <title>Local transaction control using autoCommit</title>
+ <programlisting><![CDATA[// Set auto commit to false and start a transaction
+connection.setAutoCommit(false);
+
+try {
+ // Execute multiple updates
+ Statement statement = connection.createStatement();
+ statement.executeUpdate(“INSERT INTO Accounts (ID, Name) VALUES (10, ‘Mike’)”);
+ statement.executeUpdate(“INSERT INTO Accounts (ID, Name) VALUES (15, ‘John’)”);
+ statement.close();
+
+ // Commit the transaction
+ connection.commit();
+
+} catch(SQLException e) {
+ // If an error occurs, rollback the transaction
+ connection.rollback();
+}]]></programlisting>
+ </example>
<para>This example demonstrates several things:</para>
<orderedlist numeration="arabic">
- <listitem> <para>Setting autoCommit flag to false. This will start a transaction bound to the current JDBC client thread.</para> </listitem>
+ <listitem> <para>Setting autoCommit flag to false. This will start a transaction bound to the connection.</para> </listitem>
<listitem> <para>Executing multiple updates within the context of the transaction.</para> </listitem>
<listitem> <para>When the statements are complete, the transaction is committed by calling commit().</para> </listitem>
<listitem> <para>If an error occurs, the transaction is rolled back using the rollback() method.</para> </listitem>
@@ -66,20 +60,18 @@
should perform no action regardless of the commands being executed. To turn off the use of local transactions,
add this property to the JDBC connection URL</para>
- <programlisting><![CDATA[
- disableLocalTxn=true
- ]]></programlisting>
+ <programlisting><![CDATA[disableLocalTxn=true]]></programlisting>
- <note><para>WARNING:Turning off local transactions can be dangerous and can result in inconsistent
+ <warning><para>Turning off local transactions can be dangerous and can result in inconsistent
results (if reading data) or inconsistent data in data stores (if writing data).
For safety, this mode should be used only if you are certain that
- the calling application does not need local transactions.</para></note>
+ the calling application does not need local transactions.</para></warning>
</sect2>
</sect1>
<sect1>
- <title>Using Request Level Transactions</title>
- <para>Request level transactions will be implicitly used when the request is not in the
+ <title>Request Level Transactions</title>
+ <para>Request level transactions are used when the request is not in the
scope of a global or local transaction, which implies "autoCommit" is "true". In a request
level transaction, your application does not need to explicitly call commit or rollback,
rather every command is assumed to be its own transaction that will automatically
@@ -98,29 +90,30 @@
wrapping off (completely) to maximize performance.
</para>
- <para>you can set your transaction wrapping to one of the following modes.</para>
-
- <programlisting><![CDATA[
- autoCommitTxn=ON|OFF|DETECT
- ]]></programlisting>
-
-
<orderedlist>
+ <para>You can set your transaction wrapping to one of the following modes:</para>
<listitem> <para><emphasis>ON</emphasis>: This mode always wraps every command in a transaction
without checking whether it is required. This is the safest mode.</para></listitem>
<listitem> <para><emphasis>OFF</emphasis>: This mode never automatically wraps a command in a
transaction or check whether it needs to wrap a command. This mode can be dangerous as it will
- allow multi-source updates outside of a transaction without an error. This mode has best
+ allow multiple source updates outside of a transaction without an error. This mode has best
performance for applications that do not use updates or transactions.</para></listitem>
<listitem> <para> <emphasis>DETECT</emphasis>: This mode assumes that the user does not know to execute
- multi-source updates in a transaction. The Teiid Server checks every command to see whether it
- is a multi-source update and wraps it in a transaction. If it is single source then uses
+ multiple source updates in a transaction. The Teiid Server checks every command to see whether it
+ is a multiple source update and wraps it in a transaction. If it is single source then uses
the source level command transaction.</para></listitem>
</orderedlist>
<para>You can set the transaction mode as a property when you establish the Connection or on a
per-query basis using the execution properties. For more information on execution
properties, see the section <link linkend="execution_properties">“Execution Properties”</link></para>
+
+ <sect2>
+ <title>Multiple Insert Batches</title>
+ <para>When issuing an INSERT with a query expression (or the deprecated SELECT INTO), multiple insert batches handled by separate source INSERTS may be processed by the Teiid server.
+ Care should be taken to ensure that targeted sources support XA or that compensating actions are taken in the event of a failure.</para>
+ </sect2>
+
</sect1>
<sect1>
@@ -132,38 +125,36 @@
such as JBoss, WebSphere, or Weblogic, the resulting connection will already be
associated with the current XA transaction. No additional client JDBC code is
necessary to interact with the XA transaction.</para>
+ <example><title>>Manual Usage of XA transactions</title>
+ <programlisting><![CDATA[XAConnection xaConn = null;
+XAResource xaRes = null;
+Connection conn = null;
+Statement stmt = null;
+
+try {
+ xaConn = <XADataSource instance>.getXAConnection();
+ xaRes = xaConn.getXAResource();
+ Xid xid = <new Xid instance>;
+ conn = xaConn.getConnection();
+ stmt = conn.createStatement();
+
+ xaRes.start(xid, XAResource.TMNOFLAGS);
+ stmt.executeUpdate("insert into …");
+ <other statements on this connection or other resources enlisted in this transaction>
+ xaRes.end(xid, XAResource.TMSUCCESS);
+
+ if (xaRes.prepare(xid) == XAResource.XA_OK) {
+ xaRes.commit(xid, false);
+ }
+}
+catch (XAException e) {
+ xaRes.rollback(xid);
+}
+finally {
+ <clean up>
+}]]></programlisting>
+ </example>
- <para>Applications may also utilize Teiid JDBC XA transactions manually, such as shown in the following example:</para>
- <programlisting><![CDATA[
- XAConnection xaConn = null;
- XAResource xaRes = null;
- Connection conn = null;
- Statement stmt = null;
-
- try {
- xaConn = <DataSource instance>.getXAConnection();
- xaRes = xaConn.getXAResource();
- Xid xid = <new Xid instance>;
- conn = xaConn.getConnection();
- stmt = conn.createStatement();
-
- xaRes.start(xid, XAResource.TMNOFLAGS);
- stmt.executeUpdate("insert into …");
- <other statements on this connection or other resources enlisted in this transaction>
- xaRes.end(xid, XAResource.TMSUCCESS);
-
- if (xaRes.prepare(xid) == XAResource.XA_OK) {
- xaRes.commit(xid, false);
- }
- }
- catch (XAException e) {
- xaRes.rollback(xid);
- }
- finally {
- <clean up>
- }
- ]]></programlisting>
-
<para>With the use of global transactions multiple Teiid XAConnections may participate in the
same transaction. It is important to note that the Teiid JDBC XAResource "isSameRM" method only returns
"true", if connections are made to the same server instance in a cluster. If the Teiid connections are to different
@@ -175,21 +166,7 @@
</sect1>
<sect1>
- <title>SELECT INTO Transaction</title>
- <para>The <code>SELECT INTO</code> command, even against a single source, requires a transaction.
- Issuing a <code>SELECT INTO</code> command from within a virtual procedure or from client application requires
- users to do one of the following:</para>
-
- <orderedlist>
- <listitem><para>Use XA connectors with a global, local, or request level (automatic wrapping set
- to DETECT or ON) transaction.</para></listitem>
- <listitem><para>Do not use s global or local transaction and set the automatic
- wrapping to OFF to intentionally avoid using a transaction.</para></listitem>
- </orderedlist>
- </sect1>
-
- <sect1>
- <title>Transaction Restrictions</title>
+ <title>Restrictions</title>
<sect2>
<title>Application Restrictions</title>
<para>The use of global, local, and request level transactions are all mutually exclusive.
@@ -202,8 +179,7 @@
<para>The underlying resource adaptors that represent the EIS system and the EIS system itself must support XA transactions
if they want to participate in distributed XA transaction thru Teiid. If
source system do not support the XA, then it can not particilate in the distributed transaction. However, the source is still
- eligible to participate in data integration usecase with out the XA support, however it will not be part of the on going
- transaction.</para>
+ eligible to participate in data integration with out the XA support</para>
<para>The participation in the XA
transaction is automatically determined based on the resource adaptors XA capability. It is user's repsonsiblity to make sure
Modified: trunk/documentation/client-developers-guide/src/main/docbook/en-US/content/ssl.xml
===================================================================
--- trunk/documentation/client-developers-guide/src/main/docbook/en-US/content/ssl.xml 2010-06-25 19:35:24 UTC (rev 2305)
+++ trunk/documentation/client-developers-guide/src/main/docbook/en-US/content/ssl.xml 2010-06-26 03:26:50 UTC (rev 2306)
@@ -4,34 +4,24 @@
%CustomDTD;
]>
<chapter id="ssl">
- <title>Secure Client Connections using SSL in Teiid</title>
+ <title>SSL Client Connections</title>
<para>This chapter will shows you various security configurations
that can be used with Teiid in securing your data access. Note that data level
- security (<link linkend="entitlements">data entitlements</link>) are explained in separate chapter.</para>
+ security (<link linkend="entitlements">data roles</link>) are explained in separate chapter.</para>
<sect1 id="default_security">
<title>Default Security</title>
- <para>By default, access to Teiid is NOT secure. The login modules are only
- backed by file based authentication, and it also creates well known user
- name and password for easy access for users who want to give a quick try of the Teiid.
- The same is also true for making the connection to the Admin Console application that Teiid provides.
- However, we DO NOT recommend leaving the default security profile as defined when you
- are exposing sensitive data. Check out the "Admin Guide" for instructions as to how to
- configure different login modules to secure the access.</para>
- <para>This chapter is dedicated to discuss about securing the communication channels,
- like the socket connection between your client application and Teiid Server. If you are always using a
- <link linkend="local_connection">local connection</link>, then you may not need to secure the channels as
- cleint and server are in the same VM process.</para>
+ <para>If you are always using a
+ <link linkend="local_connection">local connection</link>, then you do need to secure a channels.</para>
<para>By default all sensitive (non-data) messages between client and server
are encrypted using a <ulink url="http://en.wikipedia.org/wiki/Diffie-Hellman_key_exchange">Diffy-Hellman</ulink>
key that is negotiated per connection. This
encryption is controlled by <code>clientEncryptionEnabled</code> property in <code>JdbcSslConfiguration</code> and
<code>AdminSslConfiguration</code> sections
- in <code><jboss-install>/server/<profile>/deploy/teiid/teiid-jboss-beans.xml</code> file. So, the
- passwords are never sent in the clear channel during session establishment.</para>
+ in <code><jboss-install>/server/<profile>/deploy/teiid/teiid-jboss-beans.xml</code> file.</para>
</sect1>
<sect1 id="ssl_modes">
@@ -66,198 +56,132 @@
<listitem><para>client.keystore - client's private key</para></listitem>
<listitem><para>client.truststore - has client's public key</para></listitem>
</orderedlist>
- <para>or</para>
- <orderedlist>
- <listitem><para>server.keystore - has server's private key, client's pulic key</para></listitem>
- <listitem><para>client.keystore - client's private key, and server's public key</para></listitem>
- </orderedlist>
</sect1>
- <sect1 id="connfigure_server">
- <title>Configuring SSL in Teiid Server</title>
- <para>The Teiid's configuration file
- <code><jboss-install>/server/<profile>/deploy/teiid/teiid-jboss-beans.xml</code>,
- contains the properties to configure SSL. Teiid Server, has two separate connection profiles. One for the JDBC
- connections and the other for the Admin connections. They both have separate SSL configuration
- properties, so besure to know which properties that you are editing.</para>
- <orderedlist>
- <listitem><para>JDBC Connection - The <code>JdbcSslConfiguration</code> bean configuration defines this.</para></listitem>
- <listitem><para>Admin Connection - The <code>AdminSslConfiguration</code> bean configuration defines this.</para></listitem>
- </orderedlist>
- <para>The configurations look same as below sample.</para>
- <programlisting><![CDATA[
- <bean name="JdbcSslConfiguration" class="org.teiid.transport.SSLConfiguration">
- <property name="sslEnabled">false</property>
- <property name="keystoreFilename">cert.keystore</property>
- <property name="keystorePassword">passwd</property>
- <property name="keystoreType">JKS</property>
- <property name="sslProtocol">SSLv3</property>
- <property name="keymanagementAlgorithm">false</property>
- <property name="truststoreFilename">cert.truststore</property>
- <property name="truststorePassword">passwd</property>
- <!-- 1-way, 2-way, anonymous -->
- <property name="authenticationMode">1-way</property>
- <property name="clientEncryptionEnabled">true</property>
- </bean>
- ]]></programlisting>
- <para>The properties are described below.</para>
- <orderedlist>
- <listitem><para>sslEnabled - true|false, SSL usage either turned ON or OFF </para></listitem>
- <listitem><para>sslProtocol- Type of SSL protocol to be used. Default is SSLv3</para></listitem>
- <listitem><para>keystoreType - Keystore type created by the keytool. Default "JKS" is used.</para></listitem>
- <listitem><para>authenticationMode - anonymous|1-way|2-way, Type of SSL mode, see
- above about different <link linkend="ssl_modes">SSL modes</link> available.</para></listitem>
- <listitem><para>keymanagementAlgorithm - Type of key algorithm used. Default
- is based upon the VM, e.g. "SunX509"</para></listitem>
- <listitem><para>keystoreFilename - The file name of the keystore, which contains the
- private key of the Server. This must be available in the classpath of Teiid Server</para></listitem>
- <listitem><para>keystorePassword - password for the keystore.</para></listitem>
- <listitem><para>truststoreFilename - if "authenticationMode" is chosen
- as "2-way", then this property must be provided. This is the truststore that contains the
- public key for the client. Depending upon how you created the keystore and truststores,
- this may be same file as defined under "keystoreFilename" property.</para></listitem>
- <listitem><para>truststorePassword - password for the truststore. </para></listitem>
- </orderedlist>
-
- <para>Once all the properties are defined, make sure the certificates are in the right place, then restart the
- Teiid server to start accepting connections using SSL.</para>
- </sect1>
-
<sect1 id="configure_client">
- <title>Configuring SSL in Teiid's Client</title>
- <para>Configuring any Java client program with SSL involves modifying scripts that
- launch the client programs to define few Java VM system properties using "-Dkey=value" format. The
- following sections define the system properties required for each SSL mode. Note that when
+ <title>Client SSL Settings</title>
+ <para>The
+ following sections define the properties required for each SSL mode. Note that when
connecting to Teiid Server with SSL enabled, you <emphasis>MUST</emphasis> use
the <emphasis>"mms"</emphasis> protocol, instead of "mm" in the JDBC connection URL, for example</para>
- <para> jdbc:teiid:<myVdb>@<emphasis>mms</emphasis>://<host>:<port></para>
+ <para>jdbc:teiid:<myVdb>@<emphasis>mms</emphasis>://<host>:<port></para>
- <para>There are two different sets of properties that a client can configure to enable 1-way or 2-way SSL.</para>
+ <para>There are two different sets of properties that a client can configure to enable 1-way or 2-way SSL.</para>
<sect2>
- <title>Option 1: Java SSL properties (recommended)</title>
+ <title>Option 1: Java SSL properties</title>
<para>These are standard Java defined system properties to configure the SSL under any JVM, Teiid is not
unique in its use of SSL. Provide the following system properties to the client VM process.</para>
- <para>1-way SSL</para>
- <programlisting><![CDATA[
- -Djavax.net.ssl.trustStore=<dir>/server.truststore (required)
- -Djavax.net.ssl.trustStorePassword=<password> (optional)
- -Djavax.net.ssl.keyStoreType (optional)
- ]]></programlisting>
+ <example>
+ <title>1-way SSL</title>
+ <programlisting><![CDATA[-Djavax.net.ssl.trustStore=<dir>/server.truststore (required)
+-Djavax.net.ssl.trustStorePassword=<password> (optional)
+-Djavax.net.ssl.keyStoreType (optional)]]></programlisting>
+ </example>
- <para>2-way SSL</para>
- <programlisting><![CDATA[
- -Djavax.net.ssl.keyStore=<dir>/client.keystore (required)
- -Djavax.net.ssl.keyStrorePassword=<password> (optional)
- -Djavax.net.ssl.trustStore=<dir>/server.truststore (required)
- -Djavax.net.ssl.trustStorePassword=<password> (optioanl)
- -Djavax.net.ssl.keyStroreType=<keystore type> (optional)
- ]]></programlisting>
-
+ <example>
+ <title>2-way SSL</title>
+ <programlisting><![CDATA[-Djavax.net.ssl.keyStore=<dir>/client.keystore (required)
+-Djavax.net.ssl.keyStrorePassword=<password> (optional)
+-Djavax.net.ssl.trustStore=<dir>/server.truststore (required)
+-Djavax.net.ssl.trustStorePassword=<password> (optioanl)
+-Djavax.net.ssl.keyStroreType=<keystore type> (optional)]]></programlisting>
+ </example>
</sect2>
<sect2>
<title>Option 2: Teiid Specific Properties</title>
- <para>Use this option for <emphasis>"anonymous"</emphasis> mode or when the above "javax" based properties
+ <para>Use this option for <emphasis>anonymous</emphasis> mode or when the above "javax" based properties
are already in use by the host process. For example if your client application is a Tomcat
process that is configured for https protocol and the above Java based properties are
already in use, and importing Teiid-specific certificate keys into those https
certificate keystores is not allowed.</para>
- <para>In this scenario, a different set of Teiid-specific SSL properties can be defined inside
- the "teiid-client-settings.properties" file, such that they do not override the VM specific
- SSL properties specified for host process. The "teiid-client-settings.properties" file
- can be found inside the "teiid-{version}-client.jar" file at the root directory location.
+ <para>In this scenario, a different set of Teiid-specific SSL properties can be set as system properties or defined inside
+ the "teiid-client-settings.properties" file. The "teiid-client-settings.properties" file
+ can be found inside the "teiid-&versionNumber;-client.jar" file at the root.
Extract this file, or make a copy, change the property values required for the chosen SSL mode,
and place this file in the client application's classpath before
- the "teiid-{version}-client.jar" file.</para>
+ the "teiid-&versionNumber;-client.jar" file.</para>
- <para>SSL properties inside "teiid-client-settings.properties" are shown below
- (read more property comments inline). Provide the following required properties for different SSL modes.
- </para>
+ <para>SSL properties and definitions inside the "teiid-client-settings.properties" are shown below.</para>
- <programlisting><![CDATA[
- ########################################
- # SSL Settings
- ########################################
-
- #
- # The key store type. Defaults to JKS
- #
-
- org.teiid.ssl.keyStoreType=JKS
-
- #
- # The key store algorithm, defaults to
- # the system property "ssl.TrustManagerFactory.algorithm"
- #
-
- #org.teiid.ssl.algorithm=
-
- #
- # The classpath or filesystem location of the
- # key store.
- #
- # This property is required only if performing 2-way
- # authentication that requires a specific private
- # key.
- #
-
- #org.teiid.ssl.keyStore=
-
- #
- # The key store password (not required)
- #
-
- #org.teiid.ssl.keyStorePassword=
-
- #
- # The classpath or filesystem location of the
- # trust store.
- #
- # This property is required if performing 1-way
- # authentication that requires trust not provided
- # by the system defaults.
- #
- # Set to NONE for anonymous authentication using
- # the TLS_DH_anon_WITH_AES_128_CBC_SHA cipher suite
- #
-
- #org.teiid.ssl.trustStore=
-
- #
- # The trust store password (not required)
- #
-
- #org.teiid.ssl.trustStorePassword=
-
- #
- # The cipher protocol, defaults to SSLv3
- #
-
- org.teiid.ssl.protocol=SSLv3
+ <programlisting><![CDATA[########################################
+# SSL Settings
+########################################
- ]]></programlisting>
+#
+# The key store type. Defaults to JKS
+#
+
+org.teiid.ssl.keyStoreType=JKS
+
+#
+# The key store algorithm, defaults to
+# the system property "ssl.TrustManagerFactory.algorithm"
+#
+
+#org.teiid.ssl.algorithm=
+
+#
+# The classpath or filesystem location of the
+# key store.
+#
+# This property is required only if performing 2-way
+# authentication that requires a specific private
+# key.
+#
+
+#org.teiid.ssl.keyStore=
+
+#
+# The key store password (not required)
+#
+
+#org.teiid.ssl.keyStorePassword=
+
+#
+# The classpath or filesystem location of the
+# trust store.
+#
+# This property is required if performing 1-way
+# authentication that requires trust not provided
+# by the system defaults.
+#
+# Set to NONE for anonymous authentication using
+# the TLS_DH_anon_WITH_AES_128_CBC_SHA cipher suite
+#
+
+#org.teiid.ssl.trustStore=
+
+#
+# The trust store password (not required)
+#
+
+#org.teiid.ssl.trustStorePassword=
+
+#
+# The cipher protocol, defaults to SSLv3
+#
+
+org.teiid.ssl.protocol=SSLv3]]></programlisting>
- <para>1-way SSL</para>
- <programlisting><![CDATA[
- org.teiid.ssl.trustStore=<dir>/server.truststore (required)
- ]]></programlisting>
+ <example>
+ <title>1-way SSL</title>
+ <programlisting><![CDATA[org.teiid.ssl.trustStore=<dir>/server.truststore (required)]]></programlisting>
+ </example>
-
- <para>2-way SSL</para>
- <programlisting><![CDATA[
- org.teiid.ssl.keyStore=<dir>/client.keystore (required)
- org.teiid.ssl.trustStore=<dir>/server.truststore (required)
- ]]></programlisting>
-
- <para>Anonymous</para>
- <programlisting><![CDATA[
- org.teiid.ssl.trustStore=NONE
- ]]></programlisting>
-
+ <example>
+ <title>2-way SSL</title>
+ <programlisting><![CDATA[org.teiid.ssl.keyStore=<dir>/client.keystore (required)
+org.teiid.ssl.trustStore=<dir>/server.truststore (required)]]></programlisting>
+ </example>
+ <example>
+ <title>Anonymous</title>
+ <programlisting><![CDATA[org.teiid.ssl.trustStore=NONE]]></programlisting>
+ </example>
</sect2>
</sect1>
</chapter>
\ No newline at end of file
Modified: trunk/documentation/client-developers-guide/src/main/docbook/en-US/content/using-hibernate.xml
===================================================================
--- trunk/documentation/client-developers-guide/src/main/docbook/en-US/content/using-hibernate.xml 2010-06-25 19:35:24 UTC (rev 2305)
+++ trunk/documentation/client-developers-guide/src/main/docbook/en-US/content/using-hibernate.xml 2010-06-26 03:26:50 UTC (rev 2306)
@@ -10,79 +10,74 @@
<para>Many Hibernate use cases assume a data source has the ability (with proper user permissions)
to process Data Definition Language (DDL) statements like CREATE TABLE and DROP TABLE
as well as Data Manipulation Language (DML) statements like SELECT, UPDATE, INSERT and DELETE.
- Teiid can handle a broad range of DML but does not support DDL.</para>
+ Teiid can handle a broad range of DML, but does not support DDL.</para>
</sect1>
<sect1>
<title>Configuration</title>
- <para>For the most part, interacting with teiid VDBs (Virtual Databases) from Hibernate is no
+ <para>For the most part, interacting with Teiid VDBs (Virtual Databases) from Hibernate is no
different from working with any other type of data source.
First you must place Teiid JDBC API client JAR file and Teiid's hibernate dialect JAR in Hibernate’s classpath.
These files can be found in <code><jboss-install>/server/<profile>/lib</code> directory. </para>
- <orderedlist>
- <listitem><para>teiid-{version}-client.jar</para></listitem>
- <listitem><para>teiid-hibernate-dialect-{version}.jar</para></listitem>
- </orderedlist>
+ <itemizedlist>
+ <listitem><para>teiid-&versionNumber;-client.jar</para></listitem>
+ <listitem><para>teiid-hibernate-dialect-&versionNumber;.jar</para></listitem>
+ </itemizedlist>
- <para>These JAR files has <code>org.teiid.dialect.TeiidDialect</code> and <code>org.teiid.jdbc.TeiidDriver</code> and
+ <para>These JAR files have the <code>org.teiid.dialect.TeiidDialect</code> and <code>org.teiid.jdbc.TeiidDriver</code> and
<code>org.teiid.jdbc.TeiidDataSource</code> classes.</para>
- <para>You then configure the Hibernate configuration file (hibernate.cfg.xml) as follows: Specify the Teiid driver
- class in the "connection.driver_class" property:</para>
+ <orderedlist>
+ <para>You then configure Hibernate (via hibernate.cfg.xml) as follows:</para>
+ <listitem>
+ <para>Specify the Teiid driver
+ class in the "connection.driver_class" property:
- <programlisting><![CDATA[
- <property name="connection.driver_class">
- org.teiid.jdbc.TeiidDriver
- </property>
- ]]></programlisting>
-
+ <programlisting><![CDATA[<property name="connection.driver_class">
+ org.teiid.jdbc.TeiidDriver
+</property>]]></programlisting>
+ </para>
+ </listitem>
+ <listitem>
<para>Specify the URL for the VDB in the "connection.url" property
- (replacing terms in angle brackets with the appropriate values):</para>
+ (replacing terms in angle brackets with the appropriate values):
- <programlisting><![CDATA[
- <property name="connection.url">
- jdbc:metamatrix:<vdb-name>@mm://<host>:<port>;user=<user-name>;password=<password>
- </property>
- ]]></programlisting>
+ <programlisting><![CDATA[<property name="connection.url">
+ jdbc:metamatrix:<vdb-name>@mm://<host>:<port>;user=<user-name>;password=<password>
+</property>]]></programlisting></para>
+ </listitem>
+ <listitem>
+ <para>Specify the Teiid dialect class in the “dialect” property:
- <para>Specify the Teiid dialect class in the “dialect” property:</para>
-
- <programlisting><![CDATA[
- <property name="dialect">
- org.teiid.dialect.TeiidDialect
- </property>
- ]]></programlisting>
-
+ <programlisting><![CDATA[<property name="dialect">
+ org.teiid.dialect.TeiidDialect
+</property>]]></programlisting>
+ </para>
<para>Alternatively, if you put your connection properties in <code>hibernate.properties</code>
instead of <code>hibernate.cfg.xml</code>, they would look like this: </para>
- <programlisting><![CDATA[
- hibernate.connection.driver_class=org.teiid.jdbc.TeiidDriver
- hibernate.connection.url=jdbc:teiid:<vdb-name>@mm://<host>:<port>
- hibernate.connection.username=<user-name>
- hibernate.connection.password=<password>
- hibernate.dialect=org.teiid.dialect.TeiidDialect
- ]]></programlisting>
+ <programlisting><![CDATA[hibernate.connection.driver_class=org.teiid.jdbc.TeiidDriver
+hibernate.connection.url=jdbc:teiid:<vdb-name>@mm://<host>:<port>
+hibernate.connection.username=<user-name>
+hibernate.connection.password=<password>
+hibernate.dialect=org.teiid.dialect.TeiidDialect]]></programlisting>
+ </listitem>
+ </orderedlist>
<para>Note also that since your VDBs will likely contain multiple source and view models
with identical table names, you will need to fully qualify table names
specified in Hibernate mapping files:</para>
- <programlisting><![CDATA[
- <class name="<Class name>" table="<Source/view model name>.[<Category/schema name>.]<Table name>">
- ...
- </class>
- ]]></programlisting>
+ <programlisting><![CDATA[<class name="<Class name>" table="<Source/view model name>.[<schema name>.]<Table name>">
+ ...
+</class>]]></programlisting>
- <para>For Example:</para>
-
- <programlisting><![CDATA[
- <class name="org.teiid.example.Publisher" table="BOOKS.BOOKS.PUBLISHERS">
- ...
- </class>
- ]]></programlisting>
-
+ <example>
+ <title>Example Mapping</title>
+ <programlisting><![CDATA[<class name="org.teiid.example.Publisher" table="BOOKS.BOOKS.PUBLISHERS">
+ ...
+</class>]]></programlisting>
+ </example>
</sect1>
-
</chapter>
\ No newline at end of file
Modified: trunk/documentation/client-developers-guide/src/main/docbook/en-US/main.xml
===================================================================
--- trunk/documentation/client-developers-guide/src/main/docbook/en-US/main.xml 2010-06-25 19:35:24 UTC (rev 2305)
+++ trunk/documentation/client-developers-guide/src/main/docbook/en-US/main.xml 2010-06-26 03:26:50 UTC (rev 2306)
@@ -49,7 +49,6 @@
<xi:include href="content/jdbc-extensions.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="content/jdbc-transactions.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="content/ssl.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="content/entitlements.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="content/using-hibernate.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="content/appendix-unsupported-jdbc.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="content/appendix-selfcerts.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
14 years, 6 months
teiid SVN: r2305 - branches/7.0.x/build/kits/jboss-container.
by teiid-commits@lists.jboss.org
Author: rareddy
Date: 2010-06-25 15:35:24 -0400 (Fri, 25 Jun 2010)
New Revision: 2305
Modified:
branches/7.0.x/build/kits/jboss-container/teiid-releasenotes.html
Log:
TEIID-1133, TEIID-1134: Both are issues or KI in the JBoss-WS and JBoss-Remoting. The document update shows the workaround.
Modified: branches/7.0.x/build/kits/jboss-container/teiid-releasenotes.html
===================================================================
--- branches/7.0.x/build/kits/jboss-container/teiid-releasenotes.html 2010-06-25 16:10:19 UTC (rev 2304)
+++ branches/7.0.x/build/kits/jboss-container/teiid-releasenotes.html 2010-06-25 19:35:24 UTC (rev 2305)
@@ -97,6 +97,26 @@
<li>Parallel execution of source queries within a query plan has been temporarily disabled.
</ul>
+<h4>Salesforce as Source</h4>
+Before Salesforce is used in your data integration project, the below issues need to be resolved.
+<ul>
+ <li>Manually copy the following libraries from the JBOSS_HOME/client directory to the JBOSS_HOME/lib/endorsed directory, so that the JAX-WS 2.0 apis supported by JBossWS are used:
+ <ul>
+ <li>jbossws-native-saaj.jar</li>
+ <li>jbossws-native-jaxrpc.jar</li>
+ <li>jbossws-native-jaxws.jar</li>
+ <li>jbossws-native-jaxws-ext.jar</li>
+ </ul>
+ </li>
+ <li>There is issue with invoking "https" based URL with out specifying the either a keystore or truststore properties with JBoss remoting 2.5.1. Generally you do not need to specify the truststore as a anonymous truststore will be negotiated, however if you fail to supply the following system properties there will be a error message in the log (query will execute even with out the properties). Add these to JBOSS_INSTALL/bin/run.conf file under JAVA_OPTS
+ <ul>
+ <li>-Djava.net.ssl.keyStore=<path-to-truststore></li>
+ <li>-Djava.net.ssl.keyStoreType=<certificate-type></li>
+ <li>-Djava.net.ssl.keyStorePassword=<password></li>
+ </ul>
+ </li>
+</ul>
+
<h2><a name="LibraryUpdates">Thirdparty Library Updates</a></h2>
The following components have been updated:
14 years, 6 months
teiid SVN: r2304 - branches/7.0.x/documentation/reference/src/main/docbook/en-US/content.
by teiid-commits@lists.jboss.org
Author: shawkins
Date: 2010-06-25 12:10:19 -0400 (Fri, 25 Jun 2010)
New Revision: 2304
Modified:
branches/7.0.x/documentation/reference/src/main/docbook/en-US/content/system_schema.xml
Log:
fixing system procedures table
Modified: branches/7.0.x/documentation/reference/src/main/docbook/en-US/content/system_schema.xml
===================================================================
--- branches/7.0.x/documentation/reference/src/main/docbook/en-US/content/system_schema.xml 2010-06-25 16:09:53 UTC (rev 2303)
+++ branches/7.0.x/documentation/reference/src/main/docbook/en-US/content/system_schema.xml 2010-06-25 16:10:19 UTC (rev 2304)
@@ -1551,7 +1551,7 @@
<para>getXMLSchemas</para>
</entry>
<entry>
- <para>string document</para>
+ <para>(string document)</para>
</entry>
<entry>
<para>A single column containing the schemas as clobs.</para>
14 years, 6 months
teiid SVN: r2303 - branches/7.0.x/documentation/reference/src/main/docbook/en-US/content.
by teiid-commits@lists.jboss.org
Author: shawkins
Date: 2010-06-25 12:09:53 -0400 (Fri, 25 Jun 2010)
New Revision: 2303
Modified:
branches/7.0.x/documentation/reference/src/main/docbook/en-US/content/system_schema.xml
Log:
fixing system procedures table
Modified: branches/7.0.x/documentation/reference/src/main/docbook/en-US/content/system_schema.xml
===================================================================
--- branches/7.0.x/documentation/reference/src/main/docbook/en-US/content/system_schema.xml 2010-06-25 15:16:34 UTC (rev 2302)
+++ branches/7.0.x/documentation/reference/src/main/docbook/en-US/content/system_schema.xml 2010-06-25 16:09:53 UTC (rev 2303)
@@ -1518,7 +1518,7 @@
<para>getCharacterVDBResource</para>
</entry>
<entry>
- <para>(string resourcePath)/para>
+ <para>(string resourcePath)</para>
</entry>
<entry>
<para>A single column containing the resource as a clob.</para>
14 years, 6 months
teiid SVN: r2302 - in trunk: api/src/main/java/org/teiid/logging and 40 other directories.
by teiid-commits@lists.jboss.org
Author: shawkins
Date: 2010-06-25 11:16:34 -0400 (Fri, 25 Jun 2010)
New Revision: 2302
Added:
trunk/build/kits/jboss-container/teiid-docs/
trunk/build/kits/jboss-container/teiid-docs/licenses/
trunk/build/kits/jboss-container/teiid-docs/licenses/JDOM-LICENSE.txt
trunk/build/kits/jboss-container/teiid-docs/licenses/LICENSE-lgpl-2.1.txt
trunk/build/kits/jboss-container/teiid-docs/licenses/MPL-1.1.html
trunk/build/kits/jboss-container/teiid-docs/licenses/apache-2.0 - LICENSE-2.0.txt
trunk/build/kits/jboss-container/teiid-releasenotes.html
trunk/documentation/admin-guide/src/main/docbook/en-US/content/appendix-c.xml
trunk/documentation/developer-guide/src/main/docbook/en-US/content/adminapi.xml
trunk/metadata/src/test/java/org/teiid/metadata/index/TestMultipleModelIndexes.java
trunk/metadata/src/test/resources/ZZZ.vdb
Removed:
trunk/build/kits/jboss-container/teiid-docs/licenses/
trunk/build/kits/jboss-container/teiid-docs/licenses/JDOM-LICENSE.txt
trunk/build/kits/jboss-container/teiid-docs/licenses/LICENSE-lgpl-2.1.txt
trunk/build/kits/jboss-container/teiid-docs/licenses/MPL-1.1.html
trunk/build/kits/jboss-container/teiid-docs/licenses/apache-2.0 - LICENSE-2.0.txt
Modified:
trunk/adminshell/src/main/java/org/teiid/adminshell/AdminShell.java
trunk/api/src/main/java/org/teiid/logging/JavaLogger.java
trunk/build/assembly/jboss-container/dist.xml
trunk/build/kits/jboss-container/teiid-examples/simpleclient/README.txt
trunk/client/src/main/java/org/teiid/adminapi/Admin.java
trunk/client/src/main/java/org/teiid/adminapi/AdminFactory.java
trunk/client/src/main/java/org/teiid/jdbc/XAConnectionImpl.java
trunk/client/src/main/java/org/teiid/jdbc/XAResourceImpl.java
trunk/client/src/main/java/org/teiid/net/ServerConnection.java
trunk/client/src/main/java/org/teiid/net/socket/SocketServerConnection.java
trunk/client/src/test/java/org/teiid/jdbc/TestXAConnection.java
trunk/common-core/src/main/java/org/teiid/core/types/XMLType.java
trunk/common-core/src/main/java/org/teiid/core/types/basic/FloatingNumberToBigDecimalTransform.java
trunk/documentation/admin-guide/src/main/docbook/en-US/admin_guide.xml
trunk/documentation/admin-guide/src/main/docbook/en-US/content/vdb-deployment.xml
trunk/documentation/developer-guide/pom.xml
trunk/documentation/developer-guide/src/main/docbook/en-US/main.xml
trunk/documentation/quick-start-example/pom.xml
trunk/documentation/reference/src/main/docbook/en-US/content/scalar_functions.xml
trunk/documentation/reference/src/main/docbook/en-US/content/sql_support.xml
trunk/documentation/reference/src/main/docbook/en-US/content/system_schema.xml
trunk/documentation/reference/src/main/docbook/en-US/content/translators.xml
trunk/engine/src/main/java/org/teiid/common/buffer/FileStore.java
trunk/engine/src/main/java/org/teiid/dqp/internal/datamgr/impl/ConnectorWorkItem.java
trunk/engine/src/main/java/org/teiid/dqp/internal/process/RequestWorkItem.java
trunk/engine/src/main/java/org/teiid/query/function/FunctionMethods.java
trunk/engine/src/main/java/org/teiid/query/function/source/XMLSystemFunctions.java
trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/CriteriaCapabilityValidatorVisitor.java
trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleCollapseSource.java
trunk/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java
trunk/engine/src/test/java/org/teiid/common/buffer/impl/TestFileStorageManager.java
trunk/engine/src/test/java/org/teiid/common/queue/TestStatsCapturingWorkManager.java
trunk/engine/src/test/java/org/teiid/query/function/TestFunctionLibrary.java
trunk/engine/src/test/java/org/teiid/query/optimizer/TestAggregatePushdown.java
trunk/engine/src/test/java/org/teiid/query/optimizer/TestInlineView.java
trunk/engine/src/test/java/org/teiid/query/optimizer/TestRuleMergeVirtual.java
trunk/engine/src/test/java/org/teiid/query/processor/TestAggregateProcessing.java
trunk/engine/src/test/java/org/teiid/query/processor/eval/TestExpressionEvaluator.java
trunk/engine/src/test/java/org/teiid/query/resolver/TestFunctionResolving.java
trunk/jboss-integration/src/main/java/org/teiid/adminapi/jboss/Admin.java
trunk/metadata/src/main/java/org/teiid/metadata/index/IndexMetadataFactory.java
trunk/metadata/src/main/java/org/teiid/metadata/index/RecordFactory.java
trunk/runtime/src/main/java/org/teiid/transport/LocalServerConnection.java
trunk/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumns.expected
trunk/test-integration/db/src/test/java/org/teiid/adminapi/jboss/TestConnectorBindings.java
Log:
forward merge or 7.0.x to 7.1 (trunk)
Modified: trunk/adminshell/src/main/java/org/teiid/adminshell/AdminShell.java
===================================================================
--- trunk/adminshell/src/main/java/org/teiid/adminshell/AdminShell.java 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/adminshell/src/main/java/org/teiid/adminshell/AdminShell.java 2010-06-25 15:16:34 UTC (rev 2302)
@@ -310,15 +310,6 @@
ObjectConverterUtil.write(contents, fileName);
}
- @Doc(text = "Export a VDB to file")
- public static void exportVDB(
- @Doc(text = "vdb name") String vdbName,
- @Doc(text = "vdb version") int vdbVersion,
- @Doc(text = "file name") String fileName) throws AdminException, IOException{
- InputStream contents = getAdmin().exportVDB(vdbName, vdbVersion);
- writeFile(vdbName, fileName, contents);
- }
-
@Doc(text = "Deploy a VDB from file")
public static void deployVDB(
@Doc(text = "file name") String vdbFile) throws AdminException, FileNotFoundException {
Modified: trunk/api/src/main/java/org/teiid/logging/JavaLogger.java
===================================================================
--- trunk/api/src/main/java/org/teiid/logging/JavaLogger.java 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/api/src/main/java/org/teiid/logging/JavaLogger.java 2010-06-25 15:16:34 UTC (rev 2302)
@@ -49,7 +49,7 @@
Logger logger = Logger.getLogger(context);
Level javaLevel = convertLevel(level);
- logger.log(javaLevel, msg.toString(), t);
+ logger.log(javaLevel, msg != null ? msg.toString() : null, t);
}
public Level convertLevel(int level) {
Modified: trunk/build/assembly/jboss-container/dist.xml
===================================================================
--- trunk/build/assembly/jboss-container/dist.xml 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/build/assembly/jboss-container/dist.xml 2010-06-25 15:16:34 UTC (rev 2302)
@@ -57,11 +57,11 @@
<outputDirectory>teiid-docs</outputDirectory>
</file>
<file>
- <source>target/distribution/teiid-${version}-docs/quick-start-example/en-US/pdf/quick_start_example.pdf</source>
+ <source>target/distribution/teiid-${version}-docs/quick-start-example/en-US/pdf/teiid_quick_start_example.pdf</source>
<outputDirectory>teiid-docs</outputDirectory>
</file>
<file>
- <source>target/distribution/teiid-${version}-docs/developer-guide/en-US/pdf/developer_guide.pdf</source>
+ <source>target/distribution/teiid-${version}-docs/developer-guide/en-US/pdf/teiid_developer_guide.pdf</source>
<outputDirectory>teiid-docs</outputDirectory>
</file>
<file>
Copied: trunk/build/kits/jboss-container/teiid-docs (from rev 2301, branches/7.0.x/build/kits/jboss-container/teiid-docs)
Copied: trunk/build/kits/jboss-container/teiid-docs/licenses (from rev 2301, branches/7.0.x/build/kits/jboss-container/teiid-docs/licenses)
Deleted: trunk/build/kits/jboss-container/teiid-docs/licenses/JDOM-LICENSE.txt
===================================================================
--- branches/7.0.x/build/kits/jboss-container/teiid-docs/licenses/JDOM-LICENSE.txt 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/build/kits/jboss-container/teiid-docs/licenses/JDOM-LICENSE.txt 2010-06-25 15:16:34 UTC (rev 2302)
@@ -1,56 +0,0 @@
-/*--
-
- $Id: LICENSE.txt,v 1.11 2004/02/06 09:32:57 jhunter Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- 1. Redistributions of source code must retain the above copyright
- notice, this list of conditions, and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions, and the disclaimer that follows
- these conditions in the documentation and/or other materials
- provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
- derived from this software without prior written permission. For
- written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
- may "JDOM" appear in their name, without prior written permission
- from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
- "This product includes software developed by the
- JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- SUCH DAMAGE.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>. For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
Copied: trunk/build/kits/jboss-container/teiid-docs/licenses/JDOM-LICENSE.txt (from rev 2301, branches/7.0.x/build/kits/jboss-container/teiid-docs/licenses/JDOM-LICENSE.txt)
===================================================================
--- trunk/build/kits/jboss-container/teiid-docs/licenses/JDOM-LICENSE.txt (rev 0)
+++ trunk/build/kits/jboss-container/teiid-docs/licenses/JDOM-LICENSE.txt 2010-06-25 15:16:34 UTC (rev 2302)
@@ -0,0 +1,56 @@
+/*--
+
+ $Id: LICENSE.txt,v 1.11 2004/02/06 09:32:57 jhunter Exp $
+
+ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions, and the disclaimer that follows
+ these conditions in the documentation and/or other materials
+ provided with the distribution.
+
+ 3. The name "JDOM" must not be used to endorse or promote products
+ derived from this software without prior written permission. For
+ written permission, please contact <request_AT_jdom_DOT_org>.
+
+ 4. Products derived from this software may not be called "JDOM", nor
+ may "JDOM" appear in their name, without prior written permission
+ from the JDOM Project Management <request_AT_jdom_DOT_org>.
+
+ In addition, we request (but do not require) that you include in the
+ end-user documentation provided with the redistribution and/or in the
+ software itself an acknowledgement equivalent to the following:
+ "This product includes software developed by the
+ JDOM Project (http://www.jdom.org/)."
+ Alternatively, the acknowledgment may be graphical using the logos
+ available at http://www.jdom.org/images/logos.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+
+ This software consists of voluntary contributions made by many
+ individuals on behalf of the JDOM Project and was originally
+ created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
+ Brett McLaughlin <brett_AT_jdom_DOT_org>. For more information
+ on the JDOM Project, please see <http://www.jdom.org/>.
+
+ */
+
Deleted: trunk/build/kits/jboss-container/teiid-docs/licenses/LICENSE-lgpl-2.1.txt
===================================================================
--- branches/7.0.x/build/kits/jboss-container/teiid-docs/licenses/LICENSE-lgpl-2.1.txt 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/build/kits/jboss-container/teiid-docs/licenses/LICENSE-lgpl-2.1.txt 2010-06-25 15:16:34 UTC (rev 2302)
@@ -1,504 +0,0 @@
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL. It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
- This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it. You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
- When we speak of free software, we are referring to freedom of use,
-not price. Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
- To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights. These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
- For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you. You must make sure that they, too, receive or can get the source
-code. If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it. And you must show them these terms so they know their rights.
-
- We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
- To protect each distributor, we want to make it very clear that
-there is no warranty for the free library. Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
- Finally, software patents pose a constant threat to the existence of
-any free program. We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder. Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
- Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License. This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License. We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
- When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library. The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom. The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
- We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License. It also provides other free software developers Less
-of an advantage over competing non-free programs. These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries. However, the Lesser license provides advantages in certain
-special circumstances.
-
- For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard. To achieve this, non-free programs must be
-allowed to use the library. A more frequent case is that a free
-library does the same job as widely used non-free libraries. In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
- In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software. For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
- Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
- The precise terms and conditions for copying, distribution and
-modification follow. Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
- GNU LESSER GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
- A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
-which has been distributed under these terms. A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language. (Hereinafter, translation is
-included without limitation in the term "modification".)
-
- "Source code" for a work means the preferred form of the work for
-making modifications to it. For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
- Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it). Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
- 1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
- You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
- 2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in
-these notices.
-
- Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
- If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library". Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library". The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library. The
-threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work. (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
- 6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License. Also, you must do one
-of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- Library will not necessarily be able to recompile the application
- to use the modified definitions.)
-
- b) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (1) uses at run time a
- copy of the library already present on the user's computer system,
- rather than copying library functions into the executable, and (2)
- will operate properly with a modified version of the library, if
- the user installs one, as long as the modified version is
- interface-compatible with the version that the work was made with.
-
- c) Accompany the work with a written offer, valid for at
- least three years, to give the same user the materials
- specified in Subsection 6a, above, for a charge no more
- than the cost of performing this distribution.
-
- d) If distribution of the work is made by offering access to copy
- from a designated place, offer equivalent access to copy the above
- specified materials from the same place.
-
- e) Verify that the user has already received a copy of these
- materials or that you have already sent this user a copy.
-
- For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it. However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
- It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system. Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
- 7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License. Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License. However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
- 9. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Library or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
- 11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all. For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded. In such case, this License incorporates the limitation as if
-written in the body of this License.
-
- 13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation. If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
- 14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission. For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this. Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
- NO WARRANTY
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Libraries
-
- If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change. You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
- To apply these terms, attach the following notices to the library. It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
- <one line to give the library's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the
- library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
- <signature of Ty Coon>, 1 April 1990
- Ty Coon, President of Vice
-
-That's all there is to it!
-
-
Copied: trunk/build/kits/jboss-container/teiid-docs/licenses/LICENSE-lgpl-2.1.txt (from rev 2301, branches/7.0.x/build/kits/jboss-container/teiid-docs/licenses/LICENSE-lgpl-2.1.txt)
===================================================================
--- trunk/build/kits/jboss-container/teiid-docs/licenses/LICENSE-lgpl-2.1.txt (rev 0)
+++ trunk/build/kits/jboss-container/teiid-docs/licenses/LICENSE-lgpl-2.1.txt 2010-06-25 15:16:34 UTC (rev 2302)
@@ -0,0 +1,504 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+ When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard. To achieve this, non-free programs must be
+allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
+
+
Deleted: trunk/build/kits/jboss-container/teiid-docs/licenses/MPL-1.1.html
===================================================================
--- branches/7.0.x/build/kits/jboss-container/teiid-docs/licenses/MPL-1.1.html 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/build/kits/jboss-container/teiid-docs/licenses/MPL-1.1.html 2010-06-25 15:16:34 UTC (rev 2302)
@@ -1,389 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html lang="en"><head>
-<meta http-equiv="content-type" content="text/html; charset=UTF-8">
-
-
- <title>Mozilla Public License version 1.1</title>
- <style type="text/css">
- .very-strong{
- text-transform:uppercase;
- }
- dt{
- font-weight:bold;
- }
- dd p{
- margin:0;
- }
- </style>
-</head><body>
- <p><small>(<a href="http://www.mozilla.org/MPL/MPL-1.1.txt">Plain text version</a>)</small></p>
- <h1>Mozilla Public License Version 1.1</h1>
- <h2 id="section-1">1. Definitions.</h2>
- <dl>
- <dt id="section-1.0.1">1.0.1. "Commercial Use"
- </dt><dd>means distribution or otherwise making the Covered Code available to a third party.
- </dd><dt id="section-1.1">1.1. "Contributor"
- </dt><dd>means each entity that creates or contributes to the creation of Modifications.
- </dd><dt id="section-1.2">1.2. "Contributor Version"
- </dt><dd>means the combination of the Original Code, prior Modifications used by a Contributor,
- and the Modifications made by that particular Contributor.
- </dd><dt id="section-1.3">1.3. "Covered Code"
- </dt><dd>means the Original Code or Modifications or the combination of the Original Code and
- Modifications, in each case including portions thereof.
- </dd><dt id="section-1.4">1.4. "Electronic Distribution Mechanism"
- </dt><dd>means a mechanism generally accepted in the software development community for the
- electronic transfer of data.
- </dd><dt id="section-1.5">1.5. "Executable"
- </dt><dd>means Covered Code in any form other than Source Code.
- </dd><dt id="section-1.6">1.6. "Initial Developer"
- </dt><dd>means the individual or entity identified as the Initial Developer in the Source Code
- notice required by <a href="#exhibit-a">Exhibit A</a>.
- </dd><dt id="section-1.7">1.7. "Larger Work"
- </dt><dd>means a work which combines Covered Code or portions thereof with code not governed
- by the terms of this License.
- </dd><dt id="section-1.8">1.8. "License"
- </dt><dd>means this document.
- </dd><dt id="section-1.8.1">1.8.1. "Licensable"
- </dt><dd>means having the right to grant, to the maximum extent possible, whether at the
- time of the initial grant or subsequently acquired, any and all of the rights
- conveyed herein.
- </dd><dt id="section-1.9">1.9. "Modifications"
- </dt><dd>
- <p>means any addition to or deletion from the substance or structure of either the
- Original Code or any previous Modifications. When Covered Code is released as a
- series of files, a Modification is:
- </p><ol type="a">
- <li id="section-1.9-a">Any addition to or deletion from the contents of a file
- containing Original Code or previous Modifications.
- </li><li id="section-1.9-b">Any new file that contains any part of the Original Code or
- previous Modifications.
- </li></ol>
- </dd><dt id="section-1.10">1.10. "Original Code"
- </dt><dd>means Source Code of computer software code which is described in the Source Code
- notice required by <a href="#exhibit-a">Exhibit A</a> as Original Code, and which,
- at the time of its release under this License is not already Covered Code governed
- by this License.
- </dd><dt id="section-1.10.1">1.10.1. "Patent Claims"
- </dt><dd>means any patent claim(s), now owned or hereafter acquired, including without
- limitation, method, process, and apparatus claims, in any patent Licensable by
- grantor.
- </dd><dt id="section-1.11">1.11. "Source Code"
- </dt><dd>means the preferred form of the Covered Code for making modifications to it,
- including all modules it contains, plus any associated interface definition files,
- scripts used to control compilation and installation of an Executable, or source
- code differential comparisons against either the Original Code or another well known,
- available Covered Code of the Contributor's choice. The Source Code can be in a
- compressed or archival form, provided the appropriate decompression or de-archiving
- software is widely available for no charge.
- </dd><dt id="section-1.12">1.12. "You" (or "Your")
- </dt><dd>means an individual or a legal entity exercising rights under, and complying with
- all of the terms of, this License or a future version of this License issued under
- <a href="#section-6.1">Section 6.1.</a> For legal entities, "You" includes any entity
- which controls, is controlled by, or is under common control with You. For purposes of
- this definition, "control" means (a) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or otherwise, or (b)
- ownership of more than fifty percent (50%) of the outstanding shares or beneficial
- ownership of such entity.
- </dd></dl>
- <h2 id="section-2">2. Source Code License.</h2>
- <h3 id="section-2.1">2.1. The Initial Developer Grant.</h3>
- <p>The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive
- license, subject to third party intellectual property claims:
- </p><ol type="a">
- <li id="section-2.1-a">under intellectual property rights (other than patent or
- trademark) Licensable by Initial Developer to use, reproduce, modify, display, perform,
- sublicense and distribute the Original Code (or portions thereof) with or without
- Modifications, and/or as part of a Larger Work; and
- </li><li id="section-2.1-b">under Patents Claims infringed by the making, using or selling
- of Original Code, to make, have made, use, practice, sell, and offer for sale, and/or
- otherwise dispose of the Original Code (or portions thereof).
- </li><li id="section-2.1-c">the licenses granted in this Section 2.1
- (<a href="#section-2.1-a">a</a>) and (<a href="#section-2.1-b">b</a>) are effective on
- the date Initial Developer first distributes Original Code under the terms of this
- License.
- </li><li id="section-2.1-d">Notwithstanding Section 2.1 (<a href="#section-2.1-b">b</a>)
- above, no patent license is granted: 1) for code that You delete from the Original Code;
- 2) separate from the Original Code; or 3) for infringements caused by: i) the
- modification of the Original Code or ii) the combination of the Original Code with other
- software or devices.
- </li></ol>
- <h3 id="section-2.2">2.2. Contributor Grant.</h3>
- <p>Subject to third party intellectual property claims, each Contributor hereby grants You
- a world-wide, royalty-free, non-exclusive license
- </p><ol type="a">
- <li id="section-2.2-a">under intellectual property rights (other than patent or trademark)
- Licensable by Contributor, to use, reproduce, modify, display, perform, sublicense and
- distribute the Modifications created by such Contributor (or portions thereof) either on
- an unmodified basis, with other Modifications, as Covered Code and/or as part of a Larger
- Work; and
- </li><li id="section-2.2-b">under Patent Claims infringed by the making, using, or selling of
- Modifications made by that Contributor either alone and/or in combination with its
- Contributor Version (or portions of such combination), to make, use, sell, offer for
- sale, have made, and/or otherwise dispose of: 1) Modifications made by that Contributor
- (or portions thereof); and 2) the combination of Modifications made by that Contributor
- with its Contributor Version (or portions of such combination).
- </li><li id="section-2.2-c">the licenses granted in Sections 2.2
- (<a href="#section-2.2-a">a</a>) and 2.2 (<a href="#section-2.2-b">b</a>) are effective
- on the date Contributor first makes Commercial Use of the Covered Code.
- </li><li id="section-2.2-d">Notwithstanding Section 2.2 (<a href="#section-2.2-b">b</a>)
- above, no patent license is granted: 1) for any code that Contributor has deleted from
- the Contributor Version; 2) separate from the Contributor Version; 3) for infringements
- caused by: i) third party modifications of Contributor Version or ii) the combination of
- Modifications made by that Contributor with other software (except as part of the
- Contributor Version) or other devices; or 4) under Patent Claims infringed by Covered Code
- in the absence of Modifications made by that Contributor.
- </li></ol>
- <h2 id="section-3">3. Distribution Obligations.</h2>
- <h3 id="section-3.1">3.1. Application of License.</h3>
- <p>The Modifications which You create or to which You contribute are governed by the terms
- of this License, including without limitation Section <a href="#section-2.2">2.2</a>. The
- Source Code version of Covered Code may be distributed only under the terms of this License
- or a future version of this License released under Section <a href="#section-6.1">6.1</a>,
- and You must include a copy of this License with every copy of the Source Code You
- distribute. You may not offer or impose any terms on any Source Code version that alters or
- restricts the applicable version of this License or the recipients' rights hereunder.
- However, You may include an additional document offering the additional rights described in
- Section <a href="#section-3.5">3.5</a>.
- </p><h3 id="section-3.2">3.2. Availability of Source Code.</h3>
- <p>Any Modification which You create or to which You contribute must be made available in
- Source Code form under the terms of this License either on the same media as an Executable
- version or via an accepted Electronic Distribution Mechanism to anyone to whom you made an
- Executable version available; and if made available via Electronic Distribution Mechanism,
- must remain available for at least twelve (12) months after the date it initially became
- available, or at least six (6) months after a subsequent version of that particular
- Modification has been made available to such recipients. You are responsible for ensuring
- that the Source Code version remains available even if the Electronic Distribution
- Mechanism is maintained by a third party.
- </p><h3 id="section-3.3">3.3. Description of Modifications.</h3>
- <p>You must cause all Covered Code to which You contribute to contain a file documenting the
- changes You made to create that Covered Code and the date of any change. You must include a
- prominent statement that the Modification is derived, directly or indirectly, from Original
- Code provided by the Initial Developer and including the name of the Initial Developer in
- (a) the Source Code, and (b) in any notice in an Executable version or related documentation
- in which You describe the origin or ownership of the Covered Code.
- </p><h3 id="section-3.4">3.4. Intellectual Property Matters</h3>
- <h4 id="section-3.4-a">(a) Third Party Claims</h4>
- <p>If Contributor has knowledge that a license under a third party's intellectual property
- rights is required to exercise the rights granted by such Contributor under Sections
- <a href="#section-2.1">2.1</a> or <a href="#section-2.2">2.2</a>, Contributor must include a
- text file with the Source Code distribution titled "LEGAL" which describes the claim and the
- party making the claim in sufficient detail that a recipient will know whom to contact. If
- Contributor obtains such knowledge after the Modification is made available as described in
- Section <a href="#section-3.2">3.2</a>, Contributor shall promptly modify the LEGAL file in
- all copies Contributor makes available thereafter and shall take other steps (such as
- notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who
- received the Covered Code that new knowledge has been obtained.
- </p><h4 id="section-3.4-b">(b) Contributor APIs</h4>
- <p>If Contributor's Modifications include an application programming interface and Contributor
- has knowledge of patent licenses which are reasonably necessary to implement that
- <abbr>API</abbr>, Contributor must also include this information in the
- <strong class="very-strong">legal</strong> file.
- </p><h4 id="section-3.4-c">(c) Representations.</h4>
- <p>Contributor represents that, except as disclosed pursuant to Section 3.4
- (<a href="#section-3.4-a">a</a>) above, Contributor believes that Contributor's Modifications
- are Contributor's original creation(s) and/or Contributor has sufficient rights to grant the
- rights conveyed by this License.
- </p><h3 id="section-3.5">3.5. Required Notices.</h3>
- <p>You must duplicate the notice in <a href="#exhibit-a">Exhibit A</a> in each file of the
- Source Code. If it is not possible to put such notice in a particular Source Code file due to
- its structure, then You must include such notice in a location (such as a relevant directory)
- where a user would be likely to look for such a notice. If You created one or more
- Modification(s) You may add your name as a Contributor to the notice described in
- <a href="#exhibit-a">Exhibit A</a>. You must also duplicate this License in any documentation
- for the Source Code where You describe recipients' rights or ownership rights relating to
- Covered Code. You may choose to offer, and to charge a fee for, warranty, support, indemnity
- or liability obligations to one or more recipients of Covered Code. However, You may do so
- only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You
- must make it absolutely clear than any such warranty, support, indemnity or liability
- obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer
- and every Contributor for any liability incurred by the Initial Developer or such Contributor
- as a result of warranty, support, indemnity or liability terms You offer.
- </p><h3 id="section-3.6">3.6. Distribution of Executable Versions.</h3>
- <p>You may distribute Covered Code in Executable form only if the requirements of Sections
- <a href="#section-3.1">3.1</a>, <a href="#section-3.2">3.2</a>,
- <a href="#section-3.3">3.3</a>, <a href="#section-3.4">3.4</a> and
- <a href="#section-3.5">3.5</a> have been met for that Covered Code, and if You include a
- notice stating that the Source Code version of the Covered Code is available under the terms
- of this License, including a description of how and where You have fulfilled the obligations
- of Section <a href="#section-3.2">3.2</a>. The notice must be conspicuously included in any
- notice in an Executable version, related documentation or collateral in which You describe
- recipients' rights relating to the Covered Code. You may distribute the Executable version of
- Covered Code or ownership rights under a license of Your choice, which may contain terms
- different from this License, provided that You are in compliance with the terms of this
- License and that the license for the Executable version does not attempt to limit or alter the
- recipient's rights in the Source Code version from the rights set forth in this License. If
- You distribute the Executable version under a different license You must make it absolutely
- clear that any terms which differ from this License are offered by You alone, not by the
- Initial Developer or any Contributor. You hereby agree to indemnify the Initial Developer and
- every Contributor for any liability incurred by the Initial Developer or such Contributor as
- a result of any such terms You offer.
- </p><h3 id="section-3.7">3.7. Larger Works.</h3>
- <p>You may create a Larger Work by combining Covered Code with other code not governed by the
- terms of this License and distribute the Larger Work as a single product. In such a case,
- You must make sure the requirements of this License are fulfilled for the Covered Code.
- </p><h2 id="section-4">4. Inability to Comply Due to Statute or Regulation.</h2>
- <p>If it is impossible for You to comply with any of the terms of this License with respect to
- some or all of the Covered Code due to statute, judicial order, or regulation then You must:
- (a) comply with the terms of this License to the maximum extent possible; and (b) describe
- the limitations and the code they affect. Such description must be included in the
- <strong class="very-strong">legal</strong> file described in Section
- <a href="#section-3.4">3.4</a> and must be included with all distributions of the Source Code.
- Except to the extent prohibited by statute or regulation, such description must be
- sufficiently detailed for a recipient of ordinary skill to be able to understand it.
- </p><h2 id="section-5">5. Application of this License.</h2>
- <p>This License applies to code to which the Initial Developer has attached the notice in
- <a href="#exhibit-a">Exhibit A</a> and to related Covered Code.
- </p><h2 id="section-6">6. Versions of the License.</h2>
- <h3 id="section-6.1">6.1. New Versions</h3>
- <p>Netscape Communications Corporation ("Netscape") may publish revised and/or new versions
- of the License from time to time. Each version will be given a distinguishing version number.
- </p><h3 id="section-6.2">6.2. Effect of New Versions</h3>
- <p>Once Covered Code has been published under a particular version of the License, You may
- always continue to use it under the terms of that version. You may also choose to use such
- Covered Code under the terms of any subsequent version of the License published by Netscape.
- No one other than Netscape has the right to modify the terms applicable to Covered Code
- created under this License.
- </p><h3 id="section-6.3">6.3. Derivative Works</h3>
- <p>If You create or use a modified version of this License (which you may only do in order to
- apply it to code which is not already Covered Code governed by this License), You must (a)
- rename Your license so that the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", "MPL",
- "NPL" or any confusingly similar phrase do not appear in your license (except to note that
- your license differs from this License) and (b) otherwise make it clear that Your version of
- the license contains terms which differ from the Mozilla Public License and Netscape Public
- License. (Filling in the name of the Initial Developer, Original Code or Contributor in the
- notice described in <a href="#exhibit-a">Exhibit A</a> shall not of themselves be deemed to
- be modifications of this License.)
- </p><h2 id="section-7">7. <strong class="very-strong">Disclaimer of warranty</strong></h2>
- <p><strong class="very-strong">Covered code is provided under this license on an "as is"
- basis, without warranty of any kind, either expressed or implied, including, without
- limitation, warranties that the covered code is free of defects, merchantable, fit for a
- particular purpose or non-infringing. The entire risk as to the quality and performance of
- the covered code is with you. Should any covered code prove defective in any respect, you
- (not the initial developer or any other contributor) assume the cost of any necessary
- servicing, repair or correction. This disclaimer of warranty constitutes an essential part
- of this license. No use of any covered code is authorized hereunder except under this
- disclaimer.</strong>
- </p><h2 id="section-8">8. Termination</h2>
- <p id="section-8.1">8.1. This License and the rights granted hereunder will terminate
- automatically if You fail to comply with terms herein and fail to cure such breach
- within 30 days of becoming aware of the breach. All sublicenses to the Covered Code which
- are properly granted shall survive any termination of this License. Provisions which, by
- their nature, must remain in effect beyond the termination of this License shall survive.
- </p><p id="section-8.2">8.2. If You initiate litigation by asserting a patent infringement
- claim (excluding declatory judgment actions) against Initial Developer or a Contributor
- (the Initial Developer or Contributor against whom You file such action is referred to
- as "Participant") alleging that:
- </p><ol type="a">
- <li id="section-8.2-a">such Participant's Contributor Version directly or indirectly
- infringes any patent, then any and all rights granted by such Participant to You under
- Sections <a href="#section-2.1">2.1</a> and/or <a href="#section-2.2">2.2</a> of this
- License shall, upon 60 days notice from Participant terminate prospectively, unless if
- within 60 days after receipt of notice You either: (i) agree in writing to pay
- Participant a mutually agreeable reasonable royalty for Your past and future use of
- Modifications made by such Participant, or (ii) withdraw Your litigation claim with
- respect to the Contributor Version against such Participant. If within 60 days of
- notice, a reasonable royalty and payment arrangement are not mutually agreed upon in
- writing by the parties or the litigation claim is not withdrawn, the rights granted by
- Participant to You under Sections <a href="#section-2.1">2.1</a> and/or
- <a href="#section-2.2">2.2</a> automatically terminate at the expiration of the 60 day
- notice period specified above.
- </li><li id="section-8.2-b">any software, hardware, or device, other than such Participant's
- Contributor Version, directly or indirectly infringes any patent, then any rights
- granted to You by such Participant under Sections 2.1(<a href="#section-2.1-b">b</a>)
- and 2.2(<a href="#section-2.2-b">b</a>) are revoked effective as of the date You first
- made, used, sold, distributed, or had made, Modifications made by that Participant.
- </li></ol>
- <p id="section-8.3">8.3. If You assert a patent infringement claim against Participant
- alleging that such Participant's Contributor Version directly or indirectly infringes
- any patent where such claim is resolved (such as by license or settlement) prior to the
- initiation of patent infringement litigation, then the reasonable value of the licenses
- granted by such Participant under Sections <a href="#section-2.1">2.1</a> or
- <a href="#section-2.2">2.2</a> shall be taken into account in determining the amount or
- value of any payment or license.
- </p><p id="section-8.4">8.4. In the event of termination under Sections
- <a href="#section-8.1">8.1</a> or <a href="#section-8.2">8.2</a> above, all end user
- license agreements (excluding distributors and resellers) which have been validly
- granted by You or any distributor hereunder prior to termination shall survive
- termination.
- </p><h2 id="section-9">9. <strong class="very-strong">Limitation of liability</strong></h2>
- <p><strong class="very-strong">Under no circumstances and under no legal theory, whether
- tort (including negligence), contract, or otherwise, shall you, the initial developer,
- any other contributor, or any distributor of covered code, or any supplier of any of
- such parties, be liable to any person for any indirect, special, incidental, or
- consequential damages of any character including, without limitation, damages for loss
- of goodwill, work stoppage, computer failure or malfunction, or any and all other
- commercial damages or losses, even if such party shall have been informed of the
- possibility of such damages. This limitation of liability shall not apply to liability
- for death or personal injury resulting from such party's negligence to the extent
- applicable law prohibits such limitation. Some jurisdictions do not allow the exclusion
- or limitation of incidental or consequential damages, so this exclusion and limitation
- may not apply to you.</strong>
- </p><h2 id="section-10">10. <abbr title="United States">U.S.</abbr> government end users</h2>
- <p>The Covered Code is a "commercial item," as that term is defined in 48
- <abbr>C.F.R.</abbr> 2.101 (<abbr title="October">Oct.</abbr> 1995), consisting of
- "commercial computer software" and "commercial computer software documentation," as such
- terms are used in 48 <abbr>C.F.R.</abbr> 12.212 (<abbr title="September">Sept.</abbr>
- 1995). Consistent with 48 <abbr>C.F.R.</abbr> 12.212 and 48 <abbr>C.F.R.</abbr>
- 227.7202-1 through 227.7202-4 (June 1995), all <abbr>U.S.</abbr> Government End Users
- acquire Covered Code with only those rights set forth herein.
- </p><h2 id="section-11">11. Miscellaneous</h2>
- <p>This License represents the complete agreement concerning subject matter hereof. If
- any provision of this License is held to be unenforceable, such provision shall be
- reformed only to the extent necessary to make it enforceable. This License shall be
- governed by California law provisions (except to the extent applicable law, if any,
- provides otherwise), excluding its conflict-of-law provisions. With respect to
- disputes in which at least one party is a citizen of, or an entity chartered or
- registered to do business in the United States of America, any litigation relating to
- this License shall be subject to the jurisdiction of the Federal Courts of the
- Northern District of California, with venue lying in Santa Clara County, California,
- with the losing party responsible for costs, including without limitation, court
- costs and reasonable attorneys' fees and expenses. The application of the United
- Nations Convention on Contracts for the International Sale of Goods is expressly
- excluded. Any law or regulation which provides that the language of a contract
- shall be construed against the drafter shall not apply to this License.
- </p><h2 id="section-12">12. Responsibility for claims</h2>
- <p>As between Initial Developer and the Contributors, each party is responsible for
- claims and damages arising, directly or indirectly, out of its utilization of rights
- under this License and You agree to work with Initial Developer and Contributors to
- distribute such responsibility on an equitable basis. Nothing herein is intended or
- shall be deemed to constitute any admission of liability.
- </p><h2 id="section-13">13. Multiple-licensed code</h2>
- <p>Initial Developer may designate portions of the Covered Code as
- "Multiple-Licensed". "Multiple-Licensed" means that the Initial Developer permits
- you to utilize portions of the Covered Code under Your choice of the <abbr>MPL</abbr>
- or the alternative licenses, if any, specified by the Initial Developer in the file
- described in <a href="#exhibit-a">Exhibit A</a>.
- </p><h2 id="exhibit-a">Exhibit A - Mozilla Public License.</h2>
- <pre>"The contents of this file are subject to the Mozilla Public License
-Version 1.1 (the "License"); you may not use this file except in
-compliance with the License. You may obtain a copy of the License at
-http://www.mozilla.org/MPL/
-
-Software distributed under the License is distributed on an "AS IS"
-basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
-License for the specific language governing rights and limitations
-under the License.
-
-The Original Code is ______________________________________.
-
-The Initial Developer of the Original Code is ________________________.
-Portions created by ______________________ are Copyright (C) ______
-_______________________. All Rights Reserved.
-
-Contributor(s): ______________________________________.
-
-Alternatively, the contents of this file may be used under the terms
-of the _____ license (the "[___] License"), in which case the
-provisions of [______] License are applicable instead of those
-above. If you wish to allow use of your version of this file only
-under the terms of the [____] License and not to allow others to use
-your version of this file under the MPL, indicate your decision by
-deleting the provisions above and replace them with the notice and
-other provisions required by the [___] License. If you do not delete
-the provisions above, a recipient may use your version of this file
-under either the MPL or the [___] License."</pre>
- <p>NOTE: The text of this Exhibit A may differ slightly from the text of
- the notices in the Source Code files of the Original Code. You should
- use the text of this Exhibit A rather than the text found in the
- Original Code Source Code for Your Modifications.
-</p></body></html>
\ No newline at end of file
Copied: trunk/build/kits/jboss-container/teiid-docs/licenses/MPL-1.1.html (from rev 2301, branches/7.0.x/build/kits/jboss-container/teiid-docs/licenses/MPL-1.1.html)
===================================================================
--- trunk/build/kits/jboss-container/teiid-docs/licenses/MPL-1.1.html (rev 0)
+++ trunk/build/kits/jboss-container/teiid-docs/licenses/MPL-1.1.html 2010-06-25 15:16:34 UTC (rev 2302)
@@ -0,0 +1,389 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en"><head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
+
+
+ <title>Mozilla Public License version 1.1</title>
+ <style type="text/css">
+ .very-strong{
+ text-transform:uppercase;
+ }
+ dt{
+ font-weight:bold;
+ }
+ dd p{
+ margin:0;
+ }
+ </style>
+</head><body>
+ <p><small>(<a href="http://www.mozilla.org/MPL/MPL-1.1.txt">Plain text version</a>)</small></p>
+ <h1>Mozilla Public License Version 1.1</h1>
+ <h2 id="section-1">1. Definitions.</h2>
+ <dl>
+ <dt id="section-1.0.1">1.0.1. "Commercial Use"
+ </dt><dd>means distribution or otherwise making the Covered Code available to a third party.
+ </dd><dt id="section-1.1">1.1. "Contributor"
+ </dt><dd>means each entity that creates or contributes to the creation of Modifications.
+ </dd><dt id="section-1.2">1.2. "Contributor Version"
+ </dt><dd>means the combination of the Original Code, prior Modifications used by a Contributor,
+ and the Modifications made by that particular Contributor.
+ </dd><dt id="section-1.3">1.3. "Covered Code"
+ </dt><dd>means the Original Code or Modifications or the combination of the Original Code and
+ Modifications, in each case including portions thereof.
+ </dd><dt id="section-1.4">1.4. "Electronic Distribution Mechanism"
+ </dt><dd>means a mechanism generally accepted in the software development community for the
+ electronic transfer of data.
+ </dd><dt id="section-1.5">1.5. "Executable"
+ </dt><dd>means Covered Code in any form other than Source Code.
+ </dd><dt id="section-1.6">1.6. "Initial Developer"
+ </dt><dd>means the individual or entity identified as the Initial Developer in the Source Code
+ notice required by <a href="#exhibit-a">Exhibit A</a>.
+ </dd><dt id="section-1.7">1.7. "Larger Work"
+ </dt><dd>means a work which combines Covered Code or portions thereof with code not governed
+ by the terms of this License.
+ </dd><dt id="section-1.8">1.8. "License"
+ </dt><dd>means this document.
+ </dd><dt id="section-1.8.1">1.8.1. "Licensable"
+ </dt><dd>means having the right to grant, to the maximum extent possible, whether at the
+ time of the initial grant or subsequently acquired, any and all of the rights
+ conveyed herein.
+ </dd><dt id="section-1.9">1.9. "Modifications"
+ </dt><dd>
+ <p>means any addition to or deletion from the substance or structure of either the
+ Original Code or any previous Modifications. When Covered Code is released as a
+ series of files, a Modification is:
+ </p><ol type="a">
+ <li id="section-1.9-a">Any addition to or deletion from the contents of a file
+ containing Original Code or previous Modifications.
+ </li><li id="section-1.9-b">Any new file that contains any part of the Original Code or
+ previous Modifications.
+ </li></ol>
+ </dd><dt id="section-1.10">1.10. "Original Code"
+ </dt><dd>means Source Code of computer software code which is described in the Source Code
+ notice required by <a href="#exhibit-a">Exhibit A</a> as Original Code, and which,
+ at the time of its release under this License is not already Covered Code governed
+ by this License.
+ </dd><dt id="section-1.10.1">1.10.1. "Patent Claims"
+ </dt><dd>means any patent claim(s), now owned or hereafter acquired, including without
+ limitation, method, process, and apparatus claims, in any patent Licensable by
+ grantor.
+ </dd><dt id="section-1.11">1.11. "Source Code"
+ </dt><dd>means the preferred form of the Covered Code for making modifications to it,
+ including all modules it contains, plus any associated interface definition files,
+ scripts used to control compilation and installation of an Executable, or source
+ code differential comparisons against either the Original Code or another well known,
+ available Covered Code of the Contributor's choice. The Source Code can be in a
+ compressed or archival form, provided the appropriate decompression or de-archiving
+ software is widely available for no charge.
+ </dd><dt id="section-1.12">1.12. "You" (or "Your")
+ </dt><dd>means an individual or a legal entity exercising rights under, and complying with
+ all of the terms of, this License or a future version of this License issued under
+ <a href="#section-6.1">Section 6.1.</a> For legal entities, "You" includes any entity
+ which controls, is controlled by, or is under common control with You. For purposes of
+ this definition, "control" means (a) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or otherwise, or (b)
+ ownership of more than fifty percent (50%) of the outstanding shares or beneficial
+ ownership of such entity.
+ </dd></dl>
+ <h2 id="section-2">2. Source Code License.</h2>
+ <h3 id="section-2.1">2.1. The Initial Developer Grant.</h3>
+ <p>The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive
+ license, subject to third party intellectual property claims:
+ </p><ol type="a">
+ <li id="section-2.1-a">under intellectual property rights (other than patent or
+ trademark) Licensable by Initial Developer to use, reproduce, modify, display, perform,
+ sublicense and distribute the Original Code (or portions thereof) with or without
+ Modifications, and/or as part of a Larger Work; and
+ </li><li id="section-2.1-b">under Patents Claims infringed by the making, using or selling
+ of Original Code, to make, have made, use, practice, sell, and offer for sale, and/or
+ otherwise dispose of the Original Code (or portions thereof).
+ </li><li id="section-2.1-c">the licenses granted in this Section 2.1
+ (<a href="#section-2.1-a">a</a>) and (<a href="#section-2.1-b">b</a>) are effective on
+ the date Initial Developer first distributes Original Code under the terms of this
+ License.
+ </li><li id="section-2.1-d">Notwithstanding Section 2.1 (<a href="#section-2.1-b">b</a>)
+ above, no patent license is granted: 1) for code that You delete from the Original Code;
+ 2) separate from the Original Code; or 3) for infringements caused by: i) the
+ modification of the Original Code or ii) the combination of the Original Code with other
+ software or devices.
+ </li></ol>
+ <h3 id="section-2.2">2.2. Contributor Grant.</h3>
+ <p>Subject to third party intellectual property claims, each Contributor hereby grants You
+ a world-wide, royalty-free, non-exclusive license
+ </p><ol type="a">
+ <li id="section-2.2-a">under intellectual property rights (other than patent or trademark)
+ Licensable by Contributor, to use, reproduce, modify, display, perform, sublicense and
+ distribute the Modifications created by such Contributor (or portions thereof) either on
+ an unmodified basis, with other Modifications, as Covered Code and/or as part of a Larger
+ Work; and
+ </li><li id="section-2.2-b">under Patent Claims infringed by the making, using, or selling of
+ Modifications made by that Contributor either alone and/or in combination with its
+ Contributor Version (or portions of such combination), to make, use, sell, offer for
+ sale, have made, and/or otherwise dispose of: 1) Modifications made by that Contributor
+ (or portions thereof); and 2) the combination of Modifications made by that Contributor
+ with its Contributor Version (or portions of such combination).
+ </li><li id="section-2.2-c">the licenses granted in Sections 2.2
+ (<a href="#section-2.2-a">a</a>) and 2.2 (<a href="#section-2.2-b">b</a>) are effective
+ on the date Contributor first makes Commercial Use of the Covered Code.
+ </li><li id="section-2.2-d">Notwithstanding Section 2.2 (<a href="#section-2.2-b">b</a>)
+ above, no patent license is granted: 1) for any code that Contributor has deleted from
+ the Contributor Version; 2) separate from the Contributor Version; 3) for infringements
+ caused by: i) third party modifications of Contributor Version or ii) the combination of
+ Modifications made by that Contributor with other software (except as part of the
+ Contributor Version) or other devices; or 4) under Patent Claims infringed by Covered Code
+ in the absence of Modifications made by that Contributor.
+ </li></ol>
+ <h2 id="section-3">3. Distribution Obligations.</h2>
+ <h3 id="section-3.1">3.1. Application of License.</h3>
+ <p>The Modifications which You create or to which You contribute are governed by the terms
+ of this License, including without limitation Section <a href="#section-2.2">2.2</a>. The
+ Source Code version of Covered Code may be distributed only under the terms of this License
+ or a future version of this License released under Section <a href="#section-6.1">6.1</a>,
+ and You must include a copy of this License with every copy of the Source Code You
+ distribute. You may not offer or impose any terms on any Source Code version that alters or
+ restricts the applicable version of this License or the recipients' rights hereunder.
+ However, You may include an additional document offering the additional rights described in
+ Section <a href="#section-3.5">3.5</a>.
+ </p><h3 id="section-3.2">3.2. Availability of Source Code.</h3>
+ <p>Any Modification which You create or to which You contribute must be made available in
+ Source Code form under the terms of this License either on the same media as an Executable
+ version or via an accepted Electronic Distribution Mechanism to anyone to whom you made an
+ Executable version available; and if made available via Electronic Distribution Mechanism,
+ must remain available for at least twelve (12) months after the date it initially became
+ available, or at least six (6) months after a subsequent version of that particular
+ Modification has been made available to such recipients. You are responsible for ensuring
+ that the Source Code version remains available even if the Electronic Distribution
+ Mechanism is maintained by a third party.
+ </p><h3 id="section-3.3">3.3. Description of Modifications.</h3>
+ <p>You must cause all Covered Code to which You contribute to contain a file documenting the
+ changes You made to create that Covered Code and the date of any change. You must include a
+ prominent statement that the Modification is derived, directly or indirectly, from Original
+ Code provided by the Initial Developer and including the name of the Initial Developer in
+ (a) the Source Code, and (b) in any notice in an Executable version or related documentation
+ in which You describe the origin or ownership of the Covered Code.
+ </p><h3 id="section-3.4">3.4. Intellectual Property Matters</h3>
+ <h4 id="section-3.4-a">(a) Third Party Claims</h4>
+ <p>If Contributor has knowledge that a license under a third party's intellectual property
+ rights is required to exercise the rights granted by such Contributor under Sections
+ <a href="#section-2.1">2.1</a> or <a href="#section-2.2">2.2</a>, Contributor must include a
+ text file with the Source Code distribution titled "LEGAL" which describes the claim and the
+ party making the claim in sufficient detail that a recipient will know whom to contact. If
+ Contributor obtains such knowledge after the Modification is made available as described in
+ Section <a href="#section-3.2">3.2</a>, Contributor shall promptly modify the LEGAL file in
+ all copies Contributor makes available thereafter and shall take other steps (such as
+ notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who
+ received the Covered Code that new knowledge has been obtained.
+ </p><h4 id="section-3.4-b">(b) Contributor APIs</h4>
+ <p>If Contributor's Modifications include an application programming interface and Contributor
+ has knowledge of patent licenses which are reasonably necessary to implement that
+ <abbr>API</abbr>, Contributor must also include this information in the
+ <strong class="very-strong">legal</strong> file.
+ </p><h4 id="section-3.4-c">(c) Representations.</h4>
+ <p>Contributor represents that, except as disclosed pursuant to Section 3.4
+ (<a href="#section-3.4-a">a</a>) above, Contributor believes that Contributor's Modifications
+ are Contributor's original creation(s) and/or Contributor has sufficient rights to grant the
+ rights conveyed by this License.
+ </p><h3 id="section-3.5">3.5. Required Notices.</h3>
+ <p>You must duplicate the notice in <a href="#exhibit-a">Exhibit A</a> in each file of the
+ Source Code. If it is not possible to put such notice in a particular Source Code file due to
+ its structure, then You must include such notice in a location (such as a relevant directory)
+ where a user would be likely to look for such a notice. If You created one or more
+ Modification(s) You may add your name as a Contributor to the notice described in
+ <a href="#exhibit-a">Exhibit A</a>. You must also duplicate this License in any documentation
+ for the Source Code where You describe recipients' rights or ownership rights relating to
+ Covered Code. You may choose to offer, and to charge a fee for, warranty, support, indemnity
+ or liability obligations to one or more recipients of Covered Code. However, You may do so
+ only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You
+ must make it absolutely clear than any such warranty, support, indemnity or liability
+ obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer
+ and every Contributor for any liability incurred by the Initial Developer or such Contributor
+ as a result of warranty, support, indemnity or liability terms You offer.
+ </p><h3 id="section-3.6">3.6. Distribution of Executable Versions.</h3>
+ <p>You may distribute Covered Code in Executable form only if the requirements of Sections
+ <a href="#section-3.1">3.1</a>, <a href="#section-3.2">3.2</a>,
+ <a href="#section-3.3">3.3</a>, <a href="#section-3.4">3.4</a> and
+ <a href="#section-3.5">3.5</a> have been met for that Covered Code, and if You include a
+ notice stating that the Source Code version of the Covered Code is available under the terms
+ of this License, including a description of how and where You have fulfilled the obligations
+ of Section <a href="#section-3.2">3.2</a>. The notice must be conspicuously included in any
+ notice in an Executable version, related documentation or collateral in which You describe
+ recipients' rights relating to the Covered Code. You may distribute the Executable version of
+ Covered Code or ownership rights under a license of Your choice, which may contain terms
+ different from this License, provided that You are in compliance with the terms of this
+ License and that the license for the Executable version does not attempt to limit or alter the
+ recipient's rights in the Source Code version from the rights set forth in this License. If
+ You distribute the Executable version under a different license You must make it absolutely
+ clear that any terms which differ from this License are offered by You alone, not by the
+ Initial Developer or any Contributor. You hereby agree to indemnify the Initial Developer and
+ every Contributor for any liability incurred by the Initial Developer or such Contributor as
+ a result of any such terms You offer.
+ </p><h3 id="section-3.7">3.7. Larger Works.</h3>
+ <p>You may create a Larger Work by combining Covered Code with other code not governed by the
+ terms of this License and distribute the Larger Work as a single product. In such a case,
+ You must make sure the requirements of this License are fulfilled for the Covered Code.
+ </p><h2 id="section-4">4. Inability to Comply Due to Statute or Regulation.</h2>
+ <p>If it is impossible for You to comply with any of the terms of this License with respect to
+ some or all of the Covered Code due to statute, judicial order, or regulation then You must:
+ (a) comply with the terms of this License to the maximum extent possible; and (b) describe
+ the limitations and the code they affect. Such description must be included in the
+ <strong class="very-strong">legal</strong> file described in Section
+ <a href="#section-3.4">3.4</a> and must be included with all distributions of the Source Code.
+ Except to the extent prohibited by statute or regulation, such description must be
+ sufficiently detailed for a recipient of ordinary skill to be able to understand it.
+ </p><h2 id="section-5">5. Application of this License.</h2>
+ <p>This License applies to code to which the Initial Developer has attached the notice in
+ <a href="#exhibit-a">Exhibit A</a> and to related Covered Code.
+ </p><h2 id="section-6">6. Versions of the License.</h2>
+ <h3 id="section-6.1">6.1. New Versions</h3>
+ <p>Netscape Communications Corporation ("Netscape") may publish revised and/or new versions
+ of the License from time to time. Each version will be given a distinguishing version number.
+ </p><h3 id="section-6.2">6.2. Effect of New Versions</h3>
+ <p>Once Covered Code has been published under a particular version of the License, You may
+ always continue to use it under the terms of that version. You may also choose to use such
+ Covered Code under the terms of any subsequent version of the License published by Netscape.
+ No one other than Netscape has the right to modify the terms applicable to Covered Code
+ created under this License.
+ </p><h3 id="section-6.3">6.3. Derivative Works</h3>
+ <p>If You create or use a modified version of this License (which you may only do in order to
+ apply it to code which is not already Covered Code governed by this License), You must (a)
+ rename Your license so that the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", "MPL",
+ "NPL" or any confusingly similar phrase do not appear in your license (except to note that
+ your license differs from this License) and (b) otherwise make it clear that Your version of
+ the license contains terms which differ from the Mozilla Public License and Netscape Public
+ License. (Filling in the name of the Initial Developer, Original Code or Contributor in the
+ notice described in <a href="#exhibit-a">Exhibit A</a> shall not of themselves be deemed to
+ be modifications of this License.)
+ </p><h2 id="section-7">7. <strong class="very-strong">Disclaimer of warranty</strong></h2>
+ <p><strong class="very-strong">Covered code is provided under this license on an "as is"
+ basis, without warranty of any kind, either expressed or implied, including, without
+ limitation, warranties that the covered code is free of defects, merchantable, fit for a
+ particular purpose or non-infringing. The entire risk as to the quality and performance of
+ the covered code is with you. Should any covered code prove defective in any respect, you
+ (not the initial developer or any other contributor) assume the cost of any necessary
+ servicing, repair or correction. This disclaimer of warranty constitutes an essential part
+ of this license. No use of any covered code is authorized hereunder except under this
+ disclaimer.</strong>
+ </p><h2 id="section-8">8. Termination</h2>
+ <p id="section-8.1">8.1. This License and the rights granted hereunder will terminate
+ automatically if You fail to comply with terms herein and fail to cure such breach
+ within 30 days of becoming aware of the breach. All sublicenses to the Covered Code which
+ are properly granted shall survive any termination of this License. Provisions which, by
+ their nature, must remain in effect beyond the termination of this License shall survive.
+ </p><p id="section-8.2">8.2. If You initiate litigation by asserting a patent infringement
+ claim (excluding declatory judgment actions) against Initial Developer or a Contributor
+ (the Initial Developer or Contributor against whom You file such action is referred to
+ as "Participant") alleging that:
+ </p><ol type="a">
+ <li id="section-8.2-a">such Participant's Contributor Version directly or indirectly
+ infringes any patent, then any and all rights granted by such Participant to You under
+ Sections <a href="#section-2.1">2.1</a> and/or <a href="#section-2.2">2.2</a> of this
+ License shall, upon 60 days notice from Participant terminate prospectively, unless if
+ within 60 days after receipt of notice You either: (i) agree in writing to pay
+ Participant a mutually agreeable reasonable royalty for Your past and future use of
+ Modifications made by such Participant, or (ii) withdraw Your litigation claim with
+ respect to the Contributor Version against such Participant. If within 60 days of
+ notice, a reasonable royalty and payment arrangement are not mutually agreed upon in
+ writing by the parties or the litigation claim is not withdrawn, the rights granted by
+ Participant to You under Sections <a href="#section-2.1">2.1</a> and/or
+ <a href="#section-2.2">2.2</a> automatically terminate at the expiration of the 60 day
+ notice period specified above.
+ </li><li id="section-8.2-b">any software, hardware, or device, other than such Participant's
+ Contributor Version, directly or indirectly infringes any patent, then any rights
+ granted to You by such Participant under Sections 2.1(<a href="#section-2.1-b">b</a>)
+ and 2.2(<a href="#section-2.2-b">b</a>) are revoked effective as of the date You first
+ made, used, sold, distributed, or had made, Modifications made by that Participant.
+ </li></ol>
+ <p id="section-8.3">8.3. If You assert a patent infringement claim against Participant
+ alleging that such Participant's Contributor Version directly or indirectly infringes
+ any patent where such claim is resolved (such as by license or settlement) prior to the
+ initiation of patent infringement litigation, then the reasonable value of the licenses
+ granted by such Participant under Sections <a href="#section-2.1">2.1</a> or
+ <a href="#section-2.2">2.2</a> shall be taken into account in determining the amount or
+ value of any payment or license.
+ </p><p id="section-8.4">8.4. In the event of termination under Sections
+ <a href="#section-8.1">8.1</a> or <a href="#section-8.2">8.2</a> above, all end user
+ license agreements (excluding distributors and resellers) which have been validly
+ granted by You or any distributor hereunder prior to termination shall survive
+ termination.
+ </p><h2 id="section-9">9. <strong class="very-strong">Limitation of liability</strong></h2>
+ <p><strong class="very-strong">Under no circumstances and under no legal theory, whether
+ tort (including negligence), contract, or otherwise, shall you, the initial developer,
+ any other contributor, or any distributor of covered code, or any supplier of any of
+ such parties, be liable to any person for any indirect, special, incidental, or
+ consequential damages of any character including, without limitation, damages for loss
+ of goodwill, work stoppage, computer failure or malfunction, or any and all other
+ commercial damages or losses, even if such party shall have been informed of the
+ possibility of such damages. This limitation of liability shall not apply to liability
+ for death or personal injury resulting from such party's negligence to the extent
+ applicable law prohibits such limitation. Some jurisdictions do not allow the exclusion
+ or limitation of incidental or consequential damages, so this exclusion and limitation
+ may not apply to you.</strong>
+ </p><h2 id="section-10">10. <abbr title="United States">U.S.</abbr> government end users</h2>
+ <p>The Covered Code is a "commercial item," as that term is defined in 48
+ <abbr>C.F.R.</abbr> 2.101 (<abbr title="October">Oct.</abbr> 1995), consisting of
+ "commercial computer software" and "commercial computer software documentation," as such
+ terms are used in 48 <abbr>C.F.R.</abbr> 12.212 (<abbr title="September">Sept.</abbr>
+ 1995). Consistent with 48 <abbr>C.F.R.</abbr> 12.212 and 48 <abbr>C.F.R.</abbr>
+ 227.7202-1 through 227.7202-4 (June 1995), all <abbr>U.S.</abbr> Government End Users
+ acquire Covered Code with only those rights set forth herein.
+ </p><h2 id="section-11">11. Miscellaneous</h2>
+ <p>This License represents the complete agreement concerning subject matter hereof. If
+ any provision of this License is held to be unenforceable, such provision shall be
+ reformed only to the extent necessary to make it enforceable. This License shall be
+ governed by California law provisions (except to the extent applicable law, if any,
+ provides otherwise), excluding its conflict-of-law provisions. With respect to
+ disputes in which at least one party is a citizen of, or an entity chartered or
+ registered to do business in the United States of America, any litigation relating to
+ this License shall be subject to the jurisdiction of the Federal Courts of the
+ Northern District of California, with venue lying in Santa Clara County, California,
+ with the losing party responsible for costs, including without limitation, court
+ costs and reasonable attorneys' fees and expenses. The application of the United
+ Nations Convention on Contracts for the International Sale of Goods is expressly
+ excluded. Any law or regulation which provides that the language of a contract
+ shall be construed against the drafter shall not apply to this License.
+ </p><h2 id="section-12">12. Responsibility for claims</h2>
+ <p>As between Initial Developer and the Contributors, each party is responsible for
+ claims and damages arising, directly or indirectly, out of its utilization of rights
+ under this License and You agree to work with Initial Developer and Contributors to
+ distribute such responsibility on an equitable basis. Nothing herein is intended or
+ shall be deemed to constitute any admission of liability.
+ </p><h2 id="section-13">13. Multiple-licensed code</h2>
+ <p>Initial Developer may designate portions of the Covered Code as
+ "Multiple-Licensed". "Multiple-Licensed" means that the Initial Developer permits
+ you to utilize portions of the Covered Code under Your choice of the <abbr>MPL</abbr>
+ or the alternative licenses, if any, specified by the Initial Developer in the file
+ described in <a href="#exhibit-a">Exhibit A</a>.
+ </p><h2 id="exhibit-a">Exhibit A - Mozilla Public License.</h2>
+ <pre>"The contents of this file are subject to the Mozilla Public License
+Version 1.1 (the "License"); you may not use this file except in
+compliance with the License. You may obtain a copy of the License at
+http://www.mozilla.org/MPL/
+
+Software distributed under the License is distributed on an "AS IS"
+basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+License for the specific language governing rights and limitations
+under the License.
+
+The Original Code is ______________________________________.
+
+The Initial Developer of the Original Code is ________________________.
+Portions created by ______________________ are Copyright (C) ______
+_______________________. All Rights Reserved.
+
+Contributor(s): ______________________________________.
+
+Alternatively, the contents of this file may be used under the terms
+of the _____ license (the "[___] License"), in which case the
+provisions of [______] License are applicable instead of those
+above. If you wish to allow use of your version of this file only
+under the terms of the [____] License and not to allow others to use
+your version of this file under the MPL, indicate your decision by
+deleting the provisions above and replace them with the notice and
+other provisions required by the [___] License. If you do not delete
+the provisions above, a recipient may use your version of this file
+under either the MPL or the [___] License."</pre>
+ <p>NOTE: The text of this Exhibit A may differ slightly from the text of
+ the notices in the Source Code files of the Original Code. You should
+ use the text of this Exhibit A rather than the text found in the
+ Original Code Source Code for Your Modifications.
+</p></body></html>
\ No newline at end of file
Deleted: trunk/build/kits/jboss-container/teiid-docs/licenses/apache-2.0 - LICENSE-2.0.txt
===================================================================
--- branches/7.0.x/build/kits/jboss-container/teiid-docs/licenses/apache-2.0 - LICENSE-2.0.txt 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/build/kits/jboss-container/teiid-docs/licenses/apache-2.0 - LICENSE-2.0.txt 2010-06-25 15:16:34 UTC (rev 2302)
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
Copied: trunk/build/kits/jboss-container/teiid-docs/licenses/apache-2.0 - LICENSE-2.0.txt (from rev 2301, branches/7.0.x/build/kits/jboss-container/teiid-docs/licenses/apache-2.0 - LICENSE-2.0.txt)
===================================================================
--- trunk/build/kits/jboss-container/teiid-docs/licenses/apache-2.0 - LICENSE-2.0.txt (rev 0)
+++ trunk/build/kits/jboss-container/teiid-docs/licenses/apache-2.0 - LICENSE-2.0.txt 2010-06-25 15:16:34 UTC (rev 2302)
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
Modified: trunk/build/kits/jboss-container/teiid-examples/simpleclient/README.txt
===================================================================
--- trunk/build/kits/jboss-container/teiid-examples/simpleclient/README.txt 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/build/kits/jboss-container/teiid-examples/simpleclient/README.txt 2010-06-25 15:16:34 UTC (rev 2302)
@@ -1,11 +1,18 @@
-JDBCClient.java shows making connections to Teiid in embedded mode through both a Driver
+JDBCClient.java shows making connections to Teiid in through both a Driver
and a DataSource.
-The program expects four arguments <host> <port> <vdb> <sql-command>. There are helper run scripts
-that can be run as follows:
+The program expects four arguments <host> <port> <vdb> <sql-command>. There
+are helper run scripts that can be run as follows:
-$./run.sh localhost 31000 portfolio "select * from CustomerAccount"
+$./run.sh host port vdb "query"
Note that the query is in quotes so that it is understood as a single argument.
-See the other examples for deployable .vdb and .xml files to create vdbs.
\ No newline at end of file
+e.g. With the portfolio vdb deployed:
+
+$./run.sh localhost 31000 portfolio "select * from customeraccounts"
+
+See the other examples for deployable .vdb and .xml files to create vdbs.
+
+NOTE: To run more advanced queries, it would be better a fully featured Java client,
+such as SQuirreL [http://www.squirrelsql.org/].
\ No newline at end of file
Copied: trunk/build/kits/jboss-container/teiid-releasenotes.html (from rev 2301, branches/7.0.x/build/kits/jboss-container/teiid-releasenotes.html)
===================================================================
--- trunk/build/kits/jboss-container/teiid-releasenotes.html (rev 0)
+++ trunk/build/kits/jboss-container/teiid-releasenotes.html 2010-06-25 15:16:34 UTC (rev 2302)
@@ -0,0 +1,699 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+ <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+ <TITLE>Teiid 7.0 Final Release Notes</TITLE>
+ <META NAME="CHANGEDBY" CONTENT="Steve Hawkins">
+ </STYLE>
+</HEAD>
+<BODY LANG="en-US" DIR="LTR">
+<P><A HREF="http://www.teiid.org/"><IMG SRC="https://www.jboss.org/dms/teiid/images/teiid_banner.png" NAME="graphics1" ALT="Teiid" ALIGN=BOTTOM WIDTH=800></A>
+
+<H1>Teiid 7.0 Final Release Notes</H1>
+<P>Teiid 7.0 is a major redesign of the project containing many new
+features.
+
+<H2>Overview</H2>
+<UL>
+ <LI><A HREF="#Highlights">Highlights</A>
+ <LI><A HREF="#Compatibility">Compatibility Issues</A>
+ <LI><A HREF="#Configuration">Configuration Issues</A>
+ <LI><A HREF="#Other">Other Issues</A>
+ <LI><A HREF="#LibraryUpdates">Thirdparty Library Updates</A>
+ <LI><A HREF="#Details">Detailed Release Notes</A>
+ <LI><A HREF="#Documentation">Additional Docs and Help</A>
+ <LI><A HREF="#Licenses">Licenses</A>
+ <LI><A HREF="#About">About JBoss</A>
+</UL>
+<H2><A NAME="Highlights"></A>Highlights</H2>
+<UL>
+ <LI><B>JBoss AS Integration</B> - Teiid now requires a <a href="http://www.jboss.org/jbossas/downloads.html">JBoss AS 5.1</a> instance.
+ This change allows Teiid to leverage many AS/MC features, including transaction management, JCA, hot file drop VDB deployment, and the profile service for configuration.
+ <LI><B>New Admin Console</B> - This
+ release includes a preview release of our new administration
+ console. See it's <A HREF="http://community.jboss.org/wiki/TeiidPluginforMonitoringandConfigurationu...">feature
+ overview</A>. Once Teiid is installed, the Teiid Admin Console is automatically contributed to the JBoss Admin Console.
+ <LI><B>Translators and JCA components</B>
+ - This release separates the old connector API into light-weight
+ Translators and JCA components. This greatly simplifies the process
+ of adding new integration sources to Teiid, since it cleanly separates container provided functionality (JCA) from the Teiid specific
+ classes knwon as a Translator. See the <a href="teiid-docs/teiid_developers_guide.pdf">Developer's Guide</a> for more information.
+ <LI><B>Text Integration</B> - Structured text file processing is
+ now handled by the TEXTTABLE table function and the .
+ <LI><B>SQL/XML</B> - Nearly all of SQL/XML 2003 support has been
+ added, as well as XMLTABLE and XMLQUERY from SQL/XML 2006.
+ <LI><B>Web Services Integration</B> - XML/Relational logic has
+ been replaced by the SQL/XML XMLTABLE and web services execution is
+ now done through the WS Translator/WS Resource Adapter.
+ <LI><B>Expanded Dynamic VDB Support</B> - Every source type
+ except for LDAP can now be integrated in a Dynamic VDB.
+ <LI><B>Other SQL Support</B> - Queries can now contain nested tables
+ that allow for correlated variables to preceding from clause items. Expressions are supported in the order by clause.
+ Double quoted identifiers are allowed by default. Added the functions to_bytes, to_chars, and querystring.
+ ResultSet caching can now be utilized with the /* cache */ query hint.
+ <LI><B>Improved Buffering</B> - Forward only cursors will typically not buffer results on the server. Algorithms for
+ storing and retrieving buffers have also been improved.
+</UL>
+
+<h2><a name="Compatibility">Compatibility Issues</a></h2>
+<h4>from 6.2</h4>
+<ul>
+ <li>The connector API has changed substantially. Custom connectors need to be retargeted to the new Translator API. See <a href="https://jira.jboss.org/browse/TEIID-1003">TEIID-1003</a> and the <a href="teiid-docs/teiid_developers_guide.pdf">Developer's Guide</a> for more information.
+ <li>Connector bindings are no longer valid. Use the Designer Tooling or see the AdminShell download for a migration utility.
+ <li>Calling out to web services and xml processing has been dramatically simplified and improved, but is a breaking change from prior releases.
+ XML/Relational processing has been replaced by XMLTABLE, retrieving XML from file has been replaced by the File Translator/Resource Adapter, and
+ web service calls have been replaced by the WS Translator/Resource Adapter. See <a href="https://jira.jboss.org/browse/TEIID-1118">TEIID-1118</a>, <a href="https://jira.jboss.org/browse/TEIID-1114">TEIID-1114</a>, and the <a href="teiid-docs/teiid_reference.pdf">Reference</a> guide for more information.
+ <li>The direct usage of XQuery has been replaced with the XMLQuery function.
+ <li>The text connector file processing has been replaced with the TEXTTABLE function. See <a href="https://jira.jboss.org/browse/TEIID-1102">TEIID-1102</a> and the <a href="teiid-docs/teiid_reference.pdf">Reference</a> guide for more information
+ <li>Double quoted values are now parsed as identifiers by default. See <a href="https://jira.jboss.org/browse/TEIID-145">TEIID-145</a> and the <a href="teiid-docs/teiid_reference.pdf">Reference</a> guide for more information.
+ <li>The system information schema has changed from System to SYS. The tables and table structures have also changed. See <a href="https://jira.jboss.org/browse/TEIID-871">TEIID-871</a> and the <a href="teiid-docs/teiid_reference.pdf">Reference</a> guide for more information.
+ <li>Client control over query plans has changed. OPTION PLANONLY, DEBUG, and SHOWPLAN are no longer allowed. This behavior should not be controlled by the SET statement, SET SHOWPLAN (ON|OFF|DEBUG) and SET NOEXEC (ON|OFF). Usage of the client PlanNode class will also need to be updated.
+ <li>Teiid specific JDBC client interfaces and methods have changed. In general these custom features have mostly been moved to other more standard locations or been removed. See <a href="https://jira.jboss.org/browse/TEIID-1020">TEIID-1020</a> and the <a href="teiid-docs/teiid_client_developers_guide.pdf">Client Developers</a> guide for more information.
+ <li>Teiid's reserved words have changed. Many of the Teiid specific reseverd words have become non-reserved words. All of SQL Foundation and SQL/MED 2003, and SQL/XML from SQL 2006 reserved words have been added as reserved words. It is generally required to double quote all reserved words. It is advisable to double quote all non-reserved words as well.
+ <li>The AdminApi has been redesigned for use with the new Translator/JCA split and for deployment in JBoss AS.
+ <li>The AdminShell is based on Groovy. Most BeanShell syntax is also valid in Groovy, but there are extensive changes in the AdminAPI that may necessitate rewriting scripts.
+ <li>OPTION NO CACHE <table list> will now only by-pass cache for the given tables at their immediate view layer. Previously all caches would have transitively been skipped. See <a href="https://jira.jboss.org/browse/TEIID-900">TEIID-900</a> for more information.
+ <li>Nan and +-Infinity are no longer allowed as numerical results by default. This may be changed via the system property org.teiid.allowNanInfinity.
+ <li>The scale of BigDecimal values is now adjusted to allow for more intuitive results. Conversion from floating numeric types will preserve the approximate scale and division results will allow for additional scale. See <a href="https://jira.jboss.org/browse/TEIID-159">TEIID-159</a> for more information.
+ <li>The 7.0 client is not compatible with 6.x or vice versa. It is expected that 7.0 clients will be compatible with 7.x releases for standard JDBC operations.
+</ul>
+
+<h2><a name="Configuration">Configuration Issues</a></h2>
+
+See the See the <a href="teiid-docs/teiid_admin_guide.pdf">Admin Guide</a> for more on configuration and installation.
+
+<h4>from 6.2</h4>
+<ul>
+ <li>A JBoss AS instance is now required. Embedded mode is also currently not supported.</li>
+ <li>Engine configuration is now handled through the admin console or deploy/teiid/teiid-jboss-beans.xml
+ <li>Logging is now done through the container's log4j instance. Any Teiid specific logging changes, see the conf/jboss-teiid-log4j.xml, need to be incorporated into the master jboss-log4j.xml.
+</ul>
+
+<h2><a name="Other">Other Issues</a></h2>
+
+<h4>From 6.2</h4>
+<ul>
+ <li>Start time is now significantly longer due to the container deployment. However many operations can be performed on configruation files that will trigger a redeployment without the need for a restart.
+ <li>Parallel execution of source queries within a query plan has been temporarily disabled.
+</ul>
+
+<h2><a name="LibraryUpdates">Thirdparty Library Updates</a></h2>
+
+The following components have been updated:
+<ul>
+ <li>Netty was upgraded to 3.1.5
+ <li>Saxon was upgraded to 9.1.0.8
+ <li>A 5.1 container's version of Arjuna is newer than what was previously included in Teiid 6.x.
+ <li>Various other dependencies have been removed as they are no longer needed or now provided by the container.
+</ul>
+
+<h2><a name="Details">Detailed Release Notes</a></h2>
+ Detailed Release Notes - Teiid - Version 7.0
+
+<h2> Bug
+</h2>
+<ul>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-26'>TEIID-26</a>] - Need to add logic to determine if a command is deterministic
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-41'>TEIID-41</a>] - Non selectable columns should be omitted from metadata
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-46'>TEIID-46</a>] - Fully-qualified names should not be required when referencing virtual procedures that have unique unqualified names
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-93'>TEIID-93</a>] - when a fairly complex query is pushed down to the XML-HTTP Connector, it fails
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-409'>TEIID-409</a>] - server port number should be checked for availability when creating a second mmprocess
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-430'>TEIID-430</a>] - Root access needs enforced for subsystem admin api edits of security properties
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-465'>TEIID-465</a>] - Error message in server process log refers to binding by UUID, not name
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-563'>TEIID-563</a>] - Exporting the configuration, via console or utility, the configuration system properties now contains everything in the system, not just defined by the Configuration component type
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-608'>TEIID-608</a>] - Prevent duplicate hostcontroller launches
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-610'>TEIID-610</a>] - Deleted connector bindings remain in the system state
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-704'>TEIID-704</a>] - Missing message for key "MembershipServiceImpl.Logon_failed"
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-728'>TEIID-728</a>] - Pushing blank-padded literals to source may fail to return correct results
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-792'>TEIID-792</a>] - Index connector does not accept certian criteria forms
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-803'>TEIID-803</a>] - The AdminAPI connector binding name needs to be assigned the name assigned by the designer
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-830'>TEIID-830</a>] - AdminShell row count is not accurate
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-848'>TEIID-848</a>] - Insert with out of order variables and query expression is incorrect
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-849'>TEIID-849</a>] - subquery as input to procedure fails
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-850'>TEIID-850</a>] - Misspellings in Teiid Reference Guide
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-852'>TEIID-852</a>] - Oracle timestamp to time conversion null handling
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-858'>TEIID-858</a>] - DependentSetCriteria not being replaced
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-865'>TEIID-865</a>] - WS-Relational SOAP Connector is sending empty SOAP-ACTION header.
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-866'>TEIID-866</a>] - AdminShell is not able to handle SELECT * INTO #TEMP FROM foo; (statement does not return a result set)
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-867'>TEIID-867</a>] - Possibly Teiid embedded clients (Designer) not pinging query engine, causing session timeouts
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-875'>TEIID-875</a>] - DatabaseMetadata issues
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-876'>TEIID-876</a>] - Server Times Out Session Despite Configuration
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-879'>TEIID-879</a>] - validate min/max non-comparable
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-889'>TEIID-889</a>] - 2 CommonTransactionTests Hang, commented out for now
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-890'>TEIID-890</a>] - AdminShell issues
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-893'>TEIID-893</a>] - XML Formatting error in Dynamic VDB (.def) file presents to user as file not found
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-894'>TEIID-894</a>] - Query inexplicably failing Query Testing only with MySQL
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-895'>TEIID-895</a>] - Update the SalesForce API to version 17 (winter 10).
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-896'>TEIID-896</a>] - INSERT failing with SF connector on types other than a string
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-898'>TEIID-898</a>] - Named procedure parameter error message too terse.
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-899'>TEIID-899</a>] - Virtual Procedure queries with input variables failing with "No value was available."
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-901'>TEIID-901</a>] - NPE encountered when doing an INSERT into SFDC Account table
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-904'>TEIID-904</a>] - Error executing the Procedural releational query with out a where clause
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-905'>TEIID-905</a>] - block clone method is incorrect
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-909'>TEIID-909</a>] - PropertiesUtils.resolveNestedProperties(Properties) goes in a loop
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-911'>TEIID-911</a>] - Prepared Batch Update against a view table fails with "Unable to evaluate $param/pos0: No value was available"
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-917'>TEIID-917</a>] - xml stream handling is inconsistent
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-919'>TEIID-919</a>] - Planner created incomplete identifiers when GROUP BY of inline view with UNION ALL
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-920'>TEIID-920</a>] - Dup removal doesn't respect desc ordering if all projected columns are sorted on
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-922'>TEIID-922</a>] - Teiid Quick Start Example documentation errors
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-923'>TEIID-923</a>] - Oracle queries with a TimeStamp in the WHERE clause are failing if multiple TimeStamps are used in "AND", "OR', and "IN" situations
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-925'>TEIID-925</a>] - dup removal results include duplicat rows
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-932'>TEIID-932</a>] - Misleading error message when using quotation marks: Parse error... encountered (
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-934'>TEIID-934</a>] - MySql Queries - SQL syntax error on pushdown queries when using functions like LPAD, REPLACE, etc
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-936'>TEIID-936</a>] - Query never returns from processing
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-939'>TEIID-939</a>] - MySQL nested set query pushdown failure
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-941'>TEIID-941</a>] - MOD function in Postgres push down is producing connector error
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-945'>TEIID-945</a>] - WS security tokens are configured but not provided to the service.
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-947'>TEIID-947</a>] - UNION query with different datatypes on each side of UNION is producing inconsistent results
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-948'>TEIID-948</a>] - Spurious wake-up error with connector work item
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-949'>TEIID-949</a>] - Criteria on constant column with aggregate function doesn't push criteria down correctly
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-969'>TEIID-969</a>] - Time, date, and timestamp literals are being sent to Oracle as to_timestamp() regardless of their data type
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-973'>TEIID-973</a>] - Quick Start Guide / Examples needs to add derbyclient.jar to UDFs for previewing
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-974'>TEIID-974</a>] - XML-Relational connectors have trouble with reponse XMLs that contain DTD reference
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-981'>TEIID-981</a>] - Ability to cache XML documents
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-988'>TEIID-988</a>] - 3 argument locate function on postgres reports the wrong value
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-989'>TEIID-989</a>] - Pushdown query ORDER BY is not always ordering results properly on Sql2000
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1009'>TEIID-1009</a>] - BQT Pushdown query "ORDER BY" is not always ordering results properly
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1025'>TEIID-1025</a>] - Help incomplete for showPlan
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1036'>TEIID-1036</a>] - AdminShell & Migrate shell scripts should be executable
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1038'>TEIID-1038</a>] - SF connector fails to connect.
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1042'>TEIID-1042</a>] - AdminShell/AdminAPI - deployVDB assumes the -vdb.xml file is in the server's deploy folder
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1043'>TEIID-1043</a>] - Invalid serialized attachments should be ingored.
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1044'>TEIID-1044</a>] - Export connection factory does not always correct properties
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1046'>TEIID-1046</a>] - Component Name of the VDB is null through Profile Service
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1047'>TEIID-1047</a>] - Teiid host resolution should match that of the JBoss AS
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1051'>TEIID-1051</a>] - Make the Connector (type) and RAR name be the same
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1053'>TEIID-1053</a>] - NPE in Teiid JOPR when running control at vdb level - View VDB requests
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1054'>TEIID-1054</a>] - When running the control: View VDB Session, at the vdb level, the actions indicate its disabled
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1056'>TEIID-1056</a>] - Required Connector Properties Should Have A Default Value If They Are Marked As An Expert Property
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1057'>TEIID-1057</a>] - Calling getRequests() on RuntimeEngineDeployer Results in MethodNotFound
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1063'>TEIID-1063</a>] - PropertyDefinition.getPropertyTypeClassName() Should Always Return A Java Class Name
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1065'>TEIID-1065</a>] - PropertyDefinition.getDisplayName() Should Agree With The Display Name Shown In JON
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1067'>TEIID-1067</a>] - Managed connector connection factory always closes the physical connection.
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1072'>TEIID-1072</a>] - XML-Relational connector sometimes uses same ResponseOut/ResponseIn value for different web service queries
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1073'>TEIID-1073</a>] - Logging not working in Teiid Jopr Plugin
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1076'>TEIID-1076</a>] - When running BQT tests, an Assertion error is seen when batches are being processed
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1083'>TEIID-1083</a>] - When running either control at the vdb level while the vdb is being access produces an exception
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1084'>TEIID-1084</a>] - Exception in BatchIterator
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1085'>TEIID-1085</a>] - AdminShell (Groovy) shows connectionName even after that connection has been disconnected
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1086'>TEIID-1086</a>] - Possible missing I18N bundle for AdminShell
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1088'>TEIID-1088</a>] - AdminShell deployVDB method prepends the path to server's deploy directory to VDB location
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1094'>TEIID-1094</a>] - XML literal input to HTTP-SOAP connector is being URL encoded
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1100'>TEIID-1100</a>] - Teiid Examples run.sh should be executable when extracted from archive
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1101'>TEIID-1101</a>] - Teiid Example PortfolioDS specifies a username & password for Derby source where none is required
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1108'>TEIID-1108</a>] - Receiving NPE when querying DynamicPortfolio VDB with more complicated query
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1109'>TEIID-1109</a>] - NPE Connecting to a Teiid DataSource (XA) Without Setting Expected Properties
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1110'>TEIID-1110</a>] - NPE Connecting to a Teiid DataSource (XA) as Anonymous User
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1115'>TEIID-1115</a>] - java.lang.IllegalStateException: Failed to find template for: translator-file while attempting to call Admin.getTemplatePropertyDefinitions("file")
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1116'>TEIID-1116</a>] - AdminConsole for DataServices indicates, by default, that SSL Enabled is true, but the teiid-jboss-beans.xml indicates sslEnabled is false
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1117'>TEIID-1117</a>] - When VDBis deleted the cached medata files are not cleaned up
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1119'>TEIID-1119</a>] - Trying to add new functions to be supported by a new connector and the Connector developers guide refers to the JDBCCapabilities class, which doesn't exist anymore. Have the steps changed to add a new scalar function?
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1121'>TEIID-1121</a>] - Fix the migrate utility for the Translator changes
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1122'>TEIID-1122</a>] - attempting to getTemplatePropertyDefinitions() for the DefaultDS or JMSDS are throwing Admin AdminComponentException exceptions. They need to get filtered out on API calls for Data Source info.
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1125'>TEIID-1125</a>] - Re-connecting proxy may lead to error in execution
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1126'>TEIID-1126</a>] - Web Service VDB Execution Error
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1127'>TEIID-1127</a>] - java.lang.ClassCastException Executing Virtual Procedure from Web Service Model
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1128'>TEIID-1128</a>] - Invalid Resolver Error
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1129'>TEIID-1129</a>] - Unable to execute SQL Queries through VDB's with more than one model in it from Designer/DTP
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1130'>TEIID-1130</a>] - NPE when using exportVDB from adminshell
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1132'>TEIID-1132</a>] - Teiid Kit missing SalesForce JAR
+</li>
+</ul>
+
+<h2> Feature Request
+</h2>
+<ul>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-145'>TEIID-145</a>] - Parse double quoted literals as identifiers by default
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-150'>TEIID-150</a>] - Improve nested loop (in merge join) matching
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-153'>TEIID-153</a>] - Support IS NULL criteria in the xml connector
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-155'>TEIID-155</a>] - Revisit TransformationMetadataFacade cache sizes
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-159'>TEIID-159</a>] - Modify our handling of BigDecimal division to use MathContext.DECIMAL128 as our rounding mode to improve scale and precision of results
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-162'>TEIID-162</a>] - Delete and update support in temp table
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-165'>TEIID-165</a>] - Connector support for more converts
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-168'>TEIID-168</a>] - Refine caching behavior
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-171'>TEIID-171</a>] - Add SQL/XML support
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-173'>TEIID-173</a>] - ProductAdmin role can deploy a vdb but cannot create connector bindings
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-180'>TEIID-180</a>] - Consider using Salesforce retrieve() rather than generic query() call for queries with IN criteria
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-183'>TEIID-183</a>] - user "or" and "in" criteria should generate multiple queries in some situations
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-186'>TEIID-186</a>] - Expose catalog information and props in Connector API metadata [PEC]
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-207'>TEIID-207</a>] - Forward and Backward Compatibility of MetaMatrix JDBC Driver
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-208'>TEIID-208</a>] - LDAP Connector should implement Connection.isAlive(), in order to properly report connection status when monitored
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-216'>TEIID-216</a>] - Query timeout should be enforced by the server
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-222'>TEIID-222</a>] - Procedural relational execution should support disjunctive criteria
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-236'>TEIID-236</a>] - Procedural access pattern
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-249'>TEIID-249</a>] - Need well-known multi-payload container
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-251'>TEIID-251</a>] - Support SQL 2003 order by with expressions
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-367'>TEIID-367</a>] - Add a validation step to security provider definition.
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-371'>TEIID-371</a>] - System state should reflect the state and allow start/stop/restart of Membership Domains
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-404'>TEIID-404</a>] - 1-way and 2-way SSL to MMx must support different keystore file names within a cluster
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-533'>TEIID-533</a>] - HostController Process is redundent and should be removed
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-750'>TEIID-750</a>] - Add more filtering in the internal processing of queries so that hidden items do not requires fully qualified names to be used
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-807'>TEIID-807</a>] - Develop the new Teiid Console using JOPR for its core framework
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-822'>TEIID-822</a>] - Add hsql translator
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-833'>TEIID-833</a>] - Support tighter integration with container deployments
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-844'>TEIID-844</a>] - Implement metadata creation in the SalesForce connector.
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-845'>TEIID-845</a>] - AdminShell needs to be able to produce and display a Query Plan
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-851'>TEIID-851</a>] - API improvements for custom connector development
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-873'>TEIID-873</a>] - Add support for quoted identifier aliases
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-881'>TEIID-881</a>] - SOAP Connector should expose property to control HTTP Header Transfer-Encoding: chunked
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-891'>TEIID-891</a>] - Add JDBC import logic to correct unsigned types
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-897'>TEIID-897</a>] - Create a new autowrap mode to replace pessimistic/optimistic
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-900'>TEIID-900</a>] - Refine option no cache behavior
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-906'>TEIID-906</a>] - Add support for a set statement
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-943'>TEIID-943</a>] - Fully implement client streaming of lobs/readers/streams
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-963'>TEIID-963</a>] - Need to add XPath 2.0 support for services in and out of MM
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-966'>TEIID-966</a>] - User (principal) name in MetaMatrix should be consistently the same string
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-980'>TEIID-980</a>] - Add ability to apply XSLT stylesheets at the datasource level
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1003'>TEIID-1003</a>] - Connector api language changes
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1005'>TEIID-1005</a>] - Update reserved words
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1007'>TEIID-1007</a>] - Remove unnecessary inline views over group bys
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1019'>TEIID-1019</a>] - Request ability to turn on/off Auto Staging tables
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1021'>TEIID-1021</a>] - Enable better support for mixed database encoding
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1029'>TEIID-1029</a>] - Provide sample scripts that show the use of the AdminAPI in an alternative scripting manner
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1033'>TEIID-1033</a>] - Add state to request metadata
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1039'>TEIID-1039</a>] - Provide a solution to 'merge' two VDBs
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1040'>TEIID-1040</a>] - Refine client control of query plans
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1045'>TEIID-1045</a>] - Provide a admin method to "export" a Data Source.
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1052'>TEIID-1052</a>] - Replace beanshell based adminshell with Groovy
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1062'>TEIID-1062</a>] - Expose the Teiid Runtime Version as a ManagedOperation/ManagedProperty
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1071'>TEIID-1071</a>] - Modify validation errors element in schema for VDB configuration file to include attribute for location of error
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1075'>TEIID-1075</a>] - Separate Connector Binding into Translation Layer and Connection Layer
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1097'>TEIID-1097</a>] - Add support for nested table references
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1102'>TEIID-1102</a>] - Create a replacement for the text translator
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1105'>TEIID-1105</a>] - Add Translator Instance Information from the VDB to the VDB Configuration Tab
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1112'>TEIID-1112</a>] - Add getRequestsForVDB() Method on RuntimeEngine
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1118'>TEIID-1118</a>] - Provide alternative webservices calling ability
+</li>
+</ul>
+
+<h2> Quality Risk
+</h2>
+<ul>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-254'>TEIID-254</a>] - Metadata query for procedure columns needs work
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-853'>TEIID-853</a>] - Dynamic command projection should be positional
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-869'>TEIID-869</a>] - Clean up metadata
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-874'>TEIID-874</a>] - Wiki documentation on SSL Encryption is misleading
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-880'>TEIID-880</a>] - SQL Server uniqueidentifier handling
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-915'>TEIID-915</a>] - Error results in illegalstateexception
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-916'>TEIID-916</a>] - Initial client socket timeout is too low under load
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-918'>TEIID-918</a>] - Change all package names to org.teiid
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-926'>TEIID-926</a>] - Reduce use of map look ups for projection
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1001'>TEIID-1001</a>] - Source string format for float/double/bigdecimal/timestamp can vary
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1004'>TEIID-1004</a>] - Check for common math exceptions
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1012'>TEIID-1012</a>] - Update logging contexts
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1015'>TEIID-1015</a>] - Move threading concerns to the engine
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1016'>TEIID-1016</a>] - Include documentation about system properties in server configuration
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1018'>TEIID-1018</a>] - Review all translator properties
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1020'>TEIID-1020</a>] - Remove the use of Teiid specific JDBC extensions
+</li>
+</ul>
+
+<h2> Task
+</h2>
+<ul>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-278'>TEIID-278</a>] - Upgrade Axis2 to Axis2 1.4
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-673'>TEIID-673</a>] - Need to Document Alternate Means of Achieving Web Services and XML Usage Scenarios for Teiid
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-790'>TEIID-790</a>] - Teiid Server uses Sun JDK specific JMX server, thus portability to other JDKs is not possible
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-854'>TEIID-854</a>] - Remove the legacy "server" project from the SCM
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-868'>TEIID-868</a>] - Simplify handling of parse format date/time functions
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-878'>TEIID-878</a>] - Fix capabilities caching
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-902'>TEIID-902</a>] - Restructure planning
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-912'>TEIID-912</a>] - Add unit test methods from JBEDSP-1137: StackOverflowError when top level query uses the same symbol name and group alias that is in a second level query or sub-query
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-913'>TEIID-913</a>] - Refine buffer management
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-927'>TEIID-927</a>] - Remove the legacy JDBC Datasource and Driver classes
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-990'>TEIID-990</a>] - Remove the Axis library dependency on the XML Connectors
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-995'>TEIID-995</a>] - The management console should support deploying VDB to EDS
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1002'>TEIID-1002</a>] - Remove unnecessary sandbox connectors
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1023'>TEIID-1023</a>] - Chanage "MaxResultRows" Connector Property to default to "unlimited"
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1026'>TEIID-1026</a>] - Refine plan/annotation logic
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1037'>TEIID-1037</a>] - Document execution properties in the client developers guide.
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1041'>TEIID-1041</a>] - Create a CTC kit to be used to deploy Teiid/EDS query testing across all supported platforms in the Hudson QA Lab
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1050'>TEIID-1050</a>] - Update the build process to use new Nexus Maven repository
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1074'>TEIID-1074</a>] - Make VDB work with Model based index files
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1098'>TEIID-1098</a>] - Add Long Running Query Limit Property to Teiid Engine Managed Component
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1099'>TEIID-1099</a>] - Update Jopr Plugin to Use Long Running Query Property and Method on Teiid Engine
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1111'>TEIID-1111</a>] - Add Teiid Version to Summary Page of Engine Resource in Teiid Jopr Plugin
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1120'>TEIID-1120</a>] - Provide single HTML page for all the documents
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1124'>TEIID-1124</a>] - Confusion with "java:" prefix in the DataSource from tooling
+</li>
+</ul>
+
+<h2> Thirdparty Change
+</h2>
+<ul>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-938'>TEIID-938</a>] - MySql queries pushed down to the source producing error: Invalid conversion from type class com.metamatrix.common.types.BlobType with value 'javax.sql.rowset.serial.SerialBlob@1b1395dc' to type class java.lang.Character
+</li>
+</ul>
+
+<h2> Sub-task
+</h2>
+<ul>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-137'>TEIID-137</a>] - Remove the HTTPClient Usage from the XML Connector and use the Common XML Connector
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-138'>TEIID-138</a>] - Convert Common XML Connector to Axis2
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-143'>TEIID-143</a>] - Query should 'find' connector types and jars rather than have them predefined in the config.
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-199'>TEIID-199</a>] - Integration with JBoss Identity project
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-218'>TEIID-218</a>] - Security URL properties handling
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-315'>TEIID-315</a>] - Add JDBC Connector developers guide
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-396'>TEIID-396</a>] - Authorization Provider can not deleted using the Admin API
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-429'>TEIID-429</a>] - Use DataSources in creating the ConnectorBindings instead of creating one using the Driver
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-441'>TEIID-441</a>] - Expand the requires restart property
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-464'>TEIID-464</a>] - Shared Installation Option
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-502'>TEIID-502</a>] - Allow Multiple UDF Definition Models
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-674'>TEIID-674</a>] - Document/test a Means of Top-down WSDL Consumption
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-675'>TEIID-675</a>] - Document/test a Means of Bottom-up Web Services in Teiid
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-676'>TEIID-676</a>] - Document/test a means of creating service that executes ad-hoc SQL commands inTeiid
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-678'>TEIID-678</a>] - Document/test Alternative Means to Achieve Current XML Document Scenarios
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-781'>TEIID-781</a>] - Move the CTC testing framework to the teiid community
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-782'>TEIID-782</a>] - Add the ability to test transactions to CTC testing client
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-788'>TEIID-788</a>] - Change internal handling of insert with query expression
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-789'>TEIID-789</a>] - Provide JMX access from remote computers
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-808'>TEIID-808</a>] - Revisit the prior issues with extending the JOPR JMX plugin and verify if the problems have been fixed
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-838'>TEIID-838</a>] - Runtime discovery of VDBs
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-859'>TEIID-859</a>] - Connector API must extend the JCA 1.5 API
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-861'>TEIID-861</a>] - All Teiid Connectors must be modified and packaged as JCA Connectors.
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-862'>TEIID-862</a>] - Teiid engine needs to be exposed as a JCA Connector
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-863'>TEIID-863</a>] - Remove Trusted payload, credential map for authenticating connector sources
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-864'>TEIID-864</a>] - Need new deployment packing that works with JBoss AS or JBoss Embedded
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-870'>TEIID-870</a>] - Standardize the JDBC metadata
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-871'>TEIID-871</a>] - Refactor system vdb
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-877'>TEIID-877</a>] - Membership Domain Documentation is Out of Date
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-883'>TEIID-883</a>] - Convert model/group/element to schema/table/column
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-884'>TEIID-884</a>] - Calling restart on adminapi throws an exception
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-907'>TEIID-907</a>] - Add a sample connector template for starting a new connector development
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-910'>TEIID-910</a>] - Convert the Admin API implemention based on Profile Service
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-924'>TEIID-924</a>] - Remove metadataobjects
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-944'>TEIID-944</a>] - Provide a separate Admin connection
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-997'>TEIID-997</a>] - Investigate adding new metrics that added value for the user to monitor their servers
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-998'>TEIID-998</a>] - Define a new schema based VDB deployer xml (previously defined by ConfigurationInfo.def)
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1013'>TEIID-1013</a>] - Load the UDF based on the information provided in the vdb.xml
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1017'>TEIID-1017</a>] - Move defining the Data Roles to VDB deployer XML file. Map the roles to container roles
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1024'>TEIID-1024</a>] - Support conversion between clob and sql/xml
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1032'>TEIID-1032</a>] - Change nomenclature of "Connector Binding" to "Connection Factory"
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1068'>TEIID-1068</a>] - Provide a single Connector, that represents the DS and Teiid Connector for JDBC sources.
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1069'>TEIID-1069</a>] - Admin API Data Source method are not needed
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1077'>TEIID-1077</a>] - Split all Connector projects to define their "Translator" modules and "Connection" modules
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1078'>TEIID-1078</a>] - Build annotation based configuration for the Connector Translation layer
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1079'>TEIID-1079</a>] - Provide deployer for the Translation Layer components.
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1080'>TEIID-1080</a>] - Change Admin API, to support the Translation Layer and Connection layer concepts.
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1081'>TEIID-1081</a>] - Provide pre built "Translator" for all the popular data sources
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1087'>TEIID-1087</a>] - Add Function to Extract fragments from XML
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1089'>TEIID-1089</a>] - Combine the ExecutionFactory and Capabilities class into single class
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1113'>TEIID-1113</a>] - Change Get Request for VDB Operation to Call getRequestsForVDB() on the RuntimeEngine
+</li>
+<li>[<a href='https://jira.jboss.org/browse/TEIID-1114'>TEIID-1114</a>] - Add support for xmltable
+</li>
+</ul>
+
+
+<h2><a name="Documentation">Documentation and Help</a></h2>
+
+The <a href="http://www.jboss.org/teiid/">Teiid community project</a> is hosted on jboss.org.
+Documentation and help may be obtained from the local distribution under <a href="teiid-docs">teiid-docs</a> or the following locations.
+<ul>
+
+<li><a href="http://www.jboss.org/teiid/docs">Online Documentation</a></li>
+<li><a href="https://community.jboss.org/wiki/TheTeiidProject">Wiki</a></li>
+<li><a href="http://jira.jboss.org/jira/browse/TEIID">JIRA</a></li>
+<li><a href="http://community.jboss.org/en/teiid?view=discussions">Forums</a></li>
+</ul>
+
+
+<h2><a name="Licenses">Licenses</a></h2>
+
+<p>Teiid is licensed under the <a href="LICENSE-lgpl-2.1.txt">LGPL</a>. The
+license texts for Teiid and the thirdparty components it uses may be found in the teiid-docs/licenses
+directory of the distribution. <a href="teiid-docs/licenses">Browse
+Licenses</a>
+
+</p>
+
+<h2><a name="About">About JBoss, a
+division of Red Hat</a></h2>
+
+<p>JBoss, a division of <a href="http://www.redhat.com/jboss/">Red
+Hat</a>, is in the business of
+providing
+superior technical support to our customers. Our goal is to make
+Professional Open Source™ the <b>SAFE
+CHOICE</b>
+for you. We accomplish this by backing up our open source Java products
+with technical support services that are delivered by the core
+developers themselves. We can help you to train your staff and provide
+you with support at every stage of the application lifecycle - from
+development and integration through deployment and maintenance. Visit
+the <a href="http://www.jboss.com/services/index">JBoss
+Services</a> page for more
+information.</p>
+
+</BODY>
+</HTML>
\ No newline at end of file
Modified: trunk/client/src/main/java/org/teiid/adminapi/Admin.java
===================================================================
--- trunk/client/src/main/java/org/teiid/adminapi/Admin.java 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/client/src/main/java/org/teiid/adminapi/Admin.java 2010-06-25 15:16:34 UTC (rev 2302)
@@ -64,16 +64,6 @@
void deleteVDB(String vdbName, int vdbVersion) throws AdminException;
/**
- * Export VDB to byte array
- *
- * @param vdbName identifier of the {@link VDB}
- * @param vdbVersion {@link VDB} version
- * @return InputStream of the VDB
- * @throws AdminException
- */
- InputStream exportVDB(String vdbName, int vdbVersion) throws AdminException;
-
- /**
* Set a process level property.
* @param propertyName - name of the property
* @param propertyValue - value of the property
Modified: trunk/client/src/main/java/org/teiid/adminapi/AdminFactory.java
===================================================================
--- trunk/client/src/main/java/org/teiid/adminapi/AdminFactory.java 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/client/src/main/java/org/teiid/adminapi/AdminFactory.java 2010-06-25 15:16:34 UTC (rev 2302)
@@ -27,9 +27,11 @@
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.Properties;
+import java.util.concurrent.ExecutionException;
import org.teiid.client.security.LogonException;
import org.teiid.client.util.ExceptionUtil;
+import org.teiid.client.util.ResultsFuture;
import org.teiid.core.TeiidRuntimeException;
import org.teiid.core.util.PropertiesUtils;
import org.teiid.net.CommunicationException;
@@ -66,8 +68,18 @@
if (closed) {
throw new AdminComponentException(NetPlugin.Util.getString("ERR.014.001.0001")); //$NON-NLS-1$
}
- if (target != null && registry.isOpen()) {
- return target;
+ if (target != null) {
+ ResultsFuture<?> ping = registry.isOpen();
+ if (ping != null) {
+ try {
+ ping.get();
+ return target;
+ } catch (InterruptedException e) {
+ throw new CommunicationException(e);
+ } catch (ExecutionException e) {
+ //assume recoverable
+ }
+ }
}
try {
registry = serverConnectionFactory.getConnection(p);
@@ -88,23 +100,19 @@
return null;
}
Throwable t = null;
- for (int i = 0; i < 3; i++) {
- try {
- return method.invoke(getTarget(), args);
- } catch (InvocationTargetException e) {
- if (ExceptionUtil.getExceptionOfType(e, CommunicationException.class) != null) {
- // communication exception occurred, lose the old connection and try again.
- this.target = null;
- if (method.getName().endsWith("restart")) { //$NON-NLS-1$
- bounceSystem(true);
- return null;
- }
- continue;
+ try {
+ return method.invoke(getTarget(), args);
+ } catch (InvocationTargetException e) {
+ if (ExceptionUtil.getExceptionOfType(e, CommunicationException.class) != null) {
+ this.target = null;
+ if (method.getName().endsWith("restart")) { //$NON-NLS-1$
+ bounceSystem(true);
+ return null;
}
- throw e.getTargetException();
- } catch (CommunicationException e) {
- t = e;
}
+ throw e.getTargetException();
+ } catch (CommunicationException e) {
+ t = e;
}
throw t;
}
@@ -222,7 +230,6 @@
p = PropertiesUtils.clone(p);
p.remove(TeiidURL.JDBC.VDB_NAME);
p.remove(TeiidURL.JDBC.VDB_VERSION);
- p.setProperty(TeiidURL.CONNECTION.AUTO_FAILOVER, Boolean.TRUE.toString());
p.setProperty(TeiidURL.CONNECTION.ADMIN, Boolean.TRUE.toString());
try {
Modified: trunk/client/src/main/java/org/teiid/jdbc/XAConnectionImpl.java
===================================================================
--- trunk/client/src/main/java/org/teiid/jdbc/XAConnectionImpl.java 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/client/src/main/java/org/teiid/jdbc/XAConnectionImpl.java 2010-06-25 15:16:34 UTC (rev 2302)
@@ -39,6 +39,12 @@
import javax.sql.XAConnection;
import javax.transaction.xa.XAResource;
+import org.teiid.client.security.InvalidSessionException;
+import org.teiid.client.util.ExceptionUtil;
+import org.teiid.net.CommunicationException;
+import org.teiid.net.ServerConnection;
+import org.teiid.net.socket.SingleInstanceCommunicationException;
+
/**
* Implementation of XAConnection.
*/
@@ -71,7 +77,25 @@
try {
return method.invoke(this.proxiedConnection, args);
} catch (InvocationTargetException e) {
- //TODO: notify listeners about critical errors
+ Exception ex = ExceptionUtil.getExceptionOfType(e, InvalidSessionException.class);
+ if (ex == null) {
+ ex = ExceptionUtil.getExceptionOfType(e, CommunicationException.class);
+ if (ex instanceof SingleInstanceCommunicationException) {
+ ServerConnection sc = proxiedConnection.getServerConnection();
+ if (sc.isOpen() != null) {
+ ex = null;
+ }
+ }
+ }
+ if (ex != null) {
+ SQLException se = null;
+ if (e.getCause() instanceof SQLException) {
+ se = (SQLException)e.getCause();
+ } else {
+ se = TeiidSQLException.create(e.getCause());
+ }
+ notifyListener(se);
+ }
throw e.getTargetException();
}
}
@@ -93,14 +117,14 @@
}
public Connection getConnection() throws SQLException{
- ConnectionImpl conn = getMMConnection();
+ ConnectionImpl conn = getConnectionImpl();
Connection result = (Connection)Proxy.newProxyInstance(this.getClass().getClassLoader(), new Class[] {Connection.class}, new CloseInterceptor(conn));
return result;
}
- ConnectionImpl getMMConnection() throws SQLException {
+ ConnectionImpl getConnectionImpl() throws SQLException {
if(isClosed){
throw new SQLException(JDBCPlugin.Util.getString("MMXAConnection.connection_is_closed")); //$NON-NLS-1$
}
Modified: trunk/client/src/main/java/org/teiid/jdbc/XAResourceImpl.java
===================================================================
--- trunk/client/src/main/java/org/teiid/jdbc/XAResourceImpl.java 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/client/src/main/java/org/teiid/jdbc/XAResourceImpl.java 2010-06-25 15:16:34 UTC (rev 2302)
@@ -192,7 +192,7 @@
private ConnectionImpl getMMConnection() throws XAException{
try{
- return this.mmConnection.getMMConnection();
+ return this.mmConnection.getConnectionImpl();
}catch(SQLException e){
throw new XAException(XAException.XAER_RMFAIL);
}
Modified: trunk/client/src/main/java/org/teiid/net/ServerConnection.java
===================================================================
--- trunk/client/src/main/java/org/teiid/net/ServerConnection.java 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/client/src/main/java/org/teiid/net/ServerConnection.java 2010-06-25 15:16:34 UTC (rev 2302)
@@ -23,6 +23,7 @@
package org.teiid.net;
import org.teiid.client.security.LogonResult;
+import org.teiid.client.util.ResultsFuture;
public interface ServerConnection {
@@ -32,7 +33,7 @@
void close();
- boolean isOpen();
+ ResultsFuture<?> isOpen();
LogonResult getLogonResult();
Modified: trunk/client/src/main/java/org/teiid/net/socket/SocketServerConnection.java
===================================================================
--- trunk/client/src/main/java/org/teiid/net/socket/SocketServerConnection.java 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/client/src/main/java/org/teiid/net/socket/SocketServerConnection.java 2010-06-25 15:16:34 UTC (rev 2302)
@@ -49,6 +49,7 @@
import org.teiid.client.security.LogonException;
import org.teiid.client.security.LogonResult;
import org.teiid.client.util.ExceptionUtil;
+import org.teiid.client.util.ResultsFuture;
import org.teiid.core.TeiidComponentException;
import org.teiid.net.CommunicationException;
import org.teiid.net.ConnectionException;
@@ -100,20 +101,25 @@
private void schedulePing() {
if (this.pingTimer != null) {
this.pingTimer.schedule(new TimerTask() {
+
+ private ResultsFuture<?> ping;
+
@Override
public void run() {
- try {
- if (isOpen()) {
- logon.ping();
- return;
- }
- } catch (InvalidSessionException e) {
- shutdown(false);
- } catch (TeiidComponentException e) {
- close();
+ if (ping == null || !ping.isDone()) {
+ ping = isOpen();
}
- this.cancel();
+ if (ping != null && ping.isDone()) {
+ try {
+ ping.get();
+ return;
+ } catch (Throwable e) {
+ handlePingError(e);
+ }
+ }
+ this.cancel();
}
+
}, PING_INTERVAL, PING_INTERVAL);
}
}
@@ -128,10 +134,8 @@
if (closed) {
throw new CommunicationException(NetPlugin.Util.getString("SocketServerConnection.closed")); //$NON-NLS-1$
}
- if (this.serverInstance != null) {
- if (this.serverInstance.isOpen()) {
- return this.serverInstance;
- }
+ if (this.serverInstance != null && (!failOver || this.serverInstance.isOpen())) {
+ return this.serverInstance;
}
List<HostInfo> hostKeys = new ArrayList<HostInfo>(this.serverDiscovery.getKnownHosts(logonResult, this.serverInstance));
closeServerInstance();
@@ -221,15 +225,10 @@
} catch (Throwable t) {
exception = t;
}
- if (exception instanceof SingleInstanceCommunicationException
- || exception.getCause() instanceof SingleInstanceCommunicationException) {
- if (!failOver || !isOpen()) {
- break;
- }
- invalidateTarget();
- } else {
+ if (!failOver || ExceptionUtil.getExceptionOfType(exception, SingleInstanceCommunicationException.class) == null) {
break;
}
+ invalidateTarget();
//TODO: look for invalid session exception
}
throw ExceptionUtil.convertException(method, exception);
@@ -275,18 +274,33 @@
this.closed = true;
this.serverDiscovery.shutdown();
}
-
- public synchronized boolean isOpen() {
+
+ public synchronized ResultsFuture<?> isOpen() {
if (this.closed) {
- return false;
+ return null;
}
try {
- return selectServerInstance().isOpen();
+ if (!selectServerInstance().isOpen()) {
+ return null;
+ }
} catch (CommunicationException e) {
- return false;
+ return null;
}
+ try {
+ return logon.ping();
+ } catch (Throwable th) {
+ return null;
+ }
}
+ private void handlePingError(Throwable th) {
+ if (ExceptionUtil.getExceptionOfType(th, InvalidSessionException.class) != null) {
+ shutdown(false);
+ } else {
+ close();
+ }
+ }
+
public LogonResult getLogonResult() {
return logonResult;
}
Modified: trunk/client/src/test/java/org/teiid/jdbc/TestXAConnection.java
===================================================================
--- trunk/client/src/test/java/org/teiid/jdbc/TestXAConnection.java 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/client/src/test/java/org/teiid/jdbc/TestXAConnection.java 2010-06-25 15:16:34 UTC (rev 2302)
@@ -22,23 +22,23 @@
package org.teiid.jdbc;
+import static org.junit.Assert.*;
+
import java.sql.Connection;
import java.sql.SQLException;
+import javax.sql.ConnectionEvent;
+import javax.sql.ConnectionEventListener;
import javax.transaction.xa.XAResource;
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.teiid.client.security.InvalidSessionException;
import org.teiid.client.xa.XidImpl;
-import org.teiid.jdbc.ConnectionImpl;
-import org.teiid.jdbc.StatementImpl;
-import org.teiid.jdbc.XAConnectionImpl;
-import junit.framework.TestCase;
-
-
-
-public class TestXAConnection extends TestCase {
+public class TestXAConnection {
- public void testConnectionClose() throws Exception {
+ @Test public void testConnectionClose() throws Exception {
final ConnectionImpl mmConn = TestConnection.getMMConnection();
@@ -68,5 +68,27 @@
assertTrue(stmt.isClosed());
assertTrue(conn.getAutoCommit());
}
+
+ @Test public void testNotification() throws Exception {
+ XAConnectionImpl xaConn = new XAConnectionImpl(new XAConnectionImpl.ConnectionSource() {
+ //## JDBC4.0-begin ##
+ @Override
+ //## JDBC4.0-end ##
+ public ConnectionImpl createConnection() throws SQLException {
+ ConnectionImpl c = Mockito.mock(ConnectionImpl.class);
+ Mockito.doThrow(new SQLException(new InvalidSessionException())).when(c).commit();
+ return c;
+ }
+ });
+ ConnectionEventListener cel = Mockito.mock(ConnectionEventListener.class);
+ xaConn.addConnectionEventListener(cel);
+ Connection c = xaConn.getConnection();
+ try {
+ c.commit();
+ } catch (SQLException e) {
+
+ }
+ Mockito.verify(cel).connectionErrorOccurred((ConnectionEvent) Mockito.anyObject());
+ }
}
Modified: trunk/common-core/src/main/java/org/teiid/core/types/XMLType.java
===================================================================
--- trunk/common-core/src/main/java/org/teiid/core/types/XMLType.java 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/common-core/src/main/java/org/teiid/core/types/XMLType.java 2010-06-25 15:16:34 UTC (rev 2302)
@@ -26,6 +26,7 @@
import java.io.InputStream;
import java.io.ObjectInput;
import java.io.ObjectOutput;
+import java.io.OptionalDataException;
import java.io.OutputStream;
import java.io.Reader;
import java.io.Writer;
@@ -121,7 +122,11 @@
public void readExternal(ObjectInput in) throws IOException,
ClassNotFoundException {
super.readExternal(in);
- this.encoding = (String)in.readObject();
+ try {
+ this.encoding = (String)in.readObject();
+ } catch (OptionalDataException e) {
+ this.encoding = Streamable.ENCODING;
+ }
}
@Override
Modified: trunk/common-core/src/main/java/org/teiid/core/types/basic/FloatingNumberToBigDecimalTransform.java
===================================================================
--- trunk/common-core/src/main/java/org/teiid/core/types/basic/FloatingNumberToBigDecimalTransform.java 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/common-core/src/main/java/org/teiid/core/types/basic/FloatingNumberToBigDecimalTransform.java 2010-06-25 15:16:34 UTC (rev 2302)
@@ -46,7 +46,9 @@
* the transformation fails
*/
public Object transformDirect(Object value) throws TransformationException {
- return BigDecimal.valueOf(((Number)value).doubleValue());
+ BigDecimal result = BigDecimal.valueOf(((Number)value).doubleValue());
+ result = result.setScale(Math.max(result.scale(), (value instanceof Double ? 16 : 8) - result.precision()));
+ return result;
}
/**
Modified: trunk/documentation/admin-guide/src/main/docbook/en-US/admin_guide.xml
===================================================================
--- trunk/documentation/admin-guide/src/main/docbook/en-US/admin_guide.xml 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/documentation/admin-guide/src/main/docbook/en-US/admin_guide.xml 2010-06-25 15:16:34 UTC (rev 2302)
@@ -53,6 +53,6 @@
<xi:include href="content/adminshell.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="content/appendix-a.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="content/appendix-b.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
-
+ <xi:include href="content/appendix-c.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
</book>
Copied: trunk/documentation/admin-guide/src/main/docbook/en-US/content/appendix-c.xml (from rev 2301, branches/7.0.x/documentation/admin-guide/src/main/docbook/en-US/content/appendix-c.xml)
===================================================================
--- trunk/documentation/admin-guide/src/main/docbook/en-US/content/appendix-c.xml (rev 0)
+++ trunk/documentation/admin-guide/src/main/docbook/en-US/content/appendix-c.xml 2010-06-25 15:16:34 UTC (rev 2302)
@@ -0,0 +1,27 @@
+<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % CustomDTD SYSTEM "../../../../../../docbook/custom.dtd">
+%CustomDTD;
+]>
+<appendix id="system_properties">
+ <title>System Properties</title>
+ <para>Some of Teiid's low-level behavior can be configured via system properties, rather than through configuration files.
+ A typical place to set system properties for JBoss AS launches is in the <jboss-install>/bin/run.conf. A property setting
+ has the format -Dproperty=value</para>
+ <itemizedlist>
+ <listitem>
+ <para><emphasis>org.teiid.allowNanInfinity</emphasis> - defaults to false. Set to true to allow numeric functions
+ to return NaN (Not A Number) and +-Infinity. Note that these values are not covered by the SQL specification.</para>
+ </listitem>
+ <listitem>
+ <para><emphasis>org.teiid.useValueCache</emphasis> - defaults to true. Set to false to disable the value cache.
+ Value caching is used dynamically when buffer memory is running low to reuse identical values, but at a computational cost.
+ If there is memory available, you should first increase the buffer memory rather than disabling value caching.</para>
+ </listitem>
+ <listitem>
+ <para><emphasis>org.teiid.ansiQuotedIdentifiers</emphasis> - defaults to true.
+ Set to false to emulate Teiid 6.x and prior behavior of treating double quoted values without leading identifier parts as string literals, which is not
+ expected by the SQL specification.
+ </para>
+ </listitem>
+ </itemizedlist>
+</appendix>
\ No newline at end of file
Modified: trunk/documentation/admin-guide/src/main/docbook/en-US/content/vdb-deployment.xml
===================================================================
--- trunk/documentation/admin-guide/src/main/docbook/en-US/content/vdb-deployment.xml 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/documentation/admin-guide/src/main/docbook/en-US/content/vdb-deployment.xml 2010-06-25 15:16:34 UTC (rev 2302)
@@ -126,8 +126,7 @@
<para>VDBs from prior release contain an older configuration file version that is no longer supported.
You can use the migration utility (bin/migrate.sh or bin/migrate.bat) supplied with the
<link linkend="adminshell">AdminShell</link> download
- to update these VDBs for use with Teiid 7. Note - XML and File based sources from previous releases are changed, so do not work
- as is. The VDB models need to be updated for this as these are breaking changes.</para>
+ to update these VDBs for use with Teiid 7. Note - XML and File based sources from previous releases have changed, and require manual changes to the VDB.</para>
</sect1>
</chapter>
\ No newline at end of file
Modified: trunk/documentation/developer-guide/pom.xml
===================================================================
--- trunk/documentation/developer-guide/pom.xml 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/documentation/developer-guide/pom.xml 2010-06-25 15:16:34 UTC (rev 2302)
@@ -51,7 +51,7 @@
<format>
<formatName>pdf</formatName>
<stylesheetResource>classpath:/xslt/org/jboss/pdf.xsl</stylesheetResource>
- <finalName>developer_guide.pdf</finalName>
+ <finalName>teiid_developer_guide.pdf</finalName>
</format>
<format>
<formatName>html_single</formatName>
Copied: trunk/documentation/developer-guide/src/main/docbook/en-US/content/adminapi.xml (from rev 2301, branches/7.0.x/documentation/developer-guide/src/main/docbook/en-US/content/adminapi.xml)
===================================================================
--- trunk/documentation/developer-guide/src/main/docbook/en-US/content/adminapi.xml (rev 0)
+++ trunk/documentation/developer-guide/src/main/docbook/en-US/content/adminapi.xml 2010-06-25 15:16:34 UTC (rev 2302)
@@ -0,0 +1,19 @@
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % CustomDTD SYSTEM "../../../../../../docbook/custom.dtd">
+%CustomDTD;
+]>
+<chapter id="adminapi">
+ <title>AdminAPI</title>
+ <para>In most circumstances the admin operations will be performed through the admin console or AdminShell tooling, but it is also possible to invoke admin functionality directly in Java through the AdminAPI.</para>
+ <para>All classes for the AdminAPI are in the client jar under the <code>org.teiid.adminapi</code> package.</para>
+ <sect1 id="connecting">
+ <title>Connecting</title>
+ <para>An AdminAPI connection, which is represented by the <code>org.teiid.adminapi.Admin</code> interface, is obtained through the <code>org.teiid.adminapi.AdminFactory.createAdmin</code> methods.
+ <code>AdminFactory</code> is a singleton, see <code>AdminFactory.getInstance()</code>, so there is no need to create instance. The <code>Admin</code> instance automatically tests its connection and reconnects to a server in the event of a failure. The <code>close</code> method should be called to terminate the connection.</para>
+ <para>See your Teiid installation for the appropriate admin port, which by default 31443.</para>
+ </sect1>
+ <sect1 id="admin_methods">
+ <title>Admin Methods</title>
+ <para>Admin methods exist for monitoring, server administration, and configuration purposes. Note that the objects returned by the monitoring methods, such as getRequests, are read-only and cannot be used to change server state. See the JavaDocs for all of the details.</para>
+ </sect1>
+</chapter>
Modified: trunk/documentation/developer-guide/src/main/docbook/en-US/main.xml
===================================================================
--- trunk/documentation/developer-guide/src/main/docbook/en-US/main.xml 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/documentation/developer-guide/src/main/docbook/en-US/main.xml 2010-06-25 15:16:34 UTC (rev 2302)
@@ -50,6 +50,7 @@
<xi:include href="content/translator-api.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="content/extending-jdbc.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="content/udf.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="content/adminapi.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="content/logging.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="content/security.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="content/appendix-a.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
Modified: trunk/documentation/quick-start-example/pom.xml
===================================================================
--- trunk/documentation/quick-start-example/pom.xml 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/documentation/quick-start-example/pom.xml 2010-06-25 15:16:34 UTC (rev 2302)
@@ -51,7 +51,7 @@
<format>
<formatName>pdf</formatName>
<stylesheetResource>classpath:/xslt/org/jboss/pdf.xsl</stylesheetResource>
- <finalName>quick_start_example.pdf</finalName>
+ <finalName>teiid_quick_start_example.pdf</finalName>
</format>
<format>
<formatName>html_single</formatName>
Modified: trunk/documentation/reference/src/main/docbook/en-US/content/scalar_functions.xml
===================================================================
--- trunk/documentation/reference/src/main/docbook/en-US/content/scalar_functions.xml 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/documentation/reference/src/main/docbook/en-US/content/scalar_functions.xml 2010-06-25 15:16:34 UTC (rev 2302)
@@ -39,7 +39,7 @@
</entry>
<entry>
<para>x in {integer, long, float, double, biginteger,
- bigdecimal}, return type is same as x</para>
+ bigdecimal}, return type is same as x <footnote>The precision and scale of non-bigdecimal arithmetic function functions results matches that of Java. The results of bigdecimal operations match Java, except for division, which uses a preferred scale of max(16, dividend.scale + divisor.precision + 1), which then has trailing zeros removed by setting the scale to max(dividend.scale, normalized scale)</footnote></para>
</entry>
</row>
<row>
Modified: trunk/documentation/reference/src/main/docbook/en-US/content/sql_support.xml
===================================================================
--- trunk/documentation/reference/src/main/docbook/en-US/content/sql_support.xml 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/documentation/reference/src/main/docbook/en-US/content/sql_support.xml 2010-06-25 15:16:34 UTC (rev 2302)
@@ -514,7 +514,7 @@
</sect2>
<sect2 id="exec_command">
<title>EXECUTE Command</title>
- <para>The EXECUTE command is used to execute a procedure, such as a virtual procedure or a stored procedure. Procedures may have zero or more scalar input parameters. The return value from a procedure is a result set, the same as is returned from a SELECT. Note that EXEC can be used as a short form of this command.
+ <para>The EXECUTE command is used to execute a procedure, such as a virtual procedure or a stored procedure. Procedures may have zero or more scalar input parameters. The return value from a procedure is a result set, the same as is returned from a SELECT. Note that EXEC or CALL can be used as a short form of this command.
</para>
<itemizedlist>
<para>Example Syntax</para>
@@ -547,11 +547,16 @@
</para>
</listitem>
<listitem>
- <para>If the procedure does not return a result set, the values from the RETURN, OUT, and IN_OUT parameters will be returned as a single row.
+ <para>If the procedure does not return a result set, the values from the RETURN, OUT, and IN_OUT parameters will be returned as a single row when used as an inline view query.
</para>
</listitem>
</itemizedlist>
</sect2>
+ <sect2 id="cache_hint">
+ <title>Cache Hint</title>
+ <para>Non-update user commands may be preceded with a cache hint, e.g. /* cache */ select ..., to inform the engine that the results of command should be cached. The scope of the result, either session or global, will be deteremined automatically from the determinism level of the source queries and functions executed.</para>
+ <para>ResultSet caching must be enabled for this hint to have an effect.</para>
+ </sect2>
<sect2 id="procedural_relational">
<title>Procedural Relational Command</title>
<para> Procedural relational commands use the syntax of a SELECT to
Modified: trunk/documentation/reference/src/main/docbook/en-US/content/system_schema.xml
===================================================================
--- trunk/documentation/reference/src/main/docbook/en-US/content/system_schema.xml 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/documentation/reference/src/main/docbook/en-US/content/system_schema.xml 2010-06-25 15:16:34 UTC (rev 2302)
@@ -1505,7 +1505,7 @@
<para>Procedure</para>
</entry>
<entry>
- <para>Parameter Datatypes</para>
+ <para>Parameters</para>
</entry>
<entry>
<para>ResultSet</para>
@@ -1515,10 +1515,10 @@
<tbody>
<row>
<entry>
- <para>getCharacterVDBResource(resourcePath)</para>
+ <para>getCharacterVDBResource</para>
</entry>
<entry>
- <para>resourcePath is a string</para>
+ <para>(string resourcePath)/para>
</entry>
<entry>
<para>A single column containing the resource as a clob.</para>
@@ -1526,10 +1526,10 @@
</row>
<row>
<entry>
- <para>getBinaryVDBResource(resourcePath)</para>
+ <para>getBinaryVDBResource</para>
</entry>
<entry>
- <para>resourcePath is a string</para>
+ <para>(sting resourcePath)</para>
</entry>
<entry>
<para>A single column containing the resource as a blob.</para>
@@ -1537,10 +1537,10 @@
</row>
<row>
<entry>
- <para>getVDBResourcePaths()</para>
+ <para>getVDBResourcePaths</para>
</entry>
<entry>
- <para></para>
+ <para>()</para>
</entry>
<entry>
<para>A single column containing the resource paths as strings.</para>
@@ -1548,10 +1548,10 @@
</row>
<row>
<entry>
- <para>getXMLSchemas(document)</para>
+ <para>getXMLSchemas</para>
</entry>
<entry>
- <para>document is a string</para>
+ <para>string document</para>
</entry>
<entry>
<para>A single column containing the schemas as clobs.</para>
Modified: trunk/documentation/reference/src/main/docbook/en-US/content/translators.xml
===================================================================
--- trunk/documentation/reference/src/main/docbook/en-US/content/translators.xml 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/documentation/reference/src/main/docbook/en-US/content/translators.xml 2010-06-25 15:16:34 UTC (rev 2302)
@@ -143,7 +143,9 @@
<para><emphasis>mysql5</emphasis> - for use with MySQL version 5 or later.</para>
</listitem>
<listitem>
-<para><emphasis>oracle</emphasis> - for use with Oracle 9i or later.</para>
+<para><emphasis>oracle</emphasis> - for use with Oracle 9i or later. Sequences may be used with the Oracle translator.
+A sequence may be modeled as a table with a name in source of DUAL and columns with the name in source set to <sequencesequence name>.[nextval|currentval].
+You can use a sequence as the default value for insert columns by setting the column to autoincrement and the name in source to <element name>:SEQUENCE=<sequence name>.<sequence value>.</para>
</listitem>
<listitem>
<para><emphasis>postgresql</emphasis> - for use with 8.0 or later clients and 7.1 or later server.</para>
Modified: trunk/engine/src/main/java/org/teiid/common/buffer/FileStore.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/common/buffer/FileStore.java 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/engine/src/main/java/org/teiid/common/buffer/FileStore.java 2010-06-25 15:16:34 UTC (rev 2302)
@@ -105,12 +105,17 @@
}
@Override
- public void close() throws IOException {
+ public void flush() throws IOException {
if (bytesWritten) {
flushBuffer();
}
}
+ @Override
+ public void close() throws IOException {
+ flush();
+ }
+
}
static class CleanupReference extends PhantomReference<Object> {
Modified: trunk/engine/src/main/java/org/teiid/dqp/internal/datamgr/impl/ConnectorWorkItem.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/dqp/internal/datamgr/impl/ConnectorWorkItem.java 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/engine/src/main/java/org/teiid/dqp/internal/datamgr/impl/ConnectorWorkItem.java 2010-06-25 15:16:34 UTC (rev 2302)
@@ -53,12 +53,12 @@
import org.teiid.query.sql.lang.Command;
import org.teiid.query.sql.lang.StoredProcedure;
import org.teiid.query.sql.symbol.SingleElementSymbol;
-import org.teiid.translator.TranslatorException;
import org.teiid.translator.DataNotAvailableException;
import org.teiid.translator.Execution;
import org.teiid.translator.ExecutionFactory;
import org.teiid.translator.ProcedureExecution;
import org.teiid.translator.ResultSetExecution;
+import org.teiid.translator.TranslatorException;
import org.teiid.translator.UpdateExecution;
@@ -179,8 +179,13 @@
} catch (Throwable e) {
LogManager.logError(LogConstants.CTX_CONNECTOR, e, e.getMessage());
} finally {
- this.connector.closeConnection(connection, connectionFactory);
- manager.removeState(this.id);
+ try {
+ this.connector.closeConnection(connection, connectionFactory);
+ } catch (Throwable e) {
+ LogManager.logError(LogConstants.CTX_CONNECTOR, e, e.getMessage());
+ } finally {
+ manager.removeState(this.id);
+ }
LogManager.logDetail(LogConstants.CTX_CONNECTOR, new Object[] {this.id, "Closed connection"}); //$NON-NLS-1$
}
}
Modified: trunk/engine/src/main/java/org/teiid/dqp/internal/process/RequestWorkItem.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/dqp/internal/process/RequestWorkItem.java 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/engine/src/main/java/org/teiid/dqp/internal/process/RequestWorkItem.java 2010-06-25 15:16:34 UTC (rev 2302)
@@ -212,9 +212,6 @@
} finally {
if (this.state == ProcessingState.CLOSE && !isClosed) {
attemptClose();
- if (this.processingException != null) {
- sendError();
- }
} else if (isClosed) {
/*
* since there may be a client waiting notify them of a problem
Modified: trunk/engine/src/main/java/org/teiid/query/function/FunctionMethods.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/function/FunctionMethods.java 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/engine/src/main/java/org/teiid/query/function/FunctionMethods.java 2010-06-25 15:16:34 UTC (rev 2302)
@@ -27,6 +27,7 @@
import java.io.Serializable;
import java.math.BigDecimal;
import java.math.BigInteger;
+import java.math.RoundingMode;
import java.nio.charset.Charset;
import java.sql.Blob;
import java.sql.Clob;
@@ -163,7 +164,8 @@
}
public static Object divide(BigDecimal x, BigDecimal y) {
- return x.divide(y, BigDecimal.ROUND_HALF_UP);
+ BigDecimal bd = x.divide(y, Math.max(16, x.scale() + y.precision() + 1), RoundingMode.HALF_UP).stripTrailingZeros();
+ return bd.setScale(Math.max(x.scale(), bd.scale()));
}
// ================== Function = abs =====================
Modified: trunk/engine/src/main/java/org/teiid/query/function/source/XMLSystemFunctions.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/function/source/XMLSystemFunctions.java 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/engine/src/main/java/org/teiid/query/function/source/XMLSystemFunctions.java 2010-06-25 15:16:34 UTC (rev 2302)
@@ -88,6 +88,7 @@
*/
public class XMLSystemFunctions {
+ private static final String P_OUTPUT_VALIDATE_STRUCTURE = "com.ctc.wstx.outputValidateStructure"; //$NON-NLS-1$
//YEAR 0 in the server timezone. used to determine negative years
public static long YEAR_ZERO;
static String DATETIME_FORMAT = "yyyy-MM-dd'T'HH:mm:ss"; //$NON-NLS-1$
@@ -148,7 +149,7 @@
public void translate(Writer writer) throws TransformerException,
IOException {
try {
- XMLOutputFactory factory = XMLOutputFactory.newInstance();
+ XMLOutputFactory factory = getOutputFactory();
XMLEventWriter eventWriter = factory.createXMLEventWriter(writer);
XMLEventFactory eventFactory = XMLEventFactory.newInstance();
for (Evaluator.NameValuePair nameValuePair : values) {
@@ -157,6 +158,7 @@
}
addElement(nameValuePair.name, writer, eventWriter, eventFactory, namespaces, null, Collections.singletonList(nameValuePair.value));
}
+ eventWriter.close();
} catch (XMLStreamException e) {
throw new TransformerException(e);
}
@@ -183,10 +185,11 @@
public void translate(Writer writer) throws TransformerException,
IOException {
try {
- XMLOutputFactory factory = XMLOutputFactory.newInstance();
+ XMLOutputFactory factory = getOutputFactory();
XMLEventWriter eventWriter = factory.createXMLEventWriter(writer);
XMLEventFactory eventFactory = XMLEventFactory.newInstance();
addElement(name, writer, eventWriter, eventFactory, namespaces, attributes, contents);
+ eventWriter.close();
} catch (XMLStreamException e) {
throw new TransformerException(e);
}
@@ -256,13 +259,14 @@
public void translate(Writer writer) throws TransformerException,
IOException {
try {
- XMLOutputFactory factory = XMLOutputFactory.newInstance();
+ XMLOutputFactory factory = getOutputFactory();
XMLEventWriter eventWriter = factory.createXMLEventWriter(writer);
XMLEventFactory eventFactory = XMLEventFactory.newInstance();
convertValue(writer, eventWriter, eventFactory, xml);
for (Object object : other) {
convertValue(writer, eventWriter, eventFactory, object);
}
+ eventWriter.flush(); //woodstox needs a flush rather than a close
} catch (XMLStreamException e) {
throw new TransformerException(e);
}
@@ -272,6 +276,14 @@
return result;
}
+ private static XMLOutputFactory getOutputFactory() throws FactoryConfigurationError {
+ XMLOutputFactory factory = XMLOutputFactory.newInstance();
+ if (factory.isPropertySupported(P_OUTPUT_VALIDATE_STRUCTURE)) {
+ factory.setProperty(P_OUTPUT_VALIDATE_STRUCTURE, false);
+ }
+ return factory;
+ }
+
public static XMLType xmlPi(String name) {
return xmlPi(name, ""); //$NON-NLS-1$
}
@@ -302,11 +314,11 @@
}
}
- static int convertValue(Writer writer, XMLEventWriter eventWriter, XMLEventFactory eventFactory, Object object) throws IOException,
+ static void convertValue(Writer writer, XMLEventWriter eventWriter, XMLEventFactory eventFactory, Object object) throws IOException,
FactoryConfigurationError, XMLStreamException,
TransformerException {
if (object == null) {
- return 0;
+ return;
}
Reader r = null;
try {
@@ -330,30 +342,31 @@
r.close();
}
}
- return 1;
//TODO: blob - with base64 encoding
}
private static void convertReader(Writer writer,
XMLEventWriter eventWriter, Reader r, Type type)
throws XMLStreamException, IOException, FactoryConfigurationError {
- if (!(r instanceof BufferedReader)) {
- r = new BufferedReader(r);
- }
switch(type) {
case CONTENT:
case ELEMENT:
case PI:
- case COMMENT: //write the value directly to the writer
+ case COMMENT: {//write the value directly to the writer
eventWriter.flush();
- int chr = -1;
- while ((chr = r.read()) != -1) {
- writer.write(chr);
+ char[] buf = new char[1 << 13];
+ int read = -1;
+ while ((read = r.read(buf)) != -1) {
+ writer.write(buf, 0, read);
}
break;
+ }
case UNKNOWN: //assume a document
case DOCUMENT: //filter the doc declaration
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
+ if (!(r instanceof BufferedReader)) {
+ r = new BufferedReader(r);
+ }
XMLEventReader eventReader = inputFactory.createXMLEventReader(r);
eventReader = inputFactory.createFilteredReader(eventReader, new EventFilter() {
@Override
@@ -364,11 +377,11 @@
eventWriter.add(eventReader);
break;
case TEXT:
- CharBuffer buffer = CharBuffer.allocate(1 << 13);
XMLEventFactory eventFactory = XMLEventFactory.newInstance();
- while (r.read(buffer) != -1) {
- eventWriter.add(eventFactory.createCharacters(new String(buffer.array(), 0, buffer.position())));
- buffer.reset();
+ char[] buf = new char[1 << 13];
+ int read = -1;
+ while ((read = r.read(buf)) != -1) {
+ eventWriter.add(eventFactory.createCharacters(new String(buf, 0, read)));
}
break;
}
Modified: trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/CriteriaCapabilityValidatorVisitor.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/CriteriaCapabilityValidatorVisitor.java 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/CriteriaCapabilityValidatorVisitor.java 2010-06-25 15:16:34 UTC (rev 2302)
@@ -60,12 +60,16 @@
import org.teiid.query.sql.symbol.CaseExpression;
import org.teiid.query.sql.symbol.Function;
import org.teiid.query.sql.symbol.GroupSymbol;
+import org.teiid.query.sql.symbol.QueryString;
import org.teiid.query.sql.symbol.ScalarSubquery;
import org.teiid.query.sql.symbol.SearchedCaseExpression;
import org.teiid.query.sql.symbol.XMLAttributes;
import org.teiid.query.sql.symbol.XMLElement;
import org.teiid.query.sql.symbol.XMLForest;
import org.teiid.query.sql.symbol.XMLNamespaces;
+import org.teiid.query.sql.symbol.XMLParse;
+import org.teiid.query.sql.symbol.XMLQuery;
+import org.teiid.query.sql.symbol.XMLSerialize;
import org.teiid.query.sql.util.SymbolMap;
import org.teiid.query.sql.visitor.EvaluatableVisitor;
import org.teiid.query.sql.visitor.GroupCollectorVisitor;
@@ -119,6 +123,26 @@
markInvalid();
}
+ @Override
+ public void visit(XMLSerialize obj) {
+ markInvalid();
+ }
+
+ @Override
+ public void visit(XMLParse obj) {
+ markInvalid();
+ }
+
+ @Override
+ public void visit(XMLQuery obj) {
+ markInvalid();
+ }
+
+ @Override
+ public void visit(QueryString obj) {
+ markInvalid();
+ }
+
public void visit(AggregateSymbol obj) {
try {
if(! CapabilitiesUtil.supportsAggregateFunction(modelID, obj, metadata, capFinder)) {
Modified: trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleCollapseSource.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleCollapseSource.java 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleCollapseSource.java 2010-06-25 15:16:34 UTC (rev 2302)
@@ -159,8 +159,10 @@
if (queryCommand instanceof SetQuery) {
((SetQuery)queryCommand).setAll(false);
} else if (!NewCalculateCostUtil.usesKey(accessNode, queryCommand.getProjectedSymbols(), metadata) && CapabilitiesUtil.supports(Capability.QUERY_SELECT_DISTINCT, RuleRaiseAccess.getModelIDFromAccess(accessNode, metadata), metadata, capFinder)) {
- //TODO: could check for group by and a select clause containing all group by expressions
- ((Query)queryCommand).getSelect().setDistinct(true);
+ Query query = (Query)queryCommand;
+ if (!QueryRewriter.isDistinctWithGroupBy(query)) {
+ ((Query)queryCommand).getSelect().setDistinct(true);
+ }
}
}
Modified: trunk/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java 2010-06-25 15:16:34 UTC (rev 2302)
@@ -654,6 +654,9 @@
if (query.getGroupBy() == null) {
return query;
}
+ if (isDistinctWithGroupBy(query)) {
+ query.getSelect().setDistinct(false);
+ }
// we check for group by expressions here to create an ANSI SQL plan
boolean hasExpression = false;
for (final Iterator iterator = query.getGroupBy().getSymbols().iterator(); !hasExpression && iterator.hasNext();) {
@@ -724,6 +727,23 @@
rewriteExpressions(innerSelect);
return query;
}
+
+ public static boolean isDistinctWithGroupBy(Query query) {
+ GroupBy groupBy = query.getGroupBy();
+ if (groupBy == null) {
+ return false;
+ }
+ HashSet<Expression> selectExpressions = new HashSet<Expression>();
+ for (SingleElementSymbol selectExpr : (List<SingleElementSymbol>)query.getSelect().getProjectedSymbols()) {
+ selectExpressions.add(SymbolMap.getExpression(selectExpr));
+ }
+ for (SingleElementSymbol groupByExpr : (List<SingleElementSymbol>)groupBy.getSymbols()) {
+ if (!selectExpressions.contains(groupByExpr)) {
+ return false;
+ }
+ }
+ return true;
+ }
private void rewriteExpressions(LanguageObject obj) throws TeiidComponentException, TeiidProcessingException{
if (obj == null) {
Modified: trunk/engine/src/test/java/org/teiid/common/buffer/impl/TestFileStorageManager.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/common/buffer/impl/TestFileStorageManager.java 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/engine/src/test/java/org/teiid/common/buffer/impl/TestFileStorageManager.java 2010-06-25 15:16:34 UTC (rev 2302)
@@ -32,6 +32,7 @@
import org.junit.Test;
import org.teiid.common.buffer.FileStore;
+import org.teiid.common.buffer.FileStore.FileStoreOutputStream;
import org.teiid.core.TeiidComponentException;
import org.teiid.core.util.UnitTestUtil;
@@ -87,6 +88,16 @@
FileStore store = sm.createFileStore(tsID);
writeBytes(store);
}
+
+ @Test public void testFlush() throws Exception {
+ FileStorageManager sm = getStorageManager(null, null, null);
+ FileStore store = sm.createFileStore("0");
+ FileStoreOutputStream fsos = store.createOutputStream(2);
+ fsos.write(new byte[3]);
+ fsos.write(1);
+ fsos.flush();
+ assertEquals(0, fsos.getCount());
+ }
static Random r = new Random();
Modified: trunk/engine/src/test/java/org/teiid/common/queue/TestStatsCapturingWorkManager.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/common/queue/TestStatsCapturingWorkManager.java 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/engine/src/test/java/org/teiid/common/queue/TestStatsCapturingWorkManager.java 2010-06-25 15:16:34 UTC (rev 2302)
@@ -32,6 +32,7 @@
import javax.resource.spi.work.WorkManager;
import javax.resource.spi.work.WorkRejectedException;
+import org.junit.Ignore;
import org.junit.Test;
import org.teiid.adminapi.impl.WorkerPoolStatisticsMetadata;
import org.teiid.dqp.internal.process.StatsCapturingWorkManager;
@@ -61,6 +62,7 @@
assertEquals("Expected threads to be maxed out", MAX_THREADS, stats.getHighestActiveThreads()); //$NON-NLS-1$
}
+ @Ignore
@Test public void testThreadReuse() throws Exception {
final long SINGLE_WAIT = 50;
final long NUM_THREADS = 5;
Modified: trunk/engine/src/test/java/org/teiid/query/function/TestFunctionLibrary.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/function/TestFunctionLibrary.java 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/engine/src/test/java/org/teiid/query/function/TestFunctionLibrary.java 2010-06-25 15:16:34 UTC (rev 2302)
@@ -611,7 +611,7 @@
// one digit precision
@Test public void testInvokeDivide6() {
- helpInvokeMethod("/", new Object[] { new BigDecimal("3"), new BigDecimal("2") }, new BigDecimal("2")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ helpInvokeMethod("/", new Object[] { new BigDecimal("3"), new BigDecimal("2") }, new BigDecimal("1.5")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
}
@Test public void testInvokeDivide7() throws Exception {
Modified: trunk/engine/src/test/java/org/teiid/query/optimizer/TestAggregatePushdown.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/optimizer/TestAggregatePushdown.java 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/engine/src/test/java/org/teiid/query/optimizer/TestAggregatePushdown.java 2010-06-25 15:16:34 UTC (rev 2302)
@@ -205,7 +205,7 @@
ProcessorPlan plan = TestOptimizer.helpPlan(sql,
metadata,
null, getAggregatesFinder(),
- new String[] {"SELECT DISTINCT g_0.p_productid AS c_0 FROM m2.product AS g_0 WHERE g_0.p_divid = 100 ORDER BY c_0", "SELECT DISTINCT g_0.o_productid AS c_0, g_0.o_dealerid AS c_1, SUM(g_0.o_amount) AS c_2 FROM m1.\"order\" AS g_0, m1.dealer AS g_1 WHERE (g_0.o_dealerid = g_1.d_dealerid) AND (g_1.d_state = 'CA') AND (g_0.o_productid IN (<dependent values>)) GROUP BY g_0.o_productid, g_0.o_dealerid ORDER BY c_0"}, //$NON-NLS-1$ //$NON-NLS-2$
+ new String[] {"SELECT DISTINCT g_0.p_productid AS c_0 FROM m2.product AS g_0 WHERE g_0.p_divid = 100 ORDER BY c_0", "SELECT g_0.o_productid AS c_0, g_0.o_dealerid AS c_1, SUM(g_0.o_amount) AS c_2 FROM m1.\"order\" AS g_0, m1.dealer AS g_1 WHERE (g_0.o_dealerid = g_1.d_dealerid) AND (g_1.d_state = 'CA') AND (g_0.o_productid IN (<dependent values>)) GROUP BY g_0.o_productid, g_0.o_dealerid ORDER BY c_0"}, //$NON-NLS-1$ //$NON-NLS-2$
TestOptimizer.ComparisonMode.EXACT_COMMAND_STRING );
TestOptimizer.checkNodeTypes(plan, new int[] {
@@ -235,7 +235,7 @@
ProcessorPlan plan = TestOptimizer.helpPlan(sql,
metadata,
null, getAggregatesFinder(),
- new String[] {"SELECT DISTINCT g_0.p_productid AS c_0 FROM m2.product AS g_0 WHERE g_0.p_divid = 100 ORDER BY c_0", "SELECT DISTINCT g_0.o_productid AS c_0, g_0.o_dealerid AS c_1, MAX(g_0.o_amount) AS c_2, SUM(g_0.o_amount) AS c_3 FROM m1.\"order\" AS g_0, m1.dealer AS g_1 WHERE (g_0.o_dealerid = g_1.d_dealerid) AND (g_1.d_state = 'CA') AND (g_0.o_productid IN (<dependent values>)) GROUP BY g_0.o_productid, g_0.o_dealerid ORDER BY c_0"}, //$NON-NLS-1$ //$NON-NLS-2$
+ new String[] {"SELECT DISTINCT g_0.p_productid AS c_0 FROM m2.product AS g_0 WHERE g_0.p_divid = 100 ORDER BY c_0", "SELECT g_0.o_productid AS c_0, g_0.o_dealerid AS c_1, MAX(g_0.o_amount) AS c_2, SUM(g_0.o_amount) AS c_3 FROM m1.\"order\" AS g_0, m1.dealer AS g_1 WHERE (g_0.o_dealerid = g_1.d_dealerid) AND (g_1.d_state = 'CA') AND (g_0.o_productid IN (<dependent values>)) GROUP BY g_0.o_productid, g_0.o_dealerid ORDER BY c_0"}, //$NON-NLS-1$ //$NON-NLS-2$
TestOptimizer.ComparisonMode.EXACT_COMMAND_STRING );
TestOptimizer.checkNodeTypes(plan, new int[] {
@@ -298,7 +298,7 @@
String sql = "SELECT stddev_pop(y.e2) from pm1.g1 x, pm2.g1 y where x.e3 = y.e3 group by x.e2, y.e1"; //$NON-NLS-1$
ProcessorPlan plan = TestOptimizer.helpPlan(sql, FakeMetadataFactory.example1Cached(), null, capFinder,
- new String[] {"SELECT DISTINCT g_0.e3 AS c_0, g_0.e1 AS c_1, COUNT(g_0.e2) AS c_2, SUM(power(g_0.e2, 2)) AS c_3, SUM(g_0.e2) AS c_4 FROM pm2.g1 AS g_0 GROUP BY g_0.e3, g_0.e1 ORDER BY c_0", "SELECT DISTINCT g_0.e3 AS c_0, g_0.e2 AS c_1 FROM pm1.g1 AS g_0 GROUP BY g_0.e3, g_0.e2 ORDER BY c_0"}, TestOptimizer.ComparisonMode.EXACT_COMMAND_STRING); //$NON-NLS-1$ //$NON-NLS-2$
+ new String[] {"SELECT g_0.e3 AS c_0, g_0.e1 AS c_1, COUNT(g_0.e2) AS c_2, SUM(power(g_0.e2, 2)) AS c_3, SUM(g_0.e2) AS c_4 FROM pm2.g1 AS g_0 GROUP BY g_0.e3, g_0.e1 ORDER BY c_0", "SELECT g_0.e3 AS c_0, g_0.e2 AS c_1 FROM pm1.g1 AS g_0 GROUP BY g_0.e3, g_0.e2 ORDER BY c_0"}, TestOptimizer.ComparisonMode.EXACT_COMMAND_STRING); //$NON-NLS-1$ //$NON-NLS-2$
TestOptimizer.checkNodeTypes(plan, new int[] {
2, // Access
@@ -600,7 +600,7 @@
metadata,
null, capFinder,
new String[] {"SELECT g_0.\"MONTH\", g_0.\"YEAR\" FROM msModel.\"TIME\" AS g_0 WHERE g_0.\"YEAR\" = '1999'", //$NON-NLS-1$
- "SELECT DISTINCT g_0.\"MONTH\" AS c_0, g_0.CITY AS c_1, SUM(g_0.SALES) AS c_2 FROM db2model.SALES AS g_0 WHERE (g_0.\"MONTH\" IN (<dependent values>)) AND (g_0.CITY IN (<dependent values>)) GROUP BY g_0.\"MONTH\", g_0.CITY ORDER BY c_0, c_1", //$NON-NLS-1$
+ "SELECT g_0.\"MONTH\" AS c_0, g_0.CITY AS c_1, SUM(g_0.SALES) AS c_2 FROM db2model.SALES AS g_0 WHERE (g_0.\"MONTH\" IN (<dependent values>)) AND (g_0.CITY IN (<dependent values>)) GROUP BY g_0.\"MONTH\", g_0.CITY ORDER BY c_0, c_1", //$NON-NLS-1$
"SELECT g_0.CITY, g_0.REGION FROM oraclemodel.GEOGRAPHY AS g_0 WHERE g_0.REGION IN ('BORDEAUX', 'POLINESIA')"}, //$NON-NLS-1$
ComparisonMode.EXACT_COMMAND_STRING );
@@ -648,7 +648,7 @@
metadata,
null, capFinder,
new String[] {"SELECT g_0.\"MONTH\", g_0.\"YEAR\" FROM msModel.\"TIME\" AS g_0 WHERE g_0.\"YEAR\" = '1999'", //$NON-NLS-1$
- "SELECT DISTINCT g_0.\"MONTH\" AS c_0, g_0.CITY AS c_1, SUM(g_0.SALES) AS c_2 FROM db2model.SALES AS g_0 WHERE (g_0.\"MONTH\" IN (<dependent values>)) AND (g_0.CITY IN (<dependent values>)) GROUP BY g_0.\"MONTH\", g_0.CITY ORDER BY c_0, c_1", //$NON-NLS-1$
+ "SELECT g_0.\"MONTH\" AS c_0, g_0.CITY AS c_1, SUM(g_0.SALES) AS c_2 FROM db2model.SALES AS g_0 WHERE (g_0.\"MONTH\" IN (<dependent values>)) AND (g_0.CITY IN (<dependent values>)) GROUP BY g_0.\"MONTH\", g_0.CITY ORDER BY c_0, c_1", //$NON-NLS-1$
"SELECT g_0.CITY, g_0.REGION FROM oraclemodel.GEOGRAPHY AS g_0 WHERE g_0.REGION IN ('BORDEAUX', 'POLINESIA')"}, //$NON-NLS-1$
ComparisonMode.EXACT_COMMAND_STRING );
@@ -695,7 +695,7 @@
ProcessorPlan plan = helpPlan(sql,
metadata,
null, capFinder,
- new String[] {"SELECT DISTINCT g_0.\"MONTH\" AS c_0, g_1.REGION AS c_1, SUM(g_0.SALES) AS c_2 FROM db2model.SALES AS g_0, db2model.GEOGRAPHY2 AS g_1 WHERE (g_0.CITY = g_1.CITY) AND (g_1.REGION IN ('BORDEAUX', 'POLINESIA')) AND (g_0.\"MONTH\" IN (<dependent values>)) GROUP BY g_0.\"MONTH\", g_1.REGION ORDER BY c_0", //$NON-NLS-1$
+ new String[] {"SELECT g_0.\"MONTH\" AS c_0, g_1.REGION AS c_1, SUM(g_0.SALES) AS c_2 FROM db2model.SALES AS g_0, db2model.GEOGRAPHY2 AS g_1 WHERE (g_0.CITY = g_1.CITY) AND (g_1.REGION IN ('BORDEAUX', 'POLINESIA')) AND (g_0.\"MONTH\" IN (<dependent values>)) GROUP BY g_0.\"MONTH\", g_1.REGION ORDER BY c_0", //$NON-NLS-1$
"SELECT g_0.\"MONTH\" AS c_0, g_0.\"YEAR\" AS c_1 FROM msModel.\"TIME\" AS g_0 WHERE g_0.\"YEAR\" = '1999' ORDER BY c_0"}, //$NON-NLS-1$
ComparisonMode.EXACT_COMMAND_STRING );
Modified: trunk/engine/src/test/java/org/teiid/query/optimizer/TestInlineView.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/optimizer/TestInlineView.java 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/engine/src/test/java/org/teiid/query/optimizer/TestInlineView.java 2010-06-25 15:16:34 UTC (rev 2302)
@@ -135,7 +135,7 @@
public static InlineViewCase createInlineViewWithDistinctAndOrderBy() throws Exception {
String userQuery = "select Q1.a from (select distinct count(bqt1.smalla.intkey) as a, bqt1.smalla.intkey from bqt1.smalla group by bqt1.smalla.intkey order by bqt1.smalla.intkey) q1 inner join bqt1.smallb as q2 on q1.intkey = q2.intkey where q1.a = 1 and q1.a + q1.intkey = 2"; //$NON-NLS-1$
- String optimizedQuery = "SELECT v_0.c_0 FROM (SELECT DISTINCT COUNT(g_0.intkey) AS c_0, g_0.intkey AS c_1 FROM bqt1.smalla AS g_0 GROUP BY g_0.intkey HAVING ((COUNT(g_0.intkey) + g_0.intkey) = 2) AND (COUNT(g_0.intkey) = 1)) AS v_0, bqt1.smallb AS g_1 WHERE v_0.c_1 = g_1.intkey"; //$NON-NLS-1$
+ String optimizedQuery = "SELECT v_0.c_1 FROM (SELECT g_0.intkey AS c_0, COUNT(g_0.intkey) AS c_1 FROM bqt1.smalla AS g_0 GROUP BY g_0.intkey HAVING ((COUNT(g_0.intkey) + g_0.intkey) = 2) AND (COUNT(g_0.intkey) = 1)) AS v_0, bqt1.smallb AS g_1 WHERE v_0.c_0 = g_1.intkey"; //$NON-NLS-1$
List expectedResults = new ArrayList();
List row1 = new ArrayList();
@@ -173,7 +173,7 @@
public static InlineViewCase createInlineViewWithOuterOrderAndGroup() throws Exception {
String userQuery = "select count(Q1.a) b from (select distinct count(bqt1.smalla.intkey) as a, bqt1.smalla.intkey from bqt1.smalla group by bqt1.smalla.intkey order by bqt1.smalla.intkey) q1 inner join bqt1.smallb as q2 on q1.intkey = q2.intkey where q1.a = 1 and q1.a + q1.intkey = 2 group by Q1.a order by b"; //$NON-NLS-1$
- String optimizedQuery = "SELECT COUNT(v_0.c_0) AS c_0 FROM (SELECT DISTINCT COUNT(g_0.intkey) AS c_0, g_0.intkey AS c_1 FROM bqt1.smalla AS g_0 GROUP BY g_0.intkey HAVING ((COUNT(g_0.intkey) + g_0.intkey) = 2) AND (COUNT(g_0.intkey) = 1)) AS v_0, bqt1.smallb AS g_1 WHERE v_0.c_1 = g_1.intkey GROUP BY v_0.c_0 ORDER BY c_0"; //$NON-NLS-1$
+ String optimizedQuery = "SELECT COUNT(v_0.c_1) AS c_0 FROM (SELECT g_0.intkey AS c_0, COUNT(g_0.intkey) AS c_1 FROM bqt1.smalla AS g_0 GROUP BY g_0.intkey HAVING ((COUNT(g_0.intkey) + g_0.intkey) = 2) AND (COUNT(g_0.intkey) = 1)) AS v_0, bqt1.smallb AS g_1 WHERE v_0.c_0 = g_1.intkey GROUP BY v_0.c_1 ORDER BY c_0"; //$NON-NLS-1$
List expectedResults = new ArrayList();
List row1 = new ArrayList();
@@ -193,7 +193,7 @@
public static InlineViewCase crateInlineViewsInUnions() throws Exception {
String userQuery = "select q1.a from (select count(bqt1.smalla.intkey) as a, bqt1.smalla.intkey from bqt1.smalla group by bqt1.smalla.intkey) q1 left outer join bqt1.smallb on q1.a = bqt1.smallb.intkey where q1.intkey = 1 union all (select count(Q1.a) b from (select distinct count(bqt1.smalla.intkey) as a, bqt1.smalla.intkey from bqt1.smalla group by bqt1.smalla.intkey order by bqt1.smalla.intkey) q1 inner join bqt1.smallb as q2 on q1.intkey = q2.intkey where q1.a = 1 and q1.a + q1.intkey = 2 group by Q1.a order by b)"; //$NON-NLS-1$
- String optimizedQuery = "SELECT v_1.c_0 FROM (SELECT COUNT(g_2.intkey) AS c_0 FROM bqt1.smalla AS g_2 WHERE g_2.intkey = 1 GROUP BY g_2.intkey) AS v_1 LEFT OUTER JOIN bqt1.smallb AS g_3 ON v_1.c_0 = g_3.intkey UNION ALL SELECT COUNT(v_0.c_0) AS c_0 FROM (SELECT DISTINCT COUNT(g_0.IntKey) AS c_0, g_0.IntKey AS c_1 FROM bqt1.smalla AS g_0 GROUP BY g_0.IntKey HAVING ((COUNT(g_0.IntKey) + g_0.IntKey) = 2) AND (COUNT(g_0.IntKey) = 1)) AS v_0, bqt1.smallb AS g_1 WHERE v_0.c_1 = g_1.intkey GROUP BY v_0.c_0"; //$NON-NLS-1$
+ String optimizedQuery = "SELECT v_1.c_0 FROM (SELECT COUNT(g_2.intkey) AS c_0 FROM bqt1.smalla AS g_2 WHERE g_2.intkey = 1 GROUP BY g_2.intkey) AS v_1 LEFT OUTER JOIN bqt1.smallb AS g_3 ON v_1.c_0 = g_3.intkey UNION ALL SELECT COUNT(v_0.c_1) AS c_0 FROM (SELECT g_0.IntKey AS c_0, COUNT(g_0.IntKey) AS c_1 FROM bqt1.smalla AS g_0 GROUP BY g_0.IntKey HAVING ((COUNT(g_0.IntKey) + g_0.IntKey) = 2) AND (COUNT(g_0.IntKey) = 1)) AS v_0, bqt1.smallb AS g_1 WHERE v_0.c_0 = g_1.intkey GROUP BY v_0.c_1"; //$NON-NLS-1$
List expectedResults = new ArrayList();
List row1 = new ArrayList();
@@ -218,7 +218,7 @@
public static InlineViewCase createUnionInInlineView() throws Exception{
String userQuery = "select t1.intkey from (select case when q1.a=1 then 2 else 1 end as a from (select count(bqt1.smalla.intkey) as a, bqt1.smalla.intkey from bqt1.smalla group by bqt1.smalla.intkey) q1 left outer join bqt1.smallb on q1.a = bqt1.smallb.intkey where q1.intkey = 1 union all (select count(Q1.a) b from (select distinct count(bqt1.smalla.intkey) as a, bqt1.smalla.intkey from bqt1.smalla group by bqt1.smalla.intkey order by bqt1.smalla.intkey) q1 inner join bqt1.smallb as q2 on q1.intkey = q2.intkey where q1.a = 1 and q1.a + q1.intkey = 2 group by Q1.a order by b)) as q3, bqt1.smallb as t1 where q3.a = t1.intkey order by t1.intkey"; //$NON-NLS-1$
- String optimizedQuery = "SELECT g_4.intkey AS c_0 FROM (SELECT CASE WHEN v_1.c_0 = 1 THEN 2 ELSE 1 END AS c_0 FROM (SELECT COUNT(g_2.intkey) AS c_0 FROM bqt1.smalla AS g_2 WHERE g_2.intkey = 1 GROUP BY g_2.intkey) AS v_1 LEFT OUTER JOIN bqt1.smallb AS g_3 ON v_1.c_0 = g_3.intkey UNION ALL SELECT COUNT(v_0.c_0) AS c_0 FROM (SELECT DISTINCT COUNT(g_0.IntKey) AS c_0, g_0.IntKey AS c_1 FROM bqt1.smalla AS g_0 GROUP BY g_0.IntKey HAVING ((COUNT(g_0.IntKey) + g_0.IntKey) = 2) AND (COUNT(g_0.IntKey) = 1)) AS v_0, bqt1.smallb AS g_1 WHERE v_0.c_1 = g_1.intkey GROUP BY v_0.c_0) AS v_2, bqt1.smallb AS g_4 WHERE v_2.c_0 = g_4.intkey ORDER BY c_0"; //$NON-NLS-1$
+ String optimizedQuery = "SELECT g_4.intkey AS c_0 FROM (SELECT CASE WHEN v_1.c_0 = 1 THEN 2 ELSE 1 END AS c_0 FROM (SELECT COUNT(g_2.intkey) AS c_0 FROM bqt1.smalla AS g_2 WHERE g_2.intkey = 1 GROUP BY g_2.intkey) AS v_1 LEFT OUTER JOIN bqt1.smallb AS g_3 ON v_1.c_0 = g_3.intkey UNION ALL SELECT COUNT(v_0.c_1) AS c_0 FROM (SELECT g_0.IntKey AS c_0, COUNT(g_0.IntKey) AS c_1 FROM bqt1.smalla AS g_0 GROUP BY g_0.IntKey HAVING ((COUNT(g_0.IntKey) + g_0.IntKey) = 2) AND (COUNT(g_0.IntKey) = 1)) AS v_0, bqt1.smallb AS g_1 WHERE v_0.c_0 = g_1.intkey GROUP BY v_0.c_1) AS v_2, bqt1.smallb AS g_4 WHERE v_2.c_0 = g_4.intkey ORDER BY c_0"; //$NON-NLS-1$
List expectedResults = new ArrayList();
List row1 = new ArrayList();
@@ -257,7 +257,7 @@
QueryMetadataInterface metadata = createInlineViewMetadata(capFinder);
ProcessorPlan plan = helpPlan("select a, b from (select distinct count(intNum) a, count(stringKey), bqt1.smalla.intkey as b from bqt1.smalla group by bqt1.smalla.intkey) q1 order by q1.a", //$NON-NLS-1$
- metadata, null, capFinder, new String[] {"SELECT a, b FROM (SELECT DISTINCT COUNT(intNum) AS a, COUNT(stringKey) AS count1, bqt1.smalla.intkey AS b FROM bqt1.smalla GROUP BY bqt1.smalla.intkey) AS q1 ORDER BY a"}, true); //$NON-NLS-1$
+ metadata, null, capFinder, new String[] {"SELECT COUNT(g_0.intNum) AS c_0, g_0.intkey AS c_1 FROM bqt1.smalla AS g_0 GROUP BY g_0.intkey ORDER BY c_0"}, true); //$NON-NLS-1$
checkNodeTypes(plan, FULL_PUSHDOWN);
}
Modified: trunk/engine/src/test/java/org/teiid/query/optimizer/TestRuleMergeVirtual.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/optimizer/TestRuleMergeVirtual.java 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/engine/src/test/java/org/teiid/query/optimizer/TestRuleMergeVirtual.java 2010-06-25 15:16:34 UTC (rev 2302)
@@ -50,10 +50,10 @@
}
@Test public void testSimpleMergeGroupBy1() {
- ProcessorPlan plan = TestOptimizer.helpPlan("SELECT x FROM (SELECT distinct e1, max(e2) as x FROM pm1.g1 GROUP BY e1) AS z", //$NON-NLS-1$
+ ProcessorPlan plan = TestOptimizer.helpPlan("SELECT x FROM (SELECT distinct min(e1), max(e2) as x FROM pm1.g1 GROUP BY e1) AS z", //$NON-NLS-1$
FakeMetadataFactory.example1Cached(), null, TestAggregatePushdown.getAggregatesFinder(),
new String[] {
- "SELECT v_0.c_1 FROM (SELECT DISTINCT g_0.e1 AS c_0, MAX(g_0.e2) AS c_1 FROM pm1.g1 AS g_0 GROUP BY g_0.e1) AS v_0"}, TestOptimizer.SHOULD_SUCCEED); //$NON-NLS-1$
+ "SELECT v_0.c_1 FROM (SELECT DISTINCT MIN(g_0.e1) AS c_0, MAX(g_0.e2) AS c_1 FROM pm1.g1 AS g_0 GROUP BY g_0.e1) AS v_0"}, TestOptimizer.SHOULD_SUCCEED); //$NON-NLS-1$
TestOptimizer.checkNodeTypes(plan, TestOptimizer.FULL_PUSHDOWN);
}
@@ -75,10 +75,10 @@
@Test public void testSimpleMergeGroupBy3() {
FakeMetadataFacade metadata = FakeMetadataFactory.example1Cached();
- ProcessorPlan plan = TestOptimizer.helpPlan("SELECT distinct x, e1 FROM (SELECT e1, max(e2) as x FROM pm1.g1 GROUP BY e1) AS z", //$NON-NLS-1$
+ ProcessorPlan plan = TestOptimizer.helpPlan("SELECT distinct x, e1 FROM (SELECT min(e1) as e1, max(e2) as x FROM pm1.g1 GROUP BY e1) AS z", //$NON-NLS-1$
metadata, null, TestAggregatePushdown.getAggregatesFinder(),
new String[] {
- "SELECT DISTINCT MAX(e2) AS x, e1 FROM pm1.g1 GROUP BY e1"}, TestOptimizer.SHOULD_SUCCEED); //$NON-NLS-1$
+ "SELECT DISTINCT MAX(e2) AS x, MIN(e1) FROM pm1.g1 GROUP BY e1"}, TestOptimizer.SHOULD_SUCCEED); //$NON-NLS-1$
TestOptimizer.checkNodeTypes(plan, TestOptimizer.FULL_PUSHDOWN);
}
@@ -113,10 +113,10 @@
@Test public void testSimpleMergeGroupBy7() {
FakeMetadataFacade metadata = FakeMetadataFactory.example1Cached();
- ProcessorPlan plan = TestOptimizer.helpPlan("SELECT distinct x, e1 FROM (SELECT distinct e1, max(e2) as x FROM pm1.g1 GROUP BY e1) AS z", //$NON-NLS-1$
+ ProcessorPlan plan = TestOptimizer.helpPlan("SELECT distinct x, e1 FROM (SELECT distinct min(e1) as e1, max(e2) as x FROM pm1.g1 GROUP BY e1) AS z", //$NON-NLS-1$
metadata, null, TestAggregatePushdown.getAggregatesFinder(),
new String[] {
- "SELECT DISTINCT MAX(e2) AS x, e1 FROM pm1.g1 GROUP BY e1"}, TestOptimizer.SHOULD_SUCCEED); //$NON-NLS-1$
+ "SELECT DISTINCT MAX(e2) AS x, MIN(e1) FROM pm1.g1 GROUP BY e1"}, TestOptimizer.SHOULD_SUCCEED); //$NON-NLS-1$
TestOptimizer.checkNodeTypes(plan, TestOptimizer.FULL_PUSHDOWN);
}
Modified: trunk/engine/src/test/java/org/teiid/query/processor/TestAggregateProcessing.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/processor/TestAggregateProcessing.java 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/engine/src/test/java/org/teiid/query/processor/TestAggregateProcessing.java 2010-06-25 15:16:34 UTC (rev 2302)
@@ -177,9 +177,9 @@
// Create expected results
List[] expected = new List[] {
Arrays.asList(new Object[] { new Integer(1),
- new BigDecimal("110.5") }), //$NON-NLS-1$
+ new BigDecimal("110.5000000") }), //$NON-NLS-1$
Arrays.asList(new Object[] { new Integer(2),
- new BigDecimal("254.5") }) //$NON-NLS-1$
+ new BigDecimal("254.5000000") }) //$NON-NLS-1$
};
// Construct data manager with data
@@ -299,7 +299,7 @@
dataManager.addData("SELECT MAX(v_0.c_0), COUNT(*), COUNT(v_0.c_0), SUM(power(v_0.c_0, 2)), SUM(v_0.c_0) FROM (SELECT g_0.e2 AS c_0 FROM pm2.g2 AS g_0) AS v_0 HAVING COUNT(*) > 0", new List[] {Arrays.asList(5, 6, 4, BigInteger.valueOf(50l), 10l)});
List[] expected = new List[] {
- Arrays.asList(5, 8, 2.1213203435596424, 5.4),
+ Arrays.asList(5, 8, 2.1147629234082532, 5.366666666666666),
};
helpProcess(plan, dataManager, expected);
Modified: trunk/engine/src/test/java/org/teiid/query/processor/eval/TestExpressionEvaluator.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/processor/eval/TestExpressionEvaluator.java 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/engine/src/test/java/org/teiid/query/processor/eval/TestExpressionEvaluator.java 2010-06-25 15:16:34 UTC (rev 2302)
@@ -22,7 +22,10 @@
package org.teiid.query.processor.eval;
+import static org.junit.Assert.*;
+
import java.io.Serializable;
+import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@@ -30,16 +33,18 @@
import java.util.Map;
import java.util.Properties;
+import org.junit.Test;
import org.teiid.api.exception.query.ExpressionEvaluationException;
import org.teiid.common.buffer.BlockedException;
import org.teiid.core.TeiidComponentException;
-import org.teiid.core.TeiidProcessingException;
import org.teiid.core.TeiidException;
+import org.teiid.core.TeiidProcessingException;
import org.teiid.query.eval.Evaluator;
import org.teiid.query.function.FunctionDescriptor;
import org.teiid.query.function.SystemFunctionManager;
import org.teiid.query.processor.FakeDataManager;
import org.teiid.query.processor.ProcessorDataManager;
+import org.teiid.query.resolver.TestFunctionResolving;
import org.teiid.query.sql.lang.CollectionValueIterator;
import org.teiid.query.sql.lang.Query;
import org.teiid.query.sql.lang.SubqueryContainer;
@@ -56,31 +61,19 @@
import org.teiid.query.sql.util.ValueIterator;
import org.teiid.query.util.CommandContext;
-import junit.framework.TestCase;
+@SuppressWarnings("nls")
+public class TestExpressionEvaluator {
-
-/**
- */
-public class TestExpressionEvaluator extends TestCase {
-
- /**
- * Constructor for TestExpressionEvaluator.
- * @param name
- */
- public TestExpressionEvaluator(String name) {
- super(name);
- }
-
public void helpTestEval(Expression expr, SingleElementSymbol[] elementList, Object[] valueList, ProcessorDataManager dataMgr, CommandContext context, Object expectedValue) {
try {
- Object actualValue = helpEval(expr, elementList, valueList, dataMgr, context, expectedValue);
+ Object actualValue = helpEval(expr, elementList, valueList, dataMgr, context);
assertEquals("Did not get expected result", expectedValue, actualValue); //$NON-NLS-1$
} catch(TeiidException e) {
fail("Received unexpected exception: " + e.getFullMessage()); //$NON-NLS-1$
}
}
- public Object helpEval(Expression expr, SingleElementSymbol[] elementList, Object[] valueList, ProcessorDataManager dataMgr, CommandContext context, Object expectedValue) throws ExpressionEvaluationException, BlockedException, TeiidComponentException {
+ public Object helpEval(Expression expr, SingleElementSymbol[] elementList, Object[] valueList, ProcessorDataManager dataMgr, CommandContext context) throws ExpressionEvaluationException, BlockedException, TeiidComponentException {
Map elements = new HashMap();
if (elementList != null) {
for(int i=0; i<elementList.length; i++) {
@@ -97,7 +90,7 @@
return new Evaluator(elements, dataMgr, context).evaluate(expr, tuple);
}
- public void testCaseExpression1() {
+ @Test public void testCaseExpression1() {
CaseExpression expr = TestCaseExpression.example(3);
expr.setExpression(new Constant("a")); //$NON-NLS-1$
helpTestEval(expr, null, null, null, null, new Integer(0));
@@ -109,7 +102,7 @@
helpTestEval(expr, null, null, null, null, new Integer(9999));
}
- public void testSearchedCaseExpression1() {
+ @Test public void testSearchedCaseExpression1() {
SearchedCaseExpression expr = TestSearchedCaseExpression.example(3);
helpTestEval(expr,
new SingleElementSymbol[] {new ElementSymbol("x")}, //$NON-NLS-1$
@@ -137,11 +130,11 @@
new Integer(9999));
}
- public void testConstant() {
+ @Test public void testConstant() {
helpTestEval(new Constant("xyz", String.class), new SingleElementSymbol[0], new Object[0], null, null, "xyz"); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testElement1() {
+ @Test public void testElement1() {
ElementSymbol e1 = new ElementSymbol("e1"); //$NON-NLS-1$
ElementSymbol e2 = new ElementSymbol("e2"); //$NON-NLS-1$
@@ -156,7 +149,7 @@
helpTestEval(e1, elements, values, null, null, "xyz"); //$NON-NLS-1$
}
- public void testElement2() {
+ @Test public void testElement2() {
ElementSymbol e1 = new ElementSymbol("e1"); //$NON-NLS-1$
ElementSymbol e2 = new ElementSymbol("e2"); //$NON-NLS-1$
@@ -174,7 +167,7 @@
/**
* Element Symbols must have values set during evaluation
*/
- public void testElement3() throws Exception {
+ @Test public void testElement3() throws Exception {
ElementSymbol e2 = new ElementSymbol("e2"); //$NON-NLS-1$
SingleElementSymbol[] elements = new SingleElementSymbol[] {};
@@ -184,7 +177,7 @@
};
try {
- helpEval(e2, elements, values, null, null, null);
+ helpEval(e2, elements, values, null, null);
fail("Exception expected"); //$NON-NLS-1$
} catch (TeiidComponentException e){
//this should be a componentexception, since it is unexpected
@@ -192,7 +185,7 @@
}
}
- public void testFunction1() {
+ @Test public void testFunction1() {
ElementSymbol e1 = new ElementSymbol("e1"); //$NON-NLS-1$
e1.setType(String.class);
ElementSymbol e2 = new ElementSymbol("e2"); //$NON-NLS-1$
@@ -214,7 +207,7 @@
helpTestEval(func, elements, values, null, null, "xyzabc"); //$NON-NLS-1$
}
- public void testFunction2() {
+ @Test public void testFunction2() {
ElementSymbol e1 = new ElementSymbol("e1"); //$NON-NLS-1$
e1.setType(String.class);
ElementSymbol e2 = new ElementSymbol("e2"); //$NON-NLS-1$
@@ -235,7 +228,7 @@
helpTestEval(func, elements, values, null, null, "abcxyz"); //$NON-NLS-1$
}
- public void testLookupFunction() {
+ @Test public void testLookupFunction() {
ElementSymbol e1 = new ElementSymbol("e1"); //$NON-NLS-1$
e1.setType(String.class);
ElementSymbol e2 = new ElementSymbol("e2"); //$NON-NLS-1$
@@ -261,7 +254,7 @@
helpTestEval(func, elements, values, dataMgr, null, new Integer(5));
}
- public void testScalarSubquery() throws Exception{
+ @Test public void testScalarSubquery() throws Exception{
ScalarSubquery expr = new ScalarSubquery(new Query());
ArrayList values = new ArrayList(1);
values.add("a"); //$NON-NLS-1$
@@ -286,19 +279,19 @@
}.evaluate(expr, null) );
}
- public void testScalarSubquery2() throws Exception{
+ @Test public void testScalarSubquery2() throws Exception{
ScalarSubquery expr = new ScalarSubquery(new Query());
ArrayList values = new ArrayList(1);
values.add(null);
helpTestWithValueIterator(expr, values, null);
}
- public void testScalarSubquery3() throws Exception{
+ @Test public void testScalarSubquery3() throws Exception{
ScalarSubquery expr = new ScalarSubquery(new Query());
helpTestWithValueIterator(expr, Collections.emptyList(), null);
}
- public void testScalarSubqueryFails() throws Exception{
+ @Test public void testScalarSubqueryFails() throws Exception{
ScalarSubquery expr = new ScalarSubquery(new Query());
ArrayList values = new ArrayList(2);
values.add("a"); //$NON-NLS-1$
@@ -312,7 +305,7 @@
}
}
- public void testUser() throws Exception {
+ @Test public void testUser() throws Exception {
Function func = new Function("user", new Expression[] {}); //$NON-NLS-1$
FunctionDescriptor desc = SystemFunctionManager.getSystemFunctionLibrary().findFunction("user", new Class[] {} ); //$NON-NLS-1$
func.setFunctionDescriptor(desc);
@@ -329,7 +322,7 @@
* these files.
* @throws Exception
*/
- public void testEnv() throws Exception {
+ @Test public void testEnv() throws Exception {
Function func = new Function("env", new Expression[] {}); //$NON-NLS-1$
FunctionDescriptor desc = SystemFunctionManager.getSystemFunctionLibrary().findFunction("env", new Class[] {String.class} ); //$NON-NLS-1$
func.setFunctionDescriptor(desc);
@@ -370,46 +363,51 @@
assertEquals(expectedValue, actual);
}
- public void testCommandPayloadNoArgsWithPayload() throws Exception {
+ @Test public void testCommandPayloadNoArgsWithPayload() throws Exception {
helpTestCommandPayload("blah", null, "blah"); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testCommandPayloadNoArgsWithoutPayload() throws Exception {
+ @Test public void testCommandPayloadNoArgsWithoutPayload() throws Exception {
helpTestCommandPayload(null, null, null);
}
- public void testCommandPayloadNoArgsWithNonStringPayload() throws Exception {
+ @Test public void testCommandPayloadNoArgsWithNonStringPayload() throws Exception {
helpTestCommandPayload(Boolean.TRUE, null, "true"); //$NON-NLS-1$
}
- public void testCommandPayloadArgWithPayload() throws Exception {
+ @Test public void testCommandPayloadArgWithPayload() throws Exception {
Properties props = new Properties();
props.setProperty("p1", "v1"); //$NON-NLS-1$ //$NON-NLS-2$
props.setProperty("p2", "v2"); //$NON-NLS-1$ //$NON-NLS-2$
helpTestCommandPayload(props, "p1", "v1"); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testCommandPayloadArgWithPayloadMissingProp() throws Exception {
+ @Test public void testCommandPayloadArgWithPayloadMissingProp() throws Exception {
Properties props = new Properties();
props.setProperty("p1", "v1"); //$NON-NLS-1$ //$NON-NLS-2$
props.setProperty("p2", "v2"); //$NON-NLS-1$ //$NON-NLS-2$
helpTestCommandPayload(props, "BOGUS", null); //$NON-NLS-1$
}
- public void testCommandPayloadArgWithoutPayload() throws Exception {
+ @Test public void testCommandPayloadArgWithoutPayload() throws Exception {
Properties props = new Properties();
props.setProperty("p1", "v1"); //$NON-NLS-1$ //$NON-NLS-2$
props.setProperty("p2", "v2"); //$NON-NLS-1$ //$NON-NLS-2$
helpTestCommandPayload(null, "BOGUS", null); //$NON-NLS-1$
}
- public void testCommandPayloadArgWithBadPayload() throws Exception {
- try {
- helpTestCommandPayload(Boolean.TRUE, "BOGUS", null); //$NON-NLS-1$
- fail("Expected exception but got none"); //$NON-NLS-1$
- } catch(ExpressionEvaluationException e) {
- // expected
- }
- }
+ @Test(expected=ExpressionEvaluationException.class) public void testCommandPayloadArgWithBadPayload() throws Exception {
+ helpTestCommandPayload(Boolean.TRUE, "BOGUS", null); //$NON-NLS-1$
+ }
+ @Test public void testBigDecimalFromDoubleDivision() throws Exception {
+ Expression ex = TestFunctionResolving.getExpression("convert(1.0, bigdecimal)/3");
+ assertEquals(new BigDecimal("0.3333333333333333"), Evaluator.evaluate(ex));
+ }
+
+ @Test public void testBigDecimalDivision() throws Exception {
+ Expression ex = TestFunctionResolving.getExpression("1/convert('3.0', bigdecimal)");
+ assertEquals(new BigDecimal("0.3333333333333333"), Evaluator.evaluate(ex));
+ }
+
}
Modified: trunk/engine/src/test/java/org/teiid/query/resolver/TestFunctionResolving.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/resolver/TestFunctionResolving.java 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/engine/src/test/java/org/teiid/query/resolver/TestFunctionResolving.java 2010-06-25 15:16:34 UTC (rev 2302)
@@ -127,7 +127,7 @@
return func;
}
- private Expression getExpression(String sql) throws QueryParserException,
+ public static Expression getExpression(String sql) throws QueryParserException,
TeiidComponentException, QueryResolverException {
Expression func = QueryParser.getQueryParser().parseExpression(sql);
ResolverVisitor.resolveLanguageObject(func, FakeMetadataFactory.example1Cached());
Modified: trunk/jboss-integration/src/main/java/org/teiid/adminapi/jboss/Admin.java
===================================================================
--- trunk/jboss-integration/src/main/java/org/teiid/adminapi/jboss/Admin.java 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/jboss-integration/src/main/java/org/teiid/adminapi/jboss/Admin.java 2010-06-25 15:16:34 UTC (rev 2302)
@@ -22,10 +22,7 @@
package org.teiid.adminapi.jboss;
-import java.io.IOException;
import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
@@ -172,17 +169,6 @@
}
}
- private InputStream exportDeployment(String url) throws AdminComponentException {
- try {
- URL contentURL = new URL(url);
- return contentURL.openStream();
- } catch (MalformedURLException e) {
- throw new AdminComponentException(e);
- } catch (IOException e) {
- throw new AdminComponentException(e);
- }
- }
-
boolean matches(String regEx, String value) {
regEx = regEx.replaceAll(AdminObject.ESCAPED_WILDCARD, ".*"); //$NON-NLS-1$
regEx = regEx.replaceAll(AdminObject.ESCAPED_DELIMITER, ""); //$NON-NLS-1$
@@ -207,15 +193,6 @@
}
@Override
- public InputStream exportVDB(String vdbName, int vdbVersion) throws AdminException{
- ManagedComponent mc = getVDBManagedComponent(vdbName, vdbVersion);
- if (mc != null) {
- return exportDeployment(mc.getDeployment().getName());
- }
- return null;
- }
-
- @Override
public VDB getVDB(String vdbName, int vdbVersion) throws AdminException{
ManagedComponent mc = getVDBManagedComponent(vdbName, vdbVersion);
if (mc != null) {
Modified: trunk/metadata/src/main/java/org/teiid/metadata/index/IndexMetadataFactory.java
===================================================================
--- trunk/metadata/src/main/java/org/teiid/metadata/index/IndexMetadataFactory.java 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/metadata/src/main/java/org/teiid/metadata/index/IndexMetadataFactory.java 2010-06-25 15:16:34 UTC (rev 2302)
@@ -279,6 +279,10 @@
for (Column columnRecordImpl : columns) {
columnRecordImpl.setDatatype(getDatatypeCache().get(columnRecordImpl.getDatatypeUUID()));
columnRecordImpl.setParent(tableRecord);
+ String fullName = columnRecordImpl.getName();
+ if (fullName.startsWith(tableRecord.getName() + '.')) {
+ columnRecordImpl.setName(fullName.substring(tableRecord.getName().length() + 1));
+ }
}
Collections.sort(columns);
tableRecord.setColumns(columns);
@@ -414,7 +418,7 @@
ColumnSet<Procedure> resultRecord = (ColumnSet<Procedure>) getRecordByType(result.getUUID(), MetadataConstants.RECORD_TYPE.RESULT_SET, false);
if (resultRecord != null) {
resultRecord.setParent(procedureRecord);
- resultRecord.setName("RSParam"); //$NON-NLS-1$
+ resultRecord.setName(RecordFactory.getShortName(resultRecord.getName()));
loadColumnSetRecords(resultRecord, null);
procedureRecord.setResultSet(resultRecord);
}
@@ -460,6 +464,7 @@
c = columns.get(uuid);
} else {
c = findElement(uuid);
+ c.setName(RecordFactory.getShortName(c.getName()));
}
indexRecord.getColumns().set(i, c);
c.setParent(indexRecord);
@@ -538,7 +543,7 @@
// Query based on fully qualified name
else {
String prefixString = getPrefixPattern(recordType,entityName);
- results = queryIndex(recordType, prefixString.toCharArray(), true, true, true);
+ results = queryIndex(recordType, prefixString.toCharArray(), true, true, entityName != null);
}
return results;
Modified: trunk/metadata/src/main/java/org/teiid/metadata/index/RecordFactory.java
===================================================================
--- trunk/metadata/src/main/java/org/teiid/metadata/index/RecordFactory.java 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/metadata/src/main/java/org/teiid/metadata/index/RecordFactory.java 2010-06-25 15:16:34 UTC (rev 2302)
@@ -972,11 +972,8 @@
record.setUUID(getObjectValue(objectID));
if (fullName != null) {
String name = fullName;
- if (record instanceof Column || record instanceof ProcedureParameter || record instanceof KeyRecord) { //take only the last part
- int index = fullName.lastIndexOf(IndexConstants.NAME_DELIM_CHAR);
- if (index > 0) {
- name = fullName.substring(index + 1);
- }
+ if (record instanceof ProcedureParameter || record instanceof KeyRecord) { //take only the last part
+ name = getShortName(fullName);
} else { //remove model name
int index = fullName.indexOf(IndexConstants.NAME_DELIM_CHAR);
if (index > 0) {
@@ -988,6 +985,14 @@
record.setNameInSource(getObjectValue(nameInSource));
}
+ static String getShortName(String fullName) {
+ int index = fullName.lastIndexOf(IndexConstants.NAME_DELIM_CHAR);
+ if (index > 0) {
+ fullName = fullName.substring(index + 1);
+ }
+ return fullName;
+ }
+
/**
* Set the "footer" values on the specified MetadataRecord.
* All index file record footers are of the form:
Copied: trunk/metadata/src/test/java/org/teiid/metadata/index/TestMultipleModelIndexes.java (from rev 2301, branches/7.0.x/metadata/src/test/java/org/teiid/metadata/index/TestMultipleModelIndexes.java)
===================================================================
--- trunk/metadata/src/test/java/org/teiid/metadata/index/TestMultipleModelIndexes.java (rev 0)
+++ trunk/metadata/src/test/java/org/teiid/metadata/index/TestMultipleModelIndexes.java 2010-06-25 15:16:34 UTC (rev 2302)
@@ -0,0 +1,44 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * See the COPYRIGHT.txt file distributed with this work for information
+ * regarding copyright ownership. Some portions may be licensed
+ * to Red Hat, Inc. under one or more contributor license agreements.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA.
+ */
+
+package org.teiid.metadata.index;
+
+import static org.junit.Assert.*;
+
+import java.util.Collection;
+
+import org.junit.Test;
+import org.teiid.core.util.UnitTestUtil;
+import org.teiid.metadata.TransformationMetadata;
+
+@SuppressWarnings("nls")
+public class TestMultipleModelIndexes {
+
+ @Test public void testMultiple() throws Exception {
+ TransformationMetadata tm = VDBMetadataFactory.getVDBMetadata(UnitTestUtil.getTestDataPath() + "/ZZZ.vdb");
+ Collection<String> names = tm.getGroupsForPartialName("PRODUCTDATA");
+ assertEquals(1, names.size());
+ names = tm.getGroupsForPartialName("PARTS");
+ assertEquals(1, names.size());
+ }
+
+}
Copied: trunk/metadata/src/test/resources/ZZZ.vdb (from rev 2301, branches/7.0.x/metadata/src/test/resources/ZZZ.vdb)
===================================================================
(Binary files differ)
Modified: trunk/runtime/src/main/java/org/teiid/transport/LocalServerConnection.java
===================================================================
--- trunk/runtime/src/main/java/org/teiid/transport/LocalServerConnection.java 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/runtime/src/main/java/org/teiid/transport/LocalServerConnection.java 2010-06-25 15:16:34 UTC (rev 2302)
@@ -38,6 +38,7 @@
import org.teiid.client.security.LogonException;
import org.teiid.client.security.LogonResult;
import org.teiid.client.util.ExceptionUtil;
+import org.teiid.client.util.ResultsFuture;
import org.teiid.core.TeiidComponentException;
import org.teiid.core.TeiidRuntimeException;
import org.teiid.dqp.internal.process.DQPWorkContext;
@@ -90,7 +91,7 @@
return iface.cast(Proxy.newProxyInstance(this.getClass().getClassLoader(), new Class[] {iface}, new InvocationHandler() {
public Object invoke(Object arg0, final Method arg1, final Object[] arg2) throws Throwable {
- if (!isOpen()) {
+ if (shutdown) {
throw ExceptionUtil.convertException(arg1, new TeiidComponentException(NetPlugin.Util.getString("LocalTransportHandler.Transport_shutdown"))); //$NON-NLS-1$
}
try {
@@ -109,8 +110,12 @@
}));
}
- public boolean isOpen() {
- return !shutdown;
+ @Override
+ public ResultsFuture<?> isOpen() {
+ if (shutdown) {
+ return null;
+ }
+ return ResultsFuture.NULL_FUTURE;
}
public void close() {
Modified: trunk/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumns.expected
===================================================================
--- trunk/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumns.expected 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumns.expected 2010-06-25 15:16:34 UTC (rev 2302)
@@ -1,23 +1,23 @@
string string string string short string integer string integer integer integer string string string string integer integer string string string string !
string string
TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH DECIMAL_DIGITS NUM_PREC_RADIX NULLABLE REMARKS COLUMN_DEF SQL_DATA_TYPE SQL_DATETIME_SUB CHAR_OCTET_LENGTH ORDINAL_POSITION IS_NULLABLE SCOPE_CATALOG SCOPE_SCHEMA SCOPE_TABLE!
SOURCE_DATA_TYPE IS_AUTOINCREMENT
-QT_Ora9DS XQTDoc BQTDocTestDocument BigDecimalValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc BQTDocTestDocument BigIntegerValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc BQTDocTestDocument BooleanValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc BQTDocTestDocument ByteNum 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc BQTDocTestDocument CharValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc BQTDocTestDocument DateValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc BQTDocTestDocument DoubleNum 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc BQTDocTestDocument FloatNum 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc BQTDocTestDocument IntKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc BQTDocTestDocument IntNum 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc BQTDocTestDocument LongNum 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc BQTDocTestDocument ObjectValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc BQTDocTestDocument ShortValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc BQTDocTestDocument StringKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc BQTDocTestDocument StringNum 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc BQTDocTestDocument TimestampValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc BQTDocTestDocument TimeValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc BQTDocTestDocument SingleRow 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument BQTDocTest.SingleRow.BigDecimalValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument BQTDocTest.SingleRow.BigIntegerValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument BQTDocTest.SingleRow.BooleanValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument BQTDocTest.SingleRow.ByteNum 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument BQTDocTest.SingleRow.CharValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument BQTDocTest.SingleRow.DateValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument BQTDocTest.SingleRow.DoubleNum 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument BQTDocTest.SingleRow.FloatNum 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument BQTDocTest.SingleRow.IntKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument BQTDocTest.SingleRow.IntNum 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument BQTDocTest.SingleRow.LongNum 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument BQTDocTest.SingleRow.ObjectValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument BQTDocTest.SingleRow.ShortValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument BQTDocTest.SingleRow.StringKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument BQTDocTest.SingleRow.StringNum 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument BQTDocTest.SingleRow.TimestampValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument BQTDocTest.SingleRow.TimeValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument BQTDocTest.SingleRow 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTDoc BQTDocTestDocument BQTDocTest 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTDoc BQTDocTestDocument.MappingClasses.SingleRow IntKey 4 integer 10 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTDoc BQTDocTestDocument.MappingClasses.SingleRow StringKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
@@ -668,18 +668,18 @@
QT_Ora9DS VQT Union.U9 C 7 float 20 <null> 0 10 0 <null> <null> <null> <null> 126 3 YES <null> <null> <null> !
<null> NO
QT_Ora9DS SYS VirtualDatabases Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
QT_Ora9DS SYS VirtualDatabases Version 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 2 YES <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc choiceTestDocument data1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc choiceTestDocument key1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc choiceTestDocument wrapper1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc choiceTestDocument data1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc choiceTestDocument data2 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc choiceTestDocument key2 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc choiceTestDocument wrapper2 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc choiceTestDocument data2 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc choiceTestDocument data3 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc choiceTestDocument key3 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc choiceTestDocument wrapper3 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc choiceTestDocument data3 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc choiceTestDocument choiceTest.data1.wrapper1.data1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc choiceTestDocument choiceTest.data1.wrapper1.key1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc choiceTestDocument choiceTest.data1.wrapper1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc choiceTestDocument choiceTest.data1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc choiceTestDocument choiceTest.data2.wrapper2.data2 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc choiceTestDocument choiceTest.data2.wrapper2.key2 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc choiceTestDocument choiceTest.data2.wrapper2 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc choiceTestDocument choiceTest.data2 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc choiceTestDocument choiceTest.data3.wrapper3.key3.data3 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc choiceTestDocument choiceTest.data3.wrapper3.key3 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc choiceTestDocument choiceTest.data3.wrapper3 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc choiceTestDocument choiceTest.data3 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTDoc choiceTestDocument choiceTest 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTDoc choiceTestDocument.MappingClasses.choiceTest key1 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTDoc choiceTestDocument.MappingClasses.choiceTest data1 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
@@ -687,46 +687,46 @@
QT_Ora9DS XQTDoc choiceTestDocument.MappingClasses.choiceTest key2 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 4 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTDoc choiceTestDocument.MappingClasses.choiceTest key3 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 5 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTDoc choiceTestDocument.MappingClasses.choiceTest data3 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc defaultValueTestDocument @dataAttr 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc defaultValueTestDocument data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc defaultValueTestDocument key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc defaultValueTestDocument wrapper 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc defaultValueTestDocument defaultValueTest.wrapper.@dataAttr 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc defaultValueTestDocument defaultValueTest.wrapper.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc defaultValueTestDocument defaultValueTest.wrapper.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc defaultValueTestDocument defaultValueTest.wrapper 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTDoc defaultValueTestDocument defaultValueTest 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTDoc defaultValueTestDocument.MappingClasses.wrapper key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTDoc defaultValueTestDocument.MappingClasses.wrapper data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTDoc defaultValueTestDocument.MappingClasses.wrapper dataAttr 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc emptyContentTestDocument data1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc emptyContentTestDocument key1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc emptyContentTestDocument wrapper1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc emptyContentTestDocument emptyContentTest.wrapper1.data1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc emptyContentTestDocument emptyContentTest.wrapper1.key1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc emptyContentTestDocument emptyContentTest.wrapper1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTDoc emptyContentTestDocument emptyContentTest 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTDoc emptyContentTestDocument.MappingClasses.wrapper1 key1 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTDoc emptyContentTestDocument.MappingClasses.wrapper1 data1 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc fixedValueTestDocument @fixedAttr 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc fixedValueTestDocument fixed 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc fixedValueTestDocument key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc fixedValueTestDocument wrapper 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc fixedValueTestDocument fixedValueTest.wrapper.@fixedAttr 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc fixedValueTestDocument fixedValueTest.wrapper.fixed 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc fixedValueTestDocument fixedValueTest.wrapper.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc fixedValueTestDocument fixedValueTest.wrapper 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTDoc fixedValueTestDocument fixedValueTest 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTDoc fixedValueTestDocument.MappingClasses.wrapper key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc groupDocument code 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc groupDocument ID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc groupDocument code 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc groupDocument groupID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument group.GroupA.code 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument group.GroupA.ID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument group.GroupA.supervisor.code 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument group.GroupA.supervisor.groupID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument group.GroupA.supervisor.group 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument group.GroupA.supervisor.ID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument group.GroupA.supervisorID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument group.GroupA.supervisor 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument group.GroupA 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument group.GroupB.code 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument group.GroupB.ID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument group.GroupB.supervisor.code 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument group.GroupB.supervisor.groupID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument group.GroupB.supervisor.group 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument group.GroupB.supervisor.ID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument group.GroupB.supervisorID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument group.GroupB.supervisor 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument group.GroupB 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument group.pseudoID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTRecursiveDoc groupDocument group 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc groupDocument ID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc groupDocument supervisorID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc groupDocument supervisor 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc groupDocument GroupA 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc groupDocument code 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc groupDocument ID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc groupDocument code 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc groupDocument groupID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc groupDocument group 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc groupDocument ID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc groupDocument supervisorID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc groupDocument supervisor 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc groupDocument GroupB 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc groupDocument pseudoID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc groupDocument group 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTRecursiveDoc groupDocument.MappingClasses.group ID 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTRecursiveDoc groupDocument.MappingClasses.group code 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTRecursiveDoc groupDocument.MappingClasses.group supervisorID 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
@@ -736,36 +736,36 @@
QT_Ora9DS XQTRecursiveDoc groupDocument.MappingClasses.supervisor ID 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTRecursiveDoc groupDocument.MappingClasses.supervisor code 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTRecursiveDoc groupDocument.MappingClasses.supervisor groupID 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc mixedContentTestDocument data3 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc mixedContentTestDocument key3 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc mixedContentTestDocument wrapper3 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc mixedContentTestDocument mixedContentTest.wrapper3.key3.data3 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc mixedContentTestDocument mixedContentTest.wrapper3.key3 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc mixedContentTestDocument mixedContentTest.wrapper3 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTDoc mixedContentTestDocument mixedContentTest 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTDoc mixedContentTestDocument.MappingClasses.wrapper3 key3 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTDoc mixedContentTestDocument.MappingClasses.wrapper3 data3 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc multipleDocsTestDocument data1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc multipleDocsTestDocument key1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc multipleDocsTestDocument multipleDocsTest.data1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc multipleDocsTestDocument multipleDocsTest.key1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTDoc multipleDocsTestDocument multipleDocsTest 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTDoc multipleDocsTestDocument.MappingClasses.multipleDocsTest key1 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTDoc multipleDocsTestDocument.MappingClasses.multipleDocsTest data1 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc nillableTestDocument key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc nillableTestDocument nillableField 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTDoc nillableTestDocument wrapper 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc nillableTestDocument nillableTest.wrapper.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc nillableTestDocument nillableTest.wrapper.nillableField 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc nillableTestDocument nillableTest.wrapper 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTDoc nillableTestDocument nillableTest 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTDoc nillableTestDocument.MappingClasses.wrapper key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTDoc nillableTestDocument.MappingClasses.wrapper nillableField 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testBoundTempTable data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testBoundTempTable key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testBoundTempTable nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testBoundTempTable data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testBoundTempTable key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testBoundTempTable nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testBoundTempTable data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testBoundTempTable key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testBoundTempTable nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testBoundTempTable recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testBoundTempTable recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testBoundTempTable recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testBoundTempTable recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable testSimple.recursiveRoot.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable testSimple.recursiveRoot.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable testSimple.recursiveRoot.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable testSimple.recursiveRoot.recurse.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable testSimple.recursiveRoot.recurse.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable testSimple.recursiveRoot.recurse.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable testSimple.recursiveRoot.recurse.recurse.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable testSimple.recursiveRoot.recurse.recurse.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable testSimple.recursiveRoot.recurse.recurse.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable testSimple.recursiveRoot.recurse.recurse.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable testSimple.recursiveRoot.recurse.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable testSimple.recursiveRoot.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable testSimple.recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTNestedDoc testBoundTempTable testSimple 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTNestedDoc testBoundTempTable.MappingClasses.TemporaryTable1 key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTNestedDoc testBoundTempTable.MappingClasses.TemporaryTable1 data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
@@ -782,19 +782,19 @@
QT_Ora9DS XQTNestedDoc testBoundTempTable.MappingClasses.root key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTNestedDoc testBoundTempTable.MappingClasses.root data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTNestedDoc testBoundTempTable.MappingClasses.root nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testExcludeFromDoc data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testExcludeFromDoc key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testExcludeFromDoc nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testExcludeFromDoc data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testExcludeFromDoc key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testExcludeFromDoc nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testExcludeFromDoc data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testExcludeFromDoc key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testExcludeFromDoc nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testExcludeFromDoc recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testExcludeFromDoc recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testExcludeFromDoc recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testExcludeFromDoc recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc testSimple.recursiveRoot.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc testSimple.recursiveRoot.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc testSimple.recursiveRoot.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc testSimple.recursiveRoot.recurse.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc testSimple.recursiveRoot.recurse.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc testSimple.recursiveRoot.recurse.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc testSimple.recursiveRoot.recurse.recurse.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc testSimple.recursiveRoot.recurse.recurse.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc testSimple.recursiveRoot.recurse.recurse.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc testSimple.recursiveRoot.recurse.recurse.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc testSimple.recursiveRoot.recurse.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc testSimple.recursiveRoot.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc testSimple.recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTNestedDoc testExcludeFromDoc testSimple 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTNestedDoc testExcludeFromDoc.MappingClasses.nested key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTNestedDoc testExcludeFromDoc.MappingClasses.nested data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
@@ -805,15 +805,15 @@
QT_Ora9DS XQTNestedDoc testExcludeFromDoc.MappingClasses.root key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTNestedDoc testExcludeFromDoc.MappingClasses.root data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTNestedDoc testExcludeFromDoc.MappingClasses.root nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc testNested2Document data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc testNested2Document key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc testNested2Document data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc testNested2Document key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc testNested2Document nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc testNested2Document nested 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc testNested2Document nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc testNested2Document recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc testNested2Document recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNested2Document testNested2.recursiveRoot.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNested2Document testNested2.recursiveRoot.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNested2Document testNested2.recursiveRoot.nested.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNested2Document testNested2.recursiveRoot.nested.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNested2Document testNested2.recursiveRoot.nested.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNested2Document testNested2.recursiveRoot.nested 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNested2Document testNested2.recursiveRoot.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNested2Document testNested2.recursiveRoot.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNested2Document testNested2.recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTRecursiveDoc testNested2Document testNested2 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTRecursiveDoc testNested2Document.MappingClasses.nested key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTRecursiveDoc testNested2Document.MappingClasses.nested data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
@@ -824,16 +824,16 @@
QT_Ora9DS XQTRecursiveDoc testNested2Document.MappingClasses.recursiveRoot key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTRecursiveDoc testNested2Document.MappingClasses.recursiveRoot data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTRecursiveDoc testNested2Document.MappingClasses.recursiveRoot nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc testNestedDocument data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc testNestedDocument key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc testNestedDocument data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc testNestedDocument key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc testNestedDocument nestedRecurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc testNestedDocument nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc testNestedDocument nested 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc testNestedDocument nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc testNestedDocument recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc testNestedDocument recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNestedDocument testNested.recursiveRoot.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNestedDocument testNested.recursiveRoot.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNestedDocument testNested.recursiveRoot.nested.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNestedDocument testNested.recursiveRoot.nested.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNestedDocument testNested.recursiveRoot.nested.nestedRecurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNestedDocument testNested.recursiveRoot.nested.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNestedDocument testNested.recursiveRoot.nested 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNestedDocument testNested.recursiveRoot.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNestedDocument testNested.recursiveRoot.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNestedDocument testNested.recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTRecursiveDoc testNestedDocument testNested 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTRecursiveDoc testNestedDocument.MappingClasses.nested key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTRecursiveDoc testNestedDocument.MappingClasses.nested data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
@@ -847,19 +847,19 @@
QT_Ora9DS XQTRecursiveDoc testNestedDocument.MappingClasses.recursiveRoot key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTRecursiveDoc testNestedDocument.MappingClasses.recursiveRoot data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTRecursiveDoc testNestedDocument.MappingClasses.recursiveRoot nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testOptimizableTempTable data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testOptimizableTempTable key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testOptimizableTempTable nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testOptimizableTempTable data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testOptimizableTempTable key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testOptimizableTempTable nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testOptimizableTempTable data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testOptimizableTempTable key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testOptimizableTempTable nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testOptimizableTempTable recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testOptimizableTempTable recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testOptimizableTempTable recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testOptimizableTempTable recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable testSimple.recursiveRoot.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable testSimple.recursiveRoot.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable testSimple.recursiveRoot.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable testSimple.recursiveRoot.recurse.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable testSimple.recursiveRoot.recurse.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable testSimple.recursiveRoot.recurse.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable testSimple.recursiveRoot.recurse.recurse.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable testSimple.recursiveRoot.recurse.recurse.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable testSimple.recursiveRoot.recurse.recurse.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable testSimple.recursiveRoot.recurse.recurse.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable testSimple.recursiveRoot.recurse.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable testSimple.recursiveRoot.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable testSimple.recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTNestedDoc testOptimizableTempTable testSimple 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTNestedDoc testOptimizableTempTable.MappingClasses.TemporaryTable1 key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTNestedDoc testOptimizableTempTable.MappingClasses.TemporaryTable1 data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
@@ -876,19 +876,19 @@
QT_Ora9DS XQTNestedDoc testOptimizableTempTable.MappingClasses.root key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTNestedDoc testOptimizableTempTable.MappingClasses.root data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTNestedDoc testOptimizableTempTable.MappingClasses.root nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testRootTempTable data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testRootTempTable key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testRootTempTable nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testRootTempTable data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testRootTempTable key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testRootTempTable nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testRootTempTable data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testRootTempTable key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testRootTempTable nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testRootTempTable recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testRootTempTable recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testRootTempTable recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testRootTempTable recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable testSimple.recursiveRoot.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable testSimple.recursiveRoot.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable testSimple.recursiveRoot.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable testSimple.recursiveRoot.recurse.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable testSimple.recursiveRoot.recurse.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable testSimple.recursiveRoot.recurse.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable testSimple.recursiveRoot.recurse.recurse.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable testSimple.recursiveRoot.recurse.recurse.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable testSimple.recursiveRoot.recurse.recurse.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable testSimple.recursiveRoot.recurse.recurse.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable testSimple.recursiveRoot.recurse.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable testSimple.recursiveRoot.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable testSimple.recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTNestedDoc testRootTempTable testSimple 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTNestedDoc testRootTempTable.MappingClasses.TemporaryTable1 key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTNestedDoc testRootTempTable.MappingClasses.TemporaryTable1 data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
@@ -902,11 +902,11 @@
QT_Ora9DS XQTNestedDoc testRootTempTable.MappingClasses.root key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTNestedDoc testRootTempTable.MappingClasses.root data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTNestedDoc testRootTempTable.MappingClasses.root nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc testSimpleDocument data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc testSimpleDocument key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc testSimpleDocument nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc testSimpleDocument recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc testSimpleDocument recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleDocument testSimple.recursiveRoot.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleDocument testSimple.recursiveRoot.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleDocument testSimple.recursiveRoot.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleDocument testSimple.recursiveRoot.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleDocument testSimple.recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTRecursiveDoc testSimpleDocument testSimple 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTRecursiveDoc testSimpleDocument.MappingClasses.recurse key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTRecursiveDoc testSimpleDocument.MappingClasses.recurse data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
@@ -914,19 +914,19 @@
QT_Ora9DS XQTRecursiveDoc testSimpleDocument.MappingClasses.recursiveRoot key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTRecursiveDoc testSimpleDocument.MappingClasses.recursiveRoot data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTRecursiveDoc testSimpleDocument.MappingClasses.recursiveRoot nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testSimpleNested data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testSimpleNested key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testSimpleNested nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testSimpleNested data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testSimpleNested key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testSimpleNested nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testSimpleNested data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testSimpleNested key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testSimpleNested nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testSimpleNested recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testSimpleNested recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testSimpleNested recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTNestedDoc testSimpleNested recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested testSimple.recursiveRoot.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested testSimple.recursiveRoot.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested testSimple.recursiveRoot.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested testSimple.recursiveRoot.recurse.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested testSimple.recursiveRoot.recurse.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested testSimple.recursiveRoot.recurse.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested testSimple.recursiveRoot.recurse.recurse.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested testSimple.recursiveRoot.recurse.recurse.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested testSimple.recursiveRoot.recurse.recurse.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested testSimple.recursiveRoot.recurse.recurse.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested testSimple.recursiveRoot.recurse.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested testSimple.recursiveRoot.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested testSimple.recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTNestedDoc testSimpleNested testSimple 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTNestedDoc testSimpleNested.MappingClasses.nested key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTNestedDoc testSimpleNested.MappingClasses.nested data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
@@ -937,11 +937,11 @@
QT_Ora9DS XQTNestedDoc testSimpleNested.MappingClasses.root key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTNestedDoc testSimpleNested.MappingClasses.root data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTNestedDoc testSimpleNested.MappingClasses.root nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc testSimpleTempTable data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc testSimpleTempTable key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc testSimpleTempTable nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc testSimpleTempTable recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS XQTRecursiveDoc testSimpleTempTable recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleTempTable testSimple.recursiveRoot.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleTempTable testSimple.recursiveRoot.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleTempTable testSimple.recursiveRoot.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleTempTable testSimple.recursiveRoot.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleTempTable testSimple.recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTRecursiveDoc testSimpleTempTable testSimple 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTRecursiveDoc testSimpleTempTable.MappingClasses.TemporaryTable1 key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
QT_Ora9DS XQTRecursiveDoc testSimpleTempTable.MappingClasses.TemporaryTable1 data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
Modified: trunk/test-integration/db/src/test/java/org/teiid/adminapi/jboss/TestConnectorBindings.java
===================================================================
--- trunk/test-integration/db/src/test/java/org/teiid/adminapi/jboss/TestConnectorBindings.java 2010-06-25 11:19:23 UTC (rev 2301)
+++ trunk/test-integration/db/src/test/java/org/teiid/adminapi/jboss/TestConnectorBindings.java 2010-06-25 15:16:34 UTC (rev 2302)
@@ -1,18 +1,12 @@
package org.teiid.adminapi.jboss;
-import static junit.framework.Assert.assertEquals;
-import static junit.framework.Assert.assertFalse;
-import static junit.framework.Assert.assertNotNull;
-import static junit.framework.Assert.assertNull;
-import static junit.framework.Assert.assertTrue;
-import static junit.framework.Assert.fail;
+import static junit.framework.Assert.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
-import java.io.InputStream;
import java.sql.Connection;
import java.util.Collection;
import java.util.List;
@@ -34,7 +28,6 @@
import org.teiid.adminapi.Transaction;
import org.teiid.adminapi.Translator;
import org.teiid.adminapi.VDB;
-import org.teiid.core.util.ObjectConverterUtil;
import org.teiid.core.util.UnitTestUtil;
@Ignore
@@ -292,21 +285,6 @@
assertEquals(false, translator.getPropertyValue("XaCapable"));
}
- @Test
- public void testExportVDB() throws Exception{
- File f = new File(UnitTestUtil.getTestScratchPath()+"/TransactionsRevisited.vdb"); //$NON-NLS-1$
-
- assertTrue(!f.exists());
-
- InputStream contents = admin.exportVDB("TransactionsRevisited", 1); //$NON-NLS-1$
- if (contents != null) {
- ObjectConverterUtil.write(contents, f.getCanonicalPath());
- }
-
- assertTrue(f.exists());
- f.delete();
- }
-
@Test public void testAssignConnectorBinding() throws Exception {
admin.assignToModel("TransactionsRevisited", 1, "pm1", "mysql", "mysql", "jndi:FOO"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
14 years, 6 months
teiid SVN: r2301 - branches/7.0.x/documentation/reference/src/main/docbook/en-US/content.
by teiid-commits@lists.jboss.org
Author: shawkins
Date: 2010-06-25 07:19:23 -0400 (Fri, 25 Jun 2010)
New Revision: 2301
Modified:
branches/7.0.x/documentation/reference/src/main/docbook/en-US/content/system_schema.xml
Log:
fixing system procedures table
Modified: branches/7.0.x/documentation/reference/src/main/docbook/en-US/content/system_schema.xml
===================================================================
--- branches/7.0.x/documentation/reference/src/main/docbook/en-US/content/system_schema.xml 2010-06-24 20:59:33 UTC (rev 2300)
+++ branches/7.0.x/documentation/reference/src/main/docbook/en-US/content/system_schema.xml 2010-06-25 11:19:23 UTC (rev 2301)
@@ -1505,7 +1505,7 @@
<para>Procedure</para>
</entry>
<entry>
- <para>Parameter Datatypes</para>
+ <para>Parameters</para>
</entry>
<entry>
<para>ResultSet</para>
@@ -1515,10 +1515,10 @@
<tbody>
<row>
<entry>
- <para>getCharacterVDBResource(resourcePath)</para>
+ <para>getCharacterVDBResource</para>
</entry>
<entry>
- <para>resourcePath is a string</para>
+ <para>(string resourcePath)/para>
</entry>
<entry>
<para>A single column containing the resource as a clob.</para>
@@ -1526,10 +1526,10 @@
</row>
<row>
<entry>
- <para>getBinaryVDBResource(resourcePath)</para>
+ <para>getBinaryVDBResource</para>
</entry>
<entry>
- <para>resourcePath is a string</para>
+ <para>(sting resourcePath)</para>
</entry>
<entry>
<para>A single column containing the resource as a blob.</para>
@@ -1537,10 +1537,10 @@
</row>
<row>
<entry>
- <para>getVDBResourcePaths()</para>
+ <para>getVDBResourcePaths</para>
</entry>
<entry>
- <para></para>
+ <para>()</para>
</entry>
<entry>
<para>A single column containing the resource paths as strings.</para>
@@ -1548,10 +1548,10 @@
</row>
<row>
<entry>
- <para>getXMLSchemas(document)</para>
+ <para>getXMLSchemas</para>
</entry>
<entry>
- <para>document is a string</para>
+ <para>string document</para>
</entry>
<entry>
<para>A single column containing the schemas as clobs.</para>
14 years, 6 months