teiid SVN: r3126 - in trunk: api/src/main/java/org/teiid/metadata and 23 other directories.
by teiid-commitsï¼ lists.jboss.org
Author: shawkins
Date: 2011-04-27 22:55:13 -0400 (Wed, 27 Apr 2011)
New Revision: 3126
Added:
trunk/api/src/main/java/org/teiid/metadata/MetadataRepository.java
trunk/metadata/system-vdb-update.txt
trunk/test-integration/common/src/test/java/org/teiid/systemmodel/TestMetadataUpdates.java
trunk/test-integration/common/src/test/java/org/teiid/systemmodel/TestStats.java
trunk/test-integration/common/src/test/resources/metadata.vdb
Removed:
trunk/api/src/main/java/org/teiid/metadata/MetadataProvider.java
trunk/api/src/main/java/org/teiid/metadata/ViewDefinition.java
Modified:
trunk/api/src/main/java/org/teiid/events/EventDistributor.java
trunk/api/src/main/java/org/teiid/metadata/Column.java
trunk/api/src/main/java/org/teiid/metadata/ColumnStats.java
trunk/api/src/main/java/org/teiid/metadata/Procedure.java
trunk/api/src/main/java/org/teiid/metadata/Table.java
trunk/api/src/main/java/org/teiid/metadata/TableStats.java
trunk/build/kits/jboss-container/teiid-releasenotes.html
trunk/client/src/main/resources/org/teiid/jdbc/i18n.properties
trunk/documentation/reference/src/main/docbook/en-US/content/grammar.xml
trunk/documentation/reference/src/main/docbook/en-US/content/system_schema.xml
trunk/engine/src/main/java/org/teiid/dqp/internal/process/AccessInfo.java
trunk/engine/src/main/java/org/teiid/dqp/internal/process/DQPConfiguration.java
trunk/engine/src/main/java/org/teiid/dqp/internal/process/DQPCore.java
trunk/engine/src/main/java/org/teiid/dqp/internal/process/DataTierManagerImpl.java
trunk/engine/src/main/java/org/teiid/dqp/internal/process/Request.java
trunk/engine/src/main/java/org/teiid/query/optimizer/QueryOptimizer.java
trunk/engine/src/main/java/org/teiid/query/processor/ProcessorDataManager.java
trunk/engine/src/main/java/org/teiid/query/tempdata/TempTableDataManager.java
trunk/engine/src/main/java/org/teiid/query/util/CommandContext.java
trunk/engine/src/main/javacc/org/teiid/query/parser/SQLParser.jj
trunk/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCore.java
trunk/engine/src/test/java/org/teiid/query/processor/FakeDataManager.java
trunk/engine/src/test/java/org/teiid/query/processor/HardcodedDataManager.java
trunk/engine/src/test/java/org/teiid/query/processor/relational/TestBatchedUpdateNode.java
trunk/engine/src/test/java/org/teiid/query/processor/relational/TestProjectIntoNode.java
trunk/jboss-integration/src/main/java/org/teiid/jboss/deployers/RuntimeEngineDeployer.java
trunk/metadata/src/main/resources/System.vdb
trunk/runtime/src/main/java/org/teiid/deployers/CompositeVDB.java
trunk/runtime/src/main/java/org/teiid/deployers/VDBRepository.java
trunk/test-integration/common/src/test/java/org/teiid/jdbc/FakeServer.java
trunk/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumns.expected
trunk/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetProcedureColumns.expected
trunk/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetProcedures.expected
trunk/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetProceduresWithEscape.expected
trunk/test-integration/common/src/test/resources/TestODBCSchema/test_PG_ATTRIBUTE.expected
trunk/test-integration/common/src/test/resources/TestPartsDatabaseMetadata/testColumns.expected
trunk/test-integration/common/src/test/resources/TestPartsDatabaseMetadata/testProcedureColumns.expected
trunk/test-integration/common/src/test/resources/TestPartsDatabaseMetadata/testProcedures.expected
trunk/test-integration/common/src/test/resources/TestSystemVirtualModel/testColumns.expected
trunk/test-integration/common/src/test/resources/TestSystemVirtualModel/testProcedureParams.expected
trunk/test-integration/common/src/test/resources/TestSystemVirtualModel/testProcedures.expected
Log:
TEIID-1326 TEIID-245 refinement of logic for runtime update of metadata
Modified: trunk/api/src/main/java/org/teiid/events/EventDistributor.java
===================================================================
--- trunk/api/src/main/java/org/teiid/events/EventDistributor.java 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/api/src/main/java/org/teiid/events/EventDistributor.java 2011-04-28 02:55:13 UTC (rev 3126)
@@ -63,9 +63,11 @@
* @param tableNames
*/
void dataModification(String vdbName, int vdbVersion, String schema, String... tableNames);
+
+ void setColumnStats(String vdbName, int vdbVersion, String schemaName,
+ String tableName, String columnName, ColumnStats stats);
+
+ void setTableStats(String vdbName, int vdbVersion, String schemaName,
+ String tableName, TableStats stats);
- void setTableStats(String vdbName, int vdbVersion, String schemaName, String tableName, TableStats stats);
-
- void setColumnStats(String vdbName, int vdbVersion, String schemaName, String tableName, String columnName, ColumnStats stats);
-
}
Modified: trunk/api/src/main/java/org/teiid/metadata/Column.java
===================================================================
--- trunk/api/src/main/java/org/teiid/metadata/Column.java 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/api/src/main/java/org/teiid/metadata/Column.java 2011-04-28 02:55:13 UTC (rev 3126)
@@ -249,5 +249,20 @@
public void setNativeType(String nativeType) {
this.nativeType = DataTypeManager.getCanonicalString(nativeType);
}
+
+ public void setColumnStats(ColumnStats stats) {
+ if (stats.getDistinctValues() != null) {
+ setDistinctValues(stats.getDistinctValues());
+ }
+ if (stats.getNullValues() != null) {
+ setNullValues(stats.getNullValues());
+ }
+ if (stats.getMaximumValue() != null) {
+ setMaximumValue(stats.getMaximumValue());
+ }
+ if (stats.getMinimumValue() != null) {
+ setMinimumValue(stats.getMinimumValue());
+ }
+ }
}
\ No newline at end of file
Modified: trunk/api/src/main/java/org/teiid/metadata/ColumnStats.java
===================================================================
--- trunk/api/src/main/java/org/teiid/metadata/ColumnStats.java 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/api/src/main/java/org/teiid/metadata/ColumnStats.java 2011-04-28 02:55:13 UTC (rev 3126)
@@ -22,43 +22,47 @@
package org.teiid.metadata;
-public class ColumnStats {
+import java.io.Serializable;
- private int numDistinctValues = -1;
- private int numNullValues = -1;
- private String min;
- private String max;
-
- public int getNumDistinctValues() {
- return numDistinctValues;
- }
+public class ColumnStats implements Serializable {
+
+ private static final long serialVersionUID = 7827734836519486538L;
- public void setNumDistinctValues(int numDistinctValues) {
- this.numDistinctValues = numDistinctValues;
- }
+ private Integer distinctValues;
+ private Integer nullValues;
+ private String minimumValue;
+ private String maximumValue;
- public int getNumNullValues() {
- return numNullValues;
+ public String getMinimumValue() {
+ return minimumValue;
}
- public void setNumNullValues(int numNullValues) {
- this.numNullValues = numNullValues;
+ public void setMinimumValue(String min) {
+ this.minimumValue = min;
}
- public String getMin() {
- return min;
+ public String getMaximumValue() {
+ return maximumValue;
}
- public void setMin(String min) {
- this.min = min;
+ public void setMaximumValue(String max) {
+ this.maximumValue = max;
}
-
- public String getMax() {
- return max;
+
+ public Integer getDistinctValues() {
+ return distinctValues;
}
-
- public void setMax(String max) {
- this.max = max;
+
+ public void setDistinctValues(Integer numDistinctValues) {
+ this.distinctValues = numDistinctValues;
}
+
+ public Integer getNullValues() {
+ return nullValues;
+ }
+
+ public void setNullValues(Integer numNullValues) {
+ this.nullValues = numNullValues;
+ }
}
Deleted: trunk/api/src/main/java/org/teiid/metadata/MetadataProvider.java
===================================================================
--- trunk/api/src/main/java/org/teiid/metadata/MetadataProvider.java 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/api/src/main/java/org/teiid/metadata/MetadataProvider.java 2011-04-28 02:55:13 UTC (rev 3126)
@@ -1,41 +0,0 @@
-/*
- * 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;
-
-import org.teiid.CommandContext;
-
-/**
- * A hook for providing {@link ViewDefinition}s
- */
-public interface MetadataProvider {
-
- /**
- * Returns an updated {@link ViewDefinition} or null if the default view definition
- * should be used.
- * @param viewName
- * @param context
- * @return
- */
- ViewDefinition getViewDefinition(String schema, String viewName, CommandContext context);
-
-}
Copied: trunk/api/src/main/java/org/teiid/metadata/MetadataRepository.java (from rev 3120, trunk/api/src/main/java/org/teiid/metadata/MetadataProvider.java)
===================================================================
--- trunk/api/src/main/java/org/teiid/metadata/MetadataRepository.java (rev 0)
+++ trunk/api/src/main/java/org/teiid/metadata/MetadataRepository.java 2011-04-28 02:55:13 UTC (rev 3126)
@@ -0,0 +1,117 @@
+/*
+ * 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;
+
+/**
+ * A hook for externalizing view, procedure, and other metadata.
+ */
+public interface MetadataRepository {
+
+ public enum TriggerOperation {
+ INSERT,
+ UPDATE,
+ DELETE
+ }
+
+ /**
+ * Returns an updated view definition (AS SQL only) or null if the current view definition should be used
+ * should be used.
+ */
+ String getViewDefinition(String vdbName, int vdbVersion, Table table);
+
+ /**
+ * Set the view definition
+ * @param vdbName
+ * @param vdbVersion
+ * @param table
+ * @param viewDefinition
+ */
+ void setViewDefinition(String vdbName, int vdbVersion, Table table, String viewDefinition);
+
+ /**
+ * Returns an updated trigger definition (FOR EACH ROW ...) or null if the current view definition should be used
+ * should be used.
+ */
+ String getInsteadOfTriggerDefinition(String vdbName, int vdbVersion, Table table, TriggerOperation triggerOperation);
+
+ /**
+ *
+ * @param vdbName
+ * @param vdbVersion
+ * @param table
+ * @param triggerOperation
+ * @param triggerDefinition
+ */
+ void setInsteadOfTriggerDefinition(String vdbName, int vdbVersion, Table table, TriggerOperation triggerOperation, String triggerDefinition);
+
+ /**
+ * Returns an updated procedure definition (CREATE PROCEDURE ...) or null if the current procedure definition should be used
+ * should be used.
+ */
+ String getProcedureDefinition(String vdbName, int vdbVersion, Procedure procedure);
+
+ /**
+ * Set the procedure definition
+ * @param vdbName
+ * @param vdbVersion
+ * @param table
+ * @param procedureDefinition
+ */
+ void setProcedureDefinition(String vdbName, int vdbVersion, Procedure table, String procedureDefinition);
+
+ /**
+ * Get updated {@link TableStats} for the given table
+ * @param vdbName
+ * @param vdbVersion
+ * @param table
+ * @return the stats. a null result or a null stat indicates that the current value should be used
+ */
+ TableStats getTableStats(String vdbName, int vdbVersion, Table table);
+
+ /**
+ * Set the {@link TableStats} for the given table
+ * @param vdbName
+ * @param vdbVersion
+ * @param table
+ * @param tableStats
+ */
+ void setTableStats(String vdbName, int vdbVersion, Table table, TableStats tableStats);
+
+ /**
+ * Get updated {@link ColumnStats} for the given column
+ * @param vdbName
+ * @param vdbVersion
+ * @param column
+ * @return the stats. a null result or a null stat indicates that the default should be used
+ */
+ ColumnStats getColumnStats(String vdbName, int vdbVersion, Column column);
+
+ /**
+ * Set the {@link ColumnStats} for a given column
+ * @param vdbName
+ * @param vdbVersion
+ * @param column
+ * @param columnStats
+ */
+ void setColumnStats(String vdbName, int vdbVersion, Column column, ColumnStats columnStats);
+}
Property changes on: trunk/api/src/main/java/org/teiid/metadata/MetadataRepository.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified: trunk/api/src/main/java/org/teiid/metadata/Procedure.java
===================================================================
--- trunk/api/src/main/java/org/teiid/metadata/Procedure.java 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/api/src/main/java/org/teiid/metadata/Procedure.java 2011-04-28 02:55:13 UTC (rev 3126)
@@ -48,6 +48,7 @@
private String queryPlan;
private Schema parent;
+ private transient long lastModified;
public void setParent(Schema parent) {
this.parent = parent;
@@ -127,5 +128,13 @@
public Schema getParent() {
return parent;
}
+
+ public long getLastModified() {
+ return lastModified;
+ }
+
+ public void setLastModified(long lastModified) {
+ this.lastModified = lastModified;
+ }
}
\ No newline at end of file
Modified: trunk/api/src/main/java/org/teiid/metadata/Table.java
===================================================================
--- trunk/api/src/main/java/org/teiid/metadata/Table.java 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/api/src/main/java/org/teiid/metadata/Table.java 2011-04-28 02:55:13 UTC (rev 3126)
@@ -289,4 +289,10 @@
this.lastModified = lastModified;
}
+ public void setTableStats(TableStats stats) {
+ if (stats.getCardinality() != null) {
+ setCardinality(stats.getCardinality());
+ }
+ }
+
}
\ No newline at end of file
Modified: trunk/api/src/main/java/org/teiid/metadata/TableStats.java
===================================================================
--- trunk/api/src/main/java/org/teiid/metadata/TableStats.java 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/api/src/main/java/org/teiid/metadata/TableStats.java 2011-04-28 02:55:13 UTC (rev 3126)
@@ -22,15 +22,19 @@
package org.teiid.metadata;
-public class TableStats {
+import java.io.Serializable;
+
+public class TableStats implements Serializable {
- private int cardinality;
+ private static final long serialVersionUID = 4316568283357485330L;
- public int getCardinality() {
+ private Integer cardinality;
+
+ public Integer getCardinality() {
return cardinality;
}
- public void setCardinality(int cardinality) {
+ public void setCardinality(Integer cardinality) {
this.cardinality = cardinality;
}
Deleted: trunk/api/src/main/java/org/teiid/metadata/ViewDefinition.java
===================================================================
--- trunk/api/src/main/java/org/teiid/metadata/ViewDefinition.java 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/api/src/main/java/org/teiid/metadata/ViewDefinition.java 2011-04-28 02:55:13 UTC (rev 3126)
@@ -1,36 +0,0 @@
-/*
- * 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;
-
-public class ViewDefinition {
- private String sql;
-
- public ViewDefinition(String sql) {
- this.sql = sql;
- }
-
- public String getSql() {
- return sql;
- }
-
-}
\ No newline at end of file
Modified: trunk/build/kits/jboss-container/teiid-releasenotes.html
===================================================================
--- trunk/build/kits/jboss-container/teiid-releasenotes.html 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/build/kits/jboss-container/teiid-releasenotes.html 2011-04-28 02:55:13 UTC (rev 3126)
@@ -10,7 +10,7 @@
<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 ${project.version} Release Notes</H1>
-<P>Teiid ${project.version} adds performance and integration features.
+<P>Teiid ${project.version} adds performance, integration, and runtime metadata update features.
<H2>Overview</H2>
<UL>
@@ -63,6 +63,8 @@
<h4>from 7.3</h4>
<ul>
+ <li>SYS.COLUMNS has two new columns to get statistical information: DistinctCount and NullCount
+ <li>ARRAY_AGG is now a reserved word</li>
<li>The use of an IN procedure parameter with the name "source_name" in a multi-source model, will now be treated the parameter that controls which source
the procedure will execute against.
<li>Dynamic VDB functions injected via ExecutionFactory.getPushdownFunctions are now scoped to the SYS schema and have a fully qualified name that includes their source type. For example, instead of oracle_model.relate - which was only valid against the oracle_model source, there is now the SYS.oracle_sdo.relate function that is valid for all Oracle sources. Any fully-qualified reference to these functions will need updated.
@@ -73,6 +75,7 @@
<li>The default JDBC credentials are user/user - not admin/teiid
<li>Unordered limits are no longer pushed through conditions, dup removal, or UNION not all. This prevents the possibility of getting less results than the logical intent of the limit.
</ul>
+
<h4>from 7.1</h4>
<ul>
<li>Subqueries are no longer allowed to be SELECT INTO.
Modified: trunk/client/src/main/resources/org/teiid/jdbc/i18n.properties
===================================================================
--- trunk/client/src/main/resources/org/teiid/jdbc/i18n.properties 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/client/src/main/resources/org/teiid/jdbc/i18n.properties 2011-04-28 02:55:13 UTC (rev 3126)
@@ -42,7 +42,7 @@
MMStatement.Timeout_before_complete=Operation timed out before completion.
MMResultsImpl.Col_doesnt_exist=Column name "{0}" does not exist.
ResultsImpl.Op_invalid_fwd_only=This operation cannot be executed on TYPE_FORWARD_ONLY ResultSets.
-ResultsImpl.Invalid_col_index=Column index {0} is invalid. Index must be >= 0 and <= column count.
+ResultsImpl.Invalid_col_index=Column index {0} is invalid. Index must be >= 1 and <= column count.
MMConnection.Session_success=Successfully obtained a session.
MMConnection.Connection_close_success=Connection successfully closed.
MMConnection.Err_connection_close=Error trying to close driver connection: {0}
Modified: trunk/documentation/reference/src/main/docbook/en-US/content/grammar.xml
===================================================================
--- trunk/documentation/reference/src/main/docbook/en-US/content/grammar.xml 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/documentation/reference/src/main/docbook/en-US/content/grammar.xml 2011-04-28 02:55:13 UTC (rev 3126)
@@ -79,6 +79,7 @@
| <AND: "and">
| <ANY: "any">
| <ARRAY: "array">
+| <ARRAY_AGG: "array_agg">
| <AS: "as">
| <ASC: "asc">
| <ATOMIC: "atomic">
@@ -348,9 +349,10 @@
| <TIMETYPE: "{" "t">
| <TIMESTAMPTYPE: "{" "ts">
| <BOOLEANTYPE: "{" "b">
+| <POS_REF: ["$"] (<DIGIT>)+>
| <INTEGERVAL: (<MINUS>)? (<DIGIT>)+>
| <FLOATVAL: (<MINUS>)? (<DIGIT>)* <PERIOD> (<DIGIT>)+ (["e","E"] (["+","-"])? (<DIGIT>)+)?>
-| <STRINGVAL: ("N")? "\'" ("\'\'" | ~["\'"])* "\'">
+| <STRINGVAL: ("N" | "E")? "\'" ("\'\'" | ~["\'"])* "\'">
| <#LETTER: ["a"-"z","A"-"Z"] | ["\u0153"-"\ufffd"]>
| <#DIGIT: ["0"-"9"]>
}
@@ -364,6 +366,8 @@
| <RPAREN: ")">
| <LBRACE: "{">
| <RBRACE: "}">
+| <LSBRACE: "[">
+| <RSBRACE: "]">
| <EQ: "=">
| <NE: "<>">
| <NE2: "!=">
@@ -406,439 +410,455 @@
<entry align="left" valign="top"><para>::=
( <link linkend="prod4">createUpdateProcedure</link> | <link linkend="prod5">userCommand</link> | <link linkend="prod6">callableStatement</link> ) ( <SEMICOLON> )? <EOF></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod7" xreflabel="updateProcedure"/>updateProcedure</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod7" xreflabel="designerCommand"/>designerCommand</para></entry>
<entry align="left" valign="top"><para>::=
-( <link linkend="prod4">createUpdateProcedure</link> | <link linkend="prod8">triggerAction</link> ) <EOF></para></entry></row>
+( <link linkend="prod8">updateProcedure</link> | <link linkend="prod5">userCommand</link> ) ( <SEMICOLON> )? <EOF></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod8" xreflabel="triggerAction"/>triggerAction</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod8" xreflabel="updateProcedure"/>updateProcedure</para></entry>
<entry align="left" valign="top"><para>::=
-<FOR> <EACH> <ROW> <link linkend="prod9">block</link></para></entry></row>
+( <link linkend="prod4">createUpdateProcedure</link> | <link linkend="prod9">triggerAction</link> ) <EOF></para></entry></row>
<row>
+<entry align="right" valign="top"><para><anchor id="prod10" xreflabel="alter"/>alter</para></entry>
+<entry align="left" valign="top"><para>::=
+<ALTER> ( ( <link linkend="prod11">nonReserved</link> <link linkend="prod2">id</link> <AS> <link linkend="prod12">queryExpression</link> ) | ( <PROCEDURE> <link linkend="prod2">id</link> <AS> <link linkend="prod13">block</link> ) | ( <TRIGGER> <ON> <link linkend="prod2">id</link> <link linkend="prod11">nonReserved</link> <OF> ( <INSERT> | <UPDATE> | <DELETE> ) <AS> <link linkend="prod9">triggerAction</link> ) )</para></entry></row>
+<row>
+<entry align="right" valign="top"><para><anchor id="prod9" xreflabel="triggerAction"/>triggerAction</para></entry>
+<entry align="left" valign="top"><para>::=
+<FOR> <EACH> <ROW> <link linkend="prod13">block</link></para></entry></row>
+<row>
<entry align="right" valign="top"><para><anchor id="prod5" xreflabel="userCommand"/>userCommand</para></entry>
<entry align="left" valign="top"><para>::=
-( <link linkend="prod10">queryExpression</link> | <link linkend="prod11">storedProcedure</link> | <link linkend="prod12">insert</link> | <link linkend="prod13">update</link> | <link linkend="prod14">delete</link> | <link linkend="prod15">dropTable</link> | <link linkend="prod16">createTempTable</link> )</para></entry></row>
+( <link linkend="prod12">queryExpression</link> | <link linkend="prod14">storedProcedure</link> | <link linkend="prod15">insert</link> | <link linkend="prod16">update</link> | <link linkend="prod17">delete</link> | <link linkend="prod18">dropTable</link> | <link linkend="prod19">createTempTable</link> | <link linkend="prod10">alter</link> )</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod15" xreflabel="dropTable"/>dropTable</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod18" xreflabel="dropTable"/>dropTable</para></entry>
<entry align="left" valign="top"><para>::=
<DROP> <TABLE> <link linkend="prod2">id</link></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod16" xreflabel="createTempTable"/>createTempTable</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod19" xreflabel="createTempTable"/>createTempTable</para></entry>
<entry align="left" valign="top"><para>::=
-<CREATE> <LOCAL> <TEMPORARY> <TABLE> <link linkend="prod2">id</link> <LPAREN> <link linkend="prod17">tableElement</link> ( <COMMA> <link linkend="prod17">tableElement</link> )* ( <COMMA> <PRIMARY> <link linkend="prod18">nonReserved</link> <LPAREN> <link linkend="prod2">id</link> ( <COMMA> <link linkend="prod2">id</link> )* <RPAREN> )? <RPAREN></para></entry></row>
+<CREATE> <LOCAL> <TEMPORARY> <TABLE> <link linkend="prod2">id</link> <LPAREN> <link linkend="prod20">tableElement</link> ( <COMMA> <link linkend="prod20">tableElement</link> )* ( <COMMA> <PRIMARY> <link linkend="prod11">nonReserved</link> <LPAREN> <link linkend="prod2">id</link> ( <COMMA> <link linkend="prod2">id</link> )* <RPAREN> )? <RPAREN></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod17" xreflabel="tableElement"/>tableElement</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod20" xreflabel="tableElement"/>tableElement</para></entry>
<entry align="left" valign="top"><para>::=
-<link linkend="prod2">id</link> ( <link linkend="prod19">dataTypeString</link> | <link linkend="prod18">nonReserved</link> ) ( <NOT> <NULL> )?</para></entry></row>
+<link linkend="prod2">id</link> ( <link linkend="prod21">dataTypeString</link> | <link linkend="prod11">nonReserved</link> ) ( <NOT> <NULL> )?</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod20" xreflabel="errorStatement"/>errorStatement</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod22" xreflabel="errorStatement"/>errorStatement</para></entry>
<entry align="left" valign="top"><para>::=
-<ERROR> <link linkend="prod21">expression</link></para></entry></row>
+<ERROR> <link linkend="prod23">expression</link></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod22" xreflabel="statement"/>statement</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod24" xreflabel="statement"/>statement</para></entry>
<entry align="left" valign="top"><para>::=
-( <link linkend="prod23">ifStatement</link> | <link linkend="prod24">loopStatement</link> | <link linkend="prod25">whileStatement</link> | <link linkend="prod26">delimitedStatement</link> )</para></entry></row>
+( <link linkend="prod25">ifStatement</link> | <link linkend="prod26">loopStatement</link> | <link linkend="prod27">whileStatement</link> | <link linkend="prod28">delimitedStatement</link> )</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod26" xreflabel="delimitedStatement"/>delimitedStatement</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod28" xreflabel="delimitedStatement"/>delimitedStatement</para></entry>
<entry align="left" valign="top"><para>::=
-( <link linkend="prod27">assignStatement</link> | <link linkend="prod28">sqlStatement</link> | <link linkend="prod20">errorStatement</link> | <link linkend="prod29">declareStatement</link> | <link linkend="prod30">continueStatement</link> | <link linkend="prod31">breakStatement</link> ) <SEMICOLON></para></entry></row>
+( <link linkend="prod29">assignStatement</link> | <link linkend="prod30">sqlStatement</link> | <link linkend="prod22">errorStatement</link> | <link linkend="prod31">declareStatement</link> | <link linkend="prod32">continueStatement</link> | <link linkend="prod33">breakStatement</link> ) <SEMICOLON></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod9" xreflabel="block"/>block</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod13" xreflabel="block"/>block</para></entry>
<entry align="left" valign="top"><para>::=
-( <link linkend="prod22">statement</link> | ( <BEGIN> ( <link linkend="prod22">statement</link> )* <END> ) )</para></entry></row>
+( <link linkend="prod24">statement</link> | ( <BEGIN> ( <link linkend="prod24">statement</link> )* <END> ) )</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod31" xreflabel="breakStatement"/>breakStatement</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod33" xreflabel="breakStatement"/>breakStatement</para></entry>
<entry align="left" valign="top"><para>::=
<BREAK></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod30" xreflabel="continueStatement"/>continueStatement</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod32" xreflabel="continueStatement"/>continueStatement</para></entry>
<entry align="left" valign="top"><para>::=
<CONTINUE></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod25" xreflabel="whileStatement"/>whileStatement</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod27" xreflabel="whileStatement"/>whileStatement</para></entry>
<entry align="left" valign="top"><para>::=
-<WHILE> <LPAREN> <link linkend="prod32">criteria</link> <RPAREN> <link linkend="prod9">block</link></para></entry></row>
+<WHILE> <LPAREN> <link linkend="prod34">criteria</link> <RPAREN> <link linkend="prod13">block</link></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod24" xreflabel="loopStatement"/>loopStatement</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod26" xreflabel="loopStatement"/>loopStatement</para></entry>
<entry align="left" valign="top"><para>::=
-<LOOP> <ON> <LPAREN> <link linkend="prod10">queryExpression</link> <RPAREN> <AS> <link linkend="prod2">id</link> <link linkend="prod9">block</link></para></entry></row>
+<LOOP> <ON> <LPAREN> <link linkend="prod12">queryExpression</link> <RPAREN> <AS> <link linkend="prod2">id</link> <link linkend="prod13">block</link></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod23" xreflabel="ifStatement"/>ifStatement</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod25" xreflabel="ifStatement"/>ifStatement</para></entry>
<entry align="left" valign="top"><para>::=
-<IF> <LPAREN> <link linkend="prod32">criteria</link> <RPAREN> <link linkend="prod9">block</link> ( <ELSE> <link linkend="prod9">block</link> )?</para></entry></row>
+<IF> <LPAREN> <link linkend="prod34">criteria</link> <RPAREN> <link linkend="prod13">block</link> ( <ELSE> <link linkend="prod13">block</link> )?</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod33" xreflabel="criteriaSelector"/>criteriaSelector</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod35" xreflabel="criteriaSelector"/>criteriaSelector</para></entry>
<entry align="left" valign="top"><para>::=
( ( <EQ> | <NE> | <NE2> | <LE> | <GE> | <LT> | <GT> | <IN> | <LIKE> | ( <IS> <NULL> ) | <BETWEEN> ) )? <CRITERIA> ( <ON> <LPAREN> <link linkend="prod2">id</link> ( <COMMA> <link linkend="prod2">id</link> )* <RPAREN> )?</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod34" xreflabel="hasCriteria"/>hasCriteria</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod36" xreflabel="hasCriteria"/>hasCriteria</para></entry>
<entry align="left" valign="top"><para>::=
-<HAS> <link linkend="prod33">criteriaSelector</link></para></entry></row>
+<HAS> <link linkend="prod35">criteriaSelector</link></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod29" xreflabel="declareStatement"/>declareStatement</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod31" xreflabel="declareStatement"/>declareStatement</para></entry>
<entry align="left" valign="top"><para>::=
-<DECLARE> <link linkend="prod35">dataType</link> <link linkend="prod2">id</link> ( ( <link linkend="prod18">nonReserved</link> | <EQ> ) <link linkend="prod36">assignStatementOperand</link> )?</para></entry></row>
+<DECLARE> <link linkend="prod37">dataType</link> <link linkend="prod2">id</link> ( ( <link linkend="prod11">nonReserved</link> | <EQ> ) <link linkend="prod38">assignStatementOperand</link> )?</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod27" xreflabel="assignStatement"/>assignStatement</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod29" xreflabel="assignStatement"/>assignStatement</para></entry>
<entry align="left" valign="top"><para>::=
-<link linkend="prod2">id</link> ( <link linkend="prod18">nonReserved</link> | <EQ> ) <link linkend="prod36">assignStatementOperand</link></para></entry></row>
+<link linkend="prod2">id</link> ( <link linkend="prod11">nonReserved</link> | <EQ> ) <link linkend="prod38">assignStatementOperand</link></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod36" xreflabel="assignStatementOperand"/>assignStatementOperand</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod38" xreflabel="assignStatementOperand"/>assignStatementOperand</para></entry>
<entry align="left" valign="top"><para>::=
-( ( <link linkend="prod12">insert</link> ) | <link linkend="prod13">update</link> | <link linkend="prod14">delete</link> | ( <link linkend="prod21">expression</link> ) | <link linkend="prod10">queryExpression</link> )</para></entry></row>
+( ( <link linkend="prod15">insert</link> ) | <link linkend="prod16">update</link> | <link linkend="prod17">delete</link> | ( <link linkend="prod23">expression</link> ) | <link linkend="prod12">queryExpression</link> )</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod28" xreflabel="sqlStatement"/>sqlStatement</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod30" xreflabel="sqlStatement"/>sqlStatement</para></entry>
<entry align="left" valign="top"><para>::=
-( ( <link linkend="prod5">userCommand</link> ) | <link linkend="prod37">dynamicCommand</link> | ( <link linkend="prod2">id</link> ( <link linkend="prod18">nonReserved</link> | <EQ> ) <link linkend="prod11">storedProcedure</link> ) )</para></entry></row>
+( ( <link linkend="prod5">userCommand</link> ) | <link linkend="prod39">dynamicCommand</link> | ( <link linkend="prod2">id</link> ( <link linkend="prod11">nonReserved</link> | <EQ> ) <link linkend="prod14">storedProcedure</link> ) )</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod38" xreflabel="translateCriteria"/>translateCriteria</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod40" xreflabel="translateCriteria"/>translateCriteria</para></entry>
<entry align="left" valign="top"><para>::=
-<TRANSLATE> <link linkend="prod33">criteriaSelector</link> ( <WITH> <LPAREN> <link linkend="prod2">id</link> <EQ> <link linkend="prod21">expression</link> ( <COMMA> <link linkend="prod2">id</link> <EQ> <link linkend="prod21">expression</link> )* <RPAREN> )?</para></entry></row>
+<TRANSLATE> <link linkend="prod35">criteriaSelector</link> ( <WITH> <LPAREN> <link linkend="prod2">id</link> <EQ> <link linkend="prod23">expression</link> ( <COMMA> <link linkend="prod2">id</link> <EQ> <link linkend="prod23">expression</link> )* <RPAREN> )?</para></entry></row>
<row>
<entry align="right" valign="top"><para><anchor id="prod4" xreflabel="createUpdateProcedure"/>createUpdateProcedure</para></entry>
<entry align="left" valign="top"><para>::=
-<CREATE> ( <VIRTUAL> )? ( <UPDATE> )? <PROCEDURE> <link linkend="prod9">block</link></para></entry></row>
+<CREATE> ( <VIRTUAL> )? ( <UPDATE> )? <PROCEDURE> <link linkend="prod13">block</link></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod37" xreflabel="dynamicCommand"/>dynamicCommand</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod39" xreflabel="dynamicCommand"/>dynamicCommand</para></entry>
<entry align="left" valign="top"><para>::=
-( <EXECUTE> | <EXEC> ) ( ( <STRING> | <IMMEDIATE> ) )? <link linkend="prod21">expression</link> ( <AS> <link linkend="prod39">createElementsWithTypes</link> ( <INTO> <link linkend="prod2">id</link> )? )? ( <USING> <link linkend="prod40">setClauseList</link> )? ( <UPDATE> ( ( <INTEGERVAL> ) | ( <STAR> ) ) )?</para></entry></row>
+( <EXECUTE> | <EXEC> ) ( ( <STRING> | <IMMEDIATE> ) )? <link linkend="prod23">expression</link> ( <AS> <link linkend="prod41">createElementsWithTypes</link> ( <INTO> <link linkend="prod2">id</link> )? )? ( <USING> <link linkend="prod42">setClauseList</link> )? ( <UPDATE> ( ( <INTEGERVAL> ) | ( <STAR> ) ) )?</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod40" xreflabel="setClauseList"/>setClauseList</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod42" xreflabel="setClauseList"/>setClauseList</para></entry>
<entry align="left" valign="top"><para>::=
<link linkend="prod2">id</link> <EQ> ( <COMMA> <link linkend="prod2">id</link> <EQ> )*</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod39" xreflabel="createElementsWithTypes"/>createElementsWithTypes</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod41" xreflabel="createElementsWithTypes"/>createElementsWithTypes</para></entry>
<entry align="left" valign="top"><para>::=
-<link linkend="prod2">id</link> <link linkend="prod19">dataTypeString</link> ( <COMMA> <link linkend="prod2">id</link> <link linkend="prod19">dataTypeString</link> )*</para></entry></row>
+<link linkend="prod2">id</link> <link linkend="prod21">dataTypeString</link> ( <COMMA> <link linkend="prod2">id</link> <link linkend="prod21">dataTypeString</link> )*</para></entry></row>
<row>
<entry align="right" valign="top"><para><anchor id="prod6" xreflabel="callableStatement"/>callableStatement</para></entry>
<entry align="left" valign="top"><para>::=
-<LBRACE> ( <QMARK> <EQ> )? <CALL> <link linkend="prod2">id</link> ( <LPAREN> ( <link linkend="prod41">executeUnnamedParams</link> ) <RPAREN> )? <RBRACE> ( <link linkend="prod42">option</link> )?</para></entry></row>
+<LBRACE> ( <QMARK> <EQ> )? <CALL> <link linkend="prod2">id</link> ( <LPAREN> ( <link linkend="prod43">executeUnnamedParams</link> ) <RPAREN> )? <RBRACE> ( <link linkend="prod44">option</link> )?</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod11" xreflabel="storedProcedure"/>storedProcedure</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod14" xreflabel="storedProcedure"/>storedProcedure</para></entry>
<entry align="left" valign="top"><para>::=
-( ( <EXEC> | <EXECUTE> | <CALL> ) <link linkend="prod2">id</link> <LPAREN> ( <link linkend="prod43">executeNamedParams</link> | <link linkend="prod41">executeUnnamedParams</link> ) <RPAREN> ) ( <link linkend="prod42">option</link> )?</para></entry></row>
+( ( <EXEC> | <EXECUTE> | <CALL> ) <link linkend="prod2">id</link> <LPAREN> ( <link linkend="prod45">executeNamedParams</link> | <link linkend="prod43">executeUnnamedParams</link> ) <RPAREN> ) ( <link linkend="prod44">option</link> )?</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod41" xreflabel="executeUnnamedParams"/>executeUnnamedParams</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod43" xreflabel="executeUnnamedParams"/>executeUnnamedParams</para></entry>
<entry align="left" valign="top"><para>::=
-( <link linkend="prod21">expression</link> ( <COMMA> <link linkend="prod21">expression</link> )* )?</para></entry></row>
+( <link linkend="prod23">expression</link> ( <COMMA> <link linkend="prod23">expression</link> )* )?</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod43" xreflabel="executeNamedParams"/>executeNamedParams</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod45" xreflabel="executeNamedParams"/>executeNamedParams</para></entry>
<entry align="left" valign="top"><para>::=
-( <link linkend="prod2">id</link> <EQ> ( <GT> )? <link linkend="prod21">expression</link> ( <COMMA> <link linkend="prod2">id</link> <EQ> ( <GT> )? <link linkend="prod21">expression</link> )* )</para></entry></row>
+( <link linkend="prod2">id</link> <EQ> ( <GT> )? <link linkend="prod23">expression</link> ( <COMMA> <link linkend="prod2">id</link> <EQ> ( <GT> )? <link linkend="prod23">expression</link> )* )</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod12" xreflabel="insert"/>insert</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod15" xreflabel="insert"/>insert</para></entry>
<entry align="left" valign="top"><para>::=
-<INSERT> <INTO> <link linkend="prod2">id</link> ( <link linkend="prod44">columnList</link> )? ( ( <VALUES> <link linkend="prod45">rowValues</link> ) | ( <link linkend="prod10">queryExpression</link> ) ) ( <link linkend="prod42">option</link> )?</para></entry></row>
+<INSERT> <INTO> <link linkend="prod2">id</link> ( <link linkend="prod46">columnList</link> )? ( ( <VALUES> <link linkend="prod47">rowValues</link> ) | ( <link linkend="prod12">queryExpression</link> ) ) ( <link linkend="prod44">option</link> )?</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod44" xreflabel="columnList"/>columnList</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod46" xreflabel="columnList"/>columnList</para></entry>
<entry align="left" valign="top"><para>::=
<LPAREN> <link linkend="prod2">id</link> ( <COMMA> <link linkend="prod2">id</link> )* <RPAREN></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod45" xreflabel="rowValues"/>rowValues</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod47" xreflabel="rowValues"/>rowValues</para></entry>
<entry align="left" valign="top"><para>::=
-<LPAREN> <link linkend="prod21">expression</link> ( <COMMA> <link linkend="prod21">expression</link> )* <RPAREN></para></entry></row>
+<LPAREN> <link linkend="prod23">expression</link> ( <COMMA> <link linkend="prod23">expression</link> )* <RPAREN></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod13" xreflabel="update"/>update</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod16" xreflabel="update"/>update</para></entry>
<entry align="left" valign="top"><para>::=
-<UPDATE> <link linkend="prod2">id</link> <SET> <link linkend="prod40">setClauseList</link> ( <link linkend="prod46">where</link> )? ( <link linkend="prod42">option</link> )?</para></entry></row>
+<UPDATE> <link linkend="prod2">id</link> <SET> <link linkend="prod42">setClauseList</link> ( <link linkend="prod48">where</link> )? ( <link linkend="prod44">option</link> )?</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod14" xreflabel="delete"/>delete</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod17" xreflabel="delete"/>delete</para></entry>
<entry align="left" valign="top"><para>::=
-<DELETE> <FROM> <link linkend="prod2">id</link> ( <link linkend="prod46">where</link> )? ( <link linkend="prod42">option</link> )?</para></entry></row>
+<DELETE> <FROM> <link linkend="prod2">id</link> ( <link linkend="prod48">where</link> )? ( <link linkend="prod44">option</link> )?</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod10" xreflabel="queryExpression"/>queryExpression</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod12" xreflabel="queryExpression"/>queryExpression</para></entry>
<entry align="left" valign="top"><para>::=
-( <WITH> <link linkend="prod47">withListElement</link> ( <COMMA> <link linkend="prod47">withListElement</link> )* )? <link linkend="prod48">queryExpressionBody</link></para></entry></row>
+( <WITH> <link linkend="prod49">withListElement</link> ( <COMMA> <link linkend="prod49">withListElement</link> )* )? <link linkend="prod50">queryExpressionBody</link></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod47" xreflabel="withListElement"/>withListElement</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod49" xreflabel="withListElement"/>withListElement</para></entry>
<entry align="left" valign="top"><para>::=
-<link linkend="prod2">id</link> ( <link linkend="prod44">columnList</link> )? <AS> <LPAREN> <link linkend="prod10">queryExpression</link> <RPAREN></para></entry></row>
+<link linkend="prod2">id</link> ( <link linkend="prod46">columnList</link> )? <AS> <LPAREN> <link linkend="prod12">queryExpression</link> <RPAREN></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod48" xreflabel="queryExpressionBody"/>queryExpressionBody</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod50" xreflabel="queryExpressionBody"/>queryExpressionBody</para></entry>
<entry align="left" valign="top"><para>::=
-<link linkend="prod49">queryTerm</link> ( ( <UNION> | <EXCEPT> ) ( <ALL> | <DISTINCT> )? <link linkend="prod49">queryTerm</link> )* ( <link linkend="prod50">orderby</link> )? ( <link linkend="prod51">limit</link> )? ( <link linkend="prod42">option</link> )?</para></entry></row>
+<link linkend="prod51">queryTerm</link> ( ( <UNION> | <EXCEPT> ) ( <ALL> | <DISTINCT> )? <link linkend="prod51">queryTerm</link> )* ( <link linkend="prod52">orderby</link> )? ( <link linkend="prod53">limit</link> )? ( <link linkend="prod44">option</link> )?</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod49" xreflabel="queryTerm"/>queryTerm</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod51" xreflabel="queryTerm"/>queryTerm</para></entry>
<entry align="left" valign="top"><para>::=
-<link linkend="prod52">queryPrimary</link> ( <INTERSECT> ( <ALL> | <DISTINCT> )? <link linkend="prod52">queryPrimary</link> )*</para></entry></row>
+<link linkend="prod54">queryPrimary</link> ( <INTERSECT> ( <ALL> | <DISTINCT> )? <link linkend="prod54">queryPrimary</link> )*</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod52" xreflabel="queryPrimary"/>queryPrimary</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod54" xreflabel="queryPrimary"/>queryPrimary</para></entry>
<entry align="left" valign="top"><para>::=
-( <link linkend="prod53">query</link> | ( <TABLE> <link linkend="prod2">id</link> ) | ( <LPAREN> <link linkend="prod48">queryExpressionBody</link> <RPAREN> ) )</para></entry></row>
+( <link linkend="prod55">query</link> | ( <TABLE> <link linkend="prod2">id</link> ) | ( <LPAREN> <link linkend="prod50">queryExpressionBody</link> <RPAREN> ) )</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod53" xreflabel="query"/>query</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod55" xreflabel="query"/>query</para></entry>
<entry align="left" valign="top"><para>::=
-<link linkend="prod54">select</link> ( <link linkend="prod55">into</link> )? ( <link linkend="prod56">from</link> ( <link linkend="prod46">where</link> )? ( <link linkend="prod57">groupBy</link> )? ( <link linkend="prod58">having</link> )? )?</para></entry></row>
+<link linkend="prod56">select</link> ( <link linkend="prod57">into</link> )? ( <link linkend="prod58">from</link> ( <link linkend="prod48">where</link> )? ( <link linkend="prod59">groupBy</link> )? ( <link linkend="prod60">having</link> )? )?</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod55" xreflabel="into"/>into</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod57" xreflabel="into"/>into</para></entry>
<entry align="left" valign="top"><para>::=
<INTO> ( <link linkend="prod2">id</link> )</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod54" xreflabel="select"/>select</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod56" xreflabel="select"/>select</para></entry>
<entry align="left" valign="top"><para>::=
-<SELECT> ( <ALL> | ( <DISTINCT> ) )? ( <STAR> | ( <link linkend="prod59">selectSymbol</link> ( <COMMA> <link linkend="prod59">selectSymbol</link> )* ) )</para></entry></row>
+<SELECT> ( <ALL> | ( <DISTINCT> ) )? ( <STAR> | ( <link linkend="prod61">selectSymbol</link> ( <COMMA> <link linkend="prod61">selectSymbol</link> )* ) )</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod59" xreflabel="selectSymbol"/>selectSymbol</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod61" xreflabel="selectSymbol"/>selectSymbol</para></entry>
<entry align="left" valign="top"><para>::=
-( <link linkend="prod60">selectExpression</link> | <link linkend="prod61">allInGroupSymbol</link> )</para></entry></row>
+( <link linkend="prod62">selectExpression</link> | <link linkend="prod63">allInGroupSymbol</link> )</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod60" xreflabel="selectExpression"/>selectExpression</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod62" xreflabel="selectExpression"/>selectExpression</para></entry>
<entry align="left" valign="top"><para>::=
-( <link linkend="prod21">expression</link> ( ( <AS> )? <link linkend="prod2">id</link> )? )</para></entry></row>
+( <link linkend="prod23">expression</link> ( ( <AS> )? <link linkend="prod2">id</link> )? )</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod62" xreflabel="derivedColumn"/>derivedColumn</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod64" xreflabel="derivedColumn"/>derivedColumn</para></entry>
<entry align="left" valign="top"><para>::=
-( <link linkend="prod21">expression</link> ( <AS> <link linkend="prod2">id</link> )? )</para></entry></row>
+( <link linkend="prod23">expression</link> ( <AS> <link linkend="prod2">id</link> )? )</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod61" xreflabel="allInGroupSymbol"/>allInGroupSymbol</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod63" xreflabel="allInGroupSymbol"/>allInGroupSymbol</para></entry>
<entry align="left" valign="top"><para>::=
<ALL_IN_GROUP></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod63" xreflabel="xmlAgg"/>xmlAgg</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod65" xreflabel="xmlAgg"/>xmlAgg</para></entry>
<entry align="left" valign="top"><para>::=
-<XMLAGG> <LPAREN> <link linkend="prod21">expression</link> ( <link linkend="prod50">orderby</link> )? <RPAREN></para></entry></row>
+<XMLAGG> <LPAREN> <link linkend="prod23">expression</link> ( <link linkend="prod52">orderby</link> )? <RPAREN></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod64" xreflabel="textAgg"/>textAgg</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod66" xreflabel="arrayAgg"/>arrayAgg</para></entry>
<entry align="left" valign="top"><para>::=
-<link linkend="prod18">nonReserved</link> <LPAREN> <FOR> <link linkend="prod62">derivedColumn</link> ( <COMMA> <link linkend="prod62">derivedColumn</link> )* ( <ID> <link linkend="prod65">charVal</link> )? ( ( <ID> <link linkend="prod65">charVal</link> ) )? ( <ID> )? ( ( <ID> <link linkend="prod2">id</link> ) )? ( <link linkend="prod50">orderby</link> )? <RPAREN></para></entry></row>
+<ARRAY_AGG> <LPAREN> <link linkend="prod23">expression</link> ( <link linkend="prod52">orderby</link> )? <RPAREN></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod66" xreflabel="aggregateSymbol"/>aggregateSymbol</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod67" xreflabel="textAgg"/>textAgg</para></entry>
<entry align="left" valign="top"><para>::=
-( ( <link linkend="prod18">nonReserved</link> <LPAREN> <STAR> <RPAREN> ) | ( ( <link linkend="prod18">nonReserved</link> | <ANY> | <SOME> ) <LPAREN> ( <DISTINCT> | <ALL> )? <link linkend="prod21">expression</link> <RPAREN> ) )</para></entry></row>
+<link linkend="prod11">nonReserved</link> <LPAREN> <FOR> <link linkend="prod64">derivedColumn</link> ( <COMMA> <link linkend="prod64">derivedColumn</link> )* ( <ID> <link linkend="prod68">charVal</link> )? ( ( <ID> <link linkend="prod68">charVal</link> ) )? ( <ID> )? ( ( <ID> <link linkend="prod2">id</link> ) )? ( <link linkend="prod52">orderby</link> )? <RPAREN></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod56" xreflabel="from"/>from</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod69" xreflabel="aggregateSymbol"/>aggregateSymbol</para></entry>
<entry align="left" valign="top"><para>::=
-<FROM> ( <link linkend="prod67">tableReference</link> ( <COMMA> <link linkend="prod67">tableReference</link> )* )</para></entry></row>
+( ( <link linkend="prod11">nonReserved</link> <LPAREN> <STAR> <RPAREN> ) | ( ( <link linkend="prod11">nonReserved</link> | <ANY> | <SOME> ) <LPAREN> ( <DISTINCT> | <ALL> )? <link linkend="prod23">expression</link> <RPAREN> ) )</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod67" xreflabel="tableReference"/>tableReference</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod58" xreflabel="from"/>from</para></entry>
<entry align="left" valign="top"><para>::=
-( ( <LBRACE> <link linkend="prod18">nonReserved</link> <link linkend="prod68">joinedTable</link> <RBRACE> ) | <link linkend="prod68">joinedTable</link> )</para></entry></row>
+<FROM> ( <link linkend="prod70">tableReference</link> ( <COMMA> <link linkend="prod70">tableReference</link> )* )</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod68" xreflabel="joinedTable"/>joinedTable</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod70" xreflabel="tableReference"/>tableReference</para></entry>
<entry align="left" valign="top"><para>::=
-<link linkend="prod69">tablePrimary</link> ( ( <link linkend="prod70">crossJoin</link> | <link linkend="prod71">qualifiedJoin</link> ) )*</para></entry></row>
+( ( <LBRACE> <link linkend="prod11">nonReserved</link> <link linkend="prod71">joinedTable</link> <RBRACE> ) | <link linkend="prod71">joinedTable</link> )</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod70" xreflabel="crossJoin"/>crossJoin</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod71" xreflabel="joinedTable"/>joinedTable</para></entry>
<entry align="left" valign="top"><para>::=
-( ( <CROSS> | <UNION> ) <JOIN> <link linkend="prod69">tablePrimary</link> )</para></entry></row>
+<link linkend="prod72">tablePrimary</link> ( ( <link linkend="prod73">crossJoin</link> | <link linkend="prod74">qualifiedJoin</link> ) )*</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod71" xreflabel="qualifiedJoin"/>qualifiedJoin</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod73" xreflabel="crossJoin"/>crossJoin</para></entry>
<entry align="left" valign="top"><para>::=
-( ( ( <RIGHT> ( <OUTER> )? ) | ( <LEFT> ( <OUTER> )? ) | ( <FULL> ( <OUTER> )? ) | <INNER> )? <JOIN> <link linkend="prod67">tableReference</link> <ON> <link linkend="prod32">criteria</link> )</para></entry></row>
+( ( <CROSS> | <UNION> ) <JOIN> <link linkend="prod72">tablePrimary</link> )</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod69" xreflabel="tablePrimary"/>tablePrimary</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod74" xreflabel="qualifiedJoin"/>qualifiedJoin</para></entry>
<entry align="left" valign="top"><para>::=
-( <link linkend="prod72">textTable</link> | <link linkend="prod73">arrayTable</link> | <link linkend="prod74">xmlTable</link> | <link linkend="prod75">unaryFromClause</link> | <link linkend="prod76">subqueryFromClause</link> | ( <LPAREN> <link linkend="prod68">joinedTable</link> <RPAREN> ) ) ( ( <MAKEDEP> ) | ( <MAKENOTDEP> ) )?</para></entry></row>
+( ( ( <RIGHT> ( <OUTER> )? ) | ( <LEFT> ( <OUTER> )? ) | ( <FULL> ( <OUTER> )? ) | <INNER> )? <JOIN> <link linkend="prod70">tableReference</link> <ON> <link linkend="prod34">criteria</link> )</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod77" xreflabel="xmlSerialize"/>xmlSerialize</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod72" xreflabel="tablePrimary"/>tablePrimary</para></entry>
<entry align="left" valign="top"><para>::=
-<XMLSERIALIZE> <LPAREN> ( <link linkend="prod18">nonReserved</link> )? <link linkend="prod21">expression</link> ( <AS> ( <STRING> | <VARCHAR> | <CLOB> ) )? <RPAREN></para></entry></row>
+( <link linkend="prod75">textTable</link> | <link linkend="prod76">arrayTable</link> | <link linkend="prod77">xmlTable</link> | <link linkend="prod78">unaryFromClause</link> | <link linkend="prod79">subqueryFromClause</link> | ( <LPAREN> <link linkend="prod71">joinedTable</link> <RPAREN> ) ) ( ( <MAKEDEP> ) | ( <MAKENOTDEP> ) )?</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod18" xreflabel="nonReserved"/>nonReserved</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod80" xreflabel="xmlSerialize"/>xmlSerialize</para></entry>
<entry align="left" valign="top"><para>::=
+<XMLSERIALIZE> <LPAREN> ( <link linkend="prod11">nonReserved</link> )? <link linkend="prod23">expression</link> ( <AS> ( <STRING> | <VARCHAR> | <CLOB> ) )? <RPAREN></para></entry></row>
+<row>
+<entry align="right" valign="top"><para><anchor id="prod11" xreflabel="nonReserved"/>nonReserved</para></entry>
+<entry align="left" valign="top"><para>::=
<ID></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod73" xreflabel="arrayTable"/>arrayTable</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod76" xreflabel="arrayTable"/>arrayTable</para></entry>
<entry align="left" valign="top"><para>::=
-<ID> <LPAREN> <link linkend="prod21">expression</link> <link linkend="prod18">nonReserved</link> <link linkend="prod39">createElementsWithTypes</link> <RPAREN> ( <AS> )? <link linkend="prod2">id</link></para></entry></row>
+<ID> <LPAREN> <link linkend="prod23">expression</link> <link linkend="prod11">nonReserved</link> <link linkend="prod41">createElementsWithTypes</link> <RPAREN> ( <AS> )? <link linkend="prod2">id</link></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod72" xreflabel="textTable"/>textTable</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod75" xreflabel="textTable"/>textTable</para></entry>
<entry align="left" valign="top"><para>::=
-<ID> <LPAREN> <link linkend="prod21">expression</link> <link linkend="prod18">nonReserved</link> <link linkend="prod78">textColumn</link> ( <COMMA> <link linkend="prod78">textColumn</link> )* ( <ID> <link linkend="prod65">charVal</link> )? ( ( <ESCAPE> <link linkend="prod65">charVal</link> ) | ( <ID> <link linkend="prod65">charVal</link> ) )? ( <ID> ( <link linkend="prod79">intVal</link> )? )? ( <ID> <link linkend="prod79">intVal</link> )? <RPAREN> ( <AS> )? <link linkend="prod2">id</link></para></entry></row>
+<ID> <LPAREN> <link linkend="prod23">expression</link> <link linkend="prod11">nonReserved</link> <link linkend="prod81">textColumn</link> ( <COMMA> <link linkend="prod81">textColumn</link> )* ( <ID> <link linkend="prod68">charVal</link> )? ( ( <ESCAPE> <link linkend="prod68">charVal</link> ) | ( <ID> <link linkend="prod68">charVal</link> ) )? ( <ID> ( <link linkend="prod82">intVal</link> )? )? ( <ID> <link linkend="prod82">intVal</link> )? <RPAREN> ( <AS> )? <link linkend="prod2">id</link></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod78" xreflabel="textColumn"/>textColumn</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod81" xreflabel="textColumn"/>textColumn</para></entry>
<entry align="left" valign="top"><para>::=
-<link linkend="prod2">id</link> <link linkend="prod35">dataType</link> ( <ID> <link linkend="prod79">intVal</link> )?</para></entry></row>
+<link linkend="prod2">id</link> <link linkend="prod37">dataType</link> ( <ID> <link linkend="prod82">intVal</link> )?</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod80" xreflabel="xmlQuery"/>xmlQuery</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod83" xreflabel="xmlQuery"/>xmlQuery</para></entry>
<entry align="left" valign="top"><para>::=
-<XMLQUERY> <LPAREN> ( <link linkend="prod81">xmlNamespaces</link> <COMMA> )? <link linkend="prod1">stringVal</link> ( <ID> <link linkend="prod62">derivedColumn</link> ( <COMMA> <link linkend="prod62">derivedColumn</link> )* )? ( ( <NULL> | <link linkend="prod18">nonReserved</link> ) <ON> <link linkend="prod18">nonReserved</link> )? <RPAREN></para></entry></row>
+<XMLQUERY> <LPAREN> ( <link linkend="prod84">xmlNamespaces</link> <COMMA> )? <link linkend="prod1">stringVal</link> ( <ID> <link linkend="prod64">derivedColumn</link> ( <COMMA> <link linkend="prod64">derivedColumn</link> )* )? ( ( <NULL> | <link linkend="prod11">nonReserved</link> ) <ON> <link linkend="prod11">nonReserved</link> )? <RPAREN></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod74" xreflabel="xmlTable"/>xmlTable</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod77" xreflabel="xmlTable"/>xmlTable</para></entry>
<entry align="left" valign="top"><para>::=
-<XMLTABLE> <LPAREN> ( <link linkend="prod81">xmlNamespaces</link> <COMMA> )? <link linkend="prod1">stringVal</link> ( <ID> <link linkend="prod62">derivedColumn</link> ( <COMMA> <link linkend="prod62">derivedColumn</link> )* )? ( <ID> <link linkend="prod82">xmlColumn</link> ( <COMMA> <link linkend="prod82">xmlColumn</link> )* )? <RPAREN> ( <AS> )? <link linkend="prod2">id</link></para></entry></row>
+<XMLTABLE> <LPAREN> ( <link linkend="prod84">xmlNamespaces</link> <COMMA> )? <link linkend="prod1">stringVal</link> ( <ID> <link linkend="prod64">derivedColumn</link> ( <COMMA> <link linkend="prod64">derivedColumn</link> )* )? ( <ID> <link linkend="prod85">xmlColumn</link> ( <COMMA> <link linkend="prod85">xmlColumn</link> )* )? <RPAREN> ( <AS> )? <link linkend="prod2">id</link></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod82" xreflabel="xmlColumn"/>xmlColumn</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod85" xreflabel="xmlColumn"/>xmlColumn</para></entry>
<entry align="left" valign="top"><para>::=
-<link linkend="prod2">id</link> ( ( <FOR> <link linkend="prod18">nonReserved</link> ) | ( <link linkend="prod35">dataType</link> ( <DEFAULT_KEYWORD> <link linkend="prod21">expression</link> )? ( <link linkend="prod18">nonReserved</link> <link linkend="prod1">stringVal</link> )? ) )</para></entry></row>
+<link linkend="prod2">id</link> ( ( <FOR> <link linkend="prod11">nonReserved</link> ) | ( <link linkend="prod37">dataType</link> ( <DEFAULT_KEYWORD> <link linkend="prod23">expression</link> )? ( <link linkend="prod11">nonReserved</link> <link linkend="prod1">stringVal</link> )? ) )</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod79" xreflabel="intVal"/>intVal</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod82" xreflabel="intVal"/>intVal</para></entry>
<entry align="left" valign="top"><para>::=
<INTEGERVAL></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod76" xreflabel="subqueryFromClause"/>subqueryFromClause</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod79" xreflabel="subqueryFromClause"/>subqueryFromClause</para></entry>
<entry align="left" valign="top"><para>::=
-( <TABLE> )? <LPAREN> ( <link linkend="prod10">queryExpression</link> | <link linkend="prod11">storedProcedure</link> ) <RPAREN> ( <AS> )? <link linkend="prod2">id</link></para></entry></row>
+( <TABLE> )? <LPAREN> ( <link linkend="prod12">queryExpression</link> | <link linkend="prod14">storedProcedure</link> ) <RPAREN> ( <AS> )? <link linkend="prod2">id</link></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod75" xreflabel="unaryFromClause"/>unaryFromClause</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod78" xreflabel="unaryFromClause"/>unaryFromClause</para></entry>
<entry align="left" valign="top"><para>::=
( <ID> ( ( <AS> )? <link linkend="prod2">id</link> )? )</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod46" xreflabel="where"/>where</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod48" xreflabel="where"/>where</para></entry>
<entry align="left" valign="top"><para>::=
-<WHERE> <link linkend="prod32">criteria</link></para></entry></row>
+<WHERE> <link linkend="prod34">criteria</link></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod32" xreflabel="criteria"/>criteria</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod34" xreflabel="criteria"/>criteria</para></entry>
<entry align="left" valign="top"><para>::=
-<link linkend="prod83">compoundCritOr</link></para></entry></row>
+<link linkend="prod86">compoundCritOr</link></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod83" xreflabel="compoundCritOr"/>compoundCritOr</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod86" xreflabel="compoundCritOr"/>compoundCritOr</para></entry>
<entry align="left" valign="top"><para>::=
-<link linkend="prod84">compoundCritAnd</link> ( <OR> <link linkend="prod84">compoundCritAnd</link> )*</para></entry></row>
+<link linkend="prod87">compoundCritAnd</link> ( <OR> <link linkend="prod87">compoundCritAnd</link> )*</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod84" xreflabel="compoundCritAnd"/>compoundCritAnd</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod87" xreflabel="compoundCritAnd"/>compoundCritAnd</para></entry>
<entry align="left" valign="top"><para>::=
-<link linkend="prod85">notCrit</link> ( <AND> <link linkend="prod85">notCrit</link> )*</para></entry></row>
+<link linkend="prod88">notCrit</link> ( <AND> <link linkend="prod88">notCrit</link> )*</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod85" xreflabel="notCrit"/>notCrit</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod88" xreflabel="notCrit"/>notCrit</para></entry>
<entry align="left" valign="top"><para>::=
-( <NOT> )? <link linkend="prod86">booleanPrimary</link></para></entry></row>
+( <NOT> )? <link linkend="prod89">booleanPrimary</link></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod86" xreflabel="booleanPrimary"/>booleanPrimary</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod89" xreflabel="booleanPrimary"/>booleanPrimary</para></entry>
<entry align="left" valign="top"><para>::=
-( <link linkend="prod38">translateCriteria</link> | ( <link linkend="prod87">commonValueExpression</link> ( ( <link linkend="prod88">betweenCrit</link> | <link linkend="prod89">matchCrit</link> | <link linkend="prod90">setCrit</link> | <link linkend="prod91">isNullCrit</link> | <link linkend="prod92">subqueryCompareCriteria</link> | <link linkend="prod93">compareCrit</link> ) )? ) | <link linkend="prod94">existsCriteria</link> | <link linkend="prod34">hasCriteria</link> )</para></entry></row>
+( <link linkend="prod40">translateCriteria</link> | ( <link linkend="prod90">commonValueExpression</link> ( ( <link linkend="prod91">betweenCrit</link> | <link linkend="prod92">matchCrit</link> | <link linkend="prod93">setCrit</link> | <link linkend="prod94">isNullCrit</link> | <link linkend="prod95">subqueryCompareCriteria</link> | <link linkend="prod96">compareCrit</link> ) )? ) | <link linkend="prod97">existsCriteria</link> | <link linkend="prod36">hasCriteria</link> )</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod95" xreflabel="operator"/>operator</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod98" xreflabel="operator"/>operator</para></entry>
<entry align="left" valign="top"><para>::=
( <EQ> | <NE> | <NE2> | <LT> | <LE> | <GT> | <GE> )</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod93" xreflabel="compareCrit"/>compareCrit</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod96" xreflabel="compareCrit"/>compareCrit</para></entry>
<entry align="left" valign="top"><para>::=
-<link linkend="prod95">operator</link> <link linkend="prod87">commonValueExpression</link></para></entry></row>
+<link linkend="prod98">operator</link> <link linkend="prod90">commonValueExpression</link></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod96" xreflabel="subquery"/>subquery</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod99" xreflabel="subquery"/>subquery</para></entry>
<entry align="left" valign="top"><para>::=
-<LPAREN> ( <link linkend="prod10">queryExpression</link> | ( <link linkend="prod11">storedProcedure</link> ) ) <RPAREN></para></entry></row>
+<link linkend="prod100">subqueryAndHint</link></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod92" xreflabel="subqueryCompareCriteria"/>subqueryCompareCriteria</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod100" xreflabel="subqueryAndHint"/>subqueryAndHint</para></entry>
<entry align="left" valign="top"><para>::=
-<link linkend="prod95">operator</link> ( <ANY> | <SOME> | <ALL> ) <link linkend="prod96">subquery</link></para></entry></row>
+<LPAREN> ( <link linkend="prod12">queryExpression</link> | ( <link linkend="prod14">storedProcedure</link> ) ) <RPAREN></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod89" xreflabel="matchCrit"/>matchCrit</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod95" xreflabel="subqueryCompareCriteria"/>subqueryCompareCriteria</para></entry>
<entry align="left" valign="top"><para>::=
-( <NOT> )? <LIKE> <link linkend="prod87">commonValueExpression</link> ( <ESCAPE> <link linkend="prod65">charVal</link> | ( <LBRACE> <ESCAPE> <link linkend="prod65">charVal</link> <RBRACE> ) )?</para></entry></row>
+<link linkend="prod98">operator</link> ( <ANY> | <SOME> | <ALL> ) <link linkend="prod99">subquery</link></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod65" xreflabel="charVal"/>charVal</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod92" xreflabel="matchCrit"/>matchCrit</para></entry>
<entry align="left" valign="top"><para>::=
+( <NOT> )? <LIKE> <link linkend="prod90">commonValueExpression</link> ( <ESCAPE> <link linkend="prod68">charVal</link> | ( <LBRACE> <ESCAPE> <link linkend="prod68">charVal</link> <RBRACE> ) )?</para></entry></row>
+<row>
+<entry align="right" valign="top"><para><anchor id="prod68" xreflabel="charVal"/>charVal</para></entry>
+<entry align="left" valign="top"><para>::=
<link linkend="prod1">stringVal</link></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod88" xreflabel="betweenCrit"/>betweenCrit</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod91" xreflabel="betweenCrit"/>betweenCrit</para></entry>
<entry align="left" valign="top"><para>::=
-( <NOT> )? <BETWEEN> <link linkend="prod87">commonValueExpression</link> <AND> <link linkend="prod87">commonValueExpression</link></para></entry></row>
+( <NOT> )? <BETWEEN> <link linkend="prod90">commonValueExpression</link> <AND> <link linkend="prod90">commonValueExpression</link></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod91" xreflabel="isNullCrit"/>isNullCrit</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod94" xreflabel="isNullCrit"/>isNullCrit</para></entry>
<entry align="left" valign="top"><para>::=
<IS> ( <NOT> )? <NULL></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod90" xreflabel="setCrit"/>setCrit</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod93" xreflabel="setCrit"/>setCrit</para></entry>
<entry align="left" valign="top"><para>::=
-( <NOT> )? <IN> ( ( <link linkend="prod96">subquery</link> ) | ( <LPAREN> <link linkend="prod87">commonValueExpression</link> ( <COMMA> <link linkend="prod87">commonValueExpression</link> )* <RPAREN> ) )</para></entry></row>
+( <NOT> )? <IN> ( ( <link linkend="prod100">subqueryAndHint</link> ) | ( <LPAREN> <link linkend="prod90">commonValueExpression</link> ( <COMMA> <link linkend="prod90">commonValueExpression</link> )* <RPAREN> ) )</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod94" xreflabel="existsCriteria"/>existsCriteria</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod97" xreflabel="existsCriteria"/>existsCriteria</para></entry>
<entry align="left" valign="top"><para>::=
-<EXISTS> <link linkend="prod96">subquery</link></para></entry></row>
+<EXISTS> <link linkend="prod100">subqueryAndHint</link></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod57" xreflabel="groupBy"/>groupBy</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod59" xreflabel="groupBy"/>groupBy</para></entry>
<entry align="left" valign="top"><para>::=
-<GROUP> <BY> ( <link linkend="prod97">groupByItem</link> ( <COMMA> <link linkend="prod97">groupByItem</link> )* )</para></entry></row>
+<GROUP> <BY> ( <link linkend="prod101">groupByItem</link> ( <COMMA> <link linkend="prod101">groupByItem</link> )* )</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod97" xreflabel="groupByItem"/>groupByItem</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod101" xreflabel="groupByItem"/>groupByItem</para></entry>
<entry align="left" valign="top"><para>::=
-<link linkend="prod21">expression</link></para></entry></row>
+<link linkend="prod23">expression</link></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod58" xreflabel="having"/>having</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod60" xreflabel="having"/>having</para></entry>
<entry align="left" valign="top"><para>::=
-<HAVING> <link linkend="prod32">criteria</link></para></entry></row>
+<HAVING> <link linkend="prod34">criteria</link></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod50" xreflabel="orderby"/>orderby</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod52" xreflabel="orderby"/>orderby</para></entry>
<entry align="left" valign="top"><para>::=
-<ORDER> <BY> <link linkend="prod98">sortSpecification</link> ( <COMMA> <link linkend="prod98">sortSpecification</link> )*</para></entry></row>
+<ORDER> <BY> <link linkend="prod102">sortSpecification</link> ( <COMMA> <link linkend="prod102">sortSpecification</link> )*</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod98" xreflabel="sortSpecification"/>sortSpecification</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod102" xreflabel="sortSpecification"/>sortSpecification</para></entry>
<entry align="left" valign="top"><para>::=
-<link linkend="prod99">sortKey</link> ( <ASC> | <DESC> )? ( <link linkend="prod18">nonReserved</link> <link linkend="prod18">nonReserved</link> )?</para></entry></row>
+<link linkend="prod103">sortKey</link> ( <ASC> | <DESC> )? ( <link linkend="prod11">nonReserved</link> <link linkend="prod11">nonReserved</link> )?</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod99" xreflabel="sortKey"/>sortKey</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod103" xreflabel="sortKey"/>sortKey</para></entry>
<entry align="left" valign="top"><para>::=
-<link linkend="prod21">expression</link></para></entry></row>
+<link linkend="prod23">expression</link></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod51" xreflabel="limit"/>limit</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod53" xreflabel="limit"/>limit</para></entry>
<entry align="left" valign="top"><para>::=
<LIMIT> ( <INTEGERVAL> | <QMARK> ) ( <COMMA> ( <INTEGERVAL> | <QMARK> ) )?</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod42" xreflabel="option"/>option</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod44" xreflabel="option"/>option</para></entry>
<entry align="left" valign="top"><para>::=
<OPTION> ( <MAKEDEP> <link linkend="prod2">id</link> ( <COMMA> <link linkend="prod2">id</link> )* | <MAKENOTDEP> <link linkend="prod2">id</link> ( <COMMA> <link linkend="prod2">id</link> )* | <NOCACHE> ( <link linkend="prod2">id</link> ( <COMMA> <link linkend="prod2">id</link> )* )? )*</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod21" xreflabel="expression"/>expression</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod23" xreflabel="expression"/>expression</para></entry>
<entry align="left" valign="top"><para>::=
-<link linkend="prod32">criteria</link></para></entry></row>
+<link linkend="prod34">criteria</link></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod87" xreflabel="commonValueExpression"/>commonValueExpression</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod90" xreflabel="commonValueExpression"/>commonValueExpression</para></entry>
<entry align="left" valign="top"><para>::=
-( <link linkend="prod100">plusExpression</link> ( <CONCAT_OP> <link linkend="prod100">plusExpression</link> )* )</para></entry></row>
+( <link linkend="prod104">plusExpression</link> ( <CONCAT_OP> <link linkend="prod104">plusExpression</link> )* )</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod100" xreflabel="plusExpression"/>plusExpression</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod104" xreflabel="plusExpression"/>plusExpression</para></entry>
<entry align="left" valign="top"><para>::=
-( <link linkend="prod101">timesExpression</link> ( <link linkend="prod102">plusOperator</link> <link linkend="prod101">timesExpression</link> )* )</para></entry></row>
+( <link linkend="prod105">timesExpression</link> ( <link linkend="prod106">plusOperator</link> <link linkend="prod105">timesExpression</link> )* )</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod102" xreflabel="plusOperator"/>plusOperator</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod106" xreflabel="plusOperator"/>plusOperator</para></entry>
<entry align="left" valign="top"><para>::=
( <PLUS> | <MINUS> )</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod101" xreflabel="timesExpression"/>timesExpression</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod105" xreflabel="timesExpression"/>timesExpression</para></entry>
<entry align="left" valign="top"><para>::=
-( <link linkend="prod103">valueExpressionPrimary</link> ( <link linkend="prod104">timesOperator</link> <link linkend="prod103">valueExpressionPrimary</link> )* )</para></entry></row>
+( <link linkend="prod107">valueExpressionPrimary</link> ( <link linkend="prod108">timesOperator</link> <link linkend="prod107">valueExpressionPrimary</link> )* )</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod104" xreflabel="timesOperator"/>timesOperator</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod108" xreflabel="timesOperator"/>timesOperator</para></entry>
<entry align="left" valign="top"><para>::=
( <STAR> | <SLASH> )</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod103" xreflabel="valueExpressionPrimary"/>valueExpressionPrimary</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod107" xreflabel="valueExpressionPrimary"/>valueExpressionPrimary</para></entry>
<entry align="left" valign="top"><para>::=
-( <QMARK> | <link linkend="prod105">literal</link> | ( <LBRACE> <link linkend="prod18">nonReserved</link> <link linkend="prod106">function</link> <RBRACE> ) | ( <link linkend="prod64">textAgg</link> ) | ( <link linkend="prod66">aggregateSymbol</link> ) | ( <link linkend="prod66">aggregateSymbol</link> ) | ( <link linkend="prod66">aggregateSymbol</link> ) | ( <link linkend="prod63">xmlAgg</link> ) | ( <link linkend="prod106">function</link> ) | ( <ID> ) | <link linkend="prod96">subquery</link> | ( <LPAREN> <link linkend="prod21">expression</link> <RPAREN> ) | <link linkend="prod107">searchedCaseExpression</link> | <link linkend="prod108">caseExpression</link> )</para></entry></row>
+( <QMARK> | <POS_REF> | <link linkend="prod109">literal</link> | ( <LBRACE> <link linkend="prod11">nonReserved</link> <link linkend="prod110">function</link> <RBRACE> ) | ( <link linkend="prod67">textAgg</link> ) | ( <link linkend="prod69">aggregateSymbol</link> ) | ( <link linkend="prod69">aggregateSymbol</link> ) | ( <link linkend="prod69">aggregateSymbol</link> ) | ( <link linkend="prod65">xmlAgg</link> ) | ( <link linkend="prod66">arrayAgg</link> ) | ( <link linkend="prod110">function</link> ) | ( <ID> ( <LSBRACE> <link linkend="prod82">intVal</link> <RSBRACE> )? ) | <link linkend="prod99">subquery</link> | ( <LPAREN> <link linkend="prod23">expression</link> <RPAREN> ( <LSBRACE> <link linkend="prod82">intVal</link> <RSBRACE> )? ) | <link linkend="prod111">searchedCaseExpression</link> | <link linkend="prod112">caseExpression</link> )</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod108" xreflabel="caseExpression"/>caseExpression</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod112" xreflabel="caseExpression"/>caseExpression</para></entry>
<entry align="left" valign="top"><para>::=
-<CASE> <link linkend="prod21">expression</link> ( <WHEN> <link linkend="prod21">expression</link> <THEN> <link linkend="prod21">expression</link> )+ ( <ELSE> <link linkend="prod21">expression</link> )? <END></para></entry></row>
+<CASE> <link linkend="prod23">expression</link> ( <WHEN> <link linkend="prod23">expression</link> <THEN> <link linkend="prod23">expression</link> )+ ( <ELSE> <link linkend="prod23">expression</link> )? <END></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod107" xreflabel="searchedCaseExpression"/>searchedCaseExpression</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod111" xreflabel="searchedCaseExpression"/>searchedCaseExpression</para></entry>
<entry align="left" valign="top"><para>::=
-<CASE> ( <WHEN> <link linkend="prod32">criteria</link> <THEN> <link linkend="prod21">expression</link> )+ ( <ELSE> <link linkend="prod21">expression</link> )? <END></para></entry></row>
+<CASE> ( <WHEN> <link linkend="prod34">criteria</link> <THEN> <link linkend="prod23">expression</link> )+ ( <ELSE> <link linkend="prod23">expression</link> )? <END></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod106" xreflabel="function"/>function</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod110" xreflabel="function"/>function</para></entry>
<entry align="left" valign="top"><para>::=
-( ( <CONVERT> <LPAREN> <link linkend="prod21">expression</link> <COMMA> <link linkend="prod35">dataType</link> <RPAREN> ) | ( <CAST> <LPAREN> <link linkend="prod21">expression</link> <AS> <link linkend="prod35">dataType</link> <RPAREN> ) | ( <link linkend="prod18">nonReserved</link> <LPAREN> <link linkend="prod21">expression</link> <COMMA> <link linkend="prod109">stringConstant</link> <RPAREN> ) | ( <link linkend="prod18">nonReserved</link> <LPAREN> <link linkend="prod110">intervalType</link> <COMMA> <link linkend="prod21">expression</link> <COMMA> <link linkend="prod21">expression</link> <RPAREN> ) | <link linkend="prod111">queryString</link> | ( ( <LEFT> | <RIGHT> | <CHAR> | <USER> | <YEAR> | <MONTH> | <HOUR> | <MINUTE> | <SECOND> | <XMLCONCAT> | <XMLCOMMENT> ) <LPAREN> ( <link linkend="prod21">expression</link> !
( <COMMA> <link linkend="prod21">expression</link> )* )? <RPAREN> ) | ( ( <INSERT> ) <LPAREN> ( <link linkend="prod21">expression</link> ( <COMMA> <link linkend="prod21">expression</link> )* )? <RPAREN> ) | ( ( <TRANSLATE> ) <LPAREN> ( <link linkend="prod21">expression</link> ( <COMMA> <link linkend="prod21">expression</link> )* )? <RPAREN> ) | <link linkend="prod112">xmlParse</link> | <link linkend="prod113">xmlElement</link> | ( <XMLPI> <LPAREN> ( <ID> <link linkend="prod114">idExpression</link> | <link linkend="prod114">idExpression</link> ) ( <COMMA> <link linkend="prod21">expression</link> )? <RPAREN> ) | <link linkend="prod115">xmlForest</link> | <link linkend="prod77">xmlSerialize</link> | <link linkend="prod80">xmlQuery</link> | ( <link linkend="prod2">id</link> <LPAREN> ( <link linkend="prod21">expression</link> ( <COMMA> <link linkend="prod21">expression</link> )*!
)? <RPAREN> ) )</para></entry></row>
+( ( <CONVERT> <LPAREN> <link linkend="prod23">expression</link> <COMMA> <link linkend="prod37">dataType</link> <RPAREN> ) | ( <CAST> <LPAREN> <link linkend="prod23">expression</link> <AS> <link linkend="prod37">dataType</link> <RPAREN> ) | ( <link linkend="prod11">nonReserved</link> <LPAREN> <link linkend="prod23">expression</link> <COMMA> <link linkend="prod113">stringConstant</link> <RPAREN> ) | ( <link linkend="prod11">nonReserved</link> <LPAREN> <link linkend="prod114">intervalType</link> <COMMA> <link linkend="prod23">expression</link> <COMMA> <link linkend="prod23">expression</link> <RPAREN> ) | <link linkend="prod115">queryString</link> | ( ( <LEFT> | <RIGHT> | <CHAR> | <USER> | <YEAR> | <MONTH> | <HOUR> | <MINUTE> | <SECOND> | <XMLCONCAT> | <XMLCOMMENT> ) <LPAREN> ( <link linkend="prod23">expression</link> !
( <COMMA> <link linkend="prod23">expression</link> )* )? <RPAREN> ) | ( ( <INSERT> ) <LPAREN> ( <link linkend="prod23">expression</link> ( <COMMA> <link linkend="prod23">expression</link> )* )? <RPAREN> ) | ( ( <TRANSLATE> ) <LPAREN> ( <link linkend="prod23">expression</link> ( <COMMA> <link linkend="prod23">expression</link> )* )? <RPAREN> ) | <link linkend="prod116">xmlParse</link> | <link linkend="prod117">xmlElement</link> | ( <XMLPI> <LPAREN> ( <ID> <link linkend="prod118">idExpression</link> | <link linkend="prod118">idExpression</link> ) ( <COMMA> <link linkend="prod23">expression</link> )? <RPAREN> ) | <link linkend="prod119">xmlForest</link> | <link linkend="prod80">xmlSerialize</link> | <link linkend="prod83">xmlQuery</link> | ( <link linkend="prod2">id</link> <LPAREN> ( <link linkend="prod23">expression</link> ( <COMMA> <link linkend="prod23">expression</link> )*!
)? <RPAREN> ) )</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod109" xreflabel="stringConstant"/>stringConstant</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod113" xreflabel="stringConstant"/>stringConstant</para></entry>
<entry align="left" valign="top"><para>::=
<link linkend="prod1">stringVal</link></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod112" xreflabel="xmlParse"/>xmlParse</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod116" xreflabel="xmlParse"/>xmlParse</para></entry>
<entry align="left" valign="top"><para>::=
-<XMLPARSE> <LPAREN> <link linkend="prod18">nonReserved</link> <link linkend="prod21">expression</link> ( <link linkend="prod18">nonReserved</link> )? <RPAREN></para></entry></row>
+<XMLPARSE> <LPAREN> <link linkend="prod11">nonReserved</link> <link linkend="prod23">expression</link> ( <link linkend="prod11">nonReserved</link> )? <RPAREN></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod111" xreflabel="queryString"/>queryString</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod115" xreflabel="queryString"/>queryString</para></entry>
<entry align="left" valign="top"><para>::=
-<link linkend="prod18">nonReserved</link> <LPAREN> <link linkend="prod21">expression</link> ( <COMMA> <link linkend="prod62">derivedColumn</link> )* <RPAREN></para></entry></row>
+<link linkend="prod11">nonReserved</link> <LPAREN> <link linkend="prod23">expression</link> ( <COMMA> <link linkend="prod64">derivedColumn</link> )* <RPAREN></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod113" xreflabel="xmlElement"/>xmlElement</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod117" xreflabel="xmlElement"/>xmlElement</para></entry>
<entry align="left" valign="top"><para>::=
-<XMLELEMENT> <LPAREN> ( <ID> <link linkend="prod2">id</link> | <link linkend="prod2">id</link> ) ( <COMMA> <link linkend="prod81">xmlNamespaces</link> )? ( <COMMA> <link linkend="prod116">xmlAttributes</link> )? ( <COMMA> <link linkend="prod21">expression</link> )* <RPAREN></para></entry></row>
+<XMLELEMENT> <LPAREN> ( <ID> <link linkend="prod2">id</link> | <link linkend="prod2">id</link> ) ( <COMMA> <link linkend="prod84">xmlNamespaces</link> )? ( <COMMA> <link linkend="prod120">xmlAttributes</link> )? ( <COMMA> <link linkend="prod23">expression</link> )* <RPAREN></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod116" xreflabel="xmlAttributes"/>xmlAttributes</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod120" xreflabel="xmlAttributes"/>xmlAttributes</para></entry>
<entry align="left" valign="top"><para>::=
-<XMLATTRIBUTES> <LPAREN> <link linkend="prod62">derivedColumn</link> ( <COMMA> <link linkend="prod62">derivedColumn</link> )* <RPAREN></para></entry></row>
+<XMLATTRIBUTES> <LPAREN> <link linkend="prod64">derivedColumn</link> ( <COMMA> <link linkend="prod64">derivedColumn</link> )* <RPAREN></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod115" xreflabel="xmlForest"/>xmlForest</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod119" xreflabel="xmlForest"/>xmlForest</para></entry>
<entry align="left" valign="top"><para>::=
-<XMLFOREST> <LPAREN> ( <link linkend="prod81">xmlNamespaces</link> <COMMA> )? <link linkend="prod62">derivedColumn</link> ( <COMMA> <link linkend="prod62">derivedColumn</link> )* <RPAREN></para></entry></row>
+<XMLFOREST> <LPAREN> ( <link linkend="prod84">xmlNamespaces</link> <COMMA> )? <link linkend="prod64">derivedColumn</link> ( <COMMA> <link linkend="prod64">derivedColumn</link> )* <RPAREN></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod81" xreflabel="xmlNamespaces"/>xmlNamespaces</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod84" xreflabel="xmlNamespaces"/>xmlNamespaces</para></entry>
<entry align="left" valign="top"><para>::=
-<XMLNAMESPACES> <LPAREN> <link linkend="prod117">namespaceItem</link> ( <COMMA> <link linkend="prod117">namespaceItem</link> )* <RPAREN></para></entry></row>
+<XMLNAMESPACES> <LPAREN> <link linkend="prod121">namespaceItem</link> ( <COMMA> <link linkend="prod121">namespaceItem</link> )* <RPAREN></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod117" xreflabel="namespaceItem"/>namespaceItem</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod121" xreflabel="namespaceItem"/>namespaceItem</para></entry>
<entry align="left" valign="top"><para>::=
( <link linkend="prod1">stringVal</link> <AS> <link linkend="prod2">id</link> )</para></entry></row>
<row>
@@ -850,23 +870,23 @@
<entry align="left" valign="top"><para>::=
( <DEFAULT_KEYWORD> <link linkend="prod1">stringVal</link> )</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod114" xreflabel="idExpression"/>idExpression</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod118" xreflabel="idExpression"/>idExpression</para></entry>
<entry align="left" valign="top"><para>::=
<link linkend="prod2">id</link></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod19" xreflabel="dataTypeString"/>dataTypeString</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod21" xreflabel="dataTypeString"/>dataTypeString</para></entry>
<entry align="left" valign="top"><para>::=
( <STRING> | <VARCHAR> | <BOOLEAN> | <BYTE> | <TINYINT> | <SHORT> | <SMALLINT> | <CHAR> | <INTEGER> | <LONG> | <BIGINT> | <BIGINTEGER> | <FLOAT> | <REAL> | <DOUBLE> | <BIGDECIMAL> | <DECIMAL> | <DATE> | <TIME> | <TIMESTAMP> | <OBJECT> | <BLOB> | <CLOB> | <XML> )</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod35" xreflabel="dataType"/>dataType</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod37" xreflabel="dataType"/>dataType</para></entry>
<entry align="left" valign="top"><para>::=
-<link linkend="prod19">dataTypeString</link></para></entry></row>
+<link linkend="prod21">dataTypeString</link></para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod110" xreflabel="intervalType"/>intervalType</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod114" xreflabel="intervalType"/>intervalType</para></entry>
<entry align="left" valign="top"><para>::=
-( <link linkend="prod18">nonReserved</link> )</para></entry></row>
+( <link linkend="prod11">nonReserved</link> )</para></entry></row>
<row>
-<entry align="right" valign="top"><para><anchor id="prod105" xreflabel="literal"/>literal</para></entry>
+<entry align="right" valign="top"><para><anchor id="prod109" xreflabel="literal"/>literal</para></entry>
<entry align="left" valign="top"><para>::=
( <link linkend="prod1">stringVal</link> | <INTEGERVAL> | <FLOATVAL> | <FALSE> | <TRUE> | <UNKNOWN> | <NULL> | ( ( <BOOLEANTYPE> | <TIMESTAMPTYPE> | <DATETYPE> | <TIMETYPE> ) <link linkend="prod1">stringVal</link> <RBRACE> ) )</para></entry></row>
</tbody>
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 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/documentation/reference/src/main/docbook/en-US/content/system_schema.xml 2011-04-28 02:55:13 UTC (rev 3126)
@@ -781,7 +781,7 @@
<para>string</para>
</entry>
<entry>
- <para>Minimum numeric value</para>
+ <para>Minimum value</para>
</entry>
</row>
<row>
@@ -792,11 +792,33 @@
<para>string</para>
</entry>
<entry>
- <para>Maximum numeric value</para>
+ <para>Maximum value</para>
</entry>
</row>
<row>
<entry>
+ <para>DistinctCount</para>
+ </entry>
+ <entry>
+ <para>integer</para>
+ </entry>
+ <entry>
+ <para>Distinct value count, -1 can indicate unknown</para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>NullCount</para>
+ </entry>
+ <entry>
+ <para>integer</para>
+ </entry>
+ <entry>
+ <para>Null value count, -1 can indicate unknown</para>
+ </entry>
+ </row>
+ <row>
+ <entry>
<para>SearchType</para>
</entry>
<entry>
@@ -1771,7 +1793,7 @@
<para>Parameters</para>
</entry>
<entry>
- <para>ResultSet</para>
+ <para>Description</para>
</entry>
</row>
</thead>
@@ -1781,10 +1803,10 @@
<para>SYS.getXMLSchemas</para>
</entry>
<entry>
- <para>(string document)</para>
+ <para>(in string document)</para>
</entry>
<entry>
- <para>A single column containing the schemas as clobs.</para>
+ <para>Returns a resultset with a single column, schema, containing the schemas as clobs.</para>
</entry>
</row>
<row>
@@ -1792,10 +1814,10 @@
<para>SYSADMIN.refreshMatView</para>
</entry>
<entry>
- <para>(string ViewName, boolean Invalidate)</para>
+ <para>(in string ViewName, in boolean Invalidate)</para>
</entry>
<entry>
- <para>An return return value, RowsUpdated. -1 indicates a load is in progress, otherwise the cardinality of the table is returned. See the Caching Guide for more.</para>
+ <para>Returns integer RowsUpdated. -1 indicates a load is in progress, otherwise the cardinality of the table is returned. See the Caching Guide for more.</para>
</entry>
</row>
<row>
@@ -1803,12 +1825,34 @@
<para>SYSADMIN.refreshMatViewRow</para>
</entry>
<entry>
- <para>(string ViewName, object Key)</para>
+ <para>(in string ViewName, in object Key)</para>
</entry>
<entry>
- <para>An return return value, RowsUpdated. -1 indicates the materialized table is currently invalid. 0 indicates that the specified row did not exist in the live data query or in the materialized table. See the Caching Guide for more.</para>
+ <para>Returns integer RowsUpdated. -1 indicates the materialized table is currently invalid. 0 indicates that the specified row did not exist in the live data query or in the materialized table. See the Caching Guide for more.</para>
</entry>
</row>
+ <row>
+ <entry>
+ <para>SYSADMIN.setTableStats</para>
+ </entry>
+ <entry>
+ <para>(in string TableName, in integer Cardinality)</para>
+ </entry>
+ <entry>
+ <para>Set statistics for the given table. A <code>MetadataRepository</code> must be configured to make the update persistent.</para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <para>SYSADMIN.setColumnStats</para>
+ </entry>
+ <entry>
+ <para>(in string TableName, in string ColumnName, in integer DistinctCount, in integer NullCount, in string Max, in string Min)</para>
+ </entry>
+ <entry>
+ <para>Set statistics for the given column. A <code>MetadataRepository</code> must be configured to make the update persistent.</para>
+ </entry>
+ </row>
</tbody>
</tgroup>
</informaltable>
Modified: trunk/engine/src/main/java/org/teiid/dqp/internal/process/AccessInfo.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/dqp/internal/process/AccessInfo.java 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/engine/src/main/java/org/teiid/dqp/internal/process/AccessInfo.java 2011-04-28 02:55:13 UTC (rev 3126)
@@ -34,6 +34,8 @@
import org.teiid.api.exception.query.QueryResolverException;
import org.teiid.api.exception.query.QueryValidatorException;
import org.teiid.core.TeiidComponentException;
+import org.teiid.metadata.AbstractMetadataRecord;
+import org.teiid.metadata.Procedure;
import org.teiid.metadata.Table;
import org.teiid.query.metadata.TempMetadataID;
import org.teiid.query.metadata.TransformationMetadata;
@@ -51,16 +53,19 @@
private static final long serialVersionUID = -2608267960584191359L;
private transient Set<Table> viewsAccessed;
+ private transient Set<Procedure> proceduresAccessed;
private transient Set<Object> tablesAccessed;
private List<List<String>> externalTableNames;
private List<List<String>> externalViewNames;
+ private List<List<String>> externalProcedureNames;
private transient long creationTime = System.currentTimeMillis();
private void writeObject(java.io.ObjectOutputStream out) throws IOException {
externalTableNames = initExternalList(externalTableNames, tablesAccessed);
externalViewNames = initExternalList(externalViewNames, viewsAccessed);
+ externalProcedureNames = initExternalList(externalProcedureNames, proceduresAccessed);
out.defaultWriteObject();
}
@@ -73,8 +78,8 @@
if (externalNames == null) {
externalNames = new ArrayList<List<String>>(accessed.size());
for (Object object : accessed) {
- if (object instanceof Table) {
- Table t = (Table)object;
+ if (object instanceof AbstractMetadataRecord) {
+ AbstractMetadataRecord t = (AbstractMetadataRecord)object;
externalNames.add(Arrays.asList(t.getParent().getName(), t.getName()));
} else if (object instanceof TempMetadataID) {
TempMetadataID t = (TempMetadataID)object;
@@ -84,6 +89,10 @@
}
return externalNames;
}
+
+ public Set<Procedure> getProceduresAccessed() {
+ return proceduresAccessed;
+ }
public Set<Table> getViewsAccessed() {
return viewsAccessed;
@@ -113,6 +122,11 @@
} else {
this.viewsAccessed = Collections.emptySet();
}
+ if (!context.getProceduresAccessed().isEmpty()) {
+ this.proceduresAccessed = new HashSet<Procedure>(context.getProceduresAccessed());
+ } else {
+ this.proceduresAccessed = Collections.emptySet();
+ }
}
void restore() throws QueryResolverException, QueryValidatorException, TeiidComponentException {
@@ -150,6 +164,14 @@
this.tablesAccessed = Collections.emptySet();
}
this.externalTableNames = null;
+ if (!externalProcedureNames.isEmpty()) {
+ for (List<String> key : this.externalProcedureNames) {
+ this.proceduresAccessed.add(tm.getMetadataStore().getSchema(key.get(0).toUpperCase()).getProcedures().get(key.get(1).toUpperCase()));
+ }
+ } else {
+ this.proceduresAccessed = Collections.emptySet();
+ }
+ this.externalProcedureNames = null;
}
boolean validate(boolean data, long modTime) {
@@ -162,6 +184,11 @@
return false;
}
}
+ for (Procedure p : getProceduresAccessed()) {
+ if (p.getLastModified() - modTime > this.creationTime) {
+ return false;
+ }
+ }
}
for (Object o : getTablesAccessed()) {
if (o instanceof Table) {
Modified: trunk/engine/src/main/java/org/teiid/dqp/internal/process/DQPConfiguration.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/dqp/internal/process/DQPConfiguration.java 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/engine/src/main/java/org/teiid/dqp/internal/process/DQPConfiguration.java 2011-04-28 02:55:13 UTC (rev 3126)
@@ -25,7 +25,7 @@
import org.teiid.cache.CacheConfiguration;
import org.teiid.client.RequestMessage;
import org.teiid.core.util.ApplicationInfo;
-import org.teiid.metadata.MetadataProvider;
+import org.teiid.metadata.MetadataRepository;
public class DQPConfiguration{
@@ -58,7 +58,6 @@
private boolean detectingChangeEvents = true;
private transient AuthorizationValidator authorizationValidator;
- private transient MetadataProvider metadataProvider;
private boolean allowFunctionCallsByDefault;
@ManagementProperty(description="Max active plans (default 20). Increase this value, and max threads, on highly concurrent systems - but ensure that the underlying pools can handle the increased load without timeouts.")
@@ -229,14 +228,10 @@
this.authorizationValidator = authorizationValidator;
}
- public MetadataProvider getMetadataProvider() {
- return metadataProvider;
+ public MetadataRepository getMetadataRepository() {
+ return null;
}
- public void setMetadataProvider(MetadataProvider metadataProvider) {
- this.metadataProvider = metadataProvider;
- }
-
public CacheConfiguration getPreparedPlanCacheConfig() {
return preparedPlanCacheConfig;
}
Modified: trunk/engine/src/main/java/org/teiid/dqp/internal/process/DQPCore.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/dqp/internal/process/DQPCore.java 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/engine/src/main/java/org/teiid/dqp/internal/process/DQPCore.java 2011-04-28 02:55:13 UTC (rev 3126)
@@ -67,11 +67,13 @@
import org.teiid.dqp.service.TransactionContext;
import org.teiid.dqp.service.TransactionService;
import org.teiid.dqp.service.TransactionContext.Scope;
+import org.teiid.events.EventDistributor;
import org.teiid.logging.CommandLogMessage;
import org.teiid.logging.LogConstants;
import org.teiid.logging.LogManager;
import org.teiid.logging.MessageLevel;
import org.teiid.logging.CommandLogMessage.Event;
+import org.teiid.metadata.MetadataRepository;
import org.teiid.query.QueryPlugin;
import org.teiid.query.tempdata.TempTableDataManager;
import org.teiid.query.tempdata.TempTableStore;
@@ -175,6 +177,8 @@
private SessionAwareCache<CachedResults> rsCache;
private TransactionService transactionService;
private BufferService bufferService;
+ private EventDistributor eventDistributor;
+ private MetadataRepository metadataRepository;
private DQPConfiguration config = new DQPConfiguration();
@@ -324,7 +328,6 @@
request.setResultSetCacheEnabled(this.rsCache != null);
request.setAuthorizationValidator(this.authorizationValidator);
request.setUserRequestConcurrency(this.getUserRequestSourceConcurrency());
- request.setMetadataProvider(this.config.getMetadataProvider());
ResultsFuture<ResultsMessage> resultsFuture = new ResultsFuture<ResultsMessage>();
RequestWorkItem workItem = new RequestWorkItem(this, requestMsg, request, resultsFuture.getResultsReceiver(), requestID, workContext);
logMMCommand(workItem, Event.NEW, null);
@@ -715,7 +718,11 @@
matTables.setBufferManager(this.bufferManager);
}
- dataTierMgr = new TempTableDataManager(new DataTierManagerImpl(this,this.bufferService, this.config.isDetectingChangeEvents()), this.bufferManager, this.processWorkerPool, this.rsCache, this.matTables, this.cacheFactory);
+ DataTierManagerImpl processorDataManager = new DataTierManagerImpl(this,this.bufferService, this.config.isDetectingChangeEvents());
+ processorDataManager.setEventDistributor(eventDistributor);
+ processorDataManager.setMetadataRepository(metadataRepository);
+ dataTierMgr = new TempTableDataManager(processorDataManager, this.bufferManager, this.processWorkerPool, this.rsCache, this.matTables, this.cacheFactory);
+ dataTierMgr.setEventDistributor(eventDistributor);
}
public void setBufferService(BufferService service) {
@@ -726,6 +733,14 @@
this.transactionService = service;
}
+ public void setMetadataRepository(MetadataRepository metadataRepository) {
+ this.metadataRepository = metadataRepository;
+ }
+
+ public void setEventDistributor(EventDistributor eventDistributor) {
+ this.eventDistributor = eventDistributor;
+ }
+
@Override
public boolean cancelRequest(long requestID)
throws TeiidProcessingException, TeiidComponentException {
Modified: trunk/engine/src/main/java/org/teiid/dqp/internal/process/DataTierManagerImpl.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/dqp/internal/process/DataTierManagerImpl.java 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/engine/src/main/java/org/teiid/dqp/internal/process/DataTierManagerImpl.java 2011-04-28 02:55:13 UTC (rev 3126)
@@ -55,13 +55,16 @@
import org.teiid.events.EventDistributor;
import org.teiid.metadata.AbstractMetadataRecord;
import org.teiid.metadata.Column;
+import org.teiid.metadata.ColumnStats;
import org.teiid.metadata.Datatype;
import org.teiid.metadata.ForeignKey;
import org.teiid.metadata.KeyRecord;
+import org.teiid.metadata.MetadataRepository;
import org.teiid.metadata.Procedure;
import org.teiid.metadata.ProcedureParameter;
import org.teiid.metadata.Schema;
import org.teiid.metadata.Table;
+import org.teiid.metadata.TableStats;
import org.teiid.query.QueryPlugin;
import org.teiid.query.metadata.CompositeMetadataStore;
import org.teiid.query.metadata.TempMetadataID;
@@ -104,6 +107,11 @@
VDBRESOURCES
}
+ private enum SystemAdminProcs {
+ SETTABLESTATS,
+ SETCOLUMNSTATS
+ }
+
private enum SystemProcs {
GETXMLSCHEMAS
}
@@ -113,6 +121,7 @@
private BufferService bufferService;
private EventDistributor eventDistributor;
private boolean detectChangeEvents;
+ private MetadataRepository metadataRepository;
public DataTierManagerImpl(DQPCore requestMgr, BufferService bufferService, boolean detectChangeEvents) {
this.requestMgr = requestMgr;
@@ -132,6 +141,10 @@
return eventDistributor;
}
+ public void setMetadataRepository(MetadataRepository metadataRepository) {
+ this.metadataRepository = metadataRepository;
+ }
+
public TupleSource registerRequest(CommandContext context, Command command, String modelName, String connectorBindingId, int nodeID, int limit) throws TeiidComponentException, TeiidProcessingException {
RequestWorkItem workItem = requestMgr.getRequestWorkItem((RequestID)context.getProcessorID());
@@ -170,7 +183,7 @@
Query query = (Query)command;
UnaryFromClause ufc = (UnaryFromClause)query.getFrom().getClauses().get(0);
GroupSymbol group = ufc.getGroup();
- if (StringUtil.startsWithIgnoreCase(group.getNonCorrelationName(), (CoreConstants.SYSTEM_ADMIN_MODEL))) {
+ if (StringUtil.startsWithIgnoreCase(group.getNonCorrelationName(), CoreConstants.SYSTEM_ADMIN_MODEL)) {
final SystemAdminTables sysTable = SystemAdminTables.valueOf(group.getNonCorrelationName().substring(CoreConstants.SYSTEM_ADMIN_MODEL.length() + 1).toUpperCase());
switch (sysTable) {
case MATVIEWS:
@@ -296,7 +309,8 @@
rows.add(Arrays.asList(vdbName, schema.getName(), table.getName(), column.getName(), column.getPosition(), column.getNameInSource(),
dt!=null?dt.getRuntimeTypeName():null, column.getScale(), column.getLength(), column.isFixedLength(), column.isSelectable(), column.isUpdatable(),
column.isCaseSensitive(), column.isSigned(), column.isCurrency(), column.isAutoIncremented(), column.getNullType().toString(), column.getMinimumValue(),
- column.getMaximumValue(), column.getSearchType().toString(), column.getFormat(), column.getDefaultValue(), dt!=null?dt.getJavaClassName():null, column.getPrecision(),
+ column.getMaximumValue(), column.getDistinctValues(), column.getNullValues(), column.getSearchType().toString(), column.getFormat(),
+ column.getDefaultValue(), dt!=null?dt.getJavaClassName():null, column.getPrecision(),
column.getCharOctetLength(), column.getRadix(), column.getUUID(), column.getAnnotation(), oid++));
}
break;
@@ -331,7 +345,68 @@
break;
}
} else {
- StoredProcedure proc = (StoredProcedure)command;
+ StoredProcedure proc = (StoredProcedure)command;
+ if (StringUtil.startsWithIgnoreCase(proc.getProcedureCallableName(), CoreConstants.SYSTEM_ADMIN_MODEL)) {
+ final SystemAdminProcs sysProc = SystemAdminProcs.valueOf(proc.getProcedureCallableName().substring(CoreConstants.SYSTEM_ADMIN_MODEL.length() + 1).toUpperCase());
+ Table table = indexMetadata.getGroupID((String)((Constant)proc.getParameter(1).getExpression()).getValue());
+ switch (sysProc) {
+ case SETCOLUMNSTATS:
+ String columnName = (String)((Constant)proc.getParameter(2).getExpression()).getValue();
+ Column c = null;
+ for (Column col : table.getColumns()) {
+ if (col.getName().equalsIgnoreCase(columnName)) {
+ c = col;
+ break;
+ }
+ }
+ if (c == null) {
+ throw new TeiidProcessingException(columnName + TransformationMetadata.NOT_EXISTS_MESSAGE);
+ }
+ Integer distinctVals = (Integer)((Constant)proc.getParameter(3).getExpression()).getValue();
+ Integer nullVals = (Integer)((Constant)proc.getParameter(4).getExpression()).getValue();
+ String max = (String) ((Constant)proc.getParameter(5).getExpression()).getValue();
+ String min = (String) ((Constant)proc.getParameter(6).getExpression()).getValue();
+ if (distinctVals != null) {
+ c.setDistinctValues(distinctVals);
+ }
+ if (nullVals != null) {
+ c.setNullValues(nullVals);
+ }
+ if (max != null) {
+ c.setMaximumValue(max);
+ }
+ if (min != null) {
+ c.setMinimumValue(min);
+ }
+ ColumnStats columnStats = new ColumnStats();
+ columnStats.setDistinctValues(distinctVals);
+ columnStats.setNullValues(nullVals);
+ columnStats.setMaximumValue(max);
+ columnStats.setMinimumValue(min);
+ if (eventDistributor != null) {
+ eventDistributor.setColumnStats(vdbName, vdbVersion, table.getParent().getName(), table.getName(), columnName, columnStats);
+ }
+ if (this.metadataRepository != null) {
+ this.metadataRepository.setColumnStats(vdbName, vdbVersion, c, columnStats);
+ }
+ break;
+ case SETTABLESTATS:
+ Constant val = (Constant)proc.getParameter(2).getExpression();
+ int cardinality = (Integer)val.getValue();
+ table.setCardinality(cardinality);
+ TableStats tableStats = new TableStats();
+ tableStats.setCardinality(cardinality);
+ if (eventDistributor != null) {
+ eventDistributor.setTableStats(vdbName, vdbVersion, table.getParent().getName(), table.getName(), tableStats);
+ }
+ if (this.metadataRepository != null) {
+ this.metadataRepository.setTableStats(vdbName, vdbVersion, table, tableStats);
+ }
+ break;
+ }
+ table.setLastModified(System.currentTimeMillis());
+ return new CollectionTupleSource(rows.iterator());
+ }
final SystemProcs sysTable = SystemProcs.valueOf(proc.getProcedureCallableName().substring(CoreConstants.SYSTEM_MODEL.length() + 1).toUpperCase());
switch (sysTable) {
case GETXMLSCHEMAS:
Modified: trunk/engine/src/main/java/org/teiid/dqp/internal/process/Request.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/dqp/internal/process/Request.java 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/engine/src/main/java/org/teiid/dqp/internal/process/Request.java 2011-04-28 02:55:13 UTC (rev 3126)
@@ -25,9 +25,7 @@
import java.sql.Connection;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
import java.util.Properties;
import java.util.Set;
@@ -59,14 +57,10 @@
import org.teiid.logging.LogConstants;
import org.teiid.logging.LogManager;
import org.teiid.logging.MessageLevel;
-import org.teiid.metadata.MetadataProvider;
-import org.teiid.metadata.ViewDefinition;
import org.teiid.metadata.FunctionMethod.Determinism;
import org.teiid.query.QueryPlugin;
import org.teiid.query.analysis.AnalysisRecord;
import org.teiid.query.eval.SecurityFunctionEvaluator;
-import org.teiid.query.mapping.relational.QueryNode;
-import org.teiid.query.metadata.BasicQueryMetadataWrapper;
import org.teiid.query.metadata.QueryMetadataInterface;
import org.teiid.query.metadata.TempCapabilitiesFinder;
import org.teiid.query.metadata.TempMetadataAdapter;
@@ -106,47 +100,6 @@
*/
public class Request implements SecurityFunctionEvaluator {
- private final class ViewDefinitionMetadataWrapper extends
- BasicQueryMetadataWrapper {
-
- private Map<Object, QueryNode> qnodes = new HashMap<Object, QueryNode>();
-
- private ViewDefinitionMetadataWrapper(
- QueryMetadataInterface actualMetadata) {
- super(actualMetadata);
- }
-
- @Override
- public QueryNode getVirtualPlan(Object groupID)
- throws TeiidComponentException, QueryMetadataException {
- QueryNode result = super.getVirtualPlan(groupID);
- //if there's no exception, then this must be a visible view
-
- String schema = getName(getModelID(groupID));
- String viewName = getName(groupID);
-
- QueryNode cached = qnodes.get(groupID);
- if (cached != null) {
- return cached;
- }
- if (context == null) {
- //TODO: could just consider moving up when the context is created
- throw new AssertionError("Should not attempt to resolve a view before the context has been set."); //$NON-NLS-1$
- }
- ViewDefinition vd = metadataProvider.getViewDefinition(schema, viewName, context);
- if (vd != null) {
- result = new QueryNode(DataTypeManager.getCanonicalString(vd.getSql()));
- }
- qnodes.put(groupID, result);
- return result;
- }
-
- @Override
- public QueryMetadataInterface getDesignTimeMetadata() {
- return new ViewDefinitionMetadataWrapper(this.actualMetadata.getDesignTimeMetadata());
- }
- }
-
// init state
protected RequestMessage requestMsg;
private String vdbName;
@@ -182,7 +135,6 @@
private boolean resultSetCacheEnabled = true;
private int userRequestConcurrency;
private AuthorizationValidator authorizationValidator;
- private MetadataProvider metadataProvider;
void initialize(RequestMessage requestMsg,
BufferManager bufferManager,
@@ -221,10 +173,6 @@
this.authorizationValidator = authorizationValidator;
}
- public void setMetadataProvider(MetadataProvider metadataProvider) {
- this.metadataProvider = metadataProvider;
- }
-
/**
* if the metadata has not been supplied via setMetadata, this method will create the appropriate state
*
@@ -253,10 +201,6 @@
this.metadata = new MultiSourceMetadataWrapper(this.metadata, this.multiSourceModels);
}
- if (this.metadataProvider != null) {
- this.metadata = new ViewDefinitionMetadataWrapper(this.metadata);
- }
-
TempMetadataAdapter tma = new TempMetadataAdapter(metadata, new TempMetadataStore());
tma.setSession(true);
this.metadata = tma;
Modified: trunk/engine/src/main/java/org/teiid/query/optimizer/QueryOptimizer.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/optimizer/QueryOptimizer.java 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/engine/src/main/java/org/teiid/query/optimizer/QueryOptimizer.java 2011-04-28 02:55:13 UTC (rev 3126)
@@ -36,6 +36,7 @@
import org.teiid.core.id.IDGenerator;
import org.teiid.core.id.IntegerIDFactory;
import org.teiid.dqp.internal.process.PreparedPlan;
+import org.teiid.metadata.Procedure;
import org.teiid.metadata.Table;
import org.teiid.metadata.FunctionMethod.Determinism;
import org.teiid.query.analysis.AnalysisRecord;
@@ -129,6 +130,9 @@
for (Table t : pp.getAccessInfo().getViewsAccessed()) {
context.accessedView(t);
}
+ for (Procedure p : pp.getAccessInfo().getProceduresAccessed()) {
+ context.accessedProcedure(p);
+ }
}
// propagate procedure parameters to the plan to allow runtime type checking
ProcedureContainer container = (ProcedureContainer)cupc.getUserCommand();
Modified: trunk/engine/src/main/java/org/teiid/query/processor/ProcessorDataManager.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/processor/ProcessorDataManager.java 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/engine/src/main/java/org/teiid/query/processor/ProcessorDataManager.java 2011-04-28 02:55:13 UTC (rev 3126)
@@ -26,7 +26,6 @@
import org.teiid.common.buffer.TupleSource;
import org.teiid.core.TeiidComponentException;
import org.teiid.core.TeiidProcessingException;
-import org.teiid.events.EventDistributor;
import org.teiid.query.sql.lang.Command;
import org.teiid.query.util.CommandContext;
@@ -49,6 +48,4 @@
Object keyValue) throws BlockedException,
TeiidComponentException, TeiidProcessingException;
- void setEventDistributor(EventDistributor ed);
-
}
Modified: trunk/engine/src/main/java/org/teiid/query/tempdata/TempTableDataManager.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/tempdata/TempTableDataManager.java 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/engine/src/main/java/org/teiid/query/tempdata/TempTableDataManager.java 2011-04-28 02:55:13 UTC (rev 3126)
@@ -161,7 +161,6 @@
public void setEventDistributor(EventDistributor eventDistributor) {
this.eventDistributor = eventDistributor;
- this.processorDataManager.setEventDistributor(eventDistributor);
}
public TupleSource registerRequest(
Modified: trunk/engine/src/main/java/org/teiid/query/util/CommandContext.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/util/CommandContext.java 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/engine/src/main/java/org/teiid/query/util/CommandContext.java 2011-04-28 02:55:13 UTC (rev 3126)
@@ -40,6 +40,7 @@
import org.teiid.dqp.internal.process.PreparedPlan;
import org.teiid.dqp.internal.process.SessionAwareCache;
import org.teiid.dqp.internal.process.SessionAwareCache.CacheID;
+import org.teiid.metadata.Procedure;
import org.teiid.metadata.Table;
import org.teiid.metadata.FunctionMethod.Determinism;
import org.teiid.query.QueryPlugin;
@@ -126,6 +127,7 @@
private LinkedList<String> recursionStack;
private boolean nonBlocking;
private HashSet<Table> viewsAccessed;
+ private HashSet<Procedure> proceduresAccessed;
/**
* Construct a new context.
@@ -551,4 +553,18 @@
return viewsAccessed;
}
+ public void accessedProcedure(Procedure id) {
+ if (this.proceduresAccessed == null) {
+ this.proceduresAccessed = new HashSet<Procedure>();
+ }
+ this.proceduresAccessed.add(id);
+ }
+
+ public Set<Procedure> getProceduresAccessed() {
+ if (this.proceduresAccessed == null) {
+ return Collections.emptySet();
+ }
+ return proceduresAccessed;
+ }
+
}
Modified: trunk/engine/src/main/javacc/org/teiid/query/parser/SQLParser.jj
===================================================================
--- trunk/engine/src/main/javacc/org/teiid/query/parser/SQLParser.jj 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/engine/src/main/javacc/org/teiid/query/parser/SQLParser.jj 2011-04-28 02:55:13 UTC (rev 3126)
@@ -448,7 +448,7 @@
{
(LOOKAHEAD(2) command = createUpdateProcedure(info) |
command = userCommand(info) |
- command = callableStatement(info)
+ command = callableStatement(info)
)
[<SEMICOLON>]
<EOF>
@@ -485,6 +485,31 @@
}
}
+Command alter(ParseInfo info) :
+{
+ String target = null;
+ QueryCommand command = null;
+ Block block = null;
+ TriggerAction triggerAction = null;
+}
+{
+ <ALTER>
+ (
+ (nonReserved("VIEW") target = id() <AS> command = queryExpression(info))
+ {
+ }
+ | (<PROCEDURE> target = id() <AS> block = block(info))
+ {
+ }
+ | (<TRIGGER> <ON> target = id() nonReserved("INSTEAD") <OF> (<INSERT>|<UPDATE>|<DELETE>) <AS> triggerAction = triggerAction(info))
+ {
+ }
+ )
+ {
+ return null;
+ }
+}
+
TriggerAction triggerAction(ParseInfo info) :
{
Block b = null;
@@ -508,7 +533,8 @@
command = update(info) |
command = delete(info) |
command = dropTable(info) |
- command = createTempTable(info)
+ command = createTempTable(info) |
+ command = alter(info)
)
{
return command;
Modified: trunk/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCore.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCore.java 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCore.java 2011-04-28 02:55:13 UTC (rev 3126)
@@ -35,7 +35,6 @@
import org.junit.Ignore;
import org.junit.Test;
import org.mockito.Mockito;
-import org.teiid.CommandContext;
import org.teiid.api.exception.query.QueryResolverException;
import org.teiid.cache.CacheConfiguration;
import org.teiid.cache.DefaultCacheFactory;
@@ -50,8 +49,6 @@
import org.teiid.dqp.internal.process.AbstractWorkItem.ThreadState;
import org.teiid.dqp.service.AutoGenDataService;
import org.teiid.dqp.service.BufferService;
-import org.teiid.metadata.MetadataProvider;
-import org.teiid.metadata.ViewDefinition;
import org.teiid.query.optimizer.TestOptimizer;
import org.teiid.query.optimizer.capabilities.BasicSourceCapabilities;
import org.teiid.query.optimizer.capabilities.SourceCapabilities.Capability;
@@ -329,33 +326,6 @@
assertEquals(1, agds.getExecuteCount().get());
}
- @Test public void testMetadataProvider() throws Exception {
- this.config.setMetadataProvider(new MetadataProvider() {
- int callCount;
- @Override
- public ViewDefinition getViewDefinition(String schema,
- String viewName, CommandContext context) {
- if (callCount++ > 0) {
- ViewDefinition vd = new ViewDefinition("SELECT 'something else'");
- return vd;
- }
- ViewDefinition vd = new ViewDefinition("SELECT 'hello world'");
- return vd;
- }
- });
- //the sql should normally return 10 rows
- String sql = "SELECT * FROM vqt.SmallB UNION SELECT * FROM vqt.SmallB"; //$NON-NLS-1$
- String userName = "1"; //$NON-NLS-1$
-
- ResultsMessage rm = helpExecute(sql, userName);
- assertEquals(1, rm.getResults().length); //$NON-NLS-1$
- assertEquals("hello world", rm.getResults()[0].get(0)); //$NON-NLS-1$
-
- rm = helpExecute(sql, userName);
- assertEquals(1, rm.getResults().length); //$NON-NLS-1$
- assertEquals("something else", rm.getResults()[0].get(0)); //$NON-NLS-1$
- }
-
@Test public void testPreparedPlanInvalidation() throws Exception {
String sql = "insert into #temp select * FROM vqt.SmallB"; //$NON-NLS-1$
String userName = "1"; //$NON-NLS-1$
Modified: trunk/engine/src/test/java/org/teiid/query/processor/FakeDataManager.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/processor/FakeDataManager.java 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/engine/src/test/java/org/teiid/query/processor/FakeDataManager.java 2011-04-28 02:55:13 UTC (rev 3126)
@@ -34,7 +34,6 @@
import org.teiid.common.buffer.BlockedException;
import org.teiid.common.buffer.TupleSource;
import org.teiid.core.TeiidComponentException;
-import org.teiid.events.EventDistributor;
import org.teiid.logging.LogManager;
import org.teiid.query.eval.Evaluator;
import org.teiid.query.metadata.QueryMetadataInterface;
@@ -389,8 +388,4 @@
this.registerTuples(group.getMetadataID(), elementSymbols, tuples);
}
- @Override
- public void setEventDistributor(EventDistributor ed) {
- }
-
}
\ No newline at end of file
Modified: trunk/engine/src/test/java/org/teiid/query/processor/HardcodedDataManager.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/processor/HardcodedDataManager.java 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/engine/src/test/java/org/teiid/query/processor/HardcodedDataManager.java 2011-04-28 02:55:13 UTC (rev 3126)
@@ -32,7 +32,6 @@
import org.teiid.common.buffer.TupleSource;
import org.teiid.core.TeiidComponentException;
import org.teiid.dqp.internal.datamgr.LanguageBridgeFactory;
-import org.teiid.events.EventDistributor;
import org.teiid.query.metadata.QueryMetadataInterface;
import org.teiid.query.sql.lang.Command;
import org.teiid.query.util.CommandContext;
@@ -168,9 +167,5 @@
public void clearCodeTables() {
}
-
- @Override
- public void setEventDistributor(EventDistributor ed) {
- }
}
Modified: trunk/engine/src/test/java/org/teiid/query/processor/relational/TestBatchedUpdateNode.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/processor/relational/TestBatchedUpdateNode.java 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/engine/src/test/java/org/teiid/query/processor/relational/TestBatchedUpdateNode.java 2011-04-28 02:55:13 UTC (rev 3126)
@@ -36,7 +36,6 @@
import org.teiid.common.buffer.TupleBatch;
import org.teiid.common.buffer.TupleSource;
import org.teiid.core.TeiidComponentException;
-import org.teiid.events.EventDistributor;
import org.teiid.query.metadata.QueryMetadataInterface;
import org.teiid.query.optimizer.TestBatchedUpdatePlanner;
import org.teiid.query.processor.ProcessorDataManager;
@@ -220,10 +219,6 @@
actualCommands.add(command);
return new FakeTupleSource(numExecutedCommands);
}
- @Override
- public void setEventDistributor(EventDistributor ed) {
- }
-
}
private static final class FakeTupleSource implements TupleSource {
private int currentTuple = 0;
Modified: trunk/engine/src/test/java/org/teiid/query/processor/relational/TestProjectIntoNode.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/processor/relational/TestProjectIntoNode.java 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/engine/src/test/java/org/teiid/query/processor/relational/TestProjectIntoNode.java 2011-04-28 02:55:13 UTC (rev 3126)
@@ -36,7 +36,6 @@
import org.teiid.common.buffer.TupleSource;
import org.teiid.core.TeiidComponentException;
import org.teiid.core.TeiidProcessingException;
-import org.teiid.events.EventDistributor;
import org.teiid.query.eval.Evaluator;
import org.teiid.query.processor.FakeTupleSource;
import org.teiid.query.processor.ProcessorDataManager;
@@ -185,9 +184,6 @@
Object val = row.get(0);
assertEquals(new Integer(value), val);
}
- @Override
- public void setEventDistributor(EventDistributor ed) {
- }
}
private static final class FakeDataTupleSource implements TupleSource {
Modified: trunk/jboss-integration/src/main/java/org/teiid/jboss/deployers/RuntimeEngineDeployer.java
===================================================================
--- trunk/jboss-integration/src/main/java/org/teiid/jboss/deployers/RuntimeEngineDeployer.java 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/jboss-integration/src/main/java/org/teiid/jboss/deployers/RuntimeEngineDeployer.java 2011-04-28 02:55:13 UTC (rev 3126)
@@ -104,6 +104,7 @@
import org.teiid.logging.MessageLevel;
import org.teiid.metadata.Column;
import org.teiid.metadata.ColumnStats;
+import org.teiid.metadata.MetadataRepository;
import org.teiid.metadata.Schema;
import org.teiid.metadata.Table;
import org.teiid.metadata.TableStats;
@@ -716,10 +717,7 @@
}
for (Column c : t.getColumns()) {
if (c.getName().equalsIgnoreCase(columnName)) {
- c.setDistinctValues(stats.getNumDistinctValues());
- c.setNullValues(stats.getNumNullValues());
- c.setMaximumValue(stats.getMax());
- c.setMinimumValue(stats.getMin());
+ c.setColumnStats(stats);
t.setLastModified(System.currentTimeMillis());
break;
}
@@ -733,7 +731,7 @@
if (t == null) {
return;
}
- t.setCardinality(stats.getCardinality());
+ t.setTableStats(stats);
t.setLastModified(System.currentTimeMillis());
}
@@ -757,10 +755,16 @@
return s.getTables().get(tableName.toUpperCase());
}
+ @Override
public EventDistributor getEventDistributor() {
if (this.eventDistributor != null) {
return eventDistributor;
}
return this;
}
+
+ @Override
+ public MetadataRepository getMetadataRepository() {
+ return this.vdbRepository.getMetadataRepository();
+ }
}
Modified: trunk/metadata/src/main/resources/System.vdb
===================================================================
(Binary files differ)
Added: trunk/metadata/system-vdb-update.txt
===================================================================
--- trunk/metadata/system-vdb-update.txt (rev 0)
+++ trunk/metadata/system-vdb-update.txt 2011-04-28 02:55:13 UTC (rev 3126)
@@ -0,0 +1,3 @@
+When updating the System.vdb using a VDB built by a 7.x Designer, the runtime-inf/DATATYPES.INDEX must be copied from the old
+version. Designer VDBs no longer contain a separate copy of that INDEX. We could consider splitting the datatype information
+into its own vdb to better handle this.
\ No newline at end of file
Property changes on: trunk/metadata/system-vdb-update.txt
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified: trunk/runtime/src/main/java/org/teiid/deployers/CompositeVDB.java
===================================================================
--- trunk/runtime/src/main/java/org/teiid/deployers/CompositeVDB.java 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/runtime/src/main/java/org/teiid/deployers/CompositeVDB.java 2011-04-28 02:55:13 UTC (rev 3126)
@@ -119,8 +119,12 @@
TransformationMetadata metadata = new TransformationMetadata(vdb, compositeStore, visibilityMap, systemFunctions, udfs);
return metadata;
- }
+ }
+ public MetadataStore[] getAdditionalStores() {
+ return additionalStores;
+ }
+
public VDBMetaData getVDB() {
if (this.children == null || this.children.isEmpty()) {
return vdb;
Modified: trunk/runtime/src/main/java/org/teiid/deployers/VDBRepository.java
===================================================================
--- trunk/runtime/src/main/java/org/teiid/deployers/VDBRepository.java 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/runtime/src/main/java/org/teiid/deployers/VDBRepository.java 2011-04-28 02:55:13 UTC (rev 3126)
@@ -23,9 +23,11 @@
import java.io.Serializable;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedHashMap;
+import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.NavigableMap;
@@ -42,8 +44,16 @@
import org.teiid.dqp.internal.datamgr.ConnectorManagerRepository;
import org.teiid.logging.LogConstants;
import org.teiid.logging.LogManager;
+import org.teiid.metadata.Column;
+import org.teiid.metadata.ColumnStats;
import org.teiid.metadata.Datatype;
+import org.teiid.metadata.MetadataRepository;
import org.teiid.metadata.MetadataStore;
+import org.teiid.metadata.Procedure;
+import org.teiid.metadata.Schema;
+import org.teiid.metadata.Table;
+import org.teiid.metadata.TableStats;
+import org.teiid.metadata.MetadataRepository.TriggerOperation;
import org.teiid.query.function.SystemFunctionManager;
import org.teiid.query.metadata.TransformationMetadata.Resource;
import org.teiid.runtime.RuntimePlugin;
@@ -63,7 +73,12 @@
private boolean odbcEnabled = false;
private List<VDBLifeCycleListener> listeners = new CopyOnWriteArrayList<VDBLifeCycleListener>();
private SystemFunctionManager systemFunctionManager;
+ private MetadataRepository metadataRepository;
+ public MetadataRepository getMetadataRepository() {
+ return metadataRepository;
+ }
+
public void addVDB(VDBMetaData vdb, MetadataStoreGroup stores, LinkedHashMap<String, Resource> visibilityMap, UDFMetaData udf, ConnectorManagerRepository cmr) throws DeploymentException {
if (getVDB(vdb.getName(), vdb.getVersion()) != null) {
throw new DeploymentException(RuntimePlugin.Util.getString("duplicate_vdb", vdb.getName(), vdb.getVersion())); //$NON-NLS-1$
@@ -77,16 +92,74 @@
if (this.odbcEnabled && odbcStore == null) {
this.odbcStore = getODBCMetadataStore();
}
-
+ CompositeVDB cvdb = null;
if (this.odbcStore == null) {
- this.vdbRepo.put(vdbId(vdb), new CompositeVDB(vdb, stores, visibilityMap, udf, this.systemFunctionManager.getSystemFunctions(), cmr, this.systemStore));
+ cvdb = new CompositeVDB(vdb, stores, visibilityMap, udf, this.systemFunctionManager.getSystemFunctions(), cmr, this.systemStore);
}
else {
- this.vdbRepo.put(vdbId(vdb), new CompositeVDB(vdb, stores, visibilityMap, udf, this.systemFunctionManager.getSystemFunctions(), cmr, this.systemStore, odbcStore));
+ cvdb = new CompositeVDB(vdb, stores, visibilityMap, udf, this.systemFunctionManager.getSystemFunctions(), cmr, this.systemStore, odbcStore);
}
+ updateFromMetadataRepository(stores, cvdb);
+ this.vdbRepo.put(vdbId(vdb), cvdb);
notifyAdd(vdb.getName(), vdb.getVersion());
}
+ private void updateFromMetadataRepository(MetadataStoreGroup stores,
+ CompositeVDB cvdb) {
+ if (metadataRepository == null) {
+ return;
+ }
+ String vdbName = cvdb.getVDB().getName();
+ int vdbVersion = cvdb.getVDB().getVersion();
+ LinkedList<MetadataStore> allStores = new LinkedList<MetadataStore>(stores.getStores());
+ allStores.addAll(Arrays.asList(cvdb.getAdditionalStores()));
+ for (MetadataStore metadataStore : allStores) {
+ for (Schema schema : metadataStore.getSchemas().values()) {
+ for (Table t : schema.getTables().values()) {
+ if (t.isPhysical()) {
+ TableStats stats = metadataRepository.getTableStats(vdbName, vdbVersion, t);
+ if (stats != null) {
+ t.setTableStats(stats);
+ }
+ for (Column c : t.getColumns()) {
+ ColumnStats cStats = metadataRepository.getColumnStats(vdbName, vdbVersion, c);
+ if (cStats != null) {
+ c.setColumnStats(cStats);
+ }
+ }
+ } else {
+ String def = metadataRepository.getViewDefinition(vdbName, vdbVersion, t);
+ if (def != null) {
+ t.setSelectTransformation(def);
+ }
+ if (t.supportsUpdate()) {
+ def = metadataRepository.getInsteadOfTriggerDefinition(vdbName, vdbVersion, t, TriggerOperation.INSERT);
+ if (def != null) {
+ t.setInsertPlan(def);
+ }
+ def = metadataRepository.getInsteadOfTriggerDefinition(vdbName, vdbVersion, t, TriggerOperation.UPDATE);
+ if (def != null) {
+ t.setUpdatePlan(def);
+ }
+ def = metadataRepository.getInsteadOfTriggerDefinition(vdbName, vdbVersion, t, TriggerOperation.DELETE);
+ if (def != null) {
+ t.setDeletePlan(def);
+ }
+ }
+ }
+ }
+ for (Procedure p : schema.getProcedures().values()) {
+ if (p.isVirtual() && !p.isFunction()) {
+ String proc = metadataRepository.getProcedureDefinition(vdbName, vdbVersion, p);
+ if (proc != null) {
+ p.setQueryPlan(proc);
+ }
+ }
+ }
+ }
+ }
+ }
+
public VDBMetaData getVDB(String name, int version) {
CompositeVDB v = this.vdbRepo.get(new VDBKey(name, version));
if (v != null) {
@@ -143,6 +216,10 @@
public void setSystemStore(MetadataStore store) {
this.systemStore = store;
}
+
+ public void setMetadataRepository(MetadataRepository metadataRepository) {
+ this.metadataRepository = metadataRepository;
+ }
private MetadataStore getODBCMetadataStore() {
try {
Modified: trunk/test-integration/common/src/test/java/org/teiid/jdbc/FakeServer.java
===================================================================
--- trunk/test-integration/common/src/test/java/org/teiid/jdbc/FakeServer.java 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/test-integration/common/src/test/java/org/teiid/jdbc/FakeServer.java 2011-04-28 02:55:13 UTC (rev 3126)
@@ -44,6 +44,7 @@
import org.teiid.dqp.internal.process.DQPConfiguration;
import org.teiid.dqp.internal.process.DQPCore;
import org.teiid.dqp.service.FakeBufferService;
+import org.teiid.metadata.MetadataRepository;
import org.teiid.metadata.MetadataStore;
import org.teiid.metadata.Schema;
import org.teiid.metadata.index.IndexMetadataFactory;
@@ -101,6 +102,11 @@
registerClientService(DQP.class, dqp, null);
}
+ public void setMetadataRepository(MetadataRepository metadataRepository) {
+ this.repo.setMetadataRepository(metadataRepository);
+ this.dqp.setMetadataRepository(metadataRepository);
+ }
+
public void setUseCallingThread(boolean useCallingThread) {
this.useCallingThread = useCallingThread;
}
Added: trunk/test-integration/common/src/test/java/org/teiid/systemmodel/TestMetadataUpdates.java
===================================================================
--- trunk/test-integration/common/src/test/java/org/teiid/systemmodel/TestMetadataUpdates.java (rev 0)
+++ trunk/test-integration/common/src/test/java/org/teiid/systemmodel/TestMetadataUpdates.java 2011-04-28 02:55:13 UTC (rev 3126)
@@ -0,0 +1,108 @@
+/*
+ * 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.systemmodel;
+
+import static org.junit.Assert.*;
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+import org.teiid.core.util.UnitTestUtil;
+import org.teiid.jdbc.FakeServer;
+import org.teiid.metadata.MetadataRepository;
+import org.teiid.metadata.Procedure;
+import org.teiid.metadata.Table;
+import org.teiid.metadata.MetadataRepository.TriggerOperation;
+
+@SuppressWarnings("nls")
+public class TestMetadataUpdates {
+
+ static Connection connection;
+
+ static final String VDB = "metadata";
+
+ @BeforeClass public static void setUp() throws Exception {
+ FakeServer server = new FakeServer();
+ MetadataRepository repo = Mockito.mock(MetadataRepository.class);
+ server.setMetadataRepository(repo);
+ Mockito.stub(repo.getViewDefinition(Mockito.anyString(), Mockito.anyInt(), (Table)Mockito.anyObject())).toAnswer(new Answer<String>() {
+ @Override
+ public String answer(InvocationOnMock invocation) throws Throwable {
+ Table t = (Table)invocation.getArguments()[2];
+ if (t.getName().equals("vw")) {
+ return "select '2011'";
+ }
+ return null;
+ }
+ });
+ Mockito.stub(repo.getProcedureDefinition(Mockito.anyString(), Mockito.anyInt(), (Procedure)Mockito.anyObject())).toAnswer(new Answer<String>() {
+ @Override
+ public String answer(InvocationOnMock invocation) throws Throwable {
+ Procedure t = (Procedure)invocation.getArguments()[2];
+ if (t.getName().equals("proc")) {
+ return "create virtual procedure begin select '2011'; end";
+ }
+ return null;
+ }
+ });
+ Mockito.stub(repo.getInsteadOfTriggerDefinition(Mockito.anyString(), Mockito.anyInt(), (Table)Mockito.anyObject(), (TriggerOperation) Mockito.anyObject())).toAnswer(new Answer<String>() {
+ @Override
+ public String answer(InvocationOnMock invocation) throws Throwable {
+ return "for each row select 1/0; begin end";
+ }
+ });
+ server.deployVDB(VDB, UnitTestUtil.getTestDataPath() + "/metadata.vdb");
+ connection = server.createConnection("jdbc:teiid:" + VDB); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ @AfterClass public static void tearDown() throws SQLException {
+ connection.close();
+ }
+
+ @Test public void testViewMetadataRepositoryMerge() throws Exception {
+ Statement s = connection.createStatement();
+ ResultSet rs = s.executeQuery("select * from vw");
+ rs.next();
+ assertEquals(2011, rs.getInt(1));
+ }
+
+ @Test(expected=SQLException.class) public void testViewUpdateMetadataRepositoryMerge() throws Exception {
+ Statement s = connection.createStatement();
+ s.execute("delete from vw");
+ }
+
+ @Test public void testProcMetadataRepositoryMerge() throws Exception {
+ Statement s = connection.createStatement();
+ ResultSet rs = s.executeQuery("call proc(1)");
+ rs.next();
+ assertEquals(2011, rs.getInt(1));
+ }
+
+}
Property changes on: trunk/test-integration/common/src/test/java/org/teiid/systemmodel/TestMetadataUpdates.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: trunk/test-integration/common/src/test/java/org/teiid/systemmodel/TestStats.java
===================================================================
--- trunk/test-integration/common/src/test/java/org/teiid/systemmodel/TestStats.java (rev 0)
+++ trunk/test-integration/common/src/test/java/org/teiid/systemmodel/TestStats.java 2011-04-28 02:55:13 UTC (rev 3126)
@@ -0,0 +1,86 @@
+/*
+ * 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.systemmodel;
+
+import static org.junit.Assert.*;
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.teiid.core.util.UnitTestUtil;
+import org.teiid.jdbc.FakeServer;
+
+@SuppressWarnings("nls")
+public class TestStats {
+
+ static Connection connection;
+
+ static final String VDB = "PartsSupplier";
+
+ @BeforeClass public static void setUp() throws Exception {
+ FakeServer server = new FakeServer();
+ server.deployVDB(VDB, UnitTestUtil.getTestDataPath() + "/PartsSupplier.vdb");
+ connection = server.createConnection("jdbc:teiid:" + VDB); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ @AfterClass public static void tearDown() throws SQLException {
+ connection.close();
+ }
+
+ @Test public void testSetTableStats() throws Exception {
+ Statement s = connection.createStatement();
+ ResultSet rs = s.executeQuery("select cardinality from tables where name = 'PARTSSUPPLIER.PARTS'");
+ rs.next();
+ assertEquals(16, rs.getInt(1));
+ s.execute("call setTableStats(tableName=>'partssupplier.partssupplier.parts', cardinality=>32)");
+ rs = s.executeQuery("select cardinality from tables where name = 'PARTSSUPPLIER.PARTS'");
+ rs.next();
+ assertEquals(32, rs.getInt(1));
+ }
+
+ @Test public void testSetColumnStats() throws Exception {
+ Statement s = connection.createStatement();
+ ResultSet rs = s.executeQuery("select MinRange, MaxRange, DistinctCount, NullCount from columns where name = 'PART_ID'");
+ rs.next();
+ assertEquals(null, rs.getString(1));
+ assertEquals(null, rs.getString(2));
+ assertEquals(-1, rs.getInt(3));
+ assertEquals(-1, rs.getInt(4));
+ s.execute("call setColumnStats(tableName=>'partssupplier.partssupplier.parts', columnName=>'PART_ID', max=>32, nullcount=>0)");
+ rs = s.executeQuery("select MinRange, MaxRange, DistinctCount, NullCount from columns where name = 'PART_ID'");
+ rs.next();
+ assertEquals(null, rs.getString(1));
+ assertEquals("32", rs.getString(2));
+ assertEquals(-1, rs.getInt(3));
+ assertEquals(0, rs.getInt(4));
+ }
+
+ @Test(expected=SQLException.class) public void testSetColumnStatsInvalidColumn() throws Exception {
+ Statement s = connection.createStatement();
+ s.execute("call setColumnStats(tableName=>'partssupplier.partssupplier.parts', columnName=>'foo', max=>32, nullcount=>0)");
+ }
+}
Property changes on: trunk/test-integration/common/src/test/java/org/teiid/systemmodel/TestStats.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified: trunk/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumns.expected
===================================================================
--- trunk/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumns.expected 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumns.expected 2011-04-28 02:55:13 UTC (rev 3126)
@@ -177,16 +177,18 @@
QT_Ora9DS SYS Columns NullType 12 string 20 <null> 0 10 0 <null> <null> <null> <null> 20 17 NO <null> <null> <null> !
<null> NO
QT_Ora9DS SYS Columns MinRange 12 string 50 <null> 0 10 1 <null> <null> <null> <null> 50 18 YES <null> <null> <null> !
<null> NO
QT_Ora9DS SYS Columns MaxRange 12 string 50 <null> 0 10 1 <null> <null> <null> <null> 50 19 YES <null> <null> <null> !
<null> NO
-QT_Ora9DS SYS Columns SearchType 12 string 20 <null> 0 10 0 <null> <null> <null> <null> 20 20 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS SYS Columns Format 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 21 YES <null> <null> <null> !
<null> NO
-QT_Ora9DS SYS Columns DefaultValue 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 22 YES <null> <null> <null> !
<null> NO
-QT_Ora9DS SYS Columns JavaClass 12 string 500 <null> 0 10 0 <null> <null> <null> <null> 500 23 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS SYS Columns Precision 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 24 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS SYS Columns CharOctetLength 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 25 YES <null> <null> <null> !
<null> NO
-QT_Ora9DS SYS Columns Radix 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 26 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS SYS Columns UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 27 NO <null> <null> <null> !
<null> NO
-QT_Ora9DS SYS Columns Description 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 28 YES <null> <null> <null> !
<null> NO
-QT_Ora9DS SYS Columns OID 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 29 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS SYS Columns DistinctCount 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 20 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS SYS Columns NullCount 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 21 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS SYS Columns SearchType 12 string 20 <null> 0 10 0 <null> <null> <null> <null> 20 22 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS SYS Columns Format 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 23 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS SYS Columns DefaultValue 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 24 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS SYS Columns JavaClass 12 string 500 <null> 0 10 0 <null> <null> <null> <null> 500 25 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS SYS Columns Precision 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 26 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS SYS Columns CharOctetLength 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 27 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS SYS Columns Radix 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 28 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS SYS Columns UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 29 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS SYS Columns Description 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 30 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS SYS Columns OID 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 31 NO <null> <null> <null> !
<null> NO
QT_Ora9DS SYS DataTypes Name 12 string 100 <null> 0 10 0 <null> <null> <null> <null> 100 1 NO <null> <null> <null> !
<null> NO
QT_Ora9DS SYS DataTypes IsStandard -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 2 YES <null> <null> <null> !
<null> NO
QT_Ora9DS SYS DataTypes IsPhysical -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 3 YES <null> <null> <null> !
<null> NO
@@ -1081,7 +1083,7 @@
QT_Ora9DS XQT xqtFullData BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 YES <null> <null> <null> !
<null> NO
QT_Ora9DS XQT xqtFullData BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 YES <null> <null> <null> !
<null> NO
QT_Ora9DS XQT xqtFullData ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 YES <null> <null> <null> !
<null> NO
-Row Count : 1081
+Row Count : 1083
getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
VDBName 12 QT_Ora9DS java.lang.String TABLE_CAT string SYS Columns 255 255 0 false false false false 0 true true false false
SchemaName 12 QT_Ora9DS java.lang.String TABLE_SCHEM string SYS Columns 255 255 0 false true false true 1 false true true true
Modified: trunk/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetProcedureColumns.expected
===================================================================
--- trunk/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetProcedureColumns.expected 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetProcedureColumns.expected 2011-04-28 02:55:13 UTC (rev 3126)
@@ -49,7 +49,15 @@
QT_Ora9DS SYSADMIN refreshMatViewRow ViewName 1 12 string 4000 4000 0 10 0 <null> <null> <null> <null> <null> 1 NO refreshMatViewRow
QT_Ora9DS SYSADMIN refreshMatViewRow Key 1 2000 object 2147483647 2147483647 0 10 0 <null> <null> <null> <null> <null> 2 NO refreshMatViewRow
QT_Ora9DS SYSADMIN refreshMatViewRow RowsUpdated 5 4 integer 10 10 0 10 0 <null> <null> <null> <null> <null> 3 NO refreshMatViewRow
-Row Count : 49
+QT_Ora9DS SYSADMIN setColumnStats tableName 1 12 string 4000 4000 0 10 0 <null> <null> <null> <null> <null> 1 NO setColumnStats
+QT_Ora9DS SYSADMIN setColumnStats columnName 1 12 string 4000 4000 0 10 0 <null> <null> <null> <null> <null> 2 NO setColumnStats
+QT_Ora9DS SYSADMIN setColumnStats distinctCount 1 4 integer 10 10 0 10 1 <null> <null> <null> <null> <null> 3 YES setColumnStats
+QT_Ora9DS SYSADMIN setColumnStats nullCount 1 4 integer 10 10 0 10 1 <null> <null> <null> <null> <null> 4 YES setColumnStats
+QT_Ora9DS SYSADMIN setColumnStats max 1 12 string 4000 4000 0 10 1 <null> <null> <null> <null> <null> 5 YES setColumnStats
+QT_Ora9DS SYSADMIN setColumnStats min 1 12 string 4000 4000 0 10 1 <null> <null> <null> <null> <null> 6 YES setColumnStats
+QT_Ora9DS SYSADMIN setTableStats tableName 1 12 string 4000 4000 0 10 0 <null> <null> <null> <null> <null> 1 NO setTableStats
+QT_Ora9DS SYSADMIN setTableStats cardinality 1 4 integer 10 10 0 10 0 <null> <null> <null> <null> <null> 2 NO setTableStats
+Row Count : 57
getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
VDBName 12 QT_Ora9DS java.lang.String PROCEDURE_CAT string SYS ProcedureParams 255 255 0 false false false false 0 true true false false
SchemaName 12 QT_Ora9DS java.lang.String PROCEDURE_SCHEM string SYS ProcedureParams 255 255 0 false true false true 1 false true true true
Modified: trunk/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetProcedures.expected
===================================================================
--- trunk/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetProcedures.expected 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetProcedures.expected 2011-04-28 02:55:13 UTC (rev 3126)
@@ -7,7 +7,9 @@
QT_Ora9DS SYS getXMLSchemas <null> <null> <null> <null> 2 getXMLSchemas
QT_Ora9DS SYSADMIN refreshMatView <null> <null> <null> <null> 1 refreshMatView
QT_Ora9DS SYSADMIN refreshMatViewRow <null> <null> <null> <null> 1 refreshMatViewRow
-Row Count : 7
+QT_Ora9DS SYSADMIN setColumnStats <null> <null> <null> <null> 1 setColumnStats
+QT_Ora9DS SYSADMIN setTableStats <null> <null> <null> <null> 1 setTableStats
+Row Count : 9
getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
VDBName 12 QT_Ora9DS java.lang.String PROCEDURE_CAT string SYS Procedures 255 255 0 false false false false 0 true true false false
SchemaName 12 QT_Ora9DS java.lang.String PROCEDURE_SCHEM string SYS Procedures 255 255 0 false true false true 1 false true true true
Modified: trunk/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetProceduresWithEscape.expected
===================================================================
--- trunk/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetProceduresWithEscape.expected 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetProceduresWithEscape.expected 2011-04-28 02:55:13 UTC (rev 3126)
@@ -7,7 +7,9 @@
QT_Ora9DS SYS getXMLSchemas <null> <null> <null> <null> 2 getXMLSchemas
QT_Ora9DS SYSADMIN refreshMatView <null> <null> <null> <null> 1 refreshMatView
QT_Ora9DS SYSADMIN refreshMatViewRow <null> <null> <null> <null> 1 refreshMatViewRow
-Row Count : 7
+QT_Ora9DS SYSADMIN setColumnStats <null> <null> <null> <null> 1 setColumnStats
+QT_Ora9DS SYSADMIN setTableStats <null> <null> <null> <null> 1 setTableStats
+Row Count : 9
getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
VDBName 12 QT_Ora9DS java.lang.String PROCEDURE_CAT string SYS Procedures 255 255 0 false false false false 0 true true false false
SchemaName 12 QT_Ora9DS java.lang.String PROCEDURE_SCHEM string SYS Procedures 255 255 0 false true false true 1 false true true true
Modified: trunk/test-integration/common/src/test/resources/TestODBCSchema/test_PG_ATTRIBUTE.expected
===================================================================
--- trunk/test-integration/common/src/test/resources/TestODBCSchema/test_PG_ATTRIBUTE.expected 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/test-integration/common/src/test/resources/TestODBCSchema/test_PG_ATTRIBUTE.expected 2011-04-28 02:55:13 UTC (rev 3126)
@@ -47,209 +47,211 @@
45 8 NullType 1043 -1 17 20 true false false
46 8 MinRange 1043 -1 18 50 false false false
47 8 MaxRange 1043 -1 19 50 false false false
-48 8 SearchType 1043 -1 20 20 true false false
-49 8 Format 1043 -1 21 255 false false false
-50 8 DefaultValue 1043 -1 22 255 false false false
-51 8 JavaClass 1043 -1 23 500 true false false
-52 8 Precision 23 4 24 10 true false false
-53 8 CharOctetLength 23 4 25 10 false false false
-54 8 Radix 23 4 26 10 true false false
-55 8 UID 1043 -1 27 50 true false false
-56 8 Description 1043 -1 28 255 false false false
-57 8 OID 23 4 29 10 true false false
-58 9 Name 1043 -1 1 100 true false false
-59 9 IsStandard 16 1 2 1 false false false
-60 9 IsPhysical 16 1 3 1 false false false
-61 9 TypeName 1043 -1 4 100 true false false
-62 9 JavaClass 1043 -1 5 500 true false false
-63 9 Scale 23 4 6 10 false false false
-64 9 TypeLength 23 4 7 10 true false false
-65 9 NullType 1043 -1 8 20 true false false
-66 9 IsSigned 16 1 9 1 true false false
-67 9 IsAutoIncremented 16 1 10 1 true false false
-68 9 IsCaseSensitive 16 1 11 1 true false false
-69 9 Precision 23 4 12 10 true false false
-70 9 Radix 23 4 13 10 false false false
-71 9 SearchType 1043 -1 14 20 true false false
-72 9 UID 1043 -1 15 50 true false false
-73 9 RuntimeType 1043 -1 16 64 false false false
-74 9 BaseType 1043 -1 17 64 false false false
-75 9 Description 1043 -1 18 255 false false false
-76 9 OID 23 4 19 10 true false false
-77 10 VDBName 1043 -1 1 255 true false false
-78 10 SchemaName 1043 -1 2 255 false false false
-79 10 TableName 1043 -1 3 2048 true false false
-80 10 Name 1043 -1 4 255 true false false
-81 10 KeyName 1043 -1 5 255 false false false
-82 10 KeyType 1043 -1 6 20 true false false
-83 10 RefKeyUID 1043 -1 7 50 false false false
-84 10 UID 1043 -1 8 50 true false false
-85 10 Position 23 4 9 10 false false false
-86 10 OID 23 4 10 10 true false false
-87 11 VDBName 1043 -1 1 255 true false false
-88 11 SchemaName 1043 -1 2 255 false false false
-89 11 TableName 1043 -1 3 2048 true false false
-90 11 Name 1043 -1 4 255 true false false
-91 11 Description 1043 -1 5 255 false false false
-92 11 NameInSource 1043 -1 6 255 false false false
-93 11 Type 1043 -1 7 20 true false false
-94 11 IsIndexed 16 1 8 1 true false false
-95 11 RefKeyUID 1043 -1 9 50 false false false
-96 11 UID 1043 -1 10 50 true false false
-97 11 OID 23 4 11 10 true false false
-98 12 VDBName 1043 -1 1 255 true false false
-99 12 SchemaName 1043 -1 2 255 false false false
-100 12 ProcedureName 1043 -1 3 255 true false false
-101 12 Name 1043 -1 4 255 true false false
-102 12 DataType 1043 -1 5 25 true false false
-103 12 Position 23 4 6 10 true false false
-104 12 Type 1043 -1 7 100 true false false
-105 12 Optional 16 1 8 1 true false false
-106 12 Precision 23 4 9 10 true false false
-107 12 TypeLength 23 4 10 10 true false false
-108 12 Scale 23 4 11 10 true false false
-109 12 Radix 23 4 12 10 true false false
-110 12 NullType 1043 -1 13 10 true false false
-111 12 UID 1043 -1 14 50 false false false
-112 12 Description 1043 -1 15 255 false false false
-113 12 OID 23 4 16 10 true false false
-114 13 VDBName 1043 -1 1 255 true false false
-115 13 SchemaName 1043 -1 2 255 false false false
-116 13 Name 1043 -1 3 255 true false false
-117 13 NameInSource 1043 -1 4 255 false false false
-118 13 ReturnsResults 16 1 5 1 true false false
-119 13 UID 1043 -1 6 50 true false false
-120 13 Description 1043 -1 7 255 false false false
-121 13 OID 23 4 8 10 true false false
-122 14 Name 1043 -1 1 255 true false false
-123 14 Value 1043 -1 2 255 true false false
-124 14 UID 1043 -1 3 50 true false false
-125 14 OID 23 4 4 10 true false false
-126 15 PKTABLE_CAT 1043 -1 1 255 false false false
-127 15 PKTABLE_SCHEM 1043 -1 2 255 false false false
-128 15 PKTABLE_NAME 1043 -1 3 255 false false false
-129 15 PKCOLUMN_NAME 1043 -1 4 255 false false false
-130 15 FKTABLE_CAT 1043 -1 5 255 false false false
-131 15 FKTABLE_SCHEM 1043 -1 6 255 false false false
-132 15 FKTABLE_NAME 1043 -1 7 255 false false false
-133 15 FKCOLUMN_NAME 1043 -1 8 255 false false false
-134 15 KEY_SEQ 21 2 9 5 false false false
-135 15 UPDATE_RULE 23 4 10 10 false false false
-136 15 DELETE_RULE 23 4 11 10 false false false
-137 15 FK_NAME 1043 -1 12 255 false false false
-138 15 PK_NAME 1043 -1 13 255 false false false
-139 15 DEFERRABILITY 23 4 14 10 false false false
-140 16 VDBName 1043 -1 1 255 false false false
-141 16 Name 1043 -1 2 255 false false false
-142 16 IsPhysical 16 1 3 1 true false false
-143 16 UID 1043 -1 4 50 true false false
-144 16 Description 1043 -1 5 255 false false false
-145 16 PrimaryMetamodelURI 1043 -1 6 255 true false false
-146 16 OID 23 4 7 10 true false false
-147 17 VDBName 1043 -1 1 255 false false false
-148 17 SchemaName 1043 -1 2 255 false false false
-149 17 Name 1043 -1 3 255 true false false
-150 17 Type 1043 -1 4 20 true false false
-151 17 NameInSource 1043 -1 5 255 false false false
-152 17 IsPhysical 16 1 6 1 true false false
-153 17 SupportsUpdates 16 1 7 1 true false false
-154 17 UID 1043 -1 8 50 true false false
-155 17 Cardinality 23 4 9 10 true false false
-156 17 Description 1043 -1 10 255 false false false
-157 17 IsSystem 16 1 11 1 false false false
-158 17 IsMaterialized 16 1 12 0 true false false
-159 17 OID 23 4 13 10 true false false
-160 18 Name 1043 -1 1 255 true false false
-161 18 Version 1043 -1 2 50 true false false
-162 19 oid 23 4 1 0 false false false
-163 19 nspname 1043 -1 2 0 false false false
-164 20 oid 23 4 1 0 false false false
-165 20 relname 1043 -1 2 0 false false false
-166 20 relnamespace 23 4 3 0 false false false
-167 20 relkind 1042 1 4 0 false false false
-168 20 relam 23 4 5 0 false false false
-169 20 reltuples 700 4 6 0 false false false
-170 20 relpages 23 4 7 0 false false false
-171 20 relhasrules 16 1 8 0 false false false
-172 20 relhasoids 1043 -1 9 0 false false false
-173 21 oid 23 4 1 0 false false false
-174 21 attrelid 23 4 2 0 false false false
-175 21 attname 1043 -1 3 0 false false false
-176 21 atttypid 23 4 4 0 false false false
-177 21 attlen 21 2 5 0 false false false
-178 21 attnum 21 2 6 0 false false false
-179 21 atttypmod 23 4 7 0 false false false
-180 21 attnotnull 16 1 8 0 false false false
-181 21 attisdropped 16 1 9 0 false false false
-182 21 atthasdef 16 1 10 0 false false false
-183 22 oid 23 4 1 0 false false false
-184 22 typname 1043 -1 2 0 false false false
-185 22 typnamespace 23 4 3 0 false false false
-186 22 typlen 21 2 4 0 false false false
-187 22 typtype 1042 1 5 0 false false false
-188 22 typbasetype 23 4 6 0 false false false
-189 22 typtypmod 23 4 7 0 false false false
-190 22 typrelid 23 4 8 0 false false false
-191 22 typelem 23 4 9 0 false false false
-192 23 oid 23 4 1 0 false false false
-193 23 indexrelid 23 4 2 0 false false false
-194 23 indrelid 23 4 3 0 false false false
-195 23 indisclustered 16 1 4 0 false false false
-196 23 indisunique 16 1 5 0 false false false
-197 23 indisprimary 16 1 6 0 false false false
-198 23 indexprs 1043 -1 7 0 false false false
-199 23 indkey 1043 -1 8 0 false false false
-200 24 oid 23 4 1 0 false false false
-201 24 amname 1043 -1 2 0 false false false
-202 25 oid 23 4 1 0 false false false
-203 25 proname 1043 -1 2 0 false false false
-204 25 proretset 16 1 3 0 false false false
-205 25 prorettype 23 4 4 0 false false false
-206 25 pronargs 21 2 5 0 false false false
-207 25 proargtypes <null> <null> 6 0 false false false
-208 25 proargnames <null> <null> 7 0 false false false
-209 25 proargmodes <null> <null> 8 0 false false false
-210 25 proallargtypes <null> <null> 9 0 false false false
-211 25 pronamespace 23 4 10 0 false false false
-212 26 oid 23 4 1 0 false false false
-213 26 tgconstrrelid 23 4 2 0 false false false
-214 26 tgfoid 23 4 3 0 false false false
-215 26 tgargs 23 4 4 0 false false false
-216 26 tgnargs 23 4 5 0 false false false
-217 26 tgdeferrable 16 1 6 0 false false false
-218 26 tginitdeferred 16 1 7 0 false false false
-219 26 tgconstrname 1043 -1 8 0 false false false
-220 26 tgrelid 23 4 9 0 false false false
-221 27 adrelid 23 4 1 0 false false false
-222 27 adnum 23 4 2 0 false false false
-223 27 adbin 1043 -1 3 0 false false false
-224 27 adsrc 1043 -1 4 0 false false false
-225 28 oid 23 4 1 0 false false false
-226 28 datname 1043 -1 2 0 false false false
-227 28 encoding 23 4 3 0 false false false
-228 28 datlastsysoid 23 4 4 0 false false false
-229 28 datallowconn 1042 1 5 0 false false false
-230 28 datconfig <null> <null> 6 0 false false false
-231 28 datacl <null> <null> 7 0 false false false
-232 28 datdba 23 4 8 0 false false false
-233 28 dattablespace 23 4 9 0 false false false
-234 29 oid 23 4 1 0 false false false
-235 29 usename 1043 -1 2 0 false false false
-236 29 usecreatedb 16 1 3 0 false false false
-237 29 usesuper 16 1 4 0 false false false
-238 30 attrelid 23 4 1 0 false false false
-239 30 attnum 21 2 2 0 false false false
-240 30 attname 1043 -1 3 0 false false false
-241 30 relname 1043 -1 4 0 false false false
-242 30 nspname 1043 -1 5 0 false false false
-243 30 autoinc 16 1 6 0 false false false
-244 30 typoid 23 4 7 0 false false false
-245 31 oid 23 4 1 0 false false false
-246 31 typname 1043 -1 2 0 false false false
-247 31 name 1043 -1 3 0 false false false
-248 31 uid 1043 -1 4 0 false false false
-249 31 typlen 21 2 5 0 false false false
-Row Count : 249
+48 8 DistinctCount 23 4 20 10 false false false
+49 8 NullCount 23 4 21 10 false false false
+50 8 SearchType 1043 -1 22 20 true false false
+51 8 Format 1043 -1 23 255 false false false
+52 8 DefaultValue 1043 -1 24 255 false false false
+53 8 JavaClass 1043 -1 25 500 true false false
+54 8 Precision 23 4 26 10 true false false
+55 8 CharOctetLength 23 4 27 10 false false false
+56 8 Radix 23 4 28 10 true false false
+57 8 UID 1043 -1 29 50 true false false
+58 8 Description 1043 -1 30 255 false false false
+59 8 OID 23 4 31 10 true false false
+60 9 Name 1043 -1 1 100 true false false
+61 9 IsStandard 16 1 2 1 false false false
+62 9 IsPhysical 16 1 3 1 false false false
+63 9 TypeName 1043 -1 4 100 true false false
+64 9 JavaClass 1043 -1 5 500 true false false
+65 9 Scale 23 4 6 10 false false false
+66 9 TypeLength 23 4 7 10 true false false
+67 9 NullType 1043 -1 8 20 true false false
+68 9 IsSigned 16 1 9 1 true false false
+69 9 IsAutoIncremented 16 1 10 1 true false false
+70 9 IsCaseSensitive 16 1 11 1 true false false
+71 9 Precision 23 4 12 10 true false false
+72 9 Radix 23 4 13 10 false false false
+73 9 SearchType 1043 -1 14 20 true false false
+74 9 UID 1043 -1 15 50 true false false
+75 9 RuntimeType 1043 -1 16 64 false false false
+76 9 BaseType 1043 -1 17 64 false false false
+77 9 Description 1043 -1 18 255 false false false
+78 9 OID 23 4 19 10 true false false
+79 10 VDBName 1043 -1 1 255 true false false
+80 10 SchemaName 1043 -1 2 255 false false false
+81 10 TableName 1043 -1 3 2048 true false false
+82 10 Name 1043 -1 4 255 true false false
+83 10 KeyName 1043 -1 5 255 false false false
+84 10 KeyType 1043 -1 6 20 true false false
+85 10 RefKeyUID 1043 -1 7 50 false false false
+86 10 UID 1043 -1 8 50 true false false
+87 10 Position 23 4 9 10 false false false
+88 10 OID 23 4 10 10 true false false
+89 11 VDBName 1043 -1 1 255 true false false
+90 11 SchemaName 1043 -1 2 255 false false false
+91 11 TableName 1043 -1 3 2048 true false false
+92 11 Name 1043 -1 4 255 true false false
+93 11 Description 1043 -1 5 255 false false false
+94 11 NameInSource 1043 -1 6 255 false false false
+95 11 Type 1043 -1 7 20 true false false
+96 11 IsIndexed 16 1 8 1 true false false
+97 11 RefKeyUID 1043 -1 9 50 false false false
+98 11 UID 1043 -1 10 50 true false false
+99 11 OID 23 4 11 10 true false false
+100 12 VDBName 1043 -1 1 255 true false false
+101 12 SchemaName 1043 -1 2 255 false false false
+102 12 ProcedureName 1043 -1 3 255 true false false
+103 12 Name 1043 -1 4 255 true false false
+104 12 DataType 1043 -1 5 25 true false false
+105 12 Position 23 4 6 10 true false false
+106 12 Type 1043 -1 7 100 true false false
+107 12 Optional 16 1 8 1 true false false
+108 12 Precision 23 4 9 10 true false false
+109 12 TypeLength 23 4 10 10 true false false
+110 12 Scale 23 4 11 10 true false false
+111 12 Radix 23 4 12 10 true false false
+112 12 NullType 1043 -1 13 10 true false false
+113 12 UID 1043 -1 14 50 false false false
+114 12 Description 1043 -1 15 255 false false false
+115 12 OID 23 4 16 10 true false false
+116 13 VDBName 1043 -1 1 255 true false false
+117 13 SchemaName 1043 -1 2 255 false false false
+118 13 Name 1043 -1 3 255 true false false
+119 13 NameInSource 1043 -1 4 255 false false false
+120 13 ReturnsResults 16 1 5 1 true false false
+121 13 UID 1043 -1 6 50 true false false
+122 13 Description 1043 -1 7 255 false false false
+123 13 OID 23 4 8 10 true false false
+124 14 Name 1043 -1 1 255 true false false
+125 14 Value 1043 -1 2 255 true false false
+126 14 UID 1043 -1 3 50 true false false
+127 14 OID 23 4 4 10 true false false
+128 15 PKTABLE_CAT 1043 -1 1 255 false false false
+129 15 PKTABLE_SCHEM 1043 -1 2 255 false false false
+130 15 PKTABLE_NAME 1043 -1 3 255 false false false
+131 15 PKCOLUMN_NAME 1043 -1 4 255 false false false
+132 15 FKTABLE_CAT 1043 -1 5 255 false false false
+133 15 FKTABLE_SCHEM 1043 -1 6 255 false false false
+134 15 FKTABLE_NAME 1043 -1 7 255 false false false
+135 15 FKCOLUMN_NAME 1043 -1 8 255 false false false
+136 15 KEY_SEQ 21 2 9 5 false false false
+137 15 UPDATE_RULE 23 4 10 10 false false false
+138 15 DELETE_RULE 23 4 11 10 false false false
+139 15 FK_NAME 1043 -1 12 255 false false false
+140 15 PK_NAME 1043 -1 13 255 false false false
+141 15 DEFERRABILITY 23 4 14 10 false false false
+142 16 VDBName 1043 -1 1 255 false false false
+143 16 Name 1043 -1 2 255 false false false
+144 16 IsPhysical 16 1 3 1 true false false
+145 16 UID 1043 -1 4 50 true false false
+146 16 Description 1043 -1 5 255 false false false
+147 16 PrimaryMetamodelURI 1043 -1 6 255 true false false
+148 16 OID 23 4 7 10 true false false
+149 17 VDBName 1043 -1 1 255 false false false
+150 17 SchemaName 1043 -1 2 255 false false false
+151 17 Name 1043 -1 3 255 true false false
+152 17 Type 1043 -1 4 20 true false false
+153 17 NameInSource 1043 -1 5 255 false false false
+154 17 IsPhysical 16 1 6 1 true false false
+155 17 SupportsUpdates 16 1 7 1 true false false
+156 17 UID 1043 -1 8 50 true false false
+157 17 Cardinality 23 4 9 10 true false false
+158 17 Description 1043 -1 10 255 false false false
+159 17 IsSystem 16 1 11 1 false false false
+160 17 IsMaterialized 16 1 12 0 true false false
+161 17 OID 23 4 13 10 true false false
+162 18 Name 1043 -1 1 255 true false false
+163 18 Version 1043 -1 2 50 true false false
+164 19 oid 23 4 1 0 false false false
+165 19 nspname 1043 -1 2 0 false false false
+166 20 oid 23 4 1 0 false false false
+167 20 relname 1043 -1 2 0 false false false
+168 20 relnamespace 23 4 3 0 false false false
+169 20 relkind 1042 1 4 0 false false false
+170 20 relam 23 4 5 0 false false false
+171 20 reltuples 700 4 6 0 false false false
+172 20 relpages 23 4 7 0 false false false
+173 20 relhasrules 16 1 8 0 false false false
+174 20 relhasoids 1043 -1 9 0 false false false
+175 21 oid 23 4 1 0 false false false
+176 21 attrelid 23 4 2 0 false false false
+177 21 attname 1043 -1 3 0 false false false
+178 21 atttypid 23 4 4 0 false false false
+179 21 attlen 21 2 5 0 false false false
+180 21 attnum 21 2 6 0 false false false
+181 21 atttypmod 23 4 7 0 false false false
+182 21 attnotnull 16 1 8 0 false false false
+183 21 attisdropped 16 1 9 0 false false false
+184 21 atthasdef 16 1 10 0 false false false
+185 22 oid 23 4 1 0 false false false
+186 22 typname 1043 -1 2 0 false false false
+187 22 typnamespace 23 4 3 0 false false false
+188 22 typlen 21 2 4 0 false false false
+189 22 typtype 1042 1 5 0 false false false
+190 22 typbasetype 23 4 6 0 false false false
+191 22 typtypmod 23 4 7 0 false false false
+192 22 typrelid 23 4 8 0 false false false
+193 22 typelem 23 4 9 0 false false false
+194 23 oid 23 4 1 0 false false false
+195 23 indexrelid 23 4 2 0 false false false
+196 23 indrelid 23 4 3 0 false false false
+197 23 indisclustered 16 1 4 0 false false false
+198 23 indisunique 16 1 5 0 false false false
+199 23 indisprimary 16 1 6 0 false false false
+200 23 indexprs 1043 -1 7 0 false false false
+201 23 indkey 1043 -1 8 0 false false false
+202 24 oid 23 4 1 0 false false false
+203 24 amname 1043 -1 2 0 false false false
+204 25 oid 23 4 1 0 false false false
+205 25 proname 1043 -1 2 0 false false false
+206 25 proretset 16 1 3 0 false false false
+207 25 prorettype 23 4 4 0 false false false
+208 25 pronargs 21 2 5 0 false false false
+209 25 proargtypes <null> <null> 6 0 false false false
+210 25 proargnames <null> <null> 7 0 false false false
+211 25 proargmodes <null> <null> 8 0 false false false
+212 25 proallargtypes <null> <null> 9 0 false false false
+213 25 pronamespace 23 4 10 0 false false false
+214 26 oid 23 4 1 0 false false false
+215 26 tgconstrrelid 23 4 2 0 false false false
+216 26 tgfoid 23 4 3 0 false false false
+217 26 tgargs 23 4 4 0 false false false
+218 26 tgnargs 23 4 5 0 false false false
+219 26 tgdeferrable 16 1 6 0 false false false
+220 26 tginitdeferred 16 1 7 0 false false false
+221 26 tgconstrname 1043 -1 8 0 false false false
+222 26 tgrelid 23 4 9 0 false false false
+223 27 adrelid 23 4 1 0 false false false
+224 27 adnum 23 4 2 0 false false false
+225 27 adbin 1043 -1 3 0 false false false
+226 27 adsrc 1043 -1 4 0 false false false
+227 28 oid 23 4 1 0 false false false
+228 28 datname 1043 -1 2 0 false false false
+229 28 encoding 23 4 3 0 false false false
+230 28 datlastsysoid 23 4 4 0 false false false
+231 28 datallowconn 1042 1 5 0 false false false
+232 28 datconfig <null> <null> 6 0 false false false
+233 28 datacl <null> <null> 7 0 false false false
+234 28 datdba 23 4 8 0 false false false
+235 28 dattablespace 23 4 9 0 false false false
+236 29 oid 23 4 1 0 false false false
+237 29 usename 1043 -1 2 0 false false false
+238 29 usecreatedb 16 1 3 0 false false false
+239 29 usesuper 16 1 4 0 false false false
+240 30 attrelid 23 4 1 0 false false false
+241 30 attnum 21 2 2 0 false false false
+242 30 attname 1043 -1 3 0 false false false
+243 30 relname 1043 -1 4 0 false false false
+244 30 nspname 1043 -1 5 0 false false false
+245 30 autoinc 16 1 6 0 false false false
+246 30 typoid 23 4 7 0 false false false
+247 31 oid 23 4 1 0 false false false
+248 31 typname 1043 -1 2 0 false false false
+249 31 name 1043 -1 3 0 false false false
+250 31 uid 1043 -1 4 0 false false false
+251 31 typlen 21 2 5 0 false false false
+Row Count : 251
getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
oid 4 PartsSupplier java.lang.Integer oid integer pg_catalog pg_attribute 11 10 0 false false false false 2 true true false false
attrelid 4 PartsSupplier java.lang.Integer attrelid integer pg_catalog pg_attribute 11 10 0 false false false false 2 true true false false
Modified: trunk/test-integration/common/src/test/resources/TestPartsDatabaseMetadata/testColumns.expected
===================================================================
--- trunk/test-integration/common/src/test/resources/TestPartsDatabaseMetadata/testColumns.expected 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/test-integration/common/src/test/resources/TestPartsDatabaseMetadata/testColumns.expected 2011-04-28 02:55:13 UTC (rev 3126)
@@ -19,16 +19,18 @@
PartsSupplier SYS Columns NullType 12 string 20 <null> 0 10 0 <null> <null> <null> <null> 20 17 NO <null> <null> <null> !
<null> NO
PartsSupplier SYS Columns MinRange 12 string 50 <null> 0 10 1 <null> <null> <null> <null> 50 18 YES <null> <null> <null> !
<null> NO
PartsSupplier SYS Columns MaxRange 12 string 50 <null> 0 10 1 <null> <null> <null> <null> 50 19 YES <null> <null> <null> !
<null> NO
-PartsSupplier SYS Columns SearchType 12 string 20 <null> 0 10 0 <null> <null> <null> <null> 20 20 NO <null> <null> <null> !
<null> NO
-PartsSupplier SYS Columns Format 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 21 YES <null> <null> <null> !
<null> NO
-PartsSupplier SYS Columns DefaultValue 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 22 YES <null> <null> <null> !
<null> NO
-PartsSupplier SYS Columns JavaClass 12 string 500 <null> 0 10 0 <null> <null> <null> <null> 500 23 NO <null> <null> <null> !
<null> NO
-PartsSupplier SYS Columns Precision 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 24 NO <null> <null> <null> !
<null> NO
-PartsSupplier SYS Columns CharOctetLength 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 25 YES <null> <null> <null> !
<null> NO
-PartsSupplier SYS Columns Radix 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 26 NO <null> <null> <null> !
<null> NO
-PartsSupplier SYS Columns UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 27 NO <null> <null> <null> !
<null> NO
-PartsSupplier SYS Columns Description 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 28 YES <null> <null> <null> !
<null> NO
-PartsSupplier SYS Columns OID 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 29 NO <null> <null> <null> !
<null> NO
+PartsSupplier SYS Columns DistinctCount 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 20 YES <null> <null> <null> !
<null> NO
+PartsSupplier SYS Columns NullCount 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 21 YES <null> <null> <null> !
<null> NO
+PartsSupplier SYS Columns SearchType 12 string 20 <null> 0 10 0 <null> <null> <null> <null> 20 22 NO <null> <null> <null> !
<null> NO
+PartsSupplier SYS Columns Format 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 23 YES <null> <null> <null> !
<null> NO
+PartsSupplier SYS Columns DefaultValue 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 24 YES <null> <null> <null> !
<null> NO
+PartsSupplier SYS Columns JavaClass 12 string 500 <null> 0 10 0 <null> <null> <null> <null> 500 25 NO <null> <null> <null> !
<null> NO
+PartsSupplier SYS Columns Precision 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 26 NO <null> <null> <null> !
<null> NO
+PartsSupplier SYS Columns CharOctetLength 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 27 YES <null> <null> <null> !
<null> NO
+PartsSupplier SYS Columns Radix 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 28 NO <null> <null> <null> !
<null> NO
+PartsSupplier SYS Columns UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 29 NO <null> <null> <null> !
<null> NO
+PartsSupplier SYS Columns Description 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 30 YES <null> <null> <null> !
<null> NO
+PartsSupplier SYS Columns OID 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 31 NO <null> <null> <null> !
<null> NO
PartsSupplier SYS DataTypes Name 12 string 100 <null> 0 10 0 <null> <null> <null> <null> 100 1 NO <null> <null> <null> !
<null> NO
PartsSupplier SYS DataTypes IsStandard -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 2 YES <null> <null> <null> !
<null> NO
PartsSupplier SYS DataTypes IsPhysical -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 3 YES <null> <null> <null> !
<null> NO
@@ -249,7 +251,7 @@
PartsSupplier pg_catalog pg_user usename 12 string 4000 <null> 0 0 2 <null> <null> <null> <null> 0 2 <null> <null> <null> !
<null> NO
PartsSupplier pg_catalog pg_user usecreatedb -7 boolean 1 <null> 0 0 2 <null> <null> <null> <null> 0 3 <null> <null> <null> !
<null> NO
PartsSupplier pg_catalog pg_user usesuper -7 boolean 1 <null> 0 0 2 <null> <null> <null> <null> 0 4 <null> <null> <null> !
<null> NO
-Row Count : 249
+Row Count : 251
getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
VDBName 12 PartsSupplier java.lang.String TABLE_CAT string SYS Columns 255 255 0 false false false false 0 true true false false
SchemaName 12 PartsSupplier java.lang.String TABLE_SCHEM string SYS Columns 255 255 0 false true false true 1 false true true true
Modified: trunk/test-integration/common/src/test/resources/TestPartsDatabaseMetadata/testProcedureColumns.expected
===================================================================
--- trunk/test-integration/common/src/test/resources/TestPartsDatabaseMetadata/testProcedureColumns.expected 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/test-integration/common/src/test/resources/TestPartsDatabaseMetadata/testProcedureColumns.expected 2011-04-28 02:55:13 UTC (rev 3126)
@@ -8,7 +8,15 @@
PartsSupplier SYSADMIN refreshMatViewRow ViewName 1 12 string 4000 4000 0 10 0 <null> <null> <null> <null> <null> 1 NO refreshMatViewRow
PartsSupplier SYSADMIN refreshMatViewRow Key 1 2000 object 2147483647 2147483647 0 10 0 <null> <null> <null> <null> <null> 2 NO refreshMatViewRow
PartsSupplier SYSADMIN refreshMatViewRow RowsUpdated 5 4 integer 10 10 0 10 0 <null> <null> <null> <null> <null> 3 NO refreshMatViewRow
-Row Count : 8
+PartsSupplier SYSADMIN setColumnStats tableName 1 12 string 4000 4000 0 10 0 <null> <null> <null> <null> <null> 1 NO setColumnStats
+PartsSupplier SYSADMIN setColumnStats columnName 1 12 string 4000 4000 0 10 0 <null> <null> <null> <null> <null> 2 NO setColumnStats
+PartsSupplier SYSADMIN setColumnStats distinctCount 1 4 integer 10 10 0 10 1 <null> <null> <null> <null> <null> 3 YES setColumnStats
+PartsSupplier SYSADMIN setColumnStats nullCount 1 4 integer 10 10 0 10 1 <null> <null> <null> <null> <null> 4 YES setColumnStats
+PartsSupplier SYSADMIN setColumnStats max 1 12 string 4000 4000 0 10 1 <null> <null> <null> <null> <null> 5 YES setColumnStats
+PartsSupplier SYSADMIN setColumnStats min 1 12 string 4000 4000 0 10 1 <null> <null> <null> <null> <null> 6 YES setColumnStats
+PartsSupplier SYSADMIN setTableStats tableName 1 12 string 4000 4000 0 10 0 <null> <null> <null> <null> <null> 1 NO setTableStats
+PartsSupplier SYSADMIN setTableStats cardinality 1 4 integer 10 10 0 10 0 <null> <null> <null> <null> <null> 2 NO setTableStats
+Row Count : 16
getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
VDBName 12 PartsSupplier java.lang.String PROCEDURE_CAT string SYS ProcedureParams 255 255 0 false false false false 0 true true false false
SchemaName 12 PartsSupplier java.lang.String PROCEDURE_SCHEM string SYS ProcedureParams 255 255 0 false true false true 1 false true true true
Modified: trunk/test-integration/common/src/test/resources/TestPartsDatabaseMetadata/testProcedures.expected
===================================================================
--- trunk/test-integration/common/src/test/resources/TestPartsDatabaseMetadata/testProcedures.expected 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/test-integration/common/src/test/resources/TestPartsDatabaseMetadata/testProcedures.expected 2011-04-28 02:55:13 UTC (rev 3126)
@@ -3,7 +3,9 @@
PartsSupplier SYS getXMLSchemas <null> <null> <null> <null> 2 getXMLSchemas
PartsSupplier SYSADMIN refreshMatView <null> <null> <null> <null> 1 refreshMatView
PartsSupplier SYSADMIN refreshMatViewRow <null> <null> <null> <null> 1 refreshMatViewRow
-Row Count : 3
+PartsSupplier SYSADMIN setColumnStats <null> <null> <null> <null> 1 setColumnStats
+PartsSupplier SYSADMIN setTableStats <null> <null> <null> <null> 1 setTableStats
+Row Count : 5
getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
VDBName 12 PartsSupplier java.lang.String PROCEDURE_CAT string SYS Procedures 255 255 0 false false false false 0 true true false false
SchemaName 12 PartsSupplier java.lang.String PROCEDURE_SCHEM string SYS Procedures 255 255 0 false true false true 1 false true true true
Modified: trunk/test-integration/common/src/test/resources/TestSystemVirtualModel/testColumns.expected
===================================================================
--- trunk/test-integration/common/src/test/resources/TestSystemVirtualModel/testColumns.expected 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/test-integration/common/src/test/resources/TestSystemVirtualModel/testColumns.expected 2011-04-28 02:55:13 UTC (rev 3126)
@@ -1,255 +1,257 @@
-string string string string integer string string integer integer boolean boolean boolean boolean boolean boolean boolean string string string string string string string integer integer integer string !
string integer
-VDBName SchemaName TableName Name Position NameInSource DataType Scale Length IsLengthFixed SupportsSelect SupportsUpdates IsCaseSensitive IsSigned IsCurrency IsAutoIncremented NullType MinRange MaxRange SearchType Format DefaultValue JavaClass Precision CharOctetLength Radix UID !
Description OID
-PartsSupplier SYS DataTypes BaseType 17 <null> string 0 64 true true false true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 64 64 10 mmuuid:03beb57c-968b-4821-a6ae-cb1154cfadee !
<null> 74
-PartsSupplier SYSADMIN MatViews Cardinality 9 <null> integer 0 10 false true false true true false false Nullable <null> <null> Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:abe699b0-b6bc-4413-9172-0a21ca9664d2 !
<null> 26
-PartsSupplier SYS Tables Cardinality 9 <null> integer 0 10 false true false true true false false No Nulls <null> <null> All Except Like <null> <null> java.lang.Integer 10 10 10 mmuuid:24cdad3a-e8f7-4376-bb32-79f8bc8eeed2 !
<null> 155
-PartsSupplier SYS Columns CharOctetLength 25 <null> integer 0 10 true true false false false false false Nullable <null> <null> Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:de5def94-2804-4c91-91ed-26d630ce8afe !
<null> 53
-PartsSupplier SYS ReferenceKeyColumns DEFERRABILITY 14 <null> integer 0 10 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:88380f55-2cbd-4325-b9a3-9dcaa88a690e !
<null> 139
-PartsSupplier SYS ReferenceKeyColumns DELETE_RULE 11 <null> integer 0 10 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:9207f4df-a5ce-43bd-b3b2-fee57e459849 !
<null> 136
-PartsSupplier SYS Columns DataType 7 <null> string 0 100 true true false true true false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 100 100 10 mmuuid:9a8dc0d5-e65c-4032-a066-187f8d2e73ea !
<null> 35
-PartsSupplier SYS ProcedureParams DataType 5 <null> string 0 25 true true false true true false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 25 25 10 mmuuid:207a09af-65b8-405f-b1cb-537bc8632fa4 !
<null> 102
-PartsSupplier SYS Columns DefaultValue 22 <null> string 0 255 true true false false false false false Nullable <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:7e853988-356b-4c7c-83d4-a9f015bff279 !
<null> 50
-PartsSupplier SYS Columns Description 28 <null> string 0 255 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:74d73b53-b723-419e-9fea-de56408409ee !
<null> 56
-PartsSupplier SYS DataTypes Description 18 <null> string 0 255 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:b7d95ef6-63a3-441c-8de5-c98e2e577ea3 !
<null> 75
-PartsSupplier SYS Keys Description 5 <null> string 0 255 true true false false false false false Nullable <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:175e21b2-24c3-4677-a253-6d7cdb513a9a !
<null> 91
-PartsSupplier SYS ProcedureParams Description 15 <null> string 0 255 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 0 255 10 mmuuid:05ac4703-5c2c-4410-93b7-19b39d90c803 !
<null> 112
-PartsSupplier SYS Procedures Description 7 <null> string 0 255 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 225 255 10 mmuuid:fa0b5db7-acb1-4975-8410-d5d27df46040 !
<null> 120
-PartsSupplier SYS Schemas Description 5 <null> string 0 255 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:1cb99300-a527-4a26-b4e6-08ebd92a781d !
<null> 144
-PartsSupplier SYS Tables Description 10 <null> string 0 255 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:51605e41-5cb0-40ca-8c4a-4eca52780afc !
<null> 156
-PartsSupplier SYS ReferenceKeyColumns FKCOLUMN_NAME 8 <null> string 0 255 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:f4b2b32c-e411-45e6-a236-fec4718f0874 !
<null> 133
-PartsSupplier SYS ReferenceKeyColumns FKTABLE_CAT 5 <null> string 0 255 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 1 255 10 mmuuid:a0095da3-1258-44dc-bab9-33eacf886a28 !
<null> 130
-PartsSupplier SYS ReferenceKeyColumns FKTABLE_NAME 7 <null> string 0 255 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:53284aaa-4c07-4930-8a0e-5e2aaa2da5cb !
<null> 132
-PartsSupplier SYS ReferenceKeyColumns FKTABLE_SCHEM 6 <null> string 0 255 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:93a35adf-b6b1-4d9c-bdef-d336a84f478e !
<null> 131
-PartsSupplier SYS ReferenceKeyColumns FK_NAME 12 <null> string 0 255 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:a9ca7516-6898-419d-b1ad-7d174d946d07 !
<null> 137
-PartsSupplier SYS Columns Format 21 <null> string 0 255 true true false false false false false Nullable <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:172b133e-5bf1-4020-953c-de4446b1e64a !
<null> 49
-PartsSupplier SYS Columns IsAutoIncremented 16 <null> boolean 0 1 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.Boolean 1 1 10 mmuuid:0d41e284-f274-4fd1-8576-7696f4b758d0 !
<null> 44
-PartsSupplier SYS DataTypes IsAutoIncremented 10 <null> boolean 0 1 true true false true true false false No Nulls <null> <null> Searchable <null> ('0') java.lang.Boolean 1 1 10 mmuuid:2a1568e2-776a-474b-981f-040a6ad63361 !
<null> 67
-PartsSupplier SYS Columns IsCaseSensitive 13 <null> boolean 0 1 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.Boolean 1 1 10 mmuuid:21ee166a-b462-41a1-b88d-dc79f63d6e17 !
<null> 41
-PartsSupplier SYS DataTypes IsCaseSensitive 11 <null> boolean 0 1 true true false true false false false No Nulls <null> <null> Searchable <null> ('0') java.lang.Boolean 1 1 10 mmuuid:1468aaf2-6481-4d10-9554-44d0363fe571 !
<null> 68
-PartsSupplier SYS Columns IsCurrency 15 <null> boolean 0 1 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.Boolean 1 1 10 mmuuid:b28a2963-36e0-4b4a-a8f8-a2c06f2b440a !
<null> 43
-PartsSupplier SYS Keys IsIndexed 8 <null> boolean 0 1 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.Boolean 1 1 10 mmuuid:ea96cb7c-2dcf-453c-b83a-1aaa921d8f92 !
<null> 94
-PartsSupplier SYS Columns IsLengthFixed 10 <null> boolean 0 1 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.Boolean 1 1 10 mmuuid:571aa4ce-3254-4a2b-aa48-1cb23a0c47ed !
<null> 38
-PartsSupplier SYS Tables IsMaterialized 12 <null> boolean 0 0 false true true false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.Boolean 0 0 10 mmuuid:89265cba-ab85-48c2-960a-a5a9594ba6d0 !
<null> 158
-PartsSupplier SYS DataTypes IsPhysical 3 <null> boolean 0 1 true true false true true false false Nullable <null> <null> Searchable <null> <null> java.lang.Boolean 1 1 10 mmuuid:983714a2-bd0b-4fad-b4e8-dfb7832e9c4b !
<null> 60
-PartsSupplier SYS Schemas IsPhysical 3 <null> boolean 0 1 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.Boolean 1 1 10 mmuuid:bab257d7-cced-4605-9b40-8ca6c078aca7 !
<null> 142
-PartsSupplier SYS Tables IsPhysical 6 <null> boolean 0 1 true true false true false false false No Nulls <null> <null> Searchable <null> <null> java.lang.Boolean 1 1 10 mmuuid:e27712f6-a0a6-452e-848d-9de77691e939 !
<null> 152
-PartsSupplier SYS Columns IsSigned 14 <null> boolean 0 1 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.Boolean 1 1 10 mmuuid:36be2afa-8ebc-4af8-acc5-a887cf2b5a86 !
<null> 42
-PartsSupplier SYS DataTypes IsSigned 9 <null> boolean 0 1 true true false true false false false No Nulls <null> <null> Searchable <null> ('0') java.lang.Boolean 1 1 10 mmuuid:235cea48-b2b9-41d5-b296-8ab9c649b6e7 !
<null> 66
-PartsSupplier SYS DataTypes IsStandard 2 <null> boolean 0 1 true true false true true false false Nullable <null> <null> Searchable <null> <null> java.lang.Boolean 1 1 10 mmuuid:02f27c5d-af55-4677-b91b-8690793671b2 !
<null> 59
-PartsSupplier SYS Tables IsSystem 11 <null> boolean 0 1 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.Boolean 1 1 10 mmuuid:9fa7987c-7dc8-4102-9cc0-5658d5b46382 !
<null> 157
-PartsSupplier SYS Columns JavaClass 23 <null> string 0 500 true true false true false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 500 500 10 mmuuid:6b8d5df5-7bd2-425c-8b2b-e427e026ef66 !
<null> 51
-PartsSupplier SYS DataTypes JavaClass 5 <null> string 0 500 true true false true false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 500 500 10 mmuuid:4c68ef90-8042-44ab-896a-bb3890a8fe04 !
<null> 62
-PartsSupplier SYS ReferenceKeyColumns KEY_SEQ 9 <null> short 0 5 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.Short 5 5 10 mmuuid:4884ac83-84ed-4b67-9f1a-bd79c0199269 !
<null> 134
-PartsSupplier SYS KeyColumns KeyName 5 <null> string 0 255 true true false false false false false Nullable <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:da4bef58-83f4-4b88-8bb0-2dc8990be539 !
<null> 81
-PartsSupplier SYS KeyColumns KeyType 6 <null> string 0 20 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 20 20 10 mmuuid:df9e15e6-ab77-486d-bfe0-0adc378aa99d !
<null> 82
-PartsSupplier SYS Columns Length 9 <null> integer 0 10 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:b36ea0f6-cbff-4049-bc9c-8ec9928be048 !
<null> 37
-PartsSupplier SYSADMIN MatViews LoadState 7 <null> string 0 255 false true false true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 0 255 10 mmuuid:c67365c3-f252-40f4-aae6-8971d3b1b153 !
<null> 24
-PartsSupplier SYS Columns MaxRange 19 <null> string 0 50 true true false false false false false Nullable <null> <null> Searchable <null> <null> java.lang.String 50 50 10 mmuuid:0b0df4a5-7de5-4315-94f7-22c84958302e !
<null> 47
-PartsSupplier SYS Columns MinRange 18 <null> string 0 50 true true false false false false false Nullable <null> <null> Searchable <null> <null> java.lang.String 50 50 10 mmuuid:dba0f97d-fab5-45f6-a1eb-3459ab3fcc74 !
<null> 46
-PartsSupplier SYSADMIN MatViews Name 3 <null> string 0 255 false true false true true false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 0 255 10 mmuuid:0f56d35c-e450-4b4f-86b0-bdb4f1015c57 !
<null> 20
-PartsSupplier SYS Columns Name 4 <null> string 0 255 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:d1f44a6d-3e39-4251-b873-1280c2b035b3 !
<null> 32
-PartsSupplier SYS DataTypes Name 1 <null> string 0 100 true true false true true false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 100 100 10 mmuuid:17f7de33-e6f0-4b9c-b55e-a87f6b7bb9b3 !
<null> 58
-PartsSupplier SYS KeyColumns Name 4 <null> string 0 255 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:08bda0c7-5f66-4fed-8285-d74b63eeb0e2 !
<null> 80
-PartsSupplier SYS Keys Name 4 <null> string 0 255 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:149de302-2107-45ca-839d-fc0dd1e7d7f4 !
<null> 90
-PartsSupplier SYS ProcedureParams Name 4 <null> string 0 255 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:2bf20c6f-5a95-436d-8f30-a24d164e77a4 !
<null> 101
-PartsSupplier SYS Procedures Name 3 <null> string 0 255 true true false true false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:bd17e98a-c40a-43b1-93ac-88d62937c051 !
<null> 116
-PartsSupplier SYS Properties Name 1 <null> string 0 255 true true false true true false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:ba007c56-04b6-4981-ab89-3fdd33ff0de8 !
<null> 122
-PartsSupplier SYS Schemas Name 2 <null> string 0 255 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 0 255 10 mmuuid:654112f8-bb4c-4453-9e4d-f3a96fba61ec !
<null> 141
-PartsSupplier SYS Tables Name 3 <null> string 0 255 true true false true false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:ef487cc2-1214-439c-af6e-da431df00d2c !
<null> 149
-PartsSupplier SYS VirtualDatabases Name 1 <null> string 0 255 true true false true false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:42fa1249-8b24-4aae-a252-0a347db6ec30 !
<null> 160
-PartsSupplier SYS Columns NameInSource 6 <null> string 0 255 true true false false false false false Nullable <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:fac72c6e-41dc-4a1b-8af3-f0796690d9cc !
<null> 34
-PartsSupplier SYS Keys NameInSource 6 <null> string 0 255 true true false false false false false Nullable <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:a52a6169-99e0-4b7e-9dc6-3a93ffa6094a !
<null> 92
-PartsSupplier SYS Procedures NameInSource 4 <null> string 0 255 true true false false false false false Nullable <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:a4e7a0fd-c340-49a9-9ac0-8328caaffda8 !
<null> 117
-PartsSupplier SYS Tables NameInSource 5 <null> string 0 255 true true false true false false false Nullable <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:1f036fb0-b841-450c-8462-986cdd57e921 !
<null> 151
-PartsSupplier SYS Columns NullType 17 <null> string 0 20 true true false true false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 20 20 10 mmuuid:4d83bdbb-a7ce-44cc-a201-021a517d3c1a !
<null> 45
-PartsSupplier SYS DataTypes NullType 8 <null> string 0 20 true true false true false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 20 20 10 mmuuid:278b0534-1164-495e-a8c6-de45e0ff53a4 !
<null> 65
-PartsSupplier SYS ProcedureParams NullType 13 <null> string 0 10 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 10 10 10 mmuuid:d887c203-6bf5-462b-b2f0-f5302e2f4bcd !
<null> 110
-PartsSupplier SYS Columns OID 29 <null> integer 0 10 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:b9e5ba07-4a8d-4589-8aa9-597ae70d18a4 !
<null> 57
-PartsSupplier SYS DataTypes OID 19 <null> integer 0 10 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:a3c41050-80b6-4fb5-9c6b-5e20c0839cda !
<null> 76
-PartsSupplier SYS KeyColumns OID 10 <null> integer 0 10 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:207d123c-a3ff-4e4e-85ae-6f3b0debfc06 !
<null> 86
-PartsSupplier SYS Keys OID 11 <null> integer 0 10 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:d781f893-bdf3-4dc1-956f-7e7b1a138c99 !
<null> 97
-PartsSupplier SYS ProcedureParams OID 16 <null> integer 0 10 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:72125f93-846f-413c-82e1-fa3227fb043f !
<null> 113
-PartsSupplier SYS Procedures OID 8 <null> integer 0 10 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:c80c02d2-7174-4cc4-b347-e921a80f568c !
<null> 121
-PartsSupplier SYS Properties OID 4 <null> integer 0 10 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:54c1a7dc-5ca8-4d34-8672-e76d63fe3b95 !
<null> 125
-PartsSupplier SYS Schemas OID 7 <null> integer 0 10 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:31746839-e019-4321-90cb-a557e1d4754e !
<null> 146
-PartsSupplier SYS Tables OID 13 <null> integer 0 10 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:dae79c58-b381-4275-8c1c-b299d732d355 !
<null> 159
-PartsSupplier SYS ProcedureParams Optional 8 <null> boolean 0 1 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.Boolean 1 1 10 mmuuid:4033f891-5ef5-4a75-8a50-bd1d021e43ad !
<null> 105
-PartsSupplier PartsSupplier PARTSSUPPLIER.PARTS PART_COLOR 3 PART_COLOR string 0 30 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 0 30 10 mmuuid:015c0d00-73ff-1edc-a81c-ecf397b10590 !
<null> 3
-PartsSupplier PartsSupplier PARTSSUPPLIER.PARTS PART_ID 1 PART_ID string 0 4 true true true true true false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 0 4 10 mmuuid:fadcd7c0-73fe-1edc-a81c-ecf397b10590 !
<null> 1
-PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS PART_ID 2 PART_ID string 0 4 true true true true true false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 0 4 10 mmuuid:3fc400c0-73ff-1edc-a81c-ecf397b10590 !
<null> 10
-PartsSupplier PartsSupplier PARTSSUPPLIER.PARTS PART_NAME 2 PART_NAME string 0 255 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 0 255 10 mmuuid:0067e900-73ff-1edc-a81c-ecf397b10590 !
<null> 2
-PartsSupplier PartsSupplier PARTSSUPPLIER.PARTS PART_WEIGHT 4 PART_WEIGHT string 0 255 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 0 255 10 mmuuid:015c0d01-73ff-1edc-a81c-ecf397b10590 !
<null> 4
-PartsSupplier SYS ReferenceKeyColumns PKCOLUMN_NAME 4 <null> string 0 255 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:0125a80a-95f9-486f-aa90-debb21cb5f1b !
<null> 129
-PartsSupplier SYS ReferenceKeyColumns PKTABLE_CAT 1 <null> string 0 255 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 1 255 10 mmuuid:f615a661-2c36-4ab1-b72b-5e13e99e052c !
<null> 126
-PartsSupplier SYS ReferenceKeyColumns PKTABLE_NAME 3 <null> string 0 255 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:6d420bc2-0f85-4da9-833d-d71b428b0743 !
<null> 128
-PartsSupplier SYS ReferenceKeyColumns PKTABLE_SCHEM 2 <null> string 0 255 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:ef7b3b79-fb51-42ef-a723-080ed0a6e3bc !
<null> 127
-PartsSupplier SYS ReferenceKeyColumns PK_NAME 13 <null> string 0 255 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:ac210a6d-4de6-4d71-aa9b-e3d34baca81a !
<null> 138
-PartsSupplier SYS Columns Position 5 <null> integer 0 10 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:dbc8cd09-1b47-43c5-82ec-aba525b85cc4 !
<null> 33
-PartsSupplier SYS KeyColumns Position 9 <null> integer 0 10 true true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:92a4849c-ed0e-4f5f-a108-d7d71a5aba25 !
<null> 85
-PartsSupplier SYS ProcedureParams Position 6 <null> integer 0 10 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:5fdefd17-65f4-4350-9ee0-0ed3c34d10ae !
<null> 103
-PartsSupplier SYS Columns Precision 24 <null> integer 0 10 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:db3d49e2-fe1d-438b-8d07-847bf58506ab !
<null> 52
-PartsSupplier SYS DataTypes Precision 12 <null> integer 0 10 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:8673c810-7162-4331-ba0b-6fc3530d2d1c !
<null> 69
-PartsSupplier SYS ProcedureParams Precision 9 <null> integer 0 10 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:00fe7cad-0a83-42f0-90f2-d6a9584916b2 !
<null> 106
-PartsSupplier SYS Schemas PrimaryMetamodelURI 6 <null> string 0 255 false true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:eadfaba5-ce44-4529-816f-6af94666baec !
<null> 145
-PartsSupplier SYS ProcedureParams ProcedureName 3 <null> string 0 255 true true false true false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:8081b3a6-fc79-42fd-b7c9-a19d682a1658 !
<null> 100
-PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS QUANTITY 3 QUANTITY short 0 0 true true true false true false false Nullable <null> <null> All Except Like <null> <null> java.lang.Short 3 0 10 mmuuid:3fc400c1-73ff-1edc-a81c-ecf397b10590 !
<null> 11
-PartsSupplier SYS Columns Radix 26 <null> integer 0 10 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:43a6124c-972f-4c4c-af05-24080c2a8ad7 !
<null> 54
-PartsSupplier SYS DataTypes Radix 13 <null> integer 0 10 true true false false false false false Nullable <null> <null> Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:967ab8fd-3226-4a78-8cf2-2eb7fbf2981a !
<null> 70
-PartsSupplier SYS ProcedureParams Radix 12 <null> integer 0 10 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:8df37c99-3b12-4789-8128-4aa496f895c4 !
<null> 109
-PartsSupplier SYS KeyColumns RefKeyUID 7 <null> string 0 50 true true false false false false false Nullable <null> <null> Searchable <null> <null> java.lang.String 50 50 10 mmuuid:aafbdf50-25aa-427b-b322-7cb36094a1e2 !
<null> 83
-PartsSupplier SYS Keys RefKeyUID 9 <null> string 0 50 true true false false false false false Nullable <null> <null> Searchable <null> <null> java.lang.String 50 50 10 mmuuid:1cf4c5ad-5932-47ec-8593-385b75bfeba8 !
<null> 95
-PartsSupplier SYS Procedures ReturnsResults 5 <null> boolean 0 1 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.Boolean 1 1 10 mmuuid:b01164c8-dd10-410d-a91b-fcb2fc0450ce !
<null> 118
-PartsSupplier SYS DataTypes RuntimeType 16 <null> string 0 64 true true false true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 64 64 10 mmuuid:3c7bc9d0-b73f-49a0-b9ab-dc97a4d2a124 !
<null> 73
-PartsSupplier PartsSupplier PARTSSUPPLIER.SHIP_VIA SHIPPER_ID 1 SHIPPER_ID short 0 0 true true true false true false false No Nulls <null> <null> All Except Like <null> <null> java.lang.Short 2 0 10 mmuuid:121bc540-73ff-1edc-a81c-ecf397b10590 !
<null> 5
-PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS SHIPPER_ID 4 SHIPPER_ID short 0 0 true true true false true false false Nullable <null> <null> All Except Like <null> <null> java.lang.Short 2 0 10 mmuuid:3fc400c2-73ff-1edc-a81c-ecf397b10590 !
<null> 12
-PartsSupplier PartsSupplier PARTSSUPPLIER.SHIP_VIA SHIPPER_NAME 2 SHIPPER_NAME string 0 30 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 0 30 10 mmuuid:130fe940-73ff-1edc-a81c-ecf397b10590 !
<null> 6
-PartsSupplier PartsSupplier PARTSSUPPLIER.STATUS STATUS_ID 1 STATUS_ID short 0 0 true true true false true false false No Nulls <null> <null> All Except Like <null> <null> java.lang.Short 2 0 10 mmuuid:201d9600-73ff-1edc-a81c-ecf397b10590 !
<null> 7
-PartsSupplier PartsSupplier PARTSSUPPLIER.STATUS STATUS_NAME 2 STATUS_NAME string 0 30 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 0 30 10 mmuuid:201d9601-73ff-1edc-a81c-ecf397b10590 !
<null> 8
-PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER SUPPLIER_CITY 4 SUPPLIER_CITY string 0 30 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 0 30 10 mmuuid:2fe92a40-73ff-1edc-a81c-ecf397b10590 !
<null> 16
-PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS SUPPLIER_ID 1 SUPPLIER_ID string 0 10 false true true true true false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 0 10 10 mmuuid:3ecfdcc0-73ff-1edc-a81c-ecf397b10590 !
<null> 9
-PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER SUPPLIER_ID 1 SUPPLIER_ID string 0 10 false true true true true false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 0 10 10 mmuuid:2f044880-73ff-1edc-a81c-ecf397b10590 !
<null> 13
-PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER SUPPLIER_NAME 2 SUPPLIER_NAME string 0 30 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 0 30 10 mmuuid:2f044881-73ff-1edc-a81c-ecf397b10590 !
<null> 14
-PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER SUPPLIER_STATE 5 SUPPLIER_STATE string 0 2 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 0 2 10 mmuuid:2fe92a41-73ff-1edc-a81c-ecf397b10590 !
<null> 17
-PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER SUPPLIER_STATUS 3 SUPPLIER_STATUS short 0 0 true true true false true false false Nullable <null> <null> All Except Like <null> <null> java.lang.Short 2 0 10 mmuuid:2f044882-73ff-1edc-a81c-ecf397b10590 !
<null> 15
-PartsSupplier SYS Columns Scale 8 <null> integer 0 10 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:cc6c6113-8d70-40c8-84c0-94e17c14e22e !
<null> 36
-PartsSupplier SYS DataTypes Scale 6 <null> integer 0 10 true true false false false false false Nullable <null> <null> Searchable <null> (0) java.lang.Integer 10 10 10 mmuuid:e8655204-e97a-45cd-909b-1e37731e9546 !
<null> 63
-PartsSupplier SYS ProcedureParams Scale 11 <null> integer 0 10 true true true false false false false No Nulls <null> <null> Searchable <null> (0) java.lang.Integer 10 10 10 mmuuid:360c8b1d-4b3d-42fd-952c-bf5763cad69e !
<null> 108
-PartsSupplier SYSADMIN MatViews SchemaName 2 <null> string 0 255 false true false true true false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 0 255 10 mmuuid:2738c484-d24d-4c40-b0b7-e734afb03450 !
<null> 19
-PartsSupplier SYS Columns SchemaName 2 <null> string 0 255 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 0 255 10 mmuuid:859288c9-cd78-4407-90fc-61b5d310e2ab !
<null> 30
-PartsSupplier SYS KeyColumns SchemaName 2 <null> string 0 255 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 0 255 10 mmuuid:787be966-cf12-4956-907f-a8e6dc1009dc !
<null> 78
-PartsSupplier SYS Keys SchemaName 2 <null> string 0 255 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 0 255 10 mmuuid:4a7fc059-208e-4f98-b6ef-cb7c6102a327 !
<null> 88
-PartsSupplier SYS ProcedureParams SchemaName 2 <null> string 0 255 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 0 255 10 mmuuid:88497911-619c-4ca8-b482-8885d940706a !
<null> 99
-PartsSupplier SYS Procedures SchemaName 2 <null> string 0 255 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 0 255 10 mmuuid:53a84865-334e-4750-b343-de2411d56e3e !
<null> 115
-PartsSupplier SYS Tables SchemaName 2 <null> string 0 255 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 0 255 10 mmuuid:95bd960c-fd84-44c9-9831-692376f69b46 !
<null> 148
-PartsSupplier SYS Columns SearchType 20 <null> string 0 20 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 20 20 10 mmuuid:3037138a-bb20-4485-ba01-75bc20b1a532 !
<null> 48
-PartsSupplier SYS DataTypes SearchType 14 <null> string 0 20 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 20 20 10 mmuuid:d8494fa3-40e4-44cd-b0d8-da5c83685a75 !
<null> 71
-PartsSupplier SYS Columns SupportsSelect 11 <null> boolean 0 1 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.Boolean 1 1 10 mmuuid:c2a50f93-0040-41ec-ad7b-e8511296555f !
<null> 39
-PartsSupplier SYS Columns SupportsUpdates 12 <null> boolean 0 1 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.Boolean 1 1 10 mmuuid:fab660d1-36bf-4a5b-bbe6-9a543e0ebd76 !
<null> 40
-PartsSupplier SYS Tables SupportsUpdates 7 <null> boolean 0 1 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.Boolean 1 1 10 mmuuid:5144d230-2b0e-4255-b321-65b9f6f6f76c !
<null> 153
-PartsSupplier SYS Columns TableName 3 <null> string 0 255 true true false true false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:2c09c9d1-2f25-45de-81cf-eeb2a5157d34 !
<null> 31
-PartsSupplier SYS KeyColumns TableName 3 <null> string 0 2048 true true false true false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 2048 2048 10 mmuuid:c24fad72-0c0d-4260-96ae-f188ad77b137 !
<null> 79
-PartsSupplier SYS Keys TableName 3 <null> string 0 2048 true true false true false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 2048 2048 10 mmuuid:7d9540bd-b51f-4206-8c33-b39c5ba8bb8b !
<null> 89
-PartsSupplier SYSADMIN MatViews TargetName 5 <null> string 0 4000 false true false true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 0 4000 10 mmuuid:d2831595-d6f5-4cca-aa5d-2ff2530d0ab1 !
<null> 22
-PartsSupplier SYSADMIN MatViews TargetSchemaName 4 <null> string 0 255 false true false true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 0 255 10 mmuuid:a95dba1c-283e-4f48-9671-34cecdb7d0e3 !
<null> 21
-PartsSupplier SYS Keys Type 7 <null> string 0 20 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 20 20 10 mmuuid:29e73c18-afec-43a9-81ab-7378d6daf20b !
<null> 93
-PartsSupplier SYS ProcedureParams Type 7 <null> string 0 100 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 100 100 10 mmuuid:76a1981b-1226-4a55-9acf-82a061cc8642 !
<null> 104
-PartsSupplier SYS Tables Type 4 <null> string 0 20 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 20 20 10 mmuuid:4814a0af-4e8f-4f55-9b25-3148d90d3d9b !
<null> 150
-PartsSupplier SYS DataTypes TypeLength 7 <null> integer 0 10 true true false false false false false No Nulls <null> <null> Searchable <null> (0) java.lang.Integer 10 10 10 mmuuid:0668382a-f9c3-4507-8b0f-df65a2ebbf2f !
<null> 64
-PartsSupplier SYS ProcedureParams TypeLength 10 <null> integer 0 10 true true false false false false false No Nulls <null> <null> Searchable <null> (0) java.lang.Integer 10 10 10 mmuuid:791d7a29-8fc5-4735-9144-1accc114b58e !
<null> 107
-PartsSupplier SYS DataTypes TypeName 4 <null> string 0 100 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 100 100 10 mmuuid:48081cdd-9e90-4440-a956-4a32af96d7f4 !
<null> 61
-PartsSupplier SYS Columns UID 27 <null> string 0 50 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 50 50 10 mmuuid:5f491c75-769b-4908-9f68-2a9a486607bb !
<null> 55
-PartsSupplier SYS DataTypes UID 15 <null> string 0 50 true true false false true false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 50 50 10 mmuuid:dd57f577-ffc4-4b55-8f7f-355b9ea3ce37 !
<null> 72
-PartsSupplier SYS KeyColumns UID 8 <null> string 0 50 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 50 50 10 mmuuid:0d994a45-4f52-4b79-9b31-7ef22331fee2 !
<null> 84
-PartsSupplier SYS Keys UID 10 <null> string 0 50 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 50 50 10 mmuuid:782218d1-5337-48c6-9070-0aafd4c6cd20 !
<null> 96
-PartsSupplier SYS ProcedureParams UID 14 <null> string 0 50 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 0 50 10 mmuuid:a278de2e-89f1-4281-9e63-54aebb6062ce !
<null> 111
-PartsSupplier SYS Procedures UID 6 <null> string 0 50 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 50 50 10 mmuuid:de9df25a-c886-46e0-ae3a-8eb6792e43f4 !
<null> 119
-PartsSupplier SYS Properties UID 3 <null> string 0 50 true true false false true false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 50 50 10 mmuuid:b333969a-83e0-4010-9463-9a0088da6c83 !
<null> 124
-PartsSupplier SYS Schemas UID 4 <null> string 0 50 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 50 50 10 mmuuid:ad232e4d-9c01-4d0c-bc57-0459d9db918a !
<null> 143
-PartsSupplier SYS Tables UID 8 <null> string 0 50 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 50 50 10 mmuuid:6afe3737-26f9-43a8-88db-86531b5dc66c !
<null> 154
-PartsSupplier SYS ReferenceKeyColumns UPDATE_RULE 10 <null> integer 0 10 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:30d5ae74-b19e-4186-97e1-aeff5801e44f !
<null> 135
-PartsSupplier SYSADMIN MatViews Updated 8 <null> timestamp 0 0 false true false true true false false Nullable <null> <null> Searchable <null> <null> java.sql.Timestamp 0 0 10 mmuuid:33970a66-7ad4-411f-a6c4-545746747fe6 !
<null> 25
-PartsSupplier SYSADMIN MatViews VDBName 1 <null> string 0 255 false true false true true false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 0 255 10 mmuuid:c1ce9841-e272-4839-8c78-777a5f68d241 !
<null> 18
-PartsSupplier SYS Columns VDBName 1 <null> string 0 255 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:83f19a81-1243-4751-8c99-daddbf37b1d7 !
<null> 29
-PartsSupplier SYS KeyColumns VDBName 1 <null> string 0 255 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:f062eb9c-4854-47fb-b7bd-a4e23c782b62 !
<null> 77
-PartsSupplier SYS Keys VDBName 1 <null> string 0 255 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:5785b523-7da3-42c1-8920-66daa1f7fa1d !
<null> 87
-PartsSupplier SYS ProcedureParams VDBName 1 <null> string 0 255 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:f832f316-2403-43fa-9ccc-c3ab9d38acca !
<null> 98
-PartsSupplier SYS Procedures VDBName 1 <null> string 0 255 true true false false false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:1d664747-4a95-4605-8b28-381bed3121f1 !
<null> 114
-PartsSupplier SYS Schemas VDBName 1 <null> string 0 255 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 0 255 10 mmuuid:73dbf95b-a283-4f0a-81b9-9b98e09c2906 !
<null> 140
-PartsSupplier SYS Tables VDBName 1 <null> string 0 255 false true true true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 0 255 10 mmuuid:58de905f-9d64-4831-a985-da6d082ff709 !
<null> 147
-PartsSupplier SYSADMIN MatViews Valid 6 <null> boolean 0 0 false true false true true false false Nullable <null> <null> Searchable <null> <null> java.lang.Boolean 0 0 10 mmuuid:13098912-bce2-4842-9ea9-b162fcd7383e !
<null> 23
-PartsSupplier SYS Properties Value 2 <null> string 0 255 true true false true true false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 255 255 10 mmuuid:c917257d-06b7-41dd-a6cb-44c0ff0f897e !
<null> 123
-PartsSupplier SYS VirtualDatabases Version 2 <null> string 0 50 true true false true false false false No Nulls <null> <null> Searchable <null> <null> java.lang.String 50 50 10 mmuuid:c876d749-a512-4810-9910-3034ca524c45 !
<null> 161
-PartsSupplier pg_catalog pg_attrdef adbin 3 <null> string 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.String 0 0 0 mmuid:e22c521a-e208-4181-9dbd-89f5de7014b9 !
<null> 223
-PartsSupplier pg_catalog pg_attrdef adnum 2 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:e9b278d4-49af-442f-9a5a-b699fe3b102b !
<null> 222
-PartsSupplier pg_catalog pg_attrdef adrelid 1 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:4589389f-4abd-42a6-818f-ff1f2a085dfb !
<null> 221
-PartsSupplier pg_catalog pg_attrdef adsrc 4 <null> string 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.String 0 0 0 mmuid:492dd834-907f-429b-aa6e-958ad65204c6 !
<null> 224
-PartsSupplier pg_catalog pg_am amname 2 <null> string 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.String 0 0 0 mmuid:da4b747e-7d87-403a-8309-2cdf1399031b !
<null> 201
-PartsSupplier pg_catalog pg_attribute atthasdef 10 <null> boolean 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Boolean 0 0 0 mmuid:5868e549-4bbe-479e-bc7e-632c05cc2329 !
<null> 182
-PartsSupplier pg_catalog pg_attribute attisdropped 9 <null> boolean 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Boolean 0 0 0 mmuid:7beb42a9-dfe6-43de-98b6-7e8948b1a666 !
<null> 181
-PartsSupplier pg_catalog pg_attribute attlen 5 <null> short 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Short 0 0 0 mmuid:d1214249-95cd-426f-b8f6-4bf68c0504c7 !
<null> 177
-PartsSupplier pg_catalog pg_attribute attname 3 <null> string 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.String 0 0 0 mmuid:6064d149-4102-4c2d-9132-582342f25e90 !
<null> 175
-PartsSupplier pg_catalog matpg_relatt attname 3 <null> string 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.String 0 0 0 mmuid:5cfb2b62-a912-4bfb-bf4f-51e107fe210c !
<null> 240
-PartsSupplier pg_catalog pg_attribute attnotnull 8 <null> boolean 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Boolean 0 0 0 mmuid:91ce8bde-8570-4867-be17-80acfa9275a6 !
<null> 180
-PartsSupplier pg_catalog pg_attribute attnum 6 <null> short 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Short 0 0 0 mmuid:141fd911-f2dd-4edd-8f08-ad8a67ffd0fb !
<null> 178
-PartsSupplier pg_catalog matpg_relatt attnum 2 <null> short 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Short 0 0 0 mmuid:0b0894ba-e1ea-4eaf-bcd2-ea9ebd05e47d !
<null> 239
-PartsSupplier pg_catalog pg_attribute attrelid 2 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:3be6b5de-2287-4279-93f3-4f5064799118 !
<null> 174
-PartsSupplier pg_catalog matpg_relatt attrelid 1 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:5c7bf056-ecc5-41ea-a122-7a4b1de9908a !
<null> 238
-PartsSupplier pg_catalog pg_attribute atttypid 4 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:99782493-1cce-4e14-9c1b-4de7ce50e2c8 !
<null> 176
-PartsSupplier pg_catalog pg_attribute atttypmod 7 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:2e2bae3c-ab93-49f5-b96c-7a7b9d66782d !
<null> 179
-PartsSupplier pg_catalog matpg_relatt autoinc 6 <null> boolean 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Boolean 0 0 0 mmuid:23454408-0347-40d2-a3f9-3faa664fb5e9 !
<null> 243
-PartsSupplier SYSADMIN VDBResources contents 2 <null> blob 0 0 false true false true true false false Nullable <null> <null> Searchable <null> <null> org.teiid.core.types.BlobType 0 0 10 mmuuid:f9421669-3564-451d-9293-96c1e5e72c4f !
<null> 28
-PartsSupplier pg_catalog pg_database datacl 7 <null> object 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Object 0 0 0 mmuid:8b993c11-de2b-48bc-beb1-3e44c46811b4 !
<null> 231
-PartsSupplier pg_catalog pg_database datallowconn 5 <null> char 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Character 0 0 0 mmuid:5c9d54b2-433f-443a-85ce-821f42ed109e !
<null> 229
-PartsSupplier pg_catalog pg_database datconfig 6 <null> object 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Object 0 0 0 mmuid:4b5beb14-03a0-4652-9d6f-5f8cc74d470c !
<null> 230
-PartsSupplier pg_catalog pg_database datdba 8 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:36db343d-e99a-427c-a4e2-763a720ce4a4 !
<null> 232
-PartsSupplier pg_catalog pg_database datlastsysoid 4 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:c2bdf40c-ec58-439c-a403-7adf604ceadd !
<null> 228
-PartsSupplier pg_catalog pg_database datname 2 <null> string 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.String 0 0 0 mmuid:1aedd02c-5801-41e7-accd-da1f257c26e8 !
<null> 226
-PartsSupplier pg_catalog pg_database dattablespace 9 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:28d034eb-6f39-402f-b642-9c9560e57247 !
<null> 233
-PartsSupplier pg_catalog pg_database encoding 3 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:3b621b25-171c-405b-8bf9-635cf93f2273 !
<null> 227
-PartsSupplier pg_catalog pg_index indexprs 7 <null> string 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.String 0 0 0 mmuid:1e6dbecd-9a2d-4aef-afbe-665de7acb9d6 !
<null> 198
-PartsSupplier pg_catalog pg_index indexrelid 2 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:8709e084-48df-417d-b3f8-f4e9b7d8802b !
<null> 193
-PartsSupplier pg_catalog pg_index indisclustered 4 <null> boolean 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Boolean 0 0 0 mmuid:9f873e0f-903d-4c9d-8c37-1073b5ec4c67 !
<null> 195
-PartsSupplier pg_catalog pg_index indisprimary 6 <null> boolean 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Boolean 0 0 0 mmuid:9ea3b6d2-b27b-4bb1-a99d-b703c3308384 !
<null> 197
-PartsSupplier pg_catalog pg_index indisunique 5 <null> boolean 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Boolean 0 0 0 mmuid:a52c714d-dfe9-406c-906b-fadd53ac4e98 !
<null> 196
-PartsSupplier pg_catalog pg_index indkey 8 <null> string 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.String 0 0 0 mmuid:347ec08c-6b41-41d0-8475-031ce7d99ac0 !
<null> 199
-PartsSupplier pg_catalog pg_index indrelid 3 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:16998907-e1dd-447e-898d-780994d30619 !
<null> 194
-PartsSupplier pg_catalog matpg_datatype name 3 <null> string 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.String 0 0 0 mmuid:b4e04928-9a59-4718-a7f1-3a60bcae7449 !
<null> 247
-PartsSupplier pg_catalog pg_namespace nspname 2 <null> string 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.String 0 0 0 mmuid:0e513513-b35a-48be-975d-5dbed6ace7e9 !
<null> 163
-PartsSupplier pg_catalog matpg_relatt nspname 5 <null> string 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.String 0 0 0 mmuid:f1998229-2c1a-47b7-8f46-9dda81446db6 !
<null> 242
-PartsSupplier pg_catalog pg_namespace oid 1 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:688e5112-4083-4b67-b42c-62d9a614c59a !
<null> 162
-PartsSupplier pg_catalog pg_class oid 1 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:c1e736ac-c9d4-4026-8904-23c90e6eb1c0 !
<null> 164
-PartsSupplier pg_catalog pg_attribute oid 1 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:f735e545-a81c-4ee2-84d0-3ea35d4083a2 !
<null> 173
-PartsSupplier pg_catalog pg_type oid 1 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:b6f64d16-b147-459d-8e84-1bd3048fb900 !
<null> 183
-PartsSupplier pg_catalog pg_index oid 1 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:83ae2247-7eec-459f-b037-ffd3cdca0627 !
<null> 192
-PartsSupplier pg_catalog pg_am oid 1 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:3c67619c-7d8f-4378-b7e9-84a0451ea5e5 !
<null> 200
-PartsSupplier pg_catalog pg_proc oid 1 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:bdf3ee1e-b5b7-48ab-b43c-4bbb2c8ae1e2 !
<null> 202
-PartsSupplier pg_catalog pg_trigger oid 1 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:635b6634-632c-43c9-8cc7-bcaa016133e8 !
<null> 212
-PartsSupplier pg_catalog pg_database oid 1 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:689cde3b-a631-4f25-94b4-ff2ffe022b0f !
<null> 225
-PartsSupplier pg_catalog pg_user oid 1 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:bb78401d-d10c-43b1-af84-e4fa6b95db42 !
<null> 234
-PartsSupplier pg_catalog matpg_datatype oid 1 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:053375a4-3971-4705-9146-9ecc640022c2 !
<null> 245
-PartsSupplier pg_catalog pg_proc proallargtypes 9 <null> object 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Object 0 0 0 mmuid:a385751f-a31a-4d5d-9197-3fbd390b0251 !
<null> 210
-PartsSupplier pg_catalog pg_proc proargmodes 8 <null> object 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Object 0 0 0 mmuid:bcbed548-176c-4116-a5d6-7638cb0206e1 !
<null> 209
-PartsSupplier pg_catalog pg_proc proargnames 7 <null> object 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Object 0 0 0 mmuid:d9f36bdc-7b25-4af0-b9f5-a96aac6d3094 !
<null> 208
-PartsSupplier pg_catalog pg_proc proargtypes 6 <null> object 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Object 0 0 0 mmuid:ffa4ac73-b549-470e-931f-dc36330cb8c4 !
<null> 207
-PartsSupplier pg_catalog pg_proc proname 2 <null> string 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.String 0 0 0 mmuid:b288b3aa-37f2-4a8e-8b1b-e932a2ce3e25 !
<null> 203
-PartsSupplier pg_catalog pg_proc pronamespace 10 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:e5715456-245f-4846-b90b-01d06d1c3672 !
<null> 211
-PartsSupplier pg_catalog pg_proc pronargs 5 <null> short 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Short 0 0 0 mmuid:6796c2e7-48a4-4f9f-bc98-d47913e2491c !
<null> 206
-PartsSupplier pg_catalog pg_proc proretset 3 <null> boolean 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Boolean 0 0 0 mmuid:e0244e1d-431c-41fa-8194-1e357e2b688b !
<null> 204
-PartsSupplier pg_catalog pg_proc prorettype 4 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:9fb5a34a-3a7e-4d38-b7cd-239f28a3504e !
<null> 205
-PartsSupplier pg_catalog pg_class relam 5 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:c2f92b1a-6ba0-4486-8936-f5185d926178 !
<null> 168
-PartsSupplier pg_catalog pg_class relhasoids 9 <null> string 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.String 0 0 0 mmuid:3ac5a14a-1f9e-455b-8ea1-cf0878774fd7 !
<null> 172
-PartsSupplier pg_catalog pg_class relhasrules 8 <null> boolean 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Boolean 0 0 0 mmuid:6c26fd66-2a4a-4ccf-949a-a06a858db7f6 !
<null> 171
-PartsSupplier pg_catalog pg_class relkind 4 <null> char 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Character 0 0 0 mmuid:ef4359eb-6d51-4249-bfea-40bc0f407d10 !
<null> 167
-PartsSupplier pg_catalog pg_class relname 2 <null> string 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.String 0 0 0 mmuid:5f9b50fa-8188-4048-93c2-3ad1587915df !
<null> 165
-PartsSupplier pg_catalog matpg_relatt relname 4 <null> string 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.String 0 0 0 mmuid:ffbf69c1-2e34-4764-a9b3-9a1b61bfd4af !
<null> 241
-PartsSupplier pg_catalog pg_class relnamespace 3 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:4591ef08-bff8-4f3b-9de7-420f9c7f9d2b !
<null> 166
-PartsSupplier pg_catalog pg_class relpages 7 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:44dee7d6-b6ae-44c7-85f2-e87364d8d059 !
<null> 170
-PartsSupplier pg_catalog pg_class reltuples 6 <null> float 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Float 0 0 0 mmuid:b9ed4b49-5a7b-4ba4-863a-37fd95b2a34c !
<null> 169
-PartsSupplier SYSADMIN VDBResources resourcePath 1 <null> string 0 255 false true false true true false false Nullable <null> <null> Searchable <null> <null> java.lang.String 0 255 10 mmuuid:b1bc5150-3dcc-452e-9e75-4a506997f612 !
<null> 27
-PartsSupplier pg_catalog pg_trigger tgargs 4 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:0c20dbe7-5d89-411f-a8ab-3d77b999595b !
<null> 215
-PartsSupplier pg_catalog pg_trigger tgconstrname 8 <null> string 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.String 0 0 0 mmuid:c010d12f-2074-45db-8e18-979cee2c45da !
<null> 219
-PartsSupplier pg_catalog pg_trigger tgconstrrelid 2 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:64977f3e-f2a0-466e-a5d1-80bb058cbe08 !
<null> 213
-PartsSupplier pg_catalog pg_trigger tgdeferrable 6 <null> boolean 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Boolean 0 0 0 mmuid:bfbff036-caf2-4652-80cf-398af17ed7d1 !
<null> 217
-PartsSupplier pg_catalog pg_trigger tgfoid 3 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:250d7c06-728a-4b2a-b557-91f2a69bb184 !
<null> 214
-PartsSupplier pg_catalog pg_trigger tginitdeferred 7 <null> boolean 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Boolean 0 0 0 mmuid:da4b59ca-ebff-45a8-ad68-9777bc587813 !
<null> 218
-PartsSupplier pg_catalog pg_trigger tgnargs 5 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:d70f020b-658c-4f58-86dc-0fbb12e2d8af !
<null> 216
-PartsSupplier pg_catalog pg_trigger tgrelid 9 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:71091853-c65e-46a9-9947-aa024f806e2d !
<null> 220
-PartsSupplier pg_catalog pg_type typbasetype 6 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:a17d2f61-cd68-4c0d-8d25-132f68eb3b67 !
<null> 188
-PartsSupplier pg_catalog pg_type typelem 9 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:22ac431d-e6e6-4eef-9d74-b31795424e97 !
<null> 191
-PartsSupplier pg_catalog pg_type typlen 4 <null> short 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Short 0 0 0 mmuid:931c09e1-937a-437e-aab2-2360f8d90e2b !
<null> 186
-PartsSupplier pg_catalog matpg_datatype typlen 5 <null> short 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Short 0 0 0 mmuid:0e9c4439-48d0-4115-a343-5baab7a236b6 !
<null> 249
-PartsSupplier pg_catalog pg_type typname 2 <null> string 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.String 0 0 0 mmuid:d600d818-2aad-4c92-9343-267d044dd97d !
<null> 184
-PartsSupplier pg_catalog matpg_datatype typname 2 <null> string 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.String 0 0 0 mmuid:0f312b3c-98ca-4a09-81fa-f1ff83f0a6c1 !
<null> 246
-PartsSupplier pg_catalog pg_type typnamespace 3 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:e47217d2-2b07-4353-bfbd-d7c883a5e7e0 !
<null> 185
-PartsSupplier pg_catalog matpg_relatt typoid 7 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:595a823f-cec1-42dc-b8b2-c95c8b4e4e66 !
<null> 244
-PartsSupplier pg_catalog pg_type typrelid 8 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:bec25882-b292-4ed1-a610-cad5d504837d !
<null> 190
-PartsSupplier pg_catalog pg_type typtype 5 <null> char 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Character 0 0 0 mmuid:83199eba-7af4-44a9-822f-006677b1b895 !
<null> 187
-PartsSupplier pg_catalog pg_type typtypmod 7 <null> integer 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:cee3559d-1ce6-4b17-ad57-2ecb79a9e1d2 !
<null> 189
-PartsSupplier pg_catalog matpg_datatype uid 4 <null> string 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.String 0 0 0 mmuid:87826ebc-98a5-4f19-a6d8-6b7b96cbed48 !
<null> 248
-PartsSupplier pg_catalog pg_user usecreatedb 3 <null> boolean 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Boolean 0 0 0 mmuid:6da98878-b46e-4ed1-b032-1bc72da595f4 !
<null> 236
-PartsSupplier pg_catalog pg_user usename 2 <null> string 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.String 0 0 0 mmuid:236445e1-408c-40a1-a61c-40e96fb5dc9f !
<null> 235
-PartsSupplier pg_catalog pg_user usesuper 4 <null> boolean 0 0 false true false false false false false Unknown <null> <null> Searchable <null> <null> java.lang.Boolean 0 0 0 mmuid:9bfddc66-af75-4366-8eac-b9fef3421219 !
<null> 237
-Row Count : 249
+string string string string integer string string integer integer boolean boolean boolean boolean boolean boolean boolean string string string integer integer string string string string integer integer integer string !
string integer
+VDBName SchemaName TableName Name Position NameInSource DataType Scale Length IsLengthFixed SupportsSelect SupportsUpdates IsCaseSensitive IsSigned IsCurrency IsAutoIncremented NullType MinRange MaxRange DistinctCount NullCount SearchType Format DefaultValue JavaClass Precision CharOctetLength Radix UID !
Description OID
+PartsSupplier SYS DataTypes BaseType 17 <null> string 0 64 true true false true true false false Nullable <null> <null> -1 -1 Searchable <null> <null> java.lang.String 64 64 10 mmuuid:03beb57c-968b-!
4821-a6ae-cb1154cfadee <null> 76
+PartsSupplier SYSADMIN MatViews Cardinality 9 <null> integer 0 10 false true false true true false false Nullable <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:abe699b0-b6bc-!
4413-9172-0a21ca9664d2 <null> 26
+PartsSupplier SYS Tables Cardinality 9 <null> integer 0 10 false true false true true false false No Nulls <null> <null> -1 -1 All Except Like <null> <null> java.lang.Integer 10 10 10 mmuuid:24cdad3a-e8f7-!
4376-bb32-79f8bc8eeed2 <null> 157
+PartsSupplier SYS Columns CharOctetLength 27 <null> integer 0 10 true true false false false false false Nullable <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:de5def94-2804-!
4c91-91ed-26d630ce8afe <null> 55
+PartsSupplier SYS ReferenceKeyColumns DEFERRABILITY 14 <null> integer 0 10 false true true true true false false Nullable <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:88380f55-2cbd-!
4325-b9a3-9dcaa88a690e <null> 141
+PartsSupplier SYS ReferenceKeyColumns DELETE_RULE 11 <null> integer 0 10 false true true true true false false Nullable <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:9207f4df-a5ce-!
43bd-b3b2-fee57e459849 <null> 138
+PartsSupplier SYS Columns DataType 7 <null> string 0 100 true true false true true false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.String 100 100 10 mmuuid:9a8dc0d5-e65c-!
4032-a066-187f8d2e73ea <null> 35
+PartsSupplier SYS ProcedureParams DataType 5 <null> string 0 25 true true false true true false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.String 25 25 10 mmuuid:207a09af-65b8-!
405f-b1cb-537bc8632fa4 <null> 104
+PartsSupplier SYS Columns DefaultValue 24 <null> string 0 255 true true false false false false false Nullable <null> <null> -1 -1 Searchable <null> <null> java.lang.String 255 255 10 mmuuid:7e853988-356b-!
4c7c-83d4-a9f015bff279 <null> 52
+PartsSupplier SYS Columns Description 30 <null> string 0 255 false true true true true false false Nullable <null> <null> -1 -1 Searchable <null> <null> java.lang.String 255 255 10 mmuuid:74d73b53-b723-!
419e-9fea-de56408409ee <null> 58
+PartsSupplier SYS DataTypes Description 18 <null> string 0 255 false true true true true false false Nullable <null> <null> -1 -1 Searchable <null> <null> java.lang.String 255 255 10 mmuuid:b7d95ef6-63a3-!
441c-8de5-c98e2e577ea3 <null> 77
+PartsSupplier SYS Keys Description 5 <null> string 0 255 true true false false false false false Nullable <null> <null> -1 -1 Searchable <null> <null> java.lang.String 255 255 10 mmuuid:175e21b2-24c3-!
4677-a253-6d7cdb513a9a <null> 93
+PartsSupplier SYS ProcedureParams Description 15 <null> string 0 255 false true true true true false false Nullable <null> <null> -1 -1 Searchable <null> <null> java.lang.String 0 255 10 mmuuid:05ac4703-5c2c-!
4410-93b7-19b39d90c803 <null> 114
+PartsSupplier SYS Procedures Description 7 <null> string 0 255 false true true true true false false Nullable <null> <null> -1 -1 Searchable <null> <null> java.lang.String 225 255 10 mmuuid:fa0b5db7-acb1-!
4975-8410-d5d27df46040 <null> 122
+PartsSupplier SYS Schemas Description 5 <null> string 0 255 false true true true true false false Nullable <null> <null> -1 -1 Searchable <null> <null> java.lang.String 255 255 10 mmuuid:1cb99300-a527-!
4a26-b4e6-08ebd92a781d <null> 146
+PartsSupplier SYS Tables Description 10 <null> string 0 255 false true true true true false false Nullable <null> <null> -1 -1 Searchable <null> <null> java.lang.String 255 255 10 mmuuid:51605e41-5cb0-!
40ca-8c4a-4eca52780afc <null> 158
+PartsSupplier SYS Columns DistinctCount 20 <null> integer 0 10 false true true true true false false Nullable <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 10 10 mmuuid:0017cd41-d873-!
4fcb-a2e7-15cdac7df3a5 <null> 48
+PartsSupplier SYS ReferenceKeyColumns FKCOLUMN_NAME 8 <null> string 0 255 false true true true true false false Nullable <null> <null> -1 -1 Searchable <null> <null> java.lang.String 255 255 10 mmuuid:f4b2b32c-e411-!
45e6-a236-fec4718f0874 <null> 135
+PartsSupplier SYS ReferenceKeyColumns FKTABLE_CAT 5 <null> string 0 255 false true true true true false false Nullable <null> <null> -1 -1 Searchable <null> <null> java.lang.String 1 255 10 mmuuid:a0095da3-1258-!
44dc-bab9-33eacf886a28 <null> 132
+PartsSupplier SYS ReferenceKeyColumns FKTABLE_NAME 7 <null> string 0 255 false true true true true false false Nullable <null> <null> -1 -1 Searchable <null> <null> java.lang.String 255 255 10 mmuuid:53284aaa-4c07-!
4930-8a0e-5e2aaa2da5cb <null> 134
+PartsSupplier SYS ReferenceKeyColumns FKTABLE_SCHEM 6 <null> string 0 255 false true true true true false false Nullable <null> <null> -1 -1 Searchable <null> <null> java.lang.String 255 255 10 mmuuid:93a35adf-b6b1-!
4d9c-bdef-d336a84f478e <null> 133
+PartsSupplier SYS ReferenceKeyColumns FK_NAME 12 <null> string 0 255 false true true true true false false Nullable <null> <null> -1 -1 Searchable <null> <null> java.lang.String 255 255 10 mmuuid:a9ca7516-6898-!
419d-b1ad-7d174d946d07 <null> 139
+PartsSupplier SYS Columns Format 23 <null> string 0 255 true true false false false false false Nullable <null> <null> -1 -1 Searchable <null> <null> java.lang.String 255 255 10 mmuuid:172b133e-5bf1-!
4020-953c-de4446b1e64a <null> 51
+PartsSupplier SYS Columns IsAutoIncremented 16 <null> boolean 0 1 true true false false false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.Boolean 1 1 10 mmuuid:0d41e284-f274-!
4fd1-8576-7696f4b758d0 <null> 44
+PartsSupplier SYS DataTypes IsAutoIncremented 10 <null> boolean 0 1 true true false true true false false No Nulls <null> <null> -1 -1 Searchable <null> ('0') java.lang.Boolean 1 1 10 mmuuid:2a1568e2-776a-!
474b-981f-040a6ad63361 <null> 69
+PartsSupplier SYS Columns IsCaseSensitive 13 <null> boolean 0 1 true true false false false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.Boolean 1 1 10 mmuuid:21ee166a-b462-!
41a1-b88d-dc79f63d6e17 <null> 41
+PartsSupplier SYS DataTypes IsCaseSensitive 11 <null> boolean 0 1 true true false true false false false No Nulls <null> <null> -1 -1 Searchable <null> ('0') java.lang.Boolean 1 1 10 mmuuid:1468aaf2-6481-!
4d10-9554-44d0363fe571 <null> 70
+PartsSupplier SYS Columns IsCurrency 15 <null> boolean 0 1 true true false false false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.Boolean 1 1 10 mmuuid:b28a2963-36e0-!
4b4a-a8f8-a2c06f2b440a <null> 43
+PartsSupplier SYS Keys IsIndexed 8 <null> boolean 0 1 true true false false false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.Boolean 1 1 10 mmuuid:ea96cb7c-2dcf-!
453c-b83a-1aaa921d8f92 <null> 96
+PartsSupplier SYS Columns IsLengthFixed 10 <null> boolean 0 1 true true false false false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.Boolean 1 1 10 mmuuid:571aa4ce-3254-!
4a2b-aa48-1cb23a0c47ed <null> 38
+PartsSupplier SYS Tables IsMaterialized 12 <null> boolean 0 0 false true true false false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.Boolean 0 0 10 mmuuid:89265cba-ab85-!
48c2-960a-a5a9594ba6d0 <null> 160
+PartsSupplier SYS DataTypes IsPhysical 3 <null> boolean 0 1 true true false true true false false Nullable <null> <null> -1 -1 Searchable <null> <null> java.lang.Boolean 1 1 10 mmuuid:983714a2-bd0b-!
4fad-b4e8-dfb7832e9c4b <null> 62
+PartsSupplier SYS Schemas IsPhysical 3 <null> boolean 0 1 true true false false false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.Boolean 1 1 10 mmuuid:bab257d7-cced-!
4605-9b40-8ca6c078aca7 <null> 144
+PartsSupplier SYS Tables IsPhysical 6 <null> boolean 0 1 true true false true false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.Boolean 1 1 10 mmuuid:e27712f6-a0a6-!
452e-848d-9de77691e939 <null> 154
+PartsSupplier SYS Columns IsSigned 14 <null> boolean 0 1 true true false false false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.Boolean 1 1 10 mmuuid:36be2afa-8ebc-!
4af8-acc5-a887cf2b5a86 <null> 42
+PartsSupplier SYS DataTypes IsSigned 9 <null> boolean 0 1 true true false true false false false No Nulls <null> <null> -1 -1 Searchable <null> ('0') java.lang.Boolean 1 1 10 mmuuid:235cea48-b2b9-!
41d5-b296-8ab9c649b6e7 <null> 68
+PartsSupplier SYS DataTypes IsStandard 2 <null> boolean 0 1 true true false true true false false Nullable <null> <null> -1 -1 Searchable <null> <null> java.lang.Boolean 1 1 10 mmuuid:02f27c5d-af55-!
4677-b91b-8690793671b2 <null> 61
+PartsSupplier SYS Tables IsSystem 11 <null> boolean 0 1 false true true true true false false Nullable <null> <null> -1 -1 Searchable <null> <null> java.lang.Boolean 1 1 10 mmuuid:9fa7987c-7dc8-!
4102-9cc0-5658d5b46382 <null> 159
+PartsSupplier SYS Columns JavaClass 25 <null> string 0 500 true true false true false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.String 500 500 10 mmuuid:6b8d5df5-7bd2-!
425c-8b2b-e427e026ef66 <null> 53
+PartsSupplier SYS DataTypes JavaClass 5 <null> string 0 500 true true false true false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.String 500 500 10 mmuuid:4c68ef90-8042-!
44ab-896a-bb3890a8fe04 <null> 64
+PartsSupplier SYS ReferenceKeyColumns KEY_SEQ 9 <null> short 0 5 false true true true true false false Nullable <null> <null> -1 -1 Searchable <null> <null> java.lang.Short 5 5 10 mmuuid:4884ac83-84ed-!
4b67-9f1a-bd79c0199269 <null> 136
+PartsSupplier SYS KeyColumns KeyName 5 <null> string 0 255 true true false false false false false Nullable <null> <null> -1 -1 Searchable <null> <null> java.lang.String 255 255 10 mmuuid:da4bef58-83f4-!
4b88-8bb0-2dc8990be539 <null> 83
+PartsSupplier SYS KeyColumns KeyType 6 <null> string 0 20 true true false false false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.String 20 20 10 mmuuid:df9e15e6-ab77-!
486d-bfe0-0adc378aa99d <null> 84
+PartsSupplier SYS Columns Length 9 <null> integer 0 10 true true false false false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:b36ea0f6-cbff-!
4049-bc9c-8ec9928be048 <null> 37
+PartsSupplier SYSADMIN MatViews LoadState 7 <null> string 0 255 false true false true true false false Nullable <null> <null> -1 -1 Searchable <null> <null> java.lang.String 0 255 10 mmuuid:c67365c3-f252-!
40f4-aae6-8971d3b1b153 <null> 24
+PartsSupplier SYS Columns MaxRange 19 <null> string 0 50 true true false false false false false Nullable <null> <null> -1 -1 Searchable <null> <null> java.lang.String 50 50 10 mmuuid:0b0df4a5-7de5-!
4315-94f7-22c84958302e <null> 47
+PartsSupplier SYS Columns MinRange 18 <null> string 0 50 true true false false false false false Nullable <null> <null> -1 -1 Searchable <null> <null> java.lang.String 50 50 10 mmuuid:dba0f97d-fab5-!
45f6-a1eb-3459ab3fcc74 <null> 46
+PartsSupplier SYSADMIN MatViews Name 3 <null> string 0 255 false true false true true false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.String 0 255 10 mmuuid:0f56d35c-e450-!
4b4f-86b0-bdb4f1015c57 <null> 20
+PartsSupplier SYS Columns Name 4 <null> string 0 255 true true false false false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.String 255 255 10 mmuuid:d1f44a6d-3e39-!
4251-b873-1280c2b035b3 <null> 32
+PartsSupplier SYS DataTypes Name 1 <null> string 0 100 true true false true true false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.String 100 100 10 mmuuid:17f7de33-e6f0-!
4b9c-b55e-a87f6b7bb9b3 <null> 60
+PartsSupplier SYS KeyColumns Name 4 <null> string 0 255 true true false false false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.String 255 255 10 mmuuid:08bda0c7-5f66-!
4fed-8285-d74b63eeb0e2 <null> 82
+PartsSupplier SYS Keys Name 4 <null> string 0 255 true true false false false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.String 255 255 10 mmuuid:149de302-2107-!
45ca-839d-fc0dd1e7d7f4 <null> 92
+PartsSupplier SYS ProcedureParams Name 4 <null> string 0 255 true true false false false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.String 255 255 10 mmuuid:2bf20c6f-5a95-!
436d-8f30-a24d164e77a4 <null> 103
+PartsSupplier SYS Procedures Name 3 <null> string 0 255 true true false true false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.String 255 255 10 mmuuid:bd17e98a-c40a-!
43b1-93ac-88d62937c051 <null> 118
+PartsSupplier SYS Properties Name 1 <null> string 0 255 true true false true true false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.String 255 255 10 mmuuid:ba007c56-04b6-!
4981-ab89-3fdd33ff0de8 <null> 124
+PartsSupplier SYS Schemas Name 2 <null> string 0 255 false true true true true false false Nullable <null> <null> -1 -1 Searchable <null> <null> java.lang.String 0 255 10 mmuuid:654112f8-bb4c-!
4453-9e4d-f3a96fba61ec <null> 143
+PartsSupplier SYS Tables Name 3 <null> string 0 255 true true false true false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.String 255 255 10 mmuuid:ef487cc2-1214-!
439c-af6e-da431df00d2c <null> 151
+PartsSupplier SYS VirtualDatabases Name 1 <null> string 0 255 true true false true false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.String 255 255 10 mmuuid:42fa1249-8b24-!
4aae-a252-0a347db6ec30 <null> 162
+PartsSupplier SYS Columns NameInSource 6 <null> string 0 255 true true false false false false false Nullable <null> <null> -1 -1 Searchable <null> <null> java.lang.String 255 255 10 mmuuid:fac72c6e-41dc-!
4a1b-8af3-f0796690d9cc <null> 34
+PartsSupplier SYS Keys NameInSource 6 <null> string 0 255 true true false false false false false Nullable <null> <null> -1 -1 Searchable <null> <null> java.lang.String 255 255 10 mmuuid:a52a6169-99e0-!
4b7e-9dc6-3a93ffa6094a <null> 94
+PartsSupplier SYS Procedures NameInSource 4 <null> string 0 255 true true false false false false false Nullable <null> <null> -1 -1 Searchable <null> <null> java.lang.String 255 255 10 mmuuid:a4e7a0fd-c340-!
49a9-9ac0-8328caaffda8 <null> 119
+PartsSupplier SYS Tables NameInSource 5 <null> string 0 255 true true false true false false false Nullable <null> <null> -1 -1 Searchable <null> <null> java.lang.String 255 255 10 mmuuid:1f036fb0-b841-!
450c-8462-986cdd57e921 <null> 153
+PartsSupplier SYS Columns NullCount 21 <null> integer 0 10 false true true true true false false Nullable <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 10 10 mmuuid:d00d1104-40ba-!
40be-b684-4c0c803615f8 <null> 49
+PartsSupplier SYS Columns NullType 17 <null> string 0 20 true true false true false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.String 20 20 10 mmuuid:4d83bdbb-a7ce-!
44cc-a201-021a517d3c1a <null> 45
+PartsSupplier SYS DataTypes NullType 8 <null> string 0 20 true true false true false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.String 20 20 10 mmuuid:278b0534-1164-!
495e-a8c6-de45e0ff53a4 <null> 67
+PartsSupplier SYS ProcedureParams NullType 13 <null> string 0 10 true true false false false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.String 10 10 10 mmuuid:d887c203-6bf5-!
462b-b2f0-f5302e2f4bcd <null> 112
+PartsSupplier SYS Columns OID 31 <null> integer 0 10 true true false false false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:b9e5ba07-4a8d-!
4589-8aa9-597ae70d18a4 <null> 59
+PartsSupplier SYS DataTypes OID 19 <null> integer 0 10 true true false false false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:a3c41050-80b6-!
4fb5-9c6b-5e20c0839cda <null> 78
+PartsSupplier SYS KeyColumns OID 10 <null> integer 0 10 true true false false false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:207d123c-a3ff-!
4e4e-85ae-6f3b0debfc06 <null> 88
+PartsSupplier SYS Keys OID 11 <null> integer 0 10 true true false false false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:d781f893-bdf3-!
4dc1-956f-7e7b1a138c99 <null> 99
+PartsSupplier SYS ProcedureParams OID 16 <null> integer 0 10 true true false false false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:72125f93-846f-!
413c-82e1-fa3227fb043f <null> 115
+PartsSupplier SYS Procedures OID 8 <null> integer 0 10 true true false false false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:c80c02d2-7174-!
4cc4-b347-e921a80f568c <null> 123
+PartsSupplier SYS Properties OID 4 <null> integer 0 10 true true false false false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:54c1a7dc-5ca8-!
4d34-8672-e76d63fe3b95 <null> 127
+PartsSupplier SYS Schemas OID 7 <null> integer 0 10 true true false false false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:31746839-e019-!
4321-90cb-a557e1d4754e <null> 148
+PartsSupplier SYS Tables OID 13 <null> integer 0 10 true true false false false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:dae79c58-b381-!
4275-8c1c-b299d732d355 <null> 161
+PartsSupplier SYS ProcedureParams Optional 8 <null> boolean 0 1 true true false false false false false No Nulls <null> <null> -1 -1 Searchable <null>