teiid SVN: r3133 - in trunk: runtime/src/main/java/org/teiid/odbc and 1 other directories.
by teiid-commits@lists.jboss.org
Author: rareddy
Date: 2011-04-29 14:34:21 -0400 (Fri, 29 Apr 2011)
New Revision: 3133
Modified:
trunk/client/src/main/java/org/teiid/jdbc/StatementImpl.java
trunk/runtime/src/main/java/org/teiid/odbc/ODBCServerRemoteImpl.java
trunk/runtime/src/main/java/org/teiid/transport/PgBackendProtocol.java
trunk/runtime/src/main/java/org/teiid/transport/PgFrontendProtocol.java
Log:
TEIID-1572: Adding suport for SET and SHOW command in ODBC.
Modified: trunk/client/src/main/java/org/teiid/jdbc/StatementImpl.java
===================================================================
--- trunk/client/src/main/java/org/teiid/jdbc/StatementImpl.java 2011-04-29 15:07:18 UTC (rev 3132)
+++ trunk/client/src/main/java/org/teiid/jdbc/StatementImpl.java 2011-04-29 18:34:21 UTC (rev 3133)
@@ -163,7 +163,7 @@
protected Map outParamIndexMap = new HashMap();
private static Pattern TRANSACTION_STATEMENT = Pattern.compile("\\s*(commit|rollback|(start\\s*transaction))\\s*;?", Pattern.CASE_INSENSITIVE); //$NON-NLS-1$
- private static Pattern SET_STATEMENT = Pattern.compile("\\s*set\\s*(\\w+)\\s*(\\w*);?", Pattern.CASE_INSENSITIVE); //$NON-NLS-1$
+ private static Pattern SET_STATEMENT = Pattern.compile("\\s*set\\s*(\\w+)\\s*([^;]*);?", Pattern.CASE_INSENSITIVE); //$NON-NLS-1$
private static Pattern SHOW_STATEMENT = Pattern.compile("\\s*show\\s*(\\w*);?", Pattern.CASE_INSENSITIVE); //$NON-NLS-1$
/**
* Factory Constructor
Modified: trunk/runtime/src/main/java/org/teiid/odbc/ODBCServerRemoteImpl.java
===================================================================
--- trunk/runtime/src/main/java/org/teiid/odbc/ODBCServerRemoteImpl.java 2011-04-29 15:07:18 UTC (rev 3132)
+++ trunk/runtime/src/main/java/org/teiid/odbc/ODBCServerRemoteImpl.java 2011-04-29 18:34:21 UTC (rev 3133)
@@ -25,7 +25,9 @@
import java.io.StringReader;
import java.sql.ResultSet;
import java.sql.SQLException;
+import java.sql.Statement;
import java.util.Collections;
+import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
@@ -179,6 +181,13 @@
info.put("password", password); //$NON-NLS-1$
this.connection = (ConnectionImpl)driver.connect(url, info);
int hash = this.connection.getConnectionId().hashCode();
+ Enumeration keys = this.props.propertyNames();
+ while (keys.hasMoreElements()) {
+ String key = (String)keys.nextElement();
+ Statement stmt = this.connection.createStatement();
+ stmt.execute("SET " + key + " '" + this.props.getProperty(key) + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ stmt.close();
+ }
this.client.authenticationSucess(hash, hash);
ready();
} catch (SQLException e) {
@@ -674,8 +683,15 @@
try {
ResultsFuture<Void> result = null;
if (future.get()) {
- result = new ResultsFuture<Void>();
- client.sendResults(sql, stmt.getResultSet(), result, true);
+ if (stmt.getResultSet() != null) {
+ result = new ResultsFuture<Void>();
+ client.sendResults(sql, stmt.getResultSet(), result, true);
+ }
+ else {
+ // handles the "SET" commands.
+ result = ResultsFuture.NULL_FUTURE;
+ client.sendUpdateCount(sql, 0);
+ }
} else {
result = ResultsFuture.NULL_FUTURE;
client.sendUpdateCount(sql, stmt.getUpdateCount());
Modified: trunk/runtime/src/main/java/org/teiid/transport/PgBackendProtocol.java
===================================================================
--- trunk/runtime/src/main/java/org/teiid/transport/PgBackendProtocol.java 2011-04-29 15:07:18 UTC (rev 3132)
+++ trunk/runtime/src/main/java/org/teiid/transport/PgBackendProtocol.java 2011-04-29 18:34:21 UTC (rev 3133)
@@ -417,7 +417,9 @@
tag = "COMMIT";
} else if (sql.startsWith("ROLLBACK")) {
tag = "ROLLBACK";
- } else {
+ } else if (sql.startsWith("SET ")) {
+ tag = "SET";
+ }else {
trace("Check command tag:", sql);
tag = "UPDATE " + updateCount;
}
Modified: trunk/runtime/src/main/java/org/teiid/transport/PgFrontendProtocol.java
===================================================================
--- trunk/runtime/src/main/java/org/teiid/transport/PgFrontendProtocol.java 2011-04-29 15:07:18 UTC (rev 3132)
+++ trunk/runtime/src/main/java/org/teiid/transport/PgFrontendProtocol.java 2011-04-29 18:34:21 UTC (rev 3133)
@@ -31,6 +31,7 @@
import java.lang.reflect.Proxy;
import java.nio.charset.Charset;
import java.util.Arrays;
+import java.util.Calendar;
import java.util.Properties;
import org.jboss.netty.buffer.ChannelBuffer;
@@ -209,6 +210,10 @@
this.user = props.getProperty("user");
this.databaseName = props.getProperty("database");
String clientEncoding = props.getProperty("client_encoding", "UTF-8");
+ props.setProperty("client_encoding", clientEncoding);
+ props.setProperty("default_transaction_isolation", "read committed");
+ props.setProperty("DateStyle", "ISO");
+ props.setProperty("TimeZone", Calendar.getInstance().getTimeZone().getDisplayName());
Charset cs = PGCharsetConverter.getCharset(clientEncoding);
if (cs != null) {
this.encoding = cs;
13 years, 8 months
teiid SVN: r3132 - in trunk/engine/src: test/java/org/teiid/query/optimizer and 1 other directory.
by teiid-commits@lists.jboss.org
Author: shawkins
Date: 2011-04-29 11:07:18 -0400 (Fri, 29 Apr 2011)
New Revision: 3132
Modified:
trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/FrameUtil.java
trunk/engine/src/test/java/org/teiid/query/optimizer/TestRuleMergeVirtual.java
Log:
TEIID-1571 fix for invalid merge
Modified: trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/FrameUtil.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/FrameUtil.java 2011-04-29 01:37:38 UTC (rev 3131)
+++ trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/FrameUtil.java 2011-04-29 15:07:18 UTC (rev 3132)
@@ -262,7 +262,7 @@
ExpressionMappingVisitor.mapExpressions(groupBy, symbolMap);
node.setProperty(NodeConstants.Info.GROUP_COLS, groupBy.getSymbols());
if (!singleMapping) {
- GroupsUsedByElementsVisitor.getGroups(groupCols, groups);
+ GroupsUsedByElementsVisitor.getGroups(groupBy, groups);
}
}
} else if (type == NodeConstants.Types.SOURCE || type == NodeConstants.Types.ACCESS) {
Modified: trunk/engine/src/test/java/org/teiid/query/optimizer/TestRuleMergeVirtual.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/optimizer/TestRuleMergeVirtual.java 2011-04-29 01:37:38 UTC (rev 3131)
+++ trunk/engine/src/test/java/org/teiid/query/optimizer/TestRuleMergeVirtual.java 2011-04-29 15:07:18 UTC (rev 3132)
@@ -331,5 +331,16 @@
TestOptimizer.checkNodeTypes(plan, TestOptimizer.FULL_PUSHDOWN);
}
+
+ @Test public void testMergeGroupBy() throws Exception {
+ BasicSourceCapabilities caps = TestAggregatePushdown.getAggregateCapabilities();
+ caps.setFunctionSupport("+", true); //$NON-NLS-1$
+ ProcessorPlan plan = TestOptimizer.helpPlan("SELECT x FROM (select c.e1 as x from (select e1 from pm1.g1) as c, pm1.g2 as d) as a group by x", //$NON-NLS-1$
+ FakeMetadataFactory.example1Cached(), null, new DefaultCapabilitiesFinder(caps),
+ new String[] {
+ "SELECT g_0.e1 FROM pm1.g1 AS g_0, pm1.g2 AS g_1 GROUP BY g_0.e1"}, ComparisonMode.EXACT_COMMAND_STRING); //$NON-NLS-1$
+
+ TestOptimizer.checkNodeTypes(plan, TestOptimizer.FULL_PUSHDOWN);
+ }
}
13 years, 8 months
teiid SVN: r3131 - in trunk: api/src/main/java/org/teiid/metadata and 26 other directories.
by teiid-commits@lists.jboss.org
Author: shawkins
Date: 2011-04-28 21:37:38 -0400 (Thu, 28 Apr 2011)
New Revision: 3131
Added:
trunk/engine/src/main/java/org/teiid/query/resolver/command/AlterResolver.java
trunk/engine/src/main/java/org/teiid/query/sql/lang/Alter.java
trunk/engine/src/main/java/org/teiid/query/sql/lang/AlterProcedure.java
trunk/engine/src/main/java/org/teiid/query/sql/lang/AlterTrigger.java
trunk/engine/src/main/java/org/teiid/query/sql/lang/AlterView.java
trunk/engine/src/test/java/org/teiid/query/parser/TestParseAlter.java
trunk/engine/src/test/java/org/teiid/query/resolver/TestAlterResolving.java
trunk/engine/src/test/java/org/teiid/query/validator/TestAlterValidation.java
Modified:
trunk/api/src/main/java/org/teiid/language/SQLConstants.java
trunk/api/src/main/java/org/teiid/metadata/MetadataRepository.java
trunk/api/src/main/java/org/teiid/metadata/Table.java
trunk/client/src/main/java/org/teiid/jdbc/DatabaseMetaDataImpl.java
trunk/engine/src/main/java/org/teiid/query/resolver/QueryResolver.java
trunk/engine/src/main/java/org/teiid/query/resolver/command/BatchedUpdateResolver.java
trunk/engine/src/main/java/org/teiid/query/resolver/command/XMLQueryResolver.java
trunk/engine/src/main/java/org/teiid/query/resolver/util/ResolverUtil.java
trunk/engine/src/main/java/org/teiid/query/sql/LanguageVisitor.java
trunk/engine/src/main/java/org/teiid/query/sql/lang/BatchedUpdateCommand.java
trunk/engine/src/main/java/org/teiid/query/sql/lang/Command.java
trunk/engine/src/main/java/org/teiid/query/sql/navigator/PreOrPostOrderNavigator.java
trunk/engine/src/main/java/org/teiid/query/sql/visitor/CommandCollectorVisitor.java
trunk/engine/src/main/java/org/teiid/query/sql/visitor/SQLStringVisitor.java
trunk/engine/src/main/java/org/teiid/query/validator/AbstractValidationVisitor.java
trunk/engine/src/main/java/org/teiid/query/validator/ValidationVisitor.java
trunk/engine/src/main/javacc/org/teiid/query/parser/SQLParser.jj
trunk/engine/src/main/resources/org/teiid/query/i18n.properties
trunk/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCore.java
trunk/engine/src/test/java/org/teiid/dqp/internal/process/multisource/TestMultiSourcePlanToProcessConverter.java
trunk/engine/src/test/java/org/teiid/query/optimizer/TestOptimizer.java
trunk/engine/src/test/java/org/teiid/query/optimizer/relational/TestAliasGenerator.java
trunk/engine/src/test/java/org/teiid/query/processor/FakeDataManager.java
trunk/engine/src/test/java/org/teiid/query/processor/TestProcessor.java
trunk/engine/src/test/java/org/teiid/query/processor/TestTriggerActions.java
trunk/engine/src/test/java/org/teiid/query/processor/relational/TestAccessNode.java
trunk/engine/src/test/java/org/teiid/query/processor/relational/TestProjectIntoNode.java
trunk/engine/src/test/java/org/teiid/query/processor/xml/TestXMLProcessor.java
trunk/engine/src/test/java/org/teiid/query/resolver/TestProcedureResolving.java
trunk/engine/src/test/java/org/teiid/query/resolver/TestResolver.java
trunk/engine/src/test/java/org/teiid/query/resolver/TestXMLResolver.java
trunk/engine/src/test/java/org/teiid/query/sql/proc/TestCreateUpdateProcedureCommand.java
trunk/engine/src/test/java/org/teiid/query/sql/visitor/TestEvaluatableVisitor.java
trunk/engine/src/test/java/org/teiid/query/unittest/FakeMetadataFactory.java
trunk/runtime/src/main/java/org/teiid/deployers/VDBRepository.java
trunk/test-integration/common/src/test/java/org/teiid/systemmodel/TestMetadataUpdates.java
Log:
TEIID-1326 adding alter commands for runtime update of metadata
Modified: trunk/api/src/main/java/org/teiid/language/SQLConstants.java
===================================================================
--- trunk/api/src/main/java/org/teiid/language/SQLConstants.java 2011-04-29 01:33:21 UTC (rev 3130)
+++ trunk/api/src/main/java/org/teiid/language/SQLConstants.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -106,6 +106,9 @@
public static final String TEXTAGG = "TEXTAGG"; //$NON-NLS-1$
public static final String ARRAYTABLE = "ARRAYTABLE"; //$NON-NLS-1$
+
+ public static final String VIEW = "VIEW"; //$NON-NLS-1$
+ public static final String INSTEAD = "INSTEAD"; //$NON-NLS-1$
}
public interface Reserved {
Modified: trunk/api/src/main/java/org/teiid/metadata/MetadataRepository.java
===================================================================
--- trunk/api/src/main/java/org/teiid/metadata/MetadataRepository.java 2011-04-29 01:33:21 UTC (rev 3130)
+++ trunk/api/src/main/java/org/teiid/metadata/MetadataRepository.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -27,12 +27,6 @@
*/
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.
@@ -52,7 +46,7 @@
* 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);
+ String getInsteadOfTriggerDefinition(String vdbName, int vdbVersion, Table table, Table.TriggerOperation triggerOperation);
/**
*
@@ -62,7 +56,7 @@
* @param triggerOperation
* @param triggerDefinition
*/
- void setInsteadOfTriggerDefinition(String vdbName, int vdbVersion, Table table, TriggerOperation triggerOperation, String triggerDefinition);
+ void setInsteadOfTriggerDefinition(String vdbName, int vdbVersion, Table table, Table.TriggerOperation triggerOperation, String triggerDefinition);
/**
* Returns an updated procedure definition (CREATE PROCEDURE ...) or null if the current procedure definition should be used
Modified: trunk/api/src/main/java/org/teiid/metadata/Table.java
===================================================================
--- trunk/api/src/main/java/org/teiid/metadata/Table.java 2011-04-29 01:33:21 UTC (rev 3130)
+++ trunk/api/src/main/java/org/teiid/metadata/Table.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -41,7 +41,13 @@
MaterializedTable
}
- private int cardinality;
+ public static enum TriggerOperation {
+ INSERT,
+ UPDATE,
+ DELETE
+ }
+
+ private int cardinality;
private Type tableType;
private boolean isVirtual;
private boolean isSystem;
Modified: trunk/client/src/main/java/org/teiid/jdbc/DatabaseMetaDataImpl.java
===================================================================
--- trunk/client/src/main/java/org/teiid/jdbc/DatabaseMetaDataImpl.java 2011-04-29 01:33:21 UTC (rev 3130)
+++ trunk/client/src/main/java/org/teiid/jdbc/DatabaseMetaDataImpl.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -754,17 +754,6 @@
return getDriverMajorVersion()+"."+getDriverMinorVersion (); //$NON-NLS-1$
}
- /**
- * <p>This method gets a description of the forignkey columns that reference the
- * primary key columns in the given table. Catalog and schema names are not
- * used to narrow down the search, but they should match the virtualdatabasename
- * and version used to obtain this driver connection.
- * @param name of the catalog which contains the given table.
- * @param schema name which contains the given table.
- * @param table name which contains the primary keys.
- * @return ResultSet object giving the exported key info.
- * @throws SQLException if there is an error obtaining server results
- */
public ResultSet getExportedKeys(String catalog, String schema, String table) throws SQLException {
if (catalog == null) {
catalog = PERCENT;
@@ -824,17 +813,6 @@
return DOUBLE_QUOTE;
}
- /**
- * <p>Gets a description of the primary key columns that are referenced by the
- * foreign key columns in the given table. Catalog and schema names are not
- * used to narrow down the search, but they should match the virtualdatabasename
- * and version used to obtain this driver connection.
- * @param name of the catalog which contains the given table.
- * @param schema name which contains the given table.
- * @param table name which contains the foreign keys.
- * @return ResultSet object giving the imported key info.
- * @throws SQLException if there is an error obtaining server results
- */
public ResultSet getImportedKeys(String catalog, String schema, String table) throws SQLException {
if (catalog == null) {
catalog = PERCENT;
@@ -875,17 +853,6 @@
}
}
- /**
- * <p>Gets a description of the indexes that are present on a given table.
- *
- * @param name of the catalog which contains the given table.
- * @param schema name which contains the given table.
- * @param table name which contains the indexes.
- * @param boolean indicating if unique key info needs to be returned.
- * @param boolean indicating if approximate value are to be allowed.
- * @return ResultSet object containing metadata info of index columns.
- * @throws SQLException if catalog/schema info does not match for this connection.
- */
public ResultSet getIndexInfo(String catalog, String schema, String table, boolean unique, boolean approximate) throws SQLException {
if (catalog == null) {
catalog = PERCENT;
Modified: trunk/engine/src/main/java/org/teiid/query/resolver/QueryResolver.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/resolver/QueryResolver.java 2011-04-29 01:33:21 UTC (rev 3130)
+++ trunk/engine/src/main/java/org/teiid/query/resolver/QueryResolver.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -36,7 +36,6 @@
import org.teiid.api.exception.query.QueryValidatorException;
import org.teiid.core.TeiidComponentException;
import org.teiid.core.types.DataTypeManager;
-import org.teiid.core.util.Assertion;
import org.teiid.core.util.StringUtil;
import org.teiid.dqp.internal.process.Request;
import org.teiid.language.SQLConstants;
@@ -49,6 +48,7 @@
import org.teiid.query.metadata.TempMetadataID;
import org.teiid.query.metadata.TempMetadataStore;
import org.teiid.query.parser.QueryParser;
+import org.teiid.query.resolver.command.AlterResolver;
import org.teiid.query.resolver.command.BatchedUpdateResolver;
import org.teiid.query.resolver.command.DeleteResolver;
import org.teiid.query.resolver.command.DynamicCommandResolver;
@@ -108,6 +108,7 @@
private static final CommandResolver BATCHED_UPDATE_RESOLVER = new BatchedUpdateResolver();
private static final CommandResolver DYNAMIC_COMMAND_RESOLVER = new DynamicCommandResolver();
private static final CommandResolver TEMP_TABLE_RESOLVER = new TempTableResolver();
+ private static final CommandResolver ALTER_RESOLVER = new AlterResolver();
public static Command expandCommand(ProcedureContainer proc, QueryMetadataInterface metadata, AnalysisRecord analysisRecord) throws QueryResolverException, QueryMetadataException, TeiidComponentException {
ProcedureContainerResolver cr = (ProcedureContainerResolver)chooseResolver(proc, metadata);
@@ -194,8 +195,8 @@
ResolverVisitor.resolveLanguageObject(elementSymbol, metadata);
elementSymbol.setIsExternalReference(true);
if (!positional) {
- symbolMap.put(new ElementSymbol(ProcedureReservedWords.INPUT + ElementSymbol.SEPARATOR + name), (ElementSymbol)elementSymbol.clone());
- symbolMap.put(new ElementSymbol(ProcedureReservedWords.INPUTS + ElementSymbol.SEPARATOR + name), (ElementSymbol)elementSymbol.clone());
+ symbolMap.put(new ElementSymbol(ProcedureReservedWords.INPUT + ElementSymbol.SEPARATOR + name), elementSymbol.clone());
+ symbolMap.put(new ElementSymbol(ProcedureReservedWords.INPUTS + ElementSymbol.SEPARATOR + name), elementSymbol.clone());
elementSymbol.setShortName(name);
}
elements.add(elementSymbol);
@@ -211,7 +212,7 @@
if (!ref.isPositional()) {
return ref;
}
- return (ElementSymbol)elements.get(ref.getIndex()).clone();
+ return elements.get(ref.getIndex()).clone();
}
};
DeepPostOrderNavigator.doVisit(currentCommand, emv);
@@ -329,6 +330,9 @@
case Command.TYPE_DYNAMIC: return DYNAMIC_COMMAND_RESOLVER;
case Command.TYPE_CREATE: return TEMP_TABLE_RESOLVER;
case Command.TYPE_DROP: return TEMP_TABLE_RESOLVER;
+ case Command.TYPE_ALTER_PROC:
+ case Command.TYPE_ALTER_TRIGGER:
+ case Command.TYPE_ALTER_VIEW: return ALTER_RESOLVER;
default:
throw new AssertionError("Unknown command type"); //$NON-NLS-1$
}
@@ -357,7 +361,7 @@
return false;
}
- FromClause clause = (FromClause)from.getClauses().get(0);
+ FromClause clause = from.getClauses().get(0);
if (!(clause instanceof UnaryFromClause)) {
return false;
@@ -456,19 +460,7 @@
}
Request.validateWithVisitor(new ValidationVisitor(), qmi, result);
- //ensure that null types match the view
- List<ElementSymbol> symbols = ResolverUtil.resolveElementsInGroup(virtualGroup, qmi);
- List<SingleElementSymbol> projectedSymbols = result.getProjectedSymbols();
- if (symbols.size() != projectedSymbols.size()) {
- Assertion.failed("View " + virtualGroup + " does not have the correct number of projected symbols"); //$NON-NLS-1$ //$NON-NLS-2$
- }
- for (int i = 0; i < projectedSymbols.size(); i++) {
- SingleElementSymbol projectedSymbol = projectedSymbols.get(i);
- if (projectedSymbol.getType() != DataTypeManager.DefaultDataClasses.NULL) {
- continue;
- }
- ResolverUtil.setSymbolType(projectedSymbol, symbols.get(i).getType());
- }
+ validateProjectedSymbols(virtualGroup, qmi, result);
cachedNode = new QueryNode(qnode.getQuery());
cachedNode.setCommand((Command)result.clone());
@@ -488,6 +480,34 @@
return cachedNode;
}
+ public static void validateProjectedSymbols(GroupSymbol virtualGroup,
+ QueryMetadataInterface qmi, Command result)
+ throws QueryMetadataException, TeiidComponentException, QueryValidatorException {
+ //ensure that null types match the view
+ List<ElementSymbol> symbols = ResolverUtil.resolveElementsInGroup(virtualGroup, qmi);
+ List<SingleElementSymbol> projectedSymbols = result.getProjectedSymbols();
+ validateProjectedSymbols(virtualGroup, symbols, projectedSymbols);
+ }
+
+ public static void validateProjectedSymbols(GroupSymbol virtualGroup,
+ List<ElementSymbol> symbols,
+ List<SingleElementSymbol> projectedSymbols)
+ throws QueryValidatorException {
+ if (symbols.size() != projectedSymbols.size()) {
+ throw new QueryValidatorException(QueryPlugin.Util.getString("QueryResolver.wrong_view_symbols", virtualGroup, symbols.size(), projectedSymbols.size())); //$NON-NLS-1$
+ }
+ for (int i = 0; i < projectedSymbols.size(); i++) {
+ SingleElementSymbol projectedSymbol = projectedSymbols.get(i);
+
+ ResolverUtil.setTypeIfNull(projectedSymbol, symbols.get(i).getType());
+
+ if (projectedSymbol.getType() != symbols.get(i).getType()) {
+ throw new QueryValidatorException(QueryPlugin.Util.getString("QueryResolver.wrong_view_symbol_type", virtualGroup, i+1, //$NON-NLS-1$
+ DataTypeManager.getDataTypeName(symbols.get(i).getType()), DataTypeManager.getDataTypeName(projectedSymbol.getType())));
+ }
+ }
+ }
+
public static boolean isView(GroupSymbol virtualGroup,
QueryMetadataInterface qmi) throws TeiidComponentException,
QueryMetadataException {
Added: trunk/engine/src/main/java/org/teiid/query/resolver/command/AlterResolver.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/resolver/command/AlterResolver.java (rev 0)
+++ trunk/engine/src/main/java/org/teiid/query/resolver/command/AlterResolver.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -0,0 +1,72 @@
+/*
+ * 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.query.resolver.command;
+
+import org.teiid.api.exception.query.QueryMetadataException;
+import org.teiid.api.exception.query.QueryResolverException;
+import org.teiid.core.TeiidComponentException;
+import org.teiid.metadata.Table.TriggerOperation;
+import org.teiid.query.QueryPlugin;
+import org.teiid.query.metadata.TempMetadataAdapter;
+import org.teiid.query.resolver.CommandResolver;
+import org.teiid.query.resolver.QueryResolver;
+import org.teiid.query.resolver.util.ResolverUtil;
+import org.teiid.query.sql.lang.Alter;
+import org.teiid.query.sql.lang.AlterProcedure;
+import org.teiid.query.sql.lang.AlterTrigger;
+import org.teiid.query.sql.lang.Command;
+
+public class AlterResolver implements CommandResolver {
+
+ @Override
+ public void resolveCommand(Command command, TempMetadataAdapter metadata,
+ boolean resolveNullLiterals) throws QueryMetadataException,
+ QueryResolverException, TeiidComponentException {
+ Alter<? extends Command> alter = (Alter<? extends Command>)command;
+ ResolverUtil.resolveGroup(alter.getTarget(), metadata);
+ int type = Command.TYPE_QUERY;
+ boolean viewTarget = true;
+ if (alter instanceof AlterTrigger) {
+ TriggerOperation op = ((AlterTrigger)alter).getOperation();
+ switch (op) {
+ case DELETE:
+ type = Command.TYPE_DELETE;
+ break;
+ case INSERT:
+ type = Command.TYPE_INSERT;
+ break;
+ case UPDATE:
+ type = Command.TYPE_UPDATE;
+ break;
+ }
+ } else if (alter instanceof AlterProcedure) {
+ type = Command.TYPE_STORED_PROCEDURE;
+ viewTarget = false;
+ }
+ if (viewTarget && !QueryResolver.isView(alter.getTarget(), metadata)) {
+ throw new QueryResolverException(QueryPlugin.Util.getString("AlterResolver.not_a_view", alter.getTarget())); //$NON-NLS-1$
+ }
+ QueryResolver.resolveCommand(alter.getDefinition(), alter.getTarget(), type, metadata.getDesignTimeMetadata());
+ }
+
+}
Property changes on: trunk/engine/src/main/java/org/teiid/query/resolver/command/AlterResolver.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified: trunk/engine/src/main/java/org/teiid/query/resolver/command/BatchedUpdateResolver.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/resolver/command/BatchedUpdateResolver.java 2011-04-29 01:33:21 UTC (rev 3130)
+++ trunk/engine/src/main/java/org/teiid/query/resolver/command/BatchedUpdateResolver.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -22,8 +22,6 @@
package org.teiid.query.resolver.command;
-import java.util.Iterator;
-
import org.teiid.api.exception.query.QueryMetadataException;
import org.teiid.api.exception.query.QueryResolverException;
import org.teiid.core.TeiidComponentException;
@@ -45,8 +43,7 @@
BatchedUpdateCommand batchedUpdateCommand = (BatchedUpdateCommand) command;
- for (Iterator i = batchedUpdateCommand.getSubCommands().iterator(); i.hasNext();) {
- Command subCommand = (Command)i.next();
+ for (Command subCommand : batchedUpdateCommand.getUpdateCommands()) {
QueryResolver.setChildMetadata(subCommand, command);
QueryResolver.resolveCommand(subCommand, metadata.getMetadata());
}
Modified: trunk/engine/src/main/java/org/teiid/query/resolver/command/XMLQueryResolver.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/resolver/command/XMLQueryResolver.java 2011-04-29 01:33:21 UTC (rev 3130)
+++ trunk/engine/src/main/java/org/teiid/query/resolver/command/XMLQueryResolver.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -73,26 +73,24 @@
query.setIsXML(true);
// get the group on this query
- Collection groups = GroupCollectorVisitor.getGroups(query, true);
- GroupSymbol group = (GroupSymbol) groups.iterator().next();
+ Collection<GroupSymbol> groups = GroupCollectorVisitor.getGroups(query, true);
+ GroupSymbol group = groups.iterator().next();
//external groups
GroupContext externalGroups = query.getExternalGroupContexts();
// valid elements for select
- List validSelectElems = getElementsInDocument(group, metadata);
+ List<ElementSymbol> validSelectElems = getElementsInDocument(group, metadata);
resolveXMLSelect(query, group, validSelectElems, metadata);
// valid elements for criteria and order by
- Collection validCriteriaElements = collectValidCriteriaElements(group, metadata);
+ Collection<ElementSymbol> validCriteriaElements = collectValidCriteriaElements(group, metadata);
Criteria crit = query.getCriteria();
OrderBy orderBy = query.getOrderBy();
- List commands = CommandCollectorVisitor.getCommands(query);
- for (Iterator i = commands.iterator(); i.hasNext();) {
- Command subCommand = (Command)i.next();
-
+ List<Command> commands = CommandCollectorVisitor.getCommands(query);
+ for (Command subCommand : commands) {
QueryResolver.setChildMetadata(subCommand, command);
QueryResolver.resolveCommand(subCommand, metadata.getMetadata());
@@ -130,7 +128,7 @@
* @throws QueryMetadataException if resolving fails
* @throws TeiidComponentException if resolving fails
*/
- void resolveXMLSelect(Query query, GroupSymbol group, List validElements, QueryMetadataInterface metadata)
+ void resolveXMLSelect(Query query, GroupSymbol group, List<ElementSymbol> validElements, QueryMetadataInterface metadata)
throws QueryMetadataException, TeiidComponentException, QueryResolverException {
GroupContext externalGroups = null;
@@ -188,7 +186,7 @@
resolveElement(elementSymbol, validElements, externalGroups, metadata);
// now find all the elements under this node and set as elements.
- List elementsInNode = getElementsUnderNode(elementSymbol, validElements, metadata);
+ List<ElementSymbol> elementsInNode = getElementsUnderNode(elementSymbol, validElements, metadata);
((AllInGroupSymbol)ss).setElementSymbols(elementsInNode);
}
} else if (ss instanceof AllSymbol) {
@@ -217,11 +215,11 @@
* @throws TeiidComponentException
* @throws QueryResolverException
*/
- public static Collection collectValidCriteriaElements(GroupSymbol group, QueryMetadataInterface metadata)
+ public static Collection<ElementSymbol> collectValidCriteriaElements(GroupSymbol group, QueryMetadataInterface metadata)
throws QueryMetadataException, TeiidComponentException, QueryResolverException {
// Get all groups and elements
- List validElements = getElementsInDocument(group, metadata);
+ List<ElementSymbol> validElements = getElementsInDocument(group, metadata);
// Create GroupSymbol for temp groups and add to groups
Collection tempGroups = metadata.getXMLTempGroups(group.getMetadataID());
@@ -257,14 +255,12 @@
* @param metadata QueryMetadataInterface the metadata(for resolving criteria on temp groups)
* @throws QueryResolverException if any of the above fail conditions are met
*/
- public static void resolveXMLCriteria(Criteria criteria,GroupContext externalGroups, Collection validElements, QueryMetadataInterface metadata)
+ public static void resolveXMLCriteria(Criteria criteria,GroupContext externalGroups, Collection<ElementSymbol> validElements, QueryMetadataInterface metadata)
throws QueryMetadataException, TeiidComponentException, QueryResolverException {
// Walk through each element in criteria and check against valid elements
- Collection critElems = ElementCollectorVisitor.getElements(criteria, false);
- Iterator critElemIter = critElems.iterator();
- while(critElemIter.hasNext()) {
- ElementSymbol critElem = (ElementSymbol) critElemIter.next();
+ Collection<ElementSymbol> critElems = ElementCollectorVisitor.getElements(criteria, false);
+ for (ElementSymbol critElem : critElems) {
if(! critElem.isExternalReference()) {
resolveElement(critElem, validElements, externalGroups, metadata);
}
@@ -282,14 +278,12 @@
* @throws QueryMetadataException if resolving fails
* @throws TeiidComponentException if resolving fails
*/
- static void resolveXMLOrderBy(OrderBy orderBy, GroupContext externalGroups, Collection validElements, QueryMetadataInterface metadata)
+ static void resolveXMLOrderBy(OrderBy orderBy, GroupContext externalGroups, Collection<ElementSymbol> validElements, QueryMetadataInterface metadata)
throws QueryMetadataException, TeiidComponentException, QueryResolverException {
// Walk through each element in OrderBy clause and check against valid elements
- Collection orderElems = ElementCollectorVisitor.getElements(orderBy, false);
- Iterator orderElemIter = orderElems.iterator();
- while(orderElemIter.hasNext()) {
- ElementSymbol orderElem = (ElementSymbol) orderElemIter.next();
+ Collection<ElementSymbol> orderElems = ElementCollectorVisitor.getElements(orderBy, false);
+ for (ElementSymbol orderElem : orderElems) {
resolveElement(orderElem, validElements, externalGroups, metadata);
}
}
@@ -304,7 +298,7 @@
* @throws QueryMetadataException
* @throws TeiidComponentException
*/
- static void resolveElement(ElementSymbol elem, Collection validElements, GroupContext externalGroups, QueryMetadataInterface metadata)
+ static void resolveElement(ElementSymbol elem, Collection<ElementSymbol> validElements, GroupContext externalGroups, QueryMetadataInterface metadata)
throws QueryResolverException, QueryMetadataException, TeiidComponentException {
// Get exact matching name
@@ -313,11 +307,11 @@
// Prepare results
ElementSymbol exactMatch = null;
- List partialMatches = new ArrayList(2); // anything over 1 is an error and should be rare
+ List<ElementSymbol> partialMatches = new ArrayList<ElementSymbol>(2); // anything over 1 is an error and should be rare
//List of XML attributes that might match the criteria element,
//if the criteria is specified without the optional "@" sign
- List attributeMatches = new ArrayList(2);
+ List<ElementSymbol> attributeMatches = new ArrayList<ElementSymbol>(2);
// look up name based on ID match - will work for uuid version
try {
@@ -333,10 +327,7 @@
}
// Walk through each valid element looking for a match
- Iterator elemIter = validElements.iterator();
- while(elemIter.hasNext()) {
- ElementSymbol currentElem = (ElementSymbol) elemIter.next();
-
+ for (ElementSymbol currentElem : validElements) {
// Look for exact match
if(currentElem.getName().equalsIgnoreCase(critElemName)) {
exactMatch = currentElem;
@@ -368,9 +359,9 @@
// Check for single partial match
if(exactMatch == null){
if (partialMatches.size() == 1) {
- exactMatch = (ElementSymbol) partialMatches.get(0);
+ exactMatch = partialMatches.get(0);
} else if (partialMatches.size() == 0 && attributeMatches.size() == 1){
- exactMatch = (ElementSymbol) attributeMatches.get(0);
+ exactMatch = attributeMatches.get(0);
}
}
@@ -395,18 +386,17 @@
}
}
- static List getElementsInDocument(GroupSymbol group, QueryMetadataInterface metadata)
- throws QueryMetadataException, QueryResolverException, TeiidComponentException {
+ static List<ElementSymbol> getElementsInDocument(GroupSymbol group, QueryMetadataInterface metadata)
+ throws QueryMetadataException, TeiidComponentException {
return ResolverUtil.resolveElementsInGroup(group, metadata);
}
- static List getElementsUnderNode(ElementSymbol node, List validElements, QueryMetadataInterface metadata)
+ static List<ElementSymbol> getElementsUnderNode(ElementSymbol node, List<ElementSymbol> validElements, QueryMetadataInterface metadata)
throws TeiidComponentException, QueryMetadataException {
- List elements = new ArrayList();
+ List<ElementSymbol> elements = new ArrayList<ElementSymbol>();
String nodeName = metadata.getFullName(node.getMetadataID());
- for (Iterator i = validElements.iterator(); i.hasNext();) {
- ElementSymbol validElement = (ElementSymbol)i.next();
+ for (ElementSymbol validElement : validElements) {
String qualifiedName = validElement.getName();
if (qualifiedName.equals(nodeName) || qualifiedName.startsWith(nodeName+ElementSymbol.SEPARATOR)) {
elements.add(validElement);
Modified: trunk/engine/src/main/java/org/teiid/query/resolver/util/ResolverUtil.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/resolver/util/ResolverUtil.java 2011-04-29 01:33:21 UTC (rev 3130)
+++ trunk/engine/src/main/java/org/teiid/query/resolver/util/ResolverUtil.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -627,16 +627,15 @@
SingleElementSymbol symbol = (SingleElementSymbol)selectSymbol;
- if(!DataTypeManager.DefaultDataClasses.NULL.equals(symbol.getType()) && symbol.getType() != null) {
- continue;
- }
-
- setSymbolType(symbol, DataTypeManager.DefaultDataClasses.STRING);
+ setTypeIfNull(symbol, DataTypeManager.DefaultDataClasses.STRING);
}
}
- public static void setSymbolType(SingleElementSymbol symbol,
+ public static void setTypeIfNull(SingleElementSymbol symbol,
Class<?> replacement) {
+ if(!DataTypeManager.DefaultDataClasses.NULL.equals(symbol.getType()) && symbol.getType() != null) {
+ return;
+ }
if(symbol instanceof AliasSymbol) {
symbol = ((AliasSymbol)symbol).getSymbol();
}
@@ -659,10 +658,7 @@
}
} else if(symbol instanceof ElementSymbol) {
ElementSymbol elementSymbol = (ElementSymbol)symbol;
- Class elementType = elementSymbol.getType();
- if(elementType != null && elementType.equals(DataTypeManager.DefaultDataClasses.NULL)) {
- elementSymbol.setType(replacement);
- }
+ elementSymbol.setType(replacement);
}
}
Modified: trunk/engine/src/main/java/org/teiid/query/sql/LanguageVisitor.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/sql/LanguageVisitor.java 2011-04-29 01:33:21 UTC (rev 3130)
+++ trunk/engine/src/main/java/org/teiid/query/sql/LanguageVisitor.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -22,9 +22,88 @@
package org.teiid.query.sql;
-import org.teiid.query.sql.lang.*;
-import org.teiid.query.sql.proc.*;
-import org.teiid.query.sql.symbol.*;
+import org.teiid.query.sql.lang.AlterProcedure;
+import org.teiid.query.sql.lang.AlterTrigger;
+import org.teiid.query.sql.lang.AlterView;
+import org.teiid.query.sql.lang.ArrayTable;
+import org.teiid.query.sql.lang.BatchedUpdateCommand;
+import org.teiid.query.sql.lang.BetweenCriteria;
+import org.teiid.query.sql.lang.CompareCriteria;
+import org.teiid.query.sql.lang.CompoundCriteria;
+import org.teiid.query.sql.lang.Create;
+import org.teiid.query.sql.lang.Delete;
+import org.teiid.query.sql.lang.DependentSetCriteria;
+import org.teiid.query.sql.lang.Drop;
+import org.teiid.query.sql.lang.DynamicCommand;
+import org.teiid.query.sql.lang.ExistsCriteria;
+import org.teiid.query.sql.lang.ExpressionCriteria;
+import org.teiid.query.sql.lang.From;
+import org.teiid.query.sql.lang.GroupBy;
+import org.teiid.query.sql.lang.Insert;
+import org.teiid.query.sql.lang.Into;
+import org.teiid.query.sql.lang.IsNullCriteria;
+import org.teiid.query.sql.lang.JoinPredicate;
+import org.teiid.query.sql.lang.JoinType;
+import org.teiid.query.sql.lang.Limit;
+import org.teiid.query.sql.lang.MatchCriteria;
+import org.teiid.query.sql.lang.NotCriteria;
+import org.teiid.query.sql.lang.Option;
+import org.teiid.query.sql.lang.OrderBy;
+import org.teiid.query.sql.lang.OrderByItem;
+import org.teiid.query.sql.lang.ProcedureContainer;
+import org.teiid.query.sql.lang.Query;
+import org.teiid.query.sql.lang.Select;
+import org.teiid.query.sql.lang.SetClause;
+import org.teiid.query.sql.lang.SetClauseList;
+import org.teiid.query.sql.lang.SetCriteria;
+import org.teiid.query.sql.lang.SetQuery;
+import org.teiid.query.sql.lang.StoredProcedure;
+import org.teiid.query.sql.lang.SubqueryCompareCriteria;
+import org.teiid.query.sql.lang.SubqueryFromClause;
+import org.teiid.query.sql.lang.SubquerySetCriteria;
+import org.teiid.query.sql.lang.TextTable;
+import org.teiid.query.sql.lang.UnaryFromClause;
+import org.teiid.query.sql.lang.Update;
+import org.teiid.query.sql.lang.WithQueryCommand;
+import org.teiid.query.sql.lang.XMLTable;
+import org.teiid.query.sql.proc.AssignmentStatement;
+import org.teiid.query.sql.proc.Block;
+import org.teiid.query.sql.proc.BreakStatement;
+import org.teiid.query.sql.proc.CommandStatement;
+import org.teiid.query.sql.proc.ContinueStatement;
+import org.teiid.query.sql.proc.CreateUpdateProcedureCommand;
+import org.teiid.query.sql.proc.CriteriaSelector;
+import org.teiid.query.sql.proc.DeclareStatement;
+import org.teiid.query.sql.proc.HasCriteria;
+import org.teiid.query.sql.proc.IfStatement;
+import org.teiid.query.sql.proc.LoopStatement;
+import org.teiid.query.sql.proc.RaiseErrorStatement;
+import org.teiid.query.sql.proc.TranslateCriteria;
+import org.teiid.query.sql.proc.TriggerAction;
+import org.teiid.query.sql.proc.WhileStatement;
+import org.teiid.query.sql.symbol.AggregateSymbol;
+import org.teiid.query.sql.symbol.AliasSymbol;
+import org.teiid.query.sql.symbol.AllInGroupSymbol;
+import org.teiid.query.sql.symbol.AllSymbol;
+import org.teiid.query.sql.symbol.CaseExpression;
+import org.teiid.query.sql.symbol.Constant;
+import org.teiid.query.sql.symbol.DerivedColumn;
+import org.teiid.query.sql.symbol.ElementSymbol;
+import org.teiid.query.sql.symbol.ExpressionSymbol;
+import org.teiid.query.sql.symbol.Function;
+import org.teiid.query.sql.symbol.GroupSymbol;
+import org.teiid.query.sql.symbol.QueryString;
+import org.teiid.query.sql.symbol.Reference;
+import org.teiid.query.sql.symbol.ScalarSubquery;
+import org.teiid.query.sql.symbol.SearchedCaseExpression;
+import org.teiid.query.sql.symbol.TextLine;
+import org.teiid.query.sql.symbol.XMLAttributes;
+import org.teiid.query.sql.symbol.XMLElement;
+import org.teiid.query.sql.symbol.XMLForest;
+import org.teiid.query.sql.symbol.XMLNamespaces;
+import org.teiid.query.sql.symbol.XMLParse;
+import org.teiid.query.sql.symbol.XMLQuery;
+import org.teiid.query.sql.symbol.XMLSerialize;
/**
* <p>The LanguageVisitor can be used to visit a LanguageObject as if it were a tree
@@ -140,4 +219,8 @@
public void visit(WithQueryCommand obj) {}
public void visit(TriggerAction obj) {}
public void visit(ArrayTable obj) {}
+
+ public void visit(AlterView obj) {}
+ public void visit(AlterProcedure obj) {}
+ public void visit(AlterTrigger obj) {}
}
Added: trunk/engine/src/main/java/org/teiid/query/sql/lang/Alter.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/sql/lang/Alter.java (rev 0)
+++ trunk/engine/src/main/java/org/teiid/query/sql/lang/Alter.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -0,0 +1,87 @@
+/*
+ * 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.query.sql.lang;
+
+import java.util.List;
+
+import org.teiid.core.util.EquivalenceUtil;
+import org.teiid.core.util.HashCodeUtil;
+import org.teiid.query.sql.symbol.GroupSymbol;
+import org.teiid.query.sql.symbol.SingleElementSymbol;
+
+public abstract class Alter<T extends Command> extends Command {
+
+ private GroupSymbol target;
+ private T definition;
+
+ public GroupSymbol getTarget() {
+ return target;
+ }
+
+ public void setTarget(GroupSymbol target) {
+ this.target = target;
+ }
+
+ public T getDefinition() {
+ return definition;
+ }
+
+ public void setDefinition(T definition) {
+ this.definition = definition;
+ }
+
+ @Override
+ public boolean areResultsCachable() {
+ return false;
+ }
+
+ @Override
+ public List<SingleElementSymbol> getProjectedSymbols() {
+ return Command.getUpdateCommandSymbol();
+ }
+
+ public void cloneOnTo(Alter<T> clone) {
+ copyMetadataState(clone);
+ clone.setDefinition((T)getDefinition().clone());
+ clone.setTarget(getTarget().clone());
+ }
+
+ @Override
+ public int hashCode() {
+ return HashCodeUtil.hashCode(this.target.hashCode(), this.definition);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (obj.getClass() != this.getClass()) {
+ return false;
+ }
+ Alter<?> other = (Alter<?>)obj;
+ return EquivalenceUtil.areEqual(this.target, other.target)
+ && EquivalenceUtil.areEqual(this.definition, other.definition);
+ }
+
+}
Property changes on: trunk/engine/src/main/java/org/teiid/query/sql/lang/Alter.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: trunk/engine/src/main/java/org/teiid/query/sql/lang/AlterProcedure.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/sql/lang/AlterProcedure.java (rev 0)
+++ trunk/engine/src/main/java/org/teiid/query/sql/lang/AlterProcedure.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -0,0 +1,45 @@
+/*
+ * 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.query.sql.lang;
+
+import org.teiid.query.sql.LanguageVisitor;
+import org.teiid.query.sql.proc.CreateUpdateProcedureCommand;
+
+public class AlterProcedure extends Alter<CreateUpdateProcedureCommand> {
+
+ @Override
+ public void acceptVisitor(LanguageVisitor visitor) {
+ visitor.visit(this);
+ }
+
+ @Override
+ public AlterProcedure clone() {
+ AlterProcedure clone = new AlterProcedure();
+ this.cloneOnTo(clone);
+ return clone;
+ }
+
+ @Override
+ public int getType() {
+ return TYPE_ALTER_PROC;
+ }
+}
Property changes on: trunk/engine/src/main/java/org/teiid/query/sql/lang/AlterProcedure.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: trunk/engine/src/main/java/org/teiid/query/sql/lang/AlterTrigger.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/sql/lang/AlterTrigger.java (rev 0)
+++ trunk/engine/src/main/java/org/teiid/query/sql/lang/AlterTrigger.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -0,0 +1,70 @@
+/*
+ * 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.query.sql.lang;
+
+import org.teiid.metadata.Table;
+import org.teiid.query.sql.LanguageVisitor;
+import org.teiid.query.sql.proc.TriggerAction;
+
+public class AlterTrigger extends Alter<TriggerAction> {
+
+ private Table.TriggerOperation operation;
+
+ public Table.TriggerOperation getOperation() {
+ return operation;
+ }
+
+ public void setOperation(Table.TriggerOperation operation) {
+ this.operation = operation;
+ }
+
+ @Override
+ public void acceptVisitor(LanguageVisitor visitor) {
+ visitor.visit(this);
+ }
+
+ @Override
+ public AlterTrigger clone() {
+ AlterTrigger clone = new AlterTrigger();
+ cloneOnTo(clone);
+ clone.operation = operation;
+ return clone;
+ }
+
+ @Override
+ public int getType() {
+ return TYPE_ALTER_TRIGGER;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (!super.equals(obj)) {
+ return false;
+ }
+ if (obj == this) {
+ return true;
+ }
+ AlterTrigger other = (AlterTrigger)obj;
+ return other.operation == this.operation;
+ }
+}
Property changes on: trunk/engine/src/main/java/org/teiid/query/sql/lang/AlterTrigger.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: trunk/engine/src/main/java/org/teiid/query/sql/lang/AlterView.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/sql/lang/AlterView.java (rev 0)
+++ trunk/engine/src/main/java/org/teiid/query/sql/lang/AlterView.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -0,0 +1,44 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * See the COPYRIGHT.txt file distributed with this work for information
+ * regarding copyright ownership. Some portions may be licensed
+ * to Red Hat, Inc. under one or more contributor license agreements.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA.
+ */
+package org.teiid.query.sql.lang;
+
+import org.teiid.query.sql.LanguageVisitor;
+
+public class AlterView extends Alter<QueryCommand> {
+
+ @Override
+ public void acceptVisitor(LanguageVisitor visitor) {
+ visitor.visit(this);
+ }
+
+ @Override
+ public AlterView clone() {
+ AlterView clone = new AlterView();
+ this.cloneOnTo(clone);
+ return clone;
+ }
+
+ @Override
+ public int getType() {
+ return TYPE_ALTER_VIEW;
+ }
+}
Property changes on: trunk/engine/src/main/java/org/teiid/query/sql/lang/AlterView.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified: trunk/engine/src/main/java/org/teiid/query/sql/lang/BatchedUpdateCommand.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/sql/lang/BatchedUpdateCommand.java 2011-04-29 01:33:21 UTC (rev 3130)
+++ trunk/engine/src/main/java/org/teiid/query/sql/lang/BatchedUpdateCommand.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -40,13 +40,6 @@
protected List<Command> commands;
private List<VariableContext> variableContexts; //processing state
- /**
- * @see org.teiid.query.sql.lang.Command#getSubCommands()
- */
- public List<Command> getSubCommands() {
- return commands;
- }
-
/**
*
* @param updateCommands
@@ -62,7 +55,7 @@
* @since 4.2
*/
public List<Command> getUpdateCommands() {
- return getSubCommands();
+ return commands;
}
/**
Modified: trunk/engine/src/main/java/org/teiid/query/sql/lang/Command.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/sql/lang/Command.java 2011-04-29 01:33:21 UTC (rev 3130)
+++ trunk/engine/src/main/java/org/teiid/query/sql/lang/Command.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -26,7 +26,6 @@
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@@ -103,6 +102,12 @@
public static final int TYPE_DROP = 12;
public static final int TYPE_TRIGGER_ACTION = 13;
+
+ public static final int TYPE_ALTER_VIEW = 14;
+
+ public static final int TYPE_ALTER_PROC = 15;
+
+ public static final int TYPE_ALTER_TRIGGER = 16;
private static List<SingleElementSymbol> updateCommandSymbol;
@@ -144,15 +149,6 @@
this.correlatedReferences = correlatedReferences;
}
- /**
- * Gets the subCommands (both embedded and non-embedded) under this command. In general the returned list
- * is not safe to manipulate (see @link#CommandContainer insead)
- * @return
- */
- public List<Command> getSubCommands() {
- return CommandCollectorVisitor.getCommands(this);
- }
-
public void setTemporaryMetadata(Map metadata) {
this.tempGroupIDs = metadata;
}
@@ -264,9 +260,7 @@
// Add children recursively
tabLevel++;
- Iterator iter = getSubCommands().iterator();
- while(iter.hasNext()) {
- Command subCommand = (Command) iter.next();
+ for (Command subCommand : CommandCollectorVisitor.getCommands(this)) {
subCommand.printCommandTree(str, tabLevel);
}
}
Modified: trunk/engine/src/main/java/org/teiid/query/sql/navigator/PreOrPostOrderNavigator.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/sql/navigator/PreOrPostOrderNavigator.java 2011-04-29 01:33:21 UTC (rev 3130)
+++ trunk/engine/src/main/java/org/teiid/query/sql/navigator/PreOrPostOrderNavigator.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -26,6 +26,9 @@
import org.teiid.query.sql.LanguageObject;
import org.teiid.query.sql.LanguageVisitor;
+import org.teiid.query.sql.lang.AlterProcedure;
+import org.teiid.query.sql.lang.AlterTrigger;
+import org.teiid.query.sql.lang.AlterView;
import org.teiid.query.sql.lang.ArrayTable;
import org.teiid.query.sql.lang.BatchedUpdateCommand;
import org.teiid.query.sql.lang.BetweenCriteria;
@@ -667,6 +670,30 @@
postVisitVisitor(obj);
}
+ @Override
+ public void visit(AlterProcedure obj) {
+ preVisitVisitor(obj);
+ visitNode(obj.getTarget());
+ visitNode(obj.getDefinition());
+ postVisitVisitor(obj);
+ }
+
+ @Override
+ public void visit(AlterTrigger obj) {
+ preVisitVisitor(obj);
+ visitNode(obj.getTarget());
+ visitNode(obj.getDefinition());
+ postVisitVisitor(obj);
+ }
+
+ @Override
+ public void visit(AlterView obj) {
+ preVisitVisitor(obj);
+ visitNode(obj.getTarget());
+ visitNode(obj.getDefinition());
+ postVisitVisitor(obj);
+ }
+
public static void doVisit(LanguageObject object, LanguageVisitor visitor, boolean order) {
doVisit(object, visitor, order, false);
}
Modified: trunk/engine/src/main/java/org/teiid/query/sql/visitor/CommandCollectorVisitor.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/sql/visitor/CommandCollectorVisitor.java 2011-04-29 01:33:21 UTC (rev 3130)
+++ trunk/engine/src/main/java/org/teiid/query/sql/visitor/CommandCollectorVisitor.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -27,6 +27,9 @@
import org.teiid.query.sql.LanguageObject;
import org.teiid.query.sql.LanguageVisitor;
+import org.teiid.query.sql.lang.AlterProcedure;
+import org.teiid.query.sql.lang.AlterTrigger;
+import org.teiid.query.sql.lang.AlterView;
import org.teiid.query.sql.lang.BatchedUpdateCommand;
import org.teiid.query.sql.lang.Command;
import org.teiid.query.sql.lang.ExistsCriteria;
@@ -116,6 +119,21 @@
this.commands.addAll(obj.getUpdateCommands());
}
+ @Override
+ public void visit(AlterProcedure alterProcedure) {
+ this.commands.add(alterProcedure.getDefinition());
+ }
+
+ @Override
+ public void visit(AlterTrigger alterTrigger) {
+ this.commands.add(alterTrigger.getDefinition());
+ }
+
+ @Override
+ public void visit(AlterView alterView) {
+ this.commands.add(alterView.getDefinition());
+ }
+
/**
* Helper to quickly get the commands from obj
* @param obj Language object
Modified: trunk/engine/src/main/java/org/teiid/query/sql/visitor/SQLStringVisitor.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/sql/visitor/SQLStringVisitor.java 2011-04-29 01:33:21 UTC (rev 3130)
+++ trunk/engine/src/main/java/org/teiid/query/sql/visitor/SQLStringVisitor.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -38,6 +38,9 @@
import org.teiid.metadata.BaseColumn.NullType;
import org.teiid.query.sql.LanguageObject;
import org.teiid.query.sql.LanguageVisitor;
+import org.teiid.query.sql.lang.AlterProcedure;
+import org.teiid.query.sql.lang.AlterTrigger;
+import org.teiid.query.sql.lang.AlterView;
import org.teiid.query.sql.lang.ArrayTable;
import org.teiid.query.sql.lang.AtomicCriteria;
import org.teiid.query.sql.lang.BetweenCriteria;
@@ -1955,6 +1958,55 @@
append(SPACE);
outputDisplayName(obj.getName());
}
+
+ @Override
+ public void visit(AlterProcedure alterProcedure) {
+ append(ALTER);
+ append(SPACE);
+ append(PROCEDURE);
+ append(SPACE);
+ append(alterProcedure.getTarget());
+ beginClause(1);
+ append(AS);
+ addCacheHint(alterProcedure.getCacheHint());
+ append(alterProcedure.getDefinition().getBlock());
+ }
+
+ @Override
+ public void visit(AlterTrigger alterTrigger) {
+ append(ALTER);
+ append(SPACE);
+ append(TRIGGER);
+ append(SPACE);
+ append(ON);
+ append(SPACE);
+ append(alterTrigger.getTarget());
+ beginClause(0);
+ append(NonReserved.INSTEAD);
+ append(SPACE);
+ append(OF);
+ append(SPACE);
+ append(alterTrigger.getOperation());
+ beginClause(0);
+ append(AS);
+ append("\n"); //$NON-NLS-1$
+ addTabs(0);
+ append(alterTrigger.getDefinition());
+ }
+
+ @Override
+ public void visit(AlterView alterView) {
+ append(ALTER);
+ append(SPACE);
+ append(NonReserved.VIEW);
+ append(SPACE);
+ append(alterView.getTarget());
+ beginClause(0);
+ append(AS);
+ append("\n"); //$NON-NLS-1$
+ addTabs(0);
+ append(alterView.getDefinition());
+ }
public static String escapeSinglePart( String part ) {
if (isReservedWord(part)) {
Modified: trunk/engine/src/main/java/org/teiid/query/validator/AbstractValidationVisitor.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/validator/AbstractValidationVisitor.java 2011-04-29 01:33:21 UTC (rev 3130)
+++ trunk/engine/src/main/java/org/teiid/query/validator/AbstractValidationVisitor.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -128,18 +128,18 @@
return false;
}
- protected Collection validateElementsSupport(Collection elements, int supportsFlag) {
+ protected Collection<ElementSymbol> validateElementsSupport(Collection<ElementSymbol> elements, int supportsFlag) {
// Collect any identifiers not supporting flag
- List dontSupport = null;
+ List<ElementSymbol> dontSupport = null;
ElementSymbol symbol = null;
try {
- Iterator elemIter = elements.iterator();
+ Iterator<ElementSymbol> elemIter = elements.iterator();
while(elemIter.hasNext()) {
- symbol = (ElementSymbol) elemIter.next();
+ symbol = elemIter.next();
if(! getMetadata().elementSupports(symbol.getMetadataID(), supportsFlag)) {
if(dontSupport == null) {
- dontSupport = new ArrayList();
+ dontSupport = new ArrayList<ElementSymbol>();
}
dontSupport.add(symbol);
}
Modified: trunk/engine/src/main/java/org/teiid/query/validator/ValidationVisitor.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/validator/ValidationVisitor.java 2011-04-29 01:33:21 UTC (rev 3130)
+++ trunk/engine/src/main/java/org/teiid/query/validator/ValidationVisitor.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -49,11 +49,16 @@
import org.teiid.query.function.FunctionLibrary;
import org.teiid.query.function.FunctionMethods;
import org.teiid.query.function.source.XMLSystemFunctions;
+import org.teiid.query.metadata.StoredProcedureInfo;
import org.teiid.query.metadata.SupportConstants;
+import org.teiid.query.resolver.QueryResolver;
import org.teiid.query.resolver.util.ResolverUtil;
import org.teiid.query.sql.LanguageObject;
import org.teiid.query.sql.LanguageVisitor;
import org.teiid.query.sql.ProcedureReservedWords;
+import org.teiid.query.sql.lang.AlterProcedure;
+import org.teiid.query.sql.lang.AlterTrigger;
+import org.teiid.query.sql.lang.AlterView;
import org.teiid.query.sql.lang.BatchedUpdateCommand;
import org.teiid.query.sql.lang.BetweenCriteria;
import org.teiid.query.sql.lang.Command;
@@ -175,11 +180,11 @@
// ############### Visitor methods for language objects ##################
public void visit(BatchedUpdateCommand obj) {
- List commands = obj.getUpdateCommands();
+ List<Command> commands = obj.getUpdateCommands();
Command command = null;
int type = 0;
for (int i = 0; i < commands.size(); i++) {
- command = (Command)commands.get(i);
+ command = commands.get(i);
type = command.getType();
if (type != Command.TYPE_INSERT &&
type != Command.TYPE_UPDATE &&
@@ -295,7 +300,7 @@
}
this.validateRowLimitFunctionNotInInvalidCriteria(obj);
- Collection projSymbols = obj.getCommand().getProjectedSymbols();
+ Collection<SingleElementSymbol> projSymbols = obj.getCommand().getProjectedSymbols();
//Subcommand should have one projected symbol (query with one expression
//in SELECT or stored procedure execution that returns a single value).
@@ -358,8 +363,8 @@
handleValidationError(QueryPlugin.Util.getString("ERR.015.004.0036"), obj); //$NON-NLS-1$
}
- for (Iterator functions = FunctionCollectorVisitor.getFunctions(obj.getArg(1), false).iterator(); functions.hasNext();) {
- Function function = (Function)functions.next();
+ for (Iterator<Function> functions = FunctionCollectorVisitor.getFunctions(obj.getArg(1), false).iterator(); functions.hasNext();) {
+ Function function = functions.next();
if (function.getFunctionDescriptor().getName().equalsIgnoreCase(FunctionLibrary.CONTEXT)) {
handleValidationError(QueryPlugin.Util.getString("ValidationVisitor.Context_function_nested"), obj); //$NON-NLS-1$
@@ -522,7 +527,7 @@
// CompareCriteria which is entirely it's own conjunct (not OR'ed with anything else)
if (isXML) {
// Collect all occurrances of rowlimit and rowlimitexception functions
- List rowLimitFunctions = new ArrayList();
+ List<Function> rowLimitFunctions = new ArrayList<Function>();
FunctionCollectorVisitor visitor = new FunctionCollectorVisitor(rowLimitFunctions, FunctionLibrary.ROWLIMIT);
PreOrderNavigator.doVisit(obj, visitor);
visitor = new FunctionCollectorVisitor(rowLimitFunctions, FunctionLibrary.ROWLIMITEXCEPTION);
@@ -532,7 +537,7 @@
// Verify each use of rowlimit function is in a compare criteria that is
// entirely it's own conjunct
- Iterator conjunctIter = Criteria.separateCriteriaByAnd(obj).iterator();
+ Iterator<Criteria> conjunctIter = Criteria.separateCriteriaByAnd(obj).iterator();
int i = 0;
while (conjunctIter.hasNext() && i<functionCount ) {
@@ -587,7 +592,7 @@
return;
}
- Collection transleElmnts = ElementCollectorVisitor.getElements(obj, true);
+ Collection<ElementSymbol> transleElmnts = ElementCollectorVisitor.getElements(obj, true);
Collection<GroupSymbol> groups = GroupCollectorVisitor.getGroups(this.currentCommand, true);
int selectType = obj.getSelector().getSelectorType();
@@ -616,10 +621,10 @@
}
}
}
- Iterator critEmlntIter = ElementCollectorVisitor.getElements(predCrit, true).iterator();
+ Iterator<ElementSymbol> critEmlntIter = ElementCollectorVisitor.getElements(predCrit, true).iterator();
// collect all elements elements on the criteria map to
while(critEmlntIter.hasNext()) {
- ElementSymbol criteriaElement = (ElementSymbol) critEmlntIter.next();
+ ElementSymbol criteriaElement = critEmlntIter.next();
if(transleElmnts.contains(criteriaElement)) {
Expression mappedExpr = (Expression) symbolMap.get(criteriaElement);
if(mappedExpr instanceof AggregateSymbol) {
@@ -639,9 +644,9 @@
return;
}
- Collection elements = ElementCollectorVisitor.getElements(obj, true);
+ Collection<ElementSymbol> elements = ElementCollectorVisitor.getElements(obj, true);
- Collection cantSelect = validateElementsSupport(
+ Collection<ElementSymbol> cantSelect = validateElementsSupport(
elements,
SupportConstants.Element.SELECT );
@@ -771,10 +776,8 @@
}
// Validate SELECT
- List projectedSymbols = select.getProjectedSymbols();
- Iterator symbolIter = projectedSymbols.iterator();
- while(symbolIter.hasNext()) {
- SingleElementSymbol symbol = (SingleElementSymbol) symbolIter.next();
+ List<SingleElementSymbol> projectedSymbols = select.getProjectedSymbols();
+ for (SingleElementSymbol symbol : projectedSymbols) {
AggregateValidationVisitor.validate(symbol, visitor);
}
@@ -922,13 +925,13 @@
* @since 4.2
*/
protected void validateSelectInto(Query query) {
- List symbols = query.getSelect().getProjectedSymbols();
+ List<SingleElementSymbol> symbols = query.getSelect().getProjectedSymbols();
GroupSymbol intoGroup = query.getInto().getGroup();
validateInto(query, symbols, intoGroup);
}
private void validateInto(LanguageObject query,
- List symbols,
+ List<SingleElementSymbol> symbols,
GroupSymbol intoGroup) {
try {
List elementIDs = getMetadata().getElementIDsInGroupID(intoGroup.getMetadataID());
@@ -940,14 +943,14 @@
}
for (int symbolNum = 0; symbolNum < symbols.size(); symbolNum++) {
- SingleElementSymbol symbol = (SingleElementSymbol)symbols.get(symbolNum);
+ SingleElementSymbol symbol = symbols.get(symbolNum);
Object elementID = elementIDs.get(symbolNum);
// Check if supports updates
if (!getMetadata().elementSupports(elementID, SupportConstants.Element.UPDATE)) {
handleValidationError(QueryPlugin.Util.getString("ValidationVisitor.element_updates_not_allowed", getMetadata().getFullName(elementID)), intoGroup); //$NON-NLS-1$
}
- Class symbolType = symbol.getType();
+ Class<?> symbolType = symbol.getType();
String symbolTypeName = DataTypeManager.getDataTypeName(symbolType);
String targetTypeName = getMetadata().getElementType(elementID);
if (symbolTypeName.equals(targetTypeName)) {
@@ -970,17 +973,16 @@
* @since 4.2
*/
protected void validateContainsRowsUpdatedVariable(CreateUpdateProcedureCommand obj) {
- final Collection assignVars = new ArrayList();
+ final Collection<ElementSymbol> assignVars = new ArrayList<ElementSymbol>();
// Use visitor to find assignment statements
LanguageVisitor visitor = new LanguageVisitor() {
- public void visit(AssignmentStatement obj) {
- assignVars.add(obj.getVariable());
+ public void visit(AssignmentStatement stmt) {
+ assignVars.add(stmt.getVariable());
}
};
PreOrderNavigator.doVisit(obj, visitor);
boolean foundVar = false;
- for(Iterator varIter = assignVars.iterator(); varIter.hasNext();) {
- ElementSymbol variable = (ElementSymbol) varIter.next();
+ for (ElementSymbol variable : assignVars) {
if(variable.getShortName().equalsIgnoreCase(ProcedureReservedWords.ROWS_UPDATED)) {
foundVar = true;
break;
@@ -993,7 +995,7 @@
private void validateRowLimitFunctionNotInInvalidCriteria(Criteria obj) {
// Collect all occurrances of rowlimit and rowlimitexception functions
- List rowLimitFunctions = new ArrayList();
+ List<Function> rowLimitFunctions = new ArrayList<Function>();
FunctionCollectorVisitor visitor = new FunctionCollectorVisitor(rowLimitFunctions, FunctionLibrary.ROWLIMIT);
PreOrderNavigator.doVisit(obj, visitor);
visitor = new FunctionCollectorVisitor(rowLimitFunctions, FunctionLibrary.ROWLIMITEXCEPTION);
@@ -1062,16 +1064,16 @@
}
public void visit(Option obj) {
- List dep = obj.getDependentGroups();
- List notDep = obj.getNotDependentGroups();
+ List<String> dep = obj.getDependentGroups();
+ List<String> notDep = obj.getNotDependentGroups();
if (dep != null && !dep.isEmpty()
&& notDep != null && !notDep.isEmpty()) {
String groupName = null;
String notDepGroup = null;
- for (Iterator i = dep.iterator(); i.hasNext();) {
- groupName = (String)i.next();
- for (Iterator j = notDep.iterator(); j.hasNext();) {
- notDepGroup = (String)j.next();
+ for (Iterator<String> i = dep.iterator(); i.hasNext();) {
+ groupName = i.next();
+ for (Iterator<String> j = notDep.iterator(); j.hasNext();) {
+ notDepGroup = j.next();
if (notDepGroup.equalsIgnoreCase(groupName)) {
handleValidationError(QueryPlugin.Util.getString("ValidationVisitor.group_in_both_dep", groupName), obj); //$NON-NLS-1$
return;
@@ -1428,9 +1430,46 @@
public void visit(WithQueryCommand obj) {
validateSubquery(obj);
}
+
+ public void visit(AlterView obj) {
+ try {
+ QueryResolver.validateProjectedSymbols(obj.getTarget(), getMetadata(), obj.getDefinition());
+ } catch (QueryValidatorException e) {
+ handleValidationError(e.getMessage(), obj.getDefinition());
+ } catch (TeiidComponentException e) {
+ handleException(e);
+ }
+ }
- //TODO: it may be simplier to catch this in the parser
- private void validateSubquery(SubqueryContainer subQuery) {
+ @Override
+ public void visit(AlterProcedure obj) {
+ GroupSymbol gs = obj.getTarget();
+ try {
+ if (!gs.isProcedure() || !getMetadata().isVirtualModel(getMetadata().getModelID(gs.getMetadataID()))) {
+ handleValidationError(QueryPlugin.Util.getString("ValidationVisitor.not_a_procedure", gs), gs); //$NON-NLS-1$
+ return;
+ }
+ StoredProcedureInfo info = getMetadata().getStoredProcedureInfoForProcedure(gs.getName());
+ for (SPParameter param : info.getParameters()) {
+ if (param.getParameterType() == SPParameter.RESULT_SET) {
+ QueryResolver.validateProjectedSymbols(gs, param.getResultSetColumns(), obj.getDefinition().getProjectedSymbols());
+ break;
+ }
+ }
+ } catch (QueryValidatorException e) {
+ handleValidationError(e.getMessage(), obj.getDefinition().getBlock());
+ } catch (TeiidComponentException e) {
+ handleException(e);
+ }
+ }
+
+ @Override
+ public void visit(AlterTrigger obj) {
+ validateGroupSupportsUpdate(obj.getTarget());
+ }
+
+ //TODO: it may be simpler to catch this in the parser
+ private void validateSubquery(SubqueryContainer<?> subQuery) {
if (subQuery.getCommand() instanceof Query && ((Query)subQuery.getCommand()).getInto() != null) {
handleValidationError(QueryPlugin.Util.getString("ValidationVisitor.subquery_insert"), subQuery.getCommand()); //$NON-NLS-1$
}
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-29 01:33:21 UTC (rev 3130)
+++ trunk/engine/src/main/javacc/org/teiid/query/parser/SQLParser.jj 2011-04-29 01:37:38 UTC (rev 3131)
@@ -491,23 +491,45 @@
QueryCommand command = null;
Block block = null;
TriggerAction triggerAction = null;
+ Token comment = null;
+ Table.TriggerOperation op = null;
}
{
<ALTER>
(
- (nonReserved("VIEW") target = id() <AS> command = queryExpression(info))
+ (nonReserved("VIEW") target = id() <AS> { comment = getToken(1).specialToken; } command = queryExpression(info))
{
+ if (comment != null) {
+ command.setCacheHint(getQueryCacheOption(comment.image));
+ }
+ AlterView alterView = new AlterView();
+ alterView.setTarget(new GroupSymbol(target));
+ alterView.setDefinition(command);
+ return alterView;
}
- | (<PROCEDURE> target = id() <AS> block = block(info))
+ | (<PROCEDURE> target = id() <AS> { comment = getToken(1).specialToken; } block = block(info))
{
+ CreateUpdateProcedureCommand cup = new CreateUpdateProcedureCommand(block);
+ cup.setUpdateProcedure(false);
+ if (comment != null) {
+ cup.setCacheHint(getQueryCacheOption(comment.image));
+ }
+ AlterProcedure alterProc = new AlterProcedure();
+ alterProc.setTarget(new GroupSymbol(target));
+ alterProc.setDefinition(cup);
+ return alterProc;
}
- | (<TRIGGER> <ON> target = id() nonReserved("INSTEAD") <OF> (<INSERT>|<UPDATE>|<DELETE>) <AS> triggerAction = triggerAction(info))
+ | (<TRIGGER> <ON> target = id() nonReserved("INSTEAD") <OF>
+ (<INSERT> {op = Table.TriggerOperation.INSERT;} |<UPDATE> {op = Table.TriggerOperation.UPDATE;}|<DELETE> {op = Table.TriggerOperation.DELETE;})
+ <AS> triggerAction = triggerAction(info))
{
+ AlterTrigger alterTrigger = new AlterTrigger();
+ alterTrigger.setTarget(new GroupSymbol(target));
+ alterTrigger.setDefinition(triggerAction);
+ alterTrigger.setOperation(op);
+ return alterTrigger;
}
)
- {
- return null;
- }
}
TriggerAction triggerAction(ParseInfo info) :
@@ -2733,23 +2755,11 @@
QueryCommand subquery(ParseInfo info) :
{
- Object[] result = null;
-}
-{
- result = subqueryAndHint(info)
- {
- return (QueryCommand)result[0];
- }
-}
-
-Object[] subqueryAndHint(ParseInfo info) :
-{
QueryCommand subquery = null;
StoredProcedure proc = null;
- Token lparen = null;
}
{
- lparen = <LPAREN>
+ <LPAREN>
( subquery = queryExpression(info) |
(
proc = storedProcedure(info, new StoredProcedure()) //deprecated
@@ -2760,6 +2770,19 @@
)
<RPAREN>
{
+ return subquery;
+ }
+}
+
+Object[] subqueryAndHint(ParseInfo info) :
+{
+ QueryCommand subquery = null;
+ Token lparen = null;
+}
+{
+ {lparen = getToken(1);}
+ subquery = subquery(info)
+ {
return new Object[] {subquery, getSubqueryHint(lparen)};
}
}
Modified: trunk/engine/src/main/resources/org/teiid/query/i18n.properties
===================================================================
--- trunk/engine/src/main/resources/org/teiid/query/i18n.properties 2011-04-29 01:33:21 UTC (rev 3130)
+++ trunk/engine/src/main/resources/org/teiid/query/i18n.properties 2011-04-29 01:37:38 UTC (rev 3131)
@@ -668,6 +668,8 @@
SimpleQueryResolver.duplicate_with=Duplicate WITH clause item name {0}
SimpleQueryResolver.mismatched_with_columns=The number of WITH clause columns for item {0} do not match the query expression
QueryResolver.invalid_xpath=Invalid xpath value: {0}
+QueryResolver.wrong_view_symbols=The definition for {0} does not have the correct number of projected symbols. Expected {1}, but was {2}.
+QueryResolver.wrong_view_symbol_type=The definition for {0} has the wrong type for column {1}. Expected {2}, but was {3}.
ResolveVariablesVisitor.reserved_word_for_temporary_used=Cursor names cannot begin with "#" as that indicates the name of a temporary table: {0}.
SimpleQueryResolver.materialized_table_not_used=The query against {0} did not use materialization table {1} due to the use of OPTION NOCACHE.
SimpleQueryResolver.cache_hint_used=Loading materialized view {1} for view {0} using cache hint {2}.
@@ -907,4 +909,7 @@
FunctionMethods.not_array_value=Expected a java.sql.Array, or java array type, but got: {0}
FunctionMethods.array_index=Array index out of range: {0}
-ArrayTableNode.conversion_error=Could not convert value for column: {0}
\ No newline at end of file
+ArrayTableNode.conversion_error=Could not convert value for column: {0}
+
+AlterResolver.not_a_view={0} is not a valid view.
+ValidationVisitor.not_a_procedure={0} is not a valid virtual procedure.
\ No newline at end of file
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-29 01:33:21 UTC (rev 3130)
+++ trunk/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCore.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -64,7 +64,7 @@
@Before public void setUp() throws Exception {
agds = new AutoGenDataService();
- DQPWorkContext context = FakeMetadataFactory.buildWorkContext(RealMetadataFactory.exampleBQTCached());
+ DQPWorkContext context = FakeMetadataFactory.buildWorkContext(RealMetadataFactory.createTransformationMetadata(RealMetadataFactory.exampleBQTCached().getMetadataStore(), "bqt"));
context.getVDB().getModel("BQT3").setVisible(false); //$NON-NLS-1$
context.getVDB().getModel("VQT").setVisible(false); //$NON-NLS-1$
Modified: trunk/engine/src/test/java/org/teiid/dqp/internal/process/multisource/TestMultiSourcePlanToProcessConverter.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/dqp/internal/process/multisource/TestMultiSourcePlanToProcessConverter.java 2011-04-29 01:33:21 UTC (rev 3130)
+++ trunk/engine/src/test/java/org/teiid/dqp/internal/process/multisource/TestMultiSourcePlanToProcessConverter.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -104,7 +104,7 @@
MultiSourceMetadataWrapper wrapper = new MultiSourceMetadataWrapper(metadata, multiSourceModels);
AnalysisRecord analysis = new AnalysisRecord(false, DEBUG);
- Command command = TestResolver.helpResolve(userSql, wrapper, analysis);
+ Command command = TestResolver.helpResolve(userSql, wrapper);
// Plan
command = QueryRewriter.rewrite(command, wrapper, null);
Modified: trunk/engine/src/test/java/org/teiid/query/optimizer/TestOptimizer.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/optimizer/TestOptimizer.java 2011-04-29 01:33:21 UTC (rev 3130)
+++ trunk/engine/src/test/java/org/teiid/query/optimizer/TestOptimizer.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -637,13 +637,13 @@
new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.STRING });
List vm1a1e = FakeMetadataFactory.createElements(vm1a1,
new String[] { "e1", "sum_e2" }, //$NON-NLS-1$ //$NON-NLS-2$
- new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.INTEGER });
+ new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.LONG });
List vm1a2e = FakeMetadataFactory.createElements(vm1a2,
new String[] { "e1", "sum_e2" }, //$NON-NLS-1$ //$NON-NLS-2$
- new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.INTEGER });
+ new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.LONG });
List vm1a3e = FakeMetadataFactory.createElements(vm1a3,
new String[] { "sum_e2" }, //$NON-NLS-1$
- new String[] { DataTypeManager.DefaultDataTypes.INTEGER });
+ new String[] { DataTypeManager.DefaultDataTypes.LONG });
List vm1a4e = FakeMetadataFactory.createElements(vm1a4,
new String[] { "count" }, //$NON-NLS-1$
new String[] { DataTypeManager.DefaultDataTypes.INTEGER });
Modified: trunk/engine/src/test/java/org/teiid/query/optimizer/relational/TestAliasGenerator.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/optimizer/relational/TestAliasGenerator.java 2011-04-29 01:33:21 UTC (rev 3130)
+++ trunk/engine/src/test/java/org/teiid/query/optimizer/relational/TestAliasGenerator.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -45,7 +45,7 @@
String expected,
boolean aliasGroups,
boolean stripColumnAliases, QueryMetadataInterface metadata) throws TeiidComponentException, TeiidProcessingException {
- Command command = TestResolver.helpResolve(sql, metadata, null);
+ Command command = TestResolver.helpResolve(sql, metadata);
command = QueryRewriter.rewrite(command, metadata, null);
command.acceptVisitor(new AliasGenerator(aliasGroups, stripColumnAliases));
assertEquals(expected, command.toString());
Added: trunk/engine/src/test/java/org/teiid/query/parser/TestParseAlter.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/parser/TestParseAlter.java (rev 0)
+++ trunk/engine/src/test/java/org/teiid/query/parser/TestParseAlter.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -0,0 +1,60 @@
+/*
+ * 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.query.parser;
+
+import static org.teiid.query.parser.TestParser.*;
+
+import org.junit.Test;
+import org.teiid.metadata.Table.TriggerOperation;
+import org.teiid.query.sql.lang.AlterTrigger;
+import org.teiid.query.sql.lang.AlterView;
+import org.teiid.query.sql.lang.QueryCommand;
+import org.teiid.query.sql.proc.TriggerAction;
+import org.teiid.query.sql.symbol.GroupSymbol;
+
+@SuppressWarnings("nls")
+public class TestParseAlter {
+
+ @Test public void testAlterView() throws Exception {
+ AlterView alterView = new AlterView();
+ alterView.setTarget(new GroupSymbol("x"));
+ alterView.setDefinition((QueryCommand) QueryParser.getQueryParser().parseCommand("/*+ cache */ SELECT 1"));
+ helpTest("alter view x as /*+ cache */ select 1", "ALTER VIEW x AS\n/*+ cache */ SELECT 1", alterView);
+ }
+
+ @Test public void testAlterProc() throws Exception {
+ AlterView alterView = new AlterView();
+ alterView.setTarget(new GroupSymbol("x"));
+ alterView.setDefinition((QueryCommand) QueryParser.getQueryParser().parseCommand("/*+ cache */ SELECT 1"));
+ helpTest("alter view x as /*+ cache */ select 1", "ALTER VIEW x AS\n/*+ cache */ SELECT 1", alterView);
+ }
+
+ @Test public void testAlterTrigger() throws Exception {
+ AlterTrigger alterTrigger = new AlterTrigger();
+ alterTrigger.setTarget(new GroupSymbol("x"));
+ alterTrigger.setOperation(TriggerOperation.UPDATE);
+ alterTrigger.setDefinition((TriggerAction) QueryParser.getQueryParser().parseUpdateProcedure("for each row begin end"));
+ helpTest("alter trigger on x instead of update as for each row begin end", "ALTER TRIGGER ON x INSTEAD OF UPDATE AS\nFOR EACH ROW\nBEGIN\nEND", alterTrigger);
+ }
+
+}
Property changes on: trunk/engine/src/test/java/org/teiid/query/parser/TestParseAlter.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
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-29 01:33:21 UTC (rev 3130)
+++ trunk/engine/src/test/java/org/teiid/query/processor/FakeDataManager.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -128,8 +128,9 @@
} else if (command instanceof ProcedureContainer) {
group = ((ProcedureContainer) command).getGroup();
} else if ( command instanceof BatchedUpdateCommand ) {
- if ( command.getSubCommands().get(0) instanceof Update ) {
- group = ((Update)command.getSubCommands().get(0)).getGroup();
+ BatchedUpdateCommand buc = (BatchedUpdateCommand)command;
+ if ( buc.getUpdateCommands().get(0) instanceof Update ) {
+ group = ((Update)buc.getUpdateCommands().get(0)).getGroup();
}
if (this.recordingCommands) {
for ( Iterator<Command> it = ((BatchedUpdateCommand) command).getUpdateCommands().iterator(); it.hasNext(); ) {
Modified: trunk/engine/src/test/java/org/teiid/query/processor/TestProcessor.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/processor/TestProcessor.java 2011-04-29 01:33:21 UTC (rev 3130)
+++ trunk/engine/src/test/java/org/teiid/query/processor/TestProcessor.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -6168,15 +6168,11 @@
FakeMetadataObject v1 = FakeMetadataFactory.createVirtualModel("v1"); //$NON-NLS-1$
QueryNode n1 = new QueryNode("SELECT convert(a, integer) as c, b FROM p1.t"); //$NON-NLS-1$ //$NON-NLS-2$
FakeMetadataObject vt1 = FakeMetadataFactory.createVirtualGroup("v1.t1", v1, n1); //$NON-NLS-1$
- List vte1 = FakeMetadataFactory.createElements(vt1, new String[] {"c", "b" }, new String[] { "string", "string" }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ List vte1 = FakeMetadataFactory.createElements(vt1, new String[] {"c", "b" }, new String[] { "integer", "string" }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- QueryNode n2 = new QueryNode("SELECT convert(a, integer) as c, b FROM p1.t"); //$NON-NLS-1$ //$NON-NLS-2$
- FakeMetadataObject vt2 = FakeMetadataFactory.createVirtualGroup("v1.t2", v1, n2); //$NON-NLS-1$
- List vte2 = FakeMetadataFactory.createElements(vt2, new String[] {"c", "b" }, new String[] { "string", "string" }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-
QueryNode n3 = new QueryNode("SELECT c, b FROM v1.t1 UNION ALL SELECT c, b FROM v1.t1"); //$NON-NLS-1$ //$NON-NLS-2$
FakeMetadataObject vu1 = FakeMetadataFactory.createVirtualGroup("v1.u1", v1, n3); //$NON-NLS-1$
- List vtu1 = FakeMetadataFactory.createElements(vu1, new String[] {"c", "b" }, new String[] { "string", "string" }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ List vtu1 = FakeMetadataFactory.createElements(vu1, new String[] {"c", "b" }, new String[] { "integer", "string" }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
FakeMetadataStore store = new FakeMetadataStore();
store.addObject(p1);
@@ -6185,8 +6181,6 @@
store.addObject(v1);
store.addObject(vt1);
store.addObjects(vte1);
- store.addObject(vt2);
- store.addObjects(vte2);
store.addObject(vu1);
store.addObjects(vtu1);
return new FakeMetadataFacade(store);
Modified: trunk/engine/src/test/java/org/teiid/query/processor/TestTriggerActions.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/processor/TestTriggerActions.java 2011-04-29 01:33:21 UTC (rev 3130)
+++ trunk/engine/src/test/java/org/teiid/query/processor/TestTriggerActions.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -59,7 +59,7 @@
CommandContext context = createCommandContext();
BasicSourceCapabilities caps = TestOptimizer.getTypicalCapabilities();
- ProcessorPlan plan = TestProcessor.helpGetPlan(TestResolver.helpResolve(sql, metadata, null), metadata, new DefaultCapabilitiesFinder(caps), context);
+ ProcessorPlan plan = TestProcessor.helpGetPlan(TestResolver.helpResolve(sql, metadata), metadata, new DefaultCapabilitiesFinder(caps), context);
List[] expected = new List[] {Arrays.asList(1)};
helpProcess(plan, context, dm, expected);
}
@@ -78,7 +78,7 @@
FakeDataStore.addTable("pm1.g1", dm, metadata);
CommandContext context = createCommandContext();
BasicSourceCapabilities caps = TestOptimizer.getTypicalCapabilities();
- ProcessorPlan plan = TestProcessor.helpGetPlan(TestResolver.helpResolve(sql, metadata, null), metadata, new DefaultCapabilitiesFinder(caps), context);
+ ProcessorPlan plan = TestProcessor.helpGetPlan(TestResolver.helpResolve(sql, metadata), metadata, new DefaultCapabilitiesFinder(caps), context);
List[] expected = new List[] {Arrays.asList(6)};
helpProcess(plan, context, dm, expected);
}
@@ -98,7 +98,7 @@
CommandContext context = createCommandContext();
BasicSourceCapabilities caps = TestOptimizer.getTypicalCapabilities();
- ProcessorPlan plan = TestProcessor.helpGetPlan(TestResolver.helpResolve(sql, metadata, null), metadata, new DefaultCapabilitiesFinder(caps), context);
+ ProcessorPlan plan = TestProcessor.helpGetPlan(TestResolver.helpResolve(sql, metadata), metadata, new DefaultCapabilitiesFinder(caps), context);
List[] expected = new List[] {Arrays.asList(1)};
helpProcess(plan, context, dm, expected);
}
@@ -118,7 +118,7 @@
CommandContext context = createCommandContext();
BasicSourceCapabilities caps = TestOptimizer.getTypicalCapabilities();
- ProcessorPlan plan = TestProcessor.helpGetPlan(TestResolver.helpResolve(sql, metadata, null), metadata, new DefaultCapabilitiesFinder(caps), context);
+ ProcessorPlan plan = TestProcessor.helpGetPlan(TestResolver.helpResolve(sql, metadata), metadata, new DefaultCapabilitiesFinder(caps), context);
List[] expected = new List[] {Arrays.asList(1)};
helpProcess(plan, context, dm, expected);
assertEquals("UPDATE pm1.g1 SET e2 = 5 WHERE e2 = 2", dm.getQueries().get(0));
@@ -139,7 +139,7 @@
CommandContext context = createCommandContext();
BasicSourceCapabilities caps = TestOptimizer.getTypicalCapabilities();
- ProcessorPlan plan = TestProcessor.helpGetPlan(TestResolver.helpResolve(sql, metadata, null), metadata, new DefaultCapabilitiesFinder(caps), context);
+ ProcessorPlan plan = TestProcessor.helpGetPlan(TestResolver.helpResolve(sql, metadata), metadata, new DefaultCapabilitiesFinder(caps), context);
List[] expected = new List[] {Arrays.asList(1)};
helpProcess(plan, context, dm, expected);
assertEquals("UPDATE pm1.g1 SET e2 = 1 WHERE e2 = 2", dm.getQueries().get(0));
Modified: trunk/engine/src/test/java/org/teiid/query/processor/relational/TestAccessNode.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/processor/relational/TestAccessNode.java 2011-04-29 01:33:21 UTC (rev 3130)
+++ trunk/engine/src/test/java/org/teiid/query/processor/relational/TestAccessNode.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -74,7 +74,7 @@
}
@Test public void testOpen_Defect16059() throws Exception {
- Query query = (Query)TestResolver.helpResolve("SELECT e1, e2 FROM pm1.g1 WHERE e2 = 5 AND ? IS NULL", FakeMetadataFactory.example1Cached(), null); //$NON-NLS-1$
+ Query query = (Query)TestResolver.helpResolve("SELECT e1, e2 FROM pm1.g1 WHERE e2 = 5 AND ? IS NULL", FakeMetadataFactory.example1Cached()); //$NON-NLS-1$
IsNullCriteria nullCrit = (IsNullCriteria)((CompoundCriteria)query.getCriteria()).getCriteria(1);
nullCrit.setExpression(new Constant(null));
@@ -82,7 +82,7 @@
}
@Test public void testOpen_Defect16059_2() throws Exception {
- Query query = (Query)TestResolver.helpResolve("SELECT e1, e2 FROM pm1.g1 WHERE e2 = 5 AND ? IS NOT NULL", FakeMetadataFactory.example1Cached(), null); //$NON-NLS-1$
+ Query query = (Query)TestResolver.helpResolve("SELECT e1, e2 FROM pm1.g1 WHERE e2 = 5 AND ? IS NOT NULL", FakeMetadataFactory.example1Cached()); //$NON-NLS-1$
IsNullCriteria nullCrit = (IsNullCriteria)((CompoundCriteria)query.getCriteria()).getCriteria(1);
nullCrit.setExpression(new Constant(null));
@@ -92,7 +92,7 @@
@Test public void testExecCount()throws Exception{
// Setup
AccessNode node = new AccessNode(1);
- Query query = (Query)TestResolver.helpResolve("SELECT e1, e2 FROM pm1.g1 WHERE e2 = 5", FakeMetadataFactory.example1Cached(), null); //$NON-NLS-1$
+ Query query = (Query)TestResolver.helpResolve("SELECT e1, e2 FROM pm1.g1 WHERE e2 = 5", FakeMetadataFactory.example1Cached()); //$NON-NLS-1$
node.setCommand(query);
CommandContext context = new CommandContext();
context.setProcessorID("processorID"); //$NON-NLS-1$
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-29 01:33:21 UTC (rev 3130)
+++ trunk/engine/src/test/java/org/teiid/query/processor/relational/TestProjectIntoNode.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -161,7 +161,7 @@
}
} else if ( command instanceof BatchedUpdateCommand ){
BatchedUpdateCommand bu = (BatchedUpdateCommand)command;
- List batch = bu.getSubCommands();
+ List<Command> batch = bu.getUpdateCommands();
batchSize = batch.size();
assertEquals("Unexpected batch on call " + callCount, expectedBatchSize, batchSize); //$NON-NLS-1$
Modified: trunk/engine/src/test/java/org/teiid/query/processor/xml/TestXMLProcessor.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/processor/xml/TestXMLProcessor.java 2011-04-29 01:33:21 UTC (rev 3130)
+++ trunk/engine/src/test/java/org/teiid/query/processor/xml/TestXMLProcessor.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -260,7 +260,7 @@
List rsElements12260 = FakeMetadataFactory.createElements(rs12260,
new String[] { "itemNum", "itemName", "itemQuantity", "itemStatus", "numSuppliers" }, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
- new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.INTEGER });
+ new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.STRING });
// ======================================================================================================================
// ALTERNATE METADATA E (mapping class w/ Union)
Added: trunk/engine/src/test/java/org/teiid/query/resolver/TestAlterResolving.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/resolver/TestAlterResolving.java (rev 0)
+++ trunk/engine/src/test/java/org/teiid/query/resolver/TestAlterResolving.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -0,0 +1,64 @@
+/*
+ * 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.query.resolver;
+
+import static org.junit.Assert.*;
+import static org.teiid.query.resolver.TestResolver.*;
+
+import org.junit.Test;
+import org.teiid.query.sql.lang.AlterProcedure;
+import org.teiid.query.sql.lang.AlterTrigger;
+import org.teiid.query.sql.lang.AlterView;
+import org.teiid.query.sql.lang.Query;
+import org.teiid.query.sql.symbol.ElementSymbol;
+import org.teiid.query.unittest.RealMetadataFactory;
+
+@SuppressWarnings("nls")
+public class TestAlterResolving {
+
+ @Test public void testAlterView() {
+ AlterView alterView = (AlterView) helpResolve("alter view SmallA_2589 as select 2", RealMetadataFactory.exampleBQTCached());
+ assertNotNull(alterView.getTarget().getMetadataID());
+ }
+
+ @Test public void testAlterProcedure() {
+ AlterProcedure alterProc = (AlterProcedure) helpResolve("alter procedure MMSP5 as begin select param1; end", RealMetadataFactory.exampleBQTCached());
+ assertNotNull(alterProc.getTarget().getMetadataID());
+ Query q = (Query)alterProc.getDefinition().getResultsCommand();
+ assertTrue(((ElementSymbol)q.getSelect().getSymbol(0)).isExternalReference());
+ }
+
+ @Test public void testAlterTriggerInsert() {
+ AlterTrigger alterTrigger = (AlterTrigger) helpResolve("alter trigger on SmallA_2589 instead of insert as for each row select new.intkey;", RealMetadataFactory.exampleBQTCached());
+ assertNotNull(alterTrigger.getTarget().getMetadataID());
+ }
+
+ @Test public void testAlterTriggerInsert_Invalid() {
+ helpResolveException("alter trigger on SmallA_2589 instead of insert as for each row select old.intkey;", RealMetadataFactory.exampleBQTCached());
+ }
+
+ @Test public void testAlterView_Invalid() {
+ helpResolveException("alter view bqt1.SmallA as select 2", RealMetadataFactory.exampleBQTCached());
+ }
+
+}
Property changes on: trunk/engine/src/test/java/org/teiid/query/resolver/TestAlterResolving.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified: trunk/engine/src/test/java/org/teiid/query/resolver/TestProcedureResolving.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/resolver/TestProcedureResolving.java 2011-04-29 01:33:21 UTC (rev 3130)
+++ trunk/engine/src/test/java/org/teiid/query/resolver/TestProcedureResolving.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -51,6 +51,7 @@
import org.teiid.query.sql.symbol.ElementSymbol;
import org.teiid.query.sql.symbol.Expression;
import org.teiid.query.sql.symbol.GroupSymbol;
+import org.teiid.query.sql.visitor.CommandCollectorVisitor;
import org.teiid.query.sql.visitor.ElementCollectorVisitor;
import org.teiid.query.unittest.FakeMetadataFacade;
import org.teiid.query.unittest.FakeMetadataFactory;
@@ -66,7 +67,7 @@
FakeMetadataObject rs2 = FakeMetadataFactory.createResultSet("pm1.rs1", pm1, new String[] { "e1" }, new String[] { DataTypeManager.DefaultDataTypes.STRING }); //$NON-NLS-1$ //$NON-NLS-2$
FakeMetadataObject rs2p1 = FakeMetadataFactory.createParameter("ret", 1, ParameterInfo.RESULT_SET, DataTypeManager.DefaultDataTypes.OBJECT, rs2); //$NON-NLS-1$
FakeMetadataObject rs2p2 = FakeMetadataFactory.createParameter("in", 2, ParameterInfo.IN, DataTypeManager.DefaultDataTypes.STRING, null); //$NON-NLS-1$
- QueryNode sq2n1 = new QueryNode(procedure); //$NON-NLS-1$
+ QueryNode sq2n1 = new QueryNode(procedure);
FakeMetadataObject sq1 = FakeMetadataFactory.createVirtualProcedure("pm1.sq1", pm1, Arrays.asList(new FakeMetadataObject[] { rs2p1, rs2p2 }), sq2n1); //$NON-NLS-1$
metadata.getStore().addObject(rs2);
@@ -117,13 +118,13 @@
assertNull(tempIDs.get("LOOPCURSOR")); //$NON-NLS-1$
assertNull(tempIDs.get("LOOPCURSOR2")); //$NON-NLS-1$
- Command subCommand = command.getSubCommands().get(0);
+ Command subCommand = CommandCollectorVisitor.getCommands(command).get(0);
tempIDs = subCommand.getTemporaryMetadata();
assertNotNull(tempIDs);
assertNull(tempIDs.get("LOOPCURSOR")); //$NON-NLS-1$
assertNull(tempIDs.get("LOOPCURSOR2")); //$NON-NLS-1$
- subCommand = command.getSubCommands().get(1);
+ subCommand = CommandCollectorVisitor.getCommands(command).get(1);
tempIDs = subCommand.getTemporaryMetadata();
assertNotNull(tempIDs);
assertNotNull(tempIDs.get("LOOPCURSOR")); //$NON-NLS-1$
@@ -1054,7 +1055,7 @@
procedure = procedure + "VARIABLES.NLEVELS = SELECT COUNT(*) FROM (SELECT oi.e1 AS Col1, oi.e2 AS Col2, oi.e3 FROM pm1.g2 AS oi) AS TOBJ, pm2.g2 AS TModel WHERE TModel.e3 = TOBJ.e3;\n"; //$NON-NLS-1$
procedure = procedure + "END\n"; //$NON-NLS-1$
- TestResolver.helpResolve(procedure, FakeMetadataFactory.example1Cached(), null);
+ TestResolver.helpResolve(procedure, FakeMetadataFactory.example1Cached());
}
@Test public void testIssue174102() throws Exception {
@@ -1065,7 +1066,7 @@
procedure = procedure + "EXECUTE STRING ('SELECT e1 FROM pm1.sq2 ' || crit ) AS e1 string INTO #TTable;\n"; //$NON-NLS-1$
procedure = procedure + "END\n"; //$NON-NLS-1$
- TestResolver.helpResolve(procedure, FakeMetadataFactory.example1Cached(), null);
+ TestResolver.helpResolve(procedure, FakeMetadataFactory.example1Cached());
}
// Address Issue 174519.
@@ -1573,7 +1574,7 @@
.append("\n y = '1';") //$NON-NLS-1$
.append("\nEND"); //$NON-NLS-1$
- TestResolver.helpResolve(proc.toString(), FakeMetadataFactory.example1Cached(), null);
+ TestResolver.helpResolve(proc.toString(), FakeMetadataFactory.example1Cached());
}
@Test public void testVDBQualified() throws Exception {
Modified: trunk/engine/src/test/java/org/teiid/query/resolver/TestResolver.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/resolver/TestResolver.java 2011-04-29 01:33:21 UTC (rev 3130)
+++ trunk/engine/src/test/java/org/teiid/query/resolver/TestResolver.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -87,6 +87,7 @@
import org.teiid.query.sql.symbol.Reference;
import org.teiid.query.sql.symbol.SelectSymbol;
import org.teiid.query.sql.symbol.SingleElementSymbol;
+import org.teiid.query.sql.visitor.CommandCollectorVisitor;
import org.teiid.query.sql.visitor.ElementCollectorVisitor;
import org.teiid.query.sql.visitor.FunctionCollectorVisitor;
import org.teiid.query.sql.visitor.GroupCollectorVisitor;
@@ -157,7 +158,7 @@
return variables;
}
- public static Command helpResolve(String sql, QueryMetadataInterface queryMetadata, AnalysisRecord analysis){
+ public static Command helpResolve(String sql, QueryMetadataInterface queryMetadata){
return helpResolve(helpParse(sql), queryMetadata);
}
@@ -1115,7 +1116,7 @@
"WHERE (y.IntKey >= 10) AND (y.IntKey < 30) " + //$NON-NLS-1$
"ORDER BY IntKey, FloatNum"; //$NON-NLS-1$
- helpResolve(sql, FakeMetadataFactory.exampleBQTCached(), null);
+ helpResolve(sql, FakeMetadataFactory.exampleBQTCached());
}
@Test public void testSubQueryINClause1(){
@@ -2111,7 +2112,7 @@
QueryMetadataInterface metadata = FakeMetadataFactory.exampleBQTCached();
AnalysisRecord analysis = AnalysisRecord.createNonRecordingRecord();
- Query query = (Query) helpResolve(userSql, metadata, analysis);
+ Query query = (Query) helpResolve(userSql, metadata);
From from = query.getFrom();
Collection fromClauses = from.getClauses();
SPParameter params[] = new SPParameter[2];
@@ -2707,7 +2708,7 @@
@Test public void testUpdateSetClauseReferenceType() {
String sql = "UPDATE pm1.g1 SET pm1.g1.e1 = 1, pm1.g1.e2 = ?;"; //$NON-NLS-1$
- Update update = (Update)helpResolve(sql, FakeMetadataFactory.example1Cached(), null);
+ Update update = (Update)helpResolve(sql, FakeMetadataFactory.example1Cached());
Expression ref = update.getChangeList().getClauses().get(1).getValue();
assertTrue(ref instanceof Reference);
@@ -2722,21 +2723,21 @@
@Test public void testReferenceInSelect() {
String sql = "select ?, e1 from pm1.g1"; //$NON-NLS-1$
- Query command = (Query)helpResolve(sql, FakeMetadataFactory.example1Cached(), null);
- assertEquals(DataTypeManager.DefaultDataClasses.STRING, ((SingleElementSymbol)command.getProjectedSymbols().get(0)).getType());
+ Query command = (Query)helpResolve(sql, FakeMetadataFactory.example1Cached());
+ assertEquals(DataTypeManager.DefaultDataClasses.STRING, command.getProjectedSymbols().get(0).getType());
}
@Test public void testReferenceInSelect1() {
String sql = "select convert(?, integer), e1 from pm1.g1"; //$NON-NLS-1$
- Query command = (Query)helpResolve(sql, FakeMetadataFactory.example1Cached(), null);
- assertEquals(DataTypeManager.DefaultDataClasses.INTEGER, ((SingleElementSymbol)command.getProjectedSymbols().get(0)).getType());
+ Query command = (Query)helpResolve(sql, FakeMetadataFactory.example1Cached());
+ assertEquals(DataTypeManager.DefaultDataClasses.INTEGER, command.getProjectedSymbols().get(0).getType());
}
@Test public void testUnionWithObjectTypeConversion() {
String sql = "select convert(null, xml) from pm1.g1 union all select 1"; //$NON-NLS-1$
- SetQuery query = (SetQuery)helpResolve(sql, FakeMetadataFactory.example1Cached(), null);
+ SetQuery query = (SetQuery)helpResolve(sql, FakeMetadataFactory.example1Cached());
assertEquals(DataTypeManager.DefaultDataClasses.OBJECT, ((SingleElementSymbol)query.getProjectedSymbols().get(0)).getType());
}
@@ -2745,7 +2746,7 @@
SetQuery command = (SetQuery)helpResolve(sql);
- assertEquals(1, command.getSubCommands().size());
+ assertEquals(1, CommandCollectorVisitor.getCommands(command).size());
}
@Test public void testOrderBy_J658a() {
Query resolvedQuery = (Query) helpResolve("SELECT pm1.g1.e1, e2, e3 as x, (5+2) as y FROM pm1.g1 ORDER BY e3"); //$NON-NLS-1$
@@ -2779,7 +2780,7 @@
}
@Test public void testSPOutParamWithExec() {
- StoredProcedure proc = (StoredProcedure)helpResolve("exec pm2.spTest8(1)", FakeMetadataFactory.exampleBQTCached(), null);
+ StoredProcedure proc = (StoredProcedure)helpResolve("exec pm2.spTest8(1)", FakeMetadataFactory.exampleBQTCached());
assertEquals(2, proc.getProjectedSymbols().size());
}
@@ -2788,7 +2789,7 @@
* That hack is handled by the PreparedStatementRequest
*/
@Test public void testSPOutParamWithCallableStatement() {
- StoredProcedure proc = (StoredProcedure)helpResolve("{call pm2.spTest8(1)}", FakeMetadataFactory.exampleBQTCached(), null);
+ StoredProcedure proc = (StoredProcedure)helpResolve("{call pm2.spTest8(1)}", FakeMetadataFactory.exampleBQTCached());
assertEquals(3, proc.getProjectedSymbols().size());
}
@@ -2797,12 +2798,12 @@
}
@Test public void testProcRelationalWithOutParam() {
- Query proc = (Query)helpResolve("select * from pm2.spTest8 where inkey = 1", FakeMetadataFactory.exampleBQTCached(), null);
+ Query proc = (Query)helpResolve("select * from pm2.spTest8 where inkey = 1", FakeMetadataFactory.exampleBQTCached());
assertEquals(3, proc.getProjectedSymbols().size());
}
@Test public void testSPReturnParamWithNoResultSet() {
- StoredProcedure proc = (StoredProcedure)helpResolve("exec pm4.spTest9(1)", FakeMetadataFactory.exampleBQTCached(), null);
+ StoredProcedure proc = (StoredProcedure)helpResolve("exec pm4.spTest9(1)", FakeMetadataFactory.exampleBQTCached());
assertEquals(1, proc.getProjectedSymbols().size());
}
@@ -2954,7 +2955,7 @@
//return should be first, then out
@Test public void testParamOrder() {
- Query resolvedQuery = (Query)helpResolve("SELECT * FROM (exec pm4.spRetOut()) as a", RealMetadataFactory.exampleBQTCached(), null); //$NON-NLS-1$
+ Query resolvedQuery = (Query)helpResolve("SELECT * FROM (exec pm4.spRetOut()) as a", RealMetadataFactory.exampleBQTCached()); //$NON-NLS-1$
assertEquals("a.ret", resolvedQuery.getProjectedSymbols().get(0).getName());
}
Modified: trunk/engine/src/test/java/org/teiid/query/resolver/TestXMLResolver.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/resolver/TestXMLResolver.java 2011-04-29 01:33:21 UTC (rev 3130)
+++ trunk/engine/src/test/java/org/teiid/query/resolver/TestXMLResolver.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -24,7 +24,6 @@
import junit.framework.TestCase;
-import org.teiid.query.analysis.AnalysisRecord;
import org.teiid.query.parser.QueryParser;
import org.teiid.query.resolver.util.ResolverUtil;
import org.teiid.query.sql.lang.Command;
@@ -42,7 +41,7 @@
public class TestXMLResolver extends TestCase {
public Command helpResolve(String sql) {
- Command cmd = TestResolver.helpResolve(sql, FakeMetadataFactory.example1Cached(), AnalysisRecord.createNonRecordingRecord());
+ Command cmd = TestResolver.helpResolve(sql, FakeMetadataFactory.example1Cached());
ResolverUtil.fullyQualifyElements(cmd);
return cmd;
}
Modified: trunk/engine/src/test/java/org/teiid/query/sql/proc/TestCreateUpdateProcedureCommand.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/sql/proc/TestCreateUpdateProcedureCommand.java 2011-04-29 01:33:21 UTC (rev 3130)
+++ trunk/engine/src/test/java/org/teiid/query/sql/proc/TestCreateUpdateProcedureCommand.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -200,7 +200,7 @@
public void testProjectedSymbols() {
CreateUpdateProcedureCommand cupc = new CreateUpdateProcedureCommand();
cupc.setUpdateProcedure(false);
- StoredProcedure sp = (StoredProcedure)TestResolver.helpResolve("call TEIIDSP9(p1=>1, p2=>?)", RealMetadataFactory.exampleBQTCached(), null);
+ StoredProcedure sp = (StoredProcedure)TestResolver.helpResolve("call TEIIDSP9(p1=>1, p2=>?)", RealMetadataFactory.exampleBQTCached());
sp.setCallableStatement(true);
cupc.setResultsCommand(sp);
assertEquals(1, cupc.getProjectedSymbols().size());
Modified: trunk/engine/src/test/java/org/teiid/query/sql/visitor/TestEvaluatableVisitor.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/sql/visitor/TestEvaluatableVisitor.java 2011-04-29 01:33:21 UTC (rev 3130)
+++ trunk/engine/src/test/java/org/teiid/query/sql/visitor/TestEvaluatableVisitor.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -33,7 +33,7 @@
public class TestEvaluatableVisitor {
@Test public void testNestedNeedsEvaluation() throws Exception {
- Query command = (Query)TestResolver.helpResolve("select * from pm1.g1 where e1 in (select e1 from pm1.g2 where e2 = ?)", FakeMetadataFactory.example1Cached(), null); //$NON-NLS-1$
+ Query command = (Query)TestResolver.helpResolve("select * from pm1.g1 where e1 in (select e1 from pm1.g2 where e2 = ?)", FakeMetadataFactory.example1Cached()); //$NON-NLS-1$
assertTrue(EvaluatableVisitor.needsProcessingEvaluation(command));
}
Modified: trunk/engine/src/test/java/org/teiid/query/unittest/FakeMetadataFactory.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/unittest/FakeMetadataFactory.java 2011-04-29 01:33:21 UTC (rev 3130)
+++ trunk/engine/src/test/java/org/teiid/query/unittest/FakeMetadataFactory.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -492,22 +492,22 @@
new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.BOOLEAN, DataTypeManager.DefaultDataTypes.DOUBLE, DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.INTEGER });
List vm1g12e = createElements(vm1g12,
new String[] { "e1", "e2", "e3", "e4" }, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.BOOLEAN, DataTypeManager.DefaultDataTypes.DOUBLE });
+ new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.DATE, DataTypeManager.DefaultDataTypes.TIME, DataTypeManager.DefaultDataTypes.TIMESTAMP });
List vm1g13e = createElements(vm1g13,
new String[] { "e1", "e2", "e3", "e4" }, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.BOOLEAN, DataTypeManager.DefaultDataTypes.DOUBLE });
+ new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.DATE, DataTypeManager.DefaultDataTypes.TIME, DataTypeManager.DefaultDataTypes.TIMESTAMP });
List vm1g14e = createElements(vm1g14,
new String[] { "e1", "e2", "e3", "e4" }, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.BOOLEAN, DataTypeManager.DefaultDataTypes.DOUBLE });
+ new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.DATE, DataTypeManager.DefaultDataTypes.TIME, DataTypeManager.DefaultDataTypes.TIMESTAMP });
List vm1g15e = createElements(vm1g15,
new String[] { "e1", "x" }, //$NON-NLS-1$ //$NON-NLS-2$
new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.STRING });
List vm1g16e = createElements(vm1g16,
new String[] { "e", "e2" }, //$NON-NLS-1$ //$NON-NLS-2$
- new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.INTEGER });
+ new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.DATE });
List vm1g17e = createElements(vm1g17,
new String[] { "e1", "e2" }, //$NON-NLS-1$ //$NON-NLS-2$
- new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.INTEGER });
+ new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.DATE });
List vm1g18e = createElements(vm1g18,
new String[] { "x" }, //$NON-NLS-1$
new String[] { DataTypeManager.DefaultDataTypes.DOUBLE });
@@ -1083,7 +1083,7 @@
FakeMetadataObject vm1g35 = createVirtualGroup("vm1.g35", vm1, vm1g35n1); //$NON-NLS-1$
FakeMetadataObject vm1g35e1 = FakeMetadataFactory.createElement("vm1.g35.e1", vm1g35, DataTypeManager.DefaultDataTypes.STRING, 1); //$NON-NLS-1$
vm1g35e1.putProperty(FakeMetadataObject.Props.SELECT, Boolean.FALSE);
- FakeMetadataObject vm1g35e2 = FakeMetadataFactory.createElement("vm1.g35.e2", vm1g35, DataTypeManager.DefaultDataTypes.STRING, 2); //$NON-NLS-1$
+ FakeMetadataObject vm1g35e2 = FakeMetadataFactory.createElement("vm1.g35.e2", vm1g35, DataTypeManager.DefaultDataTypes.INTEGER, 2); //$NON-NLS-1$
FakeMetadataObject vsprs36 = createResultSet("pm1.vsprs36", pm1, new String[] { "x" }, new String[] { DataTypeManager.DefaultDataTypes.INTEGER }); //$NON-NLS-1$ //$NON-NLS-2$
FakeMetadataObject vsp36p1 = createParameter("ret", 1, ParameterInfo.RESULT_SET, null, vsprs36); //$NON-NLS-1$
@@ -2432,11 +2432,11 @@
List rsOrdersElements = FakeMetadataFactory.createElements(rsOrders,
new String[] { "orderNum", "orderDate", "orderQty", "orderStatus", "itemFK", "supplierFK" }, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
- new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.STRING});
+ new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.STRING});
List rsEmployeesElements = FakeMetadataFactory.createElements(rsEmployees,
new String[] { "employeeNum", "firstName", "lastName", "supervisorNum", "specializesInItemNum", "supplierNumFK" }, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
- new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.STRING});
+ new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.STRING});
// MAPPING DOC ======================================================================
MappingDocument doc = new MappingDocument(true);
Added: trunk/engine/src/test/java/org/teiid/query/validator/TestAlterValidation.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/validator/TestAlterValidation.java (rev 0)
+++ trunk/engine/src/test/java/org/teiid/query/validator/TestAlterValidation.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -0,0 +1,47 @@
+/*
+ * 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.query.validator;
+
+import org.junit.Test;
+import org.teiid.query.unittest.RealMetadataFactory;
+
+@SuppressWarnings("nls")
+public class TestAlterValidation {
+
+ @Test public void testValidateAlterView() {
+ TestValidator.helpValidate("alter view SmallA_2589 as select 2", new String[] {"SELECT 2"}, RealMetadataFactory.exampleBQTCached());
+ TestValidator.helpValidate("alter view Defect15355 as select 'a', 1", new String[] {"SELECT 'a', 1"}, RealMetadataFactory.exampleBQTCached());
+
+ TestValidator.helpValidate("alter view SmallA_2589 as select * from bqt1.smalla", new String[] {}, RealMetadataFactory.exampleBQTCached());
+ }
+
+ @Test public void testValidateAlterTrigger() {
+ TestValidator.helpValidate("alter trigger on SmallA_2589 instead of insert as for each row select 1;", new String[] {"SmallA_2589"}, RealMetadataFactory.exampleBQTCached());
+ }
+
+ @Test public void testValidateAlterProcedure() {
+ TestValidator.helpValidate("alter procedure spTest8a as begin select 1; end", new String[] {"spTest8a"}, RealMetadataFactory.exampleBQTCached());
+ TestValidator.helpValidate("alter procedure MMSP1 as begin select 1; end", new String[] {"BEGIN\nSELECT 1;\nEND"}, RealMetadataFactory.exampleBQTCached());
+ }
+
+}
Property changes on: trunk/engine/src/test/java/org/teiid/query/validator/TestAlterValidation.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified: trunk/runtime/src/main/java/org/teiid/deployers/VDBRepository.java
===================================================================
--- trunk/runtime/src/main/java/org/teiid/deployers/VDBRepository.java 2011-04-29 01:33:21 UTC (rev 3130)
+++ trunk/runtime/src/main/java/org/teiid/deployers/VDBRepository.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -53,7 +53,6 @@
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;
@@ -133,15 +132,15 @@
t.setSelectTransformation(def);
}
if (t.supportsUpdate()) {
- def = metadataRepository.getInsteadOfTriggerDefinition(vdbName, vdbVersion, t, TriggerOperation.INSERT);
+ def = metadataRepository.getInsteadOfTriggerDefinition(vdbName, vdbVersion, t, Table.TriggerOperation.INSERT);
if (def != null) {
t.setInsertPlan(def);
}
- def = metadataRepository.getInsteadOfTriggerDefinition(vdbName, vdbVersion, t, TriggerOperation.UPDATE);
+ def = metadataRepository.getInsteadOfTriggerDefinition(vdbName, vdbVersion, t, Table.TriggerOperation.UPDATE);
if (def != null) {
t.setUpdatePlan(def);
}
- def = metadataRepository.getInsteadOfTriggerDefinition(vdbName, vdbVersion, t, TriggerOperation.DELETE);
+ def = metadataRepository.getInsteadOfTriggerDefinition(vdbName, vdbVersion, t, Table.TriggerOperation.DELETE);
if (def != null) {
t.setDeletePlan(def);
}
Modified: trunk/test-integration/common/src/test/java/org/teiid/systemmodel/TestMetadataUpdates.java
===================================================================
--- trunk/test-integration/common/src/test/java/org/teiid/systemmodel/TestMetadataUpdates.java 2011-04-29 01:33:21 UTC (rev 3130)
+++ trunk/test-integration/common/src/test/java/org/teiid/systemmodel/TestMetadataUpdates.java 2011-04-29 01:37:38 UTC (rev 3131)
@@ -39,7 +39,7 @@
import org.teiid.metadata.MetadataRepository;
import org.teiid.metadata.Procedure;
import org.teiid.metadata.Table;
-import org.teiid.metadata.MetadataRepository.TriggerOperation;
+import org.teiid.metadata.Table.TriggerOperation;
@SuppressWarnings("nls")
public class TestMetadataUpdates {
@@ -72,7 +72,7 @@
return null;
}
});
- Mockito.stub(repo.getInsteadOfTriggerDefinition(Mockito.anyString(), Mockito.anyInt(), (Table)Mockito.anyObject(), (TriggerOperation) Mockito.anyObject())).toAnswer(new Answer<String>() {
+ Mockito.stub(repo.getInsteadOfTriggerDefinition(Mockito.anyString(), Mockito.anyInt(), (Table)Mockito.anyObject(), (Table.TriggerOperation) Mockito.anyObject())).toAnswer(new Answer<String>() {
@Override
public String answer(InvocationOnMock invocation) throws Throwable {
return "for each row select 1/0; begin end";
13 years, 9 months
teiid SVN: r3130 - in trunk: test-integration/common/src/test/resources/TestMMDatabaseMetaData and 3 other directories.
by teiid-commits@lists.jboss.org
Author: shawkins
Date: 2011-04-28 21:33:21 -0400 (Thu, 28 Apr 2011)
New Revision: 3130
Modified:
trunk/runtime/src/main/java/org/teiid/deployers/PgCatalogMetadataStore.java
trunk/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumns.expected
trunk/test-integration/common/src/test/resources/TestODBCSchema/test_PG_ATTRIBUTE.expected
trunk/test-integration/common/src/test/resources/TestODBCSchema/test_PG_CLASS.expected
trunk/test-integration/common/src/test/resources/TestPartsDatabaseMetadata/testColumns.expected
trunk/test-integration/common/src/test/resources/TestSystemVirtualModel/testColumns.expected
Log:
TEIID-1570 fix for type mismatches
Modified: trunk/runtime/src/main/java/org/teiid/deployers/PgCatalogMetadataStore.java
===================================================================
--- trunk/runtime/src/main/java/org/teiid/deployers/PgCatalogMetadataStore.java 2011-04-28 18:03:41 UTC (rev 3129)
+++ trunk/runtime/src/main/java/org/teiid/deployers/PgCatalogMetadataStore.java 2011-04-29 01:33:21 UTC (rev 3130)
@@ -202,7 +202,7 @@
addColumn("relhasrules", DataTypeManager.DefaultDataTypes.BOOLEAN, t); //$NON-NLS-1$
// True if we generate an OID for each row of the relation
- addColumn("relhasoids", DataTypeManager.DefaultDataTypes.STRING, t); //$NON-NLS-1$
+ addColumn("relhasoids", DataTypeManager.DefaultDataTypes.BOOLEAN, t); //$NON-NLS-1$
addPrimaryKey("pk_pg_class", Arrays.asList("oid"), t); //$NON-NLS-1$ //$NON-NLS-2$
@@ -252,7 +252,7 @@
"(CASE t1.KeyType WHEN 'Unique' THEN true ELSE false END) as indisunique, " + //$NON-NLS-1$
"(CASE t1.KeyType WHEN 'Primary' THEN true ELSE false END) as indisprimary, " + //$NON-NLS-1$
"'' as indexprs, " + //$NON-NLS-1$
- "0 as indkey " + //$NON-NLS-1$
+ "'0' as indkey " + //$NON-NLS-1$
"FROM SYS.KeyColumns as t1"; //$NON-NLS-1$
t.setSelectTransformation(transformation);
t.setMaterialized(true);
Modified: trunk/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumns.expected
===================================================================
--- trunk/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumns.expected 2011-04-28 18:03:41 UTC (rev 3129)
+++ trunk/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumns.expected 2011-04-29 01:33:21 UTC (rev 3130)
@@ -812,7 +812,7 @@
QT_Ora9DS pg_catalog pg_class reltuples 7 float 20 <null> 0 0 2 <null> <null> <null> <null> 0 6 <null> <null> <null> !
<null> NO
QT_Ora9DS pg_catalog pg_class relpages 4 integer 10 <null> 0 0 2 <null> <null> <null> <null> 0 7 <null> <null> <null> !
<null> NO
QT_Ora9DS pg_catalog pg_class relhasrules -7 boolean 1 <null> 0 0 2 <null> <null> <null> <null> 0 8 <null> <null> <null> !
<null> NO
-QT_Ora9DS pg_catalog pg_class relhasoids 12 string 4000 <null> 0 0 2 <null> <null> <null> <null> 0 9 <null> <null> <null> !
<null> NO
+QT_Ora9DS pg_catalog pg_class relhasoids -7 boolean 1 <null> 0 0 2 <null> <null> <null> <null> 0 9 <null> <null> <null> !
<null> NO
QT_Ora9DS pg_catalog pg_database oid 4 integer 10 <null> 0 0 2 <null> <null> <null> <null> 0 1 <null> <null> <null> !
<null> NO
QT_Ora9DS pg_catalog pg_database datname 12 string 4000 <null> 0 0 2 <null> <null> <null> <null> 0 2 <null> <null> <null> !
<null> NO
QT_Ora9DS pg_catalog pg_database encoding 4 integer 10 <null> 0 0 2 <null> <null> <null> <null> 0 3 <null> <null> <null> !
<null> NO
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-28 18:03:41 UTC (rev 3129)
+++ trunk/test-integration/common/src/test/resources/TestODBCSchema/test_PG_ATTRIBUTE.expected 2011-04-29 01:33:21 UTC (rev 3130)
@@ -173,7 +173,7 @@
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
+174 20 relhasoids 16 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
Modified: trunk/test-integration/common/src/test/resources/TestODBCSchema/test_PG_CLASS.expected
===================================================================
--- trunk/test-integration/common/src/test/resources/TestODBCSchema/test_PG_CLASS.expected 2011-04-28 18:03:41 UTC (rev 3129)
+++ trunk/test-integration/common/src/test/resources/TestODBCSchema/test_PG_CLASS.expected 2011-04-29 01:33:21 UTC (rev 3130)
@@ -1,36 +1,36 @@
-integer string integer char integer float integer boolean string
-oid relname relnamespace relkind relam reltuples relpages relhasrules relhasoids
-1 PARTSSUPPLIER.PARTS 1 r 0 0.0 0 false false
-2 PARTSSUPPLIER.SHIP_VIA 1 r 0 0.0 0 false false
-3 PARTSSUPPLIER.STATUS 1 r 0 0.0 0 false false
-4 PARTSSUPPLIER.SUPPLIER_PARTS 1 r 0 0.0 0 false false
-5 PARTSSUPPLIER.SUPPLIER 1 r 0 0.0 0 false false
-6 MatViews 2 r 0 0.0 0 false false
-7 VDBResources 2 r 0 0.0 0 false false
-8 Columns 3 r 0 0.0 0 false false
-9 DataTypes 3 r 0 0.0 0 false false
-10 KeyColumns 3 r 0 0.0 0 false false
-11 Keys 3 r 0 0.0 0 false false
-12 ProcedureParams 3 r 0 0.0 0 false false
-13 Procedures 3 r 0 0.0 0 false false
-14 Properties 3 r 0 0.0 0 false false
-15 ReferenceKeyColumns 3 r 0 0.0 0 false false
-16 Schemas 3 r 0 0.0 0 false false
-17 Tables 3 r 0 0.0 0 false false
-18 VirtualDatabases 3 r 0 0.0 0 false false
-19 pg_namespace 4 v 0 0.0 0 false false
-20 pg_class 4 v 0 0.0 0 false false
-21 pg_attribute 4 v 0 0.0 0 false false
-22 pg_type 4 v 0 0.0 0 false false
-23 pg_index 4 v 0 0.0 0 false false
-24 pg_am 4 v 0 0.0 0 false false
-25 pg_proc 4 v 0 0.0 0 false false
-26 pg_trigger 4 v 0 0.0 0 false false
-27 pg_attrdef 4 v 0 0.0 0 false false
-28 pg_database 4 v 0 0.0 0 false false
-29 pg_user 4 v 0 0.0 0 false false
-30 matpg_relatt 4 v 0 0.0 0 false false
-31 matpg_datatype 4 v 0 0.0 0 false false
+integer string integer char integer float integer boolean boolean
+oid relname relnamespace relkind relam reltuples relpages relhasrules relhasoids
+1 PARTSSUPPLIER.PARTS 1 r 0 0.0 0 false false
+2 PARTSSUPPLIER.SHIP_VIA 1 r 0 0.0 0 false false
+3 PARTSSUPPLIER.STATUS 1 r 0 0.0 0 false false
+4 PARTSSUPPLIER.SUPPLIER_PARTS 1 r 0 0.0 0 false false
+5 PARTSSUPPLIER.SUPPLIER 1 r 0 0.0 0 false false
+6 MatViews 2 r 0 0.0 0 false false
+7 VDBResources 2 r 0 0.0 0 false false
+8 Columns 3 r 0 0.0 0 false false
+9 DataTypes 3 r 0 0.0 0 false false
+10 KeyColumns 3 r 0 0.0 0 false false
+11 Keys 3 r 0 0.0 0 false false
+12 ProcedureParams 3 r 0 0.0 0 false false
+13 Procedures 3 r 0 0.0 0 false false
+14 Properties 3 r 0 0.0 0 false false
+15 ReferenceKeyColumns 3 r 0 0.0 0 false false
+16 Schemas 3 r 0 0.0 0 false false
+17 Tables 3 r 0 0.0 0 false false
+18 VirtualDatabases 3 r 0 0.0 0 false false
+19 pg_namespace 4 v 0 0.0 0 false false
+20 pg_class 4 v 0 0.0 0 false false
+21 pg_attribute 4 v 0 0.0 0 false false
+22 pg_type 4 v 0 0.0 0 false false
+23 pg_index 4 v 0 0.0 0 false false
+24 pg_am 4 v 0 0.0 0 false false
+25 pg_proc 4 v 0 0.0 0 false false
+26 pg_trigger 4 v 0 0.0 0 false false
+27 pg_attrdef 4 v 0 0.0 0 false false
+28 pg_database 4 v 0 0.0 0 false false
+29 pg_user 4 v 0 0.0 0 false false
+30 matpg_relatt 4 v 0 0.0 0 false false
+31 matpg_datatype 4 v 0 0.0 0 false false
Row Count : 31
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_class 11 10 0 false false false false 2 true true false false
@@ -41,4 +41,4 @@
reltuples 7 PartsSupplier java.lang.Float reltuples float pg_catalog pg_class 22 20 0 false false false false 2 true true false false
relpages 4 PartsSupplier java.lang.Integer relpages integer pg_catalog pg_class 11 10 0 false false false false 2 true true false false
relhasrules -7 PartsSupplier java.lang.Boolean relhasrules boolean pg_catalog pg_class 5 1 0 false false false false 2 true true false false
-relhasoids 12 PartsSupplier java.lang.String relhasoids string pg_catalog pg_class 4000 4000 0 false false false false 2 true true false false
+relhasoids -7 PartsSupplier java.lang.Boolean relhasoids boolean pg_catalog pg_class 5 1 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-28 18:03:41 UTC (rev 3129)
+++ trunk/test-integration/common/src/test/resources/TestPartsDatabaseMetadata/testColumns.expected 2011-04-29 01:33:21 UTC (rev 3130)
@@ -199,7 +199,7 @@
PartsSupplier pg_catalog pg_class reltuples 7 float 20 <null> 0 0 2 <null> <null> <null> <null> 0 6 <null> <null> <null> !
<null> NO
PartsSupplier pg_catalog pg_class relpages 4 integer 10 <null> 0 0 2 <null> <null> <null> <null> 0 7 <null> <null> <null> !
<null> NO
PartsSupplier pg_catalog pg_class relhasrules -7 boolean 1 <null> 0 0 2 <null> <null> <null> <null> 0 8 <null> <null> <null> !
<null> NO
-PartsSupplier pg_catalog pg_class relhasoids 12 string 4000 <null> 0 0 2 <null> <null> <null> <null> 0 9 <null> <null> <null> !
<null> NO
+PartsSupplier pg_catalog pg_class relhasoids -7 boolean 1 <null> 0 0 2 <null> <null> <null> <null> 0 9 <null> <null> <null> !
<null> NO
PartsSupplier pg_catalog pg_database oid 4 integer 10 <null> 0 0 2 <null> <null> <null> <null> 0 1 <null> <null> <null> !
<null> NO
PartsSupplier pg_catalog pg_database datname 12 string 4000 <null> 0 0 2 <null> <null> <null> <null> 0 2 <null> <null> <null> !
<null> NO
PartsSupplier pg_catalog pg_database encoding 4 integer 10 <null> 0 0 2 <null> <null> <null> <null> 0 3 <null> <null> <null> !
<null> NO
Modified: trunk/test-integration/common/src/test/resources/TestSystemVirtualModel/testColumns.expected
===================================================================
--- trunk/test-integration/common/src/test/resources/TestSystemVirtualModel/testColumns.expected 2011-04-28 18:03:41 UTC (rev 3129)
+++ trunk/test-integration/common/src/test/resources/TestSystemVirtualModel/testColumns.expected 2011-04-29 01:33:21 UTC (rev 3130)
@@ -219,7 +219,7 @@
PartsSupplier pg_catalog pg_proc proretset 3 <null> boolean 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Boolean 0 0 0 mmuid:e0244e1d-431c-4!
1fa-8194-1e357e2b688b <null> 206
PartsSupplier pg_catalog pg_proc prorettype 4 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:9fb5a34a-3a7e-4!
d38-b7cd-239f28a3504e <null> 207
PartsSupplier pg_catalog pg_class relam 5 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:c2f92b1a-6ba0-4!
486-8936-f5185d926178 <null> 170
-PartsSupplier pg_catalog pg_class relhasoids 9 <null> string 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.String 0 0 0 mmuid:3ac5a14a-1f9e-4!
55b-8ea1-cf0878774fd7 <null> 174
+PartsSupplier pg_catalog pg_class relhasoids 9 <null> boolean 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Boolean 0 0 0 mmuid:3ac5a14a-1f9e-4!
55b-8ea1-cf0878774fd7 <null> 174
PartsSupplier pg_catalog pg_class relhasrules 8 <null> boolean 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Boolean 0 0 0 mmuid:6c26fd66-2a4a-4!
ccf-949a-a06a858db7f6 <null> 173
PartsSupplier pg_catalog pg_class relkind 4 <null> char 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Character 0 0 0 mmuid:ef4359eb-6d51-4!
249-bfea-40bc0f407d10 <null> 169
PartsSupplier pg_catalog pg_class relname 2 <null> string 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.String 0 0 0 mmuid:5f9b50fa-8188-4!
048-93c2-3ad1587915df <null> 167
13 years, 9 months
teiid SVN: r3129 - trunk/documentation/developer-guide/src/main/docbook/en-US/content.
by teiid-commits@lists.jboss.org
Author: rareddy
Date: 2011-04-28 14:03:41 -0400 (Thu, 28 Apr 2011)
New Revision: 3129
Modified:
trunk/documentation/developer-guide/src/main/docbook/en-US/content/udf.xml
Log:
TEIID-1569: updating the doc to reflect the development of the udf pushdown functions.
Modified: trunk/documentation/developer-guide/src/main/docbook/en-US/content/udf.xml
===================================================================
--- trunk/documentation/developer-guide/src/main/docbook/en-US/content/udf.xml 2011-04-28 16:15:17 UTC (rev 3128)
+++ trunk/documentation/developer-guide/src/main/docbook/en-US/content/udf.xml 2011-04-28 18:03:41 UTC (rev 3129)
@@ -8,8 +8,8 @@
creating a UDF.</para>
<section id="define_udf">
<title>UDF Definition</title>
- <para>A FunctionDefinition.xmi file provides metadata to the
- query engine on User Defined Functions. See the Designer Documentation for more on creating a Function Definition Model.</para>
+ <para>A {FunctionDefinition}.xmi file provides metadata to the query engine on User Defined Functions.
+ See the Designer Documentation for more on creating a Function Definition Model.</para>
<itemizedlist>
<para>The following are used to define a UDF.</para>
<listitem>
@@ -56,7 +56,8 @@
<emphasis>Pushdown</emphasis>
- can be one of REQUIRED, NEVER, ALLOWED. Indicates the expected
pushdown behavior. If NEVER or ALLOWED are specified then a Java
- implementation of the function should be supplied.
+ implementation of the function should be supplied. If REQUIRED is used, then user must extend the
+ Translator for the source and add this function to its pushdown function library.
</para>
</listitem>
<listitem>
@@ -78,6 +79,12 @@
<para>Even pushdown required functions need to be added as a UDF to allow
Teiid to properly parse and resolve the function. Pushdown scalar functions differ from normal user-defined functions in that no code is provided for evaluation in the engine.
An exception will be raised if a pushdown required function cannot be evaluated by the appropriate source.</para>
+
+ <note>
+ <title>Dynamic VDBs</title>
+ <para>Currently there is no provision to add UDF when you are working with the Dynamic VDBs. However, you can
+ extend the Translator to define source pushdown functions.</para>
+ </note>
</section>
<section>
<title>Source Supported UDF</title>
@@ -115,8 +122,8 @@
<para>
<emphasis>Required</emphasis>
- extend the OracleExecutionFactory and add SCORE and CONTAINS as
- supported functions. For this example, we'll call the class
- MyOracleExecutionFactory. Add the
+ supported pushdown functions by either overriding or adding additional functions in "getPushDownFunctions" method.
+ For this example, we'll call the class MyOracleExecutionFactory. Add the
<code>org.teiid.translator.Translator</code>
annotation to the class, e.g.
<code>@Translator(name="myoracle")</code>
@@ -133,7 +140,9 @@
<para>
Create a new translator jar containing your custom
ExecutionFactory. Refer to <xref linkend="translator_package"/> and
- <xref linkend="translator_deploy"/> for instructions on using the JAR file.
+ <xref linkend="translator_deploy"/> for instructions on using the JAR file. Once this is extended
+ translator is deployed in the Teiid Server, use "myoracle" as
+ translator name instead of the "oracle" in your VDB's Oracle source configuration.
</para>
</listitem>
</itemizedlist>
13 years, 9 months
teiid SVN: r3128 - trunk/build/kits/jboss-container/teiid-examples/jca.
by teiid-commits@lists.jboss.org
Author: rareddy
Date: 2011-04-28 12:15:17 -0400 (Thu, 28 Apr 2011)
New Revision: 3128
Modified:
trunk/build/kits/jboss-container/teiid-examples/jca/salesforce-ds.xml
trunk/build/kits/jboss-container/teiid-examples/jca/webservices-ds.xml
Log:
TEIID-1432: Adding CXF configuration to templates
Modified: trunk/build/kits/jboss-container/teiid-examples/jca/salesforce-ds.xml
===================================================================
--- trunk/build/kits/jboss-container/teiid-examples/jca/salesforce-ds.xml 2011-04-28 16:02:26 UTC (rev 3127)
+++ trunk/build/kits/jboss-container/teiid-examples/jca/salesforce-ds.xml 2011-04-28 16:15:17 UTC (rev 3128)
@@ -16,6 +16,12 @@
<config-property name="username">user</config-property>
<config-property name="password">pass</config-property>
+ <!--
+ Uncomment this property to supply specific configuration for SalesForce service. This configuration
+ must contain config for "SforceService" service with namespace "urn:partner.soap.sforce.com"
+ <config-property name="configFile">path/to/jbossws-cxf.xml</config-property>
+ -->
+
<!-- connection pool size -->
<max-pool-size>1</max-pool-size>
</no-tx-connection-factory>
Modified: trunk/build/kits/jboss-container/teiid-examples/jca/webservices-ds.xml
===================================================================
--- trunk/build/kits/jboss-container/teiid-examples/jca/webservices-ds.xml 2011-04-28 16:02:26 UTC (rev 3127)
+++ trunk/build/kits/jboss-container/teiid-examples/jca/webservices-ds.xml 2011-04-28 16:15:17 UTC (rev 3128)
@@ -14,6 +14,12 @@
<!-- End point for the web service -->
<config-property name="EndPoint">endpoint url</config-property>
+ <!--
+ Uncomment these properties to supply specific CXF configuration for this service. This file
+ must contain configuration for name defined on "configName" property.
+ <config-property name="configFile">path/to/jbossws-cxf.xml</config-property>
+ <config-property name="configName">webSVC</config-property>
+ -->
<max-pool-size>1</max-pool-size>
13 years, 9 months
teiid SVN: r3127 - trunk/runtime/src/main/java/org/teiid/deployers.
by teiid-commits@lists.jboss.org
Author: rareddy
Date: 2011-04-28 12:02:26 -0400 (Thu, 28 Apr 2011)
New Revision: 3127
Modified:
trunk/runtime/src/main/java/org/teiid/deployers/VDBStructure.java
Log:
TEIID-1553: Enabling the VDB deployer to scan all the directories including sub-directories, this enable the function model to be found and which is located under a folder.
Modified: trunk/runtime/src/main/java/org/teiid/deployers/VDBStructure.java
===================================================================
--- trunk/runtime/src/main/java/org/teiid/deployers/VDBStructure.java 2011-04-28 02:55:13 UTC (rev 3126)
+++ trunk/runtime/src/main/java/org/teiid/deployers/VDBStructure.java 2011-04-28 16:02:26 UTC (rev 3127)
@@ -62,9 +62,7 @@
List<VirtualFile> children = file.getChildren();
for (VirtualFile child:children) {
- if (!child.isLeaf()) {
- scanDirs.add(child.getName());
- }
+ addAllDirs(child, scanDirs, null);
}
createContext(structureContext, scanDirs.toArray(new String[scanDirs.size()]));
return true;
@@ -75,5 +73,25 @@
}
return false;
}
+
+ private void addAllDirs(VirtualFile file, List<String> scanDirs, String parentName) throws IOException {
+ if (!file.isLeaf()) {
+ if (parentName != null) {
+ scanDirs.add(parentName + "/" + file.getName()); //$NON-NLS-1$
+ }
+ else {
+ scanDirs.add(file.getName());
+ }
+ List<VirtualFile> children = file.getChildren();
+ for (VirtualFile child:children) {
+ if (parentName == null) {
+ addAllDirs(child, scanDirs, file.getName());
+ }
+ else {
+ addAllDirs(child, scanDirs, parentName + "/" +file.getName()); //$NON-NLS-1$
+ }
+ }
+ }
+ }
}
13 years, 9 months
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> <null> java.lang.Boolean 1 1 10 mmuuid:4033f891-5ef5-!
4a75-8a50-bd1d021e43ad <null> 107
+PartsSupplier PartsSupplier PARTSSUPPLIER.PARTS PART_COLOR 3 PART_COLOR string 0 30 false true true true true false false Nullable <null> <null> -1 -1 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> -1 -1 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> -1 -1 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> -1 -1 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> -1 -1 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> -1 -1 Searchable <null> <null> java.lang.String 255 255 10 mmuuid:0125a80a-95f9-!
486f-aa90-debb21cb5f1b <null> 131
+PartsSupplier SYS ReferenceKeyColumns PKTABLE_CAT 1 <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:f615a661-2c36-!
4ab1-b72b-5e13e99e052c <null> 128
+PartsSupplier SYS ReferenceKeyColumns PKTABLE_NAME 3 <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:6d420bc2-0f85-!
4da9-833d-d71b428b0743 <null> 130
+PartsSupplier SYS ReferenceKeyColumns PKTABLE_SCHEM 2 <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:ef7b3b79-fb51-!
42ef-a723-080ed0a6e3bc <null> 129
+PartsSupplier SYS ReferenceKeyColumns PK_NAME 13 <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:ac210a6d-4de6-!
4d71-aa9b-e3d34baca81a <null> 140
+PartsSupplier SYS Columns Position 5 <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: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> -1 -1 Searchable <null> <null> java.lang.Integer 10 10 10 mmuuid:92a4849c-ed0e-!
4f5f-a108-d7d71a5aba25 <null> 87
+PartsSupplier SYS ProcedureParams Position 6 <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:5fdefd17-65f4-!
4350-9ee0-0ed3c34d10ae <null> 105
+PartsSupplier SYS Columns Precision 26 <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:db3d49e2-fe1d-!
438b-8d07-847bf58506ab <null> 54
+PartsSupplier SYS DataTypes Precision 12 <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:8673c810-7162-!
4331-ba0b-6fc3530d2d1c <null> 71
+PartsSupplier SYS ProcedureParams Precision 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:00fe7cad-0a83-!
42f0-90f2-d6a9584916b2 <null> 108
+PartsSupplier SYS Schemas PrimaryMetamodelURI 6 <null> string 0 255 false true false false false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.String 255 255 10 mmuuid:eadfaba5-ce44-!
4529-816f-6af94666baec <null> 147
+PartsSupplier SYS ProcedureParams ProcedureName 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:8081b3a6-fc79-!
42fd-b7c9-a19d682a1658 <null> 102
+PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS QUANTITY 3 QUANTITY short 0 0 true true true false true false false Nullable <null> <null> -1 -1 All Except Like <null> <null> java.lang.Short 3 0 10 mmuuid:3fc400c1-73ff-!
1edc-a81c-ecf397b10590 <null> 11
+PartsSupplier SYS Columns Radix 28 <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:43a6124c-972f-!
4c4c-af05-24080c2a8ad7 <null> 56
+PartsSupplier SYS DataTypes Radix 13 <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:967ab8fd-3226-!
4a78-8cf2-2eb7fbf2981a <null> 72
+PartsSupplier SYS ProcedureParams Radix 12 <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:8df37c99-3b12-!
4789-8128-4aa496f895c4 <null> 111
+PartsSupplier SYS KeyColumns RefKeyUID 7 <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:aafbdf50-25aa-!
427b-b322-7cb36094a1e2 <null> 85
+PartsSupplier SYS Keys RefKeyUID 9 <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:1cf4c5ad-5932-!
47ec-8593-385b75bfeba8 <null> 97
+PartsSupplier SYS Procedures ReturnsResults 5 <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:b01164c8-dd10-!
410d-a91b-fcb2fc0450ce <null> 120
+PartsSupplier SYS DataTypes RuntimeType 16 <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:3c7bc9d0-b73f-!
49a0-b9ab-dc97a4d2a124 <null> 75
+PartsSupplier PartsSupplier PARTSSUPPLIER.SHIP_VIA SHIPPER_ID 1 SHIPPER_ID short 0 0 true true true false true false false No Nulls <null> <null> -1 -1 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> -1 -1 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> -1 -1 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> -1 -1 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> -1 -1 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> -1 -1 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> -1 -1 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> -1 -1 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> -1 -1 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> -1 -1 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> -1 -1 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> -1 -1 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> -1 -1 Searchable <null> (0) java.lang.Integer 10 10 10 mmuuid:e8655204-e97a-!
45cd-909b-1e37731e9546 <null> 65
+PartsSupplier SYS ProcedureParams Scale 11 <null> integer 0 10 true true true false false false false No Nulls <null> <null> -1 -1 Searchable <null> (0) java.lang.Integer 10 10 10 mmuuid:360c8b1d-4b3d-!
42fd-952c-bf5763cad69e <null> 110
+PartsSupplier SYSADMIN MatViews SchemaName 2 <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: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> -1 -1 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> -1 -1 Searchable <null> <null> java.lang.String 0 255 10 mmuuid:787be966-cf12-!
4956-907f-a8e6dc1009dc <null> 80
+PartsSupplier SYS Keys SchemaName 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:4a7fc059-208e-!
4f98-b6ef-cb7c6102a327 <null> 90
+PartsSupplier SYS ProcedureParams SchemaName 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:88497911-619c-!
4ca8-b482-8885d940706a <null> 101
+PartsSupplier SYS Procedures SchemaName 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:53a84865-334e-!
4750-b343-de2411d56e3e <null> 117
+PartsSupplier SYS Tables SchemaName 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:95bd960c-fd84-!
44c9-9831-692376f69b46 <null> 150
+PartsSupplier SYS Columns SearchType 22 <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:3037138a-bb20-!
4485-ba01-75bc20b1a532 <null> 50
+PartsSupplier SYS DataTypes SearchType 14 <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:d8494fa3-40e4-!
44cd-b0d8-da5c83685a75 <null> 73
+PartsSupplier SYS Columns SupportsSelect 11 <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: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> -1 -1 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> -1 -1 Searchable <null> <null> java.lang.Boolean 1 1 10 mmuuid:5144d230-2b0e-!
4255-b321-65b9f6f6f76c <null> 155
+PartsSupplier SYS Columns TableName 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: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> -1 -1 Searchable <null> <null> java.lang.String 2048 2048 10 mmuuid:c24fad72-0c0d-!
4260-96ae-f188ad77b137 <null> 81
+PartsSupplier SYS Keys TableName 3 <null> string 0 2048 true true false true false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.String 2048 2048 10 mmuuid:7d9540bd-b51f-!
4206-8c33-b39c5ba8bb8b <null> 91
+PartsSupplier SYSADMIN MatViews TargetName 5 <null> string 0 4000 false true false true true false false Nullable <null> <null> -1 -1 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> -1 -1 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> -1 -1 Searchable <null> <null> java.lang.String 20 20 10 mmuuid:29e73c18-afec-!
43a9-81ab-7378d6daf20b <null> 95
+PartsSupplier SYS ProcedureParams Type 7 <null> string 0 100 true true false false false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.String 100 100 10 mmuuid:76a1981b-1226-!
4a55-9acf-82a061cc8642 <null> 106
+PartsSupplier SYS Tables Type 4 <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:4814a0af-4e8f-!
4f55-9b25-3148d90d3d9b <null> 152
+PartsSupplier SYS DataTypes TypeLength 7 <null> integer 0 10 true true false false false false false No Nulls <null> <null> -1 -1 Searchable <null> (0) java.lang.Integer 10 10 10 mmuuid:0668382a-f9c3-!
4507-8b0f-df65a2ebbf2f <null> 66
+PartsSupplier SYS ProcedureParams TypeLength 10 <null> integer 0 10 true true false false false false false No Nulls <null> <null> -1 -1 Searchable <null> (0) java.lang.Integer 10 10 10 mmuuid:791d7a29-8fc5-!
4735-9144-1accc114b58e <null> 109
+PartsSupplier SYS DataTypes TypeName 4 <null> string 0 100 true true false false false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.String 100 100 10 mmuuid:48081cdd-9e90-!
4440-a956-4a32af96d7f4 <null> 63
+PartsSupplier SYS Columns UID 29 <null> string 0 50 true true false false false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.String 50 50 10 mmuuid:5f491c75-769b-!
4908-9f68-2a9a486607bb <null> 57
+PartsSupplier SYS DataTypes UID 15 <null> string 0 50 true true false false true false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.String 50 50 10 mmuuid:dd57f577-ffc4-!
4b55-8f7f-355b9ea3ce37 <null> 74
+PartsSupplier SYS KeyColumns UID 8 <null> string 0 50 true true false false false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.String 50 50 10 mmuuid:0d994a45-4f52-!
4b79-9b31-7ef22331fee2 <null> 86
+PartsSupplier SYS Keys UID 10 <null> string 0 50 true true false false false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.String 50 50 10 mmuuid:782218d1-5337-!
48c6-9070-0aafd4c6cd20 <null> 98
+PartsSupplier SYS ProcedureParams UID 14 <null> string 0 50 false true true true true false false Nullable <null> <null> -1 -1 Searchable <null> <null> java.lang.String 0 50 10 mmuuid:a278de2e-89f1-!
4281-9e63-54aebb6062ce <null> 113
+PartsSupplier SYS Procedures UID 6 <null> string 0 50 true true false false false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.String 50 50 10 mmuuid:de9df25a-c886-!
46e0-ae3a-8eb6792e43f4 <null> 121
+PartsSupplier SYS Properties UID 3 <null> string 0 50 true true false false true false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.String 50 50 10 mmuuid:b333969a-83e0-!
4010-9463-9a0088da6c83 <null> 126
+PartsSupplier SYS Schemas UID 4 <null> string 0 50 true true false false false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.String 50 50 10 mmuuid:ad232e4d-9c01-!
4d0c-bc57-0459d9db918a <null> 145
+PartsSupplier SYS Tables UID 8 <null> string 0 50 true true false false false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.String 50 50 10 mmuuid:6afe3737-26f9-!
43a8-88db-86531b5dc66c <null> 156
+PartsSupplier SYS ReferenceKeyColumns UPDATE_RULE 10 <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:30d5ae74-b19e-!
4186-97e1-aeff5801e44f <null> 137
+PartsSupplier SYSADMIN MatViews Updated 8 <null> timestamp 0 0 false true false true true false false Nullable <null> <null> -1 -1 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> -1 -1 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> -1 -1 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> -1 -1 Searchable <null> <null> java.lang.String 255 255 10 mmuuid:f062eb9c-4854-!
47fb-b7bd-a4e23c782b62 <null> 79
+PartsSupplier SYS Keys VDBName 1 <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:5785b523-7da3-!
42c1-8920-66daa1f7fa1d <null> 89
+PartsSupplier SYS ProcedureParams VDBName 1 <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:f832f316-2403-!
43fa-9ccc-c3ab9d38acca <null> 100
+PartsSupplier SYS Procedures VDBName 1 <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:1d664747-4a95-!
4605-8b28-381bed3121f1 <null> 116
+PartsSupplier SYS Schemas VDBName 1 <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:73dbf95b-a283-!
4f0a-81b9-9b98e09c2906 <null> 142
+PartsSupplier SYS Tables VDBName 1 <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:58de905f-9d64-!
4831-a985-da6d082ff709 <null> 149
+PartsSupplier SYSADMIN MatViews Valid 6 <null> boolean 0 0 false true false true true false false Nullable <null> <null> -1 -1 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> -1 -1 Searchable <null> <null> java.lang.String 255 255 10 mmuuid:c917257d-06b7-!
41dd-a6cb-44c0ff0f897e <null> 125
+PartsSupplier SYS VirtualDatabases Version 2 <null> string 0 50 true true false true false false false No Nulls <null> <null> -1 -1 Searchable <null> <null> java.lang.String 50 50 10 mmuuid:c876d749-a512-!
4810-9910-3034ca524c45 <null> 163
+PartsSupplier pg_catalog pg_attrdef adbin 3 <null> string 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.String 0 0 0 mmuid:e22c521a-e208-4!
181-9dbd-89f5de7014b9 <null> 225
+PartsSupplier pg_catalog pg_attrdef adnum 2 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:e9b278d4-49af-4!
42f-9a5a-b699fe3b102b <null> 224
+PartsSupplier pg_catalog pg_attrdef adrelid 1 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:4589389f-4abd-4!
2a6-818f-ff1f2a085dfb <null> 223
+PartsSupplier pg_catalog pg_attrdef adsrc 4 <null> string 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.String 0 0 0 mmuid:492dd834-907f-4!
29b-aa6e-958ad65204c6 <null> 226
+PartsSupplier pg_catalog pg_am amname 2 <null> string 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.String 0 0 0 mmuid:da4b747e-7d87-4!
03a-8309-2cdf1399031b <null> 203
+PartsSupplier pg_catalog pg_attribute atthasdef 10 <null> boolean 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Boolean 0 0 0 mmuid:5868e549-4bbe-4!
79e-bc7e-632c05cc2329 <null> 184
+PartsSupplier pg_catalog pg_attribute attisdropped 9 <null> boolean 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Boolean 0 0 0 mmuid:7beb42a9-dfe6-4!
3de-98b6-7e8948b1a666 <null> 183
+PartsSupplier pg_catalog pg_attribute attlen 5 <null> short 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Short 0 0 0 mmuid:d1214249-95cd-4!
26f-b8f6-4bf68c0504c7 <null> 179
+PartsSupplier pg_catalog pg_attribute attname 3 <null> string 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.String 0 0 0 mmuid:6064d149-4102-4!
c2d-9132-582342f25e90 <null> 177
+PartsSupplier pg_catalog matpg_relatt attname 3 <null> string 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.String 0 0 0 mmuid:5cfb2b62-a912-4!
bfb-bf4f-51e107fe210c <null> 242
+PartsSupplier pg_catalog pg_attribute attnotnull 8 <null> boolean 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Boolean 0 0 0 mmuid:91ce8bde-8570-4!
867-be17-80acfa9275a6 <null> 182
+PartsSupplier pg_catalog pg_attribute attnum 6 <null> short 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Short 0 0 0 mmuid:141fd911-f2dd-4!
edd-8f08-ad8a67ffd0fb <null> 180
+PartsSupplier pg_catalog matpg_relatt attnum 2 <null> short 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Short 0 0 0 mmuid:0b0894ba-e1ea-4!
eaf-bcd2-ea9ebd05e47d <null> 241
+PartsSupplier pg_catalog pg_attribute attrelid 2 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:3be6b5de-2287-4!
279-93f3-4f5064799118 <null> 176
+PartsSupplier pg_catalog matpg_relatt attrelid 1 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:5c7bf056-ecc5-4!
1ea-a122-7a4b1de9908a <null> 240
+PartsSupplier pg_catalog pg_attribute atttypid 4 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:99782493-1cce-4!
e14-9c1b-4de7ce50e2c8 <null> 178
+PartsSupplier pg_catalog pg_attribute atttypmod 7 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:2e2bae3c-ab93-4!
9f5-b96c-7a7b9d66782d <null> 181
+PartsSupplier pg_catalog matpg_relatt autoinc 6 <null> boolean 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Boolean 0 0 0 mmuid:23454408-0347-4!
0d2-a3f9-3faa664fb5e9 <null> 245
+PartsSupplier SYSADMIN VDBResources contents 2 <null> blob 0 0 false true false true true false false Nullable <null> <null> -1 -1 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> -1 -1 Searchable <null> <null> java.lang.Object 0 0 0 mmuid:8b993c11-de2b-4!
8bc-beb1-3e44c46811b4 <null> 233
+PartsSupplier pg_catalog pg_database datallowconn 5 <null> char 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Character 0 0 0 mmuid:5c9d54b2-433f-4!
43a-85ce-821f42ed109e <null> 231
+PartsSupplier pg_catalog pg_database datconfig 6 <null> object 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Object 0 0 0 mmuid:4b5beb14-03a0-4!
652-9d6f-5f8cc74d470c <null> 232
+PartsSupplier pg_catalog pg_database datdba 8 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:36db343d-e99a-4!
27c-a4e2-763a720ce4a4 <null> 234
+PartsSupplier pg_catalog pg_database datlastsysoid 4 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:c2bdf40c-ec58-4!
39c-a403-7adf604ceadd <null> 230
+PartsSupplier pg_catalog pg_database datname 2 <null> string 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.String 0 0 0 mmuid:1aedd02c-5801-4!
1e7-accd-da1f257c26e8 <null> 228
+PartsSupplier pg_catalog pg_database dattablespace 9 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:28d034eb-6f39-4!
02f-b642-9c9560e57247 <null> 235
+PartsSupplier pg_catalog pg_database encoding 3 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:3b621b25-171c-4!
05b-8bf9-635cf93f2273 <null> 229
+PartsSupplier pg_catalog pg_index indexprs 7 <null> string 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.String 0 0 0 mmuid:1e6dbecd-9a2d-4!
aef-afbe-665de7acb9d6 <null> 200
+PartsSupplier pg_catalog pg_index indexrelid 2 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:8709e084-48df-4!
17d-b3f8-f4e9b7d8802b <null> 195
+PartsSupplier pg_catalog pg_index indisclustered 4 <null> boolean 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Boolean 0 0 0 mmuid:9f873e0f-903d-4!
c9d-8c37-1073b5ec4c67 <null> 197
+PartsSupplier pg_catalog pg_index indisprimary 6 <null> boolean 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Boolean 0 0 0 mmuid:9ea3b6d2-b27b-4!
bb1-a99d-b703c3308384 <null> 199
+PartsSupplier pg_catalog pg_index indisunique 5 <null> boolean 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Boolean 0 0 0 mmuid:a52c714d-dfe9-4!
06c-906b-fadd53ac4e98 <null> 198
+PartsSupplier pg_catalog pg_index indkey 8 <null> string 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.String 0 0 0 mmuid:347ec08c-6b41-4!
1d0-8475-031ce7d99ac0 <null> 201
+PartsSupplier pg_catalog pg_index indrelid 3 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:16998907-e1dd-4!
47e-898d-780994d30619 <null> 196
+PartsSupplier pg_catalog matpg_datatype name 3 <null> string 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.String 0 0 0 mmuid:b4e04928-9a59-4!
718-a7f1-3a60bcae7449 <null> 249
+PartsSupplier pg_catalog pg_namespace nspname 2 <null> string 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.String 0 0 0 mmuid:0e513513-b35a-4!
8be-975d-5dbed6ace7e9 <null> 165
+PartsSupplier pg_catalog matpg_relatt nspname 5 <null> string 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.String 0 0 0 mmuid:f1998229-2c1a-4!
7b7-8f46-9dda81446db6 <null> 244
+PartsSupplier pg_catalog pg_namespace oid 1 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:688e5112-4083-4!
b67-b42c-62d9a614c59a <null> 164
+PartsSupplier pg_catalog pg_class oid 1 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:c1e736ac-c9d4-4!
026-8904-23c90e6eb1c0 <null> 166
+PartsSupplier pg_catalog pg_attribute oid 1 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:f735e545-a81c-4!
ee2-84d0-3ea35d4083a2 <null> 175
+PartsSupplier pg_catalog pg_type oid 1 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:b6f64d16-b147-4!
59d-8e84-1bd3048fb900 <null> 185
+PartsSupplier pg_catalog pg_index oid 1 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:83ae2247-7eec-4!
59f-b037-ffd3cdca0627 <null> 194
+PartsSupplier pg_catalog pg_am oid 1 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:3c67619c-7d8f-4!
378-b7e9-84a0451ea5e5 <null> 202
+PartsSupplier pg_catalog pg_proc oid 1 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:bdf3ee1e-b5b7-4!
8ab-b43c-4bbb2c8ae1e2 <null> 204
+PartsSupplier pg_catalog pg_trigger oid 1 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:635b6634-632c-4!
3c9-8cc7-bcaa016133e8 <null> 214
+PartsSupplier pg_catalog pg_database oid 1 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:689cde3b-a631-4!
f25-94b4-ff2ffe022b0f <null> 227
+PartsSupplier pg_catalog pg_user oid 1 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:bb78401d-d10c-4!
3b1-af84-e4fa6b95db42 <null> 236
+PartsSupplier pg_catalog matpg_datatype oid 1 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:053375a4-3971-4!
705-9146-9ecc640022c2 <null> 247
+PartsSupplier pg_catalog pg_proc proallargtypes 9 <null> object 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Object 0 0 0 mmuid:a385751f-a31a-4!
d5d-9197-3fbd390b0251 <null> 212
+PartsSupplier pg_catalog pg_proc proargmodes 8 <null> object 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Object 0 0 0 mmuid:bcbed548-176c-4!
116-a5d6-7638cb0206e1 <null> 211
+PartsSupplier pg_catalog pg_proc proargnames 7 <null> object 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Object 0 0 0 mmuid:d9f36bdc-7b25-4!
af0-b9f5-a96aac6d3094 <null> 210
+PartsSupplier pg_catalog pg_proc proargtypes 6 <null> object 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Object 0 0 0 mmuid:ffa4ac73-b549-4!
70e-931f-dc36330cb8c4 <null> 209
+PartsSupplier pg_catalog pg_proc proname 2 <null> string 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.String 0 0 0 mmuid:b288b3aa-37f2-4!
a8e-8b1b-e932a2ce3e25 <null> 205
+PartsSupplier pg_catalog pg_proc pronamespace 10 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:e5715456-245f-4!
846-b90b-01d06d1c3672 <null> 213
+PartsSupplier pg_catalog pg_proc pronargs 5 <null> short 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Short 0 0 0 mmuid:6796c2e7-48a4-4!
f9f-bc98-d47913e2491c <null> 208
+PartsSupplier pg_catalog pg_proc proretset 3 <null> boolean 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Boolean 0 0 0 mmuid:e0244e1d-431c-4!
1fa-8194-1e357e2b688b <null> 206
+PartsSupplier pg_catalog pg_proc prorettype 4 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:9fb5a34a-3a7e-4!
d38-b7cd-239f28a3504e <null> 207
+PartsSupplier pg_catalog pg_class relam 5 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:c2f92b1a-6ba0-4!
486-8936-f5185d926178 <null> 170
+PartsSupplier pg_catalog pg_class relhasoids 9 <null> string 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.String 0 0 0 mmuid:3ac5a14a-1f9e-4!
55b-8ea1-cf0878774fd7 <null> 174
+PartsSupplier pg_catalog pg_class relhasrules 8 <null> boolean 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Boolean 0 0 0 mmuid:6c26fd66-2a4a-4!
ccf-949a-a06a858db7f6 <null> 173
+PartsSupplier pg_catalog pg_class relkind 4 <null> char 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Character 0 0 0 mmuid:ef4359eb-6d51-4!
249-bfea-40bc0f407d10 <null> 169
+PartsSupplier pg_catalog pg_class relname 2 <null> string 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.String 0 0 0 mmuid:5f9b50fa-8188-4!
048-93c2-3ad1587915df <null> 167
+PartsSupplier pg_catalog matpg_relatt relname 4 <null> string 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.String 0 0 0 mmuid:ffbf69c1-2e34-4!
764-a9b3-9a1b61bfd4af <null> 243
+PartsSupplier pg_catalog pg_class relnamespace 3 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:4591ef08-bff8-4!
f3b-9de7-420f9c7f9d2b <null> 168
+PartsSupplier pg_catalog pg_class relpages 7 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:44dee7d6-b6ae-4!
4c7-85f2-e87364d8d059 <null> 172
+PartsSupplier pg_catalog pg_class reltuples 6 <null> float 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Float 0 0 0 mmuid:b9ed4b49-5a7b-4!
ba4-863a-37fd95b2a34c <null> 171
+PartsSupplier SYSADMIN VDBResources resourcePath 1 <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: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> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:0c20dbe7-5d89-4!
11f-a8ab-3d77b999595b <null> 217
+PartsSupplier pg_catalog pg_trigger tgconstrname 8 <null> string 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.String 0 0 0 mmuid:c010d12f-2074-4!
5db-8e18-979cee2c45da <null> 221
+PartsSupplier pg_catalog pg_trigger tgconstrrelid 2 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:64977f3e-f2a0-4!
66e-a5d1-80bb058cbe08 <null> 215
+PartsSupplier pg_catalog pg_trigger tgdeferrable 6 <null> boolean 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Boolean 0 0 0 mmuid:bfbff036-caf2-4!
652-80cf-398af17ed7d1 <null> 219
+PartsSupplier pg_catalog pg_trigger tgfoid 3 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:250d7c06-728a-4!
b2a-b557-91f2a69bb184 <null> 216
+PartsSupplier pg_catalog pg_trigger tginitdeferred 7 <null> boolean 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Boolean 0 0 0 mmuid:da4b59ca-ebff-4!
5a8-ad68-9777bc587813 <null> 220
+PartsSupplier pg_catalog pg_trigger tgnargs 5 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:d70f020b-658c-4!
f58-86dc-0fbb12e2d8af <null> 218
+PartsSupplier pg_catalog pg_trigger tgrelid 9 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:71091853-c65e-4!
6a9-9947-aa024f806e2d <null> 222
+PartsSupplier pg_catalog pg_type typbasetype 6 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:a17d2f61-cd68-4!
c0d-8d25-132f68eb3b67 <null> 190
+PartsSupplier pg_catalog pg_type typelem 9 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:22ac431d-e6e6-4!
eef-9d74-b31795424e97 <null> 193
+PartsSupplier pg_catalog pg_type typlen 4 <null> short 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Short 0 0 0 mmuid:931c09e1-937a-4!
37e-aab2-2360f8d90e2b <null> 188
+PartsSupplier pg_catalog matpg_datatype typlen 5 <null> short 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Short 0 0 0 mmuid:0e9c4439-48d0-4!
115-a343-5baab7a236b6 <null> 251
+PartsSupplier pg_catalog pg_type typname 2 <null> string 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.String 0 0 0 mmuid:d600d818-2aad-4!
c92-9343-267d044dd97d <null> 186
+PartsSupplier pg_catalog matpg_datatype typname 2 <null> string 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.String 0 0 0 mmuid:0f312b3c-98ca-4!
a09-81fa-f1ff83f0a6c1 <null> 248
+PartsSupplier pg_catalog pg_type typnamespace 3 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:e47217d2-2b07-4!
353-bfbd-d7c883a5e7e0 <null> 187
+PartsSupplier pg_catalog matpg_relatt typoid 7 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:595a823f-cec1-4!
2dc-b8b2-c95c8b4e4e66 <null> 246
+PartsSupplier pg_catalog pg_type typrelid 8 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:bec25882-b292-4!
ed1-a610-cad5d504837d <null> 192
+PartsSupplier pg_catalog pg_type typtype 5 <null> char 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Character 0 0 0 mmuid:83199eba-7af4-4!
4a9-822f-006677b1b895 <null> 189
+PartsSupplier pg_catalog pg_type typtypmod 7 <null> integer 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Integer 0 0 0 mmuid:cee3559d-1ce6-4!
b17-ad57-2ecb79a9e1d2 <null> 191
+PartsSupplier pg_catalog matpg_datatype uid 4 <null> string 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.String 0 0 0 mmuid:87826ebc-98a5-4!
f19-a6d8-6b7b96cbed48 <null> 250
+PartsSupplier pg_catalog pg_user usecreatedb 3 <null> boolean 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Boolean 0 0 0 mmuid:6da98878-b46e-4!
ed1-b032-1bc72da595f4 <null> 238
+PartsSupplier pg_catalog pg_user usename 2 <null> string 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.String 0 0 0 mmuid:236445e1-408c-4!
0a1-a61c-40e96fb5dc9f <null> 237
+PartsSupplier pg_catalog pg_user usesuper 4 <null> boolean 0 0 false true false false false false false Unknown <null> <null> -1 -1 Searchable <null> <null> java.lang.Boolean 0 0 0 mmuid:9bfddc66-af75-4!
366-8eac-b9fef3421219 <null> 239
+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 VDBName string SYS Columns 255 255 0 false false false false 0 true true false false
SchemaName 12 PartsSupplier java.lang.String SchemaName string SYS Columns 255 255 0 false true false true 1 false true true true
@@ -270,6 +272,8 @@
NullType 12 PartsSupplier java.lang.String NullType string SYS Columns 20 20 0 false true false false 0 true true false false
MinRange 12 PartsSupplier java.lang.String MinRange string SYS Columns 50 50 0 false false false false 1 true true false false
MaxRange 12 PartsSupplier java.lang.String MaxRange string SYS Columns 50 50 0 false false false false 1 true true false false
+DistinctCount 4 PartsSupplier java.lang.Integer DistinctCount integer SYS Columns 11 10 0 false true false true 1 false true true true
+NullCount 4 PartsSupplier java.lang.Integer NullCount integer SYS Columns 11 10 0 false true false true 1 false true true true
SearchType 12 PartsSupplier java.lang.String SearchType string SYS Columns 20 20 0 false false false false 0 true true false false
Format 12 PartsSupplier java.lang.String Format string SYS Columns 255 255 0 false false false false 1 true true false false
DefaultValue 12 PartsSupplier java.lang.String DefaultValue string SYS Columns 255 255 0 false false false false 1 true true false false
Modified: trunk/test-integration/common/src/test/resources/TestSystemVirtualModel/testProcedureParams.expected
===================================================================
--- trunk/test-integration/common/src/test/resources/TestSystemVirtualModel/testProcedureParams.expected 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/test-integration/common/src/test/resources/TestSystemVirtualModel/testProcedureParams.expected 2011-04-28 02:55:13 UTC (rev 3126)
@@ -6,9 +6,17 @@
PartsSupplier SYSADMIN refreshMatView RowsUpdated integer 3 ReturnValue false 0 0 0 10 No Nulls mmuuid:d07a6a75-aa12-4dac-8eab-b2acdbaaffd8 <null> 6
PartsSupplier SYSADMIN refreshMatViewRow ViewName string 1 In false 0 0 0 10 No Nulls mmuuid:ba635c44-a052-496d-9c35-ca010c0ebebe <null> 1
PartsSupplier SYSADMIN refreshMatView ViewName string 1 In false 0 0 0 10 No Nulls mmuuid:e0c28e00-d987-48e4-8c60-5f637f10bf33 <null> 4
-PartsSupplier SYS getXMLSchemas document string 1 In false 0 0 0 10 No Nulls mmuuid:85b88af5-f0b8-401f-b35a-ccee56155492 <null> 7
-PartsSupplier SYS getXMLSchemas schema xml 1 ResultSet false 0 0 0 10 Nullable mmuuid:003980bb-38bb-41ad-b8c2-c87ca47aa554 <null> 8
-Row Count : 8
+PartsSupplier SYSADMIN setTableStats cardinality integer 2 In false 0 0 0 10 No Nulls mmuuid:0aba7849-7fd3-4bc6-a3d3-dfe433bc67a4 <null> 14
+PartsSupplier SYSADMIN setColumnStats columnName string 2 In false 0 0 0 10 No Nulls mmuuid:76553706-632f-4e60-8489-9d0361f58541 <null> 8
+PartsSupplier SYSADMIN setColumnStats distinctCount integer 3 In false 0 0 0 10 Nullable mmuuid:2c61976e-abb5-4c74-bdae-278681b82aa3 <null> 9
+PartsSupplier SYS getXMLSchemas document string 1 In false 0 0 0 10 No Nulls mmuuid:85b88af5-f0b8-401f-b35a-ccee56155492 <null> 15
+PartsSupplier SYSADMIN setColumnStats max string 5 In false 0 0 0 10 Nullable mmuuid:8f42e701-3609-413d-8c10-77e32cd816f2 <null> 11
+PartsSupplier SYSADMIN setColumnStats min string 6 In false 0 0 0 10 Nullable mmuuid:4511ea3f-f2d2-4abf-b363-afb5186bc2d2 <null> 12
+PartsSupplier SYSADMIN setColumnStats nullCount integer 4 In false 0 0 0 10 Nullable mmuuid:44b8c83c-9fcd-4bd2-a730-76e401205536 <null> 10
+PartsSupplier SYS getXMLSchemas schema xml 1 ResultSet false 0 0 0 10 Nullable mmuuid:003980bb-38bb-41ad-b8c2-c87ca47aa554 <null> 16
+PartsSupplier SYSADMIN setColumnStats tableName string 1 In false 0 0 0 10 No Nulls mmuuid:4dcab018-ca4a-467b-96cc-7f28734c840e <null> 7
+PartsSupplier SYSADMIN setTableStats tableName string 1 In false 0 0 0 10 No Nulls mmuuid:28d8ad4a-e091-4934-afd9-7d27310bd370 <null> 13
+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 VDBName string SYS ProcedureParams 255 255 0 false false false false 0 true true false false
SchemaName 12 PartsSupplier java.lang.String SchemaName string SYS ProcedureParams 255 255 0 false true false true 1 false true true true
Modified: trunk/test-integration/common/src/test/resources/TestSystemVirtualModel/testProcedures.expected
===================================================================
--- trunk/test-integration/common/src/test/resources/TestSystemVirtualModel/testProcedures.expected 2011-04-27 19:38:39 UTC (rev 3125)
+++ trunk/test-integration/common/src/test/resources/TestSystemVirtualModel/testProcedures.expected 2011-04-28 02:55:13 UTC (rev 3126)
@@ -1,9 +1,11 @@
string string string string boolean string string integer
VDBName SchemaName Name NameInSource ReturnsResults UID Description OID
-PartsSupplier SYS getXMLSchemas <null> true mmuuid:68497bd9-30f5-461b-bf13-6b26aeb2fc4f <null> 3
+PartsSupplier SYS getXMLSchemas <null> true mmuuid:68497bd9-30f5-461b-bf13-6b26aeb2fc4f <null> 5
PartsSupplier SYSADMIN refreshMatView <null> false mmuuid:52178344-dca8-4c76-8549-00a4515c7044 <null> 2
PartsSupplier SYSADMIN refreshMatViewRow <null> false mmuuid:1674912b-af56-465a-a1b9-d1de8b761f10 <null> 1
-Row Count : 3
+PartsSupplier SYSADMIN setColumnStats <null> false mmuuid:49c367be-918f-43be-8b9e-99e275179859 <null> 3
+PartsSupplier SYSADMIN setTableStats <null> false mmuuid:6d167c35-04d1-41f6-83ff-888c39423823 <null> 4
+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 VDBName string SYS Procedures 255 255 0 false false false false 0 true true false false
SchemaName 12 PartsSupplier java.lang.String SchemaName string SYS Procedures 255 255 0 false true false true 1 false true true true
Added: trunk/test-integration/common/src/test/resources/metadata.vdb
===================================================================
(Binary files differ)
Property changes on: trunk/test-integration/common/src/test/resources/metadata.vdb
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
13 years, 9 months
teiid SVN: r3125 - in trunk: connectors/connector-salesforce/src/main/java/org/teiid/resource/adapter/salesforce and 3 other directories.
by teiid-commits@lists.jboss.org
Author: rareddy
Date: 2011-04-27 15:38:39 -0400 (Wed, 27 Apr 2011)
New Revision: 3125
Modified:
trunk/connectors/connector-salesforce/pom.xml
trunk/connectors/connector-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/SalesForceManagedConnectionFactory.java
trunk/connectors/connector-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/SalesforceConnectionImpl.java
trunk/connectors/connector-salesforce/src/main/rar/META-INF/ra.xml
trunk/documentation/admin-guide/src/main/docbook/en-US/content/vdb-deployment.xml
trunk/documentation/reference/src/main/docbook/en-US/content/translators.xml
Log:
TEIID-1432: Adding CXF configuration option for Saleforce connection. Also updated the document for this change.
Modified: trunk/connectors/connector-salesforce/pom.xml
===================================================================
--- trunk/connectors/connector-salesforce/pom.xml 2011-04-27 14:54:53 UTC (rev 3124)
+++ trunk/connectors/connector-salesforce/pom.xml 2011-04-27 19:38:39 UTC (rev 3125)
@@ -39,6 +39,30 @@
<artifactId>connector-api</artifactId>
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-frontend-jaxws</artifactId>
+ <version>2.2.2</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-transports-http</artifactId>
+ <version>2.2.2</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-ws-security</artifactId>
+ <version>2.2.2</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-ws-policy</artifactId>
+ <version>2.2.2</version>
+ <scope>provided</scope>
+ </dependency>
</dependencies>
<build>
Modified: trunk/connectors/connector-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/SalesForceManagedConnectionFactory.java
===================================================================
--- trunk/connectors/connector-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/SalesForceManagedConnectionFactory.java 2011-04-27 14:54:53 UTC (rev 3124)
+++ trunk/connectors/connector-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/SalesForceManagedConnectionFactory.java 2011-04-27 19:38:39 UTC (rev 3125)
@@ -25,18 +25,29 @@
import java.net.URL;
import javax.resource.ResourceException;
+import javax.xml.namespace.QName;
+import org.apache.cxf.Bus;
+import org.apache.cxf.bus.spring.SpringBusFactory;
+import org.apache.cxf.configuration.Configurer;
+import org.apache.cxf.jaxws.JaxWsClientFactoryBean;
import org.teiid.core.TeiidRuntimeException;
import org.teiid.resource.spi.BasicConnectionFactory;
import org.teiid.resource.spi.BasicManagedConnectionFactory;
+import com.sforce.soap.partner.SforceService;
+
public class SalesForceManagedConnectionFactory extends BasicManagedConnectionFactory {
private static final long serialVersionUID = 5298591275313314698L;
private String username;
private String password;
- private URL URL;
+ private URL URL; //sf url
+ private String configFile; // path to the "jbossws-cxf.xml" file
+
+ //cxf bus
+ private Bus bus;
public String getUsername() {
return username;
@@ -66,15 +77,37 @@
}
}
+ public String getConfigFile() {
+ return configFile;
+ }
+
+ public void setConfigFile(String config) {
+ this.configFile = config;
+ }
+
@Override
public BasicConnectionFactory createConnectionFactory() throws ResourceException {
+ QName portQName = SforceService.SERVICE;
+ if (this.configFile != null) {
+ this.bus = new SpringBusFactory().createBus(this.configFile);
+ JaxWsClientFactoryBean instance = new JaxWsClientFactoryBean();
+ Configurer configurer = this.bus.getExtension(Configurer.class);
+ if (null != configurer) {
+ configurer.configureBean(portQName.toString() + ".jaxws-client.proxyFactory", instance); //$NON-NLS-1$
+ }
+ }
+
return new BasicConnectionFactory() {
private static final long serialVersionUID = 5028356110047329135L;
@Override
public SalesforceConnectionImpl getConnection() throws ResourceException {
- return new SalesforceConnectionImpl(getUsername(), getPassword(), getURL());
+ return new SalesforceConnectionImpl(getUsername(), getPassword(), getURL(), SalesForceManagedConnectionFactory.this);
}
};
}
+
+ public Bus getBus() {
+ return bus;
+ }
}
Modified: trunk/connectors/connector-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/SalesforceConnectionImpl.java
===================================================================
--- trunk/connectors/connector-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/SalesforceConnectionImpl.java 2011-04-27 14:54:53 UTC (rev 3124)
+++ trunk/connectors/connector-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/SalesforceConnectionImpl.java 2011-04-27 19:38:39 UTC (rev 3125)
@@ -30,6 +30,8 @@
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.ws.BindingProvider;
+import org.apache.cxf.Bus;
+import org.apache.cxf.BusFactory;
import org.teiid.logging.LogConstants;
import org.teiid.logging.LogManager;
import org.teiid.resource.spi.BasicConnection;
@@ -67,12 +69,14 @@
private Soap sfSoap;
private SessionHeader sh;
private CallOptions co;
+ private SalesForceManagedConnectionFactory mcf;
private ObjectFactory partnerFactory = new ObjectFactory();
PackageVersionHeader pvHeader = partnerFactory.createPackageVersionHeader();
- public SalesforceConnectionImpl(String username, String password, URL url) throws ResourceException {
+ public SalesforceConnectionImpl(String username, String password, URL url, SalesForceManagedConnectionFactory mcf) throws ResourceException {
+ this.mcf = mcf;
login(username, password, url);
}
@@ -102,6 +106,8 @@
throw new ResourceException("SalesForce URL is not specified, please provide a valid URL"); //$NON-NLS-1$
}
+ Bus bus = BusFactory.getThreadDefaultBus();
+ BusFactory.setThreadDefaultBus(mcf.getBus());
try {
sfService = new SforceService();
sfSoap = sfService.getSoap();
@@ -113,6 +119,8 @@
throw new ResourceException(e);
} catch (com.sforce.soap.partner.UnexpectedErrorFault e) {
throw new ResourceException(e);
+ } finally {
+ BusFactory.setThreadDefaultBus(bus);
}
LogManager.logTrace(LogConstants.CTX_CONNECTOR, "Login was successful for username " + username); //$NON-NLS-1$
Modified: trunk/connectors/connector-salesforce/src/main/rar/META-INF/ra.xml
===================================================================
--- trunk/connectors/connector-salesforce/src/main/rar/META-INF/ra.xml 2011-04-27 14:54:53 UTC (rev 3124)
+++ trunk/connectors/connector-salesforce/src/main/rar/META-INF/ra.xml 2011-04-27 19:38:39 UTC (rev 3125)
@@ -57,8 +57,14 @@
<config-property-name>URL</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>https://www.salesforce.com/services/Soap/u/17.0</config-property-value>
- </config-property>
+ </config-property>
+ <config-property>
+ <description>{$display:"CXF Configuration File",$description:"CXF client configuration File or URL"}</description>
+ <config-property-name>ConfigFile</config-property-name>
+ <config-property-type>java.lang.String</config-property-type>
+ </config-property>
+
<connectionfactory-interface>javax.resource.cci.ConnectionFactory</connectionfactory-interface>
<connectionfactory-impl-class>org.teiid.resource.spi.WrappedConnectionFactory</connectionfactory-impl-class>
<connection-interface>javax.resource.cci.Connection</connection-interface>
Modified: trunk/documentation/admin-guide/src/main/docbook/en-US/content/vdb-deployment.xml
===================================================================
--- trunk/documentation/admin-guide/src/main/docbook/en-US/content/vdb-deployment.xml 2011-04-27 14:54:53 UTC (rev 3124)
+++ trunk/documentation/admin-guide/src/main/docbook/en-US/content/vdb-deployment.xml 2011-04-27 19:38:39 UTC (rev 3125)
@@ -117,7 +117,9 @@
</datasources>]]></programlisting>
</listitem>
</orderedlist>
-
+ <para>Template files [xxx-ds.xml] for different databases can found at {jboss-as}/docs/examples/jca, and also
+ additional sources like ingres, mondrian, intersystems-cache etc that Teiid suports can be found at
+ {jboss-as}/server/{profile}/teiid-examples/jca directory. </para>
</section>
<section>
<title>File Data Sources</title>
@@ -136,7 +138,7 @@
</connection-factories>]]></programlisting></example>
</section>
- <section>
+ <section id="ws-ds">
<title>Web Service Data Sources</title>
<para>Web service data sources use a Teiid specific JCA connector. You need to create "-ds.xml" file and copy it to the
"<jboss-install>/server/<profile>/deploy" directory.</para>
@@ -296,6 +298,24 @@
<config-property name="password">password</config-property>
</no-tx-connection-factory>
</connection-factories>]]></programlisting></example>
+
+ <section>
+ <title>CXF Configuration</title>
+ <para>Salesforce service data source may choose a particular CXF config file and port configuration.
+ The <code>ConfigFile</code> config property specifies the Spring XML configuration
+ file for the CXF Bus and port configuration to be used by connections.
+ If no config file is specified then the system default configuration will be used.</para>
+
+ <para>Only 1 port configuration can be used by this data source. The namespace URI for the QName in your
+ config file should be "urn:partner.soap.sforce.com", with configuration name "SforceService". For sample
+ cxf configuration file and details on configuration see <link linkend="ws-ds">Web Service Data Sources</link>
+ </para>
+
+ <para>See the <ulink url="http://cxf.apache.org/docs/">CXF documentation</ulink> for all possible configuration options.</para>
+
+ <note><para>The CXF configuration in Salesforce data source is only used for http bus configuration not for purposes of
+ ws-security, Salesforce has its own security authentication.</para></note>
+ </section>
</section>
<section>
Modified: trunk/documentation/reference/src/main/docbook/en-US/content/translators.xml
===================================================================
--- trunk/documentation/reference/src/main/docbook/en-US/content/translators.xml 2011-04-27 14:54:53 UTC (rev 3124)
+++ trunk/documentation/reference/src/main/docbook/en-US/content/translators.xml 2011-04-27 19:38:39 UTC (rev 3125)
@@ -197,6 +197,12 @@
getTextFiles, and saveFile procedures.
</para>
</section>
+
+ <section>
+ <title>JCA Resource Adapter</title>
+ <para>The resource adapter for this translator provided through "File Data Source", Refer to Admin Guide for
+ configuration information.</para>
+ </section>
</section>
@@ -490,6 +496,12 @@
</para>
</section>
+ <section>
+ <title>JCA Resource Adapter</title>
+ <para>The resource adapter for this translator provided through data source in JBoss AS,
+ Refer to Admin Guide for "JDBC Data Sources" configuration section.</para>
+ </section>
+
</section>
<section>
@@ -542,6 +554,13 @@
any value may be returned.
</para>
</section>
+
+ <section>
+ <title>JCA Resource Adapter</title>
+ <para>The resource adapter for this translator provided through "LDAP Data Source",
+ Refer to Admin Guide for configuration.</para>
+ </section>
+
</section>
<section>
@@ -595,6 +614,11 @@
provide metadata - it should be used as a testing stub.
</para>
+ <section>
+ <title>JCA Resource Adapter</title>
+ <para>The source connection is required for this translator</para>
+ </section>
+
</section>
<section>
@@ -942,6 +966,13 @@
</section>
</section>
+
+ <section>
+ <title>JCA Resource Adapter</title>
+ <para>The resource adapter for this translator provided through "Salesforce Data Source",
+ Refer to Admin Guide for configuration.</para>
+ </section>
+
</section>
<section>
@@ -1061,6 +1092,11 @@
</para>
</section>
</section>
+ <section>
+ <title>JCA Resource Adapter</title>
+ <para>Theresource adapter for this translator provided through "Web Service Data Source",
+ Refer to Admin Guide for configuration.</para>
+ </section>
</section>
<section>
@@ -1098,13 +1134,18 @@
</para>
<note><para>The use of <xref linkend="dataroles"/> should be considered to prevent arbitrary MDX from being submitted to the invokeMDX procedure.</para></note>
<para>
- This translator requires a data source to be configured to the OLAP cube using OLAP4J JDBC driver. Two sample
- -ds.xml files provided for accessing OLAP servers in teiid-examples section. One is Mondrian specific, when Mondrian server is deloyed
- in the same JBoss AS as Teiid (mondrian-ds.xml). To access any other OLAP servers using XMLA interface,
- the data source for them can be created using them example template olap-xmla-ds.xml
</para>
</section>
</section>
+ <section>
+ <title>JCA Resource Adapter</title>
+ <para>The resource adapter for this translator provided through data source in JBoss AS,
+ Refer to Admin Guide for "JDBC Data Sources" configuration section. Two sample
+ -ds.xml files provided for accessing OLAP servers in teiid-examples section. One is Mondrian specific,
+ when Mondrian server is deloyed
+ in the same JBoss AS as Teiid (mondrian-ds.xml). To access any other OLAP servers using XMLA interface,
+ the data source for them can be created using them example template olap-xmla-ds.xml</para>
+ </section>
</section>
<section>
13 years, 9 months
teiid SVN: r3124 - trunk/test-integration/common/src/test/java/org/teiid/transport.
by teiid-commits@lists.jboss.org
Author: shawkins
Date: 2011-04-27 10:54:53 -0400 (Wed, 27 Apr 2011)
New Revision: 3124
Modified:
trunk/test-integration/common/src/test/java/org/teiid/transport/TestODBCSocketTransport.java
Log:
TEIID-1176 further refinement of odbc handling. messages are queued and extended queries will properly handle error conditions
Modified: trunk/test-integration/common/src/test/java/org/teiid/transport/TestODBCSocketTransport.java
===================================================================
--- trunk/test-integration/common/src/test/java/org/teiid/transport/TestODBCSocketTransport.java 2011-04-27 01:26:25 UTC (rev 3123)
+++ trunk/test-integration/common/src/test/java/org/teiid/transport/TestODBCSocketTransport.java 2011-04-27 14:54:53 UTC (rev 3124)
@@ -29,6 +29,7 @@
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
+import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
@@ -142,6 +143,25 @@
TestMMDatabaseMetaData.compareResultSet(rs);
}
+ @Test public void testPreparedError() throws Exception {
+ PreparedStatement stmt = conn.prepareStatement("select cast(? as integer)");
+ stmt.setString(1, "a");
+ try {
+ stmt.executeQuery();
+ } catch (SQLException e) {
+ assertTrue(e.getMessage().contains("Error converting"));
+ }
+ }
+
+ @Test public void testPreparedError1() throws Exception {
+ PreparedStatement stmt = conn.prepareStatement("select");
+ try {
+ stmt.executeQuery();
+ } catch (SQLException e) {
+ assertTrue(e.getMessage().contains("Parsing error"));
+ }
+ }
+
@Test public void testEscapedLiteral() throws Exception {
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select E'\\n\\thello pg'");
13 years, 9 months