[teiid-commits] teiid SVN: r1616 - in branches/JCA: adminshell and 204 other directories.
teiid-commits at lists.jboss.org
teiid-commits at lists.jboss.org
Wed Dec 2 18:40:48 EST 2009
Author: rareddy
Date: 2009-12-02 18:40:40 -0500 (Wed, 02 Dec 2009)
New Revision: 1616
Added:
branches/JCA/adminshell/src/main/java/com/metamatrix/script/shell/Util.java
branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/Column.java
branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ColumnSet.java
branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/Datatype.java
branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ForeignKey.java
branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/KeyRecord.java
branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/MetadataStore.java
branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ProcedureParameter.java
branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/Schema.java
branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/Table.java
branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/h2/
branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/h2/H2Capabilities.java
branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/h2/H2Translator.java
branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/
branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/AddDiffModifier.java
branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/HsqlCapabilities.java
branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/HsqlTranslator.java
branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TranslationHelper.java
branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/h2/
branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/h2/TestH2Translator.java
branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/translator/TestEscapeSyntaxModifier.java
branches/JCA/console/src/main/java/org/teiid/rhq/plugin/util/PluginConstants.java
branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/CachedFinder.java
branches/JCA/engine/src/main/java/org/teiid/metadata/
branches/JCA/engine/src/main/java/org/teiid/metadata/CompositeMetadataStore.java
branches/JCA/engine/src/main/java/org/teiid/metadata/TransformationMetadata.java
branches/JCA/engine/src/test/java/com/metamatrix/query/processor/TestTempTables.java
branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestConnectorCapabilitiesFinder.java
branches/JCA/engine/src/test/java/org/teiid/metadata/
branches/JCA/engine/src/test/java/org/teiid/metadata/TestTransformationMetadata.java
branches/JCA/metadata/src/main/java/org/teiid/internal/core/index/CharOperation.java
branches/JCA/metadata/src/main/java/org/teiid/metadata/index/IndexMetadataFactory.java
branches/JCA/metadata/src/main/java/org/teiid/metadata/index/MetadataConstants.java
branches/JCA/metadata/src/main/java/org/teiid/metadata/index/RuntimeMetadataPlugin.java
branches/JCA/metadata/src/main/java/org/teiid/metadata/index/TransformationRecordImpl.java
branches/JCA/runtime/src/main/java/org/teiid/transport/SocketListenerStats.java
branches/JCA/test-integration/common/src/test/resources/system/
branches/JCA/test-integration/common/src/test/resources/system/expected/
branches/JCA/test-integration/common/src/test/resources/system/expected/Columns.metadata.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/Columns.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/DataTypes.metadata.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/DataTypes.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/KeyColumns.metadata.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/KeyColumns.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/Keys.metadata.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/Keys.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/ProcedureParams.metadata.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/ProcedureParams.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/Procedures.metadata.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/Procedures.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/ReferenceKeyColumns.metadata.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/ReferenceKeyColumns.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/Schemas.metadata.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/Schemas.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/TableIsSystem.metadata.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/TableIsSystem.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/Tables.metadata.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/Tables.txt
Removed:
branches/JCA/client/src/main/java/com/metamatrix/admin/api/exception/security/SessionException.java
branches/JCA/client/src/main/java/com/metamatrix/platform/util/
branches/JCA/common-internal/src/main/java/com/metamatrix/api/core/message/
branches/JCA/common-internal/src/main/java/com/metamatrix/api/core/xmi/
branches/JCA/common-internal/src/main/java/com/metamatrix/api/exception/server/
branches/JCA/common-internal/src/main/java/com/metamatrix/common/tree/
branches/JCA/common-internal/src/main/java/com/metamatrix/common/vdb/api/SystemVdbUtility.java
branches/JCA/common-internal/src/main/java/com/metamatrix/common/xml/XPathUtil.java
branches/JCA/common-internal/src/main/java/com/metamatrix/common/xml/xmi/
branches/JCA/common-internal/src/main/java/com/metamatrix/core/event/
branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/AuthorizationAdminAPI.java
branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/ConfigurationAdminAPI.java
branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/ExtensionSourceAdminAPI.java
branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/RuntimeStateAdminAPI.java
branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/RuntimeStateChangeEvent.java
branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/SubSystemAdminAPI.java
branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/exception/ProductNotRegisteredException.java
branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/exception/UnknownProductOrSubsystemException.java
branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/runtime/
branches/JCA/common-internal/src/main/java/com/metamatrix/platform/service/
branches/JCA/common-internal/src/main/java/com/metamatrix/platform/vm/
branches/JCA/common-internal/src/main/java/com/metamatrix/server/admin/api/RuntimeMetadataAdminAPI.java
branches/JCA/common-internal/src/main/java/com/metamatrix/vdb/edit/
branches/JCA/common-internal/src/test/java/com/metamatrix/common/config/model/
branches/JCA/common-internal/src/test/java/com/metamatrix/common/tree/
branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/AnnotationRecordImpl.java
branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ColumnRecordImpl.java
branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ColumnSetRecordImpl.java
branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ConnectorMetadata.java
branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/DatatypeRecordImpl.java
branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ForeignKeyRecordImpl.java
branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/MetadataConstants.java
branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ModelRecordImpl.java
branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ProcedureParameterRecordImpl.java
branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/PropertyRecordImpl.java
branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/TableRecordImpl.java
branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/TransformationRecordImpl.java
branches/JCA/connector-metadata/
branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/h2/H2Capabilities.java
branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/h2/H2Translator.java
branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/AddDiffModifier.java
branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/HsqlCapabilities.java
branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/HsqlTranslator.java
branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/extension/
branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/h2/TestH2Translator.java
branches/JCA/console/src/main/java/org/teiid/rhq/comm/impl/ConnectionImpl.java
branches/JCA/console/src/main/java/org/teiid/rhq/comm/impl/ConnectionUtil.java
branches/JCA/console/src/main/java/org/teiid/rhq/comm/impl/TeiidConnectionFactory.java
branches/JCA/engine/src/main/java/com/metamatrix/common/application/Application.java
branches/JCA/engine/src/main/java/com/metamatrix/dqp/ResourceFinder.java
branches/JCA/engine/src/main/java/com/metamatrix/query/metadata/MetadataStore.java
branches/JCA/engine/src/main/java/com/metamatrix/query/sql/visitor/ExpressionSymbolCollector.java
branches/JCA/engine/src/main/java/com/metamatrix/query/util/TypeRetrievalUtil.java
branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/QueryMetadataWrapper.java
branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/TempTableStoresHolder.java
branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/capabilities/
branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/validator/ModelVisibilityValidationVisitor.java
branches/JCA/engine/src/main/java/org/teiid/metadata/CompositeMetadataStore.java
branches/JCA/engine/src/main/java/org/teiid/metadata/TransformationMetadata.java
branches/JCA/engine/src/test/java/com/metamatrix/query/processor/TestTempTables.java
branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/capabilities/
branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/validator/TestModelVisibilityValidationVisitor.java
branches/JCA/engine/src/test/java/org/teiid/metadata/TestTransformationMetadata.java
branches/JCA/metadata/src/main/java/org/teiid/connector/
branches/JCA/metadata/src/main/java/org/teiid/metadata/CompositeMetadataStore.java
branches/JCA/metadata/src/main/java/org/teiid/metadata/ConnectorMetadataStore.java
branches/JCA/metadata/src/main/java/org/teiid/metadata/QueryMetadataCache.java
branches/JCA/metadata/src/main/java/org/teiid/metadata/RuntimeMetadataPlugin.java
branches/JCA/metadata/src/main/java/org/teiid/metadata/TransformationMetadata.java
branches/JCA/metadata/src/main/java/org/teiid/metadata/index/CharOperation.java
branches/JCA/metadata/src/main/java/org/teiid/metadata/index/IndexMetadataStore.java
branches/JCA/metadata/src/main/resources/org/teiid/connector/
branches/JCA/metadata/src/main/system-models/SystemPhysical.xmi
branches/JCA/metadata/src/main/system-models/system-admin-models/
branches/JCA/metadata/src/test/java/com/metamatrix/connector/metadata/
branches/JCA/metadata/src/test/java/com/metamatrix/dqp/
branches/JCA/test-integration/common/src/test/java/com/metamatrix/systemmodel/TestSystemPhysicalModel.java
branches/JCA/test-integration/common/src/test/java/com/metamatrix/systemmodel/TestSystemPhysicalModelSelf.java
branches/JCA/test-integration/common/src/test/resources/system/expected/
branches/JCA/test-integration/common/src/test/resources/system/expected/Columns.metadata.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/Columns.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/DataTypes.metadata.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/DataTypes.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/KeyColumns.metadata.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/KeyColumns.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/Keys.metadata.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/Keys.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/ProcedureParams.metadata.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/ProcedureParams.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/Procedures.metadata.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/Procedures.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/ReferenceKeyColumns.metadata.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/ReferenceKeyColumns.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/Schemas.metadata.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/Schemas.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/TableIsSystem.metadata.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/TableIsSystem.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/Tables.metadata.txt
branches/JCA/test-integration/common/src/test/resources/system/expected/Tables.txt
branches/JCA/test-integration/db/
Modified:
branches/JCA/adminshell/pom.xml
branches/JCA/adminshell/src/main/resources/scripts/assert.bsh
branches/JCA/adminshell/src/main/resources/scripts/jdbc.bsh
branches/JCA/adminshell/src/main/resources/scripts/util.bsh
branches/JCA/build.xml
branches/JCA/build/kit-jboss-container/deploy/teiid-jboss-beans.xml
branches/JCA/build/kit-jboss-container/deploy/teiid-runtime-ds.xml
branches/JCA/build/pom.xml
branches/JCA/cache-jbosscache/pom.xml
branches/JCA/client-jdbc/pom.xml
branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/BaseDataSource.java
branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/MMConnection.java
branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/MMDatabaseMetaData.java
branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/MMPreparedStatement.java
branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/MMStatement.java
branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/ResultsMetadataWithProvider.java
branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/api/Connection.java
branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/api/DatabaseMetaData.java
branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/util/MMJDBCURL.java
branches/JCA/client-jdbc/src/main/java/com/metamatrix/script/io/ResultSetReader.java
branches/JCA/client-jdbc/src/test/java/com/metamatrix/jdbc/TestMMConnection.java
branches/JCA/client-jdbc/src/test/java/com/metamatrix/jdbc/api/AbstractMMQueryTestCase.java
branches/JCA/client-jdbc/src/test/java/com/metamatrix/jdbc/api/AbstractQueryTest.java
branches/JCA/client/pom.xml
branches/JCA/client/src/main/java/com/metamatrix/admin/api/exception/security/InvalidSessionException.java
branches/JCA/client/src/main/java/com/metamatrix/client/ExceptionUtil.java
branches/JCA/client/src/main/java/com/metamatrix/dqp/message/RequestMessage.java
branches/JCA/client/src/main/java/com/metamatrix/jdbc/api/ExecutionProperties.java
branches/JCA/client/src/main/java/com/metamatrix/jdbc/api/TextOutputVisitor.java
branches/JCA/client/src/main/java/org/teiid/adminapi/VDB.java
branches/JCA/common-core/pom.xml
branches/JCA/common-core/src/main/java/com/metamatrix/common/types/basic/StringToCharacterTransform.java
branches/JCA/common-core/src/main/java/com/metamatrix/core/CoreConstants.java
branches/JCA/common-core/src/main/java/com/metamatrix/core/util/ObjectConverterUtil.java
branches/JCA/common-core/src/main/java/com/metamatrix/core/util/ResourceNameUtil.java
branches/JCA/common-core/src/main/java/com/metamatrix/core/vdb/VDBStatus.java
branches/JCA/common-internal/pom.xml
branches/JCA/common-internal/src/main/java/com/metamatrix/common/config/util/ConfigObjectsNotResolvableException.java
branches/JCA/common-internal/src/main/java/com/metamatrix/common/object/PropertyType.java
branches/JCA/common-internal/src/main/java/com/metamatrix/common/object/StandardPropertyTypeValidator.java
branches/JCA/common-internal/src/main/java/com/metamatrix/common/vdb/api/VDBArchive.java
branches/JCA/common-internal/src/main/java/com/metamatrix/metadata/runtime/api/VirtualDatabaseException.java
branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/PermissionNode.java
branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/apiimpl/PermissionDataNodeImpl.java
branches/JCA/connector-api/pom.xml
branches/JCA/connector-api/src/main/java/org/teiid/connector/api/Connection.java
branches/JCA/connector-api/src/main/java/org/teiid/connector/api/SourceSystemFunctions.java
branches/JCA/connector-api/src/main/java/org/teiid/connector/basic/BasicConnection.java
branches/JCA/connector-api/src/main/java/org/teiid/connector/basic/WrappedConnection.java
branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/AbstractMetadataRecord.java
branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/BaseColumn.java
branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/MetadataFactory.java
branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ProcedureRecordImpl.java
branches/JCA/connector-api/src/main/java/org/teiid/connector/visitor/util/SQLStringVisitor.java
branches/JCA/connector-api/src/main/resources/org/teiid/connector/i18n.properties
branches/JCA/connector-sdk/pom.xml
branches/JCA/connector-sdk/src/main/java/com/metamatrix/cdk/CommandBuilder.java
branches/JCA/connector-sdk/src/main/java/com/metamatrix/cdk/ConnectorShellCommandTarget.java
branches/JCA/connector-sdk/src/main/java/com/metamatrix/cdk/api/ConnectorHost.java
branches/JCA/connector-sdk/src/main/java/com/metamatrix/cdk/api/EnvironmentUtility.java
branches/JCA/connectors/connector-jdbc/pom.xml
branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCManagedConnectionFactory.java
branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCMetdataProcessor.java
branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCProcedureExecution.java
branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCQueryExecution.java
branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCSourceConnection.java
branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/sqlserver/SqlServerSQLTranslator.java
branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/SQLConversionVisitor.java
branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/Translator.java
branches/JCA/connectors/connector-jdbc/src/main/resources/connector-jdbc.xml
branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TestJDBCProcedureExecution.java
branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TestJDBCUpdateExecution.java
branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/db2/TestDB2SqlTranslator.java
branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/derby/TestDerbySQLTranslator.java
branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/mysql/TestMySQLTranslator.java
branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestOracleTranslator.java
branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/postgresql/TestPostgreSQLTranslator.java
branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/sqlserver/TestSqlServerConversionVisitor.java
branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/sybase/TestSybaseSQLConversionVisitor.java
branches/JCA/connectors/connector-ldap/pom.xml
branches/JCA/connectors/connector-loopback/pom.xml
branches/JCA/connectors/connector-salesforce/pom.xml
branches/JCA/connectors/connector-text/pom.xml
branches/JCA/connectors/connector-text/src/main/java/com/metamatrix/connector/text/TextConnector.java
branches/JCA/connectors/connector-text/src/test/java/com/metamatrix/connector/text/TestTextConnector.java
branches/JCA/connectors/connector-xml-common/pom.xml
branches/JCA/connectors/connector-xml/pom.xml
branches/JCA/connectors/connector-xml/src/main/java/com/metamatrix/connector/xml/soap/SOAPRequest.java
branches/JCA/connectors/connector-xml/src/test/java/com/metamatrix/connector/xml/base/TestCriteriaDesc.java
branches/JCA/connectors/pom.xml
branches/JCA/connectors/salesforce-api/pom.xml
branches/JCA/connectors/sandbox/connector-exec/pom.xml
branches/JCA/connectors/sandbox/connector-object/pom.xml
branches/JCA/connectors/sandbox/connector-yahoo/pom.xml
branches/JCA/connectors/sandbox/pom.xml
branches/JCA/console/
branches/JCA/console/pom.xml
branches/JCA/console/src/main/java/org/teiid/rhq/plugin/PlatformDiscoveryComponent.java
branches/JCA/console/src/resources/embedded/META-INF/rhq-plugin.xml
branches/JCA/documentation/admin-guide/pom.xml
branches/JCA/documentation/admin-guide/src/main/docbook/en-US/content/appendix-c.xml
branches/JCA/documentation/connector-developer-guide/pom.xml
branches/JCA/documentation/docbook/custom.dtd
branches/JCA/documentation/jdbc-connector-guide/pom.xml
branches/JCA/documentation/pom.xml
branches/JCA/documentation/quick-start-example/pom.xml
branches/JCA/documentation/reference/pom.xml
branches/JCA/documentation/reference/src/main/docbook/en-US/content/datatypes.xml
branches/JCA/documentation/reference/src/main/docbook/en-US/content/federated_planning.xml
branches/JCA/documentation/reference/src/main/docbook/en-US/content/grammar.xml
branches/JCA/documentation/reference/src/main/docbook/en-US/content/procedures.xml
branches/JCA/documentation/reference/src/main/docbook/en-US/content/scalar_functions.xml
branches/JCA/documentation/reference/src/main/docbook/en-US/content/sql_support.xml
branches/JCA/documentation/reference/src/main/docbook/en-US/content/system_tables.xml
branches/JCA/documentation/reference/src/main/docbook/en-US/content/transaction_support.xml
branches/JCA/documentation/salesforce-connector-guide/pom.xml
branches/JCA/documentation/server-extensions-guide/pom.xml
branches/JCA/engine/pom.xml
branches/JCA/engine/src/main/java/com/metamatrix/common/application/ApplicationEnvironment.java
branches/JCA/engine/src/main/java/com/metamatrix/common/buffer/BufferManager.java
branches/JCA/engine/src/main/java/com/metamatrix/common/buffer/impl/BufferConfig.java
branches/JCA/engine/src/main/java/com/metamatrix/common/buffer/impl/BufferManagerImpl.java
branches/JCA/engine/src/main/java/com/metamatrix/dqp/service/AuthorizationService.java
branches/JCA/engine/src/main/java/com/metamatrix/dqp/service/ConfigurationService.java
branches/JCA/engine/src/main/java/com/metamatrix/dqp/service/DataService.java
branches/JCA/engine/src/main/java/com/metamatrix/dqp/service/MetadataService.java
branches/JCA/engine/src/main/java/com/metamatrix/dqp/service/VDBService.java
branches/JCA/engine/src/main/java/com/metamatrix/platform/security/api/service/SessionServiceInterface.java
branches/JCA/engine/src/main/java/com/metamatrix/query/eval/Evaluator.java
branches/JCA/engine/src/main/java/com/metamatrix/query/function/FunctionLibrary.java
branches/JCA/engine/src/main/java/com/metamatrix/query/function/FunctionMethods.java
branches/JCA/engine/src/main/java/com/metamatrix/query/function/metadata/FunctionMetadataReader.java
branches/JCA/engine/src/main/java/com/metamatrix/query/function/source/SystemSource.java
branches/JCA/engine/src/main/java/com/metamatrix/query/metadata/TempMetadataStore.java
branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/batch/BatchedUpdatePlanner.java
branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/capabilities/DefaultCapabilitiesFinder.java
branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/PlanToProcessConverter.java
branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/RelationalPlanner.java
branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/CapabilitiesUtil.java
branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/NewCalculateCostUtil.java
branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/RuleCollapseSource.java
branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/RulePlanProcedures.java
branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/RulePushSelectCriteria.java
branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/RuleRaiseAccess.java
branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/RuleRemoveOptionalJoins.java
branches/JCA/engine/src/main/java/com/metamatrix/query/parser/ParseInfo.java
branches/JCA/engine/src/main/java/com/metamatrix/query/parser/SQLParserUtil.java
branches/JCA/engine/src/main/java/com/metamatrix/query/processor/QueryProcessor.java
branches/JCA/engine/src/main/java/com/metamatrix/query/processor/proc/ProcedurePlan.java
branches/JCA/engine/src/main/java/com/metamatrix/query/processor/relational/BatchCollector.java
branches/JCA/engine/src/main/java/com/metamatrix/query/processor/relational/DependentAccessNode.java
branches/JCA/engine/src/main/java/com/metamatrix/query/processor/relational/DuplicateFilter.java
branches/JCA/engine/src/main/java/com/metamatrix/query/processor/relational/GroupingNode.java
branches/JCA/engine/src/main/java/com/metamatrix/query/processor/relational/SortUtility.java
branches/JCA/engine/src/main/java/com/metamatrix/query/processor/relational/SourceState.java
branches/JCA/engine/src/main/java/com/metamatrix/query/processor/relational/SubqueryAwareRelationalNode.java
branches/JCA/engine/src/main/java/com/metamatrix/query/processor/xml/XMLUtil.java
branches/JCA/engine/src/main/java/com/metamatrix/query/resolver/command/ExecResolver.java
branches/JCA/engine/src/main/java/com/metamatrix/query/resolver/command/SetQueryResolver.java
branches/JCA/engine/src/main/java/com/metamatrix/query/resolver/command/SimpleQueryResolver.java
branches/JCA/engine/src/main/java/com/metamatrix/query/resolver/command/XMLQueryResolver.java
branches/JCA/engine/src/main/java/com/metamatrix/query/resolver/util/ResolverUtil.java
branches/JCA/engine/src/main/java/com/metamatrix/query/resolver/util/ResolverVisitor.java
branches/JCA/engine/src/main/java/com/metamatrix/query/rewriter/QueryRewriter.java
branches/JCA/engine/src/main/java/com/metamatrix/query/sql/lang/OrderBy.java
branches/JCA/engine/src/main/java/com/metamatrix/query/sql/lang/Query.java
branches/JCA/engine/src/main/java/com/metamatrix/query/sql/lang/SPParameter.java
branches/JCA/engine/src/main/java/com/metamatrix/query/sql/visitor/EvaluatableVisitor.java
branches/JCA/engine/src/main/java/com/metamatrix/query/sql/visitor/SQLStringVisitor.java
branches/JCA/engine/src/main/java/com/metamatrix/query/tempdata/TempTableStoreImpl.java
branches/JCA/engine/src/main/java/com/metamatrix/query/util/CommandContext.java
branches/JCA/engine/src/main/java/com/metamatrix/query/validator/AggregateValidationVisitor.java
branches/JCA/engine/src/main/java/com/metamatrix/query/validator/ValidationVisitor.java
branches/JCA/engine/src/main/java/org/teiid/dqp/internal/datamgr/impl/ConnectorManager.java
branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/CachedRequestWorkItem.java
branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/DQPCore.java
branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/DataTierManagerImpl.java
branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/MetaDataProcessor.java
branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/Request.java
branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/multisource/MultiSourcePlanToProcessConverter.java
branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/validator/AuthorizationValidationVisitor.java
branches/JCA/engine/src/main/javacc/com/metamatrix/query/parser/SQLParser.jj
branches/JCA/engine/src/main/resources/com/metamatrix/dqp/i18n.properties
branches/JCA/engine/src/main/resources/com/metamatrix/query/i18n.properties
branches/JCA/engine/src/test/java/com/metamatrix/common/buffer/impl/TestBufferManagerImpl.java
branches/JCA/engine/src/test/java/com/metamatrix/dqp/config/TestDQPLauncher.java
branches/JCA/engine/src/test/java/com/metamatrix/dqp/service/AutoGenDataService.java
branches/JCA/engine/src/test/java/com/metamatrix/dqp/service/FakeMetadataService.java
branches/JCA/engine/src/test/java/com/metamatrix/dqp/service/FakeVDBService.java
branches/JCA/engine/src/test/java/com/metamatrix/query/function/TestFunction.java
branches/JCA/engine/src/test/java/com/metamatrix/query/function/TestFunctionLibrary.java
branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/TestAggregatePushdown.java
branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/TestExpressionsInGroupBy.java
branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/TestJoinOptimization.java
branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/TestOptimizer.java
branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/TestRuleMergeVirtual.java
branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/TestRuleRaiseNull.java
branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/TestSubqueryPushdown.java
branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/batch/TestBatchedUpdatePlanner.java
branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/capabilities/FakeCapabilitiesFinder.java
branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/proc/TestProcedurePlanner.java
branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/relational/TestAliasGenerator.java
branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/relational/rules/TestCapabilitiesUtil.java
branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/relational/rules/TestRuleAccessPatternValidation.java
branches/JCA/engine/src/test/java/com/metamatrix/query/parser/TestParser.java
branches/JCA/engine/src/test/java/com/metamatrix/query/processor/TestDependentJoins.java
branches/JCA/engine/src/test/java/com/metamatrix/query/processor/TestProcedureRelational.java
branches/JCA/engine/src/test/java/com/metamatrix/query/processor/TestProcessor.java
branches/JCA/engine/src/test/java/com/metamatrix/query/processor/TestSetProcessing.java
branches/JCA/engine/src/test/java/com/metamatrix/query/processor/TestVirtualDepJoin.java
branches/JCA/engine/src/test/java/com/metamatrix/query/processor/proc/TestProcedureProcessor.java
branches/JCA/engine/src/test/java/com/metamatrix/query/processor/relational/NodeTestUtil.java
branches/JCA/engine/src/test/java/com/metamatrix/query/processor/relational/TestAccessNode.java
branches/JCA/engine/src/test/java/com/metamatrix/query/processor/relational/TestSortNode.java
branches/JCA/engine/src/test/java/com/metamatrix/query/processor/xml/TestXMLProcessor.java
branches/JCA/engine/src/test/java/com/metamatrix/query/resolver/TestResolver.java
branches/JCA/engine/src/test/java/com/metamatrix/query/resolver/TestXMLResolver.java
branches/JCA/engine/src/test/java/com/metamatrix/query/rewriter/TestOrderByRewrite.java
branches/JCA/engine/src/test/java/com/metamatrix/query/rewriter/TestQueryRewriter.java
branches/JCA/engine/src/test/java/com/metamatrix/query/sql/visitor/TestSQLStringVisitor.java
branches/JCA/engine/src/test/java/com/metamatrix/query/unittest/FakeMetadataFactory.java
branches/JCA/engine/src/test/java/com/metamatrix/query/validator/TestValidator.java
branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCore.java
branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCoreRequestHandling.java
branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestDataTierManager.java
branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestMetaDataProcessor.java
branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestPreparedStatement.java
branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestRequest.java
branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/validator/TestAuthorizationValidationVisitor.java
branches/JCA/hibernate-dialect/pom.xml
branches/JCA/jboss-integration/pom.xml
branches/JCA/metadata/pom.xml
branches/JCA/metadata/src/main/java/org/teiid/internal/core/index/BlocksIndexInput.java
branches/JCA/metadata/src/main/java/org/teiid/internal/core/index/IndexBlock.java
branches/JCA/metadata/src/main/java/org/teiid/internal/core/index/IndexSummary.java
branches/JCA/metadata/src/main/java/org/teiid/metadata/index/IndexConstants.java
branches/JCA/metadata/src/main/java/org/teiid/metadata/index/ModelFileUtil.java
branches/JCA/metadata/src/main/java/org/teiid/metadata/index/RecordFactory.java
branches/JCA/metadata/src/main/java/org/teiid/metadata/index/SimpleIndexUtil.java
branches/JCA/metadata/src/main/java/org/teiid/metadata/index/VDBMetadataFactory.java
branches/JCA/metadata/src/main/resources/System.vdb
branches/JCA/metadata/src/main/resources/org/teiid/metadata/i18n.properties
branches/JCA/metadata/src/test/java/com/metamatrix/core/util/TestCharOperation.java
branches/JCA/metadata/src/test/java/com/metamatrix/metadata/runtime/FakeMetadataService.java
branches/JCA/pom.xml
branches/JCA/runtime/pom.xml
branches/JCA/runtime/src/main/java/com/metamatrix/dqp/embedded/admin/BaseAdmin.java
branches/JCA/runtime/src/main/java/com/metamatrix/dqp/embedded/services/EmbeddedBaseDQPService.java
branches/JCA/runtime/src/main/java/com/metamatrix/dqp/embedded/services/EmbeddedConfigurationService.java
branches/JCA/runtime/src/main/java/com/metamatrix/dqp/embedded/services/EmbeddedDataService.java
branches/JCA/runtime/src/main/java/com/metamatrix/dqp/embedded/services/EmbeddedMetadataService.java
branches/JCA/runtime/src/main/java/com/metamatrix/dqp/embedded/services/EmbeddedVDBService.java
branches/JCA/runtime/src/main/java/com/metamatrix/jdbc/EmbeddedConnectionFactoryImpl.java
branches/JCA/runtime/src/main/java/com/metamatrix/jdbc/EmbeddedGuiceModule.java
branches/JCA/runtime/src/main/java/com/metamatrix/jdbc/LogListernerProvider.java
branches/JCA/runtime/src/main/java/com/metamatrix/platform/security/session/service/SessionServiceImpl.java
branches/JCA/runtime/src/main/java/org/teiid/transport/LocalServerConnection.java
branches/JCA/runtime/src/main/java/org/teiid/transport/LogonImpl.java
branches/JCA/runtime/src/main/java/org/teiid/transport/SocketListener.java
branches/JCA/runtime/src/main/java/org/teiid/transport/SocketTransport.java
branches/JCA/runtime/src/main/resources/com/metamatrix/dqp/embedded/i18n.properties
branches/JCA/runtime/src/test/java/com/metamatrix/dqp/embedded/services/TestEmbeddedVDBService.java
branches/JCA/runtime/src/test/java/com/metamatrix/dqp/service/buffer/TestLocalBufferService.java
branches/JCA/runtime/src/test/java/org/teiid/transport/TestCommSockets.java
branches/JCA/test-integration/common/pom.xml
branches/JCA/test-integration/common/src/test/java/com/metamatrix/cdk/TestConnectorShell.java
branches/JCA/test-integration/common/src/test/java/com/metamatrix/connector/jdbc/extension/TestSQLConversionVisitor.java
branches/JCA/test-integration/common/src/test/java/com/metamatrix/connector/jdbc/util/TestJDBCExecutionHelper.java
branches/JCA/test-integration/common/src/test/java/com/metamatrix/jdbc/TestCase3473.java
branches/JCA/test-integration/common/src/test/java/com/metamatrix/jdbc/TestMMDatabaseMetaData.java
branches/JCA/test-integration/common/src/test/java/com/metamatrix/jdbc/TestResultsMetadataWithProvider.java
branches/JCA/test-integration/common/src/test/java/com/metamatrix/jdbc/TestStaticMetadataProvider.java
branches/JCA/test-integration/common/src/test/java/com/metamatrix/server/integration/TestAdminApi.java
branches/JCA/test-integration/common/src/test/java/com/metamatrix/server/integration/TestVDBLessExecution.java
branches/JCA/test-integration/common/src/test/java/com/metamatrix/systemmodel/TestPartsDatabaseMetadata.java
branches/JCA/test-integration/common/src/test/java/com/metamatrix/systemmodel/TestResultSetMetadata.java
branches/JCA/test-integration/common/src/test/java/com/metamatrix/systemmodel/TestSystemVirtualModel.java
branches/JCA/test-integration/common/src/test/java/com/metamatrix/systemmodel/TestVirtualDocWithVirtualProc.java
branches/JCA/test-integration/common/src/test/java/org/teiid/connector/metadata/runtime/TestMetadataObject.java
branches/JCA/test-integration/common/src/test/java/org/teiid/runtime/adminapi/TestEmbeddedAdmin.java
branches/JCA/test-integration/common/src/test/resources/3473/testGetCrossReference.expected
branches/JCA/test-integration/common/src/test/resources/3473/testGetExportedKeys.expected
branches/JCA/test-integration/common/src/test/resources/3473/testGetImportedKeys.expected
branches/JCA/test-integration/common/src/test/resources/3473/testGetPrimaryKeys.expected
branches/JCA/test-integration/common/src/test/resources/3473/testGetTables.expected
branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetBestRowIdentifier.expected
branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetCatalogs.expected
branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumnPrivileges.expected
branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumnPrivilegesResultSetMetaData.expected
branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumns.expected
branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumns2.expected
branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumns3.expected
branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumns4.expected
branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumnsSingleMatch.expected
branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumnsSingleMatchQuery.expected
branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetCrossReference.expected
branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetExportedKeys.expected
branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetImportedKeys.expected
branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetIndexInfo.expected
branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetPrimaryKeys.expected
branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetProcedureColumns.expected
branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetProcedures.expected
branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetSchemas.expected
branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetSuperTypes.expected
branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTablePrivileges.expected
branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTablePrivilegesResultSetMetaData.expected
branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTableTypes.expected
branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTables.expected
branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTables_allTables.expected
branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTables_specificTable.expected
branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTables_specificTableMultipleTypes.expected
branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTables_specificTableTypes.expected
branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTypeInfo_TotalNumber.expected
branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetUDTs.expected
branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetUDTs_specificTypeName.expected
branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetVersionColumns.expected
branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testSuperTables.expected
branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Catalogs.metadata.txt
branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Catalogs.txt
branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Columns.metadata.txt
branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Columns.txt
branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/CrossReference.metadata.txt
branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/CrossReference.txt
branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/ExportedKeys.metadata.txt
branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/ExportedKeys.txt
branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/ImportedKeys.metadata.txt
branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/ImportedKeys.txt
branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/IndexInfo.metadata.txt
branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/IndexInfo.txt
branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/PrimaryKeys.metadata.txt
branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/PrimaryKeys.txt
branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/ProcedureColumns.metadata.txt
branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/ProcedureColumns.txt
branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Procedures.metadata.txt
branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Procedures.txt
branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Schemas.metadata.txt
branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Schemas.txt
branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Tables.metadata.txt
branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Tables.txt
branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/TypeInfo.metadata.txt
branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/TypeInfo.txt
branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/UDTs.metadata.txt
branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/UDTs.txt
branches/JCA/test-integration/common/src/test/resources/script.txt
branches/JCA/test-integration/pom.xml
branches/JCA/txn-jbossts/pom.xml
Log:
TEIID-833: Forward merge of HEAD (r1614) into JCA branch. r1358:HEAD the revision ran as JCA branch 1491 created by eclipse did not have correct tree
Modified: branches/JCA/adminshell/pom.xml
===================================================================
--- branches/JCA/adminshell/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/adminshell/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -3,7 +3,7 @@
<parent>
<artifactId>teiid</artifactId>
<groupId>org.jboss.teiid</groupId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>teiid-adminshell</artifactId>
Added: branches/JCA/adminshell/src/main/java/com/metamatrix/script/shell/Util.java
===================================================================
--- branches/JCA/adminshell/src/main/java/com/metamatrix/script/shell/Util.java (rev 0)
+++ branches/JCA/adminshell/src/main/java/com/metamatrix/script/shell/Util.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,131 @@
+/*
+ * 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 com.metamatrix.script.shell;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import com.metamatrix.core.util.ObjectConverterUtil;
+import com.metamatrix.jdbc.util.MMJDBCURL;
+
+public class Util {
+
+ public static byte[] readBinaryFile(String fileName) throws IOException {
+ InputStream is = null;
+
+ if(fileName == null) {
+ throw new IOException("fileName is null");
+ }
+ try {
+ //try to load file from the classpath
+ is = Object.class.getResourceAsStream("/"+fileName);
+
+ byte[] result;
+ if (is == null) {
+ //load from "hardcoded" path
+ is = new FileInputStream(new File(fileName));
+ }
+
+
+ }catch(Exception e) {
+ if (is == null) {
+ try {
+ //load from "hardcoded" path
+ is = new FileInputStream(new File(fileName));
+ }catch(Exception e2) {
+
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ }
+
+ //convert to bytes
+ byte[] result = ObjectConverterUtil.convertToByteArray(is);
+ try {
+ is.close();
+ }catch(Exception e3) {
+ }
+ return result;
+ }
+
+ public static char[] readTextFile(String fileName) throws IOException {
+ if(fileName == null) {
+ throw new IOException("fileName is null");
+ }
+ char[] result = null;
+
+ try {
+ File file = new File(fileName);
+
+ // changed to use the ObectConverterUtil, instead of the
+ // convertToCharArray() method because it doesn't completely
+ // convert the file, the XML reader throws a malform exception
+ // the test case for ServerAdminImpl also the ObjectConverterUtil
+ // that's why this was changed to use it
+ result = ObjectConverterUtil.convertFileToCharArray(file, null);
+
+ }catch(Exception e) {
+ e.printStackTrace();
+ }
+ return result;
+ }
+
+ public static void cleanUpDirectory(String dirName, String[] filesToKeep){
+ File dir = new File(dirName);
+ if (dir.exists()) {
+ File[] files = dir.listFiles();
+ for (File f:files) {
+ if (f.getName().endsWith(".deleted")) {
+ continue;
+ }
+ boolean delete = true;
+ for (String keep:filesToKeep) {
+ if (f.getName().equalsIgnoreCase(keep)) {
+ delete = false;
+ break;
+ }
+ }
+ if (delete) f.delete();
+ }
+ }
+ }
+
+ public static char[] convertToCharArray(InputStream in) throws IOException {
+ return ObjectConverterUtil.convertToCharArray(in, Integer.MAX_VALUE, null);
+ }
+
+ public static String extractVDBName(String url) {
+ MMJDBCURL mmurl = new MMJDBCURL(url);
+ return mmurl.getVDBName();
+ }
+
+ public static String extractHost(String url) {
+ MMJDBCURL mmurl = new MMJDBCURL(url);
+ return mmurl.getConnectionURL();
+ }
+
+}
Property changes on: branches/JCA/adminshell/src/main/java/com/metamatrix/script/shell/Util.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: branches/JCA/adminshell/src/main/resources/scripts/assert.bsh
===================================================================
--- branches/JCA/adminshell/src/main/resources/scripts/assert.bsh 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/adminshell/src/main/resources/scripts/assert.bsh 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,185 +1,8 @@
import junit.framework.*;
+static import junit.framework.Assert.*;
import com.metamatrix.script.junit.*;
-// This file has all the assetion routines that JUnit Assert class provides
+// This file has all the assertion routines that JUnit Assert class provides
-void assertEquals(boolean expected, boolean actual) {
- Assert.assertEquals(expected, actual);
-}
-
-
-void assertEquals(byte expected, byte actual) {
- Assert.assertEquals(expected, actual);
-}
-
-void assertEquals(char expected, char actual) {
- Assert.assertEquals(expected, actual);
-}
-
-void assertEquals(
- double expected,
- double actual,
- double delta) {
- Assert.assertEquals(expected, actual, delta);
-}
-
-void assertEquals(
- float expected,
- float actual,
- float delta) {
- Assert.assertEquals(expected, actual, delta);
-}
-
-void assertEquals(int expected, int actual) {
- Assert.assertEquals(expected, actual);
-}
-
-void assertEquals(Object expected, Object actual) {
- Assert.assertEquals(expected, actual);
-}
-
-void assertEquals(
- String message,
- boolean expected,
- boolean actual) {
- Assert.assertEquals(message, expected, actual);
-}
-
-void assertEquals(
- String message,
- byte expected,
- byte actual) {
- Assert.assertEquals(message, expected, actual);
-}
-
-void assertEquals(
- String message,
- char expected,
- char actual) {
- Assert.assertEquals(message, expected, actual);
-}
-
-void assertEquals(
- String message,
- double expected,
- double actual,
- double delta) {
- Assert.assertEquals(message, expected, actual, delta);
-}
-
-void assertEquals(
- String message,
- float expected,
- float actual,
- float delta) {
- Assert.assertEquals(message, expected, actual, delta);
-}
-
-void assertEquals(String message, int expected, int actual) {
- Assert.assertEquals(message, expected, actual);
-}
-
-void assertEquals(
- String message,
- Object expected,
- Object actual) {
- Assert.assertEquals(message, expected, actual);
-}
-
-void assertEquals(String expected, String actual) {
- Assert.assertEquals(expected, actual);
-}
-
-void assertEquals(
- String message,
- String expected,
- String actual) {
- Assert.assertEquals(message, expected, actual);
-}
-
-void assertEquals(
- String message,
- long expected,
- long actual) {
- Assert.assertEquals(message, expected, actual);
-}
-
-void assertEquals(
- String message,
- short expected,
- short actual) {
- Assert.assertEquals(message, expected, actual);
-}
-
-void assertEquals(long expected, long actual) {
- Assert.assertEquals(expected, actual);
-}
-
-void assertEquals(short expected, short actual) {
- Assert.assertEquals(expected, actual);
-}
-
-void assertFalse(boolean condition) {
- Assert.assertFalse(condition);
-}
-
-void assertFalse(String message, boolean condition) {
- Assert.assertFalse(message, condition);
-}
-
-void assertNotNull(Object object) {
- Assert.assertNotNull(object);
-}
-
-void assertNotNull(String message, Object object) {
- Assert.assertNotNull(message, object);
-}
-
-void assertNotSame(Object expected, Object actual) {
- Assert.assertNotSame(expected, actual);
-}
-
-void assertNotSame(
- String message,
- Object expected,
- Object actual) {
- Assert.assertNotSame(message, expected, actual);
-}
-
-void assertNull(Object object) {
- Assert.assertNull(object);
-}
-
-void assertNull(String message, Object object) {
- Assert.assertNull(message, object);
-}
-
-void assertSame(Object expected, Object actual) {
- Assert.assertSame(expected, actual);
-}
-
-void assertSame(
- String message,
- Object expected,
- Object actual) {
- Assert.assertSame(message, expected, actual);
-}
-
-void assertTrue(boolean condition) {
- Assert.assertTrue(condition);
-}
-
-void assertTrue(String message, boolean condition) {
- Assert.assertTrue(message, condition);
-}
-
-void fail() {
- Assert.fail();
-}
-
-void fail(String message) {
- Assert.fail(message);
-}
-
void runTests(String scriptName) {
BshTestSuite suite = new BshTestSuite(scriptName);
suite.addTest(scriptName); //$NON-NLS-1$
Modified: branches/JCA/adminshell/src/main/resources/scripts/jdbc.bsh
===================================================================
--- branches/JCA/adminshell/src/main/resources/scripts/jdbc.bsh 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/adminshell/src/main/resources/scripts/jdbc.bsh 2009-12-02 23:40:40 UTC (rev 1616)
@@ -11,6 +11,8 @@
import java.sql.*;
import com.metamatrix.script.io.*;
+import com.metamatrix.jdbc.api.*;
+import com.metamatrix.jdbc.*;
protected Connection getConnection() {
if (currentContext().internalConnection != void && currentContext().internalConnection != null) {
@@ -144,26 +146,8 @@
/**
* Execute a Statement and save the ResultSet or update count.
*/
-void execute(String sql) throws SQLException {
- checkConnection();
-
- // close last statement and result set if necessary
- closeStatement();
-
- // create new statement
- currentContext().internalStatement = currentContext().internalConnection.createStatement();
- try {
- debug("Executing sql: " + sql);
- currentContext().internalResultSet = currentContext().internalStatement.executeQuery(sql);
- if (interactive()) {
- record("printResults();\n");
- printResults();
- }
- } catch(SQLException e) {
- closeStatement();
- debug(e);
- throw e;
- }
+void execute(String sql) throws SQLException {
+ execute(sql, null);
}
/**
@@ -187,10 +171,7 @@
try {
debug("Executing batch of : " + cmds.length);
currentContext().internalUpdatedList = currentContext().internalStatement.executeBatch();
- if (interactive()) {
- record("printResults();\n");
- printResults();
- }
+ print ("update counts: " + Arrays.toString(currentContext().internalUpdatedList));
} catch(SQLException e) {
closeStatement();
debug(e);
@@ -229,47 +210,31 @@
// close last statement and result set if necessary
closeStatement();
-
- if ( (sql.indexOf("?") != -1) && (params == null || params.length == 0)) {
- throw new SQLException ("Wrong!, No Parameters supplied to statement.");
- }
-
- sqlLow = sql.toLowerCase();
-
+
try {
- if (sqlLow.startsWith("select")) {
+ if (params != null) {
debug("Executing a prepared Statement:"+sql);
currentContext().internalStatement = currentContext().internalConnection.prepareStatement(sql);
setStatementDefaults();
setParameters(params);
- currentContext().internalResultSet = currentContext().internalStatement.executeQuery();
+ hasResultSet = currentContext().internalStatement.execute();
}
- else if (sqlLow.startsWith("update") || sqlLow.startsWith("delete") || sqlLow.startsWith("insert")) {
- debug("Executing a prepared statement:"+sql);
- currentContext().internalStatement = currentContext().internalConnection.prepareStatement(sql);
+ else {
+ debug("Executing statement:"+sql);
+ currentContext().internalStatement = currentContext().internalConnection.createStatement();
setStatementDefaults();
- setParameters(params);
- currentContext().internalResultSet = null;
- int row_affected = currentContext().internalStatement.executeUpdate();
- print (row_affected+" rows got affected.");
+ hasResultSet = currentContext().internalStatement.execute(sql);
}
- else if (sqlLow.startsWith("exec ") ) {
- sql = sql.substring(4);
-
- debug ("Executing a Callable statement:"+sql);
- currentContext().internalStatement = currentContext().internalConnection.prepareCall("{?=call " + sql + "}");
- setStatementDefaults();
- setParameters(params);
- currentContext().internalResultSet = currentContext().internalStatement.executeQuery();
- }
- else {
- throw new SQLException("Not a valid statement!, it must start with (Select|Insert|Update|Delete|Stored Proc)");
+ if (hasResultSet) {
+ currentContext().internalResultSet = currentContext().internalStatement.getResultSet();
+ if (interactive()) {
+ record("printResults();\n");
+ printResults();
+ }
+ } else {
+ currentContext().internalUpdateCount = currentContext().internalStatement.getUpdateCount();
+ print ("update count:" +currentContext().internalUpdateCount);
}
-
- if (interactive()) {
- record("printResults();\n");
- printResults();
- }
} catch(SQLException e) {
closeStatement();
debug(e);
@@ -294,6 +259,22 @@
printResults(currentContext().internalResultSet, fileName);
}
+void showPlan(boolean xml) {
+ if (currentContext().internalStatement == void || currentContext().internalStatement == null) {
+ print("Statement is null - execute then issue showPlan");
+ return;
+ }
+ PlanNode queryPlan = ((MMResultSet)currentContext().internalStatement).getPlanDescription();
+ if (queryPlan != null) {
+ if (xml != null && xml) {
+ print(XMLOutputVisitor.convertToXML(queryPlan));
+ } else {
+ print(TextOutputVisitor.convertToText(queryPlan));
+ }
+ } else {
+ print("No plan provided - add OPTION SHOWPLAN");
+ }
+}
void walkResults() {
rs = currentContext().internalResultSet;
@@ -311,11 +292,10 @@
print("ResultSet is null");
return;
}
- row = -1; // -1 to compensate for the header row.
- BufferedReader in = new BufferedReader(new ResultSetReader(results));
+ ResultSetReader reader = new ResultSetReader(results);
+ BufferedReader in = new BufferedReader(reader);
String line = in.readLine();
while(line != null) {
- row++;
if (comparePrint) {
line=line.replaceAll("\"", "\\\\\"");
print("\""+line+"\",");
@@ -325,7 +305,7 @@
}
line = in.readLine();
}
- print("Fetched "+row+" rows\n");
+ print("Fetched "+reader.getRowCount()+" rows\n");
}
private void printResults(ResultSet results, File resultsFile) throws SQLException {
@@ -333,17 +313,16 @@
print("ResultSet is null");
return;
}
- row = -1; // -1 to compensate for the header row.
- BufferedReader in = new BufferedReader(new ResultSetReader(results));
+ ResultSetReader reader = new ResultSetReader(results);
+ BufferedReader in = new BufferedReader(reader);
PrintWriter writer = new PrintWriter(new FileWriter(resultsFile));
String line = in.readLine();
while(line != null) {
- row++;
writer.println(line);
line = in.readLine();
}
writer.close();
- print("Wrote "+row+" rows to File="+resultsFile.getName()+"\n");
+ print("Wrote "+reader.getRowCount()+" rows to File="+resultsFile.getName()+"\n");
}
void assertRowCount(int expected) {
@@ -368,7 +347,8 @@
if(currentContext().internalStatement != void && currentContext().internalStatement != null) {
Statement stmt = currentContext().internalStatement;
closeResultSet();
-
+ currentContext().internalUpdateCount = -1;
+ currentContext().internalUpdatedList = null;
try {
debug("Closing statement...");
stmt.close();
Modified: branches/JCA/adminshell/src/main/resources/scripts/util.bsh
===================================================================
--- branches/JCA/adminshell/src/main/resources/scripts/util.bsh 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/adminshell/src/main/resources/scripts/util.bsh 2009-12-02 23:40:40 UTC (rev 1616)
@@ -3,6 +3,8 @@
import com.metamatrix.core.util.*;
import java.lang.reflect.*;
import com.metamatrix.common.comm.exception.*;
+static import com.metamatrix.core.util.ObjectConverterUtil.*;
+static import com.metamatrix.script.shell.Util.*;
debug=false;
@@ -14,105 +16,6 @@
return currentContext().internalPrompt;
}
-byte[] readBinaryFile(String fileName) {
- InputStream is = null;
-
- if(fileName == null) {
- throw new IOException("fileName is null");
- }
- try {
- //try to load file from the classpath
- is = Object.class.getResourceAsStream("/"+fileName);
-
- byte[] result;
- if (is == null) {
- //load from "hardcoded" path
- is = new FileInputStream(new File(fileName));
- }
-
-
- }catch(Exception e) {
- if (is == null) {
- try {
- //load from "hardcoded" path
- is = new FileInputStream(new File(fileName));
- }catch(Exception e2) {
-
- e.printStackTrace();
- return null;
- }
- }
-
- }
-
- //convert to bytes
- result = convertToByteArray(is);
- try {
- is.close();
- }catch(Exception e3) {
- }
- return result;
-}
-
-char[] readTextFile(String fileName) {
- if(fileName == null) {
- throw new IOException("fileName is null");
- }
- char[] result = null;
-
- try {
- File file = new File(fileName);
-
- // changed to use the ObectConverterUtil, instead of the
- // convertToCharArray() method because it doesn't completely
- // convert the file, the XML reader throws a malform exception
- // the test case for ServerAdminImpl also the ObjectConverterUtil
- // that's why this was changed to use it
- result = ObjectConverterUtil.convertFileToCharArray(file, null);
-
- }catch(e) {
- e.printStackTrace();
- }
- return result;
-}
-
-byte[] convertToByteArray(InputStream in) throws IOException {
- ByteArrayOutputStream out = new ByteArrayOutputStream(10 * 1024);
- int b = 0;
- while ((b = in.read()) != -1) {
- out.write(b);
- }
- return out.toByteArray();
-}
-
-char[] convertToCharArray(InputStream in) throws IOException {
- CharArrayWriter out = new CharArrayWriter(10 * 1024);
- int b = 0;
- while ((b = in.read()) != -1) {
- out.write(b);
- }
- return out.toCharArray();
-}
-
-cleanUpDirectory(String dirName, String[] filesToKeep){
- dir = new File(dirName);
- if (dir.exists()) {
- files = dir.listFiles();
- for (File f:files) {
- delete = true;
- for (String keep:filesToKeep) {
- if (f.getName().equalsIgnoreCase(keep)) {
- delete = false;
- }
- if (f.getName().endsWith(".deleted")) {
- delete = false;
- }
- }
- if (delete) f.delete();
- }
- }
-}
-
void checkAdmin() {
context = currentContext();
if (context == void || context == null) {
@@ -142,38 +45,6 @@
}
}
-String extractVDBName(url) {
- str = "jdbc:metamatrix:";
- strteiid = "jdbc:teiid:";
- if (url.startsWith(str)) {
- int at = url.indexOf("@");
- if (at != -1) {
- return url.substring(str.length(), at);
- }
- }
- else if (url.startsWith(strteiid)) {
- int at = url.indexOf("@");
- if (at != -1) {
- return url.substring(strteiid.length(), at);
- }
- }
- return "";
-}
-
-String extractHost(url) {
- str = "jdbc:metamatrix:";
- strteiid = "jdbc:teiid:";
- if (url.startsWith(str)) {
- int at = url.indexOf("@")+1;
- return url.substring(at, url.indexOf(";", at));
- }
- else if (url.startsWith(strteiid)) {
- int at = url.indexOf("@")+1;
- return url.substring(at, url.indexOf(";", at));
- }
- return "";
-}
-
class ExceptionHandler implements InvocationHandler{
Object impl;
ExceptionHandler(Object obj){
Modified: branches/JCA/build/kit-jboss-container/deploy/teiid-jboss-beans.xml
===================================================================
--- branches/JCA/build/kit-jboss-container/deploy/teiid-jboss-beans.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/build/kit-jboss-container/deploy/teiid-jboss-beans.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -124,7 +124,7 @@
<parameter class="java.lang.Class">org.teiid.templates.connector.ConnectorTypeTemplateInfo</parameter>
<parameter class="java.lang.Class">org.jboss.resource.metadata.mcf.NoTxConnectionFactoryDeploymentMetaData</parameter>
<parameter class="java.lang.String">connector-jdbc-template</parameter>
- <parameter class="java.lang.String">connector-jdbc-6.3.0-SNAPSHOT.rar</parameter>
+ <parameter class="java.lang.String">connector-jdbc-7.0.0-SNAPSHOT.rar</parameter>
</constructor>
</bean>
</deployment>
Modified: branches/JCA/build/kit-jboss-container/deploy/teiid-runtime-ds.xml
===================================================================
--- branches/JCA/build/kit-jboss-container/deploy/teiid-runtime-ds.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/build/kit-jboss-container/deploy/teiid-runtime-ds.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,13 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<connection-factories>
-
- <no-tx-connection-factory>
- <jndi-name>index-connector-binding</jndi-name>
- <rar-name>teiid-connector-metadata.rar</rar-name>
- <connection-definition>org.teiid.connector.api.Connector</connection-definition>
- <max-pool-size>20</max-pool-size>
- </no-tx-connection-factory>
<no-tx-connection-factory>
<jndi-name>teiid/runtime-engine</jndi-name>
Modified: branches/JCA/build/pom.xml
===================================================================
--- branches/JCA/build/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/build/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -3,7 +3,7 @@
<parent>
<artifactId>teiid</artifactId>
<groupId>org.jboss.teiid</groupId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>build</artifactId>
Modified: branches/JCA/build.xml
===================================================================
--- branches/JCA/build.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/build.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,7 +1,7 @@
<project name="jboss-jca-spec-api" default="deploy" basedir=".">
<property name="jboss-as" value="/home/rareddy/apps/jboss-5.1.0.GA/server/default"/>
- <property name="version" value="6.3.0-SNAPSHOT"/>
+ <property name="version" value="7.0.0-SNAPSHOT"/>
<property name="kit-dir" value="${basedir}/target/distribution"/>
<target name="deploy">
Modified: branches/JCA/cache-jbosscache/pom.xml
===================================================================
--- branches/JCA/cache-jbosscache/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/cache-jbosscache/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -4,7 +4,7 @@
<parent>
<artifactId>teiid</artifactId>
<groupId>org.jboss.teiid</groupId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>teiid-cache-jbosscache</artifactId>
Modified: branches/JCA/client/pom.xml
===================================================================
--- branches/JCA/client/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/client/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -5,7 +5,7 @@
<parent>
<artifactId>teiid</artifactId>
<groupId>org.jboss.teiid</groupId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>teiid-client</artifactId>
Modified: branches/JCA/client/src/main/java/com/metamatrix/admin/api/exception/security/InvalidSessionException.java
===================================================================
--- branches/JCA/client/src/main/java/com/metamatrix/admin/api/exception/security/InvalidSessionException.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/client/src/main/java/com/metamatrix/admin/api/exception/security/InvalidSessionException.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -22,7 +22,7 @@
package com.metamatrix.admin.api.exception.security;
-public class InvalidSessionException extends SessionException {
+public class InvalidSessionException extends MetaMatrixSecurityException {
/**
Deleted: branches/JCA/client/src/main/java/com/metamatrix/admin/api/exception/security/SessionException.java
===================================================================
--- branches/JCA/client/src/main/java/com/metamatrix/admin/api/exception/security/SessionException.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/client/src/main/java/com/metamatrix/admin/api/exception/security/SessionException.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,80 +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 com.metamatrix.admin.api.exception.security;
-
-public class SessionException extends MetaMatrixSecurityException {
-
- /**
- * No-Arg Constructor
- */
- public SessionException( ) {
- super( );
- }
- /**
- * Constructs an instance of the exception with the specified detail message. A detail
- * message is a String that describes this particular exception.
- * @param the detail message
- */
- public SessionException(String message) {
- super(message);
- }
- /**
- * Constructs an instance of the exception with no detail message but with a
- * single exception.
- * @param e the exception that is encapsulated by this exception
- */
- public SessionException(Throwable e) {
- super(e);
- }
- /**
- * Constructs an instance of the exception with the specified detail message
- * and a single exception. A detail message is a String that describes this
- * particular exception.
- * @param message the detail message
- * @param e the exception that is encapsulated by this exception
- */
- public SessionException( Throwable e, String message ) {
- super(e, message);
- }
- /**
- * Construct an instance with an error code and message specified.
- *
- * @param message The error message
- * @param code The error code
- */
- public SessionException( String code, String message ) {
- super( code, message );
- }
- /**
- * Construct an instance with a linked exception, and an error code and
- * message, specified.
- *
- * @param e An exception to chain to this exception
- * @param message The error message
- * @param code The error code
- */
- public SessionException( Throwable e, String code, String message ) {
- super( e, code, message );
- }
-}
-
Modified: branches/JCA/client/src/main/java/com/metamatrix/client/ExceptionUtil.java
===================================================================
--- branches/JCA/client/src/main/java/com/metamatrix/client/ExceptionUtil.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/client/src/main/java/com/metamatrix/client/ExceptionUtil.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -35,7 +35,8 @@
public class ExceptionUtil {
- public static <T extends Throwable> T getExceptionOfType(Throwable ex, Class<T> cls) {
+ @SuppressWarnings("unchecked")
+ public static <T extends Throwable> T getExceptionOfType(Throwable ex, Class<T> cls) {
while (ex != null) {
if (cls.isAssignableFrom(ex.getClass())) {
return (T)ex;
@@ -50,21 +51,25 @@
public static Throwable convertException(Method method, Throwable exception) {
boolean canThrowXATransactionException = false;
+ boolean canThrowComponentException = false;
+ boolean canThrowAdminException = false;
Class<?>[] exceptionClasses = method.getExceptionTypes();
for (int i = 0; i < exceptionClasses.length; i++) {
if (exception.getClass().isAssignableFrom(exceptionClasses[i])) {
return exception;
}
- if (MetaMatrixComponentException.class.isAssignableFrom(exceptionClasses[i])) {
- return new MetaMatrixComponentException(exception);
+ canThrowComponentException |= MetaMatrixComponentException.class.isAssignableFrom(exceptionClasses[i]);
+ canThrowAdminException |= AdminException.class.isAssignableFrom(exceptionClasses[i]);
+ canThrowXATransactionException |= XATransactionException.class.isAssignableFrom(exceptionClasses[i]);
+ }
+ if (canThrowComponentException) {
+ return new MetaMatrixComponentException(exception);
+ }
+ if (canThrowAdminException) {
+ if (exception instanceof MetaMatrixProcessingException) {
+ return new AdminProcessingException(exception);
}
- if (AdminException.class.isAssignableFrom(exceptionClasses[i])) {
- if (exception instanceof MetaMatrixProcessingException) {
- return new AdminProcessingException(exception);
- }
- return new AdminComponentException(exception);
- }
- canThrowXATransactionException |= XATransactionException.class.isAssignableFrom(exceptionClasses[i]);
+ return new AdminComponentException(exception);
}
if (canThrowXATransactionException) {
return new XATransactionException(exception);
Modified: branches/JCA/client/src/main/java/com/metamatrix/dqp/message/RequestMessage.java
===================================================================
--- branches/JCA/client/src/main/java/com/metamatrix/dqp/message/RequestMessage.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/client/src/main/java/com/metamatrix/dqp/message/RequestMessage.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -66,7 +66,7 @@
private boolean useResultSetCache;
// Treat the double quoted strings as variables in the command
- private boolean dblQuotedVariableAllowed = false;
+ private boolean ansiQuotedIdentifiers = true;
//whether query plan is allowed or not
private boolean queryPlanAllowed = true;
@@ -307,14 +307,14 @@
return Arrays.deepToString(commands);
}
- public void setDoubleQuotedVariableAllowed(boolean allowed) {
- dblQuotedVariableAllowed = allowed;
- }
+ public boolean isAnsiQuotedIdentifiers() {
+ return ansiQuotedIdentifiers;
+ }
+
+ public void setAnsiQuotedIdentifiers(boolean ansiQuotedIdentifiers) {
+ this.ansiQuotedIdentifiers = ansiQuotedIdentifiers;
+ }
- public boolean isDoubleQuotedVariableAllowed() {
- return dblQuotedVariableAllowed;
- }
-
public void setQueryPlanAllowed(boolean allowed) {
queryPlanAllowed = allowed;
}
Modified: branches/JCA/client/src/main/java/com/metamatrix/jdbc/api/ExecutionProperties.java
===================================================================
--- branches/JCA/client/src/main/java/com/metamatrix/jdbc/api/ExecutionProperties.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/client/src/main/java/com/metamatrix/jdbc/api/ExecutionProperties.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -88,12 +88,10 @@
public static final String DISABLE_LOCAL_TRANSACTIONS = "disableLocalTxn"; //$NON-NLS-1$
/**
- * By default treat the double quoted strings as variables in a
- * ODBC connection. This is to allow the metadata tools based on
- * ODBC to work seemlessly.
+ * Overrides the handling of double quoted identifiers to allow them to be strings.
* @since 4.3
*/
- public static final String ALLOW_DBL_QUOTED_VARIABLE = "allowDoubleQuotedVariable"; //$NON-NLS-1$
+ public static final String ANSI_QUOTED_IDENTIFIERS = "ansiQuotedIdentifiers"; //$NON-NLS-1$
/**
* Additional options/hints for executing the command
Modified: branches/JCA/client/src/main/java/com/metamatrix/jdbc/api/TextOutputVisitor.java
===================================================================
--- branches/JCA/client/src/main/java/com/metamatrix/jdbc/api/TextOutputVisitor.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/client/src/main/java/com/metamatrix/jdbc/api/TextOutputVisitor.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -161,5 +161,11 @@
protected void visitContainerProperty(PlanNode node, String propertyName, Collection propertyValue) {
}
+
+ public static String convertToText(PlanNode node, int initialTabs) {
+ TextOutputVisitor visitor = new TextOutputVisitor(new DefaultDisplayHelper(), initialTabs);
+ visitor.visit(node);
+ return visitor.getText();
+ }
}
Modified: branches/JCA/client/src/main/java/org/teiid/adminapi/VDB.java
===================================================================
--- branches/JCA/client/src/main/java/org/teiid/adminapi/VDB.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/client/src/main/java/org/teiid/adminapi/VDB.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -25,7 +25,7 @@
import java.net.URL;
import java.util.Collection;
import java.util.List;
-
+
/**
* Represents a Virtual Database in the Teiid System.
* <br>A VDB has a name and a version.</br>
Modified: branches/JCA/client-jdbc/pom.xml
===================================================================
--- branches/JCA/client-jdbc/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/client-jdbc/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -6,7 +6,7 @@
<parent>
<artifactId>teiid</artifactId>
<groupId>org.jboss.teiid</groupId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>teiid-client-jdbc</artifactId>
Modified: branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/BaseDataSource.java
===================================================================
--- branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/BaseDataSource.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/BaseDataSource.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -40,7 +40,7 @@
import com.metamatrix.jdbc.util.MMJDBCURL;
/**
- * The MetaMatrix JDBC DataSource implementation class of {@link javax.sql.DataSource} and
+ * The Teiid JDBC DataSource implementation class of {@link javax.sql.DataSource} and
* {@link javax.sql.XADataSource}.
* <p>
* The {@link javax.sql.DataSource} interface follows the JavaBean design pattern,
@@ -62,14 +62,14 @@
* down to their underlying data source.
* <p>
* The form and type of the client token is up to the client but it <i>must</i> implement the
- * <code>Serializable</code> interface. MetaMatrix does nothing with this token except to make it
+ * <code>Serializable</code> interface. Teiid does nothing with this token except to make it
* available for authentication/augmentation/replacement upon authentication to the system and to
* connectors that may require it at the data source level.
* </p></td></tr>
* <tr><td>databaseName </td><td><code>String</code></td><td>The name of a particular virtual database on a
- * MetaMatrix Server.</td></tr>
+ * Teiid Server.</td></tr>
* <tr><td>databaseVersion </td><td><code>String</code></td><td>The <i>optional</i> version of a particular
- * virtual database on a MetaMatrix Server;
+ * virtual database on a Teiid Server;
* if not supplied, then the latest version is assumed.</td></tr>
* <tr><td>dataSourceName </td><td><code>String</code></td><td>The <i>optional</i> logical name for the underlying
* <code>XADataSource</code> or <code>ConnectionPoolDataSource</code>;
@@ -118,7 +118,7 @@
protected static final int DEFAULT_LOG_LEVEL = 0;
/**
- * The name of the virtual database on a particular MetaMatrix Server.
+ * The name of the virtual database on a particular Teiid Server.
* This property name is one of the standard property names defined by the JDBC 2.0 specification,
* and is <i>required</i>.
*/
@@ -158,13 +158,13 @@
/**
* The version number of the virtual database to which a connection is to be established.
* This property is <i>optional</i>; if not specified, the assumption is that the latest version
- * on the MetaMatrix Server is to be used.
+ * on the Teiid Server is to be used.
*/
private String databaseVersion;
/**
* The name of the application. Supplying this property may allow an administrator of a
- * MetaMatrix Server to better identify individual connections and usage patterns.
+ * Teiid Server to better identify individual connections and usage patterns.
* This property is <i>optional</i>.
*/
private String applicationName;
@@ -190,8 +190,8 @@
/**
* A setting that controls how connections created by this DataSource manage transactions for client
- * requests when client applications do not use transactions. Because a MetaMatrix virtual database
- * will likely deal with multiple underlying information sources, the MetaMatrix XA Server will execute
+ * requests when client applications do not use transactions. Because a Teiid virtual database
+ * will likely deal with multiple underlying information sources, Teiid will execute
* all client requests within the contexts of transactions. This method determines the semantics
* of creating such transactions when the client does not explicitly do so.
* <p>
@@ -219,12 +219,11 @@
* The {@link #TXN_AUTO_WRAP_OPTIMISTIC} constant value is provided for convenience.</li>
* </ul>
* </p>
- * <p>
- * This property is important only if connecting to a MetaMatrix XA Server.
- * </p>
*/
private String transactionAutoWrap;
+ private boolean ansiQuotedIdentifiers = true;
+
/**
* Reference to the logWriter, which is transient and is therefore not serialized with the DataSource.
*/
@@ -517,7 +516,7 @@
/**
* Returns the name of the application. Supplying this property may allow an administrator of a
- * MetaMatrix Server to better identify individual connections and usage patterns.
+ * Teiid Server to better identify individual connections and usage patterns.
* This property is <i>optional</i>.
* @return String the application name; may be null or zero-length
*/
@@ -526,7 +525,7 @@
}
/**
- * Returns the name of the virtual database on a particular MetaMatrix Server.
+ * Returns the name of the virtual database on a particular Teiid Server.
* @return String
*/
public String getDatabaseName() {
@@ -576,8 +575,8 @@
}
/**
- * Sets the name of the application. Supplying this property may allow an administrator of a
- * MetaMatrix Server to better identify individual connections and usage patterns.
+< * Sets the name of the application. Supplying this property may allow an administrator of a
+ * Teiid Server to better identify individual connections and usage patterns.
* This property is <i>optional</i>.
* @param applicationName The applicationName to set
*/
@@ -586,7 +585,7 @@
}
/**
- * Sets the name of the virtual database on a particular MetaMatrix Server.
+ * Sets the name of the virtual database on a particular Teiid Server.
* @param databaseName The name of the virtual database
*/
public void setDatabaseName(final String databaseName) {
@@ -678,24 +677,40 @@
}
/**
+ * @see #getTxnAutoWrap()
+ * @return
+ */
+ public String getTransactionAutoWrap() {
+ return transactionAutoWrap;
+ }
+
+ /**
+ * @see #setTxnAutoWrap(String)
+ * @param transactionAutoWrap
+ */
+ public void setTransactionAutoWrap(String transactionAutoWrap) {
+ this.transactionAutoWrap = transactionAutoWrap;
+ }
+
+ /**
* Returns the current setting for how connections are created by this DataSource manage transactions
* for client requests when client applications do not use transactions.
- * Because a MetaMatrix virtual database will likely deal with multiple underlying information sources,
- * the MetaMatrix XA Server will execute all client requests within the contexts of transactions.
+ * Because a virtual database will likely deal with multiple underlying information sources,
+ * Teiid will execute all client requests within the contexts of transactions.
* This method determines the semantics of creating such transactions when the client does not
* explicitly do so.
* @return the current setting, or null if the property has not been set and the default mode will
* be used.
*/
- public String getTransactionAutoWrap() {
- return transactionAutoWrap;
- }
-
+ public String getTxnAutoWrap() {
+ return this.transactionAutoWrap;
+ }
+
/**
* Sets the setting for how connections are created by this DataSource manage transactions
* for client requests when client applications do not use transactions.
- * Because a MetaMatrix virtual database will likely deal with multiple underlying information sources,
- * the MetaMatrix XA Server will execute all client requests within the contexts of transactions.
+ * Because a virtual database will likely deal with multiple underlying information sources,
+ * Teiid will execute all client requests within the contexts of transactions.
* This method determines the semantics of creating such transactions when the client does not
* explicitly do so.
* <p>
@@ -722,13 +737,10 @@
* The {@link #TXN_AUTO_WRAP_OPTIMISTIC} constant value is provided for convenience.</li>
* </ul>
* </p>
- * <p>
- * This property is important only if connecting to a MetaMatrix XA Server.
- * </p>
* @param transactionAutoWrap The transactionAutoWrap to set
*/
- public void setTransactionAutoWrap(String transactionAutoWrap) {
- this.transactionAutoWrap = transactionAutoWrap;
+ public void setTxnAutoWrap(String transactionAutoWrap) {
+ this.transactionAutoWrap = transactionAutoWrap;
}
// --------------------------------------------------------------------------------------------
@@ -903,5 +915,13 @@
return additionalProperties;
}
+ public void setAnsiQuotedIdentifiers(boolean ansiQuotedIdentifiers) {
+ this.ansiQuotedIdentifiers = ansiQuotedIdentifiers;
+ }
+
+ public boolean isAnsiQuotedIdentifiers() {
+ return ansiQuotedIdentifiers;
+ }
+
}
Modified: branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/MMConnection.java
===================================================================
--- branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/MMConnection.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/MMConnection.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -68,7 +68,6 @@
import com.metamatrix.common.xa.XATransactionException;
import com.metamatrix.dqp.client.ClientSideDQP;
import com.metamatrix.jdbc.api.ExecutionProperties;
-import com.metamatrix.platform.util.ProductInfoConstants;
/**
* <p>The Connection object represents driver's connection to the MetaMatrix embedded server.
@@ -162,20 +161,11 @@
info.put(ExecutionProperties.RESULT_SET_CACHE_MODE, BaseDataSource.DEFAULT_RESULT_SET_CACHE_MODE);
}
- /*
- * Flag that a double quoted string is treated as a variable
- * instead of a String litral. for example:
- * <code>
- * select "part_color" from parts
- * </code>
- * "part_color" will be treated as column name insted of varible, this
- * is to allow ODBC metadata tools allow to integrate seemlessly
- */
- String allowDblQuotes = info.getProperty(ExecutionProperties.ALLOW_DBL_QUOTED_VARIABLE);
- if (allowDblQuotes != null) {
- info.put(ExecutionProperties.ALLOW_DBL_QUOTED_VARIABLE, allowDblQuotes);
+ String ansiQuotes = info.getProperty(ExecutionProperties.ANSI_QUOTED_IDENTIFIERS);
+ if (ansiQuotes != null) {
+ info.put(ExecutionProperties.ANSI_QUOTED_IDENTIFIERS, ansiQuotes);
} else {
- info.put(ExecutionProperties.ALLOW_DBL_QUOTED_VARIABLE, Boolean.FALSE.toString());
+ info.put(ExecutionProperties.ANSI_QUOTED_IDENTIFIERS, Boolean.TRUE.toString());
}
logger.fine(JDBCPlugin.Util.getString("MMConnection.Session_success")); //$NON-NLS-1$
@@ -484,18 +474,17 @@
return serverConn;
}
- /**
- * <p>A schema maps to a VirtualDatabaseName in JDBC. This method returns
- * the name of the virtualDatabase to which we have a connection.</p>
- * @return name of the virtual database to which metamatrix connects.
- * @throws SQLException if there is an error connecting to metamatrix.
- */
- String getSchema() throws SQLException {
+ String getVDBName() throws SQLException {
//Check to see the connection is open
checkConnection();
//get the virtual database name to which we are connected.
- return this.serverConn.getLogonResult().getProductInfo(ProductInfoConstants.VIRTUAL_DB);
+ return this.serverConn.getLogonResult().getProductInfo(MMURL.JDBC.VDB_NAME);
+ }
+
+ public String getVDBVersion() throws SQLException {
+ checkConnection();
+ return this.serverConn.getLogonResult().getProductInfo(MMURL.JDBC.VDB_VERSION);
}
/**
Modified: branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/MMDatabaseMetaData.java
===================================================================
--- branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/MMDatabaseMetaData.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/MMDatabaseMetaData.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -69,8 +69,8 @@
private static final String PERCENT = "%"; //$NON-NLS-1$
// constant value indicating that there is not limit
private final static int NO_LIMIT = 0;
- // constant value giving metamatrix preferred name for a schema
- private final static String SCHEMA_TERM = "VirtualDatabase"; //$NON-NLS-1$
+ // constant value giving preferred name for a schema
+ private final static String SCHEMA_TERM = "Schema"; //$NON-NLS-1$
// constant value giving an empty string value
private final static String EMPTY_STRING = ""; //$NON-NLS-1$
// constant value giving a string used to escape search strings
@@ -79,11 +79,11 @@
//private final static String SINGLE_QUOTE = "\'";
// constant value giving an identifier quoting string
private final static String DOUBLE_QUOTE = "\""; //$NON-NLS-1$
- // constant value giving extra name charchters used in Identifiers
+ // constant value giving extra name characters used in Identifiers
private final static String EXTRA_CHARS = ".@"; //$NON-NLS-1$
- // constant value giving the key words used in metamatrix not in SQL-92
+ // constant value giving the key words not in SQL-92
private final static String KEY_WORDS = "OPTION, SHOWPLAN, DEBUG"; //$NON-NLS-1$
- // constant value giving metamatrix preferred name for a procedure
+ // constant value giving preferred name for a procedure
private final static String PROCEDURE_TERM = "StoredProcedure"; //$NON-NLS-1$
// constant value giving the names of numeric functions supported
final static String NUMERIC_FUNCTIONS =
@@ -123,7 +123,6 @@
final private static class RUNTIME_MODEL{
public final static String VIRTUAL_MODEL_NAME = "System"; //$NON-NLS-1$
- public final static String JDBC_SYSTEM_MODEL_NAME = "System.JDBC"; //$NON-NLS-1$
}
private static final String TYPE_MAPPING;
@@ -187,25 +186,26 @@
private final static String QUERY_REFERENCE_KEYS =
new StringBuffer("SELECT PKTABLE_CAT, PKTABLE_SCHEM, PKTABLE_NAME, PKCOLUMN_NAME, FKTABLE_CAT, FKTABLE_SCHEM") //$NON-NLS-1$
.append(", FKTABLE_NAME, FKCOLUMN_NAME, KEY_SEQ, UPDATE_RULE, DELETE_RULE, FK_NAME, PK_NAME, DEFERRABILITY FROM ") //$NON-NLS-1$
- .append(RUNTIME_MODEL.JDBC_SYSTEM_MODEL_NAME).append(".ReferenceKeyColumns").toString(); //$NON-NLS-1$
+ .append(RUNTIME_MODEL.VIRTUAL_MODEL_NAME).append(".ReferenceKeyColumns").toString(); //$NON-NLS-1$
private final static String QUERY_CROSS_REFERENCES = new StringBuffer(QUERY_REFERENCE_KEYS)
- .append(",").append(RUNTIME_MODEL.VIRTUAL_MODEL_NAME).append(".VirtualDatabases v WHERE UCASE(v.Name)").append(LIKE_ESCAPE).append("AND UCASE(v.Name) LIKE ?") //$NON-NLS-1$ //$NON-NLS-2$//$NON-NLS-3$
- .append(" AND UCASE(PKTABLE_SCHEM) = UCASE(v.Name) AND ") //$NON-NLS-1$
- .append(" UCASE(PKTABLE_NAME)").append(LIKE_ESCAPE).append("AND UCASE(FKTABLE_NAME)").append(LIKE_ESCAPE).append("ORDER BY FKTABLE_NAME, KEY_SEQ").toString(); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
+ .append(" WHERE UCASE(PKTABLE_CAT)").append(LIKE_ESCAPE).append("AND UCASE(FKTABLE_CAT)").append(LIKE_ESCAPE) //$NON-NLS-1$//$NON-NLS-2$
+ .append(" AND UCASE(PKTABLE_SCHEM)").append(LIKE_ESCAPE).append("AND UCASE(FKTABLE_SCHEM)").append(LIKE_ESCAPE) //$NON-NLS-1$//$NON-NLS-2$
+ .append(" AND UCASE(PKTABLE_NAME)").append(LIKE_ESCAPE).append("AND UCASE(FKTABLE_NAME)").append(LIKE_ESCAPE) //$NON-NLS-1$//$NON-NLS-2$
+ .append("ORDER BY FKTABLE_NAME, KEY_SEQ").toString(); //$NON-NLS-1$
private final static String QUERY_EXPORTED_KEYS = new StringBuffer(QUERY_REFERENCE_KEYS)
- .append(",").append(RUNTIME_MODEL.VIRTUAL_MODEL_NAME).append(".VirtualDatabases v WHERE UCASE(v.Name)").append(LIKE_ESCAPE) //$NON-NLS-1$ //$NON-NLS-2$
- .append(" AND UCASE(PKTABLE_SCHEM) = UCASE(v.Name) AND ") //$NON-NLS-1$
- .append(" UCASE(PKTABLE_NAME)").append(LIKE_ESCAPE).append("ORDER BY FKTABLE_NAME, KEY_SEQ").toString(); //$NON-NLS-1$//$NON-NLS-2$
-
+ .append(" WHERE UCASE(PKTABLE_CAT)").append(LIKE_ESCAPE) //$NON-NLS-1$
+ .append(" AND UCASE(PKTABLE_SCHEM)").append(LIKE_ESCAPE) //$NON-NLS-1$
+ .append(" AND UCASE(PKTABLE_NAME)").append(LIKE_ESCAPE).append("ORDER BY FKTABLE_NAME, KEY_SEQ").toString(); //$NON-NLS-1$//$NON-NLS-2$
+
private final static String QUERY_IMPORTED_KEYS = new StringBuffer(QUERY_REFERENCE_KEYS)
- .append(",").append(RUNTIME_MODEL.VIRTUAL_MODEL_NAME).append(".VirtualDatabases v WHERE UCASE(v.Name)").append(LIKE_ESCAPE) //$NON-NLS-1$ //$NON-NLS-2$
- .append(" AND UCASE(PKTABLE_SCHEM) = UCASE(v.Name) AND ") //$NON-NLS-1$
- .append(" UCASE(FKTABLE_NAME)").append(LIKE_ESCAPE).append("ORDER BY PKTABLE_NAME, KEY_SEQ").toString(); //$NON-NLS-1$//$NON-NLS-2$
+ .append(" WHERE UCASE(FKTABLE_CAT)").append(LIKE_ESCAPE) //$NON-NLS-1$
+ .append(" AND UCASE(FKTABLE_SCHEM)").append(LIKE_ESCAPE) //$NON-NLS-1$
+ .append(" AND UCASE(FKTABLE_NAME)").append(LIKE_ESCAPE).append("ORDER BY PKTABLE_NAME, KEY_SEQ").toString(); //$NON-NLS-1$//$NON-NLS-2$
- private final static String QUERY_COLUMNS = new StringBuffer("SELECT NULL AS TABLE_CAT") //$NON-NLS-1$
- .append(", v.Name AS TABLE_SCHEM, GroupFullName AS TABLE_NAME, e.Name AS COLUMN_NAME") //$NON-NLS-1$
+ private final static String QUERY_COLUMNS = new StringBuffer("SELECT VDBName AS TABLE_CAT") //$NON-NLS-1$
+ .append(", SchemaName AS TABLE_SCHEM, TableName AS TABLE_NAME, Name AS COLUMN_NAME") //$NON-NLS-1$
.append(", convert(decodeString(DataType, '").append(TYPE_MAPPING).append("', ','), short) AS DATA_TYPE") //$NON-NLS-1$ //$NON-NLS-2$
.append(", DataType AS TYPE_NAME") //$NON-NLS-1$
.append(", CASE WHEN (DataType IN (").append(DATATYPES_WITH_NO_PRECISION) //$NON-NLS-1$
@@ -219,53 +219,49 @@
.append(", decodeString(NullType, 'No Nulls, YES, Nullable, NO, Unknown, '' ''', ',') AS IS_NULLABLE") //$NON-NLS-1$
.append(", NULL AS SCOPE_CATALOG, NULL AS SCOPE_SCHEMA, NULL AS SCOPE_TABLE, NULL AS SOURCE_DATA_TYPE, CASE WHEN e.IsAutoIncremented = 'true' THEN 'YES' ELSE 'NO' END AS IS_AUTOINCREMENT") //$NON-NLS-1$
.append(" FROM ").append(RUNTIME_MODEL.VIRTUAL_MODEL_NAME) //$NON-NLS-1$
- .append(".Elements e CROSS JOIN ").append(RUNTIME_MODEL.VIRTUAL_MODEL_NAME).append(".VirtualDatabases v") //$NON-NLS-1$ //$NON-NLS-2$
- .append(" WHERE UCASE(v.Name)").append(LIKE_ESCAPE)//$NON-NLS-1$
- .append("AND UCASE(GroupFullName)") .append(LIKE_ESCAPE) //$NON-NLS-1$
- .append("AND UCASE(e.Name)").append(LIKE_ESCAPE) //$NON-NLS-1$
+ .append(".Columns e") //$NON-NLS-1$
+ .append(" WHERE UCASE(SchemaName)").append(LIKE_ESCAPE)//$NON-NLS-1$
+ .append("AND UCASE(TableName)") .append(LIKE_ESCAPE) //$NON-NLS-1$
+ .append("AND UCASE(Name)").append(LIKE_ESCAPE) //$NON-NLS-1$
+ .append("AND UCASE(VDBName)").append(LIKE_ESCAPE) //$NON-NLS-1$
.append(" ORDER BY TABLE_NAME, ORDINAL_POSITION").toString(); //$NON-NLS-1$
private static final String QUERY_INDEX_INFO =
- new StringBuffer("SELECT NULL AS TABLE_CAT, v.Name AS TABLE_SCHEM, GroupFullName AS TABLE_NAME") //$NON-NLS-1$
- .append(", convert(0, boolean) AS NON_UNIQUE, NULL AS INDEX_QUALIFIER, KeyName AS INDEX_NAME") //$NON-NLS-1$
+ new StringBuffer("SELECT VDBName AS TABLE_CAT, SchemaName AS TABLE_SCHEM, TableName AS TABLE_NAME") //$NON-NLS-1$
+ .append(", case when KeyType = 'Index' then TRUE else FALSE end AS NON_UNIQUE, NULL AS INDEX_QUALIFIER, KeyName AS INDEX_NAME") //$NON-NLS-1$
.append(", 0 AS TYPE, convert(Position, short) AS ORDINAL_POSITION, k.Name AS COLUMN_NAME") //$NON-NLS-1$
.append(", NULL AS ASC_OR_DESC, 0 AS CARDINALITY, 1 AS PAGES, NULL AS FILTER_CONDITION") //$NON-NLS-1$
- .append(" FROM ").append(RUNTIME_MODEL.VIRTUAL_MODEL_NAME).append(".KeyElements k CROSS JOIN ") //$NON-NLS-1$ //$NON-NLS-2$
- .append(RUNTIME_MODEL.VIRTUAL_MODEL_NAME).append(".VirtualDatabases v") //$NON-NLS-1$
- .append(" WHERE UCASE(v.Name)").append(LIKE_ESCAPE).append("AND KeyType LIKE 'Index' AND UCASE(GroupFullName) LIKE ?") //$NON-NLS-1$//$NON-NLS-2$
+ .append(" FROM ").append(RUNTIME_MODEL.VIRTUAL_MODEL_NAME).append(".KeyColumns k") //$NON-NLS-1$ //$NON-NLS-2$
+ .append(" WHERE UCASE(VDBName)").append(LIKE_ESCAPE)//$NON-NLS-1$
+ .append(" AND UCASE(SchemaName)").append(LIKE_ESCAPE)//$NON-NLS-1$
+ .append(" AND UCASE(TableName)") .append(LIKE_ESCAPE) //$NON-NLS-1$
+ .append(" AND KeyType IN ('Index', ?)") //$NON-NLS-1$
.append(" ORDER BY NON_UNIQUE, TYPE, INDEX_NAME, ORDINAL_POSITION").toString(); //$NON-NLS-1$
- private static final String QUERY_MODELS =
- new StringBuffer("SELECT NULL AS MODEL_CAT, v.name AS MODEL_SCHEM, m.Name AS MODEL_NAME,") //$NON-NLS-1$
- .append(" Description AS DESCRIPTION, IsPhysical AS IS_PHYSICAL, SupportsWhereAll AS SUP_WHERE_ALL, ") //$NON-NLS-1$
- .append(" SupportsDistinct AS SUP_DISTINCT, SupportsJoin AS SUP_JOIN, SupportsOuterJoin AS SUP_OUTER_JOIN, ") //$NON-NLS-1$
- .append(" SupportsOrderBy AS SUP_ORDER_BY ") //$NON-NLS-1$
- .append(" FROM ").append(RUNTIME_MODEL.VIRTUAL_MODEL_NAME).append(".Models m CROSS JOIN ") //$NON-NLS-1$ //$NON-NLS-2$
- .append(RUNTIME_MODEL.VIRTUAL_MODEL_NAME).append(".VirtualDatabases v ") //$NON-NLS-1$
- .append("WHERE UCASE(m.Name)").append(LIKE_ESCAPE).append("ORDER BY MODEL_NAME").toString(); //$NON-NLS-1$//$NON-NLS-2$
-
private static final String QUERY_PRIMARY_KEYS =
- new StringBuffer("SELECT NULL AS TABLE_CAT, v.Name AS TABLE_SCHEM, GroupFullName AS TABLE_NAME") //$NON-NLS-1$
+ new StringBuffer("SELECT VDBName as TABLE_CAT, SchemaName AS TABLE_SCHEM, TableName AS TABLE_NAME") //$NON-NLS-1$
.append(", k.Name AS COLUMN_NAME, convert(Position, short) AS KEY_SEQ, KeyName AS PK_NAME") //$NON-NLS-1$
- .append(" FROM ").append(RUNTIME_MODEL.VIRTUAL_MODEL_NAME).append(".KeyElements k CROSS JOIN ") //$NON-NLS-1$ //$NON-NLS-2$
- .append(RUNTIME_MODEL.VIRTUAL_MODEL_NAME).append(".VirtualDatabases v ") //$NON-NLS-1$
- .append(" WHERE UCASE(v.Name)").append(LIKE_ESCAPE).append("AND KeyType LIKE 'Primary' AND UCASE(GroupFullName) LIKE ?") //$NON-NLS-1$//$NON-NLS-2$
+ .append(" FROM ").append(RUNTIME_MODEL.VIRTUAL_MODEL_NAME).append(".KeyColumns k") //$NON-NLS-1$ //$NON-NLS-2$
+ .append(" WHERE UCASE(VDBName)").append(LIKE_ESCAPE)//$NON-NLS-1$
+ .append(" AND UCASE(SchemaName)").append(LIKE_ESCAPE)//$NON-NLS-1$
+ .append(" AND UCASE(TableName)") .append(LIKE_ESCAPE) //$NON-NLS-1$
+ .append(" AND KeyType LIKE 'Primary'") //$NON-NLS-1$
.append(" ORDER BY COLUMN_NAME, KEY_SEQ").toString(); //$NON-NLS-1$
private final static String QUERY_PROCEDURES =
- new StringBuffer("SELECT convert(null, string) AS PROCEDURE_CAT, v.Name AS PROCEDURE_SCHEM") //$NON-NLS-1$
- .append(", p.FullName AS PROCEDURE_NAME, convert(null, string) AS RESERVED_1") //$NON-NLS-1$
+ new StringBuffer("SELECT VDBName AS PROCEDURE_CAT, SchemaName AS PROCEDURE_SCHEM") //$NON-NLS-1$
+ .append(", p.Name AS PROCEDURE_NAME, convert(null, string) AS RESERVED_1") //$NON-NLS-1$
.append(", convert(null, string) AS RESERVED_2, convert(null, string) AS RESERVED_3, p.Description AS REMARKS") //$NON-NLS-1$
.append(", convert(decodeString(p.ReturnsResults, 'true, ").append(DatabaseMetaData.procedureReturnsResult) //$NON-NLS-1$
- .append(", false, ").append(DatabaseMetaData.procedureNoResult).append("'), short) AS PROCEDURE_TYPE, p.FullName AS SPECIFIC_NAME FROM ") //$NON-NLS-1$ //$NON-NLS-2$
- .append(RUNTIME_MODEL.VIRTUAL_MODEL_NAME)
- .append(".Procedures as p CROSS JOIN ") //$NON-NLS-1$
- .append(RUNTIME_MODEL.VIRTUAL_MODEL_NAME)
- .append(".VirtualDatabases v WHERE UCASE(v.Name)").append(LIKE_ESCAPE).append("AND UCASE(p.FullName)").append(LIKE_ESCAPE) //$NON-NLS-1$//$NON-NLS-2$
+ .append(", false, ").append(DatabaseMetaData.procedureNoResult).append("'), short) AS PROCEDURE_TYPE, p.Name AS SPECIFIC_NAME FROM ") //$NON-NLS-1$ //$NON-NLS-2$
+ .append(RUNTIME_MODEL.VIRTUAL_MODEL_NAME).append(".Procedures as p") //$NON-NLS-1$
+ .append(" WHERE UCASE(VDBName)").append(LIKE_ESCAPE)//$NON-NLS-1$
+ .append(" AND UCASE(SchemaName)").append(LIKE_ESCAPE)//$NON-NLS-1$
+ .append(" AND UCASE(p.Name)").append(LIKE_ESCAPE) //$NON-NLS-1$
.append(" ORDER BY PROCEDURE_SCHEM, PROCEDURE_NAME").toString(); //$NON-NLS-1$
private final static String QUERY_PROCEDURE_COLUMNS =
- new StringBuffer("SELECT convert(null, string) AS PROCEDURE_CAT, v.Name AS PROCEDURE_SCHEM") //$NON-NLS-1$
+ new StringBuffer("SELECT VDBName PROCEDURE_CAT, SchemaName AS PROCEDURE_SCHEM") //$NON-NLS-1$
.append(", ProcedureName AS PROCEDURE_NAME, p.Name AS COLUMN_NAME") //$NON-NLS-1$
.append(", convert(decodeString(TYPE, '").append(PARAM_DIRECTION_MAPPING).append("', ','), short) AS COLUMN_TYPE") //$NON-NLS-1$ //$NON-NLS-2$
.append(", convert(decodeString(DataType, '").append(TYPE_MAPPING).append("', ','), integer) AS DATA_TYPE") //$NON-NLS-1$ //$NON-NLS-2$
@@ -276,24 +272,32 @@
.append(PROC_COLUMN_NULLABILITY_MAPPING).append("', ','), integer) AS NULLABLE") //$NON-NLS-1$
.append(", convert(null, string) AS REMARKS, NULL AS COLUMN_DEF") //$NON-NLS-1$
.append(", NULL AS SQL_DATA_TYPE, NULL AS SQL_DATETIME_SUB, NULL AS CHAR_OCTET_LENGTH, p.Position AS ORDINAL_POSITION") //$NON-NLS-1$
- .append(", CASE NullType WHEN 'Nullable' THEN 'YES' WHEN 'No Nulls' THEN 'NO' ELSE '' END AS IS_NULLABLE, p.ProcedureName || '.' || p.Name as SPECIFIC_NAME FROM ") //$NON-NLS-1$
+ .append(", CASE NullType WHEN 'Nullable' THEN 'YES' WHEN 'No Nulls' THEN 'NO' ELSE '' END AS IS_NULLABLE, p.ProcedureName as SPECIFIC_NAME FROM ") //$NON-NLS-1$
.append(RUNTIME_MODEL.VIRTUAL_MODEL_NAME)
- .append(".ProcedureParams as p CROSS JOIN ") //$NON-NLS-1$
- .append(RUNTIME_MODEL.VIRTUAL_MODEL_NAME)
- .append(".VirtualDatabases v WHERE UCASE(v.Name)").append(LIKE_ESCAPE).append("AND UCASE(p.ProcedureName)").append(LIKE_ESCAPE).append("AND UCASE(p.Name) LIKE ?") //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
- .append(" ORDER BY PROCEDURE_SCHEM, PROCEDURE_NAME, COLUMN_TYPE, POSITION OPTION MAKEDEP SystemPhysical.COLUMNS").toString(); //$NON-NLS-1$
+ .append(".ProcedureParams as p") //$NON-NLS-1$
+ .append(" WHERE UCASE(VDBName)").append(LIKE_ESCAPE)//$NON-NLS-1$
+ .append(" AND UCASE(SchemaName)").append(LIKE_ESCAPE)//$NON-NLS-1$
+ .append(" AND UCASE(ProcedureName)") .append(LIKE_ESCAPE) //$NON-NLS-1$
+ .append(" AND UCASE(p.Name) LIKE ?") //$NON-NLS-1$
+ .append(" ORDER BY PROCEDURE_SCHEM, PROCEDURE_NAME, COLUMN_TYPE, POSITION").toString(); //$NON-NLS-1$
private static final String QUERY_SCHEMAS =
- new StringBuffer("SELECT Name AS TABLE_SCHEM, NULL AS TABLE_CATALOG") //$NON-NLS-1$
- .append(" FROM ").append(RUNTIME_MODEL.VIRTUAL_MODEL_NAME).append(".VirtualDatabases ORDER BY TABLE_SCHEM").toString(); //$NON-NLS-1$ //$NON-NLS-2$
+ new StringBuffer("SELECT Name AS TABLE_SCHEM, VDBName AS TABLE_CATALOG") //$NON-NLS-1$
+ .append(" FROM ").append(RUNTIME_MODEL.VIRTUAL_MODEL_NAME).append(".Schemas") //$NON-NLS-1$ //$NON-NLS-2$
+ .append(" WHERE UCASE(VDBName)").append(LIKE_ESCAPE)//$NON-NLS-1$
+ .append(" AND UCASE(Name)").append(LIKE_ESCAPE)//$NON-NLS-1$
+ .append(" ORDER BY TABLE_SCHEM").toString(); //$NON-NLS-1$
+ private final static String TABLE_TYPE = "CASE WHEN IsSystem = 'true' and UCASE(Type) = 'TABLE' THEN 'SYSTEM TABLE' ELSE UCASE(Type) END"; //$NON-NLS-1$
+
private final static String QUERY_TABLES =
- new StringBuffer("SELECT NULL AS TABLE_CAT, v.Name AS TABLE_SCHEM, FullName AS TABLE_NAME") //$NON-NLS-1$
- .append(", CASE WHEN IsSystem = 'true' and UCASE(Type) = 'TABLE' THEN 'SYSTEM TABLE' ELSE UCASE(Type) END AS TABLE_TYPE, Description AS REMARKS, NULL AS TYPE_CAT, NULL AS TYPE_SCHEM") //$NON-NLS-1$
+ new StringBuffer("SELECT VDBName AS TABLE_CAT, SchemaName AS TABLE_SCHEM, Name AS TABLE_NAME") //$NON-NLS-1$
+ .append(", ").append(TABLE_TYPE).append(" AS TABLE_TYPE, Description AS REMARKS, NULL AS TYPE_CAT, NULL AS TYPE_SCHEM") //$NON-NLS-1$ //$NON-NLS-2$
.append(", NULL AS TYPE_NAME, NULL AS SELF_REFERENCING_COL_NAME, NULL AS REF_GENERATION, IsPhysical AS ISPHYSICAL") //$NON-NLS-1$
- .append(" FROM ").append(RUNTIME_MODEL.VIRTUAL_MODEL_NAME).append(".Groups g CROSS JOIN ") //$NON-NLS-1$ //$NON-NLS-2$
- .append(RUNTIME_MODEL.VIRTUAL_MODEL_NAME).append(".VirtualDatabases v") //$NON-NLS-1$
- .append(" WHERE UCASE(v.Name)").append(LIKE_ESCAPE).append("AND UCASE(FullName) LIKE ?").toString(); //$NON-NLS-1$//$NON-NLS-2$
+ .append(" FROM ").append(RUNTIME_MODEL.VIRTUAL_MODEL_NAME).append(".Tables g ") //$NON-NLS-1$ //$NON-NLS-2$
+ .append(" WHERE UCASE(VDBName)").append(LIKE_ESCAPE)//$NON-NLS-1$
+ .append(" AND UCASE(SchemaName)").append(LIKE_ESCAPE)//$NON-NLS-1$
+ .append(" AND UCASE(Name)") .append(LIKE_ESCAPE).toString(); //$NON-NLS-1$
// private static final String QUERY_UDT =
// new StringBuffer("SELECT NULL AS TYPE_CAT, v.Name AS TYPE_SCHEM, TypeName AS TYPE_NAME") //$NON-NLS-1$
@@ -592,18 +596,13 @@
*/
public ResultSet getColumns(String catalog, String schema, String tableNamePattern, String columnNamePattern) throws SQLException {
- // Since catelog is allways null with MM, if nay supplied send empty
- //result set
- if ((catalog != null) && (catalog.trim().length() > 0)) {
- return emptyColumnsResultSet();
+ if (catalog == null) {
+ catalog = PERCENT;
}
- // hard wire the schema to the current connection's VDB name, if one
- // not supplied
if (schema == null) {
schema = PERCENT;
}
-
// Get columns in all the tables if tableNamePattern is null
if(tableNamePattern == null) {
tableNamePattern = PERCENT;
@@ -624,6 +623,7 @@
prepareQuery.setObject(1, schema.toUpperCase());
prepareQuery.setObject(2, tableNamePattern.toUpperCase());
prepareQuery.setObject(3, columnNamePattern.toUpperCase());
+ prepareQuery.setObject(4, catalog.toUpperCase());
// make a query against runtimemetadata and get results
results = (MMResultSet) prepareQuery.executeQuery();
@@ -660,60 +660,6 @@
}
/**
- * This method returns a empty result for getColumns() request.
- * @return ResultSet
- */
- private ResultSet emptyColumnsResultSet() throws SQLException {
- String[] columnNames = new String[] {
- JDBCColumnNames.COLUMNS.TABLE_CAT,
- JDBCColumnNames.COLUMNS.TABLE_SCHEM,
- JDBCColumnNames.COLUMNS.TABLE_NAME,
- JDBCColumnNames.COLUMNS.COLUMN_NAME,
- JDBCColumnNames.COLUMNS.DATA_TYPE,
- JDBCColumnNames.COLUMNS.TYPE_NAME,
- JDBCColumnNames.COLUMNS.COLUMN_SIZE,
- JDBCColumnNames.COLUMNS.BUFFER_LENGTH,
- JDBCColumnNames.COLUMNS.DECIMAL_DIGITS,
- JDBCColumnNames.COLUMNS.NUM_PREC_RADIX,
- JDBCColumnNames.COLUMNS.NULLABLE,
- JDBCColumnNames.COLUMNS.REMARKS,
- JDBCColumnNames.COLUMNS.COLUMN_DEF,
- JDBCColumnNames.COLUMNS.SQL_DATA_TYPE,
- JDBCColumnNames.COLUMNS.SQL_DATETIME_SUB,
- JDBCColumnNames.COLUMNS.CHAR_OCTET_LENGTH,
- JDBCColumnNames.COLUMNS.ORDINAL_POSITION,
- JDBCColumnNames.COLUMNS.IS_NULLABLE,
- // These are added in 1.4
- //JDBCColumnNames.COLUMNS.SCOPE_CATLOG,
- //JDBCColumnNames.COLUMNS.SCOPE_SCHEMA,
- //JDBCColumnNames.COLUMNS.SCOPE_TABLE,
- //JDBCColumnNames.COLUMNS.SOURCE_DATA_TYPE
- };
- String[] dataTypes = new String[] {
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.INTEGER,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.INTEGER,
- MMJDBCSQLTypeInfo.INTEGER,
- MMJDBCSQLTypeInfo.INTEGER,
- MMJDBCSQLTypeInfo.INTEGER,
- MMJDBCSQLTypeInfo.INTEGER,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.INTEGER,
- MMJDBCSQLTypeInfo.INTEGER,
- MMJDBCSQLTypeInfo.INTEGER,
- MMJDBCSQLTypeInfo.INTEGER,
- MMJDBCSQLTypeInfo.STRING
- //,MMJDBCSQLTypeInfo.STRING,MMJDBCSQLTypeInfo.STRING,MMJDBCSQLTypeInfo.STRING,MMJDBCSQLTypeInfo.SHORT
- };
- return createEmptyResultSet(columnNames, dataTypes);
- }
-
- /**
* <p>Gets the description of the foreign key columns in the table foreignTable.
* These foreign key columns reference primary key columns of primaryTable.
* Catalog and schema information is not used to narrow down the search, but
@@ -730,9 +676,13 @@
*/
public ResultSet getCrossReference(String primaryCatalog, String primarySchema,String primaryTable,String foreignCatalog,String foreignSchema, String foreignTable) throws SQLException {
- if (primaryCatalog != null || foreignCatalog != null) {
- return emptyCrossReference();
+ if (primaryCatalog == null) {
+ primaryCatalog = PERCENT;
}
+
+ if (foreignCatalog == null) {
+ foreignCatalog = PERCENT;
+ }
if (primarySchema == null) {
primarySchema = PERCENT;
@@ -753,12 +703,13 @@
MMResultSet results = null;
try {
PreparedStatement prepareQuery = driverConnection.prepareStatement(QUERY_CROSS_REFERENCES);
+ prepareQuery.setObject(1, primaryCatalog.toUpperCase());
+ prepareQuery.setObject(2, foreignCatalog.toUpperCase());
+ prepareQuery.setObject(3, primarySchema.toUpperCase());
+ prepareQuery.setObject(4, foreignSchema.toUpperCase());
+ prepareQuery.setObject(5, primaryTable.toUpperCase());
+ prepareQuery.setObject(6, foreignTable.toUpperCase());
- prepareQuery.setObject(1, primarySchema.toUpperCase());
- prepareQuery.setObject(2, foreignSchema.toUpperCase());
- prepareQuery.setObject(3, primaryTable.toUpperCase());
- prepareQuery.setObject(4, foreignTable.toUpperCase());
-
// make a query against runtimemetadata and get results
results = (MMResultSet) prepareQuery.executeQuery();
} catch(Exception e) {
@@ -777,46 +728,6 @@
}
/**
- * Generate empty result set for Cross Reference
- * @return
- */
- private ResultSet emptyCrossReference() throws SQLException {
- String[] columnNames = new String[] {
- JDBCColumnNames.REFERENCE_KEYS.PKTABLE_CAT,
- JDBCColumnNames.REFERENCE_KEYS.PKTABLE_SCHEM,
- JDBCColumnNames.REFERENCE_KEYS.PKTABLE_NAME,
- JDBCColumnNames.REFERENCE_KEYS.PKCOLUMN_NAME,
- JDBCColumnNames.REFERENCE_KEYS.FKTABLE_CAT,
- JDBCColumnNames.REFERENCE_KEYS.FKTABLE_SCHEM,
- JDBCColumnNames.REFERENCE_KEYS.FKTABLE_NAME,
- JDBCColumnNames.REFERENCE_KEYS.FKCOLUMN_NAME,
- JDBCColumnNames.REFERENCE_KEYS.KEY_SEQ,
- JDBCColumnNames.REFERENCE_KEYS.UPDATE_RULE,
- JDBCColumnNames.REFERENCE_KEYS.DELETE_RULE,
- JDBCColumnNames.REFERENCE_KEYS.FK_NAME,
- JDBCColumnNames.REFERENCE_KEYS.PK_NAME,
- JDBCColumnNames.REFERENCE_KEYS.DEFERRABILITY
- };
- String[] dataTypes = new String[] {
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.SHORT,
- MMJDBCSQLTypeInfo.SHORT,
- MMJDBCSQLTypeInfo.SHORT,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.SHORT
- };
- return createEmptyResultSet(columnNames, dataTypes);
- }
-
- /**
* Retrieves the minor version number of the underlying database.
* @return intValue of database's minor version
* @throws SQLException if a database access error occurs.
@@ -926,8 +837,8 @@
* @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.trim().length() > 0)) {
- return emptyExportedKeys();
+ if (catalog == null) {
+ catalog = PERCENT;
}
if (schema == null) {
@@ -941,9 +852,9 @@
MMResultSet results = null;
try {
PreparedStatement prepareQuery = driverConnection.prepareStatement(QUERY_EXPORTED_KEYS);
-
- prepareQuery.setObject(1, schema.toUpperCase());
- prepareQuery.setObject(2, table.toUpperCase());
+ prepareQuery.setObject(1, catalog.toUpperCase());
+ prepareQuery.setObject(2, schema.toUpperCase());
+ prepareQuery.setObject(3, table.toUpperCase());
// make a query against runtimemetadata and get results
results = (MMResultSet) prepareQuery.executeQuery();
@@ -961,14 +872,6 @@
}
/**
- * @return
- */
- private ResultSet emptyExportedKeys() throws SQLException {
- // Same as cross reference.
- return emptyCrossReference();
- }
-
- /**
* <p>Gets the extra characters that can be used in unquoted identifier names
* (those beyond a-z, 0-9, and _)
* @return String representing extra charachters that can be used in identifier names.
@@ -1000,8 +903,8 @@
* @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.trim().length() > 0)) {
- return emptyImportedKeys();
+ if (catalog == null) {
+ catalog = PERCENT;
}
if (schema == null) {
@@ -1015,11 +918,11 @@
MMResultSet results = null;
try {
PreparedStatement prepareQuery = driverConnection.prepareStatement(QUERY_IMPORTED_KEYS);
+ prepareQuery.setObject(1, catalog.toUpperCase());
+ prepareQuery.setObject(2, schema.toUpperCase());
+ prepareQuery.setObject(3, table.toUpperCase());
- prepareQuery.setObject(1, schema.toUpperCase());
- prepareQuery.setObject(2, table.toUpperCase());
-
// make a query against runtimemetadata and get results
results = (MMResultSet) prepareQuery.executeQuery();
} catch(Exception e) {
@@ -1035,13 +938,6 @@
}
/**
- * @return
- */
- private ResultSet emptyImportedKeys() throws SQLException {
- return emptyCrossReference();
- }
-
- /**
* <p>Gets a description of the indexes that are present on a given table.
*
* @param name of the catalog which contains the given table.
@@ -1053,8 +949,8 @@
* @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.trim().length() > 0)) {
- return emptyIndexInfo();
+ if (catalog == null) {
+ catalog = PERCENT;
}
if (schema == null) {
@@ -1072,10 +968,12 @@
try {
prepareQuery = driverConnection.prepareStatement(QUERY_INDEX_INFO);
+ prepareQuery.setObject(1, catalog.toUpperCase());
+ prepareQuery.setObject(2, schema.toUpperCase());
+ prepareQuery.setObject(3, table.toUpperCase());
+ prepareQuery.setObject(4, unique?null:"NonUnique"); //$NON-NLS-1$
+
- prepareQuery.setObject(1, schema.toUpperCase());
- prepareQuery.setObject(2, table.toUpperCase());
-
// make a query against runtimemetadata and get results
results = (MMResultSet) prepareQuery.executeQuery();
@@ -1108,43 +1006,6 @@
}
/**
- * @return
- */
- private ResultSet emptyIndexInfo() throws SQLException {
- String[] columnNames = new String[] {
- JDBCColumnNames.INDEX_INFO.TABLE_CAT,
- JDBCColumnNames.INDEX_INFO.TABLE_SCHEM,
- JDBCColumnNames.INDEX_INFO.TABLE_NAME,
- JDBCColumnNames.INDEX_INFO.NON_UNIQUE,
- JDBCColumnNames.INDEX_INFO.INDEX_QUALIFIER,
- JDBCColumnNames.INDEX_INFO.INDEX_NAME,
- JDBCColumnNames.INDEX_INFO.TYPE,
- JDBCColumnNames.INDEX_INFO.ORDINAL_POSITION,
- JDBCColumnNames.INDEX_INFO.COLUMN_NAME,
- JDBCColumnNames.INDEX_INFO.ASC_OR_DESC,
- JDBCColumnNames.INDEX_INFO.CARDINALITY,
- JDBCColumnNames.INDEX_INFO.PAGES,
- JDBCColumnNames.INDEX_INFO.FILTER_CONDITION
- };
- String[] dataTypes = new String[] {
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.BOOLEAN,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.SHORT,
- MMJDBCSQLTypeInfo.SHORT,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.INTEGER,
- MMJDBCSQLTypeInfo.INTEGER,
- MMJDBCSQLTypeInfo.STRING
- };
- return createEmptyResultSet(columnNames, dataTypes);
- }
-
- /**
* <p>Gets the maximum number of hexadecimal characters allowed in an inline
* binary literal
* @return int value giving maximum length of a binary literal
@@ -1348,8 +1209,8 @@
* @throws SQLException if there is an error obtaining metamatrix results.
*/
public ResultSet getPrimaryKeys(String catalog, String schema, String table) throws SQLException {
- if ((catalog != null) && (catalog.trim().length() > 0)) {
- return emptyPrimaryKeys();
+ if (catalog == null) {
+ catalog = PERCENT;
}
if (schema == null) {
@@ -1368,8 +1229,9 @@
try {
prepareQuery = driverConnection.prepareStatement(QUERY_PRIMARY_KEYS);
- prepareQuery.setObject(1, schema.toUpperCase());
- prepareQuery.setObject(2, table.toUpperCase());
+ prepareQuery.setObject(1, catalog.toUpperCase());
+ prepareQuery.setObject(2, schema.toUpperCase());
+ prepareQuery.setObject(3, table.toUpperCase());
// make a query against runtimemetadata and get results
results = (MMResultSet) prepareQuery.executeQuery();
@@ -1403,30 +1265,6 @@
}
/**
- * create a empty primary keys result set.
- * @return
- */
- private ResultSet emptyPrimaryKeys() throws SQLException {
- String[] columnNames = new String[] {
- JDBCColumnNames.PRIMARY_KEYS.TABLE_CAT,
- JDBCColumnNames.PRIMARY_KEYS.TABLE_SCHEM,
- JDBCColumnNames.PRIMARY_KEYS.TABLE_NAME,
- JDBCColumnNames.PRIMARY_KEYS.COLUMN_NAME,
- JDBCColumnNames.PRIMARY_KEYS.KEY_SEQ,
- JDBCColumnNames.PRIMARY_KEYS.PK_NAME
- };
- String[] dataTypes = new String[] {
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.SHORT,
- MMJDBCSQLTypeInfo.STRING
- };
- return createEmptyResultSet(columnNames, dataTypes);
- }
-
- /**
* <p>Gets a description of the input, output and results associated with certain
* stored procedures matching the given procedureNamePattern. Catalog and
* schema names are not used to narrow down the search, but they should match
@@ -1439,8 +1277,8 @@
* @throws SQLException if there is an error obtaining metamatrix results.
*/
public ResultSet getProcedureColumns(String catalog, String schemaPattern, String procedureNamePattern, String columnNamePattern) throws SQLException {
- if ((catalog != null) && (catalog.trim().length() > 0)) {
- return emptyProcedureColumns();
+ if (catalog == null) {
+ catalog = PERCENT;
}
if (schemaPattern == null) {
schemaPattern = PERCENT;
@@ -1463,11 +1301,11 @@
PreparedStatement prepareQuery = null;
try {
prepareQuery = driverConnection.prepareStatement(QUERY_PROCEDURE_COLUMNS);
+ prepareQuery.setObject(1, catalog.toUpperCase());
+ prepareQuery.setObject(2, schemaPattern.toUpperCase());
+ prepareQuery.setObject(3, procedureNamePattern.toUpperCase());
+ prepareQuery.setObject(4, columnNamePattern.toUpperCase());
- prepareQuery.setObject(1, schemaPattern.toUpperCase());
- prepareQuery.setObject(2, procedureNamePattern.toUpperCase());
- prepareQuery.setObject(3, columnNamePattern.toUpperCase());
-
// make a query against runtimemetadata and get results
results = (MMResultSet) prepareQuery.executeQuery();
// build the list of records from server's Results object.
@@ -1497,45 +1335,6 @@
}
/**
- * @return
- */
- private ResultSet emptyProcedureColumns() throws SQLException {
- String[] columnNames = new String[] {
- JDBCColumnNames.PROCEDURE_COLUMNS.PROCEDURE_CAT,
- JDBCColumnNames.PROCEDURE_COLUMNS.PROCEDURE_SCHEM,
- JDBCColumnNames.PROCEDURE_COLUMNS.PROCEDURE_NAME,
- JDBCColumnNames.PROCEDURE_COLUMNS.COLUMN_NAME,
- JDBCColumnNames.PROCEDURE_COLUMNS.COLUMN_TYPE,
- JDBCColumnNames.PROCEDURE_COLUMNS.DATA_TYPE,
- JDBCColumnNames.PROCEDURE_COLUMNS.TYPE_NAME,
- JDBCColumnNames.PROCEDURE_COLUMNS.PRECISION,
- JDBCColumnNames.PROCEDURE_COLUMNS.LENGTH,
- JDBCColumnNames.PROCEDURE_COLUMNS.SCALE,
- JDBCColumnNames.PROCEDURE_COLUMNS.RADIX,
- JDBCColumnNames.PROCEDURE_COLUMNS.NULLABLE,
- JDBCColumnNames.PROCEDURE_COLUMNS.REMARKS,
- JDBCColumnNames.PROCEDURE_COLUMNS.POSITION
- };
- String[] dataTypes = new String[] {
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.SHORT,
- MMJDBCSQLTypeInfo.INTEGER,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.INTEGER,
- MMJDBCSQLTypeInfo.INTEGER,
- MMJDBCSQLTypeInfo.SHORT,
- MMJDBCSQLTypeInfo.SHORT,
- MMJDBCSQLTypeInfo.SHORT,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.SHORT
- };
- return createEmptyResultSet(columnNames, dataTypes);
- }
-
- /**
* <p>Gets description of all the available stored procedures whose names match
* the given pattern. Catalog and schemaPattern are not used to narrow down
* the search, but they should match the virtualdatabasename and version used
@@ -1547,9 +1346,10 @@
* @throws SQLException if there is an error obtaining metamatrix results.
*/
public ResultSet getProcedures(String catalog, String schemaPattern, String procedureNamePattern) throws SQLException {
- if ((catalog != null) && (catalog.trim().length() > 0)) {
- return emptyProcedures();
- }
+ if (catalog == null) {
+ catalog = PERCENT;
+ }
+
if (schemaPattern == null) {
schemaPattern = PERCENT;
}
@@ -1567,10 +1367,10 @@
try {
prepareQuery = driverConnection.prepareStatement(QUERY_PROCEDURES);
+ prepareQuery.setObject(1, catalog.toUpperCase());
+ prepareQuery.setObject(2, schemaPattern.toUpperCase());
+ prepareQuery.setObject(3, procedureNamePattern.toUpperCase());
- prepareQuery.setObject(1, schemaPattern.toUpperCase());
- prepareQuery.setObject(2, procedureNamePattern.toUpperCase());
-
// make a query against runtimemetadata and get results
results = (MMResultSet) prepareQuery.executeQuery();
@@ -1604,33 +1404,6 @@
}
/**
- * @return
- */
- private ResultSet emptyProcedures() throws SQLException {
- String[] columnNames = new String[] {
- JDBCColumnNames.PROCEDURES.PROCEDURE_CAT,
- JDBCColumnNames.PROCEDURES.PROCEDURE_SCHEM,
- JDBCColumnNames.PROCEDURES.PROCEDURE_NAME,
- JDBCColumnNames.PROCEDURES.RESERVED_1,
- JDBCColumnNames.PROCEDURES.RESERVED_2,
- JDBCColumnNames.PROCEDURES.RESERVED_3,
- JDBCColumnNames.PROCEDURES.REMARKS,
- JDBCColumnNames.PROCEDURES.PROCEDURE_TYPE
- };
- String[] dataTypes = new String[] {
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.SHORT
- };
- return createEmptyResultSet(columnNames, dataTypes);
- }
-
- /**
* <p>Gets MetaMatrix's preferred term for procedures
* @return String representing metamatrix procedure term.
* @throws SQLException, should never occur
@@ -1647,41 +1420,7 @@
* @throws SQLException if there is an error obtaining metamatrix results.
*/
public ResultSet getSchemas() throws SQLException {
-
- // list which represent records containing schema info
- List records = new ArrayList ();
-
- ResultSetMetaData rmetadata = null;
- MMResultSet results = null;
- PreparedStatement prepareQuery = null;
- try {
- prepareQuery = driverConnection.prepareStatement(QUERY_SCHEMAS);
- // make a query against runtimemetadata and get results
- results = (MMResultSet) prepareQuery.executeQuery();
-
- while (results.next ()) {
- // each row will have only one column(Virtual database name)
- List currentRow = new ArrayList (2);
-
- for(int i = 0; i < JDBCColumnPositions.SCHEMAS.MAX_COLUMNS; i++) {
- // get the value at the current index add it to currentRow
- currentRow.add(results.getObject(i+1));
- }
-
- records.add(currentRow);
- }
-
- // Get the metadata for the results
- rmetadata = results.getMetaData();
-
- } catch(Exception e) {
- throw MMSQLException.create(e, JDBCPlugin.Util.getString("MMDatabaseMetadata.getschema_error", e.getMessage())); //$NON-NLS-1$
- }
-
- logger.fine(JDBCPlugin.Util.getString("MMDatabaseMetadata.getschema_success")); //$NON-NLS-1$
-
- // construct results object from column values and their metadata
- return createResultSet(records, rmetadata);
+ return getSchemas(null, null);
}
/**
@@ -1876,8 +1615,8 @@
* @throws SQLException if there is an error obtaining metamatrix results.
*/
public ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String types[]) throws SQLException {
- if ((catalog != null) && (catalog.trim().length() > 0)) {
- return emptyTablesResultSet();
+ if (catalog == null) {
+ catalog = PERCENT;
}
if (schemaPattern == null) {
@@ -1895,26 +1634,22 @@
// query string to be submitted to get table metadata info
StringBuffer sqlQuery = new StringBuffer(QUERY_TABLES);
- StringBuffer typesString = new StringBuffer(); // criteria string for different table types
-
+ StringBuffer typesString = new StringBuffer("("); // criteria string for different table types //$NON-NLS-1$
+
if (types != null) {
// construct the criteria string
for(int i=0; i < types.length; i++) {
if (types[i] != null && types[i].length() > 0) {
if (i > 0) {
- typesString.append(" OR CASE WHEN IsSystem = 'true' and UCASE(Type) = 'TABLE' THEN 'SYSTEM TABLE' ELSE UCASE(Type) END LIKE ?"); //$NON-NLS-1$
- } else {
- typesString.append("(CASE WHEN IsSystem = 'true' and UCASE(Type) = 'TABLE' THEN 'SYSTEM TABLE' ELSE UCASE(Type) END LIKE ?"); //$NON-NLS-1$
- }
+ typesString.append(" OR "); //$NON-NLS-1$
+ }
+ typesString.append(TABLE_TYPE).append(LIKE_ESCAPE);
}
}
- }
-
- if (typesString.length() != 0) {
typesString.append(")"); //$NON-NLS-1$
- sqlQuery.append(" AND ").append(typesString.toString()).append(" AND Type IS NOT NULL"); //$NON-NLS-1$ //$NON-NLS-2$
-
+ sqlQuery.append(" AND ").append(typesString.toString()); //$NON-NLS-1$
}
+
sqlQuery.append(" ORDER BY TABLE_TYPE, TABLE_SCHEM, TABLE_NAME"); //$NON-NLS-1$
@@ -1925,6 +1660,7 @@
try {
prepareQuery = driverConnection.prepareStatement(sqlQuery.toString());
int columnIndex = 0;
+ prepareQuery.setObject(++columnIndex, catalog.toUpperCase());
prepareQuery.setObject(++columnIndex, schemaPattern.toUpperCase());
prepareQuery.setObject(++columnIndex, tableNamePattern.toUpperCase());
@@ -1976,39 +1712,6 @@
}
/**
- * Return a empty tables resultset
- * @return
- */
- private ResultSet emptyTablesResultSet() throws SQLException {
- String[] columnNames = {
- JDBCColumnNames.TABLES.TABLE_CAT,
- JDBCColumnNames.TABLES.TYPE_SCHEM,
- JDBCColumnNames.TABLES.TABLE_NAME,
- JDBCColumnNames.TABLES.TABLE_TYPE,
- JDBCColumnNames.TABLES.REMARKS,
- JDBCColumnNames.TABLES.TYPE_CAT,
- JDBCColumnNames.TABLES.TYPE_SCHEM,
- JDBCColumnNames.TABLES.TYPE_NAME,
- JDBCColumnNames.TABLES.SELF_REFERENCING_COL_NAME,
- JDBCColumnNames.TABLES.REF_GENERATION,
- JDBCColumnNames.TABLES.ISPHYSICAL
- };
- String[] dataTypes = {
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.STRING,
- MMJDBCSQLTypeInfo.BOOLEAN
- };
- return createEmptyResultSet(columnNames, dataTypes);
- }
- /**
* <p>Gets the table types available to metamatrix. The results are ordered by
* table type
* @return ResultSet object containing hardcoded table type info.
@@ -3163,7 +2866,7 @@
HardCoding Column metadata details for the given column
********************************************************/
- metadataMap.put(ResultsMetadataConstants.VIRTUAL_DATABASE_NAME, driverConnection.getSchema());
+ metadataMap.put(ResultsMetadataConstants.VIRTUAL_DATABASE_NAME, driverConnection.getVDBName());
metadataMap.put(ResultsMetadataConstants.GROUP_NAME, tableName);
metadataMap.put(ResultsMetadataConstants.ELEMENT_NAME, columnName);
metadataMap.put(ResultsMetadataConstants.DATA_TYPE, dataType);
@@ -3183,55 +2886,6 @@
}
/**
- * Gets a description of models available in a catalog.
- *
- * <P>Only model descriptions matching the catalog, schema, and
- * model are returned. They are ordered by MODEL_NAME.
- *
- * <P>Each model description has the following columns:
- * <OL>
- * <LI><B>MODEL_CAT</B> String => model catalog (may be null)
- * <LI><B>MODEL_SCHEM</B> String => model schema (may be null)
- * <LI><B>MODEL_NAME</B> String => model name
- * <LI><B>DESCRIPTION</B> String => explanatory comment on the model (may be null)
- * <LI><B>IS_PHYSICAL</B> Boolean => true if the model is a physical model
- * <LI><B>SUP_WHERE_ALL</B> Boolean => true if queries without a criteria are allowed
- * <LI><B>SUP_DISTINCT</B> Boolean => true if distinct clause can be used
- * <LI><B>SUP_JOIN</B> Boolean => true if joins are supported
- * <LI><B>SUP_OUTER_JOIN</B> Boolean => true if outer joins are supported
- * <LI><B>SUP_ORDER_BY</B> Boolean => true if order by is supported
- * </OL>
- *
- * <P><B>Note:</B> Some databases may not return information for
- * all models.
- *
- * @param catalog a catalog name; "" retrieves those without a
- * catalog; null means drop catalog name from the selection criteria
- * @param schemaPattern a schema name pattern; "" retrieves those
- * without a schema
- * @param modelNamePattern a model name pattern
- * @return <code>ResultSet</code> - each row is a model description
- * @exception SQLException if a database access error occurs
- */
- public ResultSet getModels(String catalog, String schemaPattern, String modelNamePattern) throws SQLException {
- // Get all models if modelNamePattern is null
- if(modelNamePattern == null) {
- modelNamePattern = PERCENT;
- }
- try {
- PreparedStatement prepareQuery = driverConnection.prepareStatement(QUERY_MODELS);
- prepareQuery.setObject(1, modelNamePattern.toUpperCase());
-
- // make a query against runtimemetadata and get results
- MMResultSet results = (MMResultSet) prepareQuery.executeQuery();
-
- return results;
- } catch (Exception e) {
- throw MMSQLException.create(e, JDBCPlugin.Util.getString("MMDatabaseMetadata.getModels_error", modelNamePattern, e.getMessage())); //$NON-NLS-1$
- }
- }
-
- /**
* <p> This is a different method from #getSchemas(). It only extracts the XML schemas.</p>
* @param documentName of the Group specified in the XML model
* @return a list of xml schemas
@@ -3290,6 +2944,48 @@
public ResultSet getSchemas(String catalog, String schemaPattern)
throws SQLException {
- throw SqlUtil.createFeatureNotSupportedException();
+ if (catalog == null) {
+ catalog = PERCENT;
+ }
+
+ if (schemaPattern == null) {
+ schemaPattern = PERCENT;
+ }
+ // list which represent records containing schema info
+ List records = new ArrayList ();
+
+ ResultSetMetaData rmetadata = null;
+ MMResultSet results = null;
+ PreparedStatement prepareQuery = null;
+ try {
+ prepareQuery = driverConnection.prepareStatement(QUERY_SCHEMAS);
+ prepareQuery.setObject(1, catalog.toUpperCase());
+ prepareQuery.setObject(2, schemaPattern.toUpperCase());
+ // make a query against runtimemetadata and get results
+ results = (MMResultSet) prepareQuery.executeQuery();
+
+ while (results.next ()) {
+ // each row will have only one column(Virtual database name)
+ List currentRow = new ArrayList (2);
+
+ for(int i = 0; i < JDBCColumnPositions.SCHEMAS.MAX_COLUMNS; i++) {
+ // get the value at the current index add it to currentRow
+ currentRow.add(results.getObject(i+1));
+ }
+
+ records.add(currentRow);
+ }
+
+ // Get the metadata for the results
+ rmetadata = results.getMetaData();
+
+ } catch(Exception e) {
+ throw MMSQLException.create(e, JDBCPlugin.Util.getString("MMDatabaseMetadata.getschema_error", e.getMessage())); //$NON-NLS-1$
+ }
+
+ logger.fine(JDBCPlugin.Util.getString("MMDatabaseMetadata.getschema_success")); //$NON-NLS-1$
+
+ // construct results object from column values and their metadata
+ return createResultSet(records, rmetadata);
}
}
Modified: branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/MMPreparedStatement.java
===================================================================
--- branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/MMPreparedStatement.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/MMPreparedStatement.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -250,7 +250,7 @@
} else {
MetadataResult results;
try {
- results = this.getDQP().getMetadata(this.currentRequestID, prepareSql, Boolean.valueOf(getExecutionProperty(ExecutionProperties.ALLOW_DBL_QUOTED_VARIABLE)).booleanValue());
+ results = this.getDQP().getMetadata(this.currentRequestID, prepareSql, Boolean.valueOf(getExecutionProperty(ExecutionProperties.ANSI_QUOTED_IDENTIFIERS)).booleanValue());
} catch (MetaMatrixComponentException e) {
throw MMSQLException.create(e);
} catch (MetaMatrixProcessingException e) {
Modified: branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/MMStatement.java
===================================================================
--- branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/MMStatement.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/MMStatement.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -839,8 +839,8 @@
// Create a request message
reqMsg.markSubmissionStart();
reqMsg.setExecutionPayload(this.payload);
- reqMsg.setDoubleQuotedVariableAllowed(Boolean.valueOf(
- getExecutionProperty(ExecutionProperties.ALLOW_DBL_QUOTED_VARIABLE))
+ reqMsg.setAnsiQuotedIdentifiers(Boolean.valueOf(
+ getExecutionProperty(ExecutionProperties.ANSI_QUOTED_IDENTIFIERS))
.booleanValue());
String sqlOptions = getExecutionProperty(ExecutionProperties.PROP_SQL_OPTIONS);
if (sqlOptions != null &&
Modified: branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/ResultsMetadataWithProvider.java
===================================================================
--- branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/ResultsMetadataWithProvider.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/ResultsMetadataWithProvider.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -135,7 +135,14 @@
public String getSchemaName(int index) throws SQLException {
verifyProvider();
- return provider.getStringValue(adjustColumn(index), ResultsMetadataConstants.VIRTUAL_DATABASE_NAME);
+ String name = provider.getStringValue(adjustColumn(index), ResultsMetadataConstants.GROUP_NAME);
+ if (name != null) {
+ int dotIndex = name.indexOf('.');
+ if (dotIndex != -1) {
+ return name.substring(0, dotIndex);
+ }
+ }
+ return null;
}
public int getPrecision(int index) throws SQLException {
@@ -150,11 +157,19 @@
public String getTableName(int index) throws SQLException {
verifyProvider();
- return provider.getStringValue(adjustColumn(index), ResultsMetadataConstants.GROUP_NAME);
+ String name = provider.getStringValue(adjustColumn(index), ResultsMetadataConstants.GROUP_NAME);
+ if (name != null) {
+ int dotIndex = name.indexOf('.');
+ if (dotIndex != -1) {
+ return name.substring(dotIndex + 1);
+ }
+ }
+ return name;
}
public String getCatalogName(int index) throws SQLException {
- return null;
+ verifyProvider();
+ return provider.getStringValue(adjustColumn(index), ResultsMetadataConstants.VIRTUAL_DATABASE_NAME);
}
public int getColumnType(int index) throws SQLException {
Modified: branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/api/Connection.java
===================================================================
--- branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/api/Connection.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/api/Connection.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -40,5 +40,7 @@
* @throws SQLException
*/
Admin getAdminAPI() throws SQLException;
+
+ String getVDBVersion() throws SQLException;
}
Modified: branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/api/DatabaseMetaData.java
===================================================================
--- branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/api/DatabaseMetaData.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/api/DatabaseMetaData.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -26,47 +26,12 @@
import java.util.List;
/**
- * The MetaMatrix-specific interface for retrieving metadata from
- * the MetaMatrix server. This interface provides methods in
- * addition to the standard JDBC methods.
+ * The Teiid-specific interface for retrieving metadata.
+ * This interface provides methods in addition to the standard JDBC methods.
*/
public interface DatabaseMetaData extends java.sql.DatabaseMetaData {
/**
- * Gets a description of models available in a catalog.
- *
- * <P>Only model descriptions matching the catalog, schema, and
- * model are returned. They are ordered by MODEL_NAME.
- *
- * <P>Each model description has the following columns:
- * <OL>
- * <LI><B>MODEL_CAT</B> String => model catalog (may be null)
- * <LI><B>MODEL_SCHEM</B> String => model schema (may be null)
- * <LI><B>MODEL_NAME</B> String => model name
- * <LI><B>DESCRIPTION</B> String => explanatory comment on the model (may be null)
- * <LI><B>IS_PHYSICAL</B> Boolean => true if the model is a physical model
- * <LI><B>SUP_WHERE_ALL</B> Boolean => true if queries without a criteria are allowed
- * <LI><B>SUP_DISTINCT</B> Boolean => true if distinct clause can be used
- * <LI><B>SUP_JOIN</B> Boolean => true if joins are supported
- * <LI><B>SUP_OUTER_JOIN</B> Boolean => true if outer joins are supported
- * <LI><B>SUP_ORDER_BY</B> Boolean => true if order by is supported
- * </OL>
- *
- * <P><B>Note:</B> Some databases may not return information for
- * all models.
- *
- * @param catalog a catalog name; "" retrieves those without a
- * catalog; null means drop catalog name from the selection criteria
- * @param schemaPattern a schema name pattern; "" retrieves those
- * without a schema
- * @param modelNamePattern a model name pattern
- * @return <code>ResultSet</code> - each row is a model description
- * @exception SQLException if a database access error occurs
- */
- java.sql.ResultSet getModels(String catalog, String schemaPattern,
- String modelNamePattern) throws SQLException;
-
- /**
* Retrieve the XML schemas associated with an XML document.
* @param documentName A fully-qualified document name
* @return A list of XML schemas (as String). The first in the list
Modified: branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/util/MMJDBCURL.java
===================================================================
--- branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/util/MMJDBCURL.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/util/MMJDBCURL.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -52,7 +52,7 @@
ExecutionProperties.PROP_TXN_AUTO_WRAP,
ExecutionProperties.PROP_PARTIAL_RESULTS_MODE,
ExecutionProperties.RESULT_SET_CACHE_MODE,
- ExecutionProperties.ALLOW_DBL_QUOTED_VARIABLE,
+ ExecutionProperties.ANSI_QUOTED_IDENTIFIERS,
ExecutionProperties.PROP_SQL_OPTIONS,
ExecutionProperties.PROP_FETCH_SIZE,
ExecutionProperties.PROP_XML_FORMAT,
@@ -247,8 +247,8 @@
return properties.getProperty(ExecutionProperties.RESULT_SET_CACHE_MODE);
}
- public String getAllowDoubleQuotedVariables() {
- return properties.getProperty(ExecutionProperties.ALLOW_DBL_QUOTED_VARIABLE);
+ public String getAnsiQuotedIdentifiers() {
+ return properties.getProperty(ExecutionProperties.ANSI_QUOTED_IDENTIFIERS);
}
public String getSQLOptions() {
Modified: branches/JCA/client-jdbc/src/main/java/com/metamatrix/script/io/ResultSetReader.java
===================================================================
--- branches/JCA/client-jdbc/src/main/java/com/metamatrix/script/io/ResultSetReader.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/client-jdbc/src/main/java/com/metamatrix/script/io/ResultSetReader.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -60,6 +60,8 @@
boolean firstTime = true;
int[] columnTypes = null;
+ private int rowCount;
+
public ResultSetReader(ResultSet in) {
this.source = in;
}
@@ -103,6 +105,7 @@
// if you get here then we are ready to read the results.
if (source.next()) {
+ rowCount++;
StringBuffer sb = new StringBuffer();
// Walk through column values in this row
for (int col = 1; col <= columnCount; col++) {
@@ -133,6 +136,10 @@
return null;
}
+ public int getRowCount() {
+ return rowCount;
+ }
+
/**
* Get the first line from the result set. This is the resultset metadata line where
* we gather the column names and their types.
Modified: branches/JCA/client-jdbc/src/test/java/com/metamatrix/jdbc/TestMMConnection.java
===================================================================
--- branches/JCA/client-jdbc/src/test/java/com/metamatrix/jdbc/TestMMConnection.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/client-jdbc/src/test/java/com/metamatrix/jdbc/TestMMConnection.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -22,21 +22,19 @@
package com.metamatrix.jdbc;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.stub;
+import static org.mockito.Mockito.*;
import java.sql.SQLException;
import java.util.Properties;
import junit.framework.TestCase;
+import com.metamatrix.common.api.MMURL;
import com.metamatrix.common.comm.api.ServerConnection;
-import com.metamatrix.common.comm.api.ServerConnectionFactory;
import com.metamatrix.dqp.client.ClientSideDQP;
import com.metamatrix.platform.security.api.LogonResult;
import com.metamatrix.platform.security.api.MetaMatrixSessionID;
import com.metamatrix.platform.security.api.SessionToken;
-import com.metamatrix.platform.util.ProductInfoConstants;
public class TestMMConnection extends TestCase {
@@ -57,8 +55,8 @@
props.setProperty(BaseDataSource.VDB_VERSION, STD_DATABASE_VERSION);
props.setProperty(BaseDataSource.USER_NAME, "metamatrixadmin"); //$NON-NLS-1$
Properties productInfo = new Properties();
- productInfo.setProperty(ProductInfoConstants.VIRTUAL_DB, STD_DATABASE_NAME);
- productInfo.setProperty(ProductInfoConstants.VDB_VERSION, STD_DATABASE_VERSION);
+ productInfo.setProperty(MMURL.JDBC.VDB_NAME, STD_DATABASE_NAME);
+ productInfo.setProperty(MMURL.JDBC.VDB_VERSION, STD_DATABASE_VERSION);
stub(mock.getLogonResult()).toReturn(new LogonResult(new SessionToken(new MetaMatrixSessionID(1), "metamatrixadmin"), productInfo, "fake")); //$NON-NLS-1$
return new MMConnection(mock, props, serverUrl);
}
@@ -68,7 +66,7 @@
}
public void testGetSchema() throws Exception {
- assertEquals("Actual schema is not equql to the expected one. ", STD_DATABASE_NAME, getMMConnection().getSchema()); //$NON-NLS-1$
+ assertEquals("Actual schema is not equql to the expected one. ", STD_DATABASE_NAME, getMMConnection().getVDBName()); //$NON-NLS-1$
}
public void testNativeSql() throws Exception {
Modified: branches/JCA/client-jdbc/src/test/java/com/metamatrix/jdbc/api/AbstractMMQueryTestCase.java
===================================================================
--- branches/JCA/client-jdbc/src/test/java/com/metamatrix/jdbc/api/AbstractMMQueryTestCase.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/client-jdbc/src/test/java/com/metamatrix/jdbc/api/AbstractMMQueryTestCase.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -23,13 +23,18 @@
package com.metamatrix.jdbc.api;
+import java.io.File;
import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.Stack;
import org.teiid.jdbc.TeiidDriver;
+import com.metamatrix.core.util.UnitTestUtil;
+
/**
* This class can be used as the base class to write Query based tests using
* the Teiid Driver for integration testing. Just like the scripted one this one should provide all
@@ -79,5 +84,15 @@
executeAndAssertResults(query, expected);
closeConnection();
}
+
+ protected void checkResult(String testName, ResultSet actualResults, String testsuite) throws Exception {
+ ResultSetMetaData resultMetadata = actualResults.getMetaData();
+
+ String metafilename = UnitTestUtil.getTestDataPath() + File.separator+testsuite+File.separator + "expected" + File.separator+ testName.substring(4) + ".metadata.txt"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ assertResultsSetMetadataEquals(resultMetadata, new File(metafilename));
+
+ String filename = UnitTestUtil.getTestDataPath() + File.separator+testsuite+File.separator + "expected" + File.separator+ testName.substring(4) + ".txt"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ assertResultsSetEquals(actualResults, new File(filename));
+ }
}
\ No newline at end of file
Modified: branches/JCA/client-jdbc/src/test/java/com/metamatrix/jdbc/api/AbstractQueryTest.java
===================================================================
--- branches/JCA/client-jdbc/src/test/java/com/metamatrix/jdbc/api/AbstractQueryTest.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/client-jdbc/src/test/java/com/metamatrix/jdbc/api/AbstractQueryTest.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -23,22 +23,22 @@
package com.metamatrix.jdbc.api;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
import java.io.BufferedReader;
+import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
+import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
+import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
-import java.sql.Connection;
import org.junit.After;
import org.teiid.adminapi.Admin;
@@ -55,6 +55,8 @@
*/
public abstract class AbstractQueryTest {
+ //NOTE not all tests will pass with this set to true, only those with scrollable resultsets
+ static boolean WRITE_ACTUAL = false;
protected Connection internalConnection = null;
protected ResultSet internalResultSet = null;
@@ -112,15 +114,15 @@
if (params != null && params.length > 0) {
if (sql.startsWith("exec ")) { //$NON-NLS-1$
sql = sql.substring(5);
- this.internalStatement = this.internalConnection.prepareCall("{?=call "+sql+"}"); //$NON-NLS-1$ //$NON-NLS-2$
+ this.internalStatement = createPrepareCallStatement(sql);
} else {
- this.internalStatement = this.internalConnection.prepareStatement(sql);
+ this.internalStatement = createPrepareStatement(sql);
}
setParameters((PreparedStatement)this.internalStatement, params);
assignExecutionProperties(this.internalStatement);
result = ((PreparedStatement)this.internalStatement).execute();
} else {
- this.internalStatement = this.internalConnection.createStatement();
+ this.internalStatement = createStatement();
assignExecutionProperties(this.internalStatement);
result = this.internalStatement.execute(sql);
}
@@ -138,6 +140,20 @@
}
return false;
}
+
+ protected Statement createPrepareCallStatement(String sql) throws SQLException{
+ return this.internalConnection.prepareCall("{?=call "+sql+"}");
+ }
+
+ protected Statement createPrepareStatement(String sql) throws SQLException{
+ return this.internalConnection.prepareStatement(sql);
+ }
+
+ protected Statement createStatement() throws SQLException{
+ return this.internalConnection.createStatement();
+ }
+
+
private void setParameters(PreparedStatement stmt, Object[] params) throws SQLException{
for (int i = 0; i < params.length; i++) {
@@ -163,7 +179,7 @@
}
}
- this.internalStatement = this.internalConnection.createStatement();
+ this.internalStatement = createStatement();
assignExecutionProperties(this.internalStatement);
if (timeout != -1) {
@@ -228,7 +244,11 @@
BufferedReader resultReader = null;
BufferedReader expectedReader = null;
try {
- resultReader = new BufferedReader(new ResultSetReader(resultSet, DELIMITER));
+ resultReader = new BufferedReader(new ResultSetReader(resultSet, DELIMITER));
+ writeResultSet(expected, new BufferedReader(new ResultSetReader(resultSet, DELIMITER)));
+ if (resultSet.getType() != ResultSet.TYPE_FORWARD_ONLY) {
+ resultSet.beforeFirst();
+ }
expectedReader = new BufferedReader(new FileReader(expected));
compareResults(resultReader, expectedReader);
} catch (Exception e) {
@@ -243,6 +263,20 @@
}
}
+
+ private void writeResultSet(File expected, BufferedReader resultReader)
+ throws IOException {
+ if (WRITE_ACTUAL) {
+ BufferedWriter bw = new BufferedWriter(new FileWriter(expected));
+ String s = null;
+ while ((s = resultReader.readLine()) != null) {
+ bw.write(s);
+ bw.write("\n"); //$NON-NLS-1$
+ }
+ bw.close();
+ }
+ }
+
public void assertResultsSetEquals(String expected) {
assertResultsSetEquals(this.internalResultSet, expected);
}
@@ -324,6 +358,7 @@
BufferedReader expectedReader = null;
try {
resultReader = new BufferedReader(new MetadataReader(metadata, DELIMITER));
+ writeResultSet(expected, new BufferedReader(new MetadataReader(metadata, DELIMITER)));
expectedReader = new BufferedReader(new FileReader(expected));
compareResults(resultReader, expectedReader);
} catch (Exception e) {
@@ -374,9 +409,13 @@
}
protected void compareResults(BufferedReader resultReader, BufferedReader expectedReader) throws IOException {
- assertEquals(read(expectedReader, true) , read(resultReader, true));
+ assertEquals(read(expectedReader, compareCaseSensitive()) , read(resultReader, compareCaseSensitive()));
}
+ protected boolean compareCaseSensitive() {
+ return true;
+ }
+
public void printResults() {
printResults(this.internalResultSet);
}
Modified: branches/JCA/common-core/pom.xml
===================================================================
--- branches/JCA/common-core/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/common-core/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -4,7 +4,7 @@
<parent>
<artifactId>teiid</artifactId>
<groupId>org.jboss.teiid</groupId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>teiid-common-core</artifactId>
Modified: branches/JCA/common-core/src/main/java/com/metamatrix/common/types/basic/StringToCharacterTransform.java
===================================================================
--- branches/JCA/common-core/src/main/java/com/metamatrix/common/types/basic/StringToCharacterTransform.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/common-core/src/main/java/com/metamatrix/common/types/basic/StringToCharacterTransform.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -42,7 +42,7 @@
return new Character(' ');
}
- return new Character( s.charAt(0) );
+ return Character.valueOf(s.charAt(0));
}
/**
Modified: branches/JCA/common-core/src/main/java/com/metamatrix/core/CoreConstants.java
===================================================================
--- branches/JCA/common-core/src/main/java/com/metamatrix/core/CoreConstants.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/common-core/src/main/java/com/metamatrix/core/CoreConstants.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -50,6 +50,8 @@
interface Trace {
String PROXIES = "proxies"; //$NON-NLS-1$
}
+
+ public static final String SYSTEM_MODEL = "System"; //$NON-NLS-1$
public static final String SYSTEM_VDB = "System.vdb"; //$NON-NLS-1$
Modified: branches/JCA/common-core/src/main/java/com/metamatrix/core/util/ObjectConverterUtil.java
===================================================================
--- branches/JCA/common-core/src/main/java/com/metamatrix/core/util/ObjectConverterUtil.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/common-core/src/main/java/com/metamatrix/core/util/ObjectConverterUtil.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -45,7 +45,7 @@
private static final int DEFAULT_READING_SIZE = 8192;
- protected static byte[] convertToByteArray(final java.sql.Blob data) throws MetaMatrixCoreException {
+ protected static byte[] convertBlobToByteArray(final java.sql.Blob data) throws MetaMatrixCoreException {
try {
// Open a stream to read the BLOB data
InputStream l_blobStream = data.getBinaryStream();
@@ -82,7 +82,9 @@
} else if (data instanceof byte[]) {
return (byte[]) data;
} else if (data instanceof java.sql.Blob) {
- return convertToByteArray((java.sql.Blob) data);
+ return convertBlobToByteArray((java.sql.Blob) data);
+ } else if (data instanceof File) {
+ return convertFileToByteArray((File)data);
}
final Object[] params = new Object[]{data.getClass().getName()};
throw new MetaMatrixCoreException(CorePlugin.Util.getString("ObjectConverterUtil.Object_type_not_supported_for_object_conversion._3",params)); //$NON-NLS-1$
Modified: branches/JCA/common-core/src/main/java/com/metamatrix/core/util/ResourceNameUtil.java
===================================================================
--- branches/JCA/common-core/src/main/java/com/metamatrix/core/util/ResourceNameUtil.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/common-core/src/main/java/com/metamatrix/core/util/ResourceNameUtil.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -74,7 +74,7 @@
public static final String RELATIONAL_NAME = "Relational"; //$NON-NLS-1$
public static final String RELATIONSHIP_NAME = "Relationship"; //$NON-NLS-1$
public static final String SIMPLEDATATYPES_INSTANCE_NAME = "SimpleDatatypes-instance"; //$NON-NLS-1$
- public static final String SYSTEM_NAME = "System"; //$NON-NLS-1$
+ public static final String SYSTEM_NAME = CoreConstants.SYSTEM_MODEL;
public static final String SYSTEMADMIN_NAME = CoreConstants.SYSTEM_ADMIN_MODEL_NAME;
public static final String SYSTEMADMINPHYSICAL_NAME = CoreConstants.SYSTEM_ADMIN_PHYSICAL_MODEL_NAME;
public static final String SYSTEMPHYSICAL_NAME = CoreConstants.SYSTEM_PHYSICAL_MODEL_NAME;
Modified: branches/JCA/common-core/src/main/java/com/metamatrix/core/vdb/VDBStatus.java
===================================================================
--- branches/JCA/common-core/src/main/java/com/metamatrix/core/vdb/VDBStatus.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/common-core/src/main/java/com/metamatrix/core/vdb/VDBStatus.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -28,7 +28,7 @@
public static final short INACTIVE = 2;
public static final short ACTIVE = 3;
public static final short DELETED = 4;
- public static final short ACTIVE_DEFAULT = 3;
+ public static final short ACTIVE_DEFAULT = 5;
final static String[] VDB_STATUS_NAMES = {
"Incomplete", //$NON-NLS-1$
Modified: branches/JCA/common-internal/pom.xml
===================================================================
--- branches/JCA/common-internal/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/common-internal/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -5,7 +5,7 @@
<parent>
<artifactId>teiid</artifactId>
<groupId>org.jboss.teiid</groupId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>teiid-common-internal</artifactId>
Modified: branches/JCA/common-internal/src/main/java/com/metamatrix/common/config/util/ConfigObjectsNotResolvableException.java
===================================================================
--- branches/JCA/common-internal/src/main/java/com/metamatrix/common/config/util/ConfigObjectsNotResolvableException.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/common-internal/src/main/java/com/metamatrix/common/config/util/ConfigObjectsNotResolvableException.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -22,10 +22,6 @@
package com.metamatrix.common.config.util;
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-
import com.metamatrix.api.exception.MetaMatrixException;
public class ConfigObjectsNotResolvableException extends MetaMatrixException{
Modified: branches/JCA/common-internal/src/main/java/com/metamatrix/common/object/PropertyType.java
===================================================================
--- branches/JCA/common-internal/src/main/java/com/metamatrix/common/object/PropertyType.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/common-internal/src/main/java/com/metamatrix/common/object/PropertyType.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -22,6 +22,7 @@
package com.metamatrix.common.object;
+import java.io.File;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
@@ -73,7 +74,7 @@
public static final PropertyType SET = new PropertyType(113, SET_NAME, java.util.Set.class.getName() );
public static final PropertyType URL = new PropertyType(114, URL_NAME, java.net.URL.class.getName() );
public static final PropertyType HOSTNAME = new PropertyType(115, HOSTNAME_NAME, java.net.InetAddress.class.getName() );
- public static final PropertyType FILE = new PropertyType(116, FILE_NAME, com.metamatrix.common.tree.directory.DirectoryEntry.class.getName() );
+ public static final PropertyType FILE = new PropertyType(116, FILE_NAME, File.class.getName() );
public static final PropertyType OBJECT_ID = new PropertyType(117, OBJECT_ID_NAME, com.metamatrix.core.id.ObjectID.class.getName() );
public static final PropertyType PASSWORD = new PropertyType(119, PASSWORD_NAME, PASSWORD_CLASS.getName() );
public static final PropertyType PROPERTIED_OBJECT = new PropertyType(120, PROPERTIED_OBJECT_NAME, com.metamatrix.common.object.PropertiedObject.class.getName() );
Modified: branches/JCA/common-internal/src/main/java/com/metamatrix/common/object/StandardPropertyTypeValidator.java
===================================================================
--- branches/JCA/common-internal/src/main/java/com/metamatrix/common/object/StandardPropertyTypeValidator.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/common-internal/src/main/java/com/metamatrix/common/object/StandardPropertyTypeValidator.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -22,6 +22,7 @@
package com.metamatrix.common.object;
+import java.io.File;
import java.io.Serializable;
import java.net.InetAddress;
import java.net.MalformedURLException;
@@ -31,7 +32,6 @@
import java.util.HashMap;
import java.util.Map;
-import com.metamatrix.common.tree.directory.DirectoryEntry;
import com.metamatrix.core.id.ObjectID;
public final class StandardPropertyTypeValidator implements Serializable {
@@ -331,7 +331,9 @@
}
class DirectoryEntryValidator implements PropertyTypeValidator, Serializable {
public boolean isValidValue(Object value ) {
- if ( value instanceof DirectoryEntry ) {
+ if (value instanceof String) {
+ return true;
+ } else if ( value instanceof File ) {
return true;
}else if(value instanceof Object[]) {
return StandardPropertyTypeValidator.isValidValue((Object[])value, this);
Deleted: branches/JCA/common-internal/src/main/java/com/metamatrix/common/vdb/api/SystemVdbUtility.java
===================================================================
--- branches/JCA/common-internal/src/main/java/com/metamatrix/common/vdb/api/SystemVdbUtility.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/common-internal/src/main/java/com/metamatrix/common/vdb/api/SystemVdbUtility.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,60 +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 com.metamatrix.common.vdb.api;
-
-import com.metamatrix.core.util.ResourceNameUtil;
-
-public class SystemVdbUtility {
-
- public static final String VDB_NAME = ResourceNameUtil.SYSTEM_NAME;;
- public static final String VIRTUAL_MODEL_NAME = ResourceNameUtil.SYSTEM_NAME;
- public static final String PHYSICAL_MODEL_NAME = ResourceNameUtil.SYSTEMPHYSICAL_NAME;
- public static final String ADMIN_PHYSICAL_MODEL_NAME = ResourceNameUtil.SYSTEMADMINPHYSICAL_NAME;
-
- public final static String[] SYSTEM_MODEL_NAMES = {
- ResourceNameUtil.SYSTEM_NAME,
- ResourceNameUtil.SYSTEMPHYSICAL_NAME,
- ResourceNameUtil.SYSTEMADMIN_NAME,
- ResourceNameUtil.SYSTEMADMINPHYSICAL_NAME,
- ResourceNameUtil.SYSTEMSCHEMA_NAME,
- ResourceNameUtil.SYSTEMODBCMODEL,
- ResourceNameUtil.DATASERVICESYSTEMMODEL_NAME,
- ResourceNameUtil.WSDL1_1_NAME, ResourceNameUtil.WSDLSOAP_NAME,
- ResourceNameUtil.JDBCSYSTEM_NAME
- };
-
-
- /**
- * Return true if the specified model name matches the name of any system
- * model of TABLE_TYPES.SYSTEM_TYPE (match ignores case)
- */
- public final static boolean isSystemModelWithSystemTableType(String modelName) {
- for(int i=0; i < SYSTEM_MODEL_NAMES.length; i++) {
- String matchName = SYSTEM_MODEL_NAMES[i];
- if(matchName.equalsIgnoreCase(modelName)) {
- return true;
- }
- }
- return false;
- }
-}
Modified: branches/JCA/common-internal/src/main/java/com/metamatrix/common/vdb/api/VDBArchive.java
===================================================================
--- branches/JCA/common-internal/src/main/java/com/metamatrix/common/vdb/api/VDBArchive.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/common-internal/src/main/java/com/metamatrix/common/vdb/api/VDBArchive.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -44,6 +44,7 @@
import com.metamatrix.api.exception.MetaMatrixComponentException;
import com.metamatrix.common.protocol.URLHelper;
import com.metamatrix.common.util.PropertiesUtils;
+import com.metamatrix.core.CoreConstants;
import com.metamatrix.core.util.FileUtil;
import com.metamatrix.core.util.FileUtils;
import com.metamatrix.core.util.ObjectConverterUtil;
@@ -56,6 +57,7 @@
import com.metamatrix.vdb.materialization.ScriptType;
import com.metamatrix.vdb.runtime.BasicModelInfo;
import com.metamatrix.vdb.runtime.BasicVDBDefn;
+import com.metamatrix.vdb.runtime.VDBKey;
/**
* Latest incarnation of the VDBContext, specifically for weeding out
@@ -87,6 +89,12 @@
private Set<String> pathsInArchive = new HashSet<String>();
private boolean open;
+
+ private VDBKey key;
+
+ public final static boolean isSystemModelWithSystemTableType(String modelName) {
+ return CoreConstants.SYSTEM_MODEL.equalsIgnoreCase(modelName);
+ }
public static VDBArchive loadVDB(URL vdbURL, File deployDirectory) throws IOException {
boolean loadedFromDef = false;
@@ -365,7 +373,7 @@
* @param vdbDef
* @throws IOException
*/
- public void updateConfigurationDef(BasicVDBDefn vdbDef) throws IOException {
+ public synchronized void updateConfigurationDef(BasicVDBDefn vdbDef) throws IOException {
if (vdbDef == null) {
return;
}
@@ -383,6 +391,7 @@
// update the local copies.
this.def = vdbDef;
appendManifest(this.def);
+ this.key = null;
}
/**
@@ -467,13 +476,6 @@
return this.def.getName();
}
- public void setName(String name) {
- checkOpen();
- if (this.def != null) {
- this.def.setName(name);
- }
- }
-
public String getVersion() {
checkOpen();
return this.def.getVersion();
@@ -564,5 +566,29 @@
}
return this.def.getModel(name);
}
+
+ /**
+ * checks the validity of the VDB
+ * @return true if valid; false otherwise.
+ */
+ public boolean isValid() {
+ if (getVDBValidityErrors() != null) {
+ return false;
+ }
+
+ Collection models = getConfigurationDef().getModels();
+ if (models != null && models.isEmpty()) {
+ return false;
+ }
+
+ return true;
+ }
+
+ public synchronized VDBKey getVDBKey() {
+ if (key == null) {
+ key = new VDBKey(getName(), getVersion());
+ }
+ return key;
+ }
}
Deleted: branches/JCA/common-internal/src/main/java/com/metamatrix/common/xml/XPathUtil.java
===================================================================
--- branches/JCA/common-internal/src/main/java/com/metamatrix/common/xml/XPathUtil.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/common-internal/src/main/java/com/metamatrix/common/xml/XPathUtil.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,127 +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 com.metamatrix.common.xml;
-
-import java.util.*;
-import org.jdom.*;
-import com.metamatrix.core.util.Assertion;
-
-public class XPathUtil {
-
- /** Delimiter for XPath */
- public static final String STEP_DELIMITER = "/"; //$NON-NLS-1$
- public static final char STEP_DELIMITER_CHAR = STEP_DELIMITER.charAt(0);
-
- private static final String DOCUMENT_ROOT = "/doc/"; //$NON-NLS-1$
-// private static final char ALL = '*';
-
- public static class Literal {
- public static final char APOSTROPHE = '\'';
- public static final char QUOTE = '"';
- }
-
- public static class ExpressionToken {
- public static final char ATTRIBUTE_PREFIX = '@';
- public static final char INDEX_OPEN = '[';
- public static final char INDEX_CLOSE = ']';
- public static final char PARAMETERS_OPEN = '(';
- public static final char PARAMETERS_CLOSE = ')';
- public static final char SELF = '.';
- public static final String PARENT = ".."; //$NON-NLS-1$
- public static final String AXIS_SUFFIX = "::"; //$NON-NLS-1$
- }
-
- public static class Operator {
- public static final char OR = '|';
- public static final char ADD = '+';
- public static final char MINUS = '-';
- public static final char EQUAL = '=';
- public static final char LESS_THAN = '<';
- public static final char MULTIPLY = '*';
- public static final char GREATER_THAN = '>';
- public static final String NOT_EQUAL = "!="; //$NON-NLS-1$
- public static final String LESS_THAN_EQUAL = "<="; //$NON-NLS-1$
- public static final String GREATER_THAN_EQUAL = ">="; //$NON-NLS-1$
- public static final String AND_NAME = "and"; //$NON-NLS-1$
- public static final String OR_NAME = "or"; //$NON-NLS-1$
- public static final String MODULUS_NAME = "mod"; //$NON-NLS-1$
- public static final String DIVIDE_NAME = "div"; //$NON-NLS-1$
- public static final String DECENDENT_OR_SELF = "//"; //$NON-NLS-1$
- }
-
- /**
- * Get the absolute path using the abbreviated format of XPath 1.0
- * for the specified element. For example, the following XPath:
- * <p><code>/doc/chapter[5]/section[2]</code></p>
- * specifies the second section of the fifth chapter of the document.
- * @return the XPath of the specified element.
- * @see <a href="http://www.w3c.org/TR/xpath#path-abbrev">XPath</a>
- */
- public static String getAbsolutePath( Element tag ) {
- Assertion.isNotNull(tag,"The JDOM Element reference may not be null"); //$NON-NLS-1$
- return addToXPath( tag, new StringBuffer(DOCUMENT_ROOT) ).toString();
- }
-
- /**
- * Get the absolute path using the abbreviated format of XPath 1.0
- * for the specified attribute. For example, the following XPath:
- * <p><code>/doc/chapter[5]/section[2]/@title</code></p>
- * specifies the title attribute of the second section of the fifth chapter of the document.
- * @return the XPath of the specified element.
- * @see <a href="http://www.w3c.org/TR/xpath#path-abbrev">XPath</a>
- */
- public static String getAbsolutePath( Attribute attribute ) {
- Assertion.isNotNull(attribute,"The JDOM Attribute reference may not be null"); //$NON-NLS-1$
- Element tag = attribute.getParent();
- StringBuffer sb = new StringBuffer(DOCUMENT_ROOT);
- addToXPath( tag, sb );
- sb.append(STEP_DELIMITER_CHAR);
- sb.append(ExpressionToken.ATTRIBUTE_PREFIX);
- sb.append(attribute.getName());
- sb.append(Operator.EQUAL);
- sb.append(Literal.QUOTE);
- sb.append(attribute.getValue());
- sb.append(Literal.QUOTE);
- return sb.toString();
- }
-
- protected static StringBuffer addToXPath(Element tag, StringBuffer sb) {
- StringBuffer result = sb;
- // Add the parent's name first ...
- // The parent could be an Element or Document
- Parent parent = tag.getParent();
- int index = 1;
- if ( parent != null && parent instanceof Element ) {
- List parentsChildren = ((Element)parent).getChildren();
- index = parentsChildren.indexOf(tag) + 1;
- result = addToXPath((Element)parent,result);
- result.append(STEP_DELIMITER_CHAR);
- }
- result.append(tag.getName());
- result.append(ExpressionToken.INDEX_OPEN);
- result.append(index);
- result.append(ExpressionToken.INDEX_CLOSE);
- return result;
- }
-
-}
Modified: branches/JCA/common-internal/src/main/java/com/metamatrix/metadata/runtime/api/VirtualDatabaseException.java
===================================================================
--- branches/JCA/common-internal/src/main/java/com/metamatrix/metadata/runtime/api/VirtualDatabaseException.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/common-internal/src/main/java/com/metamatrix/metadata/runtime/api/VirtualDatabaseException.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -22,11 +22,11 @@
package com.metamatrix.metadata.runtime.api;
-import com.metamatrix.vdb.edit.loader.VdbProcessingException;
+import com.metamatrix.api.exception.MetaMatrixProcessingException;
/**
* The base exception from which all Runtime Metadata Exceptions extend.
*/
-public class VirtualDatabaseException extends VdbProcessingException {
+public class VirtualDatabaseException extends MetaMatrixProcessingException {
public static final String NO_MODELS = "1"; //$NON-NLS-1$
public static final String MODEL_NON_DEPLOYABLE_STATE = "2"; //$NON-NLS-1$
Deleted: branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/AuthorizationAdminAPI.java
===================================================================
--- branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/AuthorizationAdminAPI.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/AuthorizationAdminAPI.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,189 +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 com.metamatrix.platform.admin.api;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import com.metamatrix.admin.api.exception.security.InvalidSessionException;
-import com.metamatrix.api.exception.MetaMatrixComponentException;
-import com.metamatrix.api.exception.security.AuthorizationException;
-import com.metamatrix.api.exception.security.AuthorizationMgmtException;
-import com.metamatrix.platform.security.api.AuthorizationPolicy;
-import com.metamatrix.platform.security.api.AuthorizationPolicyID;
-import com.metamatrix.platform.security.api.AuthorizationRealm;
-import com.metamatrix.platform.security.api.MetaMatrixPrincipalName;
-
-public interface AuthorizationAdminAPI extends SubSystemAdminAPI {
-
- /**
- * Returns a <code>AuthorizationObjectEditor</code> to perform editing operations
- * on a entitlement type object. The editing process will create actions for
- * each specific type of editing operation. Those actions are what need to be
- * submitted to the <code>AuthorizationService</code> for actual updates to occur.
- * @return AuthorizationObjectEditor
- */
- AuthorizationEditor createEditor()
- throws InvalidSessionException, AuthorizationException, MetaMatrixComponentException;
-
- /**
- * Obtain the names of all of the roles and their descriptions known to the system.
- * @return a Map of role descriptions key by the role's name.
- * @throws InvalidSessionException if the <code>SessionToken</code> is not valid or is expired
- * @throws AuthorizationException if the caller is unable to perform this operation
- * @throws MetaMatrixComponentException if this service has trouble communicating.
- */
- Map getRoleDescriptions()
- throws AuthorizationException, InvalidSessionException, MetaMatrixComponentException;
-
- /**
- * Returns a collection <code>MetaMatrixPrincipalName</code> objects containing the name
- * of the principal along with its type which belong to the given role.
- * {@link com.metamatrix.security.api.MetaMatrixPrincipalName}
- * @param roleName String name of MetaMatrix role for which principals
- * are sought
- * @throws InvalidSessionException if the administrative session is invalid
- * @throws AuthorizationException if admninistrator does not have the authority to perform the requested operation.
- * @throws MetaMatrixComponentException if this service has trouble communicating.
- */
- Collection getPrincipalsForRole(String roleName)
- throws AuthorizationException, InvalidSessionException, MetaMatrixComponentException;
-
- /**
- * Returns a Collection of String names of MetaMatrix roles to which the
- * given principal is assigned.
- * @param principal <code>MetaMatrixPrincipalName</code> for which roles are sought
- * @param explicitOnly If true, only return roles assigned directly to given principal.
- * If false, return all roles directly assigned and inherited.
- * @return The <code>Collection</code> of role names the principal is assigned.
- * @throws InvalidSessionException if the administrative session is invalid
- * @throws AuthorizationException if admninistrator does not have the authority to perform the requested operation.
- * @throws MetaMatrixComponentException if this service has trouble communicating.
- */
- Collection getRoleNamesForPrincipal(MetaMatrixPrincipalName principal)
- throws AuthorizationException, InvalidSessionException, MetaMatrixComponentException;
-
- /**
- * Add the given set of principals to the given role.
- * @param principals Set of <code>MetaMatrixPrincipalName</code>s to which to add.
- * @param roleName The name of the role to which to add the principals.
- * @throws InvalidSessionException if the administrative session is invalid
- * @throws AuthorizationException if admninistrator does not have the authority to perform the requested operation.
- * @throws MetaMatrixComponentException if this service has trouble communicating.
- */
- void addPrincipalsToRole(Set principals, String roleName)
- throws AuthorizationException, InvalidSessionException, MetaMatrixComponentException;
-
- /**
- * Returns true if the given username matches the current membership security.membership.admin.username
- * from the current config
- * @param username the username to compare to the current super user
- * @return
- * @throws ServiceException for generic service errors
- * @throws MetaMatrixComponentException if this service has trouble communicating.
- *
- */
- boolean isSuperUser(String username) throws MetaMatrixComponentException;
-
-
- /**
- * Remove the given set of principals from the given role.
- * @param principals Set of <code>MetaMatrixPrincipalName</code>s to remove.
- * @param roleName The name of the role from which to remove the principals.
- * @throws InvalidSessionException if the administrative session is invalid
- * @throws AuthorizationException if admninistrator does not have the authority to perform the requested operation.
- * @throws MetaMatrixComponentException if this service has trouble communicating.
- */
- void removePrincipalsFromRole(Set principals, String roleName)
- throws AuthorizationException, InvalidSessionException, MetaMatrixComponentException;
-
- /**
- * Locate the IDs of all of the policies that are accessible by the caller.
- * @param caller the session token of the principal that is attempting to access the policies.
- * @return the set of all policy IDs
- * @throws InvalidSessionException if the <code>SessionToken</code> is not valid or is expired
- * @throws AuthorizationException if the caller is unable to perform this operation
- * @throws AuthorizationMgmtException if this service has trouble connecting to services it uses.
- * @throws MetaMatrixComponentException if this service has trouble communicating.
- */
- Collection findAllPolicyIDs()
- throws AuthorizationException, InvalidSessionException, MetaMatrixComponentException;
-
- /**
- * Return whether there is an existing policy with the specified ID.
- * @param id the ID that is to be checked
- * @return true if a policy with the specified ID exists
- * @throws InvalidSessionException if the <code>SessionToken</code> is not valid or is expired
- * @throws AuthorizationException if the caller is unable to perform this operation
- * @throws MetaMatrixComponentException if this service has trouble communicating.
- */
- Boolean containsPolicy(AuthorizationPolicyID policyID)
- throws AuthorizationException, InvalidSessionException, MetaMatrixComponentException;
-
- /**
- * Locate the policy that has the specified ID. Any ID that is invalid is simply
- * ignored.
- * @param policyID the ID of the policy to be obtained
- * @return the policy that correspond to the specified ID
- * @throws InvalidSessionException if the <code>SessionToken</code> is not valid or is expired
- * @throws AuthorizationException if the caller is unable to perform this operation
- * @throws MetaMatrixComponentException if this service has trouble communicating.
- */
- AuthorizationPolicy getPolicy(AuthorizationPolicyID policyID)
- throws AuthorizationException, AuthorizationMgmtException, InvalidSessionException, MetaMatrixComponentException;
-
- /**
- * Execute as a single transaction with the specified actions, and return
- * the set of IDs for the objects that were affected/modified by the action.
- * @param actions the ordered list of actions that are to be performed
- * on metamodel within the repository.
- * @return The set of objects that were affected by this transaction.
- * @throws InvalidSessionException if the <code>SessionToken</code> is not valid or has expired.
- * @throws AuthorizationException if the caller is unable to perform this operation.
- * @throws MetaMatrixComponentException if this service has trouble communicating.
- */
- Set executeTransaction(List actions)
- throws AuthorizationException, AuthorizationMgmtException, InvalidSessionException, MetaMatrixComponentException;
-
- /**
- * Returns a <code>Collection</code> of <code>AuthorizationPolicyID</code>s
- * in the given <code>AuthorizationRealm</code>.
- * <br>This method will only work for Data Access Authorizations because the realm
- * is encoded in a Data Access policy name.
- * <strong>NOTE:</strong> It is the responsibility of the caller to determine
- * which of the <code>AuthorizationPolicy</code>'s <code>AuthorizationPermission</code>s
- * are actually in the given <code>AuthorizationRealm</code>. The <code>AuthorizationPolicy</code>
- * may span <code>AuthorizationRealm</code>s.
- * @param realm The realm in which to search for <code>AuthorizationPermission</code>s.
- * @return The collection of <code>AuthorizationPolicyID</code>s that have permissions
- * in the given realm - possibly empty but never null.
- * @throws AuthorizationException if admninistrator does not have the authority to preform the action.
- * @throws AuthorizationMgmtException if an error occurs in the Authorization store.
- * @throws MetaMatrixComponentException if this service has trouble communicating.
- */
- Collection getPolicyIDsInRealm(AuthorizationRealm realm)
- throws AuthorizationException, AuthorizationMgmtException, InvalidSessionException, MetaMatrixComponentException;
-}
-
Deleted: branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/ConfigurationAdminAPI.java
===================================================================
--- branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/ConfigurationAdminAPI.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/ConfigurationAdminAPI.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,300 +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 com.metamatrix.platform.admin.api;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Set;
-
-import com.metamatrix.admin.api.exception.security.InvalidSessionException;
-import com.metamatrix.api.exception.MetaMatrixComponentException;
-import com.metamatrix.api.exception.security.AuthorizationException;
-import com.metamatrix.common.actions.ActionDefinition;
-import com.metamatrix.common.actions.ModificationException;
-import com.metamatrix.common.config.api.ComponentDefn;
-import com.metamatrix.common.config.api.ComponentDefnID;
-import com.metamatrix.common.config.api.ComponentType;
-import com.metamatrix.common.config.api.ComponentTypeID;
-import com.metamatrix.common.config.api.Configuration;
-import com.metamatrix.common.config.api.ConfigurationID;
-import com.metamatrix.common.config.api.ConfigurationModelContainer;
-import com.metamatrix.common.config.api.ConfigurationObjectEditor;
-import com.metamatrix.common.config.api.Host;
-import com.metamatrix.common.config.api.HostID;
-import com.metamatrix.common.config.api.exceptions.ConfigurationException;
-
-
-public interface ConfigurationAdminAPI extends SubSystemAdminAPI {
-
- /**
- * Returns a <code>ConfigurationObjectEditor</code> to perform editing operations
- * on a configuration type object. The editing process will create actions for
- * each specific type of editing operation. Those actions are what need to be
- * submitted to the <code>ConfigurationService</code> for actual updates to occur.
- * @return ConfigurationObjectEditor
- */
- ConfigurationObjectEditor createEditor()
- throws ConfigurationException, InvalidSessionException, AuthorizationException, MetaMatrixComponentException;
-
- /**
- * Returns the ID of the next startup <code>Configuration</code>, which should reflect
- * the desired runtime state of the system.
- * @return ID of next startup configuration
- * @throws ConfigurationException if an error occurred within or during communication with the Configuration Service.
- * @throws InvalidSessionException if there is not a valid administrative session
- * @throws AuthorizationException if the administrator does not have privileges to use this method
- * @throws MetaMatrixComponentException if a general remote system problem occurred
- */
- ConfigurationID getNextStartupConfigurationID()
- throws ConfigurationException, InvalidSessionException, AuthorizationException, MetaMatrixComponentException;
-
- /**
- * Returns the current deployed <code>Configuration</code>. Note, this configuration
- * may not match the actual configuration the system is currently executing under due
- * to administrative task that can be done to tune the system. Those administrative
- * task <b>do not</b> change the actual <code>Configuration</code> stored in the
- * <code>ConfigurationService</code>.
- * @return Configuration that is currently in use
- * @throws ConfigurationException if an error occurred within or during communication with the Configuration Service.
- */
- Configuration getCurrentConfiguration()
- throws ConfigurationException, InvalidSessionException, AuthorizationException, MetaMatrixComponentException;
-
- /**
- * Returns the current deployed <code>Configuration</code>. Note, this configuration
- * may not match the actual configuration the system is currently executing under due
- * to administrative task that can be done to tune the system. Those administrative
- * task <b>do not</b> change the actual <code>Configuration</code> stored in the
- * <code>ConfigurationService</code>.
- * @return Configuration that is currently in use
- * @throws ConfigurationException if an error occurred within or during communication with the Configuration Service.
- */
- Configuration getNextStartupConfiguration()
- throws ConfigurationException, InvalidSessionException, AuthorizationException, MetaMatrixComponentException;
-
- /**
- * Returns the current <code>ConfigurationModelContainer</code>. Note, this configuration
- * may not match the actual configuration the system is currently executing under due
- * to administrative task that can be done to tune the system. Those administrative
- * task <b>do not</b> change the actual <code>Configuration</code> stored in the
- * <code>ConfigurationService</code>.
- * @param configName is the name of the Configuration model to obtain
- * @return Configuration that is currently in use
- * @throws ConfigurationException if an error occurred within or during communication with the Configuration Service.
- */
- ConfigurationModelContainer getConfigurationModel(String configName)
- throws ConfigurationException, InvalidSessionException, AuthorizationException, MetaMatrixComponentException;
-
-
-
- /**
- * <p>Returns a Collection containing the Configuration object for the specified
- * ConfigurationID id, and also any dependant objects needed to fully
- * define this configuration, such as Host objects, ComponentType
- * objects, and ComponentTypeDefn objects.</p>
- *
- * <p>A Configuration instance contains all of the
- * <code>ComponentDefn</code> objects that "belong" to just that
- * Configuration: VM component definitions, service
- * component definitions, product service configurations, and
- * deployed components. Objects such as Host objects,
- * ComponentType objects, and ComponentTypeDefn objects describe
- * ComponentDefns, but are not contained by a Configuration. Therefore,
- * they are included in this Collection for convenience.</p>
- *
- * <p>The Collection will contain instances of
- * {@link com.metamatrix.common.namedobject.BaseObject}.
- * Specifically, this Map should contain the objects for:
- * one configuration object, one or more Host objects, one or more
- * ComponentType objects, and one or more ComponentTypeDefn objects.</p>
- *
- * <p>This method is intended to facilitate exporting a configuration
- * to XML.</p>
- *
- * <p>Here is what the Collection would contain at runtime:
- * <pre>
- * Configuration instance
- * Host instance1
- * Host instance2
- * ...
- * ComponentType instance1
- * ComponentType instance2
- * ...
- * ComponentTypeDefn instance1
- * ComponentTypeDefn instance2
- * </pre></p>
- *
- * @param configID ID Of a Configuration
- * @return Collection of BaseObject instances
- * @throws ConfigurationException if an error occurred within or during communication with the Configuration Service.
- * @throws InvalidSessionException if there is not a valid administrative session
- * @throws AuthorizationException if the administrator does not have privileges to use this method
- * @throws MetaMatrixComponentException if a general remote system problem occurred
- */
- Collection getConfigurationAndDependents(ConfigurationID configID)
- throws ConfigurationException, InvalidSessionException, AuthorizationException, MetaMatrixComponentException;
-
- /**
- * Returns the component type definitions for the specified <code>ComponentTypeID</code>.
- * This does not return the dependent definitions for service type components.
- * @param componentTypeID is a ComponentTypeID
- * @return Collection of ComponentTypeDefns
- *
- * @see getDependentComponentTypeDefinitions(ComponentTypeID)
- */
- Collection getComponentTypeDefinitions(ComponentTypeID componentTypeID)
- throws ConfigurationException, InvalidSessionException, AuthorizationException, MetaMatrixComponentException;
-
-
- /**
- * Returns the all component type definitions for the specified <code>ComponentTypeID</code>.
- * This includes the dependent definitions for service type components.
- * @param componentTypeID is a ComponentTypeID
- * @return Collection of ComponentTypeDefns
- *
- * @see getDependentComponentTypeDefinitions(ComponentTypeID)
- */
- Collection getAllComponentTypeDefinitions(ComponentTypeID componentTypeID)
- throws ConfigurationException, InvalidSessionException, AuthorizationException, MetaMatrixComponentException;
-
- /**
- * Returns a <code>ComponentType</code> for the specified <code>ComponentTypeID</code>
- * @param id is for the requested component type.
- * @return ComponentType based on the id
- * @throws ConfigurationException if an error occurred within or during communication with the Configuration Service.
- */
- ComponentType getComponentType(ComponentTypeID id)
- throws ConfigurationException, InvalidSessionException, AuthorizationException, MetaMatrixComponentException;
-
- /**
- * Returns a <code>List</code> of type <code>ComponentType</code> that represents
- * all the ComponentTypes defined. Note that this will include objects of
- * type ProductType (a subclass of ComponentType).
- * @param includeDeprecated true if class names that have been deprecated should be
- * included in the returned list, or false if only non-deprecated constants should be returned.
- * @return Collection of type <code>ComponentType</code>
- * @throws ConfigurationException if an error occurred within or during communication with the Configuration Service.
- * @see ComponentType
- * @see #getAllProductTypes
- */
- Collection getAllComponentTypes(boolean includeDeprecated)
- throws ConfigurationException, InvalidSessionException, AuthorizationException, MetaMatrixComponentException;
-
- /**
- * Returns a <code>Host</code> for the specified <code>HostID</code>.
- * </br>
- * @return Host
- * @throws ConfigurationException if an error occurred within or during communication with the Configuration Service.
- */
- Host getHost(HostID hostID)
- throws ConfigurationException, InvalidSessionException, AuthorizationException, MetaMatrixComponentException;
-
- /**
- * Returns a Collection of {@link com.metamatrix.common.config.api.ResourceDescriptor ResourceDescriptor}
- * for all internal resources defined to the system. The internal resources are not managed with
- * the other configuration related information. They are not dictated based on which configuration
- * they will operate (i.e., next startup or operational);
- * @throws AuthorizationException if caller is not authorized to perform this method.
- * @throws InvalidSessionException if the <code>callerSessionID</code> is not valid or is expired.
- * @throws MetaMatrixComponentException if an error occurred in communicating with a component.
- */
- Collection getResources()
- throws ConfigurationException, InvalidSessionException, AuthorizationException, MetaMatrixComponentException;
-
- /**
- * Save the resource changes based on each {@link com.metamatrix.common.config.api.ResourceDescriptor ResourceDescriptor}
- * in the collection.
- * @param resourceDescriptors for the resources to be changed *
- * @throws AuthorizationException if caller is not authorized to perform this method.
- * @throws InvalidSessionException if the <code>callerSessionID</code> is not valid or is expired.
- * @throws MetaMatrixComponentException if an error occurred in communicating with a component.
- */
- void saveResources(Collection resourceDescriptors)
- throws ConfigurationException, InvalidSessionException, AuthorizationException, MetaMatrixComponentException;
-
-
-
-
- /**
- * Returns a <code>ComponentDefn</code> for the specified <code>ComponentDefnID</code>.
- * </br>
- * @return ComponentDefn
- * @throws ConfigurationException if an error occurred within or during communication with the Configuration Service.
- */
- ComponentDefn getComponentDefn(ConfigurationID configurationID, ComponentDefnID componentDefnID)
- throws ConfigurationException, InvalidSessionException, AuthorizationException, MetaMatrixComponentException;
-
-
-
- // --------------------------------------------------------------
- // A C T I O N M E T H O D S
- // --------------------------------------------------------------
-
- /**
- * Execute as a single transaction the specified action, and optionally
- * return the set of objects or object IDs that were affected/modified by the action.
- * @param action the definition of the action to be performed on data within
- * the repository.
- * @return the set of objects that were affected by this transaction.
- * @throws ModificationException if the target of the action is invalid, or
- * if the target object is not a supported class of targets.
- * @throws IllegalArgumentException if the action is null
- * or if the result specification is invalid
- * @throws ConfigurationException if an error occurred within or during
- * communication with the Metadata Service.
- */
- Set executeTransaction(ActionDefinition action)
- throws ModificationException, ConfigurationException, InvalidSessionException, AuthorizationException, MetaMatrixComponentException;
-
- /**
- * Execute a list of actions, and optionally
- * return the set of objects or object IDs that were affected/modified by the action.
- * @param actions the ordered list of actions that are to be performed on data within
- * the repository.
- * @return the set of objects that were affected by this transaction.
- * @throws ModificationException if the target of any of the actions is invalid, or
- * if the target object is not a supported class of targets.
- * @throws IllegalArgumentException if the action is null
- * or if the result specification is invalid
- * @throws ConfigurationException if an error occurred within or during
- * communication with the Metadata Service.
- */
- Set executeTransaction(List actions)
- throws ModificationException, ConfigurationException, InvalidSessionException, AuthorizationException, MetaMatrixComponentException;
-
- /**
- * Check whether the encrypted properties for the specified ComponentDefns can be decrypted.
- * @param defns List<ComponentDefn>
- * @return List<Boolean> in the same order as the paramater <code>defns</code>.
- * For each, true if the properties could be decrypted for that defn.
- * @throws ConfigurationException
- * @throws InvalidSessionException
- * @throws AuthorizationException
- * @throws MetaMatrixComponentException
- * @since 4.3
- */
- List checkPropertiesDecryptable(List defns)
- throws ConfigurationException, InvalidSessionException, AuthorizationException, MetaMatrixComponentException;
-
-}
-
Deleted: branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/ExtensionSourceAdminAPI.java
===================================================================
--- branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/ExtensionSourceAdminAPI.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/ExtensionSourceAdminAPI.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,243 +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 com.metamatrix.platform.admin.api;
-
-import java.util.Collection;
-import java.util.List;
-
-import com.metamatrix.admin.api.exception.security.InvalidSessionException;
-import com.metamatrix.api.exception.MetaMatrixComponentException;
-import com.metamatrix.api.exception.security.AuthorizationException;
-import com.metamatrix.common.extensionmodule.ExtensionModuleDescriptor;
-import com.metamatrix.common.extensionmodule.exception.DuplicateExtensionModuleException;
-import com.metamatrix.common.extensionmodule.exception.ExtensionModuleNotFoundException;
-import com.metamatrix.common.extensionmodule.exception.ExtensionModuleOrderingException;
-import com.metamatrix.common.extensionmodule.exception.InvalidExtensionModuleTypeException;
-
-
-/**
- * Administrative subsystem API for managing extension sources: JAR files and
- * other assorted XML files centrally accessible via the Platform.
- */
-public interface ExtensionSourceAdminAPI extends SubSystemAdminAPI {
-
- /**
- * The limit to the number of characters an extension source name
- * can be.
- */
- public static final int SOURCE_NAME_LENGTH_LIMIT = 255;
-
- /**
- * The limit to the number of characters an extension source description
- * can be.
- */
- public static final int SOURCE_DESCRIPTION_LENGTH_LIMIT = 255;
-
-
- /**
- * Adds an extension source to the end of the list of sources
- * @param type one of the known types of extension file
- * @param sourceName name (e.g. filename) of extension source
- * @param source actual contents of source
- * @param description (optional) description of the extension source
- * @param enabled indicates whether each extension source is enabled for
- * being searched or not (for convenience, a source can be disabled
- * without being removed)
- * @return ExtensionSourceDescriptor describing the newly-added
- * extension source
- * @throws InvalidSessionException if there is not a valid administrative session
- * @throws AuthorizationException if the administrator does not have privileges to use this method
- * @throws DuplicateExtensionSourceException if an extension source
- * with the same sourceName already exists
- * @throws InvalidExtensionTypeException if the indicated type is not one
- * of the currently-supported extension source types
- * @throws MetaMatrixComponentException indicating a non-business-related
- * exception (such as a communication exception)
- */
- ExtensionModuleDescriptor addSource(String type, String sourceName, byte[] source, String description, boolean enabled)
- throws InvalidSessionException, AuthorizationException, DuplicateExtensionModuleException, InvalidExtensionModuleTypeException, MetaMatrixComponentException;
-
- /**
- * Deletes a source from the list of sources
- * @param sourceName name (e.g. filename) of extension source
- * @throws InvalidSessionException if there is not a valid administrative session
- * @throws AuthorizationException if the administrator does not have privileges to use this method
- * @throws ExtensionSourceNotFoundException if no extension source with
- * name sourceName can be found
- * @throws MetaMatrixComponentException indicating a non-business-related
- * exception (such as a communication exception)
- */
- void removeSource(String sourceName)
- throws InvalidSessionException, AuthorizationException, ExtensionModuleNotFoundException, MetaMatrixComponentException;
-
- /**
- * Returns List (of Strings) of all extension source types currently
- * supported.
- * @return List of the String names of the currently-supported extension
- * source types
- * @throws InvalidSessionException if there is not a valid administrative session
- * @throws AuthorizationException if the administrator does not have privileges to use this method
- * @throws MetaMatrixComponentException indicating a non-business-related
- * exception (such as a communication exception)
- */
- Collection getSourceTypes()
- throws InvalidSessionException, AuthorizationException, MetaMatrixComponentException;
-
- /**
- * Returns List (of Strings) of all extension source names, in order of
- * their search ordering
- * @return List (of Strings) of all extension source names, in order of
- * their search ordering
- * @throws InvalidSessionException if there is not a valid administrative session
- * @throws AuthorizationException if the administrator does not have privileges to use this method
- * @throws MetaMatrixComponentException indicating a non-business-related
- * exception (such as a communication exception)
- */
- List getSourceNames()
- throws InvalidSessionException, AuthorizationException, MetaMatrixComponentException;
-
- /**
- * Returns List of ExtensionSourceDescriptor objects, in order
- * of their search ordering
- * @return List of ExtensionSourceDescriptor objects, in order
- * of their search ordering
- * @throws InvalidSessionException if there is not a valid administrative session
- * @throws AuthorizationException if the administrator does not have privileges to use this method
- * @throws MetaMatrixComponentException indicating a non-business-related
- * exception (such as a communication exception)
- */
- List getSourceDescriptors()
- throws InvalidSessionException, AuthorizationException, MetaMatrixComponentException;
-
- /**
- * Returns the ExtensionSourceDescriptor object for the extension
- * source indicated by sourceName
- * @param sourceName name (e.g. filename) of extension source
- * @return the ExtensionSourceDescriptor object for the extension
- * source indicated by sourceName
- * @throws InvalidSessionException if there is not a valid administrative session
- * @throws AuthorizationException if the administrator does not have privileges to use this method
- * @throws ExtensionSourceNotFoundException if no extension source with
- * name sourceName can be found
- * @throws MetaMatrixComponentException indicating a non-business-related
- * exception (such as a communication exception)
- */
- ExtensionModuleDescriptor getSourceDescriptor(String sourceName)
- throws InvalidSessionException, AuthorizationException, ExtensionModuleNotFoundException, MetaMatrixComponentException;
-
- /**
- * Sets the positions in the search order of all sources (all sources
- * must be included or an ExtensionSourceOrderingException will be thrown)
- * The sourceNames List parameter should indicate the new desired order.
- * @param sourceNames Collection of String names of existing
- * extension sources whose search position is to be set
- * @return updated List of ExtensionSourceDescriptor objects, in order
- * of their search ordering
- * @throws InvalidSessionException if there is not a valid administrative session
- * @throws AuthorizationException if the administrator does not have privileges to use this method
- * @throws ExtensionSourceOrderingException if the extension files could
- * not be ordered as requested because another administrator had
- * concurrently added or removed an extension file or files, or because
- * an indicated position is out of bounds.
- * @throws MetaMatrixComponentException indicating a non-business-related
- * exception (such as a communication exception)
- */
- List setSearchOrder(List sourceNames)
- throws InvalidSessionException, AuthorizationException, ExtensionModuleOrderingException, MetaMatrixComponentException;
-
- /**
- * Sets the "enabled" (for searching) property of all of the indicated
- * extension sources.
- * @param sourceNames Collection of String names of existing
- * extension sources whose "enabled" status is to be set
- * @param enabled indicates whether each extension source is enabled for
- * being searched or not (for convenience, a source can be disabled
- * without being removed)
- * @return updated List of ExtensionSourceDescriptor objects, in order
- * of their search ordering
- * @throws InvalidSessionException if there is not a valid administrative session
- * @throws AuthorizationException if the administrator does not have privileges to use this method
- * @throws ExtensionSourceNotFoundException if no extension source with
- * name sourceName can be found
- * @throws MetaMatrixComponentException indicating a non-business-related
- * exception (such as a communication exception)
- */
- List setEnabled(Collection sourceNames, boolean enabled)
- throws InvalidSessionException, AuthorizationException, ExtensionModuleNotFoundException, MetaMatrixComponentException;
-
- /**
- * Updates the indicated extension source
- * @param sourceName name (e.g. filename) of extension source
- * @param source actual contents of source
- * @return ExtensionSourceDescriptor describing the newly-updated
- * extension source
- * @throws InvalidSessionException if there is not a valid administrative session
- * @throws AuthorizationException if the administrator does not have privileges to use this method
- * @throws ExtensionSourceNotFoundException if no extension source with
- * name sourceName can be found
- * @throws MetaMatrixComponentException indicating a non-business-related
- * exception (such as a communication exception)
- */
- ExtensionModuleDescriptor setSource(String sourceName, byte[] source)
- throws InvalidSessionException, AuthorizationException, ExtensionModuleNotFoundException, MetaMatrixComponentException;
-
- /**
- * Updates the indicated extension source's source name
- * @param sourceName name (e.g. filename) of extension source
- * @param newName new name for the source
- * @return ExtensionSourceDescriptor describing the newly-updated
- * extension source
- * @throws ExtensionSourceNotFoundException if no extension source with
- * name sourceName can be found
- * @throws MetaMatrixComponentException indicating a non-business-related
- * exception (such as a communication exception)
- */
- ExtensionModuleDescriptor setSourceName(String sourceName, String newName)
- throws InvalidSessionException, AuthorizationException, ExtensionModuleNotFoundException, MetaMatrixComponentException;
-
- /**
- * Updates the indicated extension source's description
- * @param sourceName name (e.g. filename) of extension source
- * @param description (optional) description of the extension source.
- * <code>null</code> can be passed in to indicate no description.
- * @return ExtensionSourceDescriptor describing the newly-updated
- * extension source
- * @throws ExtensionSourceNotFoundException if no extension source with
- * name sourceName can be found
- * @throws MetaMatrixComponentException indicating a non-business-related
- * exception (such as a communication exception)
- */
- ExtensionModuleDescriptor setSourceDescription(String sourceName, String description)
- throws InvalidSessionException, AuthorizationException, ExtensionModuleNotFoundException, MetaMatrixComponentException;
-
- /**
- * Checks if the extension module exists.
- * @param sourceName name (e.g. filename) of extension source
- * @return Returns true if the Extension module exists. false otherwise.
- * @throws InvalidSessionException
- * @throws AuthorizationException
- * @throws MetaMatrixComponentException
- */
- boolean isSourceExists(String sourceName) throws InvalidSessionException, AuthorizationException, MetaMatrixComponentException;
-}
-
Modified: branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/PermissionNode.java
===================================================================
--- branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/PermissionNode.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/PermissionNode.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -23,12 +23,10 @@
package com.metamatrix.platform.admin.api;
import com.metamatrix.core.id.ObjectID;
-import com.metamatrix.common.tree.TreeNode;
-
import com.metamatrix.platform.admin.api.exception.PermissionNodeNotActionableException;
import com.metamatrix.platform.security.api.AuthorizationActions;
-public interface PermissionNode extends TreeNode {
+public interface PermissionNode {
/**
* Display name for node.
* @return The name of the data node for display.
Deleted: branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/RuntimeStateAdminAPI.java
===================================================================
--- branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/RuntimeStateAdminAPI.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/RuntimeStateAdminAPI.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,468 +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 com.metamatrix.platform.admin.api;
-
-import java.util.Collection;
-import java.util.Date;
-import java.util.List;
-
-import com.metamatrix.admin.api.exception.security.InvalidSessionException;
-import com.metamatrix.api.exception.MetaMatrixComponentException;
-import com.metamatrix.api.exception.MultipleException;
-import com.metamatrix.api.exception.security.AuthorizationException;
-import com.metamatrix.common.config.api.Configuration;
-import com.metamatrix.common.log.LogConfiguration;
-import com.metamatrix.common.queue.WorkerPoolStats;
-import com.metamatrix.platform.admin.api.runtime.SystemState;
-import com.metamatrix.platform.service.api.ServiceID;
-import com.metamatrix.platform.vm.controller.ProcessStatistics;
-
-public interface RuntimeStateAdminAPI extends SubSystemAdminAPI {
-
-
- /**
- * Return TRUE if the system is started; i.e. at leat one of every essential services in a product is running. Authorization,
- * Configuration, Membership and Session services are considered to be essential.
- *
- * @return Boolean - TRUE if system is started, FALSE if not.
- * @throws AuthorizationException
- * if caller is not authorized to perform this method.
- * @throws InvalidSessionException
- * if the <code>callerSessionID</code> is not valid or is expired.
- * @throws MetaMatrixComponentException
- * if an error occurred in communicating with a component.
- */
- boolean isSystemStarted() throws AuthorizationException,
- InvalidSessionException,
- MetaMatrixComponentException;
-
- /**
- * Stop service once work is complete.
- *
- * @param callerSessionID
- * ID of the caller's current session.
- * @param serviceID
- * ID of service instance.
- * @throws AuthorizationException
- * if caller is not authorized to perform this method.
- * @throws InvalidSessionException
- * if the <code>callerSessionID</code> is not valid or is expired.
- * @throws MetaMatrixComponentException
- * if an error occurred in communicating with a component.
- */
- void stopService(ServiceID serviceID) throws AuthorizationException,
- InvalidSessionException,
- MetaMatrixComponentException;
-
- /**
- * Stop service now.
- *
- * @param callerSessionID
- * ID of the caller's current session.
- * @param serviceID
- * ID of service instance.
- * @throws AuthorizationException
- * if caller is not authorized to perform this method.
- * @throws InvalidSessionException
- * if the <code>callerSessionID</code> is not valid or is expired.
- * @throws MetaMatrixComponentException
- * if an error occurred in communicating with a component.
- */
- void stopServiceNow(ServiceID serviceID) throws AuthorizationException,
- InvalidSessionException,
- MetaMatrixComponentException;
-
- /**
- * Stop process once work is complete.
- *
- * @param callerSessionID
- * ID of the caller's current session.
- * @param processID
- * <code>VMControllerID</code>.
- * @throws AuthorizationException
- * if caller is not authorized to perform this method.
- * @throws InvalidSessionException
- * if the <code>callerSessionID</code> is not valid or is expired.
- * @throws MetaMatrixComponentException
- * if an error occurred in communicating with a component.
- */
- void stopProcess(String hostname, String processName, boolean now) throws AuthorizationException,
- InvalidSessionException,
- MetaMatrixComponentException;
-
- /**
- * Gracefully shutdown server waiting for work to complete.
- *
- * @param callerSessionID
- * ID of the caller's current session.
- * @throws AuthorizationException
- * if caller is not authorized to perform this method.
- * @throws InvalidSessionException
- * if the <code>callerSessionID</code> is not valid or is expired.
- * @throws MetaMatrixComponentException
- * if an error occurred in communicating with a component.
- */
- void shutdownServer() throws AuthorizationException,
- InvalidSessionException,
- MetaMatrixComponentException;
-
- /**
- * Return the running state of the system.
- *
- * @return SysteState object that represents the system.
- * @throws AuthorizationException
- * if caller is not authorized to perform this method.
- * @throws InvalidSessionException
- * if the <code>callerSessionID</code> is not valid or is expired.
- * @throws MetaMatrixComponentException
- * if an error occurred in communicating with a component.
- */
- SystemState getSystemState() throws AuthorizationException,
- InvalidSessionException,
- MetaMatrixComponentException;
-
- /**
- * Restart a failed or stopped service.
- *
- * @param serviceID
- * ID of service instance.
- * @throws AuthorizationException
- * if caller is not authorized to perform this method.
- * @throws InvalidSessionException
- * if the <code>callerSessionID</code> is not valid or is expired.
- * @throws MetaMatrixComponentException
- * if an error occurred in communicating with a component.
- */
- void restartService(ServiceID serviceID) throws AuthorizationException,
- InvalidSessionException,
- MetaMatrixComponentException;
-
- /**
- * Start up all processes and services for the host.
- *
- * @param host
- * Host to start
- * @throws AuthorizationException
- * if caller is not authorized to perform this method.
- * @throws InvalidSessionException
- * if the <code>callerSessionID</code> is not valid or is expired.
- * @throws MetaMatrixComponentException
- * if an error occurred in communicating with a component.
- */
- void startHost(String host) throws AuthorizationException,
- InvalidSessionException,
- MetaMatrixComponentException;
-
- /**
- * Start up all process and services.
- *
- * @param host
- * Host processes belongs to.
- * @param process
- * Processes to start
- * @throws AuthorizationException
- * if caller is not authorized to perform this method.
- * @throws InvalidSessionException
- * if the <code>callerSessionID</code> is not valid or is expired.
- * @throws MetaMatrixComponentException
- * if an error occurred in communicating with a component.
- */
- void startProcess(String host,
- String process) throws AuthorizationException,
- InvalidSessionException,
- MetaMatrixComponentException;
-
- /**
- * Stop host processes/services once work is complete.
- *
- * @param host
- * Name of host.
- * @throws AuthorizationException
- * if caller is not authorized to perform this method.
- * @throws InvalidSessionException
- * if the <code>callerSessionID</code> is not valid or is expired.
- * @throws MetaMatrixComponentException
- * if an error occurred in communicating with a component.
- */
- void stopHost(String host) throws AuthorizationException,
- InvalidSessionException,
- MetaMatrixComponentException,
- MultipleException;
-
- /**
- * Stop host processes/services now.
- *
- * @param host
- * Name of host.
- * @throws AuthorizationException
- * if caller is not authorized to perform this method.
- * @throws InvalidSessionException
- * if the <code>callerSessionID</code> is not valid or is expired.
- * @throws MetaMatrixComponentException
- * if an error occurred in communicating with a component.
- */
- void stopHostNow(String host) throws AuthorizationException,
- InvalidSessionException,
- MetaMatrixComponentException,
- MultipleException;
-
- /**
- * Start up all services in psc.
- *
- * @param pscID
- * PSC to start.
- * @throws AuthorizationException
- * if caller is not authorized to perform this method.
- * @throws InvalidSessionException
- * if the <code>callerSessionID</code> is not valid or is expired.
- * @throws MetaMatrixComponentException
- * if an error occurred in communicating with a component.
- */
-// void startPSC(PscID pscID) throws AuthorizationException,
-// InvalidSessionException,
-// MetaMatrixComponentException,
-// MultipleException;
-//
- /**
- * Stop up all services in psc, waiting for work to complete.
- *
- * @param pscID
- * PSC to stop.
- * @throws AuthorizationException
- * if caller is not authorized to perform this method.
- * @throws InvalidSessionException
- * if the <code>callerSessionID</code> is not valid or is expired.
- * @throws MetaMatrixComponentException
- * if an error occurred in communicating with a component.
- */
-// void stopPSC(PscID pscID) throws AuthorizationException,
-// InvalidSessionException,
-// MetaMatrixComponentException,
-// MultipleException;
-
- /**
- * Stop up all services in psc now.
- *
- * @param pscID
- * PSC to stop.
- * @throws AuthorizationException
- * if caller is not authorized to perform this method.
- * @throws InvalidSessionException
- * if the <code>callerSessionID</code> is not valid or is expired.
- * @throws MetaMatrixComponentException
- * if an error occurred in communicating with a component.
- */
-// void stopPSCNow(PscID pscID) throws AuthorizationException,
-// InvalidSessionException,
-// MetaMatrixComponentException,
-// MultipleException;
-
- /**
- * Synchronize running services with runtime configuration.
- *
- * @throws AuthorizationException
- * if caller is not authorized to perform this method.
- * @throws InvalidSessionException
- * if the <code>callerSessionID</code> is not valid or is expired.
- * @throws MetaMatrixComponentException
- * if an error occurred in communicating with a component.
- */
- void synchronizeServer() throws AuthorizationException,
- InvalidSessionException,
- MetaMatrixComponentException,
- MultipleException;
-
- /**
- * Returns a Date object representing the time the server was started. If the server is not started a null is returned.
- *
- * @return Date
- * @throws AuthorizationException
- * if caller is not authorized to perform this method.
- * @throws InvalidSessionException
- * if the <code>callerSessionID</code> is not valid or is expired.
- * @throws MetaMatrixComponentException
- * if an error occurred in communicating with a component.
- */
- Date getServerStartTime() throws AuthorizationException,
- InvalidSessionException,
- MetaMatrixComponentException;
-
- /**
- * Sets the <code>LogConfiguration</code> on the given <code>Configuration</code>. If the configuration is
- * <code>operational</code>, then the log configuration is set on the <code>Logmanager</code> running in each VM.
- *
- * @param config
- * The configuration for which to set the log configuration.
- * @param logConfig
- * The log configuration with which to affect the log properties.
- * @param actions
- * The <code>Actions</code> from the <code>ConfigurationObjectEditor</code> used to affect the configuration
- * database.
- * @throws AuthorizationException
- * if caller is not authorized to perform this method.
- * @throws InvalidSessionException
- * if the <code>callerSessionID</code> is not valid or is expired.
- * @throws MetaMatrixComponentException
- * if an error occurred in communicating with a component.
- */
- void setLoggingConfiguration(Configuration config,
- LogConfiguration logConfig,
- List actions) throws AuthorizationException,
- InvalidSessionException,
- MetaMatrixComponentException;
-
- /**
- * Return Collection of QueueStats for service.
- *
- * @param serviceID
- * ID of the service.
- * @return Collection of QueueStats objects.
- * @throws AuthorizationException
- * if caller is not authorized to perform this method.
- * @throws InvalidSessionException
- * if the <code>callerSessionID</code> is not valid or is expired.
- * @throws MetaMatrixComponentException
- * if an error occurred in communicating with a component.
- */
-
- Collection getServiceQueueStatistics(ServiceID serviceID) throws AuthorizationException,
- InvalidSessionException,
- MetaMatrixComponentException;
-
- /**
- * Return QueueStats object for queue.
- *
- * @param serviceID
- * ID of the service.
- * @param queueName
- * Name of queue.
- * @return QueueStats object.
- * @throws AuthorizationException
- * if caller is not authorized to perform this method.
- * @throws InvalidSessionException
- * if the <code>callerSessionID</code> is not valid or is expired.
- * @throws MetaMatrixComponentException
- * if an error occurred in communicating with a component.
- */
- WorkerPoolStats getServiceQueueStatistics(ServiceID serviceID,
- String queueName) throws AuthorizationException,
- InvalidSessionException,
- MetaMatrixComponentException;
-
- /**
- * Return VMStatistics object for Process.
- *
- * @param VMControllerID
- * ID of the process.
- * @return VMStatistics.
- * @throws AuthorizationException
- * if caller is not authorized to perform this method.
- * @throws InvalidSessionException
- * if the <code>callerSessionID</code> is not valid or is expired.
- * @throws MetaMatrixComponentException
- * if an error occurred in communicating with a component.
- */
- ProcessStatistics getProcessStatistics(String hostName, String processName) throws AuthorizationException,
- InvalidSessionException,
- MetaMatrixComponentException;
-
- /**
- * Return the PscID by Name
- *
- * @param hostName
- * name of the host process for the PSC
- * @param processName
- * name of the process for the PSC
- * @param pscName
- * name of the PSC
- * @return <PscID>
- * @throws ServiceNotBoundException
- * @throws InvalidSessionException
- * if the <code>callerSessionID</code> is not valid or is expired.
- * @throws AuthorizationException
- * @throws MetaMatrixComponentException
- * @since 4.2.1
- */
-// PscID getPscIDByName(String hostName,
-// String processName,
-// String pscName) throws InvalidSessionException,
-// AuthorizationException,
-// MetaMatrixComponentException;
-
- /**
- * Return the ServiceID by Name
- *
- * @param hostName
- * name of the host to that the service is configured
- * @param processName
- * process name of the service is configured
- * @param serviceName
- * name of the service to be retrieved
- * @return <code>ServiceID</code>
- * @throws AuthorizationException
- * if caller is not authorized to perform this method.
- * @throws InvalidSessionException
- * if the <code>callerSessionID</code> is not valid or is expired.
- * @throws MetaMatrixComponentException
- * if an error occurred in communicating with a component.
- * @since 4.2
- */
- ServiceID getServiceIDByName(String hostName,
- String processName,
- String serviceName) throws AuthorizationException,
- InvalidSessionException,
- MetaMatrixComponentException;
-
- /**
- * Returns a list that contains all of the VMControllerBindings for all the VMControllers running in the MetaMatrix system.
- *
- * @return <code>List</code> of <code>VMControllerBinding</code>s
- * @throws InvalidSessionException
- * if the <code>callerSessionID</code> is not valid or is expired.
- * @throws AuthorizationException
- * @throws MetaMatrixComponentException
- * @since 4.2.1
- */
- List getVMControllerBindings() throws InvalidSessionException,
- AuthorizationException,
- MetaMatrixComponentException;
-
- /**
- * Get the log entries that match the specified criteria.
- * @param startTime
- * @param endTime If null, will ignore this criterion.
- * @param levels List of Integers
- * @param levels List of Strings. If null, will ignore this criterion and return entries with any context.
- * @param maxRows
- * @return List of LogEntry objects
- * @since 4.3
- */
- List getLogEntries(Date startTime,
- Date endTime,
- List levels,
- List contexts,
- int maxRows) throws AuthorizationException,
- InvalidSessionException,
- MetaMatrixComponentException;
-
-}
Deleted: branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/RuntimeStateChangeEvent.java
===================================================================
--- branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/RuntimeStateChangeEvent.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/RuntimeStateChangeEvent.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,34 +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 com.metamatrix.platform.admin.api;
-
-import java.util.EventObject;
-
-public class RuntimeStateChangeEvent extends EventObject{
-
- public RuntimeStateChangeEvent(Object source){
- super(source);
- }
-
-}
-
Deleted: branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/SubSystemAdminAPI.java
===================================================================
--- branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/SubSystemAdminAPI.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/SubSystemAdminAPI.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,33 +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 com.metamatrix.platform.admin.api;
-
-
-/**
- * This is the base interface of all subsystem administrative API interfaces.
- * @deprecated
- */
-public interface SubSystemAdminAPI {
-
-}
-
Deleted: branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/exception/ProductNotRegisteredException.java
===================================================================
--- branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/exception/ProductNotRegisteredException.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/exception/ProductNotRegisteredException.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,53 +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 com.metamatrix.platform.admin.api.exception;
-
-import com.metamatrix.platform.security.api.SecurityPlugin;
-
-/**
- * Indicates the named product is a known product, but is not registered at
- * the MetaMatrix system.
- */
-public class ProductNotRegisteredException extends MetaMatrixAdminException {
-
- private static final String exceptionMsg(String productName){
- return SecurityPlugin.Util.getString("ProductNotRegisteredException.Not_registered", productName); //$NON-NLS-1$
- }
-
-
- /**
- * No-arg CTOR
- */
- public ProductNotRegisteredException( ) {
- super( );
- }
- /**
- * Constructs an exception indicating a known product is not currently
- * registered at the MetaMatrix system.
- * @param productName name in question
- */
- public ProductNotRegisteredException( String productName ) {
- super( exceptionMsg(productName));
- }
-
-}
Deleted: branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/exception/UnknownProductOrSubsystemException.java
===================================================================
--- branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/exception/UnknownProductOrSubsystemException.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/api/exception/UnknownProductOrSubsystemException.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,67 +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 com.metamatrix.platform.admin.api.exception;
-
-import com.metamatrix.platform.security.api.SecurityPlugin;
-
-/**
- * Indicates a product name has been encountered that
- * is unknown, or a subsystem name for a <i>known</i> product has been
- * encountered which is unknown <i>for that product</i>.
- */
-public class UnknownProductOrSubsystemException extends MetaMatrixAdminException {
-
- private static final String unknownProductMsg(String unknownProduct){
- return SecurityPlugin.Util.getString("UnknownProductOrSubsystemException.Product_unknown", unknownProduct); //$NON-NLS-1$
- }
-
- private static final String unknownSubsystemMsg(String knownProduct, String unknownSubsystem){
- Object[] params = new Object[] {unknownSubsystem, knownProduct};
- return SecurityPlugin.Util.getString("UnknownProductOrSubsystemException.Subsystem_unknown", params); //$NON-NLS-1$
- }
-
- /**
- * No-arg CTOR
- */
- public UnknownProductOrSubsystemException( ) {
- super( );
- }
-
- /**
- * Constructs an exception indicating a product name is unknown
- * @param unknownProduct name that is not known
- */
- public UnknownProductOrSubsystemException( String unknownProduct ) {
- super( unknownProductMsg(unknownProduct));
- }
-
- /**
- * Constructs an exception indicating a subsystem for a known product
- * is unknown
- * @param knownProduct product name
- * @param unknownSubsystem name that is not known for the product
- */
- public UnknownProductOrSubsystemException( String knownProduct, String unknownSubsystem ) {
- super( unknownSubsystemMsg(knownProduct, unknownSubsystem));
- }
-}
Modified: branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/apiimpl/PermissionDataNodeImpl.java
===================================================================
--- branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/apiimpl/PermissionDataNodeImpl.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/common-internal/src/main/java/com/metamatrix/platform/admin/apiimpl/PermissionDataNodeImpl.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -22,14 +22,26 @@
package com.metamatrix.platform.admin.apiimpl;
+import java.io.PrintStream;
import java.io.Serializable;
import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.StringTokenizer;
import com.metamatrix.admin.AdminMessages;
+import com.metamatrix.common.CommonPlugin;
import com.metamatrix.common.log.LogManager;
-import com.metamatrix.common.tree.basic.BasicTreeNode;
+import com.metamatrix.common.object.ObjectDefinition;
+import com.metamatrix.common.object.PropertyDefinition;
+import com.metamatrix.common.object.PropertyType;
+import com.metamatrix.common.util.ErrorMessageKeys;
import com.metamatrix.common.util.LogConstants;
import com.metamatrix.core.id.ObjectID;
import com.metamatrix.core.util.Assertion;
@@ -45,8 +57,30 @@
/**
* Defines a tree node for displaying entitlements.
*/
-public class PermissionDataNodeImpl extends BasicTreeNode implements PermissionDataNode, Serializable, Comparable {
+public class PermissionDataNodeImpl implements PermissionDataNode, Serializable, Comparable {
+ public static final char DELIMITER_CHAR = '.';
+ public static final String DELIMITER = "."; //$NON-NLS-1$
+
+ private ObjectID globalUID;
+ private ObjectDefinition type;
+ private boolean exists = true;
+ private String name;
+ private List children; // list of TreeNode refs
+ private List unmodifiableChildren;
+ private PermissionDataNodeImpl parent;
+ private boolean marked;
+ private boolean modified;
+
+ /**
+ * The holder for the property values for this entity, keyed upon the
+ * reference to the PropertyDefinition instance.
+ * @link aggregationByValue
+ * @supplierCardinality 0..1
+ */
+ private Map properties;
+// private Map unmodifiableProperties;
+
private int actionsCreatedWith;
private int descendantActions;
private AuthorizationActions actions;
@@ -69,12 +103,28 @@
* @param nodeIsPhysical Is this node physical are virtual.
* @param guid the globally-unique identifier for this instance; may not be null
*/
- public PermissionDataNodeImpl(BasicTreeNode parent,
+ public PermissionDataNodeImpl(PermissionDataNodeImpl parent,
AuthorizationActions allowedActions,
PermissionDataNodeDefinition nodeDefinition,
boolean nodeIsPhysical,
ObjectID guid) {
- super(parent, nodeDefinition.getDisplayName(), nodeDefinition, guid);
+ Assertion.isNotNull(nodeDefinition,"The ObjectDefinition reference may not be null"); //$NON-NLS-1$
+ Assertion.isNotNull(guid,"The ObjectID reference may not be null"); //$NON-NLS-1$
+ this.type = nodeDefinition;
+ this.globalUID = guid;
+ this.children = new ArrayList(5);
+ this.unmodifiableChildren = Collections.unmodifiableList(this.children);
+ this.properties = new HashMap();
+// this.unmodifiableProperties = Collections.unmodifiableMap(this.properties);
+ this.setNameOfNode(nodeDefinition.getDisplayName());
+ this.modified = true; // by default, a new object is considered modified
+ if ( parent != null ) {
+ parent.addChild(this,nodeDefinition,-1); // this call may not be efficient if 'exists' is false
+ this.setExists(true);
+ } else {
+ this.ensureNameIsValid();
+ this.setExists(true); // this must be a root entity that should be made existent
+ }
this.allowedActions = allowedActions;
this.descendantActions = StandardAuthorizationActions.NONE_VALUE;
this.actions = StandardAuthorizationActions.NONE;
@@ -82,7 +132,7 @@
this.isHidden = false;
this.isPhysical = nodeIsPhysical;
this.hashCode = nodeDefinition.getName().hashCode();
- // BasicTreeNode is set to modified when created! Unset it.
+ // PermissionDataNodeImpl is set to modified when created! Unset it.
this.setModified(false, false);
}
@@ -440,56 +490,6 @@
}
/**
- * Returns true if the specified object is semantically equal to this instance.
- * Note: this method is consistent with <code>compareTo()</code>.
- * @param obj the object that this instance is to be compared to.
- * @return whether the object is equal to this object.
- */
- public boolean equals(Object obj) {
- // Check if instances are identical ...
- if ( this == obj ) {
- return true;
- }
-
- // Check if object can be compared to this one
- // (this includes checking for null ) ...
- boolean areEqual = false;
- if ( obj instanceof PermissionDataNodeImpl ) {
- PermissionDataNodeImpl that = (PermissionDataNodeImpl) obj;
- // Must always have resourceNames
- areEqual = getType().getName().equals( that.getResourceName() );
- }
-
- return areEqual;
- }
- /**
- * Compares this object to another. If the specified object is not an instance of
- * the <code>PermissionDataNodeImpl</code> class, then this method throws a
- * ClassCastException (as instances are comparable only to instances of the same
- * class).
- * Note: this method <i>is</i> consistent with <code>equals()</code>, meaning
- * that <code>(compare(x, y)==0) == (x.equals(y))</code>.
- * <p>
- * @param obj the object that this instance is to be compared to; may not be null.
- * @return a negative integer, zero, or a positive integer as this object
- * is less than, equal to, or greater than the specified object, respectively.
- * @throws ClassCastException if the specified object's type prevents it
- * from being compared to this instance.
- */
- public int compareTo(Object obj) {
- PermissionDataNodeImpl that = (PermissionDataNodeImpl) obj; // May throw ClassCastException
- if(obj == null){
- Assertion.isNotNull(obj,SecurityPlugin.Util.getString(AdminMessages.ADMIN_0039));
- }
-
- if ( obj == this ) {
- return 0;
- }
-
- return compare(this, that);
- }
-
- /**
* Utility method to compare two PermissionDataNodeImpl instances. Returns a negative integer, zero,
* or a positive integer as this object is less than, equal to, or greater than
* the specified object. <p>
@@ -520,13 +520,6 @@
/**
* Return stringafied representation of the object.
*/
- public String toString() {
- return getType().getName() + " " + this.actions; //$NON-NLS-1$
- }
-
- /**
- * Return stringafied representation of the object.
- */
public String printDebug() {
StringBuffer buf = new StringBuffer();
buf.append("\nResource: " + getType().getName()); //$NON-NLS-1$
@@ -735,4 +728,1012 @@
// }
// return true;
// }
+
+ /**
+ * Construct a new instance by specifying the parent that owns this entity,
+ * the name of the instance, the type of the instance and the global UID
+ * for the instance.
+ * <b>Note:</b> this constructor does <i>NOT</i> verify that the name is valid within
+ * the parent's namespace.
+ * @param parent the parent that is considered the owning namespace for this
+ * instance; may be null if the new instance is to be the root
+ * @param name the name for the new entity instance; may be null or zero length
+ * if the node name is to be determined
+ * @param type the reference to the MetaModelEntity that defines the type
+ * of entity; may not be null
+ * @param guid the globally-unique identifier for this instance; may not be null
+ */
+ public PermissionDataNodeImpl(PermissionDataNodeImpl parent, String name, ObjectDefinition defn, ObjectID guid ) {
+// Assertion.isNotNull(name,"The name may not be null");
+ Assertion.isNotNull(defn,"The ObjectDefinition reference may not be null"); //$NON-NLS-1$
+ Assertion.isNotNull(guid,"The ObjectID reference may not be null"); //$NON-NLS-1$
+ this.type = defn;
+ this.globalUID = guid;
+ this.children = new ArrayList(5);
+ this.unmodifiableChildren = Collections.unmodifiableList(this.children);
+ this.properties = new HashMap();
+// this.unmodifiableProperties = Collections.unmodifiableMap(this.properties);
+ this.setNameOfNode(name);
+ this.modified = true; // by default, a new object is considered modified
+
+ if ( parent != null ) {
+ parent.addChild(this,defn,-1); // this call may not be efficient if 'exists' is false
+ this.setExists(true);
+ } else {
+ this.ensureNameIsValid();
+ this.setExists(true); // this must be a root entity that should be made existent
+ }
+ }
+
+ // ########################## PropertiedObject Methods ###################################
+
+ // ########################## TreeNode Methods ###################################
+
+ /**
+ * Get this name of this entity. The name does not contain the namespace,
+ * but is unique within the namespace of the entity.
+ * @return the entity's name; never null or zero-length
+ */
+ public String getName(){
+ return this.name;
+ }
+
+ /**
+ * Get the actual or programmatic name of this property.
+ * @return the property's name (never null)
+ */
+ public String getFullName(){
+ return this.addFullName( new StringBuffer(), DELIMITER ).toString();
+ }
+ /**
+ * Get the actual or programmatic name of this property.
+ * @param delimiter the string delimiter to use between the names of nodes
+ * @return the property's name (never null)
+ */
+ public String getFullName(String delimiter){
+ return this.addFullName( new StringBuffer(), delimiter ).toString();
+ }
+ /**
+ * Helper method to build a string of the full name without having to
+ * construct a new StringBuffer in each node.
+ * <p>
+ * This method is implemented by having the node invoke this method on
+ * its parent (so that the parent can add its full name first), and then
+ * this node adds the delimiter and its name.
+ * @param sb the StringBuffer to which the name of this node should be appended
+ * @return the StringBuffer containing the full name of this node
+ */
+ protected StringBuffer addFullName(StringBuffer sb, String delimiter) {
+ if ( delimiter == null || delimiter.length() == 0 ) {
+ delimiter = DELIMITER;
+ }
+ StringBuffer result = sb;
+ if ( parent != null ) {
+ result = parent.addFullName(result,delimiter);
+ result.append(delimiter);
+ }
+ result.append(this.name);
+ return result;
+ }
+ /**
+ * Get the actual or programmatic name of this property.
+ * @return the property's name (never null)
+ */
+ public String getNamespace() {
+ if ( this.parent == null ) {
+ return ""; //$NON-NLS-1$
+ }
+ return this.parent.getFullName();
+ }
+
+ /**
+ * Get this type for this entity.
+ * @return the entity's type; never null
+ */
+ public ObjectDefinition getType() {
+ return this.type;
+ }
+
+ /**
+ * Return whether this TreeNode represents an existing metadata entity.
+ * <p>
+ * This attribute is set to true any time the object is part of a model,
+ * and it is set to false whenever the object is removed (deleted) from
+ * a model.
+ * @return true the entry exists, or false otherwise.
+ */
+ public boolean exists() {
+ return exists;
+ }
+
+ /**
+ * Ensure that the existance flag on this instance is set to the specified
+ * value. If the values are the same, this method simply returns without
+ * doing anything. However, if the existance value is different that the
+ * desired value, this method sets the existance value on this node and all
+ * of its children (recursively).
+ */
+ public void setExists( boolean value ) {
+ if ( this.exists != value ) {
+ this.exists = value;
+ Iterator iter = this.iterator();
+ while ( iter.hasNext() ) {
+ PermissionDataNodeImpl child = (PermissionDataNodeImpl) iter.next();
+ child.setExists(value);
+ }
+ }
+ }
+
+ /**
+ * Obtain the character that is used to separate names in a path sequence for
+ * the abstract path. This character is completely dependent upon the implementation.
+ * @return the charater used to delimit names in the abstract path.
+ */
+ public char getSeparatorChar() {
+ return DELIMITER_CHAR;
+ }
+
+ /**
+ * Obtain the character (as a String) that is used to separate names in a path sequence for
+ * the abstract path.
+ * @return the string containing the charater used to delimit names in the abstract path; never null
+ */
+ public String getSeparator() {
+ return DELIMITER;
+ }
+
+ /**
+ * Returns true if the specified object is semantically equal to this instance.
+ * Note: this method is consistent with <code>compareTo()</code>.
+ * <p>
+ * @param obj the object that this instance is to be compared to.
+ * @return whether the object is equal to this object.
+ */
+ public boolean equals(Object obj) {
+ // Check if instances are identical ...
+ if ( this == obj ) {
+ return true;
+ }
+
+ // Check if object can be compared to this one
+ // (this includes checking for null ) ...
+ //if ( this.getClass().isInstance(obj) ) {
+ if ( obj instanceof PermissionDataNodeImpl ) {
+ PermissionDataNodeImpl that = (PermissionDataNodeImpl) obj;
+ return ( this.globalUID.equals( that.getGlobalUID() ) );
+ }
+
+ // Otherwise not comparable ...
+ return false;
+ }
+ /**
+ * Compares this object to another. If the specified object is not an instance of
+ * the ModelEntity class, then this method throws a
+ * ClassCastException (as instances are comparable only to instances of the same
+ * class).
+ * Note: this method <i>is</i> consistent with <code>equals()</code>, meaning
+ * that <code>(compare(x, y)==0) == (x.equals(y))</code>.
+ * <p>
+ * @param obj the object that this instance is to be compared to; may not be null.
+ * @return a negative integer, zero, or a positive integer as this object
+ * is less than, equal to, or greater than the specified object, respectively.
+ * @throws ClassCastException if the specified object's type prevents it
+ * from being compared to this instance.
+ */
+ public int compareTo(Object obj) {
+ PermissionDataNodeImpl that = (PermissionDataNodeImpl) obj; // May throw ClassCastException
+ Assertion.isNotNull(obj,"Attempt to compare null"); //$NON-NLS-1$
+ if ( obj == this ) {
+ return 0;
+ }
+
+ return this.globalUID.compareTo(that.getGlobalUID());
+ }
+ /**
+ * Returns a string representing the current state of the object.
+ * @return the string representation of this instance.
+ */
+ public String toString(){
+ return this.getName();
+ }
+
+ // ########################## Implementation Methods ###################################
+
+ public ObjectID getGlobalUID(){
+ return globalUID;
+ }
+
+ /**
+ * Use this with extreme care!!!!
+ */
+ protected void setGlobalUID(ObjectID newID){
+ if ( newID != null ) {
+ globalUID = newID;
+ }
+ }
+
+ public Iterator iterator() {
+ return this.unmodifiableChildren.iterator();
+ }
+
+ /**
+ * Return the immediate child of this object that has the specified name.
+ * @param name the name of the child to find; may not be null or zero-length
+ * @param ignoreCase flag specifying true if the names should be compared in
+ * a case-insensitive manner, or false if the names should compare in a
+ * case-sensitive manner.
+ * @return the list of children with the matching name, or null if no child is found.
+ */
+ public List getChildren( String name, boolean ignoreCase ) {
+ Assertion.isNotNull(name,"The name reference may not be null"); //$NON-NLS-1$
+ Assertion.isNotZeroLength(name,"The name reference may not be zero-length"); //$NON-NLS-1$
+ List result = new ArrayList();
+ Iterator iter = this.children.iterator();
+
+ // Break into one of two loops based upon 'ignoreCase'; this is
+ // done like this for runtime efficiency with the knowlege
+ // that there is duplicate code.
+ if ( ignoreCase ) {
+ while ( iter.hasNext() ) {
+ PermissionDataNodeImpl obj = (PermissionDataNodeImpl) iter.next();
+ if ( obj.getName().equalsIgnoreCase(name) ) {
+ result.add(obj);
+ }
+ }
+ } else {
+ while ( iter.hasNext() ) {
+ PermissionDataNodeImpl obj = (PermissionDataNodeImpl) iter.next();
+ if ( obj.getName().equals(name) ) {
+ result.add(obj);
+ }
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Return the immediate child of this object that has the specified name.
+ * @param name the name of the child to find; may not be null or zero-length
+ * @param ignoreCase flag specifying true if the names should be compared in
+ * a case-insensitive manner, or false if the names should compare in a
+ * case-sensitive manner.
+ * @return the child with the matching name, or null if no child is found.
+ */
+ public PermissionDataNodeImpl getChild( String name, ObjectDefinition defn, boolean ignoreCase ) {
+ Assertion.isNotNull(name,"The name reference may not be null"); //$NON-NLS-1$
+ Assertion.isNotZeroLength(name,"The name reference may not be zero-length"); //$NON-NLS-1$
+ Assertion.isNotNull(defn,"The ObjectDefinition reference may not be null"); //$NON-NLS-1$
+ Iterator iter = this.children.iterator();
+
+ // Break into one of two loops based upon 'ignoreCase'; this is
+ // done like this for runtime efficiency with the knowlege
+ // that there is duplicate code.
+ if ( ignoreCase ) {
+ while ( iter.hasNext() ) {
+ PermissionDataNodeImpl obj = (PermissionDataNodeImpl) iter.next();
+ if ( defn.equals(obj.getType()) && obj.getName().equalsIgnoreCase(name) ) {
+ return obj;
+ }
+ }
+ } else {
+ while ( iter.hasNext() ) {
+ PermissionDataNodeImpl obj = (PermissionDataNodeImpl) iter.next();
+ if ( defn.equals(obj.getType()) && obj.getName().equals(name) ) {
+ return obj;
+ }
+ }
+ }
+ return null;
+ }
+
+ public int getIndexOfChild( PermissionDataNodeImpl child ) {
+ PermissionDataNodeImpl nodesParent = assertPermissionDataNodeImpl(child).parent;
+ Assertion.assertTrue(this==nodesParent,"The referenced child is not contained in this entity"); //$NON-NLS-1$
+ Iterator iter = this.children.iterator();
+ int index = 0;
+ while ( iter.hasNext() ) {
+ if ( iter.next() == child ) {
+ return index;
+ }
+ ++index;
+ }
+ throw new AssertionError(CommonPlugin.Util.getString(ErrorMessageKeys.TREE_ERR_0022));
+ }
+
+ /**
+ * Return the ordered list of children.
+ */
+ public List getChildren() {
+ return this.unmodifiableChildren;
+ }
+
+ /**
+ * Return true if this node is allowed to have any children.
+ */
+// public boolean getAllowsChildren() {
+// return CHILD_RULES.getAllowsChildren(this.getType());
+// }
+
+ /**
+ * Return true if this node currently does have any children.
+ */
+ public boolean hasChildren() {
+ return ( this.unmodifiableChildren.size() != 0 );
+ }
+
+ public int getChildCount() {
+ return this.unmodifiableChildren.size();
+ }
+
+ public boolean containsChildWithName( String name ) {
+ Assertion.isNotNull(name,"The name reference may not be null"); //$NON-NLS-1$
+ if ( name.length() == 0 ) {
+ return false;
+ }
+ Iterator iter = this.iterator();
+ while ( iter.hasNext() ) {
+ PermissionDataNodeImpl child = (PermissionDataNodeImpl) iter.next();
+ if ( child.getName().equals(name) ) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Set the name of this node.
+ * <b>Note:</b> this method does <i>NOT</i> verify that the child's name is valid within this
+ * namespace
+ */
+ public void setName(String newName) {
+ this.setNameOfNode(newName);
+ this.ensureNameIsValid();
+ }
+
+ protected void setNameOfNode(String newName) {
+ this.name = newName;
+ PropertyDefinition nameDefn = this.getNamePropertyDefinition();
+ if ( nameDefn != null ) {
+ this.setPropertyValue(nameDefn,newName);
+ }
+ }
+
+ protected PermissionDataNodeImpl assertPermissionDataNodeImpl( PermissionDataNodeImpl obj ) {
+ Assertion.isNotNull(obj,"The TreeNode reference may not be null"); //$NON-NLS-1$
+ Assertion.assertTrue(obj instanceof PermissionDataNodeImpl,"The referenced object is not an PermissionDataNodeImpl"); //$NON-NLS-1$
+ return (PermissionDataNodeImpl) obj;
+ }
+
+ /**
+ * Get the model entity which which is the parent of this entity.
+ * @return the parent model entity, which may be null if no parent exists.
+ */
+ public PermissionDataNodeImpl getParent() {
+ return this.parent;
+ }
+
+ /**
+ * Determine whether this handle is the parent of the specified handle.
+ * The result of this method is equivalent to calling the following,
+ * although this method uses a much more efficient algorithm that
+ * does not rely upon string comparisons:
+ * <p>
+ * <code>return this.getFullName().equals( node.getNamespace() )</code>
+ * </p>
+ * @return true if this handle is the namespace of the specified node
+ */
+ public boolean isParentOf(PermissionDataNodeImpl node) {
+ PermissionDataNodeImpl nodesParent = assertPermissionDataNodeImpl(node).parent;
+ return ( this == nodesParent );
+ }
+
+ /**
+ * Determine whether this handle is an ancestor of the specified handle,
+ * The result of this method is equivalent to calling the following,
+ * although this method uses a much more efficient algorithm that
+ * does not rely upon string comparisons:
+ * <p>
+ * <code>return node.getNamespace().startsWith( this.getFullName() )</code>
+ * </p>
+ * @return true if this handle is an ancestor of the specified node
+ */
+ public boolean isAncestorOf(PermissionDataNodeImpl node) {
+ PermissionDataNodeImpl ancestor = assertPermissionDataNodeImpl(node).parent;
+ while( ancestor != null ) {
+ if ( this == ancestor ) {
+ return true;
+ }
+ ancestor = assertPermissionDataNodeImpl(ancestor).parent;
+ }
+ return false;
+ }
+
+ /**
+ * Return whether this node has undergone changes. The time from which changes are
+ * maintained is left to the implementation.
+ * @return true if this TreeNode has changes, or false otherwise.
+ */
+ public boolean isModified() {
+ return this.modified;
+ }
+
+ /**
+ * Set the modified state of the TreeNode node.<br></br>Default behavior is to
+ * set as modified the whole subtree starting with this node.
+ * @param marked the marked state of the node.
+ */
+ public void setModified(boolean modified) {
+ this.setModified(modified, true);
+ }
+
+ /**
+ * Set the modified state of the TreeNode node.
+ * @param modified the marked state of the node.
+ * @param recursive true if the whole subtree starting from this node should
+ * be set as modified, or false if only this node is to be set as modified.
+ */
+ public synchronized void setModified(boolean modified, boolean recursive) {
+ this.modified = modified;
+ if ( recursive ) {
+ Iterator iter = this.children.iterator();
+ while ( iter.hasNext() ) {
+ PermissionDataNodeImpl child = (PermissionDataNodeImpl) iter.next();
+ child.setModified(modified, true);
+ }
+ }
+ }
+
+ /**
+ * Return the marked state of the specified node.
+ * @return the marked state of the node.
+ */
+ public boolean isMarked() {
+ return this.marked;
+ }
+
+ /**
+ * Set the marked state of the TreeNode node.<br></br>Default behavior is to
+ * mark the whole subtree from this node.
+ * @param marked the marked state of the node.
+ */
+ public void setMarked(boolean marked) {
+ this.setMarked(marked, true);
+ }
+
+ /**
+ * Set the marked state of the TreeNode node.
+ * @param marked the marked state of the node.
+ * @param recursive mark the whole subtree starting from this node.
+ */
+ public synchronized void setMarked(boolean marked, boolean recursive) {
+ this.marked = marked;
+ if ( recursive ) {
+ Iterator iter = this.children.iterator();
+ while ( iter.hasNext() ) {
+ PermissionDataNodeImpl child = (PermissionDataNodeImpl) iter.next();
+ child.setMarked(marked, true);
+ }
+ }
+ }
+
+ /**
+ * Return the set of marked nodes for this view.
+ * @param the unmodifiable set of marked nodes; never null
+ */
+ protected synchronized void addMarkedNodesToSet( Set result ) {
+ if ( this.isMarked() ) {
+ result.add(this);
+ }
+
+ PermissionDataNodeImpl child = null;
+ Iterator iter = this.children.iterator();
+ while ( iter.hasNext() ) {
+ child = (PermissionDataNodeImpl) iter.next();
+ child.addMarkedNodesToSet( result );
+ }
+ }
+
+ /**
+ * Go through the tree and find out the leaf nodes beneath this object.
+ * @return true if there are nodes below this node that are marked
+ */
+ public synchronized void findLeafNodes( Set leafNodes ) {
+ if ( this.getChildCount() == 0 ) {
+ leafNodes.add(this);
+ return;
+ }
+
+ // Otherwise, call this same method on all children ...
+ PermissionDataNodeImpl child = null;
+ Iterator iter = this.children.iterator();
+ while ( iter.hasNext() ) {
+ child = (PermissionDataNodeImpl) iter.next();
+ child.findLeafNodes( leafNodes );
+ }
+ }
+
+ /**
+ * Go through the tree and find out the top-level objects that are not marked
+ * and that do not have marked nodes beneath them, and find the leaf-level marked
+ * objects.
+ * @return true if there are nodes below this node that are marked
+ */
+ public synchronized boolean findMarkedAndUnmarkedNodes( Set unmarkedNodes, Set markedLeafNodes ) {
+ // If this node is marked, go no further ...
+ if ( this.isMarked() ) {
+ this.findLeafNodes(markedLeafNodes);
+ return true;
+ }
+ unmarkedNodes.add(this);
+
+ // Otherwise, call this same method on all children ...
+ boolean childHasMarkedNodes = false;
+ PermissionDataNodeImpl child = null;
+ Iterator iter = this.children.iterator();
+ while ( iter.hasNext() ) {
+ child = (PermissionDataNodeImpl) iter.next();
+ if ( child.findMarkedAndUnmarkedNodes( unmarkedNodes, markedLeafNodes ) ) {
+ childHasMarkedNodes = true;
+ }
+ }
+
+ if ( childHasMarkedNodes ) {
+ unmarkedNodes.remove(this);
+ }
+ return childHasMarkedNodes;
+ }
+
+ /**
+ * Go through the tree and find out the top-level objects that are not marked
+ * and that do not have marked nodes beneath them, and find the leaf-level marked
+ * objects.
+ * @return true if there are nodes below this node that are marked
+ */
+ public synchronized void findTopLevelMarkedNodes( Set markedTopLevelNodes ) {
+ // If this node is marked, go no further ...
+ if ( this.isMarked() ) {
+ markedTopLevelNodes.add(this);
+ }
+
+ // Otherwise, call this same method on all children ...
+ PermissionDataNodeImpl child = null;
+ Iterator iter = this.children.iterator();
+ while ( iter.hasNext() ) {
+ child = (PermissionDataNodeImpl) iter.next();
+ child.findTopLevelMarkedNodes(markedTopLevelNodes);
+ }
+ }
+
+ public Collection getDecendant( String pathWithName, String delimiter, boolean ignoreCase ) {
+ if ( delimiter == null || delimiter.length() == 0 ) {
+ delimiter = DELIMITER;
+ }
+ Set parents = new HashSet();
+ Set decendents = new HashSet();
+ parents.add(this);
+ PermissionDataNodeImpl parent = this;
+ StringTokenizer tokenizer = new StringTokenizer(pathWithName,delimiter);
+ while ( tokenizer.hasMoreTokens() ) {
+ String name = tokenizer.nextToken();
+ decendents.clear();
+ Iterator iter = parents.iterator();
+ while ( iter.hasNext() ) {
+ parent = (PermissionDataNodeImpl) iter.next();
+ decendents.addAll( parent.getChildren( name, ignoreCase ) );
+ }
+ parents.clear();
+ parents.addAll(decendents);
+ }
+ return decendents;
+ }
+
+ public Collection getDecendant( String pathWithName, boolean ignoreCase ) {
+ return getDecendant(pathWithName,DELIMITER,ignoreCase);
+ }
+
+ /**
+ * Remove from this node the specified child, null the parent reference
+ * of the node, and mark the node as non-existant.
+ * @param child the child entity
+ */
+ public synchronized void remove( PermissionDataNodeImpl child ) {
+ Assertion.assertTrue(child!=this,"The specified node may not be removed from itself"); //$NON-NLS-1$
+ Assertion.isNotNull(child,"Unable to remove a null child reference"); //$NON-NLS-1$
+ boolean found = this.children.remove(child);
+ Assertion.assertTrue(found,"The specified child was not found within this node"); //$NON-NLS-1$
+ child.parent = null;
+ child.setExists(false);
+ }
+
+ /**
+ * Remove from this node the child specified by the index, null the parent reference
+ * of the node, and mark the node as non-existant.
+ * @param index the index of the child to be removed
+ * @throws IndexOutOfBoundsException if the index is not within the range
+ * <code>0 <= newIndex < this.getChildCount()</code>
+ */
+ public synchronized void removeAll() {
+ Iterator iter = this.children.iterator();
+ PermissionDataNodeImpl child = null;
+ while ( iter.hasNext() ) {
+ child = (PermissionDataNodeImpl) iter.next();
+ child.parent = null;
+ child.setExists(false);
+ iter.remove();
+ }
+ }
+
+ /**
+ * Remove from this node the child specified by the index, null the parent reference
+ * of the node, and mark the node as non-existant.
+ * @param index the index of the child to be removed
+ * @throws IndexOutOfBoundsException if the index is not within the range
+ * <code>0 <= newIndex < this.getChildCount()</code>
+ */
+ public synchronized void remove(int index ) {
+ PermissionDataNodeImpl child = (PermissionDataNodeImpl) this.children.remove(index);
+ child.parent = null;
+ child.setExists(false);
+ }
+
+ /**
+ * Move the child to a new index under the same parent.
+ * @param child the child entity
+ * @param newIndex the location
+ * @throws IndexOutOfBoundsException if the index is not within the range
+ * <code>0 <= newIndex < this.getChildCount()</code>
+ */
+ public synchronized void moveChild( PermissionDataNodeImpl child, int newIndex ) {
+ //this.remove(child); // this marks it as non-existant, instead to ...
+ Assertion.assertTrue(child!=this,"The specified node may not be removed from itself"); //$NON-NLS-1$
+ Assertion.isNotNull(child,"Unable to remove a null child reference"); //$NON-NLS-1$
+ int currentIndex = this.children.indexOf(child);
+ if ( currentIndex == newIndex ) {
+ return;
+ }
+ boolean found = this.children.remove(child);
+ Assertion.assertTrue(found,"The specified child was not found within this node"); //$NON-NLS-1$
+ int correctIndex = newIndex;
+ if ( currentIndex < newIndex ) {
+ // Change the location, because they computed the newIndex based upon the
+ // list WITH the child, and we just removed the child (essentially decrementing
+ // their index
+
+ --correctIndex;
+ }
+ this.children.add(correctIndex,child);
+ }
+
+ /**
+ * Insert the node as a child of this node. If the child already has a parent,
+ * this method removes the child from that parent.
+ * <b>Note:</b> this method does <i>NOT</i> verify that the child's name is valid within this
+ * namespace
+ * @param child the child entity
+ * @param newIndex the location
+ * @throws IndexOutOfBoundsException if the index is not within the range
+ * <code>0 <= newIndex <= this.getChildCount()</code>
+ */
+ public synchronized void insert( PermissionDataNodeImpl child, int index ) {
+ Assertion.isNotNull(child,"The child reference may not be null"); //$NON-NLS-1$
+ Assertion.assertTrue(child != this,"The specified node may not be added to itself"); //$NON-NLS-1$
+ Assertion.assertTrue(child.getParent() != this,"The specified node is already a child of this entity"); //$NON-NLS-1$
+
+ this.children.add(index,child); // ensures index is valid, so do this first
+ if ( child.parent != null ) {
+ child.parent.children.remove(child); // doesn't mark node as non-existant
+ }
+ child.parent = this; // remove from parent
+ child.setExists(true); // ensure that child is marked as exists
+
+ // Check if this node already contains a child that has the same
+ // name and type as the new child; if there is an existing child,
+ // come up with the next valid name ...
+ this.ensureNameIsValid();
+ }
+
+ /**
+ * Insert the node as a child of this node, and place it at the end of this
+ * node's list of children. If the child already has a parent,
+ * this method removes the child from that parent.
+ * <p>
+ * <b>Note:</b> this method does <i>NOT</i> verify that the child's name is valid within this
+ * namespace
+ * @param child the child entity
+ */
+ public synchronized void add( PermissionDataNodeImpl child ) {
+ Assertion.isNotNull(child,"The child reference may not be null"); //$NON-NLS-1$
+ Assertion.assertTrue(child != this,"The specified node may not be added to itself"); //$NON-NLS-1$
+ Assertion.assertTrue(child.getParent() != this,"The specified node is already a child of this entity"); //$NON-NLS-1$
+ addChild(child,child.getType(),-1); // add at end
+ }
+
+ /**
+ * Insert the node as a child of this node, and place it at the end of this
+ * node's list of children. If the child already has a parent,
+ * this method removes the child from that parent.
+ * <p>
+ * <b>Note:</b> this method does <i>NOT</i> verify that the child's name is valid within this
+ * namespace
+ * @param child the child entity
+ */
+ public synchronized void add( PermissionDataNodeImpl child, int index ) {
+ Assertion.isNotNull(child,"The child reference may not be null"); //$NON-NLS-1$
+ Assertion.assertTrue(child != this,"The specified node may not be added to itself"); //$NON-NLS-1$
+ Assertion.assertTrue(child.getParent() != this,"The specified node is already a child of this entity"); //$NON-NLS-1$
+ addChild(child,child.getType(),index);
+ }
+
+ protected synchronized void addChild( PermissionDataNodeImpl child, ObjectDefinition childType, int index ) {
+ // Check if this node can add the new child to its list of children
+ if ( this.addChildIsValid(child) ) {
+ if ( index == -1 ) {
+ this.children.add(child); // Add at the end
+ } else {
+ this.children.add(index,child); // Add at index, may throw IndexOutOfBoundsException
+ }
+ if ( child.parent != null ) {
+ child.parent.children.remove(child); // doesn't mark node as non-existant
+ }
+ child.parent = this; // remove from parent
+ child.setExists(true); // ensure that child is marked as exists
+
+ // Check if this node already contains a child that has the same
+ // name and type as the new child; if there is an existing child,
+ // come up with the next valid name ...
+ child.ensureNameIsValid();
+ }
+ }
+
+ public Object getPropertyValue(PropertyDefinition propertyDefn) {
+ Object result = resolveTypeFromString(this.properties.get(propertyDefn),propertyDefn);
+ if ( result == null && propertyDefn.hasDefaultValue() ) {
+ result = propertyDefn.getDefaultValue();
+ }
+ if ( result == null ) {
+ return result;
+ }
+
+ // This is a check to verify that the types correspond to types and that we
+ // are no longer using Collection to hold multi-valued properties
+ if ( result instanceof Collection && propertyDefn.getPropertyType() != PropertyType.LIST ) {
+ throw new AssertionError("The property value is a Collection but the PropertyType is a " + propertyDefn.getPropertyType().getDisplayName() ); //$NON-NLS-1$
+ }
+ if ( result instanceof Set && propertyDefn.getPropertyType() != PropertyType.SET ) {
+ throw new AssertionError("The property value is a Set but the PropertyType is a " + propertyDefn.getPropertyType().getDisplayName() ); //$NON-NLS-1$
+ }
+
+ return result;
+ }
+
+ public Object setPropertyValue(PropertyDefinition propertyDefn,Object value) {
+ Object previous = this.properties.put(propertyDefn,convertTypeToString(value,propertyDefn));
+ // Check if the value has changed. If the old and new value are both null
+ // we assume the property was not modified. If old or new value is not null
+ // and does not satisify the .equals check then the value is modified and the
+ // node is marked accordingly
+ if ( (previous != null && !previous.equals(value)) || (value != null && !value.equals(previous)) ) {
+ this.setModified(true,false);
+ }
+// if ( previous != value ) {
+// this.setModified(true,false);
+// }
+ return previous;
+ }
+
+ /**
+ * hook to allow some PropertyDefinition values to be converted from String values
+ * before they are sent to clients of this Editor. Subclasses may override
+ * this method to convert custom types.
+ */
+ protected Object resolveTypeFromString(Object value, PropertyDefinition def) {
+ Object result = value;
+ if ( PropertyType.BOOLEAN.equals(def.getPropertyType()) ) {
+ if ( value instanceof String ) {
+ if ( Boolean.TRUE.toString().equalsIgnoreCase((String) value) ) {
+ result = Boolean.TRUE;
+ } else {
+ result = Boolean.FALSE;
+ }
+ }
+ }
+ //TODO: handle other types
+ return result;
+ }
+
+ /**
+ * hook to allow some PropertyDefinition values to be converted non-string values
+ * into Strings before they are set on the PropertiedObject. Subclasses may override
+ * this method to convert custom types.
+ */
+ protected Object convertTypeToString(Object value, PropertyDefinition def) {
+ Object result = value;
+ if ( PropertyType.BOOLEAN.equals(def.getPropertyType()) ) {
+ if ( value instanceof Boolean ) {
+ result = value.toString();
+ }
+ }
+ //TODO: handle other types
+ return result;
+ }
+
+ public Object removePropertyValue(PropertyDefinition propertyDefn) {
+ return this.properties.remove(propertyDefn);
+ }
+
+ public Map getProperties() {
+ return this.properties;
+ }
+
+ public void print( PrintStream stream ) {
+ Assertion.isNotNull(stream,"The stream reference may not be null"); //$NON-NLS-1$
+ printInfo(stream);
+ PermissionDataNodeImpl child = null;
+ Iterator iter = this.iterator();
+ while ( iter.hasNext() ) {
+ child = (PermissionDataNodeImpl) iter.next();
+ //child.print(stream);
+ child.printInfo(stream);
+ }
+ }
+
+ protected String getEntityForm() {
+ return "PermissionDataNodeImpl"; //$NON-NLS-1$
+ }
+
+ protected void printInfo( PrintStream stream ) {
+ // Stream will never be null
+ stream.println(" \"" + this.getFullName() + "\" <" + this.getEntityForm() + "> (Type=" + this.getType() + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ }
+
+ protected PermissionDataNodeImpl find( ObjectID globalUID ) {
+ Assertion.isNotNull(globalUID,"The ObjectID reference may not be null"); //$NON-NLS-1$
+ if ( this.globalUID.equals(globalUID) ) {
+ return this;
+ }
+
+ // Go through the children and see if they contain the object ...
+ PermissionDataNodeImpl result = null;
+ PermissionDataNodeImpl child = null;
+ Iterator iter = this.iterator();
+ while ( iter.hasNext() ) {
+ child = (PermissionDataNodeImpl) iter.next();
+ result = child.find(globalUID);
+ if ( result != null ) {
+ break;
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * This method is used to determine the property definitions for this object.
+ * By default, this method returns an empty list.
+ */
+ protected List getPropertyDefinitions() {
+ return Collections.EMPTY_LIST;
+ }
+
+ /**
+ * This method is used to determine which, if any, of the property definitions for this object
+ * are used to access the name.
+ * By default, this method returns null, meaning there is no name property definition.
+ */
+ protected PropertyDefinition getNamePropertyDefinition() {
+ return null;
+ }
+
+ /**
+ * This method is used to determine which, if any, of the property definitions for this object
+ * are used to access the description.
+ * By default, this method returns null, meaning there is no description property definition.
+ */
+ protected PropertyDefinition getDescriptionPropertyDefinition() {
+ return null;
+ }
+
+ /**
+ * This method is used to determine whether two child nodes under a single parent
+ * are allowed to have the same name. By default, this method returns <code>true</code>.
+ */
+ protected boolean areDuplicateChildNamesAllowed() {
+ return true;
+ }
+
+ /**
+ * This method is used to determine the default name for a node when that node has no name.
+ * By default, this method returns the name of the node's type.
+ */
+ protected String getDefaultName() {
+ return this.type.getName();
+ }
+
+ protected boolean isValidNewName(String newName) {
+ if ( newName == null || newName.length() == 0 ) {
+ return false;
+ }
+ if ( newName.equals(this.name) ) {
+ return true;
+ }
+ if ( this.parent != null ) {
+ if ( this.areDuplicateChildNamesAllowed() ) {
+ return true;
+ }
+ if ( this.parent.containsChildWithName(newName) ) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * This method is called prior to adding the specified child to this
+ * TreeNode allowing any subclass to provide specific behavior if necessary.
+ * This implementation returns true by default.
+ */
+ protected boolean addChildIsValid( PermissionDataNodeImpl child ) {
+ return true;
+ }
+
+ /**
+ * Set the name of the new node (before its been added as a sibling to the nodes
+ * in <code>siblings</code>
+ */
+ protected void ensureNameIsValid() {
+ if ( this.name.length() == 0 ) {
+ this.setNameOfNode( this.getDefaultName() );
+ }
+ if ( areDuplicateChildNamesAllowed() ) {
+ return; // nothing to rename !!!
+ }
+ if ( this.parent == null ) {
+ return;
+ }
+ List siblings = this.parent.getChildren();
+ if ( siblings.size() == 1 ) {
+ return;
+ }
+
+ // Determine if there is a conflict ...
+ boolean rename = false;
+ Iterator iter = siblings.iterator();
+ PermissionDataNodeImpl sibling = null;
+ while ( iter.hasNext() ) {
+ sibling = (PermissionDataNodeImpl) iter.next();
+ if ( sibling != this && sibling.getName().equals(this.name) ) {
+ rename = true;
+ break;
+ }
+ }
+
+ if ( !rename ) {
+//System.out.println("setValidName(" + newNode.getFullName() + ") is NOT renaming");
+ return;
+ }
+
+//System.out.println("setValidName(" + newNode.getFullName() + ") IS renaming");
+ String newName = null;
+ int suffix = 1;
+ while ( newName == null ) {
+ String potentialName = this.name + suffix;
+ iter = siblings.iterator();
+ while ( iter.hasNext() ) {
+ sibling = (PermissionDataNodeImpl) iter.next();
+//System.out.println("setValidName(" + newNode.getFullName() + ") : comparing " + potentialName + " to " + sibling.getName() );
+ if ( sibling != this && sibling.getName().equals(potentialName) ) {
+ potentialName = null;
+//System.out.println("setValidName(" + newNode.getFullName() + ") : breaking " );
+ break;
+ }
+ }
+ if ( potentialName != null ) {
+//System.out.println("setValidName(" + newNode.getFullName() + ") : new name = " + potentialName );
+ newName = potentialName;
+ }
+ ++suffix;
+ }
+ this.setNameOfNode(newName);
+ }
+
}
Deleted: branches/JCA/common-internal/src/main/java/com/metamatrix/server/admin/api/RuntimeMetadataAdminAPI.java
===================================================================
--- branches/JCA/common-internal/src/main/java/com/metamatrix/server/admin/api/RuntimeMetadataAdminAPI.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/common-internal/src/main/java/com/metamatrix/server/admin/api/RuntimeMetadataAdminAPI.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,321 +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 com.metamatrix.server.admin.api;
-
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-
-import com.metamatrix.admin.api.exception.security.InvalidSessionException;
-import com.metamatrix.api.exception.MetaMatrixComponentException;
-import com.metamatrix.api.exception.security.AuthorizationException;
-import com.metamatrix.common.config.api.ConnectorBinding;
-import com.metamatrix.common.vdb.api.VDBDefn;
-import com.metamatrix.metadata.runtime.api.VirtualDatabase;
-import com.metamatrix.metadata.runtime.api.VirtualDatabaseException;
-import com.metamatrix.metadata.runtime.api.VirtualDatabaseID;
-import com.metamatrix.platform.admin.api.EntitlementMigrationReport;
-import com.metamatrix.platform.admin.api.PermissionDataNode;
-import com.metamatrix.platform.admin.api.SubSystemAdminAPI;
-import com.metamatrix.platform.security.api.AuthorizationPolicyID;
-
-public interface RuntimeMetadataAdminAPI extends SubSystemAdminAPI {
-
- /**
- * Update a modified <code>VirtualDataBase</code>.
- *
- * @param vdb the modified VirtualDatabase.
- * @throws AuthorizationException if caller is not authorized to perform this method.
- * @throws InvalidSessionException if the <code>callerSessionID</code> is not valid or is expired.
- * @throws VirtualDatabaseException if an error occurs while updating vdb.
- * @throws MetaMatrixComponentException if an error occurs in communicating with a component.
- */
- void updateVirtualDatabase(VirtualDatabase vdb)
- throws AuthorizationException, InvalidSessionException, VirtualDatabaseException, MetaMatrixComponentException;
-
- /**
- * Mark a <code>VirtualDataBase</code> (VDB) for deletion.
- *<p></p>
- * The VDB will not actually be deleted until there are no more users using it.
- * @param vdbID the ID of the VirtualDatabase that is to be deleted.
- * @throws AuthorizationException if caller is not authorized to perform this method.
- * @throws InvalidSessionException if the <code>callerSessionID</code> is not valid or is expired.
- * @throws VirtualDatabaseException if an error occurs while updating vdb.
- * @throws MetaMatrixComponentException if an error occurs in communicating with a component.
- */
- void markVDBForDelete(VirtualDatabaseID vdbID)
- throws AuthorizationException, InvalidSessionException, VirtualDatabaseException, MetaMatrixComponentException;
-
- /**
- * Migrate connector binding names from models in a virtual database, filling in connector
- * binding names possible for the models in the DTCInfo.
- *
- * @param sourceVDB The source VirtualDatabase from which to search for models and thus,
- * connector binding names.
- * @param vdb represents a specific VDB Version
- * @return A Map of ModelNames to RoutingIDs.
- * @throws AuthorizationException if caller is not authorized to perform this method.
- * @throws InvalidSessionException if the <code>callerSessionID</code> is not valid or is expired.
- * @throws VirtualDatabaseException if an error occurs while setting the state.
- * @throws MetaMatrixComponentException if an error occurs in communicating with a component.
- */
- Map migrateConnectorBindingNames(VirtualDatabase sourceVDB, VDBDefn vdb)
- throws AuthorizationException, InvalidSessionException, VirtualDatabaseException, MetaMatrixComponentException;
-
- /**
- * Set connector binding names for models in a virtual database.
- *
- * @param vdbID ID of the VirtualDatabase.
- * @param modelnamesAndConnectorBindingNames Map of <code>ModelID</code>s to String Connector Binding names.
- * @throws AuthorizationException if caller is not authorized to perform this method.
- * @throws InvalidSessionException if the <code>callerSessionID</code> is not valid or is expired.
- * @throws VirtualDatabaseException if an error occurs while setting the state.
- * @throws MetaMatrixComponentException if an error occurs in communicating with a component.
- */
- void setConnectorBindingNames(VirtualDatabaseID vdbID, Map modelnamesAndConnectorBindingNames)
- throws AuthorizationException, InvalidSessionException, VirtualDatabaseException, MetaMatrixComponentException;
-
- /**
- * Given a routing ID, find all VDBs whose models use the connector binding.
- *
- * @param routingID ID of the connector binding.
- * @return Collection of VDBs where at least one Model is using given connector binding.
- * @throws AuthorizationException if caller is not authorized to perform this method.
- * @throws InvalidSessionException if the <code>callerSessionID</code> is not valid or is expired.
- * @throws VirtualDatabaseException if an error occurs while setting the state.
- * @throws MetaMatrixComponentException if an error occurs in communicating with a component.
- */
- Collection getVDBsForConnectorBinding(String routingID)
- throws AuthorizationException, InvalidSessionException, VirtualDatabaseException, MetaMatrixComponentException;
-
- /**
- * Returns the <code>VirtualDatabase</code> specified by the <code>VirtualDatabaseID</code>.
- *
- * @param vdbID ID of the VirtualDatabase.
- * @return VirtualDatabase
- * @throws AuthorizationException if caller is not authorized to perform this method.
- * @throws InvalidSessionException if the <code>callerSessionID</code> is not valid or is expired.
- * @throws VirtualDatabaseException if an error occurs while setting the state.
- * @throws MetaMatrixComponentException if an error occurs in communicating with a component.
- */
- VirtualDatabase getVirtualDatabase(VirtualDatabaseID vdbID)
- throws AuthorizationException, InvalidSessionException, VirtualDatabaseException, MetaMatrixComponentException;
-
- /**
- * Returns the latest<code>VirtualDatabase</code> for the specified vdbName.
- *
- * @param callerSessionID ID of the caller's current session.
- * @param vdbName is the name of the VirtualDatabase.
- * @return VirtualDatabase
- * @throws AuthorizationException if caller is not authorized to perform this method.
- * @throws InvalidSessionException if the <code>callerSessionID</code> is not valid or is expired.
- * @throws VirtualDatabaseException if an error occurs while setting the state.
- * @throws MetaMatrixComponentException if an error occurs in communicating with a component.
- */
- VirtualDatabase getLatestVirtualDatabase(String vdbName)
- throws AuthorizationException, InvalidSessionException, VirtualDatabaseException, MetaMatrixComponentException;
-
-
- /**
- * Returns a <code>Collection</code> of all the VirtualDatabases in the system.
- * This would include all virtual databases flagged as incomplete, active, inactive or deleted.
- *
- * @return a Collection of all Virtualdatabases in the system.
- * @throws AuthorizationException if caller is not authorized to perform this method.
- * @throws InvalidSessionException if the <code>callerSessionID</code> is not valid or is expired.
- * @throws VirtualDatabaseException if an error occurs while setting the state.
- * @throws MetaMatrixComponentException if an error occurs in communicating with a component.
- */
- Collection getVirtualDatabases()
- throws AuthorizationException, InvalidSessionException, VirtualDatabaseException, MetaMatrixComponentException;
-
- /**
- * Returns a sorted <code>Collection</code> of type <code>Model</code> that represents
- * all the models that where deployed in the specified virtual database.
- *
- * @param vdbID ID of the VirtualDatabase.
- * @return a Collection of all Models deployed in the VirtualDatabase.
- * @throws AuthorizationException if caller is not authorized to perform this method.
- * @throws InvalidSessionException if the <code>callerSessionID</code> is not valid or is expired.
- * @throws VirtualDatabaseException if an error occurs while setting the state.
- * @throws MetaMatrixComponentException if an error occurs in communicating with a component.
- */
- Collection getVDBModels(VirtualDatabaseID vdbID)
- throws AuthorizationException, InvalidSessionException, VirtualDatabaseException, MetaMatrixComponentException;
-
- /**
- * Updates the <code>VirtualDatabase</code> state.
- * The following four states are valid.
- * <p>Incomplete = 1: The virtula database is not fully created yet. Set by runtime metadata during the creation of a new virtual database.</p>
- * <p>Inactive = 2: Not ready for use.</p>
- * <p>Active = 3: Ready for use.</p>
- * <p>Deleted =4: Ready for deletion.</p>
- *
- * @param vdbID ID of the VirtualDatabase.
- * @param state the state the VirtualDatabase should be set to.
- * @throws AuthorizationException if caller is not authorized to perform this method.
- * @throws InvalidSessionException if the <code>callerSessionID</code> is not valid or is expired.
- * @throws VirtualDatabaseException if an error occurs while setting the state.
- * @throws MetaMatrixComponentException if an error occurs in communicating with a component.
- */
- void setVDBState(VirtualDatabaseID vdbID, short state)
- throws AuthorizationException, InvalidSessionException, VirtualDatabaseException, MetaMatrixComponentException;
-
- /**
- * Migrate as many existing entitlements as possible to a newly deployed VDB.
- * @param sourceVDB The existing VDB from which to copy entitlements.
- * @param targetVDB The new VDB to which to copy entitlements.
- * @return The report that contains a result for each attempted copy.
- * @throws InvalidSessionException if the administrative session is invalid
- * @throws AuthorizationException if admninistrator does not have the authority to perform the requested operation.
- * @throws MetaMatrixComponentException if this service has trouble communicating.
- */
- EntitlementMigrationReport migrateEntitlements(VirtualDatabase sourceVDB, VirtualDatabase targetVDB)
- throws AuthorizationException, InvalidSessionException, MetaMatrixComponentException;
-
- /**
- * Migrate as many existing entitlements as possible from a supplied roles file to a newly deployed VDB.
- * @param targetVDB The new VDB to which to copy entitlements.
- * @param dataRoleContents Data Roles xml file contents.
- * @param overwriteExisting flag to determine if any existing roles should be overwritten.
- * @return The report that contains a result for each attempted copy.
- * @throws InvalidSessionException if the administrative session is invalid
- * @throws AuthorizationException if admninistrator does not have the authority to perform the requested operation.
- * @throws MetaMatrixComponentException if this service has trouble communicating.
- */
- EntitlementMigrationReport migrateEntitlements(VirtualDatabase targetVDB, char[] dataRoleContents, boolean overwriteExisting)
- throws AuthorizationException, InvalidSessionException, MetaMatrixComponentException;
-
- /**
- * Returns the entitlement tree for a given VDB version.
- * @param vDBName The name of a VDB for which to get its model info.
- * @param vDBVersion The name of a VDB version for which to get its model info.
- * @param policyID The policy (entitlement) for which to constrain the search for permissions.
- * @return The root of the entitlement tree for the given VEB version.
- * @throws InvalidSessionException if the administrative session is invalid
- * @throws AuthorizationException if admninistrator does not have the authority to perform the requested operation.
- * @throws MetaMatrixComponentException if this service has trouble communicating.
- */
- PermissionDataNode getEntitlementTree(String vDBName, String vDBVersion, AuthorizationPolicyID policyID)
- throws AuthorizationException, InvalidSessionException, MetaMatrixComponentException;
-
- /**
- * Get the tree of data nodes that make op a VDB. This tree represents <i>just</i>
- * the data node hierarchy and does not contain authorization information.
- * @param vdbName The name of the VDB for which data nodes are sought.
- * @param vdbVersion The version of the VDB for which data nodes are sought.
- * @return The root of the tree for the VDB and version.
- * @throws InvalidSessionException if the administrative session is invalid
- * @throws AuthorizationException if admninistrator does not have the authority to perform the requested operation.
- * @throws MetaMatrixComponentException if this service has trouble communicating.
- */
- PermissionDataNode getDataNodes(String vDBName, String vDBVersion)
- throws AuthorizationException, InvalidSessionException, MetaMatrixComponentException;
-
- /**
- * Get all data element paths for a VDB version.
- * @param vdbName The VDB name.
- * @param vdbVersion The version for the VDB.
- * @return All element paths in the given VDB version.
- */
- Set getAllDataNodeNames(String vdbName, String vdbVersion)
- throws InvalidSessionException, MetaMatrixComponentException;
-
- /**
- * Set the visibility levels for models in a virtual database.
- *
- * @param vdbID ID of the VirtualDatabase.
- * @param modelAndVLevels Map of model names to Short visibility levels.
- * Visibility levels are defined in MetadataConstants.VISIBILITY_TYPES.
- * @throws AuthorizationException if caller is not authorized to perform this method.
- * @throws InvalidSessionException if the <code>callerSessionID</code> is not valid or is expired.
- * @throws VirtualDatabaseException if an error occurs while setting the state.
- * @throws MetaMatrixComponentException if an error occurs in communicating with a component.
- */
-// public void setModelVisibilityLevels(VirtualDatabaseID vdbID, Map modelAndVLevels)
-// throws AuthorizationException, InvalidSessionException, VirtualDatabaseException, MetaMatrixComponentException;
-
- /**
- * Call to obtain the VDB Definition that can be used
- * for importing or exporting.
- *
- * @param vdbID ID of the VirtualDatabase.
- * @throws AuthorizationException if caller is not authorized to perform this method.
- * @throws InvalidSessionException if the <code>callerSessionID</code> is not valid or is expired.
- * @throws VirtualDatabaseException if an error occurs while setting the state.
- * @throws MetaMatrixComponentException if an error occurs in communicating with a component.
- */
- public byte[] getVDB(VirtualDatabaseID vdbID )
- throws AuthorizationException, InvalidSessionException, VirtualDatabaseException, MetaMatrixComponentException;
-
-
- /**
- * Call to import a VDB
- * @param vdbDefn is the VDB to be imported, this includes any new connector or
- * connector bindings.
- * @returns VirtualDatabase that was imported
- * @throws AuthorizationException if caller is not authorized to perform this method.
- * @throws InvalidSessionException if the <code>callerSessionID</code> is not valid or is expired.
- * @throws VirtualDatabaseException if an error occurs while setting the state.
- * @throws MetaMatrixComponentException if an error occurs in communicating with a component.
- */
- public VirtualDatabase importVDB(byte[] vdbStream)
- throws AuthorizationException, InvalidSessionException, VirtualDatabaseException, MetaMatrixComponentException;
-
- /**
- * Validate the given connector binding is capable for connectivity to a Materialization.
- * @param materializationConnector The connector that will be validated.
- * @return <code>true</code> iff the given connector binding passes validation.
- * @throws AuthorizationException
- * @throws InvalidSessionException
- * @throws VirtualDatabaseException
- * @throws MetaMatrixComponentException
- * @since 4.2
- */
- boolean validateConnectorBindingForMaterialization(ConnectorBinding materializationConnector)
- throws AuthorizationException, InvalidSessionException, VirtualDatabaseException, MetaMatrixComponentException;
-
- /**
- * Get the <code>MaterializationLoadScripts</code> for all materialized views in the materialization model
- * in this VDB.
- * @param materializationConnector the connector that will be used to connect to the Materialization.
- * @param vdb the VDB to which the Materialization belongs.
- * @param mmHost The host that the MetaMatrix server is running on.
- * @param mmPort The MetaMatrix server port.
- * @param materializationUserName The name of the user that will be logging in to the database that
- * holds this particular materialization and the user that the load/refresh scripts will run under.
- * @param materializationUserPwd The password of the materialization user.
- * @param metamatrixUserName User that will log into the MetaMatrix server to perform the refresh.
- * @param metamatrixUserPwd Password of the MetaMatrix user.
- * @return The object that represents all information nessecary to save the materialization load scripts.
- * @throws AuthorizationException
- * @throws InvalidSessionException
- * @throws VirtualDatabaseException
- * @throws MetaMatrixComponentException
- * @since 4.2
- */
- MaterializationLoadScripts getMaterializationScripts(ConnectorBinding materializationConnector, VDBDefn vdb,
- String mmHost, String mmPort, String materializationUserName, String materializationUserPwd, String metamatrixUserName, String metamatrixUserPwd)
- throws AuthorizationException, InvalidSessionException, VirtualDatabaseException, MetaMatrixComponentException;
-
-}
Modified: branches/JCA/connector-api/pom.xml
===================================================================
--- branches/JCA/connector-api/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connector-api/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -5,7 +5,7 @@
<parent>
<artifactId>teiid</artifactId>
<groupId>org.jboss.teiid</groupId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>teiid-connector-api</artifactId>
Modified: branches/JCA/connector-api/src/main/java/org/teiid/connector/api/Connection.java
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/api/Connection.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/api/Connection.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -22,14 +22,10 @@
package org.teiid.connector.api;
-import java.util.Map;
-
import javax.resource.spi.LocalTransaction;
import javax.transaction.xa.XAResource;
import org.teiid.connector.language.ICommand;
-import org.teiid.connector.metadata.runtime.ConnectorMetadata;
-import org.teiid.connector.metadata.runtime.DatatypeRecordImpl;
import org.teiid.connector.metadata.runtime.RuntimeMetadata;
/**
@@ -79,11 +75,5 @@
* @return null if not supported
*/
XAResource getXAResource() throws ConnectorException;
-
- /**
- * Gets the metadata information for this connection's underlying Connector instance.
- * @return
- */
- ConnectorMetadata getModelMetaData(String modelName, Map<String, DatatypeRecordImpl> dataTypes) throws ConnectorException;
}
Modified: branches/JCA/connector-api/src/main/java/org/teiid/connector/api/SourceSystemFunctions.java
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/api/SourceSystemFunctions.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/api/SourceSystemFunctions.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -110,8 +110,6 @@
public static final String DAYOFMONTH = "dayofmonth"; //$NON-NLS-1$
public static final String DAYOFWEEK = "dayofweek"; //$NON-NLS-1$
public static final String DAYOFYEAR = "dayofyear"; //$NON-NLS-1$
- public static final String FORMATDATE = "formatdate"; //$NON-NLS-1$
- public static final String FORMATTIME = "formattime"; //$NON-NLS-1$
public static final String FORMATTIMESTAMP = "formattimestamp"; //$NON-NLS-1$
public static final String HOUR = "hour"; //$NON-NLS-1$
public static final String MINUTE = "minute"; //$NON-NLS-1$
@@ -119,8 +117,6 @@
public static final String MONTH = "month"; //$NON-NLS-1$
public static final String MONTHNAME = "monthname"; //$NON-NLS-1$
public static final String NOW = "now"; //$NON-NLS-1$
- public static final String PARSEDATE = "parsedate"; //$NON-NLS-1$
- public static final String PARSETIME = "parsetime"; //$NON-NLS-1$
public static final String PARSETIMESTAMP = "parsetimestamp"; //$NON-NLS-1$
public static final String QUARTER = "quarter"; //$NON-NLS-1$
public static final String SECOND = "second"; //$NON-NLS-1$
Modified: branches/JCA/connector-api/src/main/java/org/teiid/connector/basic/BasicConnection.java
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/basic/BasicConnection.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/basic/BasicConnection.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -22,8 +22,6 @@
package org.teiid.connector.basic;
-import java.util.Map;
-
import javax.resource.spi.LocalTransaction;
import javax.transaction.xa.XAResource;
@@ -38,8 +36,6 @@
import org.teiid.connector.language.ICommand;
import org.teiid.connector.language.IProcedure;
import org.teiid.connector.language.IQueryCommand;
-import org.teiid.connector.metadata.runtime.ConnectorMetadata;
-import org.teiid.connector.metadata.runtime.DatatypeRecordImpl;
import org.teiid.connector.metadata.runtime.RuntimeMetadata;
/**
@@ -97,10 +93,4 @@
public XAResource getXAResource() throws ConnectorException {
return null;
}
-
- @Override
- public ConnectorMetadata getModelMetaData(String modelName, Map<String, DatatypeRecordImpl> dataTypes)
- throws ConnectorException {
- return null;
- }
}
Modified: branches/JCA/connector-api/src/main/java/org/teiid/connector/basic/WrappedConnection.java
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/basic/WrappedConnection.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/basic/WrappedConnection.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -22,7 +22,6 @@
package org.teiid.connector.basic;
import java.lang.reflect.Proxy;
-import java.util.Map;
import javax.resource.spi.LocalTransaction;
import javax.transaction.xa.XAResource;
@@ -33,13 +32,13 @@
import org.teiid.connector.api.ConnectorException;
import org.teiid.connector.api.Execution;
import org.teiid.connector.api.ExecutionContext;
+import org.teiid.connector.api.MetadataProvider;
import org.teiid.connector.basic.WrappedConnector.CapabilitesOverloader;
import org.teiid.connector.language.ICommand;
-import org.teiid.connector.metadata.runtime.ConnectorMetadata;
-import org.teiid.connector.metadata.runtime.DatatypeRecordImpl;
+import org.teiid.connector.metadata.runtime.MetadataFactory;
import org.teiid.connector.metadata.runtime.RuntimeMetadata;
-public class WrappedConnection implements Connection {
+public class WrappedConnection implements Connection, MetadataProvider {
private Connection conn;
private ConnectorEnvironment env;
@@ -94,15 +93,19 @@
public XAResource getXAResource() throws ConnectorException {
return conn.getXAResource();
}
-
+
@Override
- public ConnectorMetadata getModelMetaData(String modelName, Map<String, DatatypeRecordImpl> dataTypes)
- throws ConnectorException {
- return conn.getModelMetaData(modelName, dataTypes);
+ public void getConnectorMetadata(MetadataFactory metadataFactory) throws ConnectorException {
+ if (this.conn instanceof MetadataProvider) {
+ ((MetadataProvider) this.conn).getConnectorMetadata(metadataFactory);
+ } else {
+ throw new ConnectorException("Connector is not capable of providing metadata. Extend connector with MetadataProvider interface");
+ }
}
-
+
// Called by managed connection for the connection management
void setManagedConnection(BasicManagedConnection mc) {
this.mc = mc;
}
+
}
Modified: branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/AbstractMetadataRecord.java
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/AbstractMetadataRecord.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/AbstractMetadataRecord.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -23,182 +23,108 @@
package org.teiid.connector.metadata.runtime;
import java.io.Serializable;
-import java.util.Collection;
-import java.util.Properties;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.Map;
import com.metamatrix.core.util.EquivalenceUtil;
-import com.metamatrix.core.util.FileUtils;
-import com.metamatrix.core.util.HashCodeUtil;
/**
* AbstractMetadataRecord
*/
public abstract class AbstractMetadataRecord implements Serializable {
- /**
- * Constants for names of accessor methods that map to fields stored on the MetadataRecords.
- * Note the names do not have "get" on them, this is also the nameInSource
- * of the attributes on SystemPhysicalModel.
- * @since 4.3
- */
- public static interface MetadataFieldNames {
- String RECORD_TYPE_FIELD = "Recordtype"; //$NON-NLS-1$
- String NAME_FIELD = "Name"; //$NON-NLS-1$
- String FULL_NAME_FIELD = "FullName"; //$NON-NLS-1$
- String MODEL_NAME_FIELD = "ModelName"; //$NON-NLS-1$
- String UUID_FIELD = "UUID"; //$NON-NLS-1$
- String NAME_IN_SOURCE_FIELD = "NameInSource"; //$NON-NLS-1$
- String PARENT_UUID_FIELD = "ParentUUID"; //$NON-NLS-1$
- }
-
public final static char NAME_DELIM_CHAR = '.';
- private String pathString;
- private String modelName;
- private char recordType;
+ private String uuid; //globally unique id
+ private String name; //contextually unique name
- private String uuid;
- private String parentUUID;
private String nameInSource;
- private String fullName;
- private String name;
- private Collection<PropertyRecordImpl> extensionProperties;
- private transient Properties properties;
- private AnnotationRecordImpl annotation;
+ private LinkedHashMap<String, String> properties;
+ private String annotation;
public String getUUID() {
return uuid;
}
+
public void setUUID(String uuid) {
this.uuid = uuid;
}
- public String getParentUUID() {
- return parentUUID;
- }
- public void setParentUUID(String parentUUID) {
- this.parentUUID = parentUUID;
- }
+
public String getNameInSource() {
return nameInSource;
}
+
public void setNameInSource(String nameInSource) {
this.nameInSource = nameInSource;
}
+
+ /**
+ * WARNING - The name returned by this method may be ambiguous and
+ * is not SQL safe - it may need quoted/escaped
+ */
public String getFullName() {
- return this.fullName == null ? this.name : this.fullName;
+ AbstractMetadataRecord parent = getParent();
+ if (parent != null) {
+ return parent.getFullName() + NAME_DELIM_CHAR + getName();
+ }
+ return name;
}
- public void setFullName(String fullName) {
- this.fullName = fullName;
+
+ public AbstractMetadataRecord getParent() {
+ return null;
}
+
public String getName() {
- if(this.name == null || this.name.trim().length() == 0) {
- int nmIdx = this.fullName != null ? this.fullName.lastIndexOf(NAME_DELIM_CHAR) : -1;
- if (nmIdx == -1) {
- this.name = this.fullName;
- } else {
- this.name = this.fullName != null ? this.fullName.substring(nmIdx+1) : null;
- }
- }
return name;
}
+
public void setName(String name) {
this.name = name;
}
+
+ public String toString() {
+ StringBuffer sb = new StringBuffer(100);
+ sb.append(getClass().getSimpleName());
+ sb.append(" name="); //$NON-NLS-1$
+ sb.append(getName());
+ sb.append(", nameInSource="); //$NON-NLS-1$
+ sb.append(getNameInSource());
+ sb.append(", uuid="); //$NON-NLS-1$
+ sb.append(getUUID());
+ return sb.toString();
+ }
/**
- * @see com.metamatrix.modeler.core.metadata.runtime.MetadataRecord#getModelName()
+ * Return the extension properties for this record - may be null
+ * if {@link #setProperties(LinkedHashMap)} or {@link #setProperty(String, String)}
+ * has not been called
+ * @return
*/
- public String getModelName() {
- if(this.modelName == null) {
- int prntIdx = getFullName() != null ? getFullName().indexOf(NAME_DELIM_CHAR) : -1;
- if (prntIdx <= 0) {
- this.modelName = getFullName();
- } else {
- this.modelName = getFullName() != null ? getFullName().substring(0, prntIdx) : null;
- }
+ public Map<String, String> getProperties() {
+ if (properties == null) {
+ return Collections.emptyMap();
}
-
- return this.modelName;
- }
-
- /*
- * @see com.metamatrix.modeler.core.metadata.runtime.MetadataRecord#getPathString()
- */
- public String getPathString() {
- if(this.pathString == null) {
- this.pathString = getFullName() != null ? getFullName().replace(NAME_DELIM_CHAR, FileUtils.SEPARATOR) : null;
- }
- return this.pathString;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.modeler.core.metadata.runtime.MetadataRecord#getPath()
- */
- public String getPath() {
- return getPathString();
- }
+ return properties;
+ }
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.MetadataRecord#getParentFullName()
- * @deprecated the returned value may be incorrect in the case of an XML element (see defects #11326 and #11362)
- */
- public String getParentFullName() {
- int prntIdx = getFullName() != null ? getFullName().lastIndexOf(NAME_DELIM_CHAR+getName()) : -1;
- if (prntIdx <= 0) {
- return ""; //$NON-NLS-1$
- }
- return getFullName().substring(0, prntIdx);
+ public void setProperty(String key, String value) {
+ if (this.properties == null) {
+ this.properties = new LinkedHashMap<String, String>();
+ }
+ this.properties.put(key, value);
}
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.MetadataRecord#getParentPathString()
- * @deprecated the returned value may be incorrect in the case of an XML element (see defects #11326 and #11362)
- */
- public String getParentPathString() {
- String parentFullName = getParentFullName();
- return parentFullName != null ? parentFullName.replace(NAME_DELIM_CHAR, FileUtils.SEPARATOR) : null;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.modeler.core.metadata.runtime.MetadataRecord#getRecordType()
- */
- public char getRecordType() {
- return this.recordType;
- }
-
- /**
- * @param c
- */
- public void setRecordType(char c) {
- recordType = c;
- }
-
- public String toString() {
- return getFullName();
- }
- public Collection<PropertyRecordImpl> getExtensionProperties() {
- return extensionProperties;
- }
-
- public void setExtensionProperties(Collection<PropertyRecordImpl> properties) {
- this.extensionProperties = properties;
- }
-
- public Properties getProperties() {
- return properties;
- }
-
- public void setProperties(Properties properties) {
+ public void setProperties(LinkedHashMap<String, String> properties) {
this.properties = properties;
}
- public AnnotationRecordImpl getAnnotation() {
+ public String getAnnotation() {
return annotation;
}
- public void setAnnotation(AnnotationRecordImpl annotation) {
+ public void setAnnotation(String annotation) {
this.annotation = annotation;
}
@@ -206,40 +132,21 @@
* Compare two records for equality.
*/
public boolean equals(Object obj) {
-
if(obj == this) {
return true;
}
- if(obj == null || obj.getClass() != this.getClass()) {
+ if(obj.getClass() != this.getClass()) {
return false;
}
AbstractMetadataRecord other = (AbstractMetadataRecord)obj;
- if(this.getRecordType() != other.getRecordType()) { return false; }
- if(!EquivalenceUtil.areEqual(this.getUUID(), other.getUUID())) { return false; }
- if(!EquivalenceUtil.areEqual(this.getParentUUID(), other.getParentUUID())) { return false; }
- if(!EquivalenceUtil.areEqual(this.getFullName(), other.getFullName())) { return false; }
- if(!EquivalenceUtil.areEqual(this.getNameInSource(), other.getNameInSource())) { return false; }
-
- return true;
+ return EquivalenceUtil.areEqual(this.getUUID(), other.getUUID());
}
- /**
- * WARNING: The hash code relies on the variables
- * in the record, so changing the variables will change the hash code, causing
- * a select to be lost in a hash structure. Do not hash a record if you plan
- * to change it.
- */
public int hashCode() {
- int myHash = 0;
- myHash = HashCodeUtil.hashCode(myHash, this.recordType);
- myHash = HashCodeUtil.hashCode(myHash, this.getFullName());
- myHash = HashCodeUtil.hashCode(myHash, this.getUUID());
- myHash = HashCodeUtil.hashCode(myHash, this.getParentUUID());
- myHash = HashCodeUtil.hashCode(myHash, this.getNameInSource());
- return myHash;
+ return this.uuid.hashCode();
}
}
\ No newline at end of file
Deleted: branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/AnnotationRecordImpl.java
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/AnnotationRecordImpl.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/AnnotationRecordImpl.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,70 +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.connector.metadata.runtime;
-
-
-
-/**
- * AnnotationRecordImpl
- */
-public class AnnotationRecordImpl extends AbstractMetadataRecord {
-
- private String description;
-
- //==================================================================================
- // I N T E R F A C E M E T H O D S
- //==================================================================================
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.AnnotationRecord#getDescription()
- */
- public String getDescription() {
- return this.description;
- }
-
- // ==================================================================================
- // P U B L I C M E T H O D S
- // ==================================================================================
-
- public String toString() {
- StringBuffer sb = new StringBuffer(100);
- sb.append(getClass().getSimpleName());
- sb.append(" name="); //$NON-NLS-1$
- sb.append(getName());
- sb.append(", nameInSource="); //$NON-NLS-1$
- sb.append(getNameInSource());
- sb.append(", uuid="); //$NON-NLS-1$
- sb.append(getUUID());
- sb.append(", pathInModel="); //$NON-NLS-1$
- sb.append(getPath());
- return sb.toString();
- }
-
- /**
- * @param string
- */
- public void setDescription(final String string) {
- this.description = string;
- }
-
-}
\ No newline at end of file
Modified: branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/BaseColumn.java
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/BaseColumn.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/BaseColumn.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -22,20 +22,31 @@
package org.teiid.connector.metadata.runtime;
-public class BaseColumn extends AbstractMetadataRecord {
+public abstract class BaseColumn extends AbstractMetadataRecord {
+ public enum NullType {
+ No_Nulls {
+ @Override
+ public String toString() {
+ return "No Nulls"; //$NON-NLS-1$
+ }
+ },
+ Nullable,
+ Unknown
+ }
+
private String datatypeUUID;
private String runtimeType;
- private Object defaultValue;
+ private String defaultValue;
private int length;
private int scale;
private int radix;
private int precision;
- private int nullType;
+ private NullType nullType;
private int position;
- private DatatypeRecordImpl datatype;
+ private Datatype datatype;
- public Object getDefaultValue() {
+ public String getDefaultValue() {
return defaultValue;
}
@@ -67,7 +78,10 @@
return position;
}
- public int getNullType() {
+ public NullType getNullType() {
+ if (nullType == null) {
+ return NullType.Unknown;
+ }
return nullType;
}
@@ -87,7 +101,7 @@
radix = i;
}
- public void setNullType(int i) {
+ public void setNullType(NullType i) {
nullType = i;
}
@@ -103,15 +117,15 @@
datatypeUUID = string;
}
- public void setDefaultValue(Object object) {
+ public void setDefaultValue(String object) {
defaultValue = object;
}
- public DatatypeRecordImpl getDatatype() {
+ public Datatype getDatatype() {
return datatype;
}
- public void setDatatype(DatatypeRecordImpl datatype) {
+ public void setDatatype(Datatype datatype) {
this.datatype = datatype;
}
Copied: branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/Column.java (from rev 1614, trunk/connector-api/src/main/java/org/teiid/connector/metadata/runtime/Column.java)
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/Column.java (rev 0)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/Column.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,250 @@
+/*
+ * 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.connector.metadata.runtime;
+
+
+/**
+ * ColumnRecordImpl
+ */
+public class Column extends BaseColumn implements Comparable<Column> {
+
+ public enum SearchType {
+ Unsearchable,
+ Like_Only {
+ @Override
+ public String toString() {
+ return "Like Only"; //$NON-NLS-1$
+ }
+ },
+ All_Except_Like {
+ @Override
+ public String toString() {
+ return "All Except Like"; //$NON-NLS-1$
+ }
+ },
+ Searchable
+ }
+
+ private boolean selectable = true;
+ private boolean updatable;
+ private boolean autoIncrementable;
+ private boolean caseSensitive;
+ private boolean signed;
+ private boolean currency;
+ private boolean fixedLength;
+ private SearchType searchType;
+ private String minValue;
+ private String maxValue;
+ private String nativeType;
+ private String format;
+ private int charOctetLength;
+ private int distinctValues = -1;
+ private int nullValues = -1;
+ private ColumnSet parent;
+
+ public void setParent(ColumnSet parent) {
+ this.parent = parent;
+ }
+
+ @Override
+ public AbstractMetadataRecord getParent() {
+ return parent;
+ }
+
+ @Override
+ public int compareTo(Column record) {
+ return this.getPosition() - record.getPosition();
+ }
+
+ public int getCharOctetLength() {
+ return charOctetLength;
+ }
+
+ public String getMaxValue() {
+ return maxValue;
+ }
+
+ public String getMinValue() {
+ return minValue;
+ }
+
+ public SearchType getSearchType() {
+ if (searchType == null) {
+ return this.getDatatype().getSearchType();
+ }
+ return searchType;
+ }
+
+ public String getFormat() {
+ return format;
+ }
+
+ public boolean isAutoIncrementable() {
+ return autoIncrementable;
+ }
+
+ public boolean isCaseSensitive() {
+ return caseSensitive;
+ }
+
+ public boolean isCurrency() {
+ return currency;
+ }
+
+ public boolean isFixedLength() {
+ return fixedLength;
+ }
+
+ public boolean isSelectable() {
+ return selectable;
+ }
+
+ public boolean isSigned() {
+ return signed;
+ }
+
+ public boolean isUpdatable() {
+ return updatable;
+ }
+
+ public String getNativeType() {
+ return nativeType;
+ }
+
+ public int getDistinctValues() {
+ return this.distinctValues;
+ }
+
+ public int getNullValues() {
+ return this.nullValues;
+ }
+
+ /**
+ * @param b
+ */
+ public void setAutoIncrementable(boolean b) {
+ autoIncrementable = b;
+ }
+
+ /**
+ * @param b
+ */
+ public void setCaseSensitive(boolean b) {
+ caseSensitive = b;
+ }
+
+ /**
+ * @param i
+ */
+ public void setCharOctetLength(int i) {
+ charOctetLength = i;
+ }
+
+ /**
+ * @param b
+ */
+ public void setCurrency(boolean b) {
+ currency = b;
+ }
+
+ /**
+ * @param b
+ */
+ public void setFixedLength(boolean b) {
+ fixedLength = b;
+ }
+
+ /**
+ * @param object
+ */
+ public void setMaxValue(String object) {
+ maxValue = object;
+ }
+
+ /**
+ * @param object
+ */
+ public void setMinValue(String object) {
+ minValue = object;
+ }
+
+ /**
+ * @param s
+ */
+ public void setSearchType(SearchType s) {
+ searchType = s;
+ }
+
+ /**
+ * @param b
+ */
+ public void setSelectable(boolean b) {
+ selectable = b;
+ }
+
+ /**
+ * @param b
+ */
+ public void setSigned(boolean b) {
+ signed = b;
+ }
+
+ /**
+ * @param b
+ */
+ public void setUpdatable(boolean b) {
+ updatable = b;
+ }
+
+ /**
+ * @param string
+ */
+ public void setFormat(String string) {
+ format = string;
+ }
+
+ /**
+ * @param distinctValues The distinctValues to set.
+ * @since 4.3
+ */
+ public void setDistinctValues(int distinctValues) {
+ this.distinctValues = distinctValues;
+ }
+
+ /**
+ * @param nullValues The nullValues to set.
+ * @since 4.3
+ */
+ public void setNullValues(int nullValues) {
+ this.nullValues = nullValues;
+ }
+
+ /**
+ * @param nativeType The nativeType to set.
+ * @since 4.2
+ */
+ public void setNativeType(String nativeType) {
+ this.nativeType = nativeType;
+ }
+
+}
\ No newline at end of file
Deleted: branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ColumnRecordImpl.java
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ColumnRecordImpl.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ColumnRecordImpl.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,305 +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.connector.metadata.runtime;
-
-/**
- * ColumnRecordImpl
- */
-public class ColumnRecordImpl extends BaseColumn implements Comparable<ColumnRecordImpl> {
-
- private boolean selectable = true;
- private boolean updatable;
- private boolean autoIncrementable;
- private boolean caseSensitive;
- private boolean signed;
- private boolean currency;
- private boolean fixedLength;
- private boolean tranformationInputParameter;
- private int searchType;
- private Object minValue;
- private Object maxValue;
- private String nativeType;
- private String format;
- private int charOctetLength;
- private int distinctValues = -1;
- private int nullValues = -1;
-
- //==================================================================================
- // I N T E R F A C E M E T H O D S
- //==================================================================================
-
- @Override
- public int compareTo(ColumnRecordImpl record) {
- return this.getPosition() - record.getPosition();
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.modeler.core.metadata.runtime.ColumnRecord#getCharOctetLength()
- */
- public int getCharOctetLength() {
- return charOctetLength;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.modeler.core.metadata.runtime.ColumnRecord#getMaxValue()
- */
- public Object getMaxValue() {
- return maxValue;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.modeler.core.metadata.runtime.ColumnRecord#getMinValue()
- */
- public Object getMinValue() {
- return minValue;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.modeler.core.metadata.runtime.ColumnRecord#getSearchTye()
- */
- public int getSearchType() {
- return searchType;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.modeler.core.metadata.runtime.ColumnRecord#getFormat()
- */
- public String getFormat() {
- return format;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.modeler.core.metadata.runtime.ColumnRecord#isAutoIncrementable()
- */
- public boolean isAutoIncrementable() {
- return autoIncrementable;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.modeler.core.metadata.runtime.ColumnRecord#isCaseSensitive()
- */
- public boolean isCaseSensitive() {
- return caseSensitive;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.modeler.core.metadata.runtime.ColumnRecord#isCurrency()
- */
- public boolean isCurrency() {
- return currency;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.modeler.core.metadata.runtime.ColumnRecord#isFixedLength()
- */
- public boolean isFixedLength() {
- return fixedLength;
- }
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.ColumnRecord#isTranformationInputParameter()
- * @since 4.2
- */
- public boolean isTranformationInputParameter() {
- return tranformationInputParameter;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.modeler.core.metadata.runtime.ColumnRecord#isSelectable()
- */
- public boolean isSelectable() {
- return selectable;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.modeler.core.metadata.runtime.ColumnRecord#isSigned()
- */
- public boolean isSigned() {
- return signed;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.modeler.core.metadata.runtime.ColumnRecord#isUpdatable()
- */
- public boolean isUpdatable() {
- return updatable;
- }
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.ColumnRecord#getNativeType()
- * @since 4.2
- */
- public String getNativeType() {
- return nativeType;
- }
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.ColumnRecord#getDistinctValues()
- * @since 4.3
- */
- public int getDistinctValues() {
- return this.distinctValues;
- }
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.ColumnRecord#getNullValues()
- * @since 4.3
- */
- public int getNullValues() {
- return this.nullValues;
- }
-
- // ==================================================================================
- // P U B L I C M E T H O D S
- // ==================================================================================
-
- /**
- * @param b
- */
- public void setAutoIncrementable(boolean b) {
- autoIncrementable = b;
- }
-
- /**
- * @param b
- */
- public void setCaseSensitive(boolean b) {
- caseSensitive = b;
- }
-
- /**
- * @param i
- */
- public void setCharOctetLength(int i) {
- charOctetLength = i;
- }
-
- /**
- * @param b
- */
- public void setCurrency(boolean b) {
- currency = b;
- }
-
- /**
- * @param b
- */
- public void setFixedLength(boolean b) {
- fixedLength = b;
- }
-
- /**
- * @param object
- */
- public void setMaxValue(Object object) {
- maxValue = object;
- }
-
- /**
- * @param object
- */
- public void setMinValue(Object object) {
- minValue = object;
- }
-
- /**
- * @param s
- */
- public void setSearchType(int s) {
- searchType = s;
- }
-
- /**
- * @param b
- */
- public void setSelectable(boolean b) {
- selectable = b;
- }
-
- /**
- * @param b
- */
- public void setSigned(boolean b) {
- signed = b;
- }
-
- /**
- * @param b
- */
- public void setUpdatable(boolean b) {
- updatable = b;
- }
-
- /**
- * @param string
- */
- public void setFormat(String string) {
- format = string;
- }
-
- /**
- * @param distinctValues The distinctValues to set.
- * @since 4.3
- */
- public void setDistinctValues(int distinctValues) {
- this.distinctValues = distinctValues;
- }
-
- /**
- * @param nullValues The nullValues to set.
- * @since 4.3
- */
- public void setNullValues(int nullValues) {
- this.nullValues = nullValues;
- }
-
- /**
- * @param nativeType The nativeType to set.
- * @since 4.2
- */
- public void setNativeType(String nativeType) {
- this.nativeType = nativeType;
- }
-
- /**
- * @param b
- */
- public void setTransformationInputParameter(boolean b) {
- this.tranformationInputParameter = b;
- }
-
- public String toString() {
- StringBuffer sb = new StringBuffer(100);
- sb.append(getClass().getSimpleName());
- sb.append(" name="); //$NON-NLS-1$
- sb.append(getName());
- sb.append(", nameInSource="); //$NON-NLS-1$
- sb.append(getNameInSource());
- sb.append(", uuid="); //$NON-NLS-1$
- sb.append(getUUID());
- sb.append(", pathInModel="); //$NON-NLS-1$
- sb.append(getPath());
- return sb.toString();
- }
-
-}
\ No newline at end of file
Copied: branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ColumnSet.java (from rev 1614, trunk/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ColumnSet.java)
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ColumnSet.java (rev 0)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ColumnSet.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,53 @@
+/*
+ * 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.connector.metadata.runtime;
+
+import java.util.List;
+
+public class ColumnSet<T extends AbstractMetadataRecord> extends AbstractMetadataRecord {
+
+ private List<Column> columns;
+ private T parent;
+
+ public List<Column> getColumns() {
+ return columns;
+ }
+
+ public void addColumn(Column column) {
+ columns.add(column);
+ }
+
+ public void setColumns(List<Column> columns) {
+ this.columns = columns;
+ }
+
+ @Override
+ public T getParent() {
+ return parent;
+ }
+
+ public void setParent(T parent) {
+ this.parent = parent;
+ }
+
+}
\ No newline at end of file
Deleted: branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ColumnSetRecordImpl.java
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ColumnSetRecordImpl.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ColumnSetRecordImpl.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,103 +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.connector.metadata.runtime;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * ColumnSetRecordImpl
- */
-public class ColumnSetRecordImpl extends AbstractMetadataRecord {
-
- private List<String> columnIDs;
- private short type;
- private List<ColumnRecordImpl> columns;
-
- public ColumnSetRecordImpl(short type) {
- this.type = type;
- }
-
- public List<ColumnRecordImpl> getColumns() {
- return columns;
- }
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.ColumnSetRecord#getColumnIDs()
- */
- public List<String> getColumnIDs() {
- return columnIDs;
- }
-
- /**
- * Retrieves a list of ColumnRecordImpls containing only id and position information (used by System Tables)
- */
- public List<ColumnRecordImpl> getColumnIdEntries() {
- int count = getColumnCount();
- final List<ColumnRecordImpl> entryRecords = new ArrayList<ColumnRecordImpl>(count);
- for (int i = 0; i < count; i++) {
- final String uuid = getUUID(i);
- ColumnRecordImpl impl = new ColumnRecordImpl();
- entryRecords.add( impl );
- impl.setUUID(uuid);
- impl.setPosition(i+1);
- }
- return entryRecords;
- }
-
- private int getColumnCount() {
- if (columnIDs != null) {
- return columnIDs.size();
- }
- if (columns != null) {
- return columns.size();
- }
- return 0;
- }
-
- private String getUUID(int index) {
- if (columnIDs != null) {
- return columnIDs.get(index);
- }
- return columns.get(index).getUUID();
- }
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.ColumnSetRecord#getType()
- */
- public short getType() {
- return type;
- }
-
- /**
- * @param list
- */
- public void setColumnIDs(List<String> list) {
- columnIDs = list;
- }
-
- public void setColumns(List<ColumnRecordImpl> columns) {
- this.columns = columns;
- }
-
-}
\ No newline at end of file
Deleted: branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ConnectorMetadata.java
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ConnectorMetadata.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ConnectorMetadata.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,63 +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.connector.metadata.runtime;
-
-import java.io.Serializable;
-import java.util.Collection;
-
-public interface ConnectorMetadata extends Serializable {
-
- /**
- * Get the model that this metadata represents. The model name is treated as
- * a top level schema for all source metadata.
- * @return
- */
- ModelRecordImpl getModel();
-
- /**
- * Get the tables defined for this model
- * @return
- */
- Collection<TableRecordImpl> getTables();
-
- /**
- * Get the procedures defined for this model
- * @return
- */
- Collection<ProcedureRecordImpl> getProcedures();
-
- /**
- * Get the annotations defined for this model
- * @return
- */
- Collection<AnnotationRecordImpl> getAnnotations();
-
- /**
- * Get the extension properties defined for this model
- * @return
- */
- Collection<PropertyRecordImpl> getProperties();
-
- //costing
-
-}
Copied: branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/Datatype.java (from rev 1614, trunk/connector-api/src/main/java/org/teiid/connector/metadata/runtime/Datatype.java)
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/Datatype.java (rev 0)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/Datatype.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,282 @@
+/*
+ * 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.connector.metadata.runtime;
+
+import org.teiid.connector.metadata.runtime.BaseColumn.NullType;
+import org.teiid.connector.metadata.runtime.Column.SearchType;
+
+
+
+/**
+ * ColumnRecordImpl
+ */
+public class Datatype extends AbstractMetadataRecord {
+
+ public enum Type {
+ Basic,
+ UserDefined,
+ ResultSet
+ }
+
+ public enum Variety {
+ Atomic,
+ List,
+ Union,
+ Complex
+ }
+
+ /** Delimiter used to separate the URI string from the URI fragment */
+ public static final String URI_REFERENCE_DELIMITER = "#"; //$NON-NLS-1$
+
+ private static final String DEFAULT_JAVA_CLASS_NAME = "java.lang.Object"; //$NON-NLS-1$
+
+ private int length;
+ private int precisionLength;
+ private int scale;
+ private int radix;
+ private boolean isSigned;
+ private boolean isAutoIncrement;
+ private boolean isCaseSensitive;
+ private Type type;
+ private SearchType searchType;
+ private NullType nullType;
+ private String javaClassName = DEFAULT_JAVA_CLASS_NAME;
+ private String runtimeTypeName;
+ private String datatypeID;
+ private String basetypeID;
+ private String primitiveTypeID;
+ private Variety varietyType;
+
+ public int getLength() {
+ return this.length;
+ }
+
+ public int getPrecisionLength() {
+ return this.precisionLength;
+ }
+
+ public int getScale() {
+ return this.scale;
+ }
+
+ public int getRadix() {
+ return this.radix;
+ }
+
+ public boolean isSigned() {
+ return this.isSigned;
+ }
+
+ public boolean isAutoIncrement() {
+ return this.isAutoIncrement;
+ }
+
+ public boolean isCaseSensitive() {
+ return this.isCaseSensitive;
+ }
+
+ public Type getType() {
+ return this.type;
+ }
+
+ public boolean isBuiltin() {
+ return getType() == Type.Basic;
+ }
+
+
+ public SearchType getSearchType() {
+ return this.searchType;
+ }
+
+ public NullType getNullType() {
+ if (this.nullType == null) {
+ return NullType.Unknown;
+ }
+ return this.nullType;
+ }
+
+ public String getJavaClassName() {
+ return this.javaClassName;
+ }
+
+ public String getRuntimeTypeName() {
+ return this.runtimeTypeName;
+ }
+
+ public String getDatatypeID() {
+ return this.datatypeID;
+ }
+
+ public String getBasetypeID() {
+ return this.basetypeID;
+ }
+
+ public String getBasetypeName() {
+ if ( this.basetypeID != null ) {
+ final int i = getBasetypeID().lastIndexOf(URI_REFERENCE_DELIMITER);
+ if ( i != -1 && getBasetypeID().length() > (i+1)) {
+ return getBasetypeID().substring(i+1);
+ }
+ }
+ return null;
+ }
+
+ public String getPrimitiveTypeID() {
+ return this.primitiveTypeID;
+ }
+
+ public Variety getVarietyType() {
+ return this.varietyType;
+ }
+
+ /**
+ * @param string
+ */
+ public void setBasetypeID(String string) {
+ basetypeID = string;
+ }
+
+ /**
+ * @param string
+ */
+ public void setPrimitiveTypeID(String string) {
+ primitiveTypeID = string;
+ }
+
+ /**
+ * @param b
+ */
+ public void setAutoIncrement(boolean b) {
+ isAutoIncrement = b;
+ }
+
+ /**
+ * @param b
+ */
+ public void setCaseSensitive(boolean b) {
+ isCaseSensitive = b;
+ }
+
+ /**
+ * @param b
+ */
+ public void setSigned(boolean b) {
+ isSigned = b;
+ }
+
+ /**
+ * @param string
+ */
+ public void setJavaClassName(String string) {
+ javaClassName = string;
+ }
+
+ /**
+ * @param i
+ */
+ public void setLength(int i) {
+ length = i;
+ }
+
+ /**
+ * @param s
+ */
+ public void setNullType(NullType s) {
+ nullType = s;
+ }
+
+ /**
+ * @param i
+ */
+ public void setPrecisionLength(int i) {
+ precisionLength = i;
+ }
+
+ /**
+ * @param i
+ */
+ public void setRadix(int i) {
+ radix = i;
+ }
+
+ /**
+ * @param string
+ */
+ public void setRuntimeTypeName(String string) {
+ runtimeTypeName = string;
+ }
+
+ /**
+ * @param i
+ */
+ public void setScale(int i) {
+ scale = i;
+ }
+
+ /**
+ * @param s
+ */
+ public void setSearchType(SearchType s) {
+ searchType = s;
+ }
+
+ /**
+ * @param s
+ */
+ public void setType(Type s) {
+ type = s;
+ }
+
+ /**
+ * @param string
+ */
+ public void setDatatypeID(String string) {
+ datatypeID = string;
+ }
+
+ /**
+ * @param s
+ */
+ public void setVarietyType(Variety s) {
+ varietyType = s;
+ }
+
+ public String toString() {
+ StringBuffer sb = new StringBuffer(100);
+ sb.append(getClass().getSimpleName());
+ sb.append(" name="); //$NON-NLS-1$
+ sb.append(getName());
+ sb.append(", basetype name="); //$NON-NLS-1$
+ sb.append(getBasetypeName());
+ sb.append(", runtimeType="); //$NON-NLS-1$
+ sb.append(getRuntimeTypeName());
+ sb.append(", javaClassName="); //$NON-NLS-1$
+ sb.append(getJavaClassName());
+ sb.append(", ObjectID="); //$NON-NLS-1$
+ sb.append(getUUID());
+ sb.append(", datatypeID="); //$NON-NLS-1$
+ sb.append(getDatatypeID());
+ return sb.toString();
+ }
+
+}
\ No newline at end of file
Deleted: branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/DatatypeRecordImpl.java
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/DatatypeRecordImpl.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/DatatypeRecordImpl.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,391 +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.connector.metadata.runtime;
-
-import java.util.List;
-
-
-/**
- * ColumnRecordImpl
- */
-public class DatatypeRecordImpl extends AbstractMetadataRecord {
-
- /**
- * Constants for names of accessor methods that map to fields stored on the DatatypeRecords.
- * Note the names do not have "get" on them, this is also the nameInsource
- * of the attributes on SystemPhysicalModel.
- * @since 4.3
- */
- public static interface MetadataFieldNames {
-
- String DATA_TYPE_UUID = "DatatypeID"; //$NON-NLS-1$
- String BASE_TYPE_UUID = "BasetypeID"; //$NON-NLS-1$
- String RUN_TYPE_NAME = "RuntimeTypeName"; //$NON-NLS-1$
- }
-
- /** Delimiter used to separate the URI string from the URI fragment */
- public static final String URI_REFERENCE_DELIMITER = "#"; //$NON-NLS-1$
-
- private static final String DEFAULT_JAVA_CLASS_NAME = "java.lang.Object"; //$NON-NLS-1$
-
- private int length;
- private int precisionLength;
- private int scale;
- private int radix;
- private boolean isSigned;
- private boolean isAutoIncrement;
- private boolean isCaseSensitive;
- private short type;
- private short searchType;
- private short nullType;
- private String javaClassName = DEFAULT_JAVA_CLASS_NAME;
- private String runtimeTypeName;
- private String datatypeID;
- private String basetypeID;
- private String primitiveTypeID;
- private short varietyType;
- private List varietyProps;
-
- //==================================================================================
- // I N T E R F A C E M E T H O D S
- //==================================================================================
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.MetadataRecord#getName()
- */
- public String getName() {
- final String fullName = super.getFullName();
- int indx = fullName.lastIndexOf(URI_REFERENCE_DELIMITER);
- if (indx > -1) {
- return fullName.substring(indx+1);
- }
- indx = fullName.lastIndexOf(AbstractMetadataRecord.NAME_DELIM_CHAR);
- if (indx > -1) {
- return fullName.substring(indx+1);
- }
- return fullName;
- }
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.MetadataRecord#getModelName()
- */
- public String getModelName() {
- final String fullName = super.getFullName();
- int indx = fullName.lastIndexOf(URI_REFERENCE_DELIMITER);
- if (indx > -1) {
- return fullName.substring(0, indx);
- }
- indx = fullName.lastIndexOf(AbstractMetadataRecord.NAME_DELIM_CHAR);
- if (indx > -1) {
- return fullName.substring(0, indx);
- }
- return fullName;
- }
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.DatatypeRecord#getLength()
- */
- public int getLength() {
- return this.length;
- }
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.DatatypeRecord#getPrecisionLength()
- */
- public int getPrecisionLength() {
- return this.precisionLength;
- }
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.DatatypeRecord#getScale()
- */
- public int getScale() {
- return this.scale;
- }
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.DatatypeRecord#getRadix()
- */
- public int getRadix() {
- return this.radix;
- }
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.DatatypeRecord#isSigned()
- */
- public boolean isSigned() {
- return this.isSigned;
- }
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.DatatypeRecord#isAutoIncrement()
- */
- public boolean isAutoIncrement() {
- return this.isAutoIncrement;
- }
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.DatatypeRecord#isCaseSensitive()
- */
- public boolean isCaseSensitive() {
- return this.isCaseSensitive;
- }
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.DatatypeRecord#getType()
- */
- public short getType() {
- return this.type;
- }
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.DatatypeRecord#isBuiltin()
- */
- public boolean isBuiltin() {
- if ( getType() == MetadataConstants.DATATYPE_TYPES.BASIC ) {
- return true;
- }
- return false;
- }
-
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.DatatypeRecord#getSearchType()
- */
- public short getSearchType() {
- return this.searchType;
- }
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.DatatypeRecord#getNullType()
- */
- public short getNullType() {
- return this.nullType;
- }
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.DatatypeRecord#getJavaClassName()
- */
- public String getJavaClassName() {
- return this.javaClassName;
- }
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.DatatypeRecord#getRuntimeTypeName()
- */
- public String getRuntimeTypeName() {
- return this.runtimeTypeName;
- }
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.DatatypeRecord#getDatatypeID()
- */
- public String getDatatypeID() {
- return this.datatypeID;
- }
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.DatatypeRecord#getBasetypeID()
- */
- public String getBasetypeID() {
- return this.basetypeID;
- }
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.DatatypeRecord#getBasetypeName()
- */
- public String getBasetypeName() {
- if ( this.basetypeID != null ) {
- final int i = getBasetypeID().lastIndexOf(URI_REFERENCE_DELIMITER);
- if ( i != -1 && getBasetypeID().length() > (i+1)) {
- return getBasetypeID().substring(i+1);
- }
- }
- return null;
- }
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.DatatypeRecord#getPrimitiveTypeID()
- * @since 4.3
- */
- public String getPrimitiveTypeID() {
- return this.primitiveTypeID;
- }
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.DatatypeRecord#getVarietyType()
- */
- public short getVarietyType() {
- return this.varietyType;
- }
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.DatatypeRecord#getVarietyProps()
- */
- public List getVarietyProps() {
- return this.varietyProps;
- }
-
- // ==================================================================================
- // P U B L I C M E T H O D S
- // ==================================================================================
-
- /**
- * @param string
- */
- public void setBasetypeID(String string) {
- basetypeID = string;
- }
-
- /**
- * @param string
- */
- public void setPrimitiveTypeID(String string) {
- primitiveTypeID = string;
- }
-
- /**
- * @param b
- */
- public void setAutoIncrement(boolean b) {
- isAutoIncrement = b;
- }
-
- /**
- * @param b
- */
- public void setCaseSensitive(boolean b) {
- isCaseSensitive = b;
- }
-
- /**
- * @param b
- */
- public void setSigned(boolean b) {
- isSigned = b;
- }
-
- /**
- * @param string
- */
- public void setJavaClassName(String string) {
- javaClassName = string;
- }
-
- /**
- * @param i
- */
- public void setLength(int i) {
- length = i;
- }
-
- /**
- * @param s
- */
- public void setNullType(short s) {
- nullType = s;
- }
-
- /**
- * @param i
- */
- public void setPrecisionLength(int i) {
- precisionLength = i;
- }
-
- /**
- * @param i
- */
- public void setRadix(int i) {
- radix = i;
- }
-
- /**
- * @param string
- */
- public void setRuntimeTypeName(String string) {
- runtimeTypeName = string;
- }
-
- /**
- * @param i
- */
- public void setScale(int i) {
- scale = i;
- }
-
- /**
- * @param s
- */
- public void setSearchType(short s) {
- searchType = s;
- }
-
- /**
- * @param s
- */
- public void setType(short s) {
- type = s;
- }
-
- /**
- * @param string
- */
- public void setDatatypeID(String string) {
- datatypeID = string;
- }
-
- /**
- * @param list
- */
- public void setVarietyProps(List list) {
- varietyProps = list;
- }
-
- /**
- * @param s
- */
- public void setVarietyType(short s) {
- varietyType = s;
- }
-
- public String toString() {
- StringBuffer sb = new StringBuffer(100);
- sb.append(getClass().getSimpleName());
- sb.append(" name="); //$NON-NLS-1$
- sb.append(getName());
- sb.append(", basetype name="); //$NON-NLS-1$
- sb.append(getBasetypeName());
- sb.append(", runtimeType="); //$NON-NLS-1$
- sb.append(getRuntimeTypeName());
- sb.append(", javaClassName="); //$NON-NLS-1$
- sb.append(getJavaClassName());
- sb.append(", ObjectID="); //$NON-NLS-1$
- sb.append(getUUID());
- sb.append(", datatypeID="); //$NON-NLS-1$
- sb.append(getDatatypeID());
-
- return sb.toString();
- }
-
-}
\ No newline at end of file
Copied: branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ForeignKey.java (from rev 1614, trunk/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ForeignKey.java)
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ForeignKey.java (rev 0)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ForeignKey.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,55 @@
+/*
+ * 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.connector.metadata.runtime;
+
+/**
+ * ForeignKeyRecordImpl
+ */
+public class ForeignKey extends KeyRecord {
+
+ private String uniqueKeyID;
+ private KeyRecord primaryKey;
+
+ public ForeignKey() {
+ super(Type.Foreign);
+ }
+
+ public String getUniqueKeyID() {
+ return uniqueKeyID;
+ }
+
+ /**
+ * @param object
+ */
+ public void setUniqueKeyID(String keyID) {
+ uniqueKeyID = keyID;
+ }
+
+ public KeyRecord getPrimaryKey() {
+ return this.primaryKey;
+ }
+
+ public void setPrimaryKey(KeyRecord primaryKey) {
+ this.primaryKey = primaryKey;
+ }
+}
\ No newline at end of file
Deleted: branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ForeignKeyRecordImpl.java
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ForeignKeyRecordImpl.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ForeignKeyRecordImpl.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,66 +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.connector.metadata.runtime;
-
-/**
- * ForeignKeyRecordImpl
- */
-public class ForeignKeyRecordImpl extends ColumnSetRecordImpl {
-
- private String uniqueKeyID;
- private ColumnSetRecordImpl primaryKey;
-
- public ForeignKeyRecordImpl() {
- super(MetadataConstants.KEY_TYPES.FOREIGN_KEY);
- }
-
- //==================================================================================
- // I N T E R F A C E M E T H O D S
- //==================================================================================
-
- /* (non-Javadoc)
- * @see com.metamatrix.modeler.core.metadata.runtime.ForeignKeyRecord#getPrimaryKeyID()
- */
- public String getUniqueKeyID() {
- return uniqueKeyID;
- }
-
- // ==================================================================================
- // P U B L I C M E T H O D S
- // ==================================================================================
-
- /**
- * @param object
- */
- public void setUniqueKeyID(String keyID) {
- uniqueKeyID = keyID;
- }
-
- public ColumnSetRecordImpl getPrimaryKey() {
- return this.primaryKey;
- }
-
- public void setPrimaryKey(ColumnSetRecordImpl primaryKey) {
- this.primaryKey = primaryKey;
- }
-}
\ No newline at end of file
Copied: branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/KeyRecord.java (from rev 1614, trunk/connector-api/src/main/java/org/teiid/connector/metadata/runtime/KeyRecord.java)
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/KeyRecord.java (rev 0)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/KeyRecord.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,50 @@
+/*
+ * 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.connector.metadata.runtime;
+
+public class KeyRecord extends ColumnSet<Table> {
+
+ public enum Type {
+ Primary,
+ Foreign,
+ Unique, //constraint
+ NonUnique,
+ AccessPattern,
+ Index,
+ }
+
+ private Type type;
+
+ public KeyRecord(Type type) {
+ this.type = type;
+ }
+
+ public Type getType() {
+ return type;
+ }
+
+ public Table getTable() {
+ return super.getParent();
+ }
+
+}
Deleted: branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/MetadataConstants.java
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/MetadataConstants.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/MetadataConstants.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,293 +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.connector.metadata.runtime;
-
-import com.metamatrix.core.util.StringUtil;
-
-/**
- * MetadataConstants are all the constant values used to identify all the valid values for a multi-value attribute.
- * All assigned short values start with 1. Therefore, when the get...TypeName(type) method is called, the
- * method needs to subtract 1 from the argument.
- */
-public final class MetadataConstants {
-
- /** Definition of not defined long type. */
- public static final long NOT_DEFINED_LONG = Long.MIN_VALUE;
- /** Definition of not defined int type. */
- public static final int NOT_DEFINED_INT = Integer.MIN_VALUE;
- /** Definition of not defined short type. */
- public static final short NOT_DEFINED_SHORT = Short.MIN_VALUE;
-
- public final static String BLANK = StringUtil.Constants.EMPTY_STRING;
-
- //properties
- public static final String VERSION_DATE = "versionDate"; //$NON-NLS-1$
-
- /**
- * These types are associated with a KEY, indicating the type of matching that can be performed on it.
- */
- public final static class MATCH_TYPES {
- public final static short FULL_MATCH = 0;
- public final static short PARTIAL_MATCH = 1;
- public final static short NEITHER_MATCH = 2;
- public final static short NA = 3;
- public final static String[] TYPE_NAMES = { "Full", //$NON-NLS-1$
- "Partial", //$NON-NLS-1$
- "Neither", //$NON-NLS-1$
- "N/A" }; //$NON-NLS-1$
- }
-
- public final static String getMatchTypeName(short type) {
- return MATCH_TYPES.TYPE_NAMES[type];
- }
-
-
- /**
- * These types indicate the type of KEY it is.
- * The values must be kept consistent with the values referenced in
- * KeyTypeEnumeration.properties in connector.metadata
- */
- public final static class KEY_TYPES {
- public final static short PRIMARY_KEY = 0;
- public final static short FOREIGN_KEY = 1;
- public final static short UNIQUE_KEY = 2;
- public final static short NON_UNIQUE_KEY = 3;
- public final static short ACCESS_PATTERN = 4;
- public final static short INDEX = 5;
- public final static String[] TYPE_NAMES = { "Primary", //$NON-NLS-1$
- "Foreign", //$NON-NLS-1$
- "Unique", //$NON-NLS-1$
- "NonUnique", //$NON-NLS-1$
- "AccessPattern", //$NON-NLS-1$
- "Index" }; //$NON-NLS-1$
- }
- public final static String getKeyTypeName(short type) {
- return KEY_TYPES.TYPE_NAMES[type];
- }
-
- /**
- * These types indicate the type of COLUMN_SET it is.
- * The values must be kept consistent with the values referenced in
- * KeyTypeEnumeration.properties in connector.metadata
- */
- public final static class COLUMN_SET_TYPES {
- public final static short FOREIGN_KEY = 0;
- public final static short UNIQUE_KEY = 1;
- public final static short ACCESS_PATTERN = 2;
- public final static short INDEX = 3;
- public final static short PROCEDURE_RESULT = 4;
- public final static short TABLE = 5;
- public final static String[] TYPE_NAMES = { "Foreign", //$NON-NLS-1$
- "Unique", //$NON-NLS-1$
- "AccessPattern", //$NON-NLS-1$
- "Index", //$NON-NLS-1$
- "Procedure_Result", //$NON-NLS-1$
- "Table"}; //$NON-NLS-1$
- }
- public final static String getColumnSetTypeName(short type) {
- return KEY_TYPES.TYPE_NAMES[type];
- }
-
- /**
- * These types indicate the type of PROCEDURE it is.
- * The values must be kept consistent with the values referenced in
- * ProcTypeEnumeration.properties in connector.metadata
- */
- public final static class PROCEDURE_TYPES {
- public final static short FUNCTION = 0;
- public final static short STORED_PROCEDURE = 1;
- public final static short STORED_QUERY = 2;
- public final static String[] TYPE_NAMES = { "Function", //$NON-NLS-1$
- "StoredProc", //$NON-NLS-1$
- "StoredQuery" }; //$NON-NLS-1$
- }
- public final static String getProcedureTypeName(short type) {
- return PROCEDURE_TYPES.TYPE_NAMES[type];
- }
-
- /**
- * These types indicate the type of TRANSFORMATION it it.
- */
- public final static class SQL_TRANSFORMATION_TYPES {
- public final static short MAPPING_DEFN = 0;
- public final static short QUERY_PLAN_SELECT_QUERY = 1;
- public final static short QUERY_PLAN_INSERT_QUERY = 2;
- public final static short QUERY_PLAN_UPDATE_QUERY = 3;
- public final static short QUERY_PLAN_DELETE_QUERY = 4;
- public final static short QUERY_PLAN_STORED_QUERY = 5;
- public final static String[] TYPE_NAMES = { "MappingDefn", //$NON-NLS-1$
- "QueryPlanSelectQuery", //$NON-NLS-1$
- "QueryPlanInsertQuery", //$NON-NLS-1$
- "QueryPlanUpdateQuery", //$NON-NLS-1$
- "QueryPlanDeleteQuery", //$NON-NLS-1$
- "QueryPlanStoredQuery"}; //$NON-NLS-1$
- }
- public final static String getSqlTransformationTypeName(short type) {
- return SQL_TRANSFORMATION_TYPES.TYPE_NAMES[type];
- }
-
- /**
- * These types indicate the type of PROCEDURE_PARAMETER it is.
- * The values must be kept consistent with the DirectionKind enumeration in the relational
- * metamodel and the values referenced in ProcParamDirectionEnumeration.properties in connector.metadata
- */
- public final static class PARAMETER_TYPES {
- public final static short IN_PARM = 0;
- public final static short OUT_PARM = 1;
- public final static short INOUT_PARM = 2;
- public final static short RETURN_VALUE = 3;
- public final static short RESULT_SET = 4;
- public final static String[] TYPE_NAMES = { "In", //$NON-NLS-1$
- "Out", //$NON-NLS-1$
- "InOut", //$NON-NLS-1$
- "ReturnValue", //$NON-NLS-1$
- "ResultSet" }; //$NON-NLS-1$
- }
- public final static String getParameterTypeName(short type) {
- return PARAMETER_TYPES.TYPE_NAMES[type];
- }
-
- /**
- * These types are associated with the Element having valid search types.
- * The values must be kept consistent with the SearchabilityType enumeration in the relational
- * metamodel and the values referenced in SearchTypeEnumeration.properties in connector.metadata
- */
- public final static class SEARCH_TYPES {
- public final static short SEARCHABLE = 0;
- public final static short ALLEXCEPTLIKE = 1;
- public final static short LIKE_ONLY = 2;
- public final static short UNSEARCHABLE = 3;
- public final static String[] TYPE_NAMES = { "Searchable", //$NON-NLS-1$
- "All Except Like", //$NON-NLS-1$
- "Like Only", //$NON-NLS-1$
- "Unsearchable" }; //$NON-NLS-1$
- }
- public final static String getSearchTypeName(short type) {
- return SEARCH_TYPES.TYPE_NAMES[type];
- }
-
- /**
- * A DataType object will be identified as being of one of these types.
- * The values must be kept consistent with the values referenced in
- * DatatypeTypeEnumeration.properties in connector.metadata
- */
- public final static class DATATYPE_TYPES {
- public final static short BASIC = 0;
- public final static short USER_DEFINED = 1;
- public final static short RESULT_SET = 2;
- public final static String[] TYPE_NAMES = { "Basic", //$NON-NLS-1$
- "UserDefined", //$NON-NLS-1$
- "ResultSet" }; //$NON-NLS-1$
- }
- public final static String getDataTypeTypeName(short type) {
- return DATATYPE_TYPES.TYPE_NAMES[type];
- }
-
- /**
- * User defined DataType objects will be categorized by a variety
- * The values must be kept consistent with the XSDVariety enumeration in the xsd
- * metamodel and the values referenced in DatatypeVarietyEnumeration.properties in
- * connector.metadata
- */
- public final static class DATATYPE_VARIETIES {
- public final static short ATOMIC = 0;
- public final static short LIST = 1;
- public final static short UNION = 2;
- public final static short COMPLEX = 3;
- public final static String[] TYPE_NAMES = { "Atomic", //$NON-NLS-1$
- "List", //$NON-NLS-1$
- "Union", //$NON-NLS-1$
- "Complex" }; //$NON-NLS-1$
- }
- public final static String getDataTypeVarietyName(short type) {
- return DATATYPE_VARIETIES.TYPE_NAMES[type];
- }
-
- /**
- * These types represent the type of table a Group is.
- */
- public final static class TABLE_TYPES {
- public static final short TABLE_TYPE = 0;
- public static final short VIEW_TYPE = 1;
- public static final short DOCUMENT_TYPE = 2;
- public static final short XML_MAPPING_CLASS_TYPE = 3;
- public static final short XML_STAGING_TABLE_TYPE = 4;
- public static final short MATERIALIZED_TYPE = 5;
- public final static String[] TYPE_NAMES = { "Table", //$NON-NLS-1$
- "View", //$NON-NLS-1$
- "Document", //$NON-NLS-1$
- "XmlMappingClass", //$NON-NLS-1$
- "XmlStagingTable", //$NON-NLS-1$
- "MaterializedTable" }; //$NON-NLS-1$
- }
- public final static String getTableTypeName(short type) {
- return TABLE_TYPES.TYPE_NAMES[type];
- }
-
- /**
- * These types are associated with a DataType or an Element needing the indication of null types.
- * The values must be kept consistent with the NullableType enumeration in the relational
- * metamodel and the values referenced in NullTypeEnumeration.properties in connector.metadata
- */
- public final static class NULL_TYPES {
- public static final short NOT_NULL = 0;
- public static final short NULLABLE = 1;
- public static final short UNKNOWN = 2;
- public final static String[] TYPE_NAMES = { "No Nulls", //$NON-NLS-1$
- "Nullable", //$NON-NLS-1$
- "Unknown" }; //$NON-NLS-1$
- }
- //Record type Constants
- public static class RECORD_TYPE {
- public final static char MODEL = 'A';
- public final static char TABLE = 'B';
- public final static char RESULT_SET = 'C';
- public final static char JOIN_DESCRIPTOR = 'D';
- public final static char CALLABLE = 'E';
- public final static char CALLABLE_PARAMETER = 'F';
- public final static char COLUMN = 'G';
- public final static char ACCESS_PATTERN = 'H';
- public final static char UNIQUE_KEY = 'I';
- public final static char FOREIGN_KEY = 'J';
- public final static char PRIMARY_KEY = 'K';
- public final static char INDEX = 'L';
- public final static char DATATYPE = 'M';
- //public final static char DATATYPE_ELEMENT = 'N';
- //public final static char DATATYPE_FACET = 'O';
- public final static char SELECT_TRANSFORM = 'P';
- public final static char INSERT_TRANSFORM = 'Q';
- public final static char UPDATE_TRANSFORM = 'R';
- public final static char DELETE_TRANSFORM = 'S';
- public final static char PROC_TRANSFORM = 'T';
- public final static char MAPPING_TRANSFORM = 'U';
- public final static char VDB_ARCHIVE = 'V';
- public final static char ANNOTATION = 'W';
- public final static char PROPERTY = 'X';
- public final static char FILE = 'Z';
- public final static char RECORD_CONTINUATION = '&';
- }
-
- public final static String getNullTypeName(short type) {
- return NULL_TYPES.TYPE_NAMES[type];
- }
-}
\ No newline at end of file
Modified: branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/MetadataFactory.java
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/MetadataFactory.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/MetadataFactory.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -23,100 +23,69 @@
package org.teiid.connector.metadata.runtime;
import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
-import java.util.Set;
+import java.util.Properties;
import org.teiid.connector.DataPlugin;
import org.teiid.connector.api.ConnectorException;
import org.teiid.connector.api.TypeFacility;
-import org.teiid.connector.metadata.runtime.MetadataConstants.PARAMETER_TYPES;
-import org.teiid.connector.metadata.runtime.MetadataConstants.RECORD_TYPE;
import com.metamatrix.core.id.UUIDFactory;
-import com.metamatrix.core.vdb.ModelType;
-public class MetadataFactory implements ConnectorMetadata {
+/**
+ * Allows connectors to build metadata for use by the engine.
+ *
+ * TODO: add support for datatype import
+ * TODO: add support for unique constraints
+ */
+public class MetadataFactory {
- private transient UUIDFactory factory = new UUIDFactory();
- private transient Map<String, DatatypeRecordImpl> dataTypes;
+ private Schema schema;
+ private UUIDFactory factory = new UUIDFactory();
+ private Map<String, Datatype> dataTypes;
+ private Properties importProperties;
+ private MetadataStore store = new MetadataStore();
- private ModelRecordImpl model;
- private Collection<TableRecordImpl> tables = new ArrayList<TableRecordImpl>();
- private Collection<ProcedureRecordImpl> procedures = new ArrayList<ProcedureRecordImpl>();
- private Collection<AnnotationRecordImpl> annotations = new ArrayList<AnnotationRecordImpl>();
- private Collection<PropertyRecordImpl> properties = new ArrayList<PropertyRecordImpl>();
-
- private Set<String> uniqueNames = new HashSet<String>();
-
- public MetadataFactory(String modelName, Map<String, DatatypeRecordImpl> dataTypes) {
+ public MetadataFactory(String modelName, Map<String, Datatype> dataTypes, Properties importProperties) {
this.dataTypes = dataTypes;
- model = new ModelRecordImpl();
- model.setFullName(modelName);
- model.setModelType(ModelType.PHYSICAL);
- model.setRecordType(RECORD_TYPE.MODEL);
- model.setPrimaryMetamodelUri("http://www.metamatrix.com/metamodels/Relational"); //$NON-NLS-1$
- setUUID(model);
+ schema = new Schema();
+ schema.setName(modelName);
+ setUUID(schema);
+ store.addSchema(schema);
+ this.importProperties = importProperties;
}
- @Override
- public ModelRecordImpl getModel() {
- return model;
+ public MetadataStore getMetadataStore() {
+ return store;
}
- @Override
- public Collection<TableRecordImpl> getTables() {
- return tables;
+ public Properties getImportProperties() {
+ return importProperties;
}
- @Override
- public Collection<ProcedureRecordImpl> getProcedures() {
- return procedures;
- }
-
- @Override
- public Collection<AnnotationRecordImpl> getAnnotations() {
- return annotations;
- }
-
- public Collection<PropertyRecordImpl> getProperties() {
- return properties;
- }
-
private void setUUID(AbstractMetadataRecord record) {
record.setUUID(factory.create().toString());
}
- private void setValuesUsingParent(String name,
- AbstractMetadataRecord parent, AbstractMetadataRecord child) throws ConnectorException {
- child.setFullName(parent.getFullName() + "." + name); //$NON-NLS-1$
- child.setParentUUID(parent.getUUID());
- if (!uniqueNames.add(child.getRecordType() + "/" + child.getFullName())) { //$NON-NLS-1$
- throw new ConnectorException(DataPlugin.Util.getString("MetadataFactory.duplicate_name", child)); //$NON-NLS-1$
- }
- }
-
/**
* Add a table with the given name to the model.
* @param name
* @return
* @throws ConnectorException
*/
- public TableRecordImpl addTable(String name) throws ConnectorException {
- TableRecordImpl table = new TableRecordImpl();
- setValuesUsingParent(name, model, table);
- table.setRecordType(RECORD_TYPE.TABLE);
- table.setColumns(new LinkedList<ColumnRecordImpl>());
- table.setAccessPatterns(new LinkedList<ColumnSetRecordImpl>());
- table.setIndexes(new LinkedList<ColumnSetRecordImpl>());
- table.setExtensionProperties(new LinkedList<PropertyRecordImpl>());
- table.setForiegnKeys(new LinkedList<ForeignKeyRecordImpl>());
- table.setUniqueKeys(new LinkedList<ColumnSetRecordImpl>());
+ public Table addTable(String name) throws ConnectorException {
+ Table table = new Table();
+ table.setTableType(Table.Type.Table);
+ table.setName(name);
+ table.setColumns(new LinkedList<Column>());
+ table.setAccessPatterns(new LinkedList<KeyRecord>());
+ table.setIndexes(new LinkedList<KeyRecord>());
+ table.setForiegnKeys(new LinkedList<ForeignKey>());
+ table.setUniqueKeys(new LinkedList<KeyRecord>());
setUUID(table);
- this.tables.add(table);
+ this.schema.addTable(table);
return table;
}
@@ -128,31 +97,32 @@
* @return
* @throws ConnectorException
*/
- public ColumnRecordImpl addColumn(String name, String type, ColumnSetRecordImpl table) throws ConnectorException {
- ColumnRecordImpl column = new ColumnRecordImpl();
- setValuesUsingParent(name, table, column);
- column.setRecordType(RECORD_TYPE.COLUMN);
+ public Column addColumn(String name, String type, ColumnSet<?> table) throws ConnectorException {
+ if (name.indexOf(AbstractMetadataRecord.NAME_DELIM_CHAR) != -1) {
+ throw new ConnectorException(DataPlugin.Util.getString("MetadataFactory.invalid_name", name)); //$NON-NLS-1$
+ }
+ Column column = new Column();
+ column.setName(name);
table.getColumns().add(column);
column.setPosition(table.getColumns().size()); //1 based indexing
- DatatypeRecordImpl datatype = setColumnType(type, column);
+ Datatype datatype = setColumnType(type, column);
column.setCaseSensitive(datatype.isCaseSensitive());
column.setAutoIncrementable(datatype.isAutoIncrement());
column.setSigned(datatype.isSigned());
- column.setExtensionProperties(new LinkedList<PropertyRecordImpl>());
setUUID(column);
+ column.setParent(table);
return column;
}
- private DatatypeRecordImpl setColumnType(String type,
+ private Datatype setColumnType(String type,
BaseColumn column) throws ConnectorException {
- DatatypeRecordImpl datatype = dataTypes.get(type);
+ Datatype datatype = dataTypes.get(type);
if (datatype == null) {
throw new ConnectorException(DataPlugin.Util.getString("MetadataFactory.unknown_datatype", type)); //$NON-NLS-1$
}
column.setDatatype(datatype);
column.setDatatypeUUID(datatype.getUUID());
column.setLength(datatype.getLength());
- column.setNullType(datatype.getNullType());
column.setPrecision(datatype.getPrecisionLength());
column.setRadix(datatype.getRadix());
column.setRuntimeType(datatype.getRuntimeTypeName());
@@ -160,23 +130,6 @@
}
/**
- * Add an annotation of description to a record. Only one annotation should be added per record.
- * @param annotation
- * @param record
- * @return
- */
- public AnnotationRecordImpl addAnnotation(String annotation, AbstractMetadataRecord record) {
- AnnotationRecordImpl annotationRecordImpl = new AnnotationRecordImpl();
- annotationRecordImpl.setRecordType(RECORD_TYPE.ANNOTATION);
- setUUID(annotationRecordImpl);
- annotationRecordImpl.setParentUUID(record.getUUID());
- annotationRecordImpl.setDescription(annotation);
- record.setAnnotation(annotationRecordImpl);
- annotations.add(annotationRecordImpl);
- return annotationRecordImpl;
- }
-
- /**
* Adds a primary key to the given table. The column names should be in key order.
* @param name
* @param columnNames
@@ -184,42 +137,56 @@
* @return
* @throws ConnectorException
*/
- public ColumnSetRecordImpl addPrimaryKey(String name, List<String> columnNames, TableRecordImpl table) throws ConnectorException {
- ColumnSetRecordImpl primaryKey = new ColumnSetRecordImpl(MetadataConstants.KEY_TYPES.PRIMARY_KEY);
- primaryKey.setColumns(new ArrayList<ColumnRecordImpl>(columnNames.size()));
- primaryKey.setRecordType(RECORD_TYPE.PRIMARY_KEY);
- setValuesUsingParent(name, table, primaryKey);
+ public KeyRecord addPrimaryKey(String name, List<String> columnNames, Table table) throws ConnectorException {
+ KeyRecord primaryKey = new KeyRecord(KeyRecord.Type.Primary);
+ primaryKey.setParent(table);
+ primaryKey.setColumns(new ArrayList<Column>(columnNames.size()));
+ primaryKey.setName(name);
setUUID(primaryKey);
assignColumns(columnNames, table, primaryKey);
table.setPrimaryKey(primaryKey);
- table.setPrimaryKeyID(primaryKey.getUUID());
return primaryKey;
}
/**
- * Adds an index or unique key constraint to the given table.
+ * Adds an access pattern to the given table.
* @param name
+ * @param columnNames
+ * @param table
+ * @return
+ * @throws ConnectorException
+ */
+ public KeyRecord addAccessPattern(String name, List<String> columnNames, Table table) throws ConnectorException {
+ KeyRecord ap = new KeyRecord(KeyRecord.Type.AccessPattern);
+ ap.setParent(table);
+ ap.setColumns(new ArrayList<Column>(columnNames.size()));
+ ap.setName(name);
+ setUUID(ap);
+ assignColumns(columnNames, table, ap);
+ table.getAccessPatterns().add(ap);
+ return ap;
+ }
+
+ /**
+ * Adds an index to the given table.
+ * @param name
* @param nonUnique true indicates that an index is being added.
* @param columnNames
* @param table
* @return
* @throws ConnectorException
*/
- public ColumnSetRecordImpl addIndex(String name, boolean nonUnique, List<String> columnNames, TableRecordImpl table) throws ConnectorException {
- ColumnSetRecordImpl index = new ColumnSetRecordImpl(nonUnique?MetadataConstants.KEY_TYPES.INDEX:MetadataConstants.KEY_TYPES.UNIQUE_KEY);
- index.setColumns(new ArrayList<ColumnRecordImpl>(columnNames.size()));
- index.setRecordType(nonUnique?MetadataConstants.RECORD_TYPE.INDEX:MetadataConstants.RECORD_TYPE.UNIQUE_KEY);
- setValuesUsingParent(name, table, index);
+ public KeyRecord addIndex(String name, boolean nonUnique, List<String> columnNames, Table table) throws ConnectorException {
+ KeyRecord index = new KeyRecord(nonUnique?KeyRecord.Type.NonUnique:KeyRecord.Type.Index);
+ index.setParent(table);
+ index.setColumns(new ArrayList<Column>(columnNames.size()));
+ index.setName(name);
setUUID(index);
assignColumns(columnNames, table, index);
- if (nonUnique) {
- table.getIndexes().add(index);
- } else {
- table.getUniqueKeys().add(index);
- }
+ table.getIndexes().add(index);
return index;
}
-
+
/**
* Adds a foreign key to the given table. The column names should be in key order.
* @param name
@@ -229,43 +196,23 @@
* @return
* @throws ConnectorException
*/
- public ForeignKeyRecordImpl addForiegnKey(String name, List<String> columnNames, TableRecordImpl pkTable, TableRecordImpl table) throws ConnectorException {
- ForeignKeyRecordImpl foreignKey = new ForeignKeyRecordImpl();
- foreignKey.setColumns(new ArrayList<ColumnRecordImpl>(columnNames.size()));
- foreignKey.setRecordType(RECORD_TYPE.FOREIGN_KEY);
- setValuesUsingParent(name, table, foreignKey);
+ public ForeignKey addForiegnKey(String name, List<String> columnNames, Table pkTable, Table table) throws ConnectorException {
+ ForeignKey foreignKey = new ForeignKey();
+ foreignKey.setParent(table);
+ foreignKey.setColumns(new ArrayList<Column>(columnNames.size()));
+ foreignKey.setName(name);
setUUID(foreignKey);
+ if (pkTable.getPrimaryKey() == null) {
+ throw new ConnectorException("No primary key defined for table " + pkTable); //$NON-NLS-1$
+ }
foreignKey.setPrimaryKey(pkTable.getPrimaryKey());
- foreignKey.setUniqueKeyID(pkTable.getPrimaryKeyID());
+ foreignKey.setUniqueKeyID(pkTable.getPrimaryKey().getUUID());
assignColumns(columnNames, table, foreignKey);
table.getForeignKeys().add(foreignKey);
return foreignKey;
}
/**
- * Adds an extension property to the given record.
- * @param name
- * @param value
- * @param record
- * @return
- * @throws ConnectorException
- */
- public PropertyRecordImpl addExtensionProperty(String name, String value, AbstractMetadataRecord record) throws ConnectorException {
- PropertyRecordImpl property = new PropertyRecordImpl();
- property.setRecordType(RECORD_TYPE.PROPERTY);
- setValuesUsingParent(name, record, property);
- setUUID(property);
- property.setPropertyName(name);
- property.setPropertyValue(value);
- properties.add(property);
- if (record.getExtensionProperties() == null) {
- record.setExtensionProperties(new LinkedList<PropertyRecordImpl>());
- }
- record.getExtensionProperties().add(property);
- return property;
- }
-
- /**
* Add a procedure with the given name to the model.
* @param name
* @return
@@ -273,29 +220,28 @@
*/
public ProcedureRecordImpl addProcedure(String name) throws ConnectorException {
ProcedureRecordImpl procedure = new ProcedureRecordImpl();
- procedure.setRecordType(RECORD_TYPE.CALLABLE);
- setValuesUsingParent(name, this.model, procedure);
+ procedure.setName(name);
setUUID(procedure);
- procedure.setParameters(new LinkedList<ProcedureParameterRecordImpl>());
- this.procedures.add(procedure);
+ procedure.setParameters(new LinkedList<ProcedureParameter>());
+ this.schema.addProcedure(procedure);
return procedure;
}
/**
- *
+ * Add a procedure parameter.
* @param name
- * @param type should be one of {@link PARAMETER_TYPES}
- * @param parameterType should be one of {@link TypeFacility.RUNTIME_NAMES}
+ * @param type should be one of {@link TypeFacility.RUNTIME_NAMES}
+ * @param parameterType should be one of {@link ProcedureParameter.Type}
* @param procedure
* @return
* @throws ConnectorException
*/
- public ProcedureParameterRecordImpl addProcedureParameter(String name, String type, short parameterType, ProcedureRecordImpl procedure) throws ConnectorException {
- ProcedureParameterRecordImpl param = new ProcedureParameterRecordImpl();
- param.setRecordType(RECORD_TYPE.CALLABLE_PARAMETER);
- setValuesUsingParent(name, procedure, param);
+ public ProcedureParameter addProcedureParameter(String name, String type, ProcedureParameter.Type parameterType, ProcedureRecordImpl procedure) throws ConnectorException {
+ ProcedureParameter param = new ProcedureParameter();
+ param.setName(name);
setUUID(param);
param.setType(parameterType);
+ param.setProcedure(procedure);
setColumnType(type, param);
procedure.getParameters().add(param);
param.setPosition(procedure.getParameters().size()); //1 based indexing
@@ -303,30 +249,29 @@
}
/**
- *
+ * Add a procedure resultset column to the given procedure.
* @param name
* @param type should be one of {@link TypeFacility.RUNTIME_NAMES}
* @param procedure
* @return
* @throws ConnectorException
*/
- public ColumnRecordImpl addProcedureResultSetColumn(String name, String type, ProcedureRecordImpl procedure) throws ConnectorException {
+ public Column addProcedureResultSetColumn(String name, String type, ProcedureRecordImpl procedure) throws ConnectorException {
if (procedure.getResultSet() == null) {
- ColumnSetRecordImpl resultSet = new ColumnSetRecordImpl((short)-1);
- resultSet.setRecordType(RECORD_TYPE.RESULT_SET);
- setValuesUsingParent("RESULT_SET", procedure, resultSet); //$NON-NLS-1$
+ ColumnSet<ProcedureRecordImpl> resultSet = new ColumnSet<ProcedureRecordImpl>();
+ resultSet.setParent(procedure);
+ resultSet.setName("RSParam"); //$NON-NLS-1$
setUUID(resultSet);
procedure.setResultSet(resultSet);
- procedure.setResultSetID(resultSet.getUUID());
}
return addColumn(name, type, procedure.getResultSet());
}
- private void assignColumns(List<String> columnNames, TableRecordImpl table,
- ColumnSetRecordImpl columns) throws ConnectorException {
+ private void assignColumns(List<String> columnNames, Table table,
+ ColumnSet<?> columns) throws ConnectorException {
for (String columnName : columnNames) {
boolean match = false;
- for (ColumnRecordImpl column : table.getColumns()) {
+ for (Column column : table.getColumns()) {
if (column.getName().equals(columnName)) {
match = true;
columns.getColumns().add(column);
Copied: branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/MetadataStore.java (from rev 1614, trunk/connector-api/src/main/java/org/teiid/connector/metadata/runtime/MetadataStore.java)
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/MetadataStore.java (rev 0)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/MetadataStore.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -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.connector.metadata.runtime;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * Simple holder for metadata.
+ */
+public class MetadataStore implements Serializable {
+
+ private static final long serialVersionUID = -3130247626435324312L;
+ protected Map<String, Schema> schemas = new LinkedHashMap<String, Schema>();
+ protected Collection<Datatype> datatypes = new ArrayList<Datatype>();
+
+ public Map<String, Schema> getSchemas() {
+ return schemas;
+ }
+
+ public void addSchema(Schema schema) {
+ this.schemas.put(schema.getName().toLowerCase(), schema);
+ }
+
+ public void addDatatype(Datatype datatype) {
+ this.datatypes.add(datatype);
+ }
+
+ /**
+ * Get the datatypes defined in this store
+ * @return
+ */
+ public Collection<Datatype> getDatatypes() {
+ return datatypes;
+ }
+
+}
Deleted: branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ModelRecordImpl.java
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ModelRecordImpl.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ModelRecordImpl.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,196 +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.connector.metadata.runtime;
-
-import com.metamatrix.core.vdb.ModelType;
-
-/**
- * ModelRecordImpl
- */
-public class ModelRecordImpl extends AbstractMetadataRecord {
-
- private int modelType;
- private int maxSetSize;
- private boolean isVisible = true;
- private boolean supportsDistinct;
- private boolean supportsJoin;
- private boolean supportsOrderBy;
- private boolean supportsOuterJoin;
- private boolean supportsWhereAll;
- private String primaryMetamodelUri;
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.ModelRecord#getPrimaryMetamodelUri()
- */
- public String getPrimaryMetamodelUri() {
- return primaryMetamodelUri;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.modeler.core.metadata.runtime.ModelRecord#getMaxSetSize()
- */
- public int getMaxSetSize() {
- return maxSetSize;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.modeler.core.metadata.runtime.ModelRecord#isVisible()
- */
- public boolean isVisible() {
- return isVisible;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.modeler.core.metadata.runtime.ModelRecord#supportsDistinct()
- */
- public boolean supportsDistinct() {
- return supportsDistinct;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.modeler.core.metadata.runtime.ModelRecord#supportsJoin()
- */
- public boolean supportsJoin() {
- return supportsJoin;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.modeler.core.metadata.runtime.ModelRecord#supportsOrderBy()
- */
- public boolean supportsOrderBy() {
- return supportsOrderBy;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.modeler.core.metadata.runtime.ModelRecord#supportsOuterJoin()
- */
- public boolean supportsOuterJoin() {
- return supportsOuterJoin;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.modeler.core.metadata.runtime.ModelRecord#supportsWhereAll()
- */
- public boolean supportsWhereAll() {
- return supportsWhereAll;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.modeler.core.metadata.runtime.ModelRecord#getModelType()
- */
- public int getModelType() {
- return modelType;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.modeler.core.metadata.runtime.ModelRecord#isPhysical()
- */
- public boolean isPhysical() {
- if (getModelType() == ModelType.PHYSICAL) {
- return true;
- }
- return false;
- }
-
- // ==================================================================================
- // P U B L I C M E T H O D S
- // ==================================================================================
-
- /**
- * @param string
- */
- public void setPrimaryMetamodelUri(String string) {
- primaryMetamodelUri = string;
- }
-
- /**
- * @param b
- */
- public void setVisible(boolean b) {
- isVisible = b;
- }
-
- /**
- * @param i
- */
- public void setMaxSetSize(int i) {
- maxSetSize = i;
- }
-
- /**
- * @param b
- */
- public void setSupportsDistinct(boolean b) {
- supportsDistinct = b;
- }
-
- /**
- * @param b
- */
- public void setSupportsJoin(boolean b) {
- supportsJoin = b;
- }
-
- /**
- * @param b
- */
- public void setSupportsOrderBy(boolean b) {
- supportsOrderBy = b;
- }
-
- /**
- * @param b
- */
- public void setSupportsOuterJoin(boolean b) {
- supportsOuterJoin = b;
- }
-
- /**
- * @param b
- */
- public void setSupportsWhereAll(boolean b) {
- supportsWhereAll = b;
- }
-
- /**
- * @param i
- */
- public void setModelType(int i) {
- modelType = i;
- }
-
- public String toString() {
- StringBuffer sb = new StringBuffer(100);
- sb.append(getClass().getSimpleName());
- sb.append(" name="); //$NON-NLS-1$
- sb.append(getName());
- sb.append(", nameInSource="); //$NON-NLS-1$
- sb.append(getNameInSource());
- sb.append(", uuid="); //$NON-NLS-1$
- sb.append(getUUID());
- sb.append(", pathInModel="); //$NON-NLS-1$
- sb.append(getPath());
- return sb.toString();
- }
-
-}
Copied: branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ProcedureParameter.java (from rev 1614, trunk/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ProcedureParameter.java)
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ProcedureParameter.java (rev 0)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ProcedureParameter.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,73 @@
+/*
+ * 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.connector.metadata.runtime;
+
+
+/**
+ * ProcedureParameterRecordImpl
+ */
+public class ProcedureParameter extends BaseColumn {
+
+ public enum Type {
+ Unknown,
+ In,
+ InOut,
+ ResultSet,
+ Out,
+ ReturnValue
+ }
+
+ private Type type;
+ private boolean optional;
+ private ProcedureRecordImpl procedure;
+
+ public void setType(Type type) {
+ this.type = type;
+ }
+
+ public Type getType() {
+ return type;
+ }
+
+ public void setOptional(boolean optional) {
+ this.optional = optional;
+ }
+
+ public boolean isOptional() {
+ return optional;
+ }
+
+ public ProcedureRecordImpl getProcedure() {
+ return procedure;
+ }
+
+ public void setProcedure(ProcedureRecordImpl procedure) {
+ this.procedure = procedure;
+ }
+
+ @Override
+ public AbstractMetadataRecord getParent() {
+ return this.procedure;
+ }
+
+}
\ No newline at end of file
Deleted: branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ProcedureParameterRecordImpl.java
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ProcedureParameterRecordImpl.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ProcedureParameterRecordImpl.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,49 +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.connector.metadata.runtime;
-
-/**
- * ProcedureParameterRecordImpl
- */
-public class ProcedureParameterRecordImpl extends BaseColumn {
-
- private short type;
- private boolean optional;
-
- public void setType(short type) {
- this.type = type;
- }
-
- public short getType() {
- return type;
- }
-
- public void setOptional(boolean optional) {
- this.optional = optional;
- }
-
- public boolean isOptional() {
- return optional;
- }
-
-}
\ No newline at end of file
Modified: branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ProcedureRecordImpl.java
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ProcedureRecordImpl.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/ProcedureRecordImpl.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -30,63 +30,60 @@
*/
public class ProcedureRecordImpl extends AbstractMetadataRecord {
- private List<String> parameterIDs;
+ public enum Type {
+ Function,
+ UDF,
+ StoredProc,
+ StoredQuery
+ }
+
private boolean isFunction;
private boolean isVirtual;
- private String resultSetID;
private int updateCount = 1;
- private List<ProcedureParameterRecordImpl> parameters;
- private ColumnSetRecordImpl resultSet;
+ private List<ProcedureParameter> parameters;
+ private ColumnSet<ProcedureRecordImpl> resultSet;
private String queryPlan;
-
- /*
- * @see com.metamatrix.modeler.core.metadata.runtime.ProcedureRecord#getParameterIDs()
- */
- public List<String> getParameterIDs() {
- return parameterIDs;
+
+ private Schema schema;
+
+ public Schema getSchema() {
+ return schema;
}
-
- /*
- * @see com.metamatrix.modeler.core.metadata.runtime.ProcedureRecord#isFunction()
- */
+
+ public void setSchema(Schema schema) {
+ this.schema = schema;
+ }
+
public boolean isFunction() {
return isFunction;
}
- /*
- * @see com.metamatrix.modeler.core.metadata.runtime.ProcedureRecord#isVirtual()
- */
public boolean isVirtual() {
return this.isVirtual;
}
- /*
- * @see com.metamatrix.modeler.core.metadata.runtime.ProcedureRecord#getResultSetID()
- */
- public String getResultSetID() {
- return resultSetID;
+ public Type getType() {
+ if (isFunction()) {
+ if (isVirtual()) {
+ return Type.UDF;
+ }
+ return Type.Function;
+ }
+ if (isVirtual()) {
+ return Type.StoredQuery;
+ }
+ return Type.StoredProc;
}
-
- /*
- * @see com.metamatrix.modeler.core.metadata.runtime.ProcedureRecord#getType()
- */
- public short getType() {
- return this.getProcedureType();
- }
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.ProcedureRecord#getUpdateCount()
- * @since 5.5.3
- */
public int getUpdateCount() {
return this.updateCount;
}
- public List<ProcedureParameterRecordImpl> getParameters() {
+ public List<ProcedureParameter> getParameters() {
return parameters;
}
- public void setParameters(List<ProcedureParameterRecordImpl> parameters) {
+ public void setParameters(List<ProcedureParameter> parameters) {
this.parameters = parameters;
}
@@ -99,20 +96,6 @@
}
/**
- * @param list
- */
- public void setParameterIDs(List<String> list) {
- parameterIDs = list;
- }
-
- /**
- * @param object
- */
- public void setResultSetID(String object) {
- resultSetID = object;
- }
-
- /**
* @param b
*/
public void setFunction(boolean b) {
@@ -130,22 +113,17 @@
this.updateCount = count;
}
- protected short getProcedureType() {
- if (isFunction()) {
- return MetadataConstants.PROCEDURE_TYPES.FUNCTION;
- }
- if (isVirtual()) {
- return MetadataConstants.PROCEDURE_TYPES.STORED_QUERY;
- }
- return MetadataConstants.PROCEDURE_TYPES.STORED_PROCEDURE;
- }
-
- public void setResultSet(ColumnSetRecordImpl resultSet) {
+ public void setResultSet(ColumnSet<ProcedureRecordImpl> resultSet) {
this.resultSet = resultSet;
}
- public ColumnSetRecordImpl getResultSet() {
+ public ColumnSet<ProcedureRecordImpl> getResultSet() {
return resultSet;
}
+
+ @Override
+ public AbstractMetadataRecord getParent() {
+ return schema;
+ }
}
\ No newline at end of file
Deleted: branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/PropertyRecordImpl.java
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/PropertyRecordImpl.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/PropertyRecordImpl.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,96 +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.connector.metadata.runtime;
-
-
-
-/**
- * PropertyRecordImpl
- */
-public class PropertyRecordImpl extends AbstractMetadataRecord {
-
- /**
- * Constants for names of accessor methods that map to fields stored on the PropertyRecords.
- * Note the names do not have "get" on them, this is also the nameInsource
- * of the attributes on SystemPhysicalModel.
- * @since 4.3
- */
- public static interface MetadataFieldNames {
- String PROPERTY_NAME_FIELD = "PropertyName"; //$NON-NLS-1$
- String PROPERTY_VALUE_FIELD = "PropertyValue"; //$NON-NLS-1$
- }
-
- private String name;
- private String value;
-
- //==================================================================================
- // I N T E R F A C E M E T H O D S
- //==================================================================================
-
- /*
- * @see com.metamatrix.modeler.core.metadata.runtime.PropertyRecord#getPropertyName()
- */
- public String getPropertyName() {
- return this.name;
- }
-
- /*
- * @see com.metamatrix.modeler.core.metadata.runtime.PropertyRecord#getPropertyValue()
- */
- public String getPropertyValue() {
- return this.value;
- }
-
- // ==================================================================================
- // P U B L I C M E T H O D S
- // ==================================================================================
-
- public String toString() {
- StringBuffer sb = new StringBuffer(100);
- sb.append(getClass().getSimpleName());
- sb.append(", uuid="); //$NON-NLS-1$
- sb.append(getUUID());
- sb.append(" propName="); //$NON-NLS-1$
- sb.append(getPropertyName());
- sb.append(" propValue="); //$NON-NLS-1$
- sb.append(getPropertyValue());
- sb.append(", pathInModel="); //$NON-NLS-1$
- sb.append(getPath());
- return sb.toString();
- }
-
- /**
- * @param list
- */
- public void setPropertyName(final String name) {
- this.name = name;
- }
-
- /**
- * @param list
- */
- public void setPropertyValue(final String value) {
- this.value = value;
- }
-
-}
\ No newline at end of file
Copied: branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/Schema.java (from rev 1614, trunk/connector-api/src/main/java/org/teiid/connector/metadata/runtime/Schema.java)
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/Schema.java (rev 0)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/Schema.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,93 @@
+/*
+ * 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.connector.metadata.runtime;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+public class Schema extends AbstractMetadataRecord {
+
+ private boolean physical = true;
+ private boolean isVisible = true;
+ private String primaryMetamodelUri = "http://www.metamatrix.com/metamodels/Relational"; //$NON-NLS-1$
+
+ private Map<String, Table> tables = new LinkedHashMap<String, Table>();
+ private Map<String, ProcedureRecordImpl> procedures = new LinkedHashMap<String, ProcedureRecordImpl>();
+
+ public void addTable(Table table) {
+ table.setParent(this);
+ this.tables.put(table.getName().toLowerCase(), table);
+ }
+
+ public void addProcedure(ProcedureRecordImpl procedure) {
+ procedure.setSchema(this);
+ this.procedures.put(procedure.getName().toLowerCase(), procedure);
+ }
+
+ /**
+ * Get the tables defined in this schema
+ * @return
+ */
+ public Map<String, Table> getTables() {
+ return tables;
+ }
+
+ /**
+ * Get the procedures defined in this schema
+ * @return
+ */
+ public Map<String, ProcedureRecordImpl> getProcedures() {
+ return procedures;
+ }
+
+ public String getPrimaryMetamodelUri() {
+ return primaryMetamodelUri;
+ }
+
+ public boolean isVisible() {
+ return isVisible;
+ }
+
+ public boolean isPhysical() {
+ return physical;
+ }
+
+ /**
+ * @param string
+ */
+ public void setPrimaryMetamodelUri(String string) {
+ primaryMetamodelUri = string;
+ }
+
+ /**
+ * @param b
+ */
+ public void setVisible(boolean b) {
+ isVisible = b;
+ }
+
+ public void setPhysical(boolean physical) {
+ this.physical = physical;
+ }
+
+}
Copied: branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/Table.java (from rev 1614, trunk/connector-api/src/main/java/org/teiid/connector/metadata/runtime/Table.java)
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/Table.java (rev 0)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/Table.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,270 @@
+/*
+ * 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.connector.metadata.runtime;
+
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * TableRecordImpl
+ */
+public class Table extends ColumnSet<Schema> {
+
+ public enum Type {
+ Table,
+ View,
+ Document,
+ XmlMappingClass,
+ XmlStagingTable,
+ MaterializedTable
+ }
+
+ private int cardinality;
+ private Type tableType;
+ private boolean isVirtual;
+ private boolean isSystem;
+ private boolean isMaterialized;
+ private boolean supportsUpdate;
+ private List<ForeignKey> foriegnKeys;
+ private List<KeyRecord> indexes;
+ private List<KeyRecord> uniqueKeys;
+ private List<KeyRecord> accessPatterns;
+ private KeyRecord primaryKey;
+
+ //view information
+ private String selectTransformation;
+ private String insertPlan;
+ private String updatePlan;
+ private String deletePlan;
+ private Table materializedStageTable;
+ private Table materializedTable;
+
+ //XML specific
+ private List<String> bindings;
+ private List<String> schemaPaths;
+ private String resourcePath;
+
+ public Schema getSchema() {
+ return super.getParent();
+ }
+
+ public List<String> getBindings() {
+ return bindings;
+ }
+
+ public void setBindings(List<String> bindings) {
+ this.bindings = bindings;
+ }
+
+ public List<String> getSchemaPaths() {
+ return schemaPaths;
+ }
+
+ public void setSchemaPaths(List<String> schemaPaths) {
+ this.schemaPaths = schemaPaths;
+ }
+
+ public int getCardinality() {
+ return cardinality;
+ }
+
+ public boolean isVirtual() {
+ return isVirtual;
+ }
+
+ public boolean isMaterialized() {
+ return isMaterialized;
+ }
+
+ public boolean isPhysical() {
+ return !isVirtual();
+ }
+
+ public boolean isSystem() {
+ return isSystem;
+ }
+
+ public Type getTableType() {
+ if (tableType == null) {
+ return Type.Table;
+ }
+ return tableType;
+ }
+
+ public boolean supportsUpdate() {
+ return supportsUpdate;
+ }
+
+ /**
+ * @param i
+ */
+ public void setCardinality(int i) {
+ cardinality = i;
+ }
+
+ /**
+ * @param i
+ */
+ public void setTableType(Type i) {
+ tableType = i;
+ }
+
+ /**
+ * @param b
+ */
+ public void setSupportsUpdate(boolean b) {
+ supportsUpdate = b;
+ }
+
+ /**
+ * @param b
+ */
+ public void setVirtual(boolean b) {
+ isVirtual = b;
+ }
+
+ /**
+ * @param isMaterialized The isMaterialized to set.
+ * @since 4.2
+ */
+ public void setMaterialized(boolean isMaterialized) {
+ this.isMaterialized = isMaterialized;
+ }
+
+ /**
+ * @param b
+ */
+ public void setSystem(boolean b) {
+ isSystem = b;
+ }
+
+ public String getInsertPlan() {
+ return insertPlan;
+ }
+
+ public String getUpdatePlan() {
+ return updatePlan;
+ }
+
+ public String getDeletePlan() {
+ return deletePlan;
+ }
+
+ public void setInsertPlan(String insertPlan) {
+ this.insertPlan = insertPlan;
+ }
+
+ public void setUpdatePlan(String updatePlan) {
+ this.updatePlan = updatePlan;
+ }
+
+ public void setDeletePlan(String deletePlan) {
+ this.deletePlan = deletePlan;
+ }
+
+ public List<ForeignKey> getForeignKeys() {
+ return this.foriegnKeys;
+ }
+
+ public void setForiegnKeys(List<ForeignKey> foriegnKeys) {
+ this.foriegnKeys = foriegnKeys;
+ }
+
+ public List<KeyRecord> getIndexes() {
+ return this.indexes;
+ }
+
+ public void setIndexes(List<KeyRecord> indexes) {
+ this.indexes = indexes;
+ }
+
+ public List<KeyRecord> getUniqueKeys() {
+ return this.uniqueKeys;
+ }
+
+ public void setUniqueKeys(List<KeyRecord> uniqueKeys) {
+ this.uniqueKeys = uniqueKeys;
+ }
+
+ public List<KeyRecord> getAccessPatterns() {
+ return this.accessPatterns;
+ }
+
+ public void setAccessPatterns(List<KeyRecord> accessPatterns) {
+ this.accessPatterns = accessPatterns;
+ }
+
+ public KeyRecord getPrimaryKey() {
+ return this.primaryKey;
+ }
+
+ public void setPrimaryKey(KeyRecord primaryKey) {
+ this.primaryKey = primaryKey;
+ }
+
+ public String getSelectTransformation() {
+ return selectTransformation;
+ }
+
+ public void setSelectTransformation(String selectTransformation) {
+ this.selectTransformation = selectTransformation;
+ }
+
+ public Table getMaterializedStageTable() {
+ return materializedStageTable;
+ }
+
+ public Table getMaterializedTable() {
+ return materializedTable;
+ }
+
+ public void setMaterializedStageTable(Table materializedStageTable) {
+ this.materializedStageTable = materializedStageTable;
+ }
+
+ public void setMaterializedTable(Table materializedTable) {
+ this.materializedTable = materializedTable;
+ }
+
+ public void setResourcePath(String resourcePath) {
+ this.resourcePath = resourcePath;
+ }
+
+ public String getResourcePath() {
+ return resourcePath;
+ }
+
+ public Collection<KeyRecord> getAllKeys() {
+ Collection<KeyRecord> keys = new LinkedList<KeyRecord>();
+ if (getPrimaryKey() != null) {
+ keys.add(getPrimaryKey());
+ }
+ keys.addAll(getForeignKeys());
+ keys.addAll(getAccessPatterns());
+ keys.addAll(getIndexes());
+ keys.addAll(getUniqueKeys());
+ return keys;
+ }
+
+}
\ No newline at end of file
Deleted: branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/TableRecordImpl.java
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/TableRecordImpl.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/TableRecordImpl.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,306 +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.connector.metadata.runtime;
-
-import java.util.Collection;
-
-/**
- * TableRecordImpl
- */
-public class TableRecordImpl extends ColumnSetRecordImpl {
-
- private int cardinality;
- private int tableType;
- private String primaryKeyID;
- private String materializedTableID;
- private String materializedStageTableID;
- private boolean isVirtual;
- private boolean isSystem;
- private boolean isMaterialized;
- private boolean supportsUpdate;
- private String insertPlan;
- private String updatePlan;
- private String deletePlan;
- private Collection<ForeignKeyRecordImpl> foriegnKeys;
- private Collection<ColumnSetRecordImpl> indexes;
- private Collection<ColumnSetRecordImpl> uniqueKeys;
- private Collection<ColumnSetRecordImpl> accessPatterns;
- private ColumnSetRecordImpl primaryKey;
- private TransformationRecordImpl selectTransformation;
- private String materializedStageTableName;
- private String materializedTableName;
-
- public TableRecordImpl() {
- super((short)-1);
- }
-
- //==================================================================================
- // I N T E R F A C E M E T H O D S
- //==================================================================================
-
- /* (non-Javadoc)
- * @see com.metamatrix.modeler.core.metadata.runtime.TableRecord#getCardinality()
- */
- public int getCardinality() {
- return cardinality;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.modeler.core.metadata.runtime.TableRecord#getPrimaryKeyID()
- */
- public String getPrimaryKeyID() {
- return primaryKeyID;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.modeler.core.metadata.runtime.TableRecord#isVirtual()
- */
- public boolean isVirtual() {
- return isVirtual;
- }
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.TableRecord#isMaterialized()
- * @since 4.2
- */
- public boolean isMaterialized() {
- return isMaterialized;
- }
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.TableRecord#isPhysical()
- */
- public boolean isPhysical() {
- return !isVirtual();
- }
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.TableRecord#isSystem()
- */
- public boolean isSystem() {
- return isSystem;
- }
-
- /*
- * @see com.metamatrix.modeler.core.metadata.runtime.TableRecord#getTableType()
- */
- public int getTableType() {
- return tableType;
- }
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.TableRecord#getMaterializedStageTableID()
- * @since 4.2
- */
- public String getMaterializedStageTableID() {
- return this.materializedStageTableID;
- }
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.TableRecord#getMaterializedTableID()
- * @since 4.2
- */
- public String getMaterializedTableID() {
- return this.materializedTableID;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.modeler.core.metadata.runtime.TableRecord#supportsUpdate()
- */
- public boolean supportsUpdate() {
- return supportsUpdate;
- }
-
- // ==================================================================================
- // P U B L I C M E T H O D S
- // ==================================================================================
-
- /**
- * @param i
- */
- public void setCardinality(int i) {
- cardinality = i;
- }
-
- /**
- * @param i
- */
- public void setTableType(int i) {
- tableType = i;
- }
-
- /**
- * @param object
- */
- public void setPrimaryKeyID(String keyID) {
- primaryKeyID = keyID;
- }
-
- /**
- * @param b
- */
- public void setSupportsUpdate(boolean b) {
- supportsUpdate = b;
- }
-
- /**
- * @param b
- */
- public void setVirtual(boolean b) {
- isVirtual = b;
- }
-
- /**
- * @param isMaterialized The isMaterialized to set.
- * @since 4.2
- */
- public void setMaterialized(boolean isMaterialized) {
- this.isMaterialized = isMaterialized;
- }
-
- /**
- * @param b
- */
- public void setSystem(boolean b) {
- isSystem = b;
- }
-
- /**
- * @param materializedStageTableID The materializedStageTableID to set.
- * @since 4.2
- */
- public void setMaterializedStageTableID(String materializedStageTableID) {
- this.materializedStageTableID = materializedStageTableID;
- }
-
- /**
- * @param materializedTableID The materializedTableID to set.
- * @since 4.2
- */
- public void setMaterializedTableID(String materializedTableID) {
- this.materializedTableID = materializedTableID;
- }
-
- public String getInsertPlan() {
- return insertPlan;
- }
-
- public String getUpdatePlan() {
- return updatePlan;
- }
-
- public String getDeletePlan() {
- return deletePlan;
- }
-
- public void setInsertPlan(String insertPlan) {
- this.insertPlan = insertPlan;
- }
-
- public void setUpdatePlan(String updatePlan) {
- this.updatePlan = updatePlan;
- }
-
- public void setDeletePlan(String deletePlan) {
- this.deletePlan = deletePlan;
- }
-
- public Collection<ForeignKeyRecordImpl> getForeignKeys() {
- return this.foriegnKeys;
- }
-
- public void setForiegnKeys(Collection<ForeignKeyRecordImpl> foriegnKeys) {
- this.foriegnKeys = foriegnKeys;
- }
-
- public Collection<ColumnSetRecordImpl> getIndexes() {
- return this.indexes;
- }
-
- public void setIndexes(Collection<ColumnSetRecordImpl> indexes) {
- this.indexes = indexes;
- }
-
- public Collection<ColumnSetRecordImpl> getUniqueKeys() {
- return this.uniqueKeys;
- }
-
- public void setUniqueKeys(Collection<ColumnSetRecordImpl> uniqueKeys) {
- this.uniqueKeys = uniqueKeys;
- }
-
- public Collection<ColumnSetRecordImpl> getAccessPatterns() {
- return this.accessPatterns;
- }
-
- public void setAccessPatterns(Collection<ColumnSetRecordImpl> accessPatterns) {
- this.accessPatterns = accessPatterns;
- }
-
- public ColumnSetRecordImpl getPrimaryKey() {
- return this.primaryKey;
- }
-
- public void setPrimaryKey(ColumnSetRecordImpl primaryKey) {
- this.primaryKey = primaryKey;
- }
-
- public TransformationRecordImpl getSelectTransformation() {
- return selectTransformation;
- }
-
- public void setSelectTransformation(
- TransformationRecordImpl selectTransformation) {
- this.selectTransformation = selectTransformation;
- }
-
- public String getMaterializedStageTableName() {
- return this.materializedStageTableName;
- }
-
- public String getMaterializedTableName() {
- return this.materializedTableName;
- }
-
- public void setMaterializedStageTableName(String materializedStageTableName) {
- this.materializedStageTableName = materializedStageTableName;
- }
-
- public void setMaterializedTableName(String materializedTableName) {
- this.materializedTableName = materializedTableName;
- }
-
- public String toString() {
- StringBuffer sb = new StringBuffer(100);
- sb.append(getClass().getSimpleName());
- sb.append(" name="); //$NON-NLS-1$
- sb.append(getName());
- sb.append(", nameInSource="); //$NON-NLS-1$
- sb.append(getNameInSource());
- sb.append(", uuid="); //$NON-NLS-1$
- sb.append(getUUID());
- sb.append(", pathInModel="); //$NON-NLS-1$
- sb.append(getPath());
- return sb.toString();
- }
-
-}
\ No newline at end of file
Deleted: branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/TransformationRecordImpl.java
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/TransformationRecordImpl.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/metadata/runtime/TransformationRecordImpl.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,142 +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.connector.metadata.runtime;
-
-import java.util.List;
-
-/**
- * TransformationRecordImpl
- */
-public class TransformationRecordImpl extends AbstractMetadataRecord {
-
- public static interface Types {
- public static final String MAPPING = "Mapping"; //$NON-NLS-1$
- public static final String SELECT = "Select"; //$NON-NLS-1$
- public static final String INSERT = "Insert"; //$NON-NLS-1$
- public static final String UPDATE = "Update"; //$NON-NLS-1$
- public static final String DELETE = "Delete"; //$NON-NLS-1$
- public static final String PROCEDURE = "Procedure"; //$NON-NLS-1$
- }
-
- private String transformation;
- private String transformationType;
- private List bindings;
- private List schemaPaths;
- private String resourcePath;
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.TransformationRecord#getTransformation()
- */
- public String getTransformation() {
- return transformation;
- }
-
- /*
- * @see com.metamatrix.modeler.core.metadata.runtime.TransformationRecord#getBindings()
- */
- public List getBindings() {
- return this.bindings;
- }
-
- /*
- * @see com.metamatrix.modeler.core.metadata.runtime.TransformationRecord#getSchemaPaths()
- */
- public List getSchemaPaths() {
- return schemaPaths;
- }
-
- /*
- * @see com.metamatrix.modeler.core.metadata.runtime.TransformationRecord#getTransformationType()
- */
- public String getTransformationType() {
- return transformationType;
- }
-
- /**
- * @see com.metamatrix.modeler.core.metadata.runtime.TransformationRecord#getType()
- */
- public String getType() {
- return this.transformationType;
- }
-
- // ==================================================================================
- // P U B L I C M E T H O D S
- // ==================================================================================
-
- /**
- * @param string
- */
- public void setTransformation(final String string) {
- transformation = string;
- }
-
- /**
- * @param string
- */
- public void setTransformationType(String string) {
- transformationType = string;
- }
-
- /**
- * @param collection
- */
- public void setBindings(List bindings) {
- this.bindings = bindings;
- }
-
- /**
- * @param collection
- */
- public void setSchemaPaths(List collection) {
- schemaPaths = collection;
- }
-
- /**
- * @return
- */
- public String getResourcePath() {
- return resourcePath;
- }
-
- /**
- * @param path
- */
- public void setResourcePath(String path) {
- resourcePath = path;
- }
-
- public String toString() {
- StringBuffer sb = new StringBuffer(100);
- sb.append(getClass().getSimpleName());
- sb.append(" name="); //$NON-NLS-1$
- sb.append(getName());
- sb.append(", nameInSource="); //$NON-NLS-1$
- sb.append(getNameInSource());
- sb.append(", uuid="); //$NON-NLS-1$
- sb.append(getUUID());
- sb.append(", pathInModel="); //$NON-NLS-1$
- sb.append(getPath());
- return sb.toString();
- }
-
-}
\ No newline at end of file
Modified: branches/JCA/connector-api/src/main/java/org/teiid/connector/visitor/util/SQLStringVisitor.java
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/visitor/util/SQLStringVisitor.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/visitor/util/SQLStringVisitor.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -87,8 +87,6 @@
private Set<String> infixFunctions = new HashSet<String>(Arrays.asList("%", "+", "-", "*", "+", "/", "||", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$
"&", "|", "^", "#")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- private static final String ESCAPED_QUOTE = "''"; //$NON-NLS-1$
-
protected static final String UNDEFINED = "<undefined>"; //$NON-NLS-1$
protected static final String UNDEFINED_PARAM = "?"; //$NON-NLS-1$
@@ -160,8 +158,8 @@
* @param str the input string
* @return a SQL-safe string
*/
- protected String escapeString(String str) {
- return StringUtil.replaceAll(str, QUOTE, ESCAPED_QUOTE);
+ protected String escapeString(String str, String quote) {
+ return StringUtil.replaceAll(str, quote, quote + quote);
}
public String toString() {
@@ -735,7 +733,7 @@
.append("'}"); //$NON-NLS-1$
} else {
buffer.append(QUOTE)
- .append(escapeString(val))
+ .append(escapeString(val, QUOTE))
.append(QUOTE);
}
}
Modified: branches/JCA/connector-api/src/main/resources/org/teiid/connector/i18n.properties
===================================================================
--- branches/JCA/connector-api/src/main/resources/org/teiid/connector/i18n.properties 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connector-api/src/main/resources/org/teiid/connector/i18n.properties 2009-12-02 23:40:40 UTC (rev 1616)
@@ -65,4 +65,5 @@
MetadataFactory.unknown_datatype=Unknown datatype {0}
MetadataFactory.no_column_found=No column found with name {0}
-MetadataFactory.duplicate_name="Non-uniquely named record detected ''{0}''
\ No newline at end of file
+MetadataFactory.duplicate_name="Non-uniquely named record detected ''{0}''
+MetadataFactory.invalid_name=Invalid column name ''{0}'', cannot contain the . character.
\ No newline at end of file
Modified: branches/JCA/connector-sdk/pom.xml
===================================================================
--- branches/JCA/connector-sdk/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connector-sdk/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -4,7 +4,7 @@
<parent>
<artifactId>teiid</artifactId>
<groupId>org.jboss.teiid</groupId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>teiid-connector-sdk</artifactId>
@@ -79,5 +79,10 @@
<groupId>beanshell</groupId>
<artifactId>bsh</artifactId>
</dependency>
+ <dependency>
+ <groupId>javax.resource</groupId>
+ <artifactId>connector-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
</dependencies>
</project>
\ No newline at end of file
Modified: branches/JCA/connector-sdk/src/main/java/com/metamatrix/cdk/CommandBuilder.java
===================================================================
--- branches/JCA/connector-sdk/src/main/java/com/metamatrix/cdk/CommandBuilder.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connector-sdk/src/main/java/com/metamatrix/cdk/CommandBuilder.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -28,8 +28,8 @@
import org.teiid.connector.language.ICommand;
import org.teiid.connector.language.ILanguageFactory;
-import org.teiid.connector.language.impl.LanguageBridgeFactory;
import org.teiid.connector.language.impl.LanguageFactoryImpl;
+import org.teiid.dqp.internal.datamgr.language.LanguageBridgeFactory;
import com.metamatrix.api.exception.MetaMatrixComponentException;
import com.metamatrix.api.exception.query.QueryParserException;
Modified: branches/JCA/connector-sdk/src/main/java/com/metamatrix/cdk/ConnectorShellCommandTarget.java
===================================================================
--- branches/JCA/connector-sdk/src/main/java/com/metamatrix/cdk/ConnectorShellCommandTarget.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connector-sdk/src/main/java/com/metamatrix/cdk/ConnectorShellCommandTarget.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -152,7 +152,6 @@
public void stop() {
if (connector != null) {
- connector.stop();
connector = null;
}
connectorHost = null;
Modified: branches/JCA/connector-sdk/src/main/java/com/metamatrix/cdk/api/ConnectorHost.java
===================================================================
--- branches/JCA/connector-sdk/src/main/java/com/metamatrix/cdk/api/ConnectorHost.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connector-sdk/src/main/java/com/metamatrix/cdk/api/ConnectorHost.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -37,7 +37,6 @@
import org.teiid.connector.api.ExecutionContext;
import org.teiid.connector.api.ResultSetExecution;
import org.teiid.connector.api.UpdateExecution;
-import org.teiid.connector.basic.ConnectorEnvironmentImpl;
import org.teiid.connector.language.ICommand;
import org.teiid.connector.language.impl.BatchedUpdatesImpl;
import org.teiid.connector.metadata.runtime.RuntimeMetadata;
@@ -93,7 +92,6 @@
this.util = util;
applicationEnvironment = new ApplicationEnvironment();
- connectorEnvironment = new ConnectorEnvironmentImpl(connectorEnvironmentProperties, new SysLogger(showLog), applicationEnvironment);
this.connectorEnvironmentProperties = PropertiesUtils.clone(connectorEnvironmentProperties);
}
@@ -104,7 +102,6 @@
}
private void startConnector() throws ConnectorException {
- connector.start(connectorEnvironment);
connectorStarted = true;
}
@@ -128,7 +125,7 @@
}
public void setSecurityContext(String vdbName, String vdbVersion, String userName, Serializable trustedPayload, Serializable executionPayload) {
- this.executionContext = new ExecutionContextImpl(vdbName, vdbVersion, userName, trustedPayload, executionPayload, "Connection", "Connector<CDK>", "Request", "1", "0"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
+ this.executionContext = new ExecutionContextImpl(vdbName, vdbVersion, executionPayload, "Connection", "Connector<CDK>", "Request", "1", "0"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
}
public void setExecutionContext(ExecutionContext context) {
@@ -248,7 +245,7 @@
}
private Connection getConnection() throws ConnectorException {
- Connection connection = connector.getConnection(executionContext);
+ Connection connection = connector.getConnection();
return connection;
}
}
Modified: branches/JCA/connector-sdk/src/main/java/com/metamatrix/cdk/api/EnvironmentUtility.java
===================================================================
--- branches/JCA/connector-sdk/src/main/java/com/metamatrix/cdk/api/EnvironmentUtility.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connector-sdk/src/main/java/com/metamatrix/cdk/api/EnvironmentUtility.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -23,13 +23,9 @@
package com.metamatrix.cdk.api;
import java.io.Serializable;
-import java.util.Properties;
-import org.teiid.connector.api.ConnectorEnvironment;
import org.teiid.connector.api.ConnectorLogger;
-import org.teiid.connector.api.ConnectorPropertyNames;
import org.teiid.connector.api.ExecutionContext;
-import org.teiid.connector.basic.ConnectorEnvironmentImpl;
import org.teiid.dqp.internal.datamgr.impl.ExecutionContextImpl;
@@ -56,49 +52,16 @@
logger.setLevel(logLevel);
return logger;
}
-
- /**
- * Create a ConnectorEnvironment with the specified properties and logger.
- * @param props The properties to put in the environment
- * @param logger The logger to use
- * @return A ConnectorEnvironment instance
- */
- public static ConnectorEnvironment createEnvironment(Properties props, ConnectorLogger logger) {
- if(props.getProperty(ConnectorPropertyNames.CONNECTOR_BINDING_NAME) == null) {
- props.setProperty(ConnectorPropertyNames.CONNECTOR_BINDING_NAME, "test"); //$NON-NLS-1$
- }
- return new ConnectorEnvironmentImpl(props, logger, null);
- }
- /**
- * Create a ConnectorEnvironment with the specified properties. A default logger will be
- * created that prints logging to STDOUT for INFO level and above.
- * @param props The properties to put in the environment
- * @return A ConnectorEnvironment instance
- */
- public static ConnectorEnvironment createEnvironment(Properties props) {
- return createEnvironment(props, true);
- }
/**
- * Create a ConnectorEnvironment with the specified properties. A default logger will be
- * created that prints logging to STDOUT for INFO level and above if stdoutLog is true.
- * @param props The properties to put in the environment
- * @param stdoutLog
- * @return A ConnectorEnvironment instance
- */
- public static ConnectorEnvironment createEnvironment(Properties props, boolean stdoutLog) {
- return EnvironmentUtility.createEnvironment(props, stdoutLog?createStdoutLogger(SysLogger.INFO):new SysLogger(false));
- }
-
- /**
* Create an ExecutionContext and set just the user name. Dummy information will be
* created for the other parts of the context.
* @param user User name
* @return A SecurityContext / ExecutionContext instance
*/
public static ExecutionContext createSecurityContext(String user) {
- return new ExecutionContextImpl("vdb", "1", user, null, null, "Connection", "ConnectorID<CDK>", "Request", "1", "0"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$
+ return new ExecutionContextImpl("vdb", "1", null, "Connection", "ConnectorID<CDK>", "Request", "1", "0"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$
}
/**
@@ -111,7 +74,7 @@
* @return A SecurityContext / ExecutionContext instance
*/
public static ExecutionContext createSecurityContext(String vdbName, String vdbVersion, String user, Serializable trustedToken) {
- return new ExecutionContextImpl(vdbName, vdbVersion, user, trustedToken, null, "Connection", "ConnectorID<CDK>", "Request", "1", "0"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
+ return new ExecutionContextImpl(vdbName, vdbVersion, null, "Connection", "ConnectorID<CDK>", "Request", "1", "0"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
}
/**
@@ -122,7 +85,7 @@
* @return A SecurityContext / ExecutionContext instance
*/
public static ExecutionContext createExecutionContext(String requestID, String partID) {
- return new ExecutionContextImpl("vdb", "1", "user", null, null, "Connection", "ConnectorID<CDK>", requestID, partID, "0"); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$//$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
+ return new ExecutionContextImpl("vdb", "1", null, "Connection", "ConnectorID<CDK>", requestID, partID, "0"); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$//$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
}
/**
@@ -142,7 +105,7 @@
public static ExecutionContext createExecutionContext(String vdbName, String vdbVersion, String user,
Serializable trustedToken, Serializable executionPayload,
String connectionID, String connectorID, String requestID, String partID, boolean useResultSetCache) {
- return new ExecutionContextImpl(vdbName, vdbVersion, user, trustedToken, executionPayload, connectionID, connectorID, requestID, partID, "0"); //$NON-NLS-1$
+ return new ExecutionContextImpl(vdbName, vdbVersion, executionPayload, connectionID, connectorID, requestID, partID, "0"); //$NON-NLS-1$
}
}
Modified: branches/JCA/connectors/connector-jdbc/pom.xml
===================================================================
--- branches/JCA/connectors/connector-jdbc/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connectors/connector-jdbc/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -5,7 +5,7 @@
<parent>
<artifactId>connectors</artifactId>
<groupId>org.jboss.teiid</groupId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>connector-jdbc</artifactId>
Modified: branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCManagedConnectionFactory.java
===================================================================
--- branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCManagedConnectionFactory.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCManagedConnectionFactory.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -21,8 +21,6 @@
*/
package org.teiid.connector.jdbc;
-import java.util.StringTokenizer;
-
import org.teiid.connector.api.ConnectorException;
import org.teiid.connector.basic.BasicManagedConnectionFactory;
import org.teiid.connector.jdbc.translator.Translator;
@@ -33,6 +31,7 @@
public class JDBCManagedConnectionFactory extends BasicManagedConnectionFactory {
+ private static final long serialVersionUID = -6719853084334318668L;
// JDBC connector properties
private boolean useBindVariables = false;
private String databaseTimeZone;
@@ -41,20 +40,7 @@
private boolean trimStrings=false;
private boolean useCommentsInSourceQuery = false;
private int fetchSize = -1;
-
-
-
- // import specific properties
- private String catalog;
- private String schemaPattern;
- private String tableNamePattern;
- private String procedureNamePattern;
- private String[] tableTypes;
- private boolean useFullSchemaName = true;
- private boolean importKeys = true;
- private boolean importIndexes = true;
- private boolean importProcedures = true;
-
+
// derived
private Translator sqlTranslator;
@@ -129,82 +115,4 @@
public int getFetchSize() {
return this.fetchSize;
}
-
- // Importer specific properties
- public void setImportCatalog(String arg0) {
- this.catalog = arg0;
- }
- public String getImportCatalog() {
- return this.catalog;
- }
-
- public void setImportSchemaPattern(String arg0) {
- this.schemaPattern = arg0;
- }
-
- public String getImportSchemaPattern() {
- return this.schemaPattern;
- }
-
- public void setImportTableNamePattern(String arg0) {
- this.tableNamePattern = arg0;
- }
-
- public String getImportTableNamePattern() {
- return this.tableNamePattern;
- }
-
- public void setImportTableTypes(String arg0) {
- StringTokenizer st = new StringTokenizer(arg0, ","); //$NON-NLS-1$
- this.tableTypes = new String[st.countTokens()];
-
- int i = 0;
- while(st.hasMoreTokens()) {
- this.tableTypes[i++] = st.nextToken();
- }
- }
-
- public String[] getImportTableTypes() {
- return this.tableTypes;
- }
-
- public void setImportUseFullSchemaName(Boolean arg0) {
- this.useFullSchemaName = arg0.booleanValue();
- }
-
- public boolean getImportUseFullSchemaName() {
- return this.useFullSchemaName;
- }
-
- public void setImportProcedureNamePattern(String arg0) {
- this.procedureNamePattern = arg0;
- }
-
- public String getImportProcedureNamePattern() {
- return this.procedureNamePattern;
- }
-
- public void setImportIndexes(Boolean arg0) {
- this.importIndexes = arg0.booleanValue();
- }
-
- public boolean getImportIndexes() {
- return this.importIndexes;
- }
-
- public void setImportKeys(Boolean arg0) {
- this.importKeys = arg0.booleanValue();
- }
-
- public boolean getImportKeys() {
- return this.importKeys;
- }
-
- public void setImportProcedures(Boolean arg0) {
- this.importProcedures = arg0.booleanValue();
- }
-
- public boolean getImportProcedures() {
- return this.importProcedures;
- }
}
Modified: branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCMetdataProcessor.java
===================================================================
--- branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCMetdataProcessor.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCMetdataProcessor.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -26,9 +26,12 @@
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.SQLException;
+import java.sql.Types;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Map;
+import java.util.Set;
import java.util.TreeMap;
import org.teiid.connector.api.ConnectorException;
@@ -36,11 +39,12 @@
import org.teiid.connector.api.TypeFacility;
import org.teiid.connector.metadata.runtime.AbstractMetadataRecord;
import org.teiid.connector.metadata.runtime.BaseColumn;
-import org.teiid.connector.metadata.runtime.ColumnRecordImpl;
+import org.teiid.connector.metadata.runtime.Column;
import org.teiid.connector.metadata.runtime.MetadataFactory;
import org.teiid.connector.metadata.runtime.ProcedureRecordImpl;
-import org.teiid.connector.metadata.runtime.TableRecordImpl;
-import org.teiid.connector.metadata.runtime.MetadataConstants.PARAMETER_TYPES;
+import org.teiid.connector.metadata.runtime.Table;
+import org.teiid.connector.metadata.runtime.BaseColumn.NullType;
+import org.teiid.connector.metadata.runtime.ProcedureParameter.Type;
/**
* Reads from {@link DatabaseMetaData} and creates metadata through the {@link MetadataFactory}.
@@ -54,9 +58,9 @@
private String catalog;
private String schema;
private String name;
- private TableRecordImpl table;
+ private Table table;
- public TableInfo(String catalog, String schema, String name, TableRecordImpl table) {
+ public TableInfo(String catalog, String schema, String name, Table table) {
this.catalog = catalog;
this.schema = schema;
this.name = name;
@@ -64,11 +68,25 @@
}
}
+ private boolean importProcedures;
+ private boolean importKeys;
+ private boolean importIndexes;
+ private String procedureNamePattern;
+ private boolean useFullSchemaName;
+ private String[] tableTypes;
+ private String tableNamePattern;
+ private String catalog;
+ private String schemaPattern;
private boolean importApproximateIndexes = true;
+ private boolean widenUnsingedTypes;
+ //TODO add an option to not fully qualify name in source
private ConnectorLogger logger;
JDBCManagedConnectionFactory config;
+ private Set<String> unsignedTypes = new HashSet<String>();
+
+
public JDBCMetdataProcessor(JDBCManagedConnectionFactory config) {
this.logger = config.getLogger();
this.config = config;
@@ -78,95 +96,107 @@
throws SQLException, ConnectorException {
DatabaseMetaData metadata = conn.getMetaData();
+ if (widenUnsingedTypes) {
+ ResultSet rs = metadata.getTableTypes();
+ while (rs.next()) {
+ String name = rs.getString(1);
+ boolean unsigned = rs.getBoolean(10);
+ if (unsigned) {
+ unsignedTypes.add(name);
+ }
+ }
+ }
+
Map<String, TableInfo> tableMap = getTables(metadataFactory, metadata);
- if (config.getImportKeys()) {
+ if (importKeys) {
getPrimaryKeys(metadataFactory, metadata, tableMap);
getForeignKeys(metadataFactory, metadata, tableMap);
}
- if (config.getImportIndexes()) {
+ if (importIndexes) {
getIndexes(metadataFactory, metadata, tableMap);
}
- if (config.getImportProcedures()) {
+ if (importProcedures) {
getProcedures(metadataFactory, metadata);
}
+
}
private void getProcedures(MetadataFactory metadataFactory,
DatabaseMetaData metadata) throws SQLException, ConnectorException {
logger.logDetail("JDBCMetadataProcessor - Importing procedures"); //$NON-NLS-1$
- ResultSet procedures = metadata.getProcedures(config.getImportCatalog(), config.getImportSchemaPattern(), config.getImportProcedureNamePattern());
+ ResultSet procedures = metadata.getProcedures(catalog, schemaPattern, procedureNamePattern);
while (procedures.next()) {
String procedureCatalog = procedures.getString(1);
String procedureSchema = procedures.getString(2);
String procedureName = procedures.getString(3);
String fullProcedureName = getTableName(procedureCatalog, procedureSchema, procedureName);
- ProcedureRecordImpl procedure = metadataFactory.addProcedure(config.getImportUseFullSchemaName()?fullProcedureName:procedureName);
+ ProcedureRecordImpl procedure = metadataFactory.addProcedure(useFullSchemaName?fullProcedureName:procedureName);
procedure.setNameInSource(fullProcedureName);
- ResultSet columns = metadata.getProcedureColumns(config.getImportCatalog(), procedureSchema, procedureName, null);
+ ResultSet columns = metadata.getProcedureColumns(catalog, procedureSchema, procedureName, null);
while (columns.next()) {
String columnName = columns.getString(4);
short columnType = columns.getShort(5);
int sqlType = columns.getInt(6);
+ String typeName = columns.getString(7);
+ sqlType = checkForUnsigned(sqlType, typeName);
if (columnType == DatabaseMetaData.procedureColumnUnknown) {
continue; //there's a good chance this won't work
}
BaseColumn record = null;
if (columnType == DatabaseMetaData.procedureColumnResult) {
- ColumnRecordImpl column = metadataFactory.addProcedureResultSetColumn(columnName, TypeFacility.getDataTypeNameFromSQLType(sqlType), procedure);
+ Column column = metadataFactory.addProcedureResultSetColumn(columnName, TypeFacility.getDataTypeNameFromSQLType(sqlType), procedure);
record = column;
- column.setNativeType(columns.getString(7));
+ column.setNativeType(typeName);
} else {
- record = metadataFactory.addProcedureParameter(columnName, TypeFacility.getDataTypeNameFromSQLType(sqlType), getParameterType(columnType), procedure);
+ record = metadataFactory.addProcedureParameter(columnName, TypeFacility.getDataTypeNameFromSQLType(sqlType), Type.values()[columnType], procedure);
}
record.setPrecision(columns.getInt(8));
record.setLength(columns.getInt(9));
record.setScale(columns.getInt(10));
record.setRadix(columns.getInt(11));
- record.setNullType(columns.getShort(12));
- String remarks = columns.getString(13);
- if (remarks != null) {
- metadataFactory.addAnnotation(remarks, record);
- }
+ record.setNullType(NullType.values()[columns.getShort(12)]);
+ record.setAnnotation(columns.getString(13));
}
}
procedures.close();
}
-
- private static short getParameterType(short type) {
- switch (type) {
- case DatabaseMetaData.procedureColumnIn:
- return PARAMETER_TYPES.IN_PARM;
- case DatabaseMetaData.procedureColumnInOut:
- return PARAMETER_TYPES.INOUT_PARM;
- case DatabaseMetaData.procedureColumnOut:
- return PARAMETER_TYPES.OUT_PARM;
- case DatabaseMetaData.procedureColumnReturn:
- return PARAMETER_TYPES.RETURN_VALUE;
+
+ private int checkForUnsigned(int sqlType, String typeName) {
+ if (widenUnsingedTypes && unsignedTypes.contains(typeName)) {
+ switch (sqlType) {
+ case Types.TINYINT:
+ sqlType = Types.SMALLINT;
+ break;
+ case Types.SMALLINT:
+ sqlType = Types.INTEGER;
+ break;
+ case Types.INTEGER:
+ sqlType = Types.BIGINT;
+ break;
+ }
}
- throw new AssertionError();
+ return sqlType;
}
-
+
private Map<String, TableInfo> getTables(MetadataFactory metadataFactory,
DatabaseMetaData metadata) throws SQLException, ConnectorException {
logger.logDetail("JDBCMetadataProcessor - Importing tables"); //$NON-NLS-1$
- ResultSet tables = metadata.getTables(config.getImportCatalog(), config.getImportSchemaPattern(), config.getImportTableNamePattern(), config.getImportTableTypes());
+ ResultSet tables = metadata.getTables(catalog, schemaPattern, tableNamePattern, tableTypes);
Map<String, TableInfo> tableMap = new HashMap<String, TableInfo>();
while (tables.next()) {
String tableCatalog = tables.getString(1);
String tableSchema = tables.getString(2);
String tableName = tables.getString(3);
String fullName = getTableName(tableCatalog, tableSchema, tableName);
- TableRecordImpl table = metadataFactory.addTable(config.getImportUseFullSchemaName()?fullName:tableName);
+ Table table = metadataFactory.addTable(useFullSchemaName?fullName:tableName);
table.setNameInSource(fullName);
table.setSupportsUpdate(true);
String remarks = tables.getString(5);
- if (remarks != null) {
- metadataFactory.addAnnotation(remarks, table);
- }
+ table.setAnnotation(remarks);
tableMap.put(fullName, new TableInfo(tableCatalog, tableSchema, tableName, table));
tableMap.put(tableName, new TableInfo(tableCatalog, tableSchema, tableName, table));
}
@@ -180,7 +210,7 @@
DatabaseMetaData metadata, Map<String, TableInfo> tableMap)
throws SQLException, ConnectorException {
logger.logDetail("JDBCMetadataProcessor - Importing columns"); //$NON-NLS-1$
- ResultSet columns = metadata.getColumns(config.getImportCatalog(), config.getImportSchemaPattern(), config.getImportTableNamePattern(), null);
+ ResultSet columns = metadata.getColumns(catalog, schemaPattern, tableNamePattern, null);
int rsColumns = columns.getMetaData().getColumnCount();
while (columns.next()) {
String tableCatalog = columns.getString(1);
@@ -196,16 +226,16 @@
}
String columnName = columns.getString(4);
int type = columns.getInt(5);
+ String typeName = columns.getString(6);
+ type = checkForUnsigned(type, typeName);
//note that the resultset is already ordered by position, so we can rely on just adding columns in order
- ColumnRecordImpl column = metadataFactory.addColumn(columnName, TypeFacility.getDataTypeNameFromSQLType(type), tableInfo.table);
+ Column column = metadataFactory.addColumn(columnName, TypeFacility.getDataTypeNameFromSQLType(type), tableInfo.table);
column.setNativeType(columns.getString(6));
column.setRadix(columns.getInt(10));
- column.setNullType(columns.getInt(11));
+ column.setNullType(NullType.values()[columns.getShort(11)]);
column.setUpdatable(true);
String remarks = columns.getString(12);
- if (remarks != null) {
- metadataFactory.addAnnotation(remarks, column);
- }
+ column.setAnnotation(remarks);
column.setCharOctetLength(columns.getInt(16));
if (rsColumns >= 23) {
column.setAutoIncrementable("YES".equalsIgnoreCase(columns.getString(23))); //$NON-NLS-1$
@@ -341,4 +371,49 @@
+ public void setTableNamePattern(String tableNamePattern) {
+ this.tableNamePattern = tableNamePattern;
+ }
+
+ public void setTableTypes(String[] tableTypes) {
+ this.tableTypes = tableTypes;
+ }
+
+ public void setUseFullSchemaName(boolean useFullSchemaName) {
+ this.useFullSchemaName = useFullSchemaName;
+ }
+
+ public void setProcedureNamePattern(String procedureNamePattern) {
+ this.procedureNamePattern = procedureNamePattern;
+ }
+
+ public void setImportIndexes(boolean importIndexes) {
+ this.importIndexes = importIndexes;
+ }
+
+ public void setImportKeys(boolean importKeys) {
+ this.importKeys = importKeys;
+ }
+
+ public void setImportProcedures(boolean importProcedures) {
+ this.importProcedures = importProcedures;
+ }
+
+ public void setImportApproximateIndexes(boolean importApproximateIndexes) {
+ this.importApproximateIndexes = importApproximateIndexes;
+ }
+
+ public void setWidenUnsingedTypes(boolean widenUnsingedTypes) {
+ this.widenUnsingedTypes = widenUnsingedTypes;
+ }
+
+ // Importer specific properties
+ public void setCatalog(String catalog) {
+ this.catalog = catalog;
+ }
+
+ public void setSchemaPattern(String schema) {
+ this.schemaPattern = schema;
+ }
+
}
Modified: branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCProcedureExecution.java
===================================================================
--- branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCProcedureExecution.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCProcedureExecution.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -24,9 +24,7 @@
import java.sql.CallableStatement;
import java.sql.Connection;
-import java.sql.ParameterMetaData;
import java.sql.SQLException;
-import java.sql.Types;
import java.util.ArrayList;
import java.util.List;
@@ -34,7 +32,6 @@
import org.teiid.connector.api.DataNotAvailableException;
import org.teiid.connector.api.ExecutionContext;
import org.teiid.connector.api.ProcedureExecution;
-import org.teiid.connector.api.TypeFacility;
import org.teiid.connector.jdbc.translator.TranslatedCommand;
import org.teiid.connector.language.ICommand;
import org.teiid.connector.language.IParameter;
@@ -45,8 +42,6 @@
*/
public class JDBCProcedureExecution extends JDBCQueryExecution implements ProcedureExecution {
- private ParameterMetaData parameterMetaData;
-
/**
* @param connection
* @param sqlTranslator
@@ -71,11 +66,7 @@
try{
//create parameter index map
CallableStatement cstmt = getCallableStatement(sql);
- this.parameterMetaData = cstmt.getParameterMetaData();
this.results = sqlTranslator.executeStoredProcedure(cstmt, translatedComm);
- if (results != null) {
- initResultSetInfo();
- }
addStatementWarnings();
}catch(SQLException e){
throw new ConnectorException(e, JDBCPlugin.Util.getString("JDBCQueryExecution.Error_executing_query__1", sql)); //$NON-NLS-1$
@@ -124,12 +115,6 @@
private void addParameterValue(List<Object> result, int paramIndex,
IParameter parameter) throws SQLException {
Object value = sqlTranslator.retrieveValue((CallableStatement)this.statement, paramIndex, parameter.getType());
- if (value != null
- && TypeFacility.RUNTIME_TYPES.STRING.equals(value.getClass())
- && (trimString || (parameterMetaData != null && parameterMetaData
- .getParameterType(paramIndex) == Types.CHAR))) {
- value = trimString((String)value);
- }
result.add(value);
}
Modified: branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCQueryExecution.java
===================================================================
--- branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCQueryExecution.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCQueryExecution.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -28,9 +28,7 @@
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
-import java.sql.ResultSetMetaData;
import java.sql.SQLException;
-import java.sql.Types;
import java.util.ArrayList;
import java.util.List;
@@ -55,7 +53,6 @@
protected ResultSet results;
protected ICommand command;
protected Class<?>[] columnDataTypes;
- private boolean[] trimColumn;
// ===========================================================================================================================
// Constructors
@@ -86,24 +83,11 @@
results = pstatement.executeQuery();
}
addStatementWarnings();
- initResultSetInfo();
-
} catch (SQLException e) {
throw new JDBCExecutionException(e, translatedComm);
}
}
- protected void initResultSetInfo() throws SQLException {
- trimColumn = new boolean[columnDataTypes.length];
- ResultSetMetaData rsmd = results.getMetaData();
- for(int i=0; i<columnDataTypes.length; i++) {
-
- if(columnDataTypes[i].equals(String.class)) {
- trimColumn[i] = trimString || rsmd.getColumnType(i+1) == Types.CHAR;
- }
- }
- }
-
@Override
public List<?> next() throws ConnectorException, DataNotAvailableException {
try {
@@ -114,9 +98,6 @@
for (int i = 0; i < columnDataTypes.length; i++) {
// Convert from 0-based to 1-based
Object value = sqlTranslator.retrieveValue(results, i+1, columnDataTypes[i]);
- if (trimColumn[i] && value instanceof String) {
- value = trimString((String)value);
- }
vals.add(value);
}
@@ -131,24 +112,6 @@
}
/**
- * Expects string to never be null
- * @param value Incoming value
- * @return Right trimmed value
- * @since 4.2
- */
- public static String trimString(String value) {
- for(int i=value.length()-1; i>=0; i--) {
- if(value.charAt(i) != ' ') {
- // end of trim, return what's left
- return value.substring(0, i+1);
- }
- }
-
- // All spaces, so trim it all
- return ""; //$NON-NLS-1$
- }
-
- /**
* @see org.teiid.connector.jdbc.JDBCBaseExecution#close()
*/
public synchronized void close() throws ConnectorException {
Modified: branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCSourceConnection.java
===================================================================
--- branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCSourceConnection.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/JDBCSourceConnection.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -25,10 +25,10 @@
package org.teiid.connector.jdbc;
import java.sql.SQLException;
-import java.util.Map;
import org.teiid.connector.api.ConnectorException;
import org.teiid.connector.api.ExecutionContext;
+import org.teiid.connector.api.MetadataProvider;
import org.teiid.connector.api.ProcedureExecution;
import org.teiid.connector.api.ResultSetExecution;
import org.teiid.connector.api.UpdateExecution;
@@ -37,16 +37,16 @@
import org.teiid.connector.language.ICommand;
import org.teiid.connector.language.IProcedure;
import org.teiid.connector.language.IQueryCommand;
-import org.teiid.connector.metadata.runtime.ConnectorMetadata;
-import org.teiid.connector.metadata.runtime.DatatypeRecordImpl;
import org.teiid.connector.metadata.runtime.MetadataFactory;
import org.teiid.connector.metadata.runtime.RuntimeMetadata;
+import com.metamatrix.common.util.PropertiesUtils;
+
/**
*
*/
-public class JDBCSourceConnection extends BasicConnection {
+public class JDBCSourceConnection extends BasicConnection implements MetadataProvider{
protected java.sql.Connection physicalConnection;
protected JDBCManagedConnectionFactory environment;
private Translator sqlTranslator;
@@ -91,15 +91,12 @@
}
}
-
@Override
- public ConnectorMetadata getModelMetaData(String modelName, Map<String, DatatypeRecordImpl> dataTypes)
- throws ConnectorException {
+ public void getConnectorMetadata(MetadataFactory metadataFactory) throws ConnectorException {
try {
- MetadataFactory metadataFactory = new MetadataFactory(modelName, dataTypes);
JDBCMetdataProcessor metadataProcessor = new JDBCMetdataProcessor(this.environment);
+ PropertiesUtils.setBeanProperties(metadataProcessor, metadataFactory.getImportProperties(), "importer"); //$NON-NLS-1$
metadataProcessor.getConnectorMetadata(this.physicalConnection, metadataFactory);
- return metadataFactory;
} catch (SQLException e) {
throw new ConnectorException(e);
}
Copied: branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/h2 (from rev 1614, trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/h2)
Deleted: branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/h2/H2Capabilities.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/h2/H2Capabilities.java 2009-12-01 21:17:40 UTC (rev 1614)
+++ branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/h2/H2Capabilities.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,133 +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.connector.jdbc.h2;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.teiid.connector.api.SourceSystemFunctions;
-import org.teiid.connector.jdbc.JDBCCapabilities;
-
-public class H2Capabilities extends JDBCCapabilities {
-
- public List<String> getSupportedFunctions() {
- List<String> supportedFunctions = new ArrayList<String>();
- supportedFunctions.addAll(super.getSupportedFunctions());
-
- supportedFunctions.add(SourceSystemFunctions.ABS);
- supportedFunctions.add(SourceSystemFunctions.ACOS);
- supportedFunctions.add(SourceSystemFunctions.ASIN);
- supportedFunctions.add(SourceSystemFunctions.ATAN);
- supportedFunctions.add(SourceSystemFunctions.ATAN2);
- supportedFunctions.add(SourceSystemFunctions.BITAND);
- //supportedFunctions.add(SourceSystemFunctions.BITNOT);
- supportedFunctions.add(SourceSystemFunctions.BITOR);
- supportedFunctions.add(SourceSystemFunctions.BITXOR);
- supportedFunctions.add(SourceSystemFunctions.CEILING);
- supportedFunctions.add(SourceSystemFunctions.COS);
- supportedFunctions.add(SourceSystemFunctions.COT);
- supportedFunctions.add(SourceSystemFunctions.DEGREES);
- supportedFunctions.add(SourceSystemFunctions.EXP);
- supportedFunctions.add(SourceSystemFunctions.FLOOR);
- supportedFunctions.add(SourceSystemFunctions.LOG);
- supportedFunctions.add(SourceSystemFunctions.LOG10);
- supportedFunctions.add(SourceSystemFunctions.MOD);
- supportedFunctions.add(SourceSystemFunctions.PI);
- supportedFunctions.add(SourceSystemFunctions.POWER);
- supportedFunctions.add(SourceSystemFunctions.RADIANS);
- supportedFunctions.add(SourceSystemFunctions.ROUND);
- supportedFunctions.add(SourceSystemFunctions.SIGN);
- supportedFunctions.add(SourceSystemFunctions.SIN);
- supportedFunctions.add(SourceSystemFunctions.SQRT);
- supportedFunctions.add(SourceSystemFunctions.TAN);
-
- supportedFunctions.add(SourceSystemFunctions.ASCII);
- supportedFunctions.add(SourceSystemFunctions.CHAR);
- supportedFunctions.add(SourceSystemFunctions.CONCAT);
- supportedFunctions.add(SourceSystemFunctions.INSERT);
- supportedFunctions.add(SourceSystemFunctions.LCASE);
- supportedFunctions.add(SourceSystemFunctions.LEFT);
- supportedFunctions.add(SourceSystemFunctions.LENGTH);
- supportedFunctions.add(SourceSystemFunctions.LOCATE);
- supportedFunctions.add(SourceSystemFunctions.LPAD);
- supportedFunctions.add(SourceSystemFunctions.LTRIM);
- supportedFunctions.add(SourceSystemFunctions.REPEAT);
- supportedFunctions.add(SourceSystemFunctions.REPLACE);
- supportedFunctions.add(SourceSystemFunctions.RIGHT);
- supportedFunctions.add(SourceSystemFunctions.RPAD);
- supportedFunctions.add(SourceSystemFunctions.RTRIM);
- supportedFunctions.add(SourceSystemFunctions.SUBSTRING);
- supportedFunctions.add(SourceSystemFunctions.UCASE);
-
- supportedFunctions.add(SourceSystemFunctions.DAYNAME);
- supportedFunctions.add(SourceSystemFunctions.DAYOFMONTH);
- supportedFunctions.add(SourceSystemFunctions.DAYOFWEEK);
- supportedFunctions.add(SourceSystemFunctions.DAYOFYEAR);
-
- supportedFunctions.add(SourceSystemFunctions.FORMATTIMESTAMP);
- supportedFunctions.add(SourceSystemFunctions.HOUR);
- supportedFunctions.add(SourceSystemFunctions.MINUTE);
- supportedFunctions.add(SourceSystemFunctions.MONTH);
- supportedFunctions.add(SourceSystemFunctions.MONTHNAME);
-
- supportedFunctions.add(SourceSystemFunctions.PARSETIMESTAMP);
- supportedFunctions.add(SourceSystemFunctions.QUARTER);
- supportedFunctions.add(SourceSystemFunctions.SECOND);
- supportedFunctions.add(SourceSystemFunctions.TIMESTAMPADD);
- supportedFunctions.add(SourceSystemFunctions.TIMESTAMPDIFF);
- //supportedFunctions.add(SourceSystemFunctions.TIMESTAMPCREATE);
- supportedFunctions.add(SourceSystemFunctions.WEEK);
- supportedFunctions.add(SourceSystemFunctions.YEAR);
-
- supportedFunctions.add(SourceSystemFunctions.CONVERT);
- supportedFunctions.add(SourceSystemFunctions.IFNULL);
- supportedFunctions.add(SourceSystemFunctions.COALESCE);
- return supportedFunctions;
- }
-
- @Override
- public boolean supportsInlineViews() {
- return true;
- }
-
- @Override
- public boolean supportsRowLimit() {
- return true;
- }
-
- @Override
- public boolean supportsRowOffset() {
- return true;
- }
-
- @Override
- public boolean supportsExcept() {
- return true;
- }
-
- @Override
- public boolean supportsIntersect() {
- return true;
- }
-
-}
Copied: branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/h2/H2Capabilities.java (from rev 1614, trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/h2/H2Capabilities.java)
===================================================================
--- branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/h2/H2Capabilities.java (rev 0)
+++ branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/h2/H2Capabilities.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,133 @@
+/*
+ * 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.connector.jdbc.h2;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.teiid.connector.api.SourceSystemFunctions;
+import org.teiid.connector.jdbc.JDBCCapabilities;
+
+public class H2Capabilities extends JDBCCapabilities {
+
+ public List<String> getSupportedFunctions() {
+ List<String> supportedFunctions = new ArrayList<String>();
+ supportedFunctions.addAll(super.getSupportedFunctions());
+
+ supportedFunctions.add(SourceSystemFunctions.ABS);
+ supportedFunctions.add(SourceSystemFunctions.ACOS);
+ supportedFunctions.add(SourceSystemFunctions.ASIN);
+ supportedFunctions.add(SourceSystemFunctions.ATAN);
+ supportedFunctions.add(SourceSystemFunctions.ATAN2);
+ supportedFunctions.add(SourceSystemFunctions.BITAND);
+ //supportedFunctions.add(SourceSystemFunctions.BITNOT);
+ supportedFunctions.add(SourceSystemFunctions.BITOR);
+ supportedFunctions.add(SourceSystemFunctions.BITXOR);
+ supportedFunctions.add(SourceSystemFunctions.CEILING);
+ supportedFunctions.add(SourceSystemFunctions.COS);
+ supportedFunctions.add(SourceSystemFunctions.COT);
+ supportedFunctions.add(SourceSystemFunctions.DEGREES);
+ supportedFunctions.add(SourceSystemFunctions.EXP);
+ supportedFunctions.add(SourceSystemFunctions.FLOOR);
+ supportedFunctions.add(SourceSystemFunctions.LOG);
+ supportedFunctions.add(SourceSystemFunctions.LOG10);
+ supportedFunctions.add(SourceSystemFunctions.MOD);
+ supportedFunctions.add(SourceSystemFunctions.PI);
+ supportedFunctions.add(SourceSystemFunctions.POWER);
+ supportedFunctions.add(SourceSystemFunctions.RADIANS);
+ supportedFunctions.add(SourceSystemFunctions.ROUND);
+ supportedFunctions.add(SourceSystemFunctions.SIGN);
+ supportedFunctions.add(SourceSystemFunctions.SIN);
+ supportedFunctions.add(SourceSystemFunctions.SQRT);
+ supportedFunctions.add(SourceSystemFunctions.TAN);
+
+ supportedFunctions.add(SourceSystemFunctions.ASCII);
+ supportedFunctions.add(SourceSystemFunctions.CHAR);
+ supportedFunctions.add(SourceSystemFunctions.CONCAT);
+ supportedFunctions.add(SourceSystemFunctions.INSERT);
+ supportedFunctions.add(SourceSystemFunctions.LCASE);
+ supportedFunctions.add(SourceSystemFunctions.LEFT);
+ supportedFunctions.add(SourceSystemFunctions.LENGTH);
+ supportedFunctions.add(SourceSystemFunctions.LOCATE);
+ supportedFunctions.add(SourceSystemFunctions.LPAD);
+ supportedFunctions.add(SourceSystemFunctions.LTRIM);
+ supportedFunctions.add(SourceSystemFunctions.REPEAT);
+ supportedFunctions.add(SourceSystemFunctions.REPLACE);
+ supportedFunctions.add(SourceSystemFunctions.RIGHT);
+ supportedFunctions.add(SourceSystemFunctions.RPAD);
+ supportedFunctions.add(SourceSystemFunctions.RTRIM);
+ supportedFunctions.add(SourceSystemFunctions.SUBSTRING);
+ supportedFunctions.add(SourceSystemFunctions.UCASE);
+
+ supportedFunctions.add(SourceSystemFunctions.DAYNAME);
+ supportedFunctions.add(SourceSystemFunctions.DAYOFMONTH);
+ supportedFunctions.add(SourceSystemFunctions.DAYOFWEEK);
+ supportedFunctions.add(SourceSystemFunctions.DAYOFYEAR);
+
+ supportedFunctions.add(SourceSystemFunctions.FORMATTIMESTAMP);
+ supportedFunctions.add(SourceSystemFunctions.HOUR);
+ supportedFunctions.add(SourceSystemFunctions.MINUTE);
+ supportedFunctions.add(SourceSystemFunctions.MONTH);
+ supportedFunctions.add(SourceSystemFunctions.MONTHNAME);
+
+ supportedFunctions.add(SourceSystemFunctions.PARSETIMESTAMP);
+ supportedFunctions.add(SourceSystemFunctions.QUARTER);
+ supportedFunctions.add(SourceSystemFunctions.SECOND);
+ supportedFunctions.add(SourceSystemFunctions.TIMESTAMPADD);
+ supportedFunctions.add(SourceSystemFunctions.TIMESTAMPDIFF);
+ //supportedFunctions.add(SourceSystemFunctions.TIMESTAMPCREATE);
+ supportedFunctions.add(SourceSystemFunctions.WEEK);
+ supportedFunctions.add(SourceSystemFunctions.YEAR);
+
+ supportedFunctions.add(SourceSystemFunctions.CONVERT);
+ supportedFunctions.add(SourceSystemFunctions.IFNULL);
+ supportedFunctions.add(SourceSystemFunctions.COALESCE);
+ return supportedFunctions;
+ }
+
+ @Override
+ public boolean supportsInlineViews() {
+ return true;
+ }
+
+ @Override
+ public boolean supportsRowLimit() {
+ return true;
+ }
+
+ @Override
+ public boolean supportsRowOffset() {
+ return true;
+ }
+
+ @Override
+ public boolean supportsExcept() {
+ return true;
+ }
+
+ @Override
+ public boolean supportsIntersect() {
+ return true;
+ }
+
+}
Deleted: branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/h2/H2Translator.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/h2/H2Translator.java 2009-12-01 21:17:40 UTC (rev 1614)
+++ branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/h2/H2Translator.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,96 +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.connector.jdbc.h2;
-
-import java.sql.Date;
-import java.sql.Time;
-import java.sql.Timestamp;
-
-import org.teiid.connector.api.ConnectorCapabilities;
-import org.teiid.connector.api.ConnectorEnvironment;
-import org.teiid.connector.api.ConnectorException;
-import org.teiid.connector.api.SourceSystemFunctions;
-import org.teiid.connector.jdbc.hsql.AddDiffModifier;
-import org.teiid.connector.jdbc.oracle.ConcatFunctionModifier;
-import org.teiid.connector.jdbc.translator.AliasModifier;
-import org.teiid.connector.jdbc.translator.ConvertModifier;
-import org.teiid.connector.jdbc.translator.FunctionModifier;
-import org.teiid.connector.jdbc.translator.ModFunctionModifier;
-import org.teiid.connector.jdbc.translator.Translator;
-
-public class H2Translator extends Translator {
-
- @Override
- public void initialize(ConnectorEnvironment env) throws ConnectorException {
- super.initialize(env);
- registerFunctionModifier(SourceSystemFunctions.PARSETIMESTAMP, new AliasModifier("parsedatetime")); //$NON-NLS-1$
- registerFunctionModifier(SourceSystemFunctions.FORMATTIMESTAMP, new AliasModifier("formatdatetime")); //$NON-NLS-1$
- registerFunctionModifier(SourceSystemFunctions.DAYOFMONTH, new AliasModifier("day_of_month")); //$NON-NLS-1$
- registerFunctionModifier(SourceSystemFunctions.DAYOFWEEK, new AliasModifier("day_of_week")); //$NON-NLS-1$
- registerFunctionModifier(SourceSystemFunctions.DAYOFYEAR, new AliasModifier("day_of_year")); //$NON-NLS-1$
- registerFunctionModifier(SourceSystemFunctions.MOD, new ModFunctionModifier(SourceSystemFunctions.MOD, getLanguageFactory()));
- //TODO: this behavior is configurable in h2 starting with 1.1.119
- registerFunctionModifier(SourceSystemFunctions.CONCAT, new ConcatFunctionModifier(getLanguageFactory()));
-
- registerFunctionModifier(SourceSystemFunctions.TIMESTAMPADD, new AddDiffModifier(true, getLanguageFactory()));
- registerFunctionModifier(SourceSystemFunctions.TIMESTAMPDIFF, new AddDiffModifier(false, getLanguageFactory()));
-
- ConvertModifier convert = new ConvertModifier();
- convert.addTypeMapping("boolean", FunctionModifier.BOOLEAN); //$NON-NLS-1$
- convert.addTypeMapping("tinyint", FunctionModifier.BYTE); //$NON-NLS-1$
- convert.addTypeMapping("smallint", FunctionModifier.SHORT); //$NON-NLS-1$
- convert.addTypeMapping("int", FunctionModifier.INTEGER); //$NON-NLS-1$
- convert.addTypeMapping("bigint", FunctionModifier.LONG); //$NON-NLS-1$
- convert.addTypeMapping("real", FunctionModifier.FLOAT); //$NON-NLS-1$
- convert.addTypeMapping("double", FunctionModifier.DOUBLE); //$NON-NLS-1$
- convert.addTypeMapping("decimal", FunctionModifier.BIGDECIMAL); //$NON-NLS-1$
- convert.addTypeMapping("decimal(38,0)", FunctionModifier.BIGINTEGER); //$NON-NLS-1$
- convert.addTypeMapping("date", FunctionModifier.DATE); //$NON-NLS-1$
- convert.addTypeMapping("time", FunctionModifier.TIME); //$NON-NLS-1$
- convert.addTypeMapping("timestamp", FunctionModifier.TIMESTAMP); //$NON-NLS-1$
- convert.addTypeMapping("char(1)", FunctionModifier.CHAR); //$NON-NLS-1$
- convert.addTypeMapping("varchar", FunctionModifier.STRING); //$NON-NLS-1$
- registerFunctionModifier(SourceSystemFunctions.CONVERT, convert);
- }
-
- @Override
- public String translateLiteralDate(Date dateValue) {
- return "DATE '" + formatDateValue(dateValue) + "'"; //$NON-NLS-1$//$NON-NLS-2$
- }
-
- @Override
- public String translateLiteralTime(Time timeValue) {
- return "TIME '" + formatDateValue(timeValue) + "'"; //$NON-NLS-1$//$NON-NLS-2$
- }
-
- @Override
- public String translateLiteralTimestamp(Timestamp timestampValue) {
- return "TIMESTAMP '" + formatDateValue(timestampValue) + "'"; //$NON-NLS-1$//$NON-NLS-2$
- }
-
- @Override
- public Class<? extends ConnectorCapabilities> getDefaultCapabilities() {
- return H2Capabilities.class;
- }
-
-}
Copied: branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/h2/H2Translator.java (from rev 1614, trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/h2/H2Translator.java)
===================================================================
--- branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/h2/H2Translator.java (rev 0)
+++ branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/h2/H2Translator.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,96 @@
+/*
+ * 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.connector.jdbc.h2;
+
+import java.sql.Date;
+import java.sql.Time;
+import java.sql.Timestamp;
+
+import org.teiid.connector.api.ConnectorCapabilities;
+import org.teiid.connector.api.ConnectorException;
+import org.teiid.connector.api.SourceSystemFunctions;
+import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
+import org.teiid.connector.jdbc.hsql.AddDiffModifier;
+import org.teiid.connector.jdbc.oracle.ConcatFunctionModifier;
+import org.teiid.connector.jdbc.translator.AliasModifier;
+import org.teiid.connector.jdbc.translator.ConvertModifier;
+import org.teiid.connector.jdbc.translator.FunctionModifier;
+import org.teiid.connector.jdbc.translator.ModFunctionModifier;
+import org.teiid.connector.jdbc.translator.Translator;
+
+public class H2Translator extends Translator {
+
+ @Override
+ public void initialize(JDBCManagedConnectionFactory env) throws ConnectorException {
+ super.initialize(env);
+ registerFunctionModifier(SourceSystemFunctions.PARSETIMESTAMP, new AliasModifier("parsedatetime")); //$NON-NLS-1$
+ registerFunctionModifier(SourceSystemFunctions.FORMATTIMESTAMP, new AliasModifier("formatdatetime")); //$NON-NLS-1$
+ registerFunctionModifier(SourceSystemFunctions.DAYOFMONTH, new AliasModifier("day_of_month")); //$NON-NLS-1$
+ registerFunctionModifier(SourceSystemFunctions.DAYOFWEEK, new AliasModifier("day_of_week")); //$NON-NLS-1$
+ registerFunctionModifier(SourceSystemFunctions.DAYOFYEAR, new AliasModifier("day_of_year")); //$NON-NLS-1$
+ registerFunctionModifier(SourceSystemFunctions.MOD, new ModFunctionModifier(SourceSystemFunctions.MOD, getLanguageFactory()));
+ //TODO: this behavior is configurable in h2 starting with 1.1.119
+ registerFunctionModifier(SourceSystemFunctions.CONCAT, new ConcatFunctionModifier(getLanguageFactory()));
+
+ registerFunctionModifier(SourceSystemFunctions.TIMESTAMPADD, new AddDiffModifier(true, getLanguageFactory()));
+ registerFunctionModifier(SourceSystemFunctions.TIMESTAMPDIFF, new AddDiffModifier(false, getLanguageFactory()));
+
+ ConvertModifier convert = new ConvertModifier();
+ convert.addTypeMapping("boolean", FunctionModifier.BOOLEAN); //$NON-NLS-1$
+ convert.addTypeMapping("tinyint", FunctionModifier.BYTE); //$NON-NLS-1$
+ convert.addTypeMapping("smallint", FunctionModifier.SHORT); //$NON-NLS-1$
+ convert.addTypeMapping("int", FunctionModifier.INTEGER); //$NON-NLS-1$
+ convert.addTypeMapping("bigint", FunctionModifier.LONG); //$NON-NLS-1$
+ convert.addTypeMapping("real", FunctionModifier.FLOAT); //$NON-NLS-1$
+ convert.addTypeMapping("double", FunctionModifier.DOUBLE); //$NON-NLS-1$
+ convert.addTypeMapping("decimal", FunctionModifier.BIGDECIMAL); //$NON-NLS-1$
+ convert.addTypeMapping("decimal(38,0)", FunctionModifier.BIGINTEGER); //$NON-NLS-1$
+ convert.addTypeMapping("date", FunctionModifier.DATE); //$NON-NLS-1$
+ convert.addTypeMapping("time", FunctionModifier.TIME); //$NON-NLS-1$
+ convert.addTypeMapping("timestamp", FunctionModifier.TIMESTAMP); //$NON-NLS-1$
+ convert.addTypeMapping("char(1)", FunctionModifier.CHAR); //$NON-NLS-1$
+ convert.addTypeMapping("varchar", FunctionModifier.STRING); //$NON-NLS-1$
+ registerFunctionModifier(SourceSystemFunctions.CONVERT, convert);
+ }
+
+ @Override
+ public String translateLiteralDate(Date dateValue) {
+ return "DATE '" + formatDateValue(dateValue) + "'"; //$NON-NLS-1$//$NON-NLS-2$
+ }
+
+ @Override
+ public String translateLiteralTime(Time timeValue) {
+ return "TIME '" + formatDateValue(timeValue) + "'"; //$NON-NLS-1$//$NON-NLS-2$
+ }
+
+ @Override
+ public String translateLiteralTimestamp(Timestamp timestampValue) {
+ return "TIMESTAMP '" + formatDateValue(timestampValue) + "'"; //$NON-NLS-1$//$NON-NLS-2$
+ }
+
+ @Override
+ public Class<? extends ConnectorCapabilities> getDefaultCapabilities() {
+ return H2Capabilities.class;
+ }
+
+}
Copied: branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql (from rev 1614, trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql)
Deleted: branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/AddDiffModifier.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/AddDiffModifier.java 2009-12-01 21:17:40 UTC (rev 1614)
+++ branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/AddDiffModifier.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,101 +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.connector.jdbc.hsql;
-
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.teiid.connector.api.TypeFacility;
-import org.teiid.connector.jdbc.translator.ExtractFunctionModifier;
-import org.teiid.connector.jdbc.translator.FunctionModifier;
-import org.teiid.connector.language.IExpression;
-import org.teiid.connector.language.IFunction;
-import org.teiid.connector.language.ILanguageFactory;
-import org.teiid.connector.language.ILiteral;
-import org.teiid.connector.visitor.util.SQLReservedWords;
-
-public class AddDiffModifier extends FunctionModifier {
-
- private static Map<String, String> INTERVAL_MAP = new HashMap<String, String>();
-
- static {
- INTERVAL_MAP.put(SQLReservedWords.SQL_TSI_DAY, ExtractFunctionModifier.DAY);
- INTERVAL_MAP.put(SQLReservedWords.SQL_TSI_HOUR, ExtractFunctionModifier.HOUR);
- INTERVAL_MAP.put(SQLReservedWords.SQL_TSI_MINUTE, ExtractFunctionModifier.MINUTE);
- INTERVAL_MAP.put(SQLReservedWords.SQL_TSI_MONTH, ExtractFunctionModifier.MONTH);
- INTERVAL_MAP.put(SQLReservedWords.SQL_TSI_SECOND, ExtractFunctionModifier.SECOND);
- INTERVAL_MAP.put(SQLReservedWords.SQL_TSI_YEAR, ExtractFunctionModifier.YEAR);
- }
-
- private boolean add;
- private ILanguageFactory factory;
-
- public AddDiffModifier(boolean add, ILanguageFactory factory) {
- this.add = add;
- this.factory = factory;
- }
-
- @Override
- public List<?> translate(IFunction function) {
- if (add) {
- function.setName("dateadd"); //$NON-NLS-1$
- } else {
- function.setName("datediff"); //$NON-NLS-1$
- }
- ILiteral intervalType = (ILiteral)function.getParameters().get(0);
- String interval = ((String)intervalType.getValue()).toUpperCase();
- String newInterval = INTERVAL_MAP.get(interval);
- if (newInterval != null) {
- intervalType.setValue(newInterval);
- return null;
- }
- if (add) {
- if (interval.equals(SQLReservedWords.SQL_TSI_FRAC_SECOND)) {
- intervalType.setValue("MILLISECOND"); //$NON-NLS-1$
- IExpression[] args = new IExpression[] {function.getParameters().get(1), factory.createLiteral(1000000, TypeFacility.RUNTIME_TYPES.INTEGER)};
- function.getParameters().set(1, factory.createFunction("/", args, TypeFacility.RUNTIME_TYPES.INTEGER)); //$NON-NLS-1$
- } else if (interval.equals(SQLReservedWords.SQL_TSI_QUARTER)) {
- intervalType.setValue(ExtractFunctionModifier.DAY);
- IExpression[] args = new IExpression[] {function.getParameters().get(1), factory.createLiteral(91, TypeFacility.RUNTIME_TYPES.INTEGER)};
- function.getParameters().set(1, factory.createFunction("*", args, TypeFacility.RUNTIME_TYPES.INTEGER)); //$NON-NLS-1$
- } else {
- intervalType.setValue(ExtractFunctionModifier.DAY);
- IExpression[] args = new IExpression[] {function.getParameters().get(1), factory.createLiteral(7, TypeFacility.RUNTIME_TYPES.INTEGER)};
- function.getParameters().set(1, factory.createFunction("*", args, TypeFacility.RUNTIME_TYPES.INTEGER)); //$NON-NLS-1$
- }
- return null;
- }
- if (interval.equals(SQLReservedWords.SQL_TSI_FRAC_SECOND)) {
- intervalType.setValue("MILLISECOND"); //$NON-NLS-1$
- return Arrays.asList(function, " * 1000000"); //$NON-NLS-1$
- } else if (interval.equals(SQLReservedWords.SQL_TSI_QUARTER)) {
- intervalType.setValue(ExtractFunctionModifier.DAY);
- return Arrays.asList(function, " / 91"); //$NON-NLS-1$
- }
- intervalType.setValue(ExtractFunctionModifier.DAY);
- return Arrays.asList(function, " / 7"); //$NON-NLS-1$
- }
-
-}
\ No newline at end of file
Copied: branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/AddDiffModifier.java (from rev 1614, trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/AddDiffModifier.java)
===================================================================
--- branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/AddDiffModifier.java (rev 0)
+++ branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/AddDiffModifier.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,101 @@
+/*
+ * 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.connector.jdbc.hsql;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.teiid.connector.api.TypeFacility;
+import org.teiid.connector.jdbc.translator.ExtractFunctionModifier;
+import org.teiid.connector.jdbc.translator.FunctionModifier;
+import org.teiid.connector.language.IExpression;
+import org.teiid.connector.language.IFunction;
+import org.teiid.connector.language.ILanguageFactory;
+import org.teiid.connector.language.ILiteral;
+import org.teiid.connector.visitor.util.SQLReservedWords;
+
+public class AddDiffModifier extends FunctionModifier {
+
+ private static Map<String, String> INTERVAL_MAP = new HashMap<String, String>();
+
+ static {
+ INTERVAL_MAP.put(SQLReservedWords.SQL_TSI_DAY, ExtractFunctionModifier.DAY);
+ INTERVAL_MAP.put(SQLReservedWords.SQL_TSI_HOUR, ExtractFunctionModifier.HOUR);
+ INTERVAL_MAP.put(SQLReservedWords.SQL_TSI_MINUTE, ExtractFunctionModifier.MINUTE);
+ INTERVAL_MAP.put(SQLReservedWords.SQL_TSI_MONTH, ExtractFunctionModifier.MONTH);
+ INTERVAL_MAP.put(SQLReservedWords.SQL_TSI_SECOND, ExtractFunctionModifier.SECOND);
+ INTERVAL_MAP.put(SQLReservedWords.SQL_TSI_YEAR, ExtractFunctionModifier.YEAR);
+ }
+
+ private boolean add;
+ private ILanguageFactory factory;
+
+ public AddDiffModifier(boolean add, ILanguageFactory factory) {
+ this.add = add;
+ this.factory = factory;
+ }
+
+ @Override
+ public List<?> translate(IFunction function) {
+ if (add) {
+ function.setName("dateadd"); //$NON-NLS-1$
+ } else {
+ function.setName("datediff"); //$NON-NLS-1$
+ }
+ ILiteral intervalType = (ILiteral)function.getParameters().get(0);
+ String interval = ((String)intervalType.getValue()).toUpperCase();
+ String newInterval = INTERVAL_MAP.get(interval);
+ if (newInterval != null) {
+ intervalType.setValue(newInterval);
+ return null;
+ }
+ if (add) {
+ if (interval.equals(SQLReservedWords.SQL_TSI_FRAC_SECOND)) {
+ intervalType.setValue("MILLISECOND"); //$NON-NLS-1$
+ IExpression[] args = new IExpression[] {function.getParameters().get(1), factory.createLiteral(1000000, TypeFacility.RUNTIME_TYPES.INTEGER)};
+ function.getParameters().set(1, factory.createFunction("/", args, TypeFacility.RUNTIME_TYPES.INTEGER)); //$NON-NLS-1$
+ } else if (interval.equals(SQLReservedWords.SQL_TSI_QUARTER)) {
+ intervalType.setValue(ExtractFunctionModifier.DAY);
+ IExpression[] args = new IExpression[] {function.getParameters().get(1), factory.createLiteral(91, TypeFacility.RUNTIME_TYPES.INTEGER)};
+ function.getParameters().set(1, factory.createFunction("*", args, TypeFacility.RUNTIME_TYPES.INTEGER)); //$NON-NLS-1$
+ } else {
+ intervalType.setValue(ExtractFunctionModifier.DAY);
+ IExpression[] args = new IExpression[] {function.getParameters().get(1), factory.createLiteral(7, TypeFacility.RUNTIME_TYPES.INTEGER)};
+ function.getParameters().set(1, factory.createFunction("*", args, TypeFacility.RUNTIME_TYPES.INTEGER)); //$NON-NLS-1$
+ }
+ return null;
+ }
+ if (interval.equals(SQLReservedWords.SQL_TSI_FRAC_SECOND)) {
+ intervalType.setValue("MILLISECOND"); //$NON-NLS-1$
+ return Arrays.asList(function, " * 1000000"); //$NON-NLS-1$
+ } else if (interval.equals(SQLReservedWords.SQL_TSI_QUARTER)) {
+ intervalType.setValue(ExtractFunctionModifier.DAY);
+ return Arrays.asList(function, " / 91"); //$NON-NLS-1$
+ }
+ intervalType.setValue(ExtractFunctionModifier.DAY);
+ return Arrays.asList(function, " / 7"); //$NON-NLS-1$
+ }
+
+}
\ No newline at end of file
Deleted: branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/HsqlCapabilities.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/HsqlCapabilities.java 2009-12-01 21:17:40 UTC (rev 1614)
+++ branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/HsqlCapabilities.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,133 +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.connector.jdbc.hsql;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.teiid.connector.api.SourceSystemFunctions;
-import org.teiid.connector.jdbc.JDBCCapabilities;
-
-public class HsqlCapabilities extends JDBCCapabilities {
-
- public List<String> getSupportedFunctions() {
- List<String> supportedFunctions = new ArrayList<String>();
- supportedFunctions.addAll(super.getSupportedFunctions());
-
- supportedFunctions.add(SourceSystemFunctions.ABS);
- supportedFunctions.add(SourceSystemFunctions.ACOS);
- supportedFunctions.add(SourceSystemFunctions.ASIN);
- supportedFunctions.add(SourceSystemFunctions.ATAN);
- supportedFunctions.add(SourceSystemFunctions.ATAN2);
- supportedFunctions.add(SourceSystemFunctions.BITAND);
- //supportedFunctions.add(SourceSystemFunctions.BITNOT);
- supportedFunctions.add(SourceSystemFunctions.BITOR);
- //supportedFunctions.add(SourceSystemFunctions.BITXOR);
- supportedFunctions.add(SourceSystemFunctions.CEILING);
- supportedFunctions.add(SourceSystemFunctions.COS);
- supportedFunctions.add(SourceSystemFunctions.COT);
- supportedFunctions.add(SourceSystemFunctions.DEGREES);
- supportedFunctions.add(SourceSystemFunctions.EXP);
- supportedFunctions.add(SourceSystemFunctions.FLOOR);
- supportedFunctions.add(SourceSystemFunctions.LOG);
- supportedFunctions.add(SourceSystemFunctions.LOG10);
- supportedFunctions.add(SourceSystemFunctions.MOD);
- supportedFunctions.add(SourceSystemFunctions.PI);
- supportedFunctions.add(SourceSystemFunctions.POWER);
- supportedFunctions.add(SourceSystemFunctions.RADIANS);
- supportedFunctions.add(SourceSystemFunctions.ROUND);
- supportedFunctions.add(SourceSystemFunctions.SIGN);
- supportedFunctions.add(SourceSystemFunctions.SIN);
- supportedFunctions.add(SourceSystemFunctions.SQRT);
- supportedFunctions.add(SourceSystemFunctions.TAN);
-
- supportedFunctions.add(SourceSystemFunctions.ASCII);
- supportedFunctions.add(SourceSystemFunctions.CHAR);
- supportedFunctions.add(SourceSystemFunctions.CONCAT);
- supportedFunctions.add(SourceSystemFunctions.INSERT);
- supportedFunctions.add(SourceSystemFunctions.LCASE);
- supportedFunctions.add(SourceSystemFunctions.LEFT);
- supportedFunctions.add(SourceSystemFunctions.LENGTH);
- supportedFunctions.add(SourceSystemFunctions.LOCATE);
- supportedFunctions.add(SourceSystemFunctions.LPAD);
- supportedFunctions.add(SourceSystemFunctions.LTRIM);
- supportedFunctions.add(SourceSystemFunctions.REPEAT);
- supportedFunctions.add(SourceSystemFunctions.REPLACE);
- supportedFunctions.add(SourceSystemFunctions.RIGHT);
- supportedFunctions.add(SourceSystemFunctions.RPAD);
- supportedFunctions.add(SourceSystemFunctions.RTRIM);
- supportedFunctions.add(SourceSystemFunctions.SUBSTRING);
- supportedFunctions.add(SourceSystemFunctions.UCASE);
-
- supportedFunctions.add(SourceSystemFunctions.DAYNAME);
- supportedFunctions.add(SourceSystemFunctions.DAYOFMONTH);
- supportedFunctions.add(SourceSystemFunctions.DAYOFWEEK);
- supportedFunctions.add(SourceSystemFunctions.DAYOFYEAR);
-
- //supportedFunctions.add(SourceSystemFunctions.FORMATDATE);
- //supportedFunctions.add(SourceSystemFunctions.FORMATTIME);
- //supportedFunctions.add(SourceSystemFunctions.FORMATTIMESTAMP);
- supportedFunctions.add(SourceSystemFunctions.HOUR);
- supportedFunctions.add(SourceSystemFunctions.MINUTE);
- supportedFunctions.add(SourceSystemFunctions.MONTH);
- supportedFunctions.add(SourceSystemFunctions.MONTHNAME);
-
- //supportedFunctions.add(SourceSystemFunctions.PARSEDATE);
- //supportedFunctions.add(SourceSystemFunctions.PARSETIME);
- //supportedFunctions.add(SourceSystemFunctions.PARSETIMESTAMP);
- supportedFunctions.add(SourceSystemFunctions.QUARTER);
- supportedFunctions.add(SourceSystemFunctions.SECOND);
- supportedFunctions.add(SourceSystemFunctions.TIMESTAMPADD);
- supportedFunctions.add(SourceSystemFunctions.TIMESTAMPDIFF);
- supportedFunctions.add(SourceSystemFunctions.WEEK);
- supportedFunctions.add(SourceSystemFunctions.YEAR);
-
- supportedFunctions.add(SourceSystemFunctions.CONVERT);
- supportedFunctions.add(SourceSystemFunctions.IFNULL);
- supportedFunctions.add(SourceSystemFunctions.COALESCE);
- return supportedFunctions;
- }
-
- public boolean supportsInlineViews() {
- return true;
- }
-
- public boolean supportsRowLimit() {
- return true;
- }
-
- public boolean supportsRowOffset() {
- return true;
- }
-
- @Override
- public boolean supportsExcept() {
- return true;
- }
-
- @Override
- public boolean supportsIntersect() {
- return true;
- }
-
-}
Copied: branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/HsqlCapabilities.java (from rev 1614, trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/HsqlCapabilities.java)
===================================================================
--- branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/HsqlCapabilities.java (rev 0)
+++ branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/HsqlCapabilities.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,133 @@
+/*
+ * 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.connector.jdbc.hsql;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.teiid.connector.api.SourceSystemFunctions;
+import org.teiid.connector.jdbc.JDBCCapabilities;
+
+public class HsqlCapabilities extends JDBCCapabilities {
+
+ public List<String> getSupportedFunctions() {
+ List<String> supportedFunctions = new ArrayList<String>();
+ supportedFunctions.addAll(super.getSupportedFunctions());
+
+ supportedFunctions.add(SourceSystemFunctions.ABS);
+ supportedFunctions.add(SourceSystemFunctions.ACOS);
+ supportedFunctions.add(SourceSystemFunctions.ASIN);
+ supportedFunctions.add(SourceSystemFunctions.ATAN);
+ supportedFunctions.add(SourceSystemFunctions.ATAN2);
+ supportedFunctions.add(SourceSystemFunctions.BITAND);
+ //supportedFunctions.add(SourceSystemFunctions.BITNOT);
+ supportedFunctions.add(SourceSystemFunctions.BITOR);
+ //supportedFunctions.add(SourceSystemFunctions.BITXOR);
+ supportedFunctions.add(SourceSystemFunctions.CEILING);
+ supportedFunctions.add(SourceSystemFunctions.COS);
+ supportedFunctions.add(SourceSystemFunctions.COT);
+ supportedFunctions.add(SourceSystemFunctions.DEGREES);
+ supportedFunctions.add(SourceSystemFunctions.EXP);
+ supportedFunctions.add(SourceSystemFunctions.FLOOR);
+ supportedFunctions.add(SourceSystemFunctions.LOG);
+ supportedFunctions.add(SourceSystemFunctions.LOG10);
+ supportedFunctions.add(SourceSystemFunctions.MOD);
+ supportedFunctions.add(SourceSystemFunctions.PI);
+ supportedFunctions.add(SourceSystemFunctions.POWER);
+ supportedFunctions.add(SourceSystemFunctions.RADIANS);
+ supportedFunctions.add(SourceSystemFunctions.ROUND);
+ supportedFunctions.add(SourceSystemFunctions.SIGN);
+ supportedFunctions.add(SourceSystemFunctions.SIN);
+ supportedFunctions.add(SourceSystemFunctions.SQRT);
+ supportedFunctions.add(SourceSystemFunctions.TAN);
+
+ supportedFunctions.add(SourceSystemFunctions.ASCII);
+ supportedFunctions.add(SourceSystemFunctions.CHAR);
+ supportedFunctions.add(SourceSystemFunctions.CONCAT);
+ supportedFunctions.add(SourceSystemFunctions.INSERT);
+ supportedFunctions.add(SourceSystemFunctions.LCASE);
+ supportedFunctions.add(SourceSystemFunctions.LEFT);
+ supportedFunctions.add(SourceSystemFunctions.LENGTH);
+ supportedFunctions.add(SourceSystemFunctions.LOCATE);
+ supportedFunctions.add(SourceSystemFunctions.LPAD);
+ supportedFunctions.add(SourceSystemFunctions.LTRIM);
+ supportedFunctions.add(SourceSystemFunctions.REPEAT);
+ supportedFunctions.add(SourceSystemFunctions.REPLACE);
+ supportedFunctions.add(SourceSystemFunctions.RIGHT);
+ supportedFunctions.add(SourceSystemFunctions.RPAD);
+ supportedFunctions.add(SourceSystemFunctions.RTRIM);
+ supportedFunctions.add(SourceSystemFunctions.SUBSTRING);
+ supportedFunctions.add(SourceSystemFunctions.UCASE);
+
+ supportedFunctions.add(SourceSystemFunctions.DAYNAME);
+ supportedFunctions.add(SourceSystemFunctions.DAYOFMONTH);
+ supportedFunctions.add(SourceSystemFunctions.DAYOFWEEK);
+ supportedFunctions.add(SourceSystemFunctions.DAYOFYEAR);
+
+ //supportedFunctions.add(SourceSystemFunctions.FORMATDATE);
+ //supportedFunctions.add(SourceSystemFunctions.FORMATTIME);
+ //supportedFunctions.add(SourceSystemFunctions.FORMATTIMESTAMP);
+ supportedFunctions.add(SourceSystemFunctions.HOUR);
+ supportedFunctions.add(SourceSystemFunctions.MINUTE);
+ supportedFunctions.add(SourceSystemFunctions.MONTH);
+ supportedFunctions.add(SourceSystemFunctions.MONTHNAME);
+
+ //supportedFunctions.add(SourceSystemFunctions.PARSEDATE);
+ //supportedFunctions.add(SourceSystemFunctions.PARSETIME);
+ //supportedFunctions.add(SourceSystemFunctions.PARSETIMESTAMP);
+ supportedFunctions.add(SourceSystemFunctions.QUARTER);
+ supportedFunctions.add(SourceSystemFunctions.SECOND);
+ supportedFunctions.add(SourceSystemFunctions.TIMESTAMPADD);
+ supportedFunctions.add(SourceSystemFunctions.TIMESTAMPDIFF);
+ supportedFunctions.add(SourceSystemFunctions.WEEK);
+ supportedFunctions.add(SourceSystemFunctions.YEAR);
+
+ supportedFunctions.add(SourceSystemFunctions.CONVERT);
+ supportedFunctions.add(SourceSystemFunctions.IFNULL);
+ supportedFunctions.add(SourceSystemFunctions.COALESCE);
+ return supportedFunctions;
+ }
+
+ public boolean supportsInlineViews() {
+ return true;
+ }
+
+ public boolean supportsRowLimit() {
+ return true;
+ }
+
+ public boolean supportsRowOffset() {
+ return true;
+ }
+
+ @Override
+ public boolean supportsExcept() {
+ return true;
+ }
+
+ @Override
+ public boolean supportsIntersect() {
+ return true;
+ }
+
+}
Deleted: branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/HsqlTranslator.java
===================================================================
--- trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/HsqlTranslator.java 2009-12-01 21:17:40 UTC (rev 1614)
+++ branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/HsqlTranslator.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,83 +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.connector.jdbc.hsql;
-
-import java.sql.Date;
-import java.sql.Time;
-import java.sql.Timestamp;
-
-import org.teiid.connector.api.ConnectorCapabilities;
-import org.teiid.connector.api.ConnectorEnvironment;
-import org.teiid.connector.api.ConnectorException;
-import org.teiid.connector.api.SourceSystemFunctions;
-import org.teiid.connector.jdbc.translator.ConvertModifier;
-import org.teiid.connector.jdbc.translator.FunctionModifier;
-import org.teiid.connector.jdbc.translator.Translator;
-
-public class HsqlTranslator extends Translator {
-
- @Override
- public void initialize(ConnectorEnvironment env) throws ConnectorException {
- super.initialize(env);
- registerFunctionModifier(SourceSystemFunctions.TIMESTAMPADD, new AddDiffModifier(true, getLanguageFactory()));
- registerFunctionModifier(SourceSystemFunctions.TIMESTAMPDIFF, new AddDiffModifier(false, getLanguageFactory()));
-
- ConvertModifier convert = new ConvertModifier();
- convert.addTypeMapping("boolean", FunctionModifier.BOOLEAN); //$NON-NLS-1$
- convert.addTypeMapping("tinyint", FunctionModifier.BYTE); //$NON-NLS-1$
- convert.addTypeMapping("smallint", FunctionModifier.SHORT); //$NON-NLS-1$
- convert.addTypeMapping("int", FunctionModifier.INTEGER); //$NON-NLS-1$
- convert.addTypeMapping("bigint", FunctionModifier.LONG); //$NON-NLS-1$
- convert.addTypeMapping("real", FunctionModifier.FLOAT); //$NON-NLS-1$
- convert.addTypeMapping("double", FunctionModifier.DOUBLE); //$NON-NLS-1$
- convert.addTypeMapping("decimal", FunctionModifier.BIGDECIMAL); //$NON-NLS-1$
- convert.addTypeMapping("decimal(38,0)", FunctionModifier.BIGINTEGER); //$NON-NLS-1$
- convert.addTypeMapping("date", FunctionModifier.DATE); //$NON-NLS-1$
- convert.addTypeMapping("time", FunctionModifier.TIME); //$NON-NLS-1$
- convert.addTypeMapping("timestamp", FunctionModifier.TIMESTAMP); //$NON-NLS-1$
- convert.addTypeMapping("char(1)", FunctionModifier.CHAR); //$NON-NLS-1$
- convert.addTypeMapping("varchar", FunctionModifier.STRING); //$NON-NLS-1$
- registerFunctionModifier(SourceSystemFunctions.CONVERT, convert);
- }
-
- @Override
- public String translateLiteralDate(Date dateValue) {
- return "DATE '" + formatDateValue(dateValue) + "'"; //$NON-NLS-1$//$NON-NLS-2$
- }
-
- @Override
- public String translateLiteralTime(Time timeValue) {
- return "TIME '" + formatDateValue(timeValue) + "'"; //$NON-NLS-1$//$NON-NLS-2$
- }
-
- @Override
- public String translateLiteralTimestamp(Timestamp timestampValue) {
- return "TIMESTAMP '" + formatDateValue(timestampValue) + "'"; //$NON-NLS-1$//$NON-NLS-2$
- }
-
- @Override
- public Class<? extends ConnectorCapabilities> getDefaultCapabilities() {
- return HsqlCapabilities.class;
- }
-
-}
Copied: branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/HsqlTranslator.java (from rev 1614, trunk/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/HsqlTranslator.java)
===================================================================
--- branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/HsqlTranslator.java (rev 0)
+++ branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/hsql/HsqlTranslator.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,83 @@
+/*
+ * 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.connector.jdbc.hsql;
+
+import java.sql.Date;
+import java.sql.Time;
+import java.sql.Timestamp;
+
+import org.teiid.connector.api.ConnectorCapabilities;
+import org.teiid.connector.api.ConnectorException;
+import org.teiid.connector.api.SourceSystemFunctions;
+import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
+import org.teiid.connector.jdbc.translator.ConvertModifier;
+import org.teiid.connector.jdbc.translator.FunctionModifier;
+import org.teiid.connector.jdbc.translator.Translator;
+
+public class HsqlTranslator extends Translator {
+
+ @Override
+ public void initialize(JDBCManagedConnectionFactory env) throws ConnectorException {
+ super.initialize(env);
+ registerFunctionModifier(SourceSystemFunctions.TIMESTAMPADD, new AddDiffModifier(true, getLanguageFactory()));
+ registerFunctionModifier(SourceSystemFunctions.TIMESTAMPDIFF, new AddDiffModifier(false, getLanguageFactory()));
+
+ ConvertModifier convert = new ConvertModifier();
+ convert.addTypeMapping("boolean", FunctionModifier.BOOLEAN); //$NON-NLS-1$
+ convert.addTypeMapping("tinyint", FunctionModifier.BYTE); //$NON-NLS-1$
+ convert.addTypeMapping("smallint", FunctionModifier.SHORT); //$NON-NLS-1$
+ convert.addTypeMapping("int", FunctionModifier.INTEGER); //$NON-NLS-1$
+ convert.addTypeMapping("bigint", FunctionModifier.LONG); //$NON-NLS-1$
+ convert.addTypeMapping("real", FunctionModifier.FLOAT); //$NON-NLS-1$
+ convert.addTypeMapping("double", FunctionModifier.DOUBLE); //$NON-NLS-1$
+ convert.addTypeMapping("decimal", FunctionModifier.BIGDECIMAL); //$NON-NLS-1$
+ convert.addTypeMapping("decimal(38,0)", FunctionModifier.BIGINTEGER); //$NON-NLS-1$
+ convert.addTypeMapping("date", FunctionModifier.DATE); //$NON-NLS-1$
+ convert.addTypeMapping("time", FunctionModifier.TIME); //$NON-NLS-1$
+ convert.addTypeMapping("timestamp", FunctionModifier.TIMESTAMP); //$NON-NLS-1$
+ convert.addTypeMapping("char(1)", FunctionModifier.CHAR); //$NON-NLS-1$
+ convert.addTypeMapping("varchar", FunctionModifier.STRING); //$NON-NLS-1$
+ registerFunctionModifier(SourceSystemFunctions.CONVERT, convert);
+ }
+
+ @Override
+ public String translateLiteralDate(Date dateValue) {
+ return "DATE '" + formatDateValue(dateValue) + "'"; //$NON-NLS-1$//$NON-NLS-2$
+ }
+
+ @Override
+ public String translateLiteralTime(Time timeValue) {
+ return "TIME '" + formatDateValue(timeValue) + "'"; //$NON-NLS-1$//$NON-NLS-2$
+ }
+
+ @Override
+ public String translateLiteralTimestamp(Timestamp timestampValue) {
+ return "TIMESTAMP '" + formatDateValue(timestampValue) + "'"; //$NON-NLS-1$//$NON-NLS-2$
+ }
+
+ @Override
+ public Class<? extends ConnectorCapabilities> getDefaultCapabilities() {
+ return HsqlCapabilities.class;
+ }
+
+}
Modified: branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/sqlserver/SqlServerSQLTranslator.java
===================================================================
--- branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/sqlserver/SqlServerSQLTranslator.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/sqlserver/SqlServerSQLTranslator.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -28,9 +28,16 @@
import java.util.List;
import org.teiid.connector.api.ConnectorCapabilities;
+import org.teiid.connector.api.ConnectorException;
+import org.teiid.connector.api.ExecutionContext;
+import org.teiid.connector.api.TypeFacility;
import org.teiid.connector.jdbc.sybase.SybaseSQLTranslator;
+import org.teiid.connector.language.IElement;
import org.teiid.connector.language.IFunction;
+import org.teiid.connector.language.ILanguageObject;
+import com.metamatrix.core.MetaMatrixRuntimeException;
+
/**
* Updated to assume the use of the DataDirect, 2005 driver, or later.
*/
@@ -52,5 +59,20 @@
public Class<? extends ConnectorCapabilities> getDefaultCapabilities() {
return SqlServerCapabilities.class;
}
+
+ @Override
+ public List<?> translate(ILanguageObject obj, ExecutionContext context) {
+ if (obj instanceof IElement) {
+ IElement elem = (IElement)obj;
+ try {
+ if (TypeFacility.RUNTIME_TYPES.STRING.equals(elem.getType()) && "uniqueidentifier".equalsIgnoreCase(elem.getMetadataObject().getNativeType())) { //$NON-NLS-1$
+ return Arrays.asList("cast(", elem, " as char(36))"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ } catch (ConnectorException e) {
+ throw new MetaMatrixRuntimeException(e);
+ }
+ }
+ return super.translate(obj, context);
+ }
}
Modified: branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/SQLConversionVisitor.java
===================================================================
--- branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/SQLConversionVisitor.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/SQLConversionVisitor.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -173,9 +173,9 @@
} else {
// If obj is string, toSting() will not create a new String
// object, it returns it self, so new object creation.
- valuesbuffer.append("'") //$NON-NLS-1$
- .append(escapeString(obj.toString()))
- .append("'"); //$NON-NLS-1$
+ valuesbuffer.append(QUOTE)
+ .append(escapeString(obj.toString(), QUOTE))
+ .append(QUOTE);
}
}
}
Modified: branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/Translator.java
===================================================================
--- branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/Translator.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connectors/connector-jdbc/src/main/java/org/teiid/connector/jdbc/translator/Translator.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -33,6 +33,7 @@
import java.sql.Time;
import java.sql.Timestamp;
import java.text.MessageFormat;
+import java.util.Arrays;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Iterator;
@@ -44,12 +45,15 @@
import org.teiid.connector.api.ConnectorEnvironment;
import org.teiid.connector.api.ConnectorException;
import org.teiid.connector.api.ExecutionContext;
+import org.teiid.connector.api.SourceSystemFunctions;
import org.teiid.connector.api.TypeFacility;
import org.teiid.connector.jdbc.JDBCCapabilities;
import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
import org.teiid.connector.jdbc.JDBCPlugin;
import org.teiid.connector.jdbc.JDBCPropertyNames;
import org.teiid.connector.language.ICommand;
+import org.teiid.connector.language.IElement;
+import org.teiid.connector.language.IExpression;
import org.teiid.connector.language.IFunction;
import org.teiid.connector.language.ILanguageFactory;
import org.teiid.connector.language.ILanguageObject;
@@ -59,7 +63,7 @@
import org.teiid.connector.language.ISetQuery;
import org.teiid.connector.language.IParameter.Direction;
-import com.metamatrix.common.util.PropertiesUtils;
+import com.metamatrix.core.MetaMatrixRuntimeException;
import com.metamatrix.core.util.ReflectionHelper;
/**
@@ -134,6 +138,7 @@
private TypeFacility typeFacility;
private volatile boolean initialConnection;
+ private boolean trimChar;
/**
* Initialize the SQLTranslator.
@@ -155,6 +160,7 @@
this.useComments = this.environment.isUseCommentsInSourceQuery();
this.usePreparedStatements = this.environment.isUseBindVariables();
+ trimChar = this.environment.isTrimStrings();
}
/**
@@ -203,6 +209,16 @@
parts = translateCommand((ICommand)obj, context);
} else if (obj instanceof ILimit) {
parts = translateLimit((ILimit)obj, context);
+ } else if (obj instanceof IElement) {
+ IElement elem = (IElement)obj;
+ try {
+ if (trimChar && elem.getType() == TypeFacility.RUNTIME_TYPES.STRING
+ && ("char".equalsIgnoreCase(elem.getMetadataObject().getNativeType()) || "nchar".equalsIgnoreCase(elem.getMetadataObject().getNativeType()))) { //$NON-NLS-1$ //$NON-NLS-2$
+ return Arrays.asList(getLanguageFactory().createFunction(SourceSystemFunctions.RTRIM, new IExpression[] {elem}, TypeFacility.RUNTIME_TYPES.STRING));
+ }
+ } catch (ConnectorException e) {
+ throw new MetaMatrixRuntimeException(e);
+ }
}
return parts;
}
@@ -795,7 +811,12 @@
return NullOrder.LOW;
}
+ /**
+ *
+ * @return true if nulls high|low can be specified
+ */
public boolean supportsExplicitNullOrdering() {
return false;
}
+
}
Modified: branches/JCA/connectors/connector-jdbc/src/main/resources/connector-jdbc.xml
===================================================================
--- branches/JCA/connectors/connector-jdbc/src/main/resources/connector-jdbc.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connectors/connector-jdbc/src/main/resources/connector-jdbc.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -15,7 +15,7 @@
</PropertyDefinition>
<PropertyDefinition Name="ExtensionTranslationClass" DisplayName="Extension SQL Translation Class" ShortDescription="" DefaultValue="org.teiid.connector.jdbc.translator.Translator" IsExpert="true" />
<PropertyDefinition Name="ConnectionSource" DisplayName="Connection Source Class" ShortDescription="Driver, DataSource, or XADataSource class name" IsRequired="true" />
- <PropertyDefinition Name="TrimStrings" DisplayName="Trim string flag" ShortDescription="Right Trim fixed character types returned as Strings" DefaultValue="false" PropertyType="Boolean" IsExpert="true" />
+ <PropertyDefinition Name="TrimStrings" DisplayName="Trim string flag" ShortDescription="Right Trim fixed character types returned as Strings - note that the native type must be char or nchar and the source must support the rtrim function." DefaultValue="false" PropertyType="Boolean" IsExpert="true" />
<PropertyDefinition Name="UseCommentsInSourceQuery" DisplayName="Use informational comments in Source Queries" ShortDescription="This will embed /*comment*/ style comment with session/request id in source SQL query for informational purposes" DefaultValue="false" PropertyType="Boolean" IsExpert="true"/>
</ComponentType>
<ComponentType Name="Oracle Connector" ComponentTypeCode="2" Deployable="true" Deprecated="false" Monitorable="false" SuperComponentType="JDBC Connector" ParentComponentType="Connectors" LastChangedBy="ConfigurationStartup" CreatedBy="ConfigurationStartup">
@@ -134,6 +134,16 @@
<PropertyDefinition Name="ConnectionSource" DisplayName="Connection Source Class" ShortDescription="Driver, DataSource, or XADataSource class name" DefaultValue="sun.jdbc.odbc.JdbcOdbcDriver" IsRequired="true" />
<PropertyDefinition Name="URL" DisplayName="JDBC URL" ShortDescription="" DefaultValue="jdbc:odbc:Driver={MicroSoft Excel Driver (*.xls)};DBQ=<filePathToExcelFile>" IsRequired="true" />
</ComponentType>
+ <ComponentType Name="H2 1 Connector" ComponentTypeCode="2" Deployable="true" Deprecated="false" Monitorable="false" SuperComponentType="JDBC Connector" ParentComponentType="Connectors" LastChangedBy="ConfigurationStartup" CreatedBy="ConfigurationStartup">
+ <PropertyDefinition Name="ConnectionSource" DisplayName="Connection Source Class" ShortDescription="Driver, DataSource, or XADataSource class name" DefaultValue="org.h2.Driver" IsRequired="true" />
+ <PropertyDefinition Name="URL" DisplayName="JDBC URL" ShortDescription="" DefaultValue="jdbc:h2://<server>:<9092>/<db-name>" IsRequired="true" PropertyType="String" IsMasked="false" />
+ <PropertyDefinition Name="ExtensionTranslationClass" DisplayName="Extension SQL Translation Class" ShortDescription="" DefaultValue="org.teiid.connector.jdbc.h2.H2Translator" PropertyType="String" IsExpert="true" IsMasked="false" />
+ </ComponentType>
+ <ComponentType Name="HSQLDB 1 Connector" ComponentTypeCode="2" Deployable="true" Deprecated="false" Monitorable="false" SuperComponentType="JDBC Connector" ParentComponentType="Connectors" LastChangedBy="ConfigurationStartup" CreatedBy="ConfigurationStartup">
+ <PropertyDefinition Name="ConnectionSource" DisplayName="Connection Source Class" ShortDescription="Driver, DataSource, or XADataSource class name" DefaultValue="org.hsqldb.jdbcDriver" IsRequired="true" />
+ <PropertyDefinition Name="URL" DisplayName="JDBC URL" ShortDescription="" DefaultValue="jdbc:hsqldb:hsql://<server>:<1476>" IsRequired="true" PropertyType="String" IsMasked="false" />
+ <PropertyDefinition Name="ExtensionTranslationClass" DisplayName="Extension SQL Translation Class" ShortDescription="" DefaultValue="org.teiid.connector.jdbc.h2.H2Translator" PropertyType="String" IsExpert="true" IsMasked="false" />
+ </ComponentType>
<!--
<ComponentType Name="Datadirect DB2 8 Connector" ComponentTypeCode="2" Deployable="true" Deprecated="false" Monitorable="false" SuperComponentType="JDBC Connector" ParentComponentType="Connectors" LastChangedBy="ConfigurationStartup" LastChangedDate="2008-10-31T10:26:19.928-06:00" CreatedBy="ConfigurationStartup" CreationDate="2008-10-31T10:26:19.928-06:00">
<PropertyDefinition Name="ConnectionSource" DisplayName="Connection Source Class" ShortDescription="Driver, DataSource, or XADataSource class name" DefaultValue="com.metamatrix.jdbcx.db2.DB2DataSource" IsRequired="true" />
Modified: branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TestJDBCProcedureExecution.java
===================================================================
--- branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TestJDBCProcedureExecution.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TestJDBCProcedureExecution.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -39,7 +39,7 @@
public class TestJDBCProcedureExecution {
@Test public void testProcedureExecution() throws Exception {
- ICommand command = FakeMetadataFactory.helpTranslate(FakeMetadataFactory.BQT_VDB, "exec pm2.spTest8a()"); //$NON-NLS-1$
+ ICommand command = TranslationHelper.helpTranslate(TranslationHelper.BQT_VDB, "exec pm2.spTest8a()"); //$NON-NLS-1$
Connection connection = Mockito.mock(Connection.class);
CallableStatement cs = Mockito.mock(CallableStatement.class);
Mockito.stub(cs.getUpdateCount()).toReturn(-1);
@@ -56,9 +56,8 @@
assertEquals(Arrays.asList(5), procedureExecution.getOutputParameterValues());
Mockito.verify(cs, Mockito.times(1)).registerOutParameter(1, Types.INTEGER);
}
-
@Test public void testProcedureExecution1() throws Exception {
- ICommand command = FakeMetadataFactory.helpTranslate(FakeMetadataFactory.BQT_VDB, "exec pm2.spTest8(1)"); //$NON-NLS-1$
+ ICommand command = TranslationHelper.helpTranslate(TranslationHelper.BQT_VDB, "exec pm2.spTest8(1)"); //$NON-NLS-1$
Connection connection = Mockito.mock(Connection.class);
CallableStatement cs = Mockito.mock(CallableStatement.class);
Mockito.stub(cs.getUpdateCount()).toReturn(-1);
Modified: branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TestJDBCUpdateExecution.java
===================================================================
--- branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TestJDBCUpdateExecution.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TestJDBCUpdateExecution.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -39,7 +39,7 @@
public class TestJDBCUpdateExecution {
@Test public void testBulkUpdate() throws Exception {
- ICommand command = FakeMetadataFactory.helpTranslate(FakeMetadataFactory.BQT_VDB, "insert into bqt1.smalla (intkey, intnum) values (1, 2)"); //$NON-NLS-1$
+ ICommand command = TranslationHelper.helpTranslate(TranslationHelper.BQT_VDB, "insert into bqt1.smalla (intkey, intnum) values (1, 2)"); //$NON-NLS-1$
ILiteral value = ((ILiteral)((IInsertExpressionValueSource)((IInsert)command).getValueSource()).getValues().get(0));
ILiteral value1 = ((ILiteral)((IInsertExpressionValueSource)((IInsert)command).getValueSource()).getValues().get(1));
value.setMultiValued(true);
Copied: branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TranslationHelper.java (from rev 1614, trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TranslationHelper.java)
===================================================================
--- branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TranslationHelper.java (rev 0)
+++ branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/TranslationHelper.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,69 @@
+/*
+ * 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.connector.jdbc;
+
+import static org.junit.Assert.*;
+
+import org.teiid.connector.api.ConnectorException;
+import org.teiid.connector.jdbc.translator.TranslatedCommand;
+import org.teiid.connector.jdbc.translator.Translator;
+import org.teiid.connector.language.ICommand;
+
+import junit.framework.Assert;
+
+import com.metamatrix.cdk.api.EnvironmentUtility;
+import com.metamatrix.cdk.api.TranslationUtility;
+import com.metamatrix.cdk.unittest.FakeTranslationFactory;
+
+public class TranslationHelper {
+
+ public static final String PARTS_VDB = "/PartsSupplier.vdb"; //$NON-NLS-1$
+ public static final String BQT_VDB = "/bqt.vdb"; //$NON-NLS-1$
+
+ public static ICommand helpTranslate(String vdbFileName, String sql) {
+ TranslationUtility util = null;
+ if (PARTS_VDB.equals(vdbFileName)) {
+ util = new TranslationUtility(TranslationHelper.class.getResource(vdbFileName));
+ } else if (BQT_VDB.equals(vdbFileName)){
+ util = FakeTranslationFactory.getInstance().getBQTTranslationUtility();
+ } else {
+ Assert.fail("unknown vdb"); //$NON-NLS-1$
+ }
+ return util.parseCommand(sql);
+ }
+
+ public static void helpTestVisitor(String vdb, String input, String expectedOutput, Translator translator) throws ConnectorException {
+ // Convert from sql to objects
+ ICommand obj = helpTranslate(vdb, input);
+
+ helpTestVisitor(expectedOutput, translator, obj);
+ }
+
+ public static void helpTestVisitor(String expectedOutput,
+ Translator translator, ICommand obj) throws ConnectorException {
+ TranslatedCommand tc = new TranslatedCommand(EnvironmentUtility.createSecurityContext("user"), translator); //$NON-NLS-1$
+ tc.translateCommand(obj);
+ assertEquals("Did not get correct sql", expectedOutput, tc.getSql()); //$NON-NLS-1$
+ }
+
+}
Modified: branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/db2/TestDB2SqlTranslator.java
===================================================================
--- branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/db2/TestDB2SqlTranslator.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/db2/TestDB2SqlTranslator.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -29,8 +29,8 @@
import org.mockito.Mockito;
import org.teiid.connector.api.ConnectorException;
import org.teiid.connector.api.ExecutionContext;
-import org.teiid.connector.jdbc.FakeMetadataFactory;
import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
+import org.teiid.connector.jdbc.TranslationHelper;
import org.teiid.connector.jdbc.translator.TranslatedCommand;
import org.teiid.connector.language.ICommand;
@@ -127,7 +127,7 @@
String input = "SELECT locate(INTNUM, 'chimp', 1) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT LOCATE(char(SmallA.IntNum), 'chimp', 1) FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -144,7 +144,7 @@
String input = "SELECT locate(STRINGNUM, 'chimp') FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT LOCATE(SmallA.StringNum, 'chimp') FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -161,7 +161,7 @@
String input = "SELECT locate(INTNUM, '234567890', 1) FROM BQT1.SMALLA WHERE INTKEY = 26"; //$NON-NLS-1$
String output = "SELECT LOCATE(char(SmallA.IntNum), '234567890', 1) FROM SmallA WHERE SmallA.IntKey = 26"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -178,7 +178,7 @@
String input = "SELECT locate('c', 'chimp', 1) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT 1 FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -195,7 +195,7 @@
String input = "SELECT locate(STRINGNUM, 'chimp', -5) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT LOCATE(SmallA.StringNum, 'chimp', 1) FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -212,7 +212,7 @@
String input = "SELECT locate(STRINGNUM, 'chimp', INTNUM) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT LOCATE(SmallA.StringNum, 'chimp', CASE WHEN SmallA.IntNum < 1 THEN 1 ELSE SmallA.IntNum END) FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -229,7 +229,7 @@
String input = "SELECT locate(STRINGNUM, 'chimp', LOCATE(STRINGNUM, 'chimp') + 1) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT LOCATE(SmallA.StringNum, 'chimp', CASE WHEN (LOCATE(SmallA.StringNum, 'chimp') + 1) < 1 THEN 1 ELSE (LOCATE(SmallA.StringNum, 'chimp') + 1) END) FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
Modified: branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/derby/TestDerbySQLTranslator.java
===================================================================
--- branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/derby/TestDerbySQLTranslator.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/derby/TestDerbySQLTranslator.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -22,20 +22,12 @@
package org.teiid.connector.jdbc.derby;
-import static org.junit.Assert.assertEquals;
-
import org.junit.BeforeClass;
import org.junit.Test;
-import org.mockito.Mockito;
import org.teiid.connector.api.ConnectorException;
-import org.teiid.connector.api.ExecutionContext;
import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
-import org.teiid.connector.jdbc.translator.TranslatedCommand;
-import org.teiid.connector.language.ICommand;
+import org.teiid.connector.jdbc.TranslationHelper;
-import com.metamatrix.cdk.api.TranslationUtility;
-import com.metamatrix.cdk.unittest.FakeTranslationFactory;
-import com.metamatrix.core.util.UnitTestUtil;
/**
*/
@@ -49,30 +41,12 @@
TRANSLATOR.initialize(new JDBCManagedConnectionFactory());
}
- public String getTestVDB() {
- return UnitTestUtil.getTestDataPath() + "/PartsSupplier.vdb"; //$NON-NLS-1$
- }
-
- public void helpTestVisitor(TranslationUtility util, String input, String expectedOutput) throws ConnectorException {
- // Convert from sql to objects
- ICommand obj = util.parseCommand(input);
-
-
- TranslatedCommand tc = new TranslatedCommand(Mockito.mock(ExecutionContext.class), TRANSLATOR);
- tc.translateCommand(obj);
-
- assertEquals("Did not get correct sql", expectedOutput, tc.getSql()); //$NON-NLS-1$
- }
-
@Test
public void testConcat_useLiteral() throws Exception {
String input = "select concat(stringnum,'_xx') from BQT1.Smalla"; //$NON-NLS-1$
String output = "SELECT {fn concat(SmallA.StringNum, '_xx')} FROM SmallA"; //$NON-NLS-1$
- helpTestVisitor(FakeTranslationFactory.getInstance().getBQTTranslationUtility(),
- input,
- output);
-
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, input, output, TRANSLATOR);
}
@Test
@@ -80,9 +54,7 @@
String input = "select concat(stringnum, stringnum) from BQT1.Smalla"; //$NON-NLS-1$
String output = "SELECT {fn concat(SmallA.StringNum, SmallA.StringNum)} FROM SmallA"; //$NON-NLS-1$
- helpTestVisitor(FakeTranslationFactory.getInstance().getBQTTranslationUtility(),
- input,
- output);
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, input, output, TRANSLATOR);
}
@Test
@@ -90,10 +62,7 @@
String input = "select concat2(stringnum,'_xx') from BQT1.Smalla"; //$NON-NLS-1$
String output = "SELECT {fn concat(coalesce(SmallA.StringNum, ''), '_xx')} FROM SmallA"; //$NON-NLS-1$
- helpTestVisitor(FakeTranslationFactory.getInstance().getBQTTranslationUtility(),
- input,
- output);
-
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, input, output, TRANSLATOR);
}
@Test
@@ -101,9 +70,7 @@
String input = "select concat2(stringnum, stringnum) from BQT1.Smalla"; //$NON-NLS-1$
String output = "SELECT CASE WHEN SmallA.StringNum IS NULL THEN NULL ELSE {fn concat(coalesce(SmallA.StringNum, ''), coalesce(SmallA.StringNum, ''))} END FROM SmallA"; //$NON-NLS-1$
- helpTestVisitor(FakeTranslationFactory.getInstance().getBQTTranslationUtility(),
- input,
- output);
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, input, output, TRANSLATOR);
}
}
Copied: branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/h2 (from rev 1614, trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/h2)
Deleted: branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/h2/TestH2Translator.java
===================================================================
--- trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/h2/TestH2Translator.java 2009-12-01 21:17:40 UTC (rev 1614)
+++ branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/h2/TestH2Translator.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,66 +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.connector.jdbc.h2;
-
-import java.util.Properties;
-
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.teiid.connector.api.ConnectorException;
-import org.teiid.connector.jdbc.TranslationHelper;
-
-import com.metamatrix.cdk.api.EnvironmentUtility;
-
-public class TestH2Translator {
-
- private static H2Translator TRANSLATOR;
-
- @BeforeClass
- public static void setUp() throws ConnectorException {
- TRANSLATOR = new H2Translator();
- TRANSLATOR.initialize(EnvironmentUtility.createEnvironment(new Properties(), false));
- }
-
- @Test public void testTimestampDiff() throws Exception {
- String input = "select timestampdiff(SQL_TSI_FRAC_SECOND, timestampvalue, {d'1970-01-01'}) from BQT1.Smalla"; //$NON-NLS-1$
- String output = "SELECT datediff('MILLISECOND', SmallA.TimestampValue, TIMESTAMP '1970-01-01 00:00:00.0') * 1000000 FROM SmallA"; //$NON-NLS-1$
-
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, input, output, TRANSLATOR);
- }
-
- @Test public void testTimestampAdd() throws Exception {
- String input = "select timestampadd(SQL_TSI_FRAC_SECOND, 2, datevalue) from BQT1.Smalla"; //$NON-NLS-1$
- String output = "SELECT cast(dateadd('MILLISECOND', (2 / 1000000), cast(SmallA.DateValue AS timestamp)) AS date) FROM SmallA"; //$NON-NLS-1$
-
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, input, output, TRANSLATOR);
- }
-
- @Test public void testTimestampAdd1() throws Exception {
- String input = "select timestampadd(SQL_TSI_HOUR, intnum, {t'00:00:00'}) from BQT1.Smalla"; //$NON-NLS-1$
- String output = "SELECT cast(dateadd('HOUR', SmallA.IntNum, TIMESTAMP '1970-01-01 00:00:00.0') AS time) FROM SmallA"; //$NON-NLS-1$
-
- TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, input, output, TRANSLATOR);
- }
-
-
-}
Copied: branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/h2/TestH2Translator.java (from rev 1614, trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/h2/TestH2Translator.java)
===================================================================
--- branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/h2/TestH2Translator.java (rev 0)
+++ branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/h2/TestH2Translator.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,63 @@
+/*
+ * 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.connector.jdbc.h2;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.teiid.connector.api.ConnectorException;
+import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
+import org.teiid.connector.jdbc.TranslationHelper;
+
+public class TestH2Translator {
+
+ private static H2Translator TRANSLATOR;
+
+ @BeforeClass
+ public static void setUp() throws ConnectorException {
+ TRANSLATOR = new H2Translator();
+ TRANSLATOR.initialize(new JDBCManagedConnectionFactory());
+ }
+
+ @Test public void testTimestampDiff() throws Exception {
+ String input = "select timestampdiff(SQL_TSI_FRAC_SECOND, timestampvalue, {d'1970-01-01'}) from BQT1.Smalla"; //$NON-NLS-1$
+ String output = "SELECT datediff('MILLISECOND', SmallA.TimestampValue, TIMESTAMP '1970-01-01 00:00:00.0') * 1000000 FROM SmallA"; //$NON-NLS-1$
+
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, input, output, TRANSLATOR);
+ }
+
+ @Test public void testTimestampAdd() throws Exception {
+ String input = "select timestampadd(SQL_TSI_FRAC_SECOND, 2, datevalue) from BQT1.Smalla"; //$NON-NLS-1$
+ String output = "SELECT cast(dateadd('MILLISECOND', (2 / 1000000), cast(SmallA.DateValue AS timestamp)) AS date) FROM SmallA"; //$NON-NLS-1$
+
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, input, output, TRANSLATOR);
+ }
+
+ @Test public void testTimestampAdd1() throws Exception {
+ String input = "select timestampadd(SQL_TSI_HOUR, intnum, {t'00:00:00'}) from BQT1.Smalla"; //$NON-NLS-1$
+ String output = "SELECT cast(dateadd('HOUR', SmallA.IntNum, TIMESTAMP '1970-01-01 00:00:00.0') AS time) FROM SmallA"; //$NON-NLS-1$
+
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, input, output, TRANSLATOR);
+ }
+
+
+}
Modified: branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/mysql/TestMySQLTranslator.java
===================================================================
--- branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/mysql/TestMySQLTranslator.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/mysql/TestMySQLTranslator.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -25,8 +25,8 @@
import org.junit.BeforeClass;
import org.junit.Test;
import org.teiid.connector.api.ConnectorException;
-import org.teiid.connector.jdbc.FakeMetadataFactory;
import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
+import org.teiid.connector.jdbc.TranslationHelper;
/**
*/
@@ -40,18 +40,18 @@
}
private String getTestVDB() {
- return FakeMetadataFactory.PARTS_VDB;
+ return TranslationHelper.PARTS_VDB;
}
private String getTestBQTVDB() {
- return FakeMetadataFactory.BQT_VDB;
+ return TranslationHelper.BQT_VDB;
}
@Test public void testConversion1() throws Exception {
String input = "SELECT char(convert(PART_WEIGHT, integer) + 100) FROM PARTS"; //$NON-NLS-1$
String output = "SELECT char((cast(PARTS.PART_WEIGHT AS signed) + 100)) FROM PARTS"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(getTestVDB(),
+ TranslationHelper.helpTestVisitor(getTestVDB(),
input,
output, TRANSLATOR);
}
@@ -60,7 +60,7 @@
String input = "SELECT convert(PART_WEIGHT, long) FROM PARTS"; //$NON-NLS-1$
String output = "SELECT cast(PARTS.PART_WEIGHT AS signed) FROM PARTS"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(getTestVDB(),
+ TranslationHelper.helpTestVisitor(getTestVDB(),
input,
output, TRANSLATOR);
}
@@ -69,7 +69,7 @@
String input = "SELECT convert(convert(PART_WEIGHT, long), string) FROM PARTS"; //$NON-NLS-1$
String output = "SELECT cast(cast(PARTS.PART_WEIGHT AS signed) AS char) FROM PARTS"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(getTestVDB(),
+ TranslationHelper.helpTestVisitor(getTestVDB(),
input,
output, TRANSLATOR);
}
@@ -78,7 +78,7 @@
String input = "SELECT convert(convert(PART_WEIGHT, date), string) FROM PARTS"; //$NON-NLS-1$
String output = "SELECT date_format(DATE(PARTS.PART_WEIGHT), '%Y-%m-%d') FROM PARTS"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(getTestVDB(),
+ TranslationHelper.helpTestVisitor(getTestVDB(),
input,
output, TRANSLATOR);
}
@@ -86,7 +86,7 @@
String input = "SELECT convert(convert(PART_WEIGHT, time), string) FROM PARTS"; //$NON-NLS-1$
String output = "SELECT date_format(TIME(PARTS.PART_WEIGHT), '%H:%i:%S') FROM PARTS"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(getTestVDB(),
+ TranslationHelper.helpTestVisitor(getTestVDB(),
input,
output, TRANSLATOR);
}
@@ -94,7 +94,7 @@
String input = "SELECT convert(convert(PART_WEIGHT, timestamp), string) FROM PARTS"; //$NON-NLS-1$
String output = "SELECT date_format(TIMESTAMP(PARTS.PART_WEIGHT), '%Y-%m-%d %H:%i:%S.%f') FROM PARTS"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(getTestVDB(),
+ TranslationHelper.helpTestVisitor(getTestVDB(),
input,
output, TRANSLATOR);
}
@@ -102,7 +102,7 @@
String input = "SELECT ifnull(PART_WEIGHT, 'otherString') FROM PARTS"; //$NON-NLS-1$
String output = "SELECT ifnull(PARTS.PART_WEIGHT, 'otherString') FROM PARTS"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(getTestVDB(),
+ TranslationHelper.helpTestVisitor(getTestVDB(),
input,
output, TRANSLATOR);
}
@@ -110,7 +110,7 @@
String input = "SELECT convert(convert(PART_WEIGHT, integer), string) FROM PARTS"; //$NON-NLS-1$
String output = "SELECT cast(cast(PARTS.PART_WEIGHT AS signed) AS char) FROM PARTS"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(getTestVDB(),
+ TranslationHelper.helpTestVisitor(getTestVDB(),
input,
output, TRANSLATOR);
}
@@ -118,7 +118,7 @@
String input = "SELECT insert(PART_WEIGHT, 1, 5, 'chimp') FROM PARTS"; //$NON-NLS-1$
String output = "SELECT insert(PARTS.PART_WEIGHT, 1, 5, 'chimp') FROM PARTS"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(getTestVDB(),
+ TranslationHelper.helpTestVisitor(getTestVDB(),
input,
output, TRANSLATOR);
}
@@ -135,7 +135,7 @@
String input = "SELECT locate(INTNUM, 'chimp', 1) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT LOCATE(cast(SmallA.IntNum AS char), 'chimp', 1) FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -152,7 +152,7 @@
String input = "SELECT locate(STRINGNUM, 'chimp') FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT LOCATE(SmallA.StringNum, 'chimp') FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -169,7 +169,7 @@
String input = "SELECT locate(INTNUM, '234567890', 1) FROM BQT1.SMALLA WHERE INTKEY = 26"; //$NON-NLS-1$
String output = "SELECT LOCATE(cast(SmallA.IntNum AS char), '234567890', 1) FROM SmallA WHERE SmallA.IntKey = 26"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -186,7 +186,7 @@
String input = "SELECT locate('c', 'chimp', 1) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT 1 FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -203,7 +203,7 @@
String input = "SELECT locate(STRINGNUM, 'chimp', -5) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT LOCATE(SmallA.StringNum, 'chimp', 1) FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -220,7 +220,7 @@
String input = "SELECT locate(STRINGNUM, 'chimp', INTNUM) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT LOCATE(SmallA.StringNum, 'chimp', CASE WHEN SmallA.IntNum < 1 THEN 1 ELSE SmallA.IntNum END) FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -237,7 +237,7 @@
String input = "SELECT locate(STRINGNUM, 'chimp', LOCATE(STRINGNUM, 'chimp') + 1) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT LOCATE(SmallA.StringNum, 'chimp', CASE WHEN (LOCATE(SmallA.StringNum, 'chimp') + 1) < 1 THEN 1 ELSE (LOCATE(SmallA.StringNum, 'chimp') + 1) END) FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -246,7 +246,7 @@
String input = "SELECT substring(PART_WEIGHT, 1) FROM PARTS"; //$NON-NLS-1$
String output = "SELECT substring(PARTS.PART_WEIGHT, 1) FROM PARTS"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(getTestVDB(),
+ TranslationHelper.helpTestVisitor(getTestVDB(),
input,
output, TRANSLATOR);
}
@@ -254,7 +254,7 @@
String input = "SELECT substring(PART_WEIGHT, 1, 5) FROM PARTS"; //$NON-NLS-1$
String output = "SELECT substring(PARTS.PART_WEIGHT, 1, 5) FROM PARTS"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(getTestVDB(),
+ TranslationHelper.helpTestVisitor(getTestVDB(),
input,
output, TRANSLATOR);
}
@@ -262,7 +262,7 @@
String input = "SELECT PART_ID FROM PARTS UNION SELECT PART_ID FROM PARTS ORDER BY PART_ID"; //$NON-NLS-1$
String output = "(SELECT PARTS.PART_ID FROM PARTS) UNION (SELECT PARTS.PART_ID FROM PARTS) ORDER BY PART_ID"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(getTestVDB(),
+ TranslationHelper.helpTestVisitor(getTestVDB(),
input,
output, TRANSLATOR);
}
@@ -271,7 +271,7 @@
String input = "select intkey from bqt1.smalla limit 100"; //$NON-NLS-1$
String output = "SELECT SmallA.IntKey FROM SmallA LIMIT 100"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(getTestBQTVDB(),
+ TranslationHelper.helpTestVisitor(getTestBQTVDB(),
input,
output, TRANSLATOR);
}
@@ -280,7 +280,7 @@
String input = "select intkey from bqt1.smalla limit 50, 100"; //$NON-NLS-1$
String output = "SELECT SmallA.IntKey FROM SmallA LIMIT 50, 100"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(getTestBQTVDB(),
+ TranslationHelper.helpTestVisitor(getTestBQTVDB(),
input,
output, TRANSLATOR);
}
@@ -289,7 +289,7 @@
String input = "select bitand(intkey, intnum) from bqt1.smalla"; //$NON-NLS-1$
String output = "SELECT cast((SmallA.IntKey & SmallA.IntNum) AS signed) FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input,
output, TRANSLATOR);
}
@@ -298,7 +298,7 @@
String input = "select smalla.intkey from bqt1.smalla inner join bqt1.smallb on smalla.stringkey=smallb.stringkey cross join bqt1.mediuma"; //$NON-NLS-1$
String output = "SELECT SmallA.IntKey FROM (SmallA INNER JOIN SmallB ON SmallA.StringKey = SmallB.StringKey) CROSS JOIN MediumA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input,
output, TRANSLATOR);
}
@@ -307,7 +307,7 @@
String input = "select smalla.intkey from bqt1.smalla where smalla.timestampvalue = '2009-08-06 12:23:34.999'"; //$NON-NLS-1$
String output = "SELECT SmallA.IntKey FROM SmallA WHERE SmallA.TimestampValue = {ts '2009-08-06 12:23:34.0'}"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input,
output, TRANSLATOR);
}
Modified: branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestOracleTranslator.java
===================================================================
--- branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestOracleTranslator.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestOracleTranslator.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -31,13 +31,12 @@
import org.mockito.Mockito;
import org.teiid.connector.api.ConnectorException;
import org.teiid.connector.api.ExecutionContext;
-import org.teiid.connector.jdbc.FakeMetadataFactory;
import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
+import org.teiid.connector.jdbc.TranslationHelper;
import org.teiid.connector.jdbc.translator.TranslatedCommand;
import org.teiid.connector.jdbc.translator.Translator;
import org.teiid.connector.language.ICommand;
-import com.metamatrix.cdk.api.EnvironmentUtility;
import com.metamatrix.cdk.unittest.FakeTranslationFactory;
import com.metamatrix.query.function.FunctionLibraryManager;
import com.metamatrix.query.function.UDFSource;
@@ -103,7 +102,7 @@
String input = "select smalla.intkey from bqt1.smalla inner join bqt1.smallb on smalla.stringkey=smallb.stringkey cross join bqt1.mediuma"; //$NON-NLS-1$
String output = "SELECT SmallA.IntKey FROM SmallA INNER JOIN SmallB ON SmallA.StringKey = SmallB.StringKey CROSS JOIN MediumA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input,
output, TRANSLATOR);
}
@@ -112,7 +111,7 @@
String input = "select smalla.intkey from bqt1.smalla cross join (bqt1.smallb cross join bqt1.mediuma)"; //$NON-NLS-1$
String output = "SELECT SmallA.IntKey FROM SmallA CROSS JOIN (SmallB CROSS JOIN MediumA)"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input,
output, TRANSLATOR);
}
@@ -121,7 +120,7 @@
String input = "SELECT char(convert(STRINGNUM, integer) + 100) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT chr((trunc(to_number(SmallA.StringNum)) + 100)) FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -130,7 +129,7 @@
String input = "SELECT convert(STRINGNUM, long) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT trunc(to_number(SmallA.StringNum)) FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -139,7 +138,7 @@
String input = "SELECT convert(convert(STRINGNUM, long), string) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT to_char(trunc(to_number(SmallA.StringNum))) FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -148,7 +147,7 @@
String input = "SELECT convert(convert(TIMESTAMPVALUE, date), string) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT to_char(trunc(cast(SmallA.TimestampValue AS date)), 'YYYY-MM-DD') FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -156,7 +155,7 @@
String input = "SELECT convert(convert(TIMEVALUE, timestamp), string) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT to_char(cast(SmallA.TimeValue AS timestamp), 'YYYY-MM-DD HH24:MI:SS.FF') FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -164,7 +163,7 @@
String input = "SELECT nvl(INTNUM, 'otherString') FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT nvl(to_char(SmallA.IntNum), 'otherString') FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -172,7 +171,7 @@
String input = "SELECT convert(convert(STRINGNUM, integer), string) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT to_char(trunc(to_number(SmallA.StringNum))) FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -189,7 +188,7 @@
String input = "SELECT locate(INTNUM, 'chimp', 1) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT INSTR('chimp', to_char(SmallA.IntNum), 1) FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -206,7 +205,7 @@
String input = "SELECT locate(STRINGNUM, 'chimp') FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT INSTR('chimp', SmallA.StringNum) FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -223,7 +222,7 @@
String input = "SELECT locate(INTNUM, '234567890', 1) FROM BQT1.SMALLA WHERE INTKEY = 26"; //$NON-NLS-1$
String output = "SELECT INSTR('234567890', to_char(SmallA.IntNum), 1) FROM SmallA WHERE SmallA.IntKey = 26"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -240,7 +239,7 @@
String input = "SELECT locate('c', 'chimp', 1) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT 1 FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -257,7 +256,7 @@
String input = "SELECT locate(STRINGNUM, 'chimp', -5) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT INSTR('chimp', SmallA.StringNum, 1) FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -274,7 +273,7 @@
String input = "SELECT locate(STRINGNUM, 'chimp', INTNUM) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT INSTR('chimp', SmallA.StringNum, CASE WHEN SmallA.IntNum < 1 THEN 1 ELSE SmallA.IntNum END) FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -291,7 +290,7 @@
String input = "SELECT locate(STRINGNUM, 'chimp', LOCATE(STRINGNUM, 'chimp') + 1) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT INSTR('chimp', SmallA.StringNum, CASE WHEN (INSTR('chimp', SmallA.StringNum) + 1) < 1 THEN 1 ELSE (INSTR('chimp', SmallA.StringNum) + 1) END) FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -300,7 +299,7 @@
String input = "SELECT substring(StringNum, 1) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT substr(SmallA.StringNum, 1) FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -308,7 +307,7 @@
String input = "SELECT substring(StringNum, 1, 1) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT substr(SmallA.StringNum, 1, 1) FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -316,7 +315,7 @@
String input = "SELECT IntKey FROM BQT1.SMALLA UNION SELECT IntKey FROM BQT1.SMALLB ORDER BY IntKey"; //$NON-NLS-1$
String output = "SELECT SmallA.IntKey FROM SmallA UNION SELECT SmallB.IntKey FROM SmallB ORDER BY IntKey NULLS FIRST"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -324,7 +323,7 @@
String input = "select intkey from bqt1.smalla limit 10, 0"; //$NON-NLS-1$
String output = "SELECT * FROM (SELECT VIEW_FOR_LIMIT.*, ROWNUM ROWNUM_ FROM (SELECT SmallA.IntKey FROM SmallA) VIEW_FOR_LIMIT WHERE ROWNUM <= 10) WHERE ROWNUM_ > 10"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -332,7 +331,7 @@
String input = "select intkey from bqt1.smalla limit 0, 10"; //$NON-NLS-1$
String output = "SELECT * FROM (SELECT SmallA.IntKey FROM SmallA) WHERE ROWNUM <= 10"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -340,7 +339,7 @@
String input = "select intkey from bqt1.smalla limit 1, 10"; //$NON-NLS-1$
String output = "SELECT * FROM (SELECT VIEW_FOR_LIMIT.*, ROWNUM ROWNUM_ FROM (SELECT SmallA.IntKey FROM SmallA) VIEW_FOR_LIMIT WHERE ROWNUM <= 11) WHERE ROWNUM_ > 1"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -348,7 +347,7 @@
String input = "select intkey from bqt1.mediuma limit 100"; //$NON-NLS-1$
String output = "SELECT * FROM (SELECT MediumA.IntKey FROM MediumA) WHERE ROWNUM <= 100"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -356,7 +355,7 @@
String input = "select intkey from bqt1.mediuma limit 50, 100"; //$NON-NLS-1$
String output = "SELECT * FROM (SELECT VIEW_FOR_LIMIT.*, ROWNUM ROWNUM_ FROM (SELECT MediumA.IntKey FROM MediumA) VIEW_FOR_LIMIT WHERE ROWNUM <= 150) WHERE ROWNUM_ > 50"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -364,7 +363,7 @@
@Test public void testConcat2_useLiteral() throws Exception {
String input = "select concat2(stringnum,'_xx') from bqt1.Smalla"; //$NON-NLS-1$
String output = "SELECT concat(nvl(SmallA.StringNum, ''), '_xx') FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -372,7 +371,7 @@
@Test public void testConcat2() throws Exception {
String input = "select concat2(stringnum, stringkey) from bqt1.Smalla"; //$NON-NLS-1$
String output = "SELECT CASE WHEN (SmallA.StringNum IS NULL) AND (SmallA.StringKey IS NULL) THEN NULL ELSE concat(nvl(SmallA.StringNum, ''), nvl(SmallA.StringKey, '')) END FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -388,7 +387,7 @@
String input = "SELECT a.INTKEY FROM BQT1.SMALLA A, BQT1.SMALLB B WHERE sdo_relate(A.OBJECTVALUE, b.OBJECTVALUE, 'mask=ANYINTERACT') = true"; //$NON-NLS-1$
String output = "SELECT /*+ ORDERED */ A.IntKey FROM SmallA A, SmallB B WHERE sdo_relate(A.ObjectValue, B.ObjectValue, 'mask=ANYINTERACT') = 'true'"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -404,7 +403,7 @@
String input = "SELECT INTKEY FROM BQT1.SMALLA WHERE sdo_within_distance(OBJECTVALUE, 'SDO_GEOMETRY(2001, 8307, MDSYS.SDO_POINT_TYPE(90.0, -45.0, NULL), NULL, NULL)', 'DISTANCE=25.0 UNIT=NAUT_MILE') = true"; //$NON-NLS-1$
String output = "SELECT SmallA.IntKey FROM SmallA WHERE sdo_within_distance(SmallA.ObjectValue, SDO_GEOMETRY(2001, 8307, MDSYS.SDO_POINT_TYPE(90.0, -45.0, NULL), NULL, NULL), 'DISTANCE=25.0 UNIT=NAUT_MILE') = 'true'"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -420,7 +419,7 @@
String input = "SELECT INTKEY FROM BQT1.SMALLA WHERE sdo_within_distance('SDO_GEOMETRY(2001, 8307, MDSYS.SDO_POINT_TYPE(90.0, -45.0, NULL), NULL, NULL)', OBJECTVALUE, 'DISTANCE=25.0 UNIT=NAUT_MILE') = true"; //$NON-NLS-1$
String output = "SELECT SmallA.IntKey FROM SmallA WHERE sdo_within_distance(SDO_GEOMETRY(2001, 8307, MDSYS.SDO_POINT_TYPE(90.0, -45.0, NULL), NULL, NULL), SmallA.ObjectValue, 'DISTANCE=25.0 UNIT=NAUT_MILE') = 'true'"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -441,7 +440,7 @@
// as the signature was the best match for this query.
String output = "SELECT SmallA.IntKey FROM SmallA WHERE sdo_within_distance(SmallA.StringKey, SDO_GEOMETRY(2001, 8307, MDSYS.SDO_POINT_TYPE(90.0, -45.0, NULL), NULL, NULL), 'DISTANCE=25.0 UNIT=NAUT_MILE') = ?"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -462,7 +461,7 @@
// as the signature was the best match for this query.
String output = "SELECT SmallA.IntKey FROM SmallA WHERE sdo_within_distance(SDO_GEOMETRY(2001, 8307, MDSYS.SDO_POINT_TYPE(90.0, -45.0, NULL), NULL, NULL), SDO_GEOMETRY(2001, 8307, MDSYS.SDO_POINT_TYPE(90.0, -45.0, NULL), NULL, NULL), 'DISTANCE=25.0 UNIT=NAUT_MILE') = ?"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -478,7 +477,7 @@
String input = "SELECT a.INTKEY FROM BQT1.SMALLA A, BQT1.SMALLB B WHERE sdo_within_distance(a.OBJECTVALUE, b.OBJECTVALUE, 'DISTANCE=25.0 UNIT=NAUT_MILE') = true"; //$NON-NLS-1$
String output = "SELECT A.IntKey FROM SmallA A, SmallB B WHERE sdo_within_distance(A.ObjectValue, B.ObjectValue, 'DISTANCE=25.0 UNIT=NAUT_MILE') = 'true'"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -487,7 +486,7 @@
String input = "SELECT log(CONVERT(stringkey, INTEGER)) FROM bqt1.smalla"; //$NON-NLS-1$
String output = "SELECT ln(trunc(to_number(SmallA.StringKey))) FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -496,7 +495,7 @@
String input = "SELECT log10(CONVERT(stringkey, INTEGER)) FROM bqt1.smalla"; //$NON-NLS-1$
String output = "SELECT log(10, trunc(to_number(SmallA.StringKey))) FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -505,7 +504,7 @@
String input = "SELECT char(CONVERT(stringkey, INTEGER)), lcase(stringkey), ucase(stringkey), ifnull(stringkey, 'x') FROM bqt1.smalla"; //$NON-NLS-1$
String output = "SELECT chr(trunc(to_number(SmallA.StringKey))), lower(SmallA.StringKey), upper(SmallA.StringKey), nvl(SmallA.StringKey, 'x') FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
Modified: branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/postgresql/TestPostgreSQLTranslator.java
===================================================================
--- branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/postgresql/TestPostgreSQLTranslator.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/postgresql/TestPostgreSQLTranslator.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -25,8 +25,8 @@
import org.junit.BeforeClass;
import org.junit.Test;
import org.teiid.connector.api.ConnectorException;
-import org.teiid.connector.jdbc.FakeMetadataFactory;
import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
+import org.teiid.connector.jdbc.TranslationHelper;
public class TestPostgreSQLTranslator {
@@ -38,15 +38,15 @@
}
public String getTestVDB() {
- return FakeMetadataFactory.PARTS_VDB;
+ return TranslationHelper.PARTS_VDB;
}
private String getTestBQTVDB() {
- return FakeMetadataFactory.BQT_VDB;
+ return TranslationHelper.BQT_VDB;
}
public void helpTestVisitor(String vdb, String input, String expectedOutput) throws ConnectorException {
- FakeMetadataFactory.helpTestVisitor(vdb, input, expectedOutput, TRANSLATOR);
+ TranslationHelper.helpTestVisitor(vdb, input, expectedOutput, TRANSLATOR);
}
@Test public void testConversion1() throws Exception {
@@ -411,7 +411,7 @@
String input = "SELECT locate(INTNUM, 'chimp', 1) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT position(cast(SmallA.IntNum AS varchar(4000)) in substr('chimp', 1)) FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -428,7 +428,7 @@
String input = "SELECT locate(STRINGNUM, 'chimp') FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT position(SmallA.StringNum in 'chimp') FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -445,7 +445,7 @@
String input = "SELECT locate(INTNUM, '234567890', 1) FROM BQT1.SMALLA WHERE INTKEY = 26"; //$NON-NLS-1$
String output = "SELECT position(cast(SmallA.IntNum AS varchar(4000)) in substr('234567890', 1)) FROM SmallA WHERE SmallA.IntKey = 26"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -462,7 +462,7 @@
String input = "SELECT locate('c', 'chimp', 1) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT 1 FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -479,7 +479,7 @@
String input = "SELECT locate(STRINGNUM, 'chimp', -5) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT position(SmallA.StringNum in substr('chimp', 1)) FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -496,7 +496,7 @@
String input = "SELECT locate(STRINGNUM, 'chimp', INTNUM) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT position(SmallA.StringNum in substr('chimp', CASE WHEN SmallA.IntNum < 1 THEN 1 ELSE SmallA.IntNum END)) FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
@@ -513,7 +513,7 @@
String input = "SELECT locate(STRINGNUM, 'chimp', LOCATE(STRINGNUM, 'chimp') + 1) FROM BQT1.SMALLA"; //$NON-NLS-1$
String output = "SELECT position(SmallA.StringNum in substr('chimp', CASE WHEN (position(SmallA.StringNum in 'chimp') + 1) < 1 THEN 1 ELSE (position(SmallA.StringNum in 'chimp') + 1) END)) FROM SmallA"; //$NON-NLS-1$
- FakeMetadataFactory.helpTestVisitor(FakeMetadataFactory.BQT_VDB,
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB,
input, output,
TRANSLATOR);
}
Modified: branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/sqlserver/TestSqlServerConversionVisitor.java
===================================================================
--- branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/sqlserver/TestSqlServerConversionVisitor.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/sqlserver/TestSqlServerConversionVisitor.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -22,17 +22,23 @@
package org.teiid.connector.jdbc.sqlserver;
-import org.junit.Assert;
+import java.util.List;
+
import org.junit.BeforeClass;
import org.junit.Test;
-import org.mockito.Mockito;
import org.teiid.connector.api.ConnectorException;
-import org.teiid.connector.api.ExecutionContext;
-import org.teiid.connector.jdbc.FakeMetadataFactory;
import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
-import org.teiid.connector.jdbc.translator.TranslatedCommand;
+import org.teiid.connector.jdbc.TranslationHelper;
import org.teiid.connector.language.ICommand;
+import com.metamatrix.cdk.api.TranslationUtility;
+import com.metamatrix.common.types.DataTypeManager;
+import com.metamatrix.query.metadata.QueryMetadataInterface;
+import com.metamatrix.query.unittest.FakeMetadataFacade;
+import com.metamatrix.query.unittest.FakeMetadataFactory;
+import com.metamatrix.query.unittest.FakeMetadataObject;
+import com.metamatrix.query.unittest.FakeMetadataStore;
+
/**
*/
public class TestSqlServerConversionVisitor {
@@ -45,24 +51,18 @@
}
public String getTestVDB() {
- return FakeMetadataFactory.PARTS_VDB;
+ return TranslationHelper.PARTS_VDB;
}
public String getBQTVDB() {
- return FakeMetadataFactory.BQT_VDB;
+ return TranslationHelper.BQT_VDB;
}
public void helpTestVisitor(String vdb, String input, String expectedOutput) throws ConnectorException {
- helpTestVisitor(vdb, input, new String[] {expectedOutput});
+ TranslationHelper.helpTestVisitor(vdb, input, expectedOutput, trans);
}
-
- public void helpTestVisitor(String vdb, String input, String[] expectedOutputs) throws ConnectorException {
- ICommand obj = FakeMetadataFactory.helpTranslate(vdb, input);
- TranslatedCommand tc = new TranslatedCommand(Mockito.mock(ExecutionContext.class), trans); //$NON-NLS-1$
- tc.translateCommand(obj);
- Assert.assertEquals("Did not get correct sql", expectedOutputs[0], tc.getSql()); //$NON-NLS-1$
- }
+
@Test
public void testModFunction() throws Exception {
String input = "SELECT mod(CONVERT(PART_ID, INTEGER), 13) FROM parts"; //$NON-NLS-1$
@@ -131,5 +131,33 @@
input,
output);
}
+
+ @Test public void testUniqueidentifier() throws Exception {
+ FakeMetadataObject ldapModel = FakeMetadataFactory.createPhysicalModel("foo"); //$NON-NLS-1$
+ FakeMetadataObject table = FakeMetadataFactory.createPhysicalGroup("bar", ldapModel); //$NON-NLS-1$
+ String[] elemNames = new String[] {
+ "x" //$NON-NLS-1$
+ };
+ String[] elemTypes = new String[] {
+ DataTypeManager.DefaultDataTypes.STRING
+ };
+
+ List cols = FakeMetadataFactory.createElements(table, elemNames, elemTypes);
+
+ FakeMetadataObject obj = (FakeMetadataObject) cols.get(0);
+ obj.putProperty(FakeMetadataObject.Props.NATIVE_TYPE, "uniqueidentifier"); //$NON-NLS-1$
+
+ FakeMetadataStore store = new FakeMetadataStore();
+ store.addObject(ldapModel);
+ store.addObject(table);
+ store.addObjects(cols);
+
+ // Create the facade from the store
+ QueryMetadataInterface metadata = new FakeMetadataFacade(store);
+
+ TranslationUtility tu = new TranslationUtility(metadata);
+ ICommand command = tu.parseCommand("select max(x) from bar"); //$NON-NLS-1$
+ TranslationHelper.helpTestVisitor("SELECT MAX(cast(bar.x as char(36))) FROM bar", trans, command); //$NON-NLS-1$
+ }
}
Modified: branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/sybase/TestSybaseSQLConversionVisitor.java
===================================================================
--- branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/sybase/TestSybaseSQLConversionVisitor.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/sybase/TestSybaseSQLConversionVisitor.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -29,8 +29,8 @@
import org.mockito.Mockito;
import org.teiid.connector.api.ConnectorException;
import org.teiid.connector.api.ExecutionContext;
-import org.teiid.connector.jdbc.FakeMetadataFactory;
import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
+import org.teiid.connector.jdbc.TranslationHelper;
import org.teiid.connector.jdbc.translator.TranslatedCommand;
import org.teiid.connector.language.ICommand;
@@ -46,16 +46,16 @@
}
public String getTestVDB() {
- return FakeMetadataFactory.PARTS_VDB;
+ return TranslationHelper.PARTS_VDB;
}
public String getBQTVDB() {
- return FakeMetadataFactory.BQT_VDB;
+ return TranslationHelper.BQT_VDB;
}
public void helpTestVisitor(String vdb, String input, String expectedOutput) {
// Convert from sql to objects
- ICommand obj = FakeMetadataFactory.helpTranslate(vdb, input);
+ ICommand obj = TranslationHelper.helpTranslate(vdb, input);
TranslatedCommand tc = new TranslatedCommand(Mockito.mock(ExecutionContext.class), trans); //$NON-NLS-1$
try {
Copied: branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/translator/TestEscapeSyntaxModifier.java (from rev 1614, trunk/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/translator/TestEscapeSyntaxModifier.java)
===================================================================
--- branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/translator/TestEscapeSyntaxModifier.java (rev 0)
+++ branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/translator/TestEscapeSyntaxModifier.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,79 @@
+/*
+ * 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.connector.jdbc.translator;
+
+import java.sql.Timestamp;
+import java.util.Arrays;
+import java.util.List;
+
+import org.teiid.connector.jdbc.translator.EscapeSyntaxModifier;
+import org.teiid.connector.language.IFunction;
+import org.teiid.connector.language.ILiteral;
+import org.teiid.connector.visitor.util.SQLReservedWords;
+
+import junit.framework.TestCase;
+
+import com.metamatrix.cdk.CommandBuilder;
+import com.metamatrix.query.unittest.TimestampUtil;
+
+/**
+ */
+public class TestEscapeSyntaxModifier extends TestCase {
+
+ /**
+ * Constructor for TestDropFunctionModifier.
+ * @param name
+ */
+ public TestEscapeSyntaxModifier(String name) {
+ super(name);
+ }
+
+ public void testEscape() {
+ ILiteral arg1 = CommandBuilder.getLanuageFactory().createLiteral("arg1", String.class); //$NON-NLS-1$
+ ILiteral arg2 = CommandBuilder.getLanuageFactory().createLiteral("arg2", String.class);//$NON-NLS-1$
+ IFunction func = CommandBuilder.getLanuageFactory().createFunction("concat", Arrays.asList( arg1, arg2), Integer.class); //$NON-NLS-1$
+
+ helpTest(func, "{fn concat('arg1', 'arg2')}");
+ }
+
+ public void testTimestampAdd() {
+ ILiteral arg1 = CommandBuilder.getLanuageFactory().createLiteral(SQLReservedWords.SQL_TSI_HOUR, String.class);
+ ILiteral arg2 = CommandBuilder.getLanuageFactory().createLiteral(Integer.valueOf(1), Integer.class);
+ ILiteral arg3 = CommandBuilder.getLanuageFactory().createLiteral(TimestampUtil.createTimestamp(0, 0, 0, 0, 0, 0, 0), Timestamp.class);
+ IFunction func = CommandBuilder.getLanuageFactory().createFunction("timestampadd", Arrays.asList( arg1, arg2, arg3), Timestamp.class); //$NON-NLS-1$
+
+ helpTest(func, "{fn timestampadd(SQL_TSI_HOUR, 1, {ts'1899-12-31 00:00:00.0'})}");
+ }
+
+ private void helpTest(IFunction func, String expected) {
+ EscapeSyntaxModifier mod = new EscapeSyntaxModifier();
+
+ List parts = mod.translate(func);
+ StringBuffer sb = new StringBuffer();
+ for (Object object : parts) {
+ sb.append(object);
+ }
+ assertEquals(expected, sb.toString());
+ }
+
+}
Modified: branches/JCA/connectors/connector-ldap/pom.xml
===================================================================
--- branches/JCA/connectors/connector-ldap/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connectors/connector-ldap/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -2,7 +2,7 @@
<parent>
<artifactId>connectors</artifactId>
<groupId>org.jboss.teiid</groupId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>connector-ldap</artifactId>
Modified: branches/JCA/connectors/connector-loopback/pom.xml
===================================================================
--- branches/JCA/connectors/connector-loopback/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connectors/connector-loopback/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -5,7 +5,7 @@
<parent>
<artifactId>connectors</artifactId>
<groupId>org.jboss.teiid</groupId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>connector-loopback</artifactId>
Modified: branches/JCA/connectors/connector-salesforce/pom.xml
===================================================================
--- branches/JCA/connectors/connector-salesforce/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connectors/connector-salesforce/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -5,7 +5,7 @@
<parent>
<artifactId>connectors</artifactId>
<groupId>org.jboss.teiid</groupId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>connector-salesforce</artifactId>
Modified: branches/JCA/connectors/connector-text/pom.xml
===================================================================
--- branches/JCA/connectors/connector-text/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connectors/connector-text/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -3,7 +3,7 @@
<parent>
<artifactId>connectors</artifactId>
<groupId>org.jboss.teiid</groupId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>connector-text</artifactId>
Modified: branches/JCA/connectors/connector-text/src/main/java/com/metamatrix/connector/text/TextConnector.java
===================================================================
--- branches/JCA/connectors/connector-text/src/main/java/com/metamatrix/connector/text/TextConnector.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connectors/connector-text/src/main/java/com/metamatrix/connector/text/TextConnector.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -43,9 +43,9 @@
import org.teiid.connector.api.MetadataProvider;
import org.teiid.connector.api.TypeFacility;
import org.teiid.connector.basic.BasicConnector;
-import org.teiid.connector.metadata.runtime.ColumnRecordImpl;
+import org.teiid.connector.metadata.runtime.Column;
import org.teiid.connector.metadata.runtime.MetadataFactory;
-import org.teiid.connector.metadata.runtime.TableRecordImpl;
+import org.teiid.connector.metadata.runtime.Table;
/**
@@ -374,10 +374,10 @@
throw new ConnectorException(TextPlugin.Util.getString("TextConnector.column_mismatch", entry.getKey())); //$NON-NLS-1$
}
}
- TableRecordImpl table = metadataFactory.addTable(entry.getKey().substring(entry.getKey().indexOf('.') + 1));
+ Table table = metadataFactory.addTable(entry.getKey().substring(entry.getKey().indexOf('.') + 1));
for (int i = 0; i < columnNames.length; i++) {
String type = typeNames == null?TypeFacility.RUNTIME_NAMES.STRING:typeNames[i].trim().toLowerCase();
- ColumnRecordImpl column = metadataFactory.addColumn(columnNames[i].trim(), type, table);
+ Column column = metadataFactory.addColumn(columnNames[i].trim(), type, table);
column.setNameInSource(String.valueOf(i));
column.setNativeType(TypeFacility.RUNTIME_NAMES.STRING);
}
Modified: branches/JCA/connectors/connector-text/src/test/java/com/metamatrix/connector/text/TestTextConnector.java
===================================================================
--- branches/JCA/connectors/connector-text/src/test/java/com/metamatrix/connector/text/TestTextConnector.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connectors/connector-text/src/test/java/com/metamatrix/connector/text/TestTextConnector.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -25,15 +25,15 @@
import static org.junit.Assert.*;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import org.junit.Test;
import org.teiid.connector.api.ConnectorEnvironment;
-import org.teiid.connector.metadata.runtime.DatatypeRecordImpl;
+import org.teiid.connector.metadata.runtime.Datatype;
import org.teiid.connector.metadata.runtime.MetadataFactory;
-import org.teiid.connector.metadata.runtime.TableRecordImpl;
+import org.teiid.connector.metadata.runtime.Schema;
+import org.teiid.connector.metadata.runtime.Table;
import com.metamatrix.cdk.api.EnvironmentUtility;
import com.metamatrix.common.types.DataTypeManager;
@@ -50,7 +50,6 @@
ConnectorEnvironment env = EnvironmentUtility.createEnvironment(props, false);
TextConnector connector = new TextConnector();
- // Initialize license checker with class, non-GUI notifier and don't exitOnFailure
connector.start(env);
return connector;
}
@@ -64,16 +63,15 @@
@Test public void testGetMetadata() throws Exception{
TextConnector connector = helpSetUp(UnitTestUtil.getTestDataPath() + "/SummitData_Descriptor.txt"); //$NON-NLS-1$
- Map<String, DatatypeRecordImpl> datatypes = new HashMap<String, DatatypeRecordImpl>();
- datatypes.put(DataTypeManager.DefaultDataTypes.STRING, new DatatypeRecordImpl());
- datatypes.put(DataTypeManager.DefaultDataTypes.BIG_INTEGER, new DatatypeRecordImpl());
- datatypes.put(DataTypeManager.DefaultDataTypes.INTEGER, new DatatypeRecordImpl());
- datatypes.put(DataTypeManager.DefaultDataTypes.TIMESTAMP, new DatatypeRecordImpl());
+ Map<String, Datatype> datatypes = new HashMap<String, Datatype>();
+ datatypes.put(DataTypeManager.DefaultDataTypes.STRING, new Datatype());
+ datatypes.put(DataTypeManager.DefaultDataTypes.BIG_INTEGER, new Datatype());
+ datatypes.put(DataTypeManager.DefaultDataTypes.INTEGER, new Datatype());
+ datatypes.put(DataTypeManager.DefaultDataTypes.TIMESTAMP, new Datatype());
MetadataFactory metadata = new MetadataFactory("SummitData", datatypes, new Properties()); //$NON-NLS-1$
connector.getConnectorMetadata(metadata);
- assertFalse(metadata.getProcedures().iterator().hasNext());
- Iterator<TableRecordImpl> tableIter = metadata.getTables().iterator();
- TableRecordImpl group = tableIter.next();
+ assertEquals(0, metadata.getMetadataStore().getSchemas().values().iterator().next().getProcedures().size());
+ Table group = metadata.getMetadataStore().getSchemas().values().iterator().next().getTables().get("summitdata"); //$NON-NLS-1$
assertEquals("SUMMITDATA", group.getName()); //$NON-NLS-1$
assertEquals("SummitData.SUMMITDATA", group.getFullName()); //$NON-NLS-1$
assertEquals(14, group.getColumns().size());
Modified: branches/JCA/connectors/connector-xml/pom.xml
===================================================================
--- branches/JCA/connectors/connector-xml/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connectors/connector-xml/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -5,7 +5,7 @@
<parent>
<artifactId>connectors</artifactId>
<groupId>org.jboss.teiid</groupId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>connector-xml</artifactId>
Modified: branches/JCA/connectors/connector-xml/src/main/java/com/metamatrix/connector/xml/soap/SOAPRequest.java
===================================================================
--- branches/JCA/connectors/connector-xml/src/main/java/com/metamatrix/connector/xml/soap/SOAPRequest.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connectors/connector-xml/src/main/java/com/metamatrix/connector/xml/soap/SOAPRequest.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -72,6 +72,14 @@
Source.class,
Service.Mode.PAYLOAD);
+ // I should be able to send no value here, but the dispatch throws an exception
+ // if soapAction == null. We allow the default "" to get sent in that case.
+ // In SOAP 1.1 we must send a SoapAction.
+ String soapAction = (String)exeInfo.getOtherProperties().get("SOAPAction");
+ if(null != soapAction) {
+ dispatch.getRequestContext().put(Dispatch.SOAPACTION_URI_PROPERTY, soapAction);
+ }
+
String requestDocument = xmlOutputter.outputString(doc);
attemptConditionalLog(requestDocument);
StringReader reader = new StringReader(requestDocument);
Modified: branches/JCA/connectors/connector-xml/src/test/java/com/metamatrix/connector/xml/base/TestCriteriaDesc.java
===================================================================
--- branches/JCA/connectors/connector-xml/src/test/java/com/metamatrix/connector/xml/base/TestCriteriaDesc.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connectors/connector-xml/src/test/java/com/metamatrix/connector/xml/base/TestCriteriaDesc.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -58,20 +58,6 @@
vdbPath = ProxyObjectFactory.getStateCollegeVDBLocation();
}
- public TestCriteriaDesc() {
- super();
- System.setProperty("metamatrix.config.none", "true");
- }
-
- /**
- * Constructor for CriteriaDescTest.
- * @param arg0
- */
- public TestCriteriaDesc(String arg0) {
- super(arg0);
- System.setProperty("metamatrix.config.none", "true");
- }
-
public void testGetCriteriaDescForColumn() throws Exception {
//case 1: values provided
assertNotNull("vdb path is null", vdbPath);
Modified: branches/JCA/connectors/connector-xml-common/pom.xml
===================================================================
--- branches/JCA/connectors/connector-xml-common/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connectors/connector-xml-common/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -5,7 +5,7 @@
<parent>
<artifactId>connectors</artifactId>
<groupId>org.jboss.teiid</groupId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>connector-xml-common</artifactId>
Modified: branches/JCA/connectors/pom.xml
===================================================================
--- branches/JCA/connectors/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connectors/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -4,7 +4,7 @@
<parent>
<artifactId>teiid</artifactId>
<groupId>org.jboss.teiid</groupId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.jboss.teiid</groupId>
Modified: branches/JCA/connectors/salesforce-api/pom.xml
===================================================================
--- branches/JCA/connectors/salesforce-api/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connectors/salesforce-api/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -2,7 +2,7 @@
<parent>
<artifactId>connectors</artifactId>
<groupId>org.jboss.teiid</groupId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>salesforce-api</artifactId>
Modified: branches/JCA/connectors/sandbox/connector-exec/pom.xml
===================================================================
--- branches/JCA/connectors/sandbox/connector-exec/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connectors/sandbox/connector-exec/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -3,7 +3,7 @@
<parent>
<artifactId>sandbox</artifactId>
<groupId>org.jboss.teiid.connectors</groupId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>connector-exec</artifactId>
Modified: branches/JCA/connectors/sandbox/connector-object/pom.xml
===================================================================
--- branches/JCA/connectors/sandbox/connector-object/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connectors/sandbox/connector-object/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -4,7 +4,7 @@
<parent>
<artifactId>sandbox</artifactId>
<groupId>org.jboss.teiid.connectors</groupId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>connector-object</artifactId>
Modified: branches/JCA/connectors/sandbox/connector-yahoo/pom.xml
===================================================================
--- branches/JCA/connectors/sandbox/connector-yahoo/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connectors/sandbox/connector-yahoo/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -3,7 +3,7 @@
<parent>
<artifactId>sandbox</artifactId>
<groupId>org.jboss.teiid.connectors</groupId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>connector-yahoo</artifactId>
Modified: branches/JCA/connectors/sandbox/pom.xml
===================================================================
--- branches/JCA/connectors/sandbox/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/connectors/sandbox/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -3,7 +3,7 @@
<parent>
<artifactId>connectors</artifactId>
<groupId>org.jboss.teiid</groupId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.jboss.teiid.connectors</groupId>
Property changes on: branches/JCA/console
___________________________________________________________________
Name: svn:ignore
+ target
.project
.classpath
.settings
Modified: branches/JCA/console/pom.xml
===================================================================
--- branches/JCA/console/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/console/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,19 +1,23 @@
<?xml version="1.0"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <parent>
- <artifactId>teiid</artifactId>
- <groupId>org.jboss.teiid</groupId>
- <version>6.3.0-SNAPSHOT</version>
- </parent>
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <parent>
+ <artifactId>teiid</artifactId>
+ <groupId>org.jboss.teiid</groupId>
+ <version>7.0.0-SNAPSHOT</version>
+ </parent>
<modelVersion>4.0.0</modelVersion>
- <groupId>org.jboss.teiid</groupId>
<artifactId>teiid-console</artifactId>
- <name>TEIID Console</name>
- <description>This project is for the RHQ plugin that supports the TEIID Console </description>
+ <name>Console</name>
+ <description>This project is for the RHQ plugin that supports the
+ TEIID Console </description>
<properties>
- <org.jboss.jopr.as4.version>1.2.0.GA</org.jboss.jopr.as4.version>
+ <!--
+ <org.jboss.jopr.as4.version>1.2.0.GA</org.jboss.jopr.as4.version>
+ -->
<org.jboss.jopr.as5.version>1.2.0.GA</org.jboss.jopr.as5.version>
<org.jboss.jopr.version>1.2.0.GA</org.jboss.jopr.version>
@@ -21,11 +25,14 @@
<apache.ant.version>1.7.0</apache.ant.version>
</properties>
-
+
<build>
<pluginManagement>
<plugins>
- <!-- Fixes how test resources of a project can be used in projects dependent on it -->
+ <!--
+ Fixes how test resources of a project can be used in projects
+ dependent on it
+ -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
@@ -34,7 +41,7 @@
</plugins>
</pluginManagement>
<plugins>
- <!-- Specify the compiler options and settings -->
+ <!-- Specify the compiler options and settings -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
@@ -55,7 +62,10 @@
</includes>
<excludes>
<exclude>**/Abstract*TestCase.java</exclude>
- <!-- hack to prevent anonymous inner classes in Tests from being run as tests -->
+ <!--
+ hack to prevent anonymous inner classes in Tests from being run
+ as tests
+ -->
<include>**/Test*$*.java</include>
</excludes>
<systemProperties>
@@ -70,7 +80,7 @@
</systemProperties>
</configuration>
</plugin>
-
+
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-2</version>
@@ -91,74 +101,7 @@
</execution>
</executions>
</plugin>
-
- <!--
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-antrun-plugin</artifactId>
- <dependencies>
- <dependency>
- <groupId>org.apache.ant</groupId>
- <artifactId>ant</artifactId>
- <version>${apache.ant.version}</version>
- </dependency>
- </dependencies>
- <executions>
- <execution>
- <id>assemble-artifacts</id>
- <phase>package</phase>
- <configuration>
- <tasks>
- <property name="product.version" value="${project.version}" />
- <property name="product.name" value="${project.name}" />
- <ant antfile="src/assembly/assemble-artifacts.xml" />
- </tasks>
- </configuration>
- <goals>
- <goal>run</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- -->
-
- <!--
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-dependency-plugin</artifactId>
- <executions>
- <execution>
- <id>copy-dist-wars</id>
- <phase>process-resources</phase>
- <goals>
- <goal>copy</goal>
- </goals>
- <configuration>
- <outputDirectory>${basedir}/target/</outputDirectory>
- <artifactItems>
- <artifactItem>
- <groupId>org.jboss.jopr</groupId>
- <artifactId>jopr-embedded-jbas4</artifactId>
- <version>${org.jboss.jopr.as4.version}</version>
- <type>war</type>
- <overWrite>true</overWrite>
- </artifactItem>
- <artifactItem>
- <groupId>org.jboss.jopr</groupId>
- <artifactId>jopr-embedded-jbas5</artifactId>
- <version>${org.jboss.jopr.as5.version}</version>
- <type>war</type>
- <overWrite>true</overWrite>
- </artifactItem>
- </artifactItems>
- </configuration>
- </execution>
- </executions>
- </plugin>
- -->
-<!--
-
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
@@ -171,64 +114,92 @@
</dependencies>
<executions>
<execution>
- <id>assembly-kit-jboss-as4</id>
+ <id>assemble-artifacts</id>
<phase>package</phase>
<configuration>
<tasks>
- <mkdir dir="target/jboss-as4-war"/>
- <unzip src="target/jopr-embedded-jbas4-${org.jboss.jopr.as4.version}.war" dest="target/jboss-as4-war"/>
-
- <mkdir dir="target/plugin-classes"/>
-
-
- <unzip src="../jbedsp-plugin/target/distribution/jbedsp-plugin-${project.version}-binaries.jar" dest="target/jboss-as4-war/WEB-INF/lib"/>
-
- <unzip src="../jbedsp-plugin/target/distribution/jbedsp-embedded-plugin-${project.version}.jar" dest="target/plugin-classes"/>
- <unzip src="target/${project.name}-${project.version}.jar" dest="target/plugin-classes"/>
- <jar destfile="target/jboss-as4-war/plugins/jbedsp-jopr-plugin-${project.version}.jar" basedir="target/plugin-classes"/>
-
- <zip destfile="target/jopr-teiid-embedded-jbas4.war" basedir="target/jboss-as4-war" />
-
+ <property name="product.version" value="${project.version}" />
+ <property name="product.name" value="${project.artifactId}" />
+ <ant antfile="src/assembly/assemble-artifacts.xml" />
</tasks>
-
</configuration>
-
<goals>
<goal>run</goal>
- </goals>
+ </goals>
</execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
<execution>
- <id>assembly-kit-jboss-as5</id>
- <phase>package</phase>
+ <id>copy-dist-wars</id>
+ <phase>process-resources</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
<configuration>
- <tasks>
- <mkdir dir="target/jboss-as5-war"/>
- <unzip src="target/jopr-embedded-jbas5-${org.jboss.jopr.as5.version}.war" dest="target/jboss-as5-war"/>
+ <outputDirectory>${basedir}/target/</outputDirectory>
- <mkdir dir="target/plugin-classes"/>
+ <artifactItems>
+ <!--
+ <artifactItem> <groupId>org.jboss.jopr</groupId>
+ <artifactId>jopr-embedded-jbas4</artifactId>
+ <version>${org.jboss.jopr.as4.version}</version>
+ <type>war</type> <overWrite>true</overWrite> </artifactItem>
+ -->
+ <artifactItem>
+ <groupId>org.jboss.jopr</groupId>
+ <artifactId>jopr-embedded-jbas5</artifactId>
+ <version>${org.jboss.jopr.as5.version}</version>
+ <type>war</type>
+ <overWrite>true</overWrite>
+ </artifactItem>
+ </artifactItems>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
- <unzip src="../jbedsp-plugin/target/distribution/jbedsp-plugin-${project.version}-binaries.jar" dest="target/jboss-as5-war/WEB-INF/lib"/>
- <unzip src="../jbedsp-plugin/target/distribution/jbedsp-embedded-plugin-${project.version}.jar" dest="target/plugin-classes"/>
- <unzip src="target/${project.name}-${project.version}.jar" dest="target/plugin-classes"/>
- <jar destfile="target/jboss-as5-war/plugins/jbedsp-jopr-plugin-${project.version}.jar" basedir="target/plugin-classes"/>
-
- <zip destfile="target/jopr-teiid-embedded-jbas5.war" basedir="target/jboss-as5-war" />
- </tasks>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.ant</groupId>
+ <artifactId>ant</artifactId>
+ <version>${apache.ant.version}</version>
+ </dependency>
+ </dependencies>
+ <executions>
+ <!--
+ <execution> <id>assembly-kit-jboss-as4</id> <phase>package</phase>
+ <configuration> <tasks> <mkdir dir="target/jboss-as4-war"/> <unzip
+ src="target/jopr-embedded-jbas4-${org.jboss.jopr.as4.version}.war"
+ dest="target/jboss-as4-war"/> <mkdir dir="target/plugin-classes"/>
- </configuration>
- <goals>
- <goal>run</goal>
- </goals>
- </execution>
+ <unzip
+ src="../jbedsp-plugin/target/distribution/jbedsp-plugin-${project.version}-binaries.jar"
+ dest="target/jboss-as4-war/WEB-INF/lib"/> <unzip
+ src="../jbedsp-plugin/target/distribution/jbedsp-embedded-plugin-${project.version}.jar"
+ dest="target/plugin-classes"/> <unzip
+ src="target/${project.name}-${project.version}.jar"
+ dest="target/plugin-classes"/> <jar
+ destfile="target/jboss-as4-war/plugins/jbedsp-jopr-plugin-${project.version}.jar"
+ basedir="target/plugin-classes"/> <zip
+ destfile="target/jopr-teiid-embedded-jbas4.war"
+ basedir="target/jboss-as4-war" /> </tasks> </configuration>
+ <goals> <goal>run</goal> </goals> </execution>
+ -->
+
</executions>
</plugin>
--->
-
-
</plugins>
</build>
@@ -262,6 +233,18 @@
<scope>provided</scope> <!-- provided by the agent/plugin-container -->
</dependency>
+ <dependency>
+ <groupId>org.rhq</groupId>
+ <artifactId>rhq-jmx-plugin</artifactId>
+ <version>${org.jboss.jopr.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>mc4j</groupId>
+ <artifactId>org-mc4j-ems</artifactId>
+ <version>1.2.6</version>
+ </dependency>
+
<!--
TODO: This is a fix for the Javac bug requiring annotations to be
available when compiling dependent classes. It is fixed in JDK 6.
@@ -292,56 +275,62 @@
<scope>provided</scope>
</dependency>
- <dependency>
- <groupId>org.jboss.teiid</groupId>
- <artifactId>teiid-client</artifactId>
- </dependency>
<dependency>
<groupId>org.jboss.teiid</groupId>
<artifactId>teiid-client</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.teiid</groupId>
+ <artifactId>teiid-client</artifactId>
<type>test-jar</type>
</dependency>
-
- <dependency>
- <groupId>org.jboss.teiid</groupId>
- <artifactId>teiid-client-jdbc</artifactId>
- </dependency>
+
<dependency>
<groupId>org.jboss.teiid</groupId>
<artifactId>teiid-client-jdbc</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.teiid</groupId>
+ <artifactId>teiid-client-jdbc</artifactId>
<type>test-jar</type>
</dependency>
- <dependency>
- <groupId>org.jboss.teiid</groupId>
- <artifactId>teiid-common-core</artifactId>
- </dependency>
- <dependency>
- <groupId>org.jboss.teiid</groupId>
- <artifactId>teiid-common-core</artifactId>
- <type>test-jar</type>
- </dependency>
-
<dependency>
- <groupId>org.jboss.jopr</groupId>
- <artifactId>jopr-embedded-jbas4</artifactId>
- <type>war</type>
- <version>${org.jboss.jopr.as4.version}</version>
+ <groupId>org.jboss.teiid</groupId>
+ <artifactId>teiid-common-core</artifactId>
</dependency>
<dependency>
+ <groupId>org.jboss.teiid</groupId>
+ <artifactId>teiid-common-core</artifactId>
+ <type>test-jar</type>
+ </dependency>
+
+ <!--
+ <dependency> <groupId>org.jboss.jopr</groupId>
+ <artifactId>jopr-embedded-jbas4</artifactId> <type>war</type>
+ <version>${org.jboss.jopr.as4.version}</version> </dependency>
+ -->
+ <dependency>
<groupId>org.jboss.jopr</groupId>
<artifactId>jopr-embedded-jbas5</artifactId>
<type>war</type>
<version>${org.jboss.jopr.as5.version}</version>
</dependency>
-
+
<dependency>
+ <groupId>org.jboss.integration</groupId>
+ <artifactId>jboss-profileservice-spi</artifactId>
+ <version>5.1.0.CR2</version>
+ </dependency>
+
+ <dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
</dependency>
+
</dependencies>
-</project>
+</project>
\ No newline at end of file
Deleted: branches/JCA/console/src/main/java/org/teiid/rhq/comm/impl/ConnectionImpl.java
===================================================================
--- branches/JCA/console/src/main/java/org/teiid/rhq/comm/impl/ConnectionImpl.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/console/src/main/java/org/teiid/rhq/comm/impl/ConnectionImpl.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,1340 +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.rhq.comm.impl;
-
-import java.lang.reflect.Method;
-import java.net.UnknownHostException;
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Date;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.teiid.adminapi.Admin;
-import org.teiid.adminapi.AdminException;
-import org.teiid.adminapi.AdminObject;
-import org.teiid.adminapi.ConnectorBinding;
-import org.teiid.adminapi.Host;
-import org.teiid.adminapi.ProcessObject;
-import org.teiid.adminapi.QueueWorkerPool;
-import org.teiid.adminapi.Request;
-import org.teiid.adminapi.Session;
-import org.teiid.adminapi.SystemObject;
-import org.teiid.rhq.comm.Component;
-import org.teiid.rhq.comm.Connection;
-import org.teiid.rhq.comm.ConnectionConstants;
-import org.teiid.rhq.comm.ConnectionException;
-import org.teiid.rhq.comm.ConnectionPool;
-import org.teiid.rhq.comm.ExecutedResult;
-import org.teiid.rhq.comm.ConnectionConstants.ComponentType;
-import org.teiid.rhq.comm.ConnectionConstants.ComponentType.Runtime;
-import org.teiid.rhq.comm.ConnectionConstants.ComponentType.Runtime.Queries.Query;
-import org.teiid.rhq.comm.ConnectionConstants.ComponentType.Runtime.System.Metrics;
-import org.teiid.rhq.comm.ConnectionConstants.ComponentType.Runtime.System.Operations;
-import org.teiid.rhq.plugin.HostComponent;
-
-import com.metamatrix.jdbc.MMConnection;
-import com.metamatrix.platform.security.api.MetaMatrixSessionState;
-
-public class ConnectionImpl implements Connection, TeiidConnectionConstants {
-
- // TODO:
- // 1. Change from using LogManager. This writes to the MM Server, the
- // messages should be
- // written to the agent log
- // 2. Need to support connecting via ssl
- // 3. Need to understand the life cycle of a connection
- // a. during discovery
- // b. during monitoring, operations, etc.
- // 4. add post processing for calculated fields in operation results
-
-
- private static final Log log = LogFactory.getLog(ConnectionImpl.class);
-
- public String key = "";
-
- private Properties environmentProps = null;
-
- private Admin adminApi = null;
- private MMConnection mmconn = null;
-
- private ConnectionPool connectionPool = null;
-
- // set when an exception is thrown by the admin api
- // and indicates when close is called, to tell the pool
- // to remove the connection;
- private boolean invalidConnection = false;
-
- protected ConnectionImpl (final String key,
- final Properties envProps,
- final ConnectionPool pool,
- final MMConnection connection) throws SQLException {
- this.connectionPool = pool;
- this.mmconn = connection;
- this.adminApi = this.mmconn.getAdminAPI();
- this.key = key;
- this.environmentProps = envProps;
-
- }
-
- public boolean isValid() {
- return (! this.invalidConnection);
- }
- /**
- * @see org.teiid.rhq.comm.Connection#isAlive()
- */
- public boolean isAlive() {
- try {
- if (adminApi != null) {
- adminApi.getSystem();
- this.invalidConnection=false;
- return true;
- }
- } catch (Throwable e) {
- invalidConnection = true;
- log.error("Error: admin connection for " + key + " is not alive", e); //$NON-NLS-1$ //$NON-NLS-2$
- }
- return false;
- }
-
- /**
- * @see org.teiid.rhq.comm.Connection#close()
- */
- public void close() {
- try {
- if (connectionPool != null) {
- connectionPool.close(this);
- }
-
- } catch (Exception e) {
- log.error("Error returning connection to the connection pool", e); //$NON-NLS-1$
- }
-
- invalidConnection = true;
-
- }
-
-
- /**
- * Called by the factory to close the source connection
- *
- */
-
- protected void closeSource() {
- try {
- if (mmconn != null) {
- mmconn.close();
- }
- } catch (Exception e) {
- log.error("Error closing the admin connection", e); //$NON-NLS-1$
- } finally {
- adminApi = null;
- mmconn = null;
- connectionPool = null;
- environmentProps.clear();
- environmentProps = null;
- this.invalidConnection = true;
-
- }
- }
-
-// public Properties getEnvironment() throws ConnectionException {
-// Properties systemProperties = new Properties();
-// try {
-// Collection processCollection = ConnectionUtil.getAllProcesses(
-// getConnection(), this.getHost().getIdentifier());
-//
-// Iterator processIter = processCollection.iterator();
-// String portList = null;
-//
-// boolean first = true;
-// while (processIter.hasNext()) {
-// ProcessObject process = (ProcessObject) processIter.next();
-// if (first) {
-// first = false;
-// portList = String.valueOf(process.getPort());
-// } else {
-// portList += PORT_DELIM + process.getPort(); //$NON-NLS-1$
-// }
-//
-// }
-//
-// systemProperties.setProperty(ConnectionConstants.USERNAME,
-// environmentProps.getProperty(ConnectionConstants.USERNAME));
-// systemProperties.setProperty(ConnectionConstants.PASSWORD,
-// environmentProps.getProperty(ConnectionConstants.PASSWORD));
-// systemProperties.setProperty(ConnectionConstants.PORTS, portList);
-// environmentProps = (Properties) systemProperties.clone();
-//
-// return systemProperties;
-// } catch (AdminException ae) {
-// invalidConnection = true;
-// throw new ConnectionException(ae.getMessage());
-// } finally {
-// this.resetConnection();
-// }
-// }
-
- public Collection<Component> discoverComponents(String componentType,
- String identifier) throws ConnectionException {
- if (componentType
- .equals(Runtime.Connector.TYPE)) {
- return getConnectors(identifier);
-
-// } else if (componentType
-// .equals(Runtime.Service.TYPE)) {
-// return getServices(identifier);
-
- } else if (componentType
- .equals(Runtime.Process.TYPE)) {
- return getVMs(identifier);
-
- } else if (componentType
- .equals(Runtime.Host.TYPE)) {
- return getAllHosts();
-
-// } else if (componentType
-// .equals(ComponentType.Resource.Service.TYPE)) {
-// return getServicesForConfig(identifier);
-//
-// } else if (componentType
-// .equals(ComponentType.Resource.Connector.TYPE)) {
-// return getConnectorsForConfig(identifier);
-
- }
-// else if (componentType
-// .equals(ComponentType.Runtime.Session.TYPE)) {
-// return getConnectorsForConfig(identifier);
-//
-// }
- return Collections.EMPTY_LIST;
- }
-
-
-
- public void executeOperation(ExecutedResult operationResult,
- final Map valueMap) throws ConnectionException {
-
- if (operationResult.getComponentType().equals(Runtime.Connector.TYPE)) {
- executeConnectorOperation(operationResult, operationResult.getOperationName(), valueMap);
- } else if (operationResult.getComponentType().equals(ConnectionConstants.ComponentType.Runtime.System.TYPE)) {
- executeSystemOperation(operationResult, operationResult.getOperationName(), valueMap);
- } else if (operationResult.getComponentType().equals( Runtime.Process.TYPE)) {
- executeProcessOperation(operationResult, operationResult.getOperationName(), valueMap);
- } else if (operationResult.getComponentType().equals(org.teiid.rhq.comm.ConnectionConstants.ComponentType.Runtime.Host.TYPE)) {
- executeHostOperation(operationResult, operationResult.getOperationName(), valueMap);
- } else if (operationResult.getComponentType().equals(org.teiid.rhq.comm.ConnectionConstants.ComponentType.Runtime.Session.TYPE)) {
- executeSessionOperation(operationResult, operationResult.getOperationName(), valueMap);
- } else if (operationResult.getComponentType().equals(org.teiid.rhq.comm.ConnectionConstants.ComponentType.Runtime.Queries.TYPE)) {
- executeQueriesOperation(operationResult, operationResult.getOperationName(), valueMap);
- }
- }
-
-
-
- private void executeSystemOperation(ExecutedResult operationResult, final String operationName, final Map valueMap)
- throws ConnectionException {
- Object resultObject = new Object();
-
- if (operationName.equals(Operations.BOUNCE_SYSTEM)) {
- Boolean waitUntilFinished = (Boolean)valueMap.get(ConnectionConstants.ComponentType.Operation.Value.WAIT_UNTIL_FINISHED);
- bounceSystem(waitUntilFinished);
- }else if (operationName.equals(Operations.GET_LONGRUNNINGQUERIES)) {
- Boolean includeSourceQueries = (Boolean)valueMap.get(ConnectionConstants.ComponentType.Operation.Value.INCLUDE_SOURCE_QUERIES);
- Integer longRunningValue = (Integer)valueMap.get(ConnectionConstants.ComponentType.Operation.Value.LONG_RUNNING_QUERY_LIMIT);
- List fieldNameList = operationResult.getFieldNameList();
- resultObject = getLongRunningQueries(includeSourceQueries, longRunningValue, fieldNameList);
- operationResult.setContent((List)resultObject);
- }else if (operationName.equals(ComponentType.Operation.KILL_REQUEST)) {
- String requestID = (String)valueMap.get(ConnectionConstants.ComponentType.Operation.Value.REQUEST_ID);
- cancelRequest(requestID);
- }else if (operationName.equals(ComponentType.Operation.GET_VDBS)) {
- List fieldNameList = operationResult.getFieldNameList();
- resultObject = getVDBs(fieldNameList);
- operationResult.setContent((List)resultObject);
- }else if (operationName.equals(ComponentType.Operation.GET_PROPERTIES)) {
- String identifier = (String)valueMap.get(ConnectionConstants.IDENTIFIER);
- Properties props = getProperties(ConnectionConstants.ComponentType.Runtime.System.TYPE, identifier);
- resultObject = createReportResultList(props);
- operationResult.setContent((List)resultObject);
- }
-
- }
-
- private void executeProcessOperation(ExecutedResult operationResult, final String operationName, final Map valueMap)
- throws ConnectionException {
- Object resultObject = new Object();
-
- if (operationName.equals(ComponentType.Operation.GET_PROPERTIES)) {
- String identifier = (String)valueMap.get(ConnectionConstants.IDENTIFIER);
- Properties props = getProperties(Runtime.Process.TYPE, identifier);
- resultObject = createReportResultList(props);
- operationResult.setContent((List)resultObject);
- }
- }
-
- private void executeHostOperation(ExecutedResult operationResult, final String operationName, final Map valueMap)
- throws ConnectionException {
- Object resultObject = new Object();
-
- if (operationName.equals(org.teiid.rhq.comm.ConnectionConstants.ComponentType.Runtime.Host.Operations.GET_HOSTS)) {
- String identifier = (String)valueMap.get(ConnectionConstants.IDENTIFIER);
- Properties props = getProperties(org.teiid.rhq.comm.ConnectionConstants.ComponentType.Runtime.Host.TYPE, identifier);
- resultObject = createReportResultList(props);
- operationResult.setContent((List)resultObject);
- }
- }
-
- private void executeConnectorOperation(ExecutedResult operationResult, final String operationName, final Map valueMap)
- throws ConnectionException {
- Object resultObject = new Object();
- String identifier = (String)valueMap.get(ConnectionConstants.IDENTIFIER);
-
- if (operationName.equals(Runtime.Connector.Operations.RESTART_CONNECTOR)) {
- startConnector(identifier);
- }else if (operationName.equals(Runtime.Connector.Operations.STOP_CONNECTOR)) {
- Boolean stopNow = (Boolean)valueMap.get(ConnectionConstants.ComponentType.Operation.Value.STOP_NOW);
- stopConnector(identifier, stopNow);
- }else if (operationName.equals(ComponentType.Operation.GET_PROPERTIES)) {
- Properties props = getProperties(Runtime.Connector.TYPE, identifier);
- resultObject = createReportResultList(props);
- operationResult.setContent((List)resultObject);
- }
- }
-
- private void executeSessionOperation(ExecutedResult operationResult, final String operationName, final Map valueMap)
- throws ConnectionException {
- if (operationName.equals(org.teiid.rhq.comm.ConnectionConstants.ComponentType.Runtime.Session.Query.GET_SESSIONS)) {
- Object resultObject = new Object();
-
- List fieldNameList = operationResult.getFieldNameList();
- resultObject = getSessions(false, fieldNameList);
- operationResult.setContent((List)resultObject);
- }
-
-
- }
-
- private void executeQueriesOperation(ExecutedResult operationResult, final String operationName, final Map valueMap)
- throws ConnectionException {
-
- if (operationName.equals(Query.GET_QUERIES)) {
- Object resultObject = new Object();
-
- // Boolean includeSourceQueries = (Boolean)valueMap.get(ConnectionConstants.ComponentType.Operation.Value.INCLUDE_SOURCE_QUERIES);
- List fieldNameList = operationResult.getFieldNameList();
- resultObject = getRequests(false, fieldNameList);
- operationResult.setContent((List)resultObject);
- }
- }
-
-
- public Object getMetric(String componentType, String identifier, String metric, Map valueMap)
- throws ConnectionException {
- Object resultObject = new Object();
-
- if (componentType.equals(ComponentType.Runtime.System.TYPE)){
- resultObject = getSystemMetric(componentType, metric, valueMap);
- }else if (componentType.equals(Runtime.Process.TYPE)){
- resultObject = getProcessMetric(componentType, identifier, metric, valueMap);
- }
-
-
- return resultObject;
- }
-
- private Object getSystemMetric(String componentType, String metric,
- Map valueMap) throws ConnectionException {
-
- Object resultObject = new Object();
-
- if (metric.equals(Metrics.QUERY_COUNT)) {
- resultObject = new Double(getQueryCount().doubleValue());
- } else {
- if (metric.equals(Metrics.SESSION_COUNT)) {
- resultObject = new Double(getSessionCount().doubleValue());
- } else {
- if (metric.equals(Metrics.LONG_RUNNING_QUERIES)) {
- Integer longRunningQueryLimit = (Integer)valueMap.get(ConnectionConstants.ComponentType.Operation.Value.LONG_RUNNING_QUERY_LIMIT);
- Collection<Request> longRunningQueries = getLongRunningQueries(false, longRunningQueryLimit, null);
- resultObject = new Double(longRunningQueries.size());
- }
- }
- }
-
- return resultObject;
- }
-
-
- private Object getProcessMetric(String componentType, String identifier, String metric,
- Map valueMap) throws ConnectionException {
-
- Object resultObject = new Object();
-
- if (metric.equals(ComponentType.Metric.HIGH_WATER_MARK)) {
- resultObject = new Double(getHighWatermark(identifier));
- }
-
- return resultObject;
- }
-
- public Boolean isAvailable(String componentType, String identifier)
- throws ConnectionException {
-
- try {
-
- Admin conn = this.getConnection();
- if (componentType
- .equalsIgnoreCase(Runtime.Connector.TYPE)) {
- ConnectorBinding cb = ConnectionUtil.getConnector(conn, identifier);
- if (cb.getState() == ConnectorBinding.STATE_OPEN) {
- return true;
- }
-// } else if (componentType
-// .equalsIgnoreCase(Runtime.Service.TYPE)) {
-// Service svc = ConnectionUtil.getService(conn, identifier);
-// if (svc.getState() == Service.STATE_OPEN) {
-// return true;
-// }
-
- } else if (componentType
- .equalsIgnoreCase(Runtime.Process.TYPE)) {
- ProcessObject vm = ConnectionUtil.getProcess(conn, identifier);
- if (vm.isRunning()) {
- return true;
- }
- } else if (componentType
- .equalsIgnoreCase(Runtime.Host.TYPE)) {
- Host host=ConnectionUtil.getHost(identifier, conn);
- if (host.isRunning()) {
- return true;
- }
- } else if (componentType
- .equalsIgnoreCase(Runtime.System.TYPE)) {
- if (conn.getSystem() != null) {
- return true;
- }
- }
- } catch (AdminException ae) {
- invalidConnection = true;
-
- log.error(ae.getMessage());
- }
-
-
- return false;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see com.metamatrix.admin.api.rhq.connection.Connection#getProperty(java.lang.String,
- * java.lang.String)
- */
- public String getProperty(final String identifier, final String property)
- throws ConnectionException {
-
- String propertyValue = null;
-
-
-// if (identifier.equals(ConnectionConstants.SYSTEM_NAME_IDENTIFIER)) {
-// Resource mmResource = (Resource) getResource(identifier,
-// getConnection());
-// propertyValue = mmResource.getPropertyValue(property);
-// }
-
- return propertyValue;
-
- }
-
- /*
- * (non-Javadoc)
- *
- * @see com.metamatrix.admin.api.rhq.connection.Connection#getInstallationDirectory()
- */
- public String getKey() {
- return key;
- }
-
- /**
- * @see org.teiid.rhq.comm.Connection#getHost()
- */
- public Component getHost(String identifier) throws ConnectionException {
-
- try {
-
- return mapHost( ConnectionUtil.getHost(identifier, getConnection()) );
- } catch (AdminException e) {
- invalidConnection = true;
- throw new ConnectionException(e.getMessage());
- }
-
- }
-
- public Collection getAllHosts() throws ConnectionException {
- Collection<Component> hostObjs = null;
-// try {
-// Collection<Host> hosts = getConnection().getHosts("*");
-// hostObjs = new ArrayList(hosts.size());
-//
-// for (Iterator<Host>it=hosts.iterator(); it.hasNext();) {
-// Host h = it.next();
-//
-// ComponentImpl chost = mapHost(h);
-//
-// hostObjs.add(chost);
-// }
-// } catch (AdminException e) {
-// invalidConnection = true;
-// throw new ConnectionException(e.getMessage());
-// }
-
- return hostObjs;
- }
-
- private ComponentImpl mapHost(Host h) throws ConnectionException {
- ComponentImpl chost = createComponent(h);
-
- chost.addProperty(HostComponent.INSTALL_DIR, h.getPropertyValue(Host.HOST_DIRECTORY));
- return chost;
-
- }
-
-
- /**
- * @see org.teiid.rhq.comm.Connection#getHost()
- */
-// public Collection<Component> getServices(String vmIdentifier) throws ConnectionException {
-//
-// try {
-//
-// Collection<Service> servicesCollection = getConnection().getServices(vmIdentifier +"|*");
-//
-// Iterator<Service> iterSvc = servicesCollection.iterator();
-//
-// Collection<Component> svccomponents = new ArrayList<Component>(servicesCollection.size());
-// while (iterSvc.hasNext()) {
-// Service svc = iterSvc.next();
-//
-// Component comp = mapService(svc);
-//
-// svccomponents.add(comp);
-// }
-// return svccomponents;
-//
-// } catch (AdminException e) {
-// invalidConnection = true;
-// throw new ConnectionException(e.getMessage());
-// }
-//
-// }
-//
-
-// public Collection<Component> getServicesForConfig(String identifier)
-// throws ConnectionException {
-// try {
-//
-// Collection<Service> servicesCollection = getConnection().getServicesToConfigure(identifier);
-//
-// Iterator<Service> iterSvc = servicesCollection.iterator();
-//
-// Collection<Component> svccomponents = new ArrayList<Component>(servicesCollection.size());
-// while (iterSvc.hasNext()) {
-// Service svc = iterSvc.next();
-//
-// Component comp = mapService(svc);
-//
-// svccomponents.add(comp);
-// }
-// return svccomponents;
-//
-// } catch (AdminException e) {
-// invalidConnection = true;
-// throw new ConnectionException(e.getMessage());
-// }
-//
-// }
-
- public Collection<Component> getVMs(String hostIdentifier) throws ConnectionException {
-
- try {
-
- Collection processes = getConnection().getProcesses(hostIdentifier + "|*");
-
- Iterator<ProcessObject> iterVMs = processes.iterator();
- log.info("Processing processes..."); //$NON-NLS-1$
-
- Collection vmcomponents = new ArrayList(processes.size());
- while (iterVMs.hasNext()) {
- // ProcessObject processObject = iterHostProcesses.next();
- ProcessObject vm = iterVMs.next();
-
- Component comp = mapProcess(vm);
-
- vmcomponents.add(comp);
- }
-
- return vmcomponents;
- } catch (AdminException ae) {
- invalidConnection = true;
- throw new ConnectionException(ae.getMessage());
-
- }
- }
-
- private Component mapProcess(ProcessObject vm) throws ConnectionException {
- if (vm == null) return null;
-
- ComponentImpl comp = createComponent(vm);
- comp.setPort(vm.getPropertyValue(ProcessObject.SERVER_PORT));
-
- return comp;
-
- }
-
- /**
- * @see com.metamatrix.rhq.comm.Connection#getVMs()
- */
-// public Collection<Component> getVMs() throws ConnectionException {
-//
-// return getVMs(this.getHost().getIdentifier());
-//
-// }
-
- /**
- * Returns a collection of all VDBs in the system.
- * @param fieldNameList - operaration result fields if required. May be null.
- *
- * @return Collection
- */
- public Collection getVDBs(List fieldNameList)
- throws ConnectionException {
-
- Collection vdbCollection = Collections.EMPTY_LIST;
-
- try {
-
- vdbCollection = getConnection().getVDBs("*");
- } catch (AdminException ae) {
- invalidConnection = true;
- throw new ConnectionException(ae.getMessage());
-
- }
-
- if (fieldNameList != null) {
- Collection reportResultCollection = createReportResultList(
- fieldNameList, vdbCollection.iterator());
- return reportResultCollection;
- } else {
- return vdbCollection;
- }
- }
-
-
-
-// public Collection<Component> getConnectorsForConfig(String identifier)
-// throws ConnectionException {
-//
-// Collection<Component> connectors = Collections.EMPTY_LIST;
-//
-// try {
-// Collection connectorsCollection = getConnection().getConnectorBindingsToConfigure(identifier);
-//
-// Iterator<ConnectorBinding> iterConnectors = connectorsCollection.iterator();
-// log.info("Getting connector bindings for configuration...");//$NON-NLS-1$
-//
-// while (iterConnectors.hasNext()) {
-// // ProcessObject processObject = iterHostProcesses.next();
-// ConnectorBinding connectorBinding = iterConnectors.next();
-//
-// log.debug("Found connector binding " + connectorBinding.getName());//$NON-NLS-1$
-//
-// Component comp = mapConnector(connectorBinding);
-//
-// connectors.add(comp);
-// }
-// return connectors;
-// } catch (AdminException e) {
-// invalidConnection = true;
-// throw new ConnectionException(e.getMessage());
-// }
-//
-// }
-
- public Collection<Component> getConnectors(String vmIdentifier) throws ConnectionException {
-
- Collection<Component> connectors = Collections.EMPTY_LIST;
- try {
-
- Collection mmConnectors = getConnection().getConnectorBindings(vmIdentifier +"|*");
-
- connectors = new ArrayList(mmConnectors != null ? mmConnectors
- .size() : 0);
-
- Iterator<ConnectorBinding> iterConnectors = mmConnectors.iterator();
- log.info("Processing connector bindings...");//$NON-NLS-1$
-
- while (iterConnectors.hasNext()) {
- // ProcessObject processObject = iterHostProcesses.next();
- ConnectorBinding connectorBinding = iterConnectors.next();
-
- log
- .info("Found connector binding " + connectorBinding.getName());//$NON-NLS-1$
-
- Component comp = mapConnector(connectorBinding);
-
- connectors.add(comp);
- }
- } catch (AdminException ae) {
- invalidConnection = true;
- throw new ConnectionException(ae.getMessage());
- }
- return connectors;
- }
-
- private Component getConnector(String connectorIdentifier) throws ConnectionException {
-
-
- try {
- ConnectorBinding connectorBinding = ConnectionUtil.getConnector(getConnection(), connectorIdentifier);
- return mapConnector(connectorBinding);
-
- } catch (AdminException ae) {
- invalidConnection = true;
- throw new ConnectionException(ae.getMessage());
- }
- }
-
-// private Component getService(String svcIdentifier) throws ConnectionException {
-//
-//
-// try {
-// Service svc = ConnectionUtil.getService(getConnection(), svcIdentifier);
-// return mapService(svc);
-//
-// } catch (AdminException ae) {
-// invalidConnection = true;
-// throw new ConnectionException(ae.getMessage());
-// }
-//}
-
- private Component mapConnector(ConnectorBinding connectorBinding) throws ConnectionException {
- ComponentImpl comp = createComponent(connectorBinding);
-
- comp.setDescription(connectorBinding.getDescription());
-
- return comp;
-
- }
-
-// private Component mapService(Service service) throws ConnectionException {
-// ComponentImpl comp = createComponent(service);
-//
-// comp.setDescription(service.getDescription());
-//
-// return comp;
-//
-// }
-
- private Component mapSession(Session session) throws ConnectionException {
- ComponentImpl comp = null;
-
- try {
- Class clzz = Class.forName(ComponentImpl.class.getName(), true, this.connectionPool.getClassLoader());
- comp = (ComponentImpl) clzz.newInstance();
-
- comp.setIdentifier(session.getIdentifier());
- comp.setName(session.getSessionID());
- comp.setSystemKey(getKey());
- comp.setVersion("1.0"); //$NON-NLS-1$
-
- comp.setProperties(session.getProperties());
-
-
- } catch (ClassNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- throw new ConnectionException(e.getMessage());
- } catch (InstantiationException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- throw new ConnectionException(e.getMessage());
- } catch (IllegalAccessException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- throw new ConnectionException(e.getMessage());
- }
- return comp;
-
-
- }
-
- // *******************
- // Support Methods
- // *******************
-
- public Boolean isSystemAvailable() throws ConnectionException {
-
- return this.isAlive();
-
- }
-
- private String getSystemName(final Admin adminApi) throws ConnectionException {
- return "NoSystemName";
-// Resource mmJGroups = (Resource) getResource("JGroups", adminApi); //$NON-NLS-1$
-// return mmJGroups.getPropertyValue(SYSTEM_NAME_PROPERTY);
- }
-
-
- /**
- * @throws Exception
- */
- // static
-// private Integer getQueuedThreadCount(Admin adminApi) throws Exception {
-//
-// ProcessObject process = ConnectionUtil.getProcess(getConnection(), processIdentifier);
-//
-// return process.getQueueWorkerPool().getQueued();
-//
-// }
-
- /**
- * @throws Exception
- */
- private void startConnector(final String connectorBindingIdentifier) throws ConnectionException {
- try {
- (getConnection())
- .startConnectorBinding(connectorBindingIdentifier);
- } catch (AdminException ae) {
- invalidConnection = true;
- throw new ConnectionException(ae.getMessage());
-
- }
- }
-
- /**
- * @throws Exception
- */
- private void bounceSystem(final boolean waitUntilFinished) throws ConnectionException {
- try {
- getConnection().restart();
- } catch (AdminException err) {
- throw new ConnectionException(err.getMessage());
- }
- }
-
- /**
- * @throws Exception
- */
- private void stopConnector(String connectorBindingIdentifier, boolean hardStop)
- throws ConnectionException {
- try {
- getConnection().stopConnectorBinding(
- connectorBindingIdentifier, hardStop);
- } catch (AdminException ae) {
- invalidConnection = true;
- throw new ConnectionException(ae.getMessage());
-
- }
- }
-
- /**
- * @throws Exception
- */
- private static boolean isReachable(final String host, int port)
- throws UnknownHostException {
- return NetUtils.getInstance().isPortAvailable(host, port);
- }
-
- /**
- * @throws Exception
- */
- // static
-// private Integer getThreadPoolThreadCount(final Admin adminApi)
-// throws ConnectionException {
-// Integer threadCount = new Integer(0);
-//
-// ProcessObject process = ConnectionUtil.getProcess(getConnection(), processIdentifier);
-//
-// QueueWorkerPool pool = null;
-// pool = process.getQueueWorkerPool();
-// threadCount = pool.getThreads();
-// return threadCount;
-// }
-
- private Integer getQueryCount() throws ConnectionException {
-
- Integer count = new Integer(0);
-
- Collection<Request> requestsCollection = null;
- requestsCollection = getRequests(false, null);
-
- if (requestsCollection != null && !requestsCollection.isEmpty()) {
- count = requestsCollection.size();
- }
-
- return count;
- }
-
- protected Collection<Request> getRequests(boolean includeSourceQueries, List fieldNameList) throws ConnectionException {
-
- Collection<Request> requestsCollection = null;;
-
- try {
- Admin conn = getConnection();
- requestsCollection = conn.getRequests(WILDCARD);
- if (includeSourceQueries){
- Collection<Request> sourceRequestsCollection = Collections.EMPTY_LIST;
- sourceRequestsCollection = conn.getSourceRequests(WILDCARD);
- requestsCollection.addAll(sourceRequestsCollection);
- }
- } catch (AdminException ae) {
- invalidConnection = true;
- throw new ConnectionException(ae.getMessage());
-
- } catch (Exception e) {
- final String msg = "Exception getting the AdminApi in getRequests: "; //$NON-NLS-1$
- log.error(msg, e);
- throw new ConnectionException(msg);
- }
-
- if (fieldNameList!=null){
- Collection reportResultCollection = createReportResultList(fieldNameList, requestsCollection.iterator());
- return reportResultCollection;
- }else{
- return requestsCollection;
- }
-
- }
-
- protected void cancelRequest(String requestID) throws ConnectionException {
-
- try {
- getConnection().cancelRequest(requestID);
- } catch (AdminException ae) {
- invalidConnection = true;
- throw new ConnectionException(ae.getMessage());
-
- } catch (Exception e) {
- final String msg = "Exception getting the AdminApi in getRequests: "; //$NON-NLS-1$
- log.error(msg, e);
- throw new ConnectionException(msg);
- }
-
- }
-
-// public Collection<Request> postProcessing(String operationName, Collection reportResultCollection) throws ConnectionException {
-//
-// if (operationName.equals(ConnectionConstants.ComponentType.Operation.GET_QUERIES)){
-// Iterator resultIter = reportResultCollection.iterator();
-// while (resultIter.hasNext()){
-// Map row = (Map)resultIter.next();
-// String createDateString = row.get("Createdate");
-// Date createDate = new Date(createDateString);
-//
-// Date current = new Date(System.nanoTime());
-// GregorianCalendar cal = new GregorianCalendar();
-// cal.add()
-// Date elapsedTime = Calendar.getInstance().add( createDate)
-// }
-// String createDateString = reportResultList.
-// }
-// return reportResultList;
-// }
-
- protected Collection<Request> getLongRunningQueries(boolean includeSourceQueries, int longRunningValue, List fieldNameList) throws ConnectionException {
-
- Collection<Request> requestsCollection = null;
-
- double longRunningQueryTimeDouble = new Double(longRunningValue);
-
- try {
- requestsCollection = getRequests(includeSourceQueries, null);
- } catch (Exception e) {
- final String msg = "AdminException getting the AdminApi in getLongRunningQueries: "; //$NON-NLS-1$
- log.error(msg, e);
- throw new ConnectionException(msg);
- }
-
- Iterator<Request> requestsIter = requestsCollection.iterator();
- while (requestsIter.hasNext()) {
- Request request = requestsIter.next();
- Date startTime = request.getProcessingDate();
- // Get msec from each, and subtract.
- long runningTime = Calendar.getInstance().getTimeInMillis() - startTime.getTime();
-
- if (runningTime < longRunningQueryTimeDouble) {
- requestsIter.remove();
- }
- }
-
- if (fieldNameList!=null){
- Collection reportResultCollection = createReportResultList(fieldNameList, requestsCollection.iterator());
- return reportResultCollection;
- }else{
- return requestsCollection;
- }
- }
-
- private Integer getSessionCount() throws ConnectionException {
-
- Collection<Session> activeSessionsCollection = Collections.EMPTY_LIST;
- try {
- activeSessionsCollection = getActiveSessions();
- } catch (AdminException ae) {
- invalidConnection = true;
- throw new ConnectionException(ae.getMessage());
-
- } catch (Exception e) {
- final String msg = "AdminException getting the AdminApi in getSessionCount: "; //$NON-NLS-1$
- log.error(msg, e);
- throw new ConnectionException(e.getMessage());
- }
-
- return activeSessionsCollection.size();
- }
-
- private Collection<Session> getActiveSessions(String identifier) throws AdminException {
- Collection allSessionsCollection = getConnection().getSessions(identifier);
- Collection activeSessionsCollection = new ArrayList();
-
- Iterator<Session> allSessionsIter = allSessionsCollection
- .iterator();
- while (allSessionsIter.hasNext()) {
- Session session = allSessionsIter.next();
- if (session.getState() == MetaMatrixSessionState.ACTIVE) {
- activeSessionsCollection.add(session);
- }
- }
-
- return activeSessionsCollection;
- }
-
- private Collection<Session> getActiveSessions() throws AdminException {
- Collection allSessionsCollection = getConnection().getSessions(WILDCARD);
- Collection activeSessionsCollection = new ArrayList();
-
- Iterator<Session> allSessionsIter = allSessionsCollection
- .iterator();
- while (allSessionsIter.hasNext()) {
- Session session = allSessionsIter.next();
- if (session.getState() == MetaMatrixSessionState.ACTIVE) {
- activeSessionsCollection.add(session);
- }
- }
-
- return activeSessionsCollection;
- }
-
- public Collection getSessions(boolean activeOnly, List fieldNameList) throws ConnectionException {
-
- Collection sessionsCollection = Collections.EMPTY_LIST;
- try {
- if (activeOnly){
- sessionsCollection = getActiveSessions();
- }else{
- sessionsCollection = getConnection().getSessions(WILDCARD);
- }
- } catch (AdminException ae) {
- invalidConnection = true;
- throw new ConnectionException(ae.getMessage());
-
- } catch (Exception e) {
- final String msg = "AdminException getting the AdminApi in getSessions: "; //$NON-NLS-1$
- log.error(msg, e);
- throw new ConnectionException(e.getMessage());
- }
-
- if (sessionsCollection != null && sessionsCollection.size() > 0) {
- Iterator sessionsIter = sessionsCollection.iterator();
-
- return createReportResultList(fieldNameList, sessionsIter);
- }
-
- return Collections.EMPTY_LIST;
- }
-
- private Collection createReportResultList(Properties props) {
- Collection reportResultList = new ArrayList();
-
- //Create list from properties and sort
- Enumeration<Object> keys = props.keys();
- List<String> elementList = new ArrayList();
- while (keys.hasMoreElements()) {
- elementList.add((String) keys.nextElement());
- }
-
- Collections.sort(elementList);
-
- Iterator propsKeySetIter = elementList.iterator();
-
- while (propsKeySetIter.hasNext()) {
- Map reportValueMap = new HashMap();
- String name = (String)propsKeySetIter.next();
- Object value = props.get(name);
- reportValueMap.put(ConnectionConstants.ComponentType.Operation.Value.NAME, name);
- reportValueMap.put(ConnectionConstants.ComponentType.Operation.Value.VALUE, value);
- reportResultList.add(reportValueMap);
- }
- return reportResultList;
- }
-
- private Collection createReportResultList(List fieldNameList, Iterator sessionsIter) {
- Collection reportResultList = new ArrayList();
-
- while (sessionsIter.hasNext()) {
- Object object = sessionsIter.next();
-
- Class cls = null;
- try {
- cls = object.getClass();
- Iterator methodIter = fieldNameList.iterator();
- Map reportValueMap = new HashMap();
- while (methodIter.hasNext()) {
- String fieldName = (String) methodIter.next();
- String methodName = fieldName;
- Method meth = cls.getMethod(methodName, (Class[]) null);
- Object retObj = meth.invoke(object, (Object[]) null);
- reportValueMap.put(fieldName, retObj);
- }
- reportResultList.add(reportValueMap);
- } catch (Throwable e) {
- System.err.println(e);
- }
- }
- return reportResultList;
- }
-
- private Integer getHighWatermark(String processIdentifier) throws ConnectionException {
-
- try {
-
- ProcessObject process = ConnectionUtil.getProcess(getConnection(), processIdentifier);
- QueueWorkerPool pool = null;
- pool = process.getQueueWorkerPool();
- return pool.getTotalHighwaterMark();
-
- } catch (AdminException e) {
- // TODO Auto-generated catch block
- throw new ConnectionException(e.getMessage());
-
- }
-
- }
-
- /**
- * @param resourcePrefix
- * @return
- */
-// private Object getResource(final String resourceIdentifier,
-// final Admin adminApi) throws ConnectionException {
-//
-// Object resource = null;
-// try {
-//
-// Collection<Object> resourceCollection = getConnection()adminApi
-// .getResources(resourceIdentifier);
-// // Collection<Object> processCollection = ((ServerMonitoringAdmin)
-// // adminApi)
-// // .getProcesses(AdminObject.WILDCARD);
-// Iterator<Object> resourceIter = resourceCollection.iterator();
-//
-// while (resourceIter.hasNext()) {
-// resource = resourceIter.next();
-// }
-// } catch (AdminException ae) {
-// invalidConnection = true;
-// throw new ConnectionException(ae.getMessage());
-//
-//
-// } catch (Exception e) {
-// final String msg = "LogonException getting the AdminApi in getResource: "; //$NON-NLS-1$
-// log.error(msg, e);
-// }
-//
-// return resource;
-// }
-
-
- /**
- * @param resourcePrefix
- * @return
- */
- private Component getProcess(final String processIdentifier) throws ConnectionException {
-
- ProcessObject process = null;
- try {
-
- process = ConnectionUtil.getProcess(getConnection(), processIdentifier);
-
- return mapProcess(process);
-
- } catch (Exception e) {
- final String msg = "AdminException in getProcess: "; //$NON-NLS-1$
- log.error(msg, e);
- throw new ConnectionException(e.getMessage());
- }
-
- }
-
- /**
- * Return the properties for component of a specified resource type
- * @param resourceType
- * @param identifier
- * @return
- * @throws ConnectionException
- * @since 5.5.3
- */
-
- public Properties getProperties(String resourceType, String identifier)
- throws ConnectionException {
- String className = null;
- Component ao = null;
- if (resourceType.equalsIgnoreCase(org.teiid.rhq.comm.ConnectionConstants.ComponentType.Runtime.Host.TYPE) ) {
- className = Host.class.getName();
- ao = this.getHost(identifier);
-
- } else if (resourceType.equalsIgnoreCase(ConnectionConstants.ComponentType.Runtime.System.TYPE) ) {
- className = SystemObject.class.getName();
-
-
- } else if (resourceType.equalsIgnoreCase(Runtime.Process.TYPE) ) {
- className = ProcessObject.class.getName();
-
- ao = this.getProcess(identifier);
-
- } else if (resourceType.equalsIgnoreCase(Runtime.Connector.TYPE) ) {
- className = ConnectorBinding.class.getName();
-
- ao = this.getConnector(identifier);
-// } else if (resourceType.equalsIgnoreCase(Runtime.Service.TYPE) ) {
-// className = Service.class.getName();
-//
-// ao = this.getService(identifier);
- }
-
- if (ao == null) {
- throw new ConnectionException("Unable to get properties for invalid resource " + identifier + " of resource type " + resourceType); //$NON-NLS-1$
- }
-
- Properties props = null;
- try {
- Map defaults = ConnectionUtil.getPropertiesDefinitions(getConnection(), resourceType, className, identifier);
-
- props = new Properties();
- props.putAll(defaults);
-
- // overlay the defined properties for the component object over the defaults
- props.putAll(ao.getProperties());
- } catch (AdminException ae) {
- invalidConnection = true;
- throw new ConnectionException(ae.getMessage());
-
- }
-
- return props;
-
- }
- /*
-
- /**
- * Returns the system name for the current connection
- *
- * @param componentName
- * @param operationName
- * @param parameters
- * @return systemName
- */
-// private String getProperty() throws Exception {
-//
-// String systemName = "NoSystemName";
-
-
-// Resource mmJGroups = (Resource) getResource("JGroups", getConnection()); //$NON-NLS-1$
-// systemName = mmJGroups.getPropertyValue("metamatrix.cluster.name"); //$NON-NLS-1$
-//
-// return systemName;
-//
-// }
-
- private Admin getConnection() {
- return adminApi;
-
-
- }
-
- private ComponentImpl createComponent(AdminObject object) throws ConnectionException {
- if (object != null) {
- return createComponent(object.getIdentifier(), object.getName(), object.getProperties());
- }
- return createComponent("NOTSET", "NAMENOTSET", null);
-
-
-
- }
-
-
- private ComponentImpl createComponent(String identifier, String name, Properties props) throws ConnectionException {
-
- ComponentImpl comp = null;
- try {
- Class clzz = Class.forName(ComponentImpl.class.getName(), true, this.connectionPool.getClassLoader());
- comp = (ComponentImpl) clzz.newInstance();
-
- comp.setIdentifier(identifier);
- comp.setName(name);
- comp.setSystemKey(getKey());
- comp.setVersion("1.0"); //$NON-NLS-1$
-
- if (props != null) {
- comp.setProperties(props);
- }
-
-
- } catch (ClassNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- throw new ConnectionException(e.getMessage());
- } catch (InstantiationException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- throw new ConnectionException(e.getMessage());
- } catch (IllegalAccessException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- throw new ConnectionException(e.getMessage());
- }
- return comp;
-
- }
-
-
-}
Deleted: branches/JCA/console/src/main/java/org/teiid/rhq/comm/impl/ConnectionUtil.java
===================================================================
--- branches/JCA/console/src/main/java/org/teiid/rhq/comm/impl/ConnectionUtil.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/console/src/main/java/org/teiid/rhq/comm/impl/ConnectionUtil.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,341 +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.rhq.comm.impl;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.StringTokenizer;
-
-import org.teiid.adminapi.Admin;
-import org.teiid.adminapi.AdminException;
-import org.teiid.adminapi.ConnectorBinding;
-import org.teiid.adminapi.Host;
-import org.teiid.adminapi.ProcessObject;
-import org.teiid.adminapi.PropertyDefinition;
-import org.teiid.adminapi.Service;
-import org.teiid.rhq.comm.ConnectionException;
-import org.teiid.rhq.comm.ConnectionConstants.ComponentType.Runtime.Process;
-
-
-/**
- * @since 4.3
- */
-public class ConnectionUtil implements TeiidConnectionConstants {
-
- private static Map<String, Map<String, Object>> defCache = new HashMap<String, Map<String, Object>>();
-
- /**
- * Call to find a host. The hostName passed in can be any of the
- * the following:
- * <li>The fully qualified host name</li>
- * <li>The short name of the fully qualified host name</li>
- * <li>The IP address of box</li>
- * <li>The bind address defined in the host properties</li>
- * <li>The general reference of localhost</li>
- *
- * The order of resolution will be as follows:
- * 1. Try to match the IPAddress resolved host names to what is configured.
- * <li>hostName matches to configured host name</li>
- * <li>resolve hostName to an InetAddress and use its' full host name to match configured host(s)</li>
- * <li>resolve hostName to an InetAddress and use its' short host name to match configured host(s)</li>
- * <li>In cases where the <code>hostName</code> represents the short name and will not resolve to a longer name,
- * convert the <code>Host</code> full name to the short name to try to match.</li>
- * <li>match hostname to the physical address for a configurated host</li>
- * <li>match hostname to the bindaddress for a configurated host</li>
- * 2. Reverse the match, try matching what's configurated to host name passed
- * <li>try using the short name of configured host to match</li>
- * <li>try using the physical address of the configurated host match</li>
- * <li>try using the bind address of the configured host to match</li>
- *
- * NOTE: This logic is duplicated from the CurrentConfiguration.findHost(). That method could not
- * be used due to the different <code>Host</code> object types that are used.
- *
- * @param hostName
- * @return Host
- * @throws Exception
- * @since 5.5
- */
-// public static Host findHost(String hostName, ServerAdmin adminapi) throws AdminException {
-//
-// Host h = null;
-//
-// try {
-// // first try to match the name pas host by what was passed before
-// // substituting something else
-// h = getHost(hostName, adminapi);
-// if (h != null) {
-// return h;
-// }
-//
-// h = getHost(InetAddress.getLocalHost().getHostName(), adminapi);
-// if (h != null) {
-// return h;
-// }
-//
-//
-// // the hostName could be an IP address that we'll use to try to
-// // resolve back to the actuall host name
-// InetAddress inetAddress = InetAddress.getByName(hostName);
-//
-// // try using the fully qualified host name
-//
-// h = getHost(inetAddress.getCanonicalHostName(), adminapi);
-// if (h != null) {
-// return h;
-// }
-//
-// h = getHost(inetAddress.getHostName(), adminapi);
-// if (h != null) {
-// return h;
-// }
-//
-// // try the address
-// h = getHost(inetAddress.getHostAddress(), adminapi);
-//
-// if (h != null) {
-// return h;
-// }
-// } catch (AdminException ae) {
-// throw ae;
-// } catch (Exception e) {
-// // do nothing
-// }
-//
-//
-//
-// // 2nd try to match
-// try {
-// Collection hosts = getAllHosts(adminapi);
-// // if the host name passed in is the short name,
-// // then try to match to the Host short name
-//
-// Iterator hi = hosts.iterator();
-//
-// while (hi.hasNext()) {
-//
-// String hostAddress = h.getPropertyValue(Host.HOST_PHYSICAL_ADDRESS);
-//
-// if (hostAddress != null && hostAddress.equalsIgnoreCase(hostName)) {
-// return h;
-// }
-// String hostBindAddress = h.getPropertyValue(Host.HOST_BIND_ADDRESS);
-//
-// if (hostBindAddress.equalsIgnoreCase(hostName)) {
-// return h;
-// }
-//
-//
-// }
-//
-// } catch (AdminException ae) {
-// throw ae;
-// } catch (Exception e) {
-// // do nothing
-// }
-//
-//
-// return null;
-//
-// }
-
- /**
- * Called to return only 1 host
- * @param hostName
- * @param adminapi
- * @return
- * @throws AdminException
- * @since 4.3
- */
- public static Host getHost(String hostIdentifier, Admin adminapi) throws AdminException {
- // Configuring and monitoring will no longer be done thru a single connection.
- // each host will be managed seperately
-
-
-// Collection hosts = adminapi.getHosts(hostIdentifier);
-//
-// if (hosts != null && hosts.size() == 1) {
-// // return the unique host by the hostName
-// return (Host) hosts.iterator().next();
-// }
- // return null if no hosts were found or
- // multiple hosts were found by that name.
- return null;
- }
-
- /**
- * Called to return all the currently defined hosts
- * @param adminapi
- * @return
- * @throws AdminException
- * @since 4.3
- */
-// public static Collection getAllHosts(Admin adminapi) throws AdminException {
-//
-// return adminapi.getHosts("*"); //$NON-NLS-1$
-// }
-
-
- /**
- * @param adminApi is the connection to the MM Server
- * @return Collection of MMProcesses
- */
-// public static Collection getAllProcesses(final Admin adminApi, String identifier) throws AdminException {
-//
-// Collection processCollection = Collections.EMPTY_LIST;
-//
-// processCollection = adminApi.getProcesses(identifier + "|*"); //$NON-NLS-1$
-//
-// return processCollection;
-// }
-
- public static ProcessObject getProcess(final Admin adminApi, String processIdentifier) throws AdminException {
-
- Collection processCollection = adminApi.getProcesses(processIdentifier);
-
- if (processCollection != null && processCollection.size() == 1) {
- // return the unique connector binding
- return (ProcessObject) processCollection.iterator().next();
- }
-
- return null;
- }
-
- /**
- * @param adminApi is the connection to the MM Server
- * @return Collection of MMProcesses
- */
-// public static Collection getAllConnectors(final Admin adminApi, String vmIdentifier) throws AdminException {
-//
-// Collection connectorCollection = Collections.EMPTY_LIST;
-//
-// connectorCollection = adminApi.getConnectorBindings(vmIdentifier +"|*");
-//
-//
-// return connectorCollection;
-// }
-
- public static ConnectorBinding getConnector(final Admin adminApi, String cbIdentifier) throws AdminException {
-
- Collection connectorCollection = adminApi.getConnectorBindings(cbIdentifier);
-
- if (connectorCollection != null && connectorCollection.size() == 1) {
- // return the unique connector binding
- return (ConnectorBinding) connectorCollection.iterator().next();
- }
-
- return null;
- }
-
- public static Service getService(final Admin adminApi, String svcIdentifier) throws AdminException {
-
-// Collection svcCollection = adminApi.getServices(svcIdentifier);
-//
-// if (svcCollection != null && svcCollection.size() == 1) {
-// // return the unique connector binding
-// return (Service) svcCollection.iterator().next();
-// }
-
- return null;
- }
-
-
- /**
- * @param adminApi is the connection to the MM Server
- *
- * @return Collection of VDBs
- */
-// public static Collection getAllVDBs(final Admin adminApi) throws AdminException {
-//
-// Collection connectorCollection = Collections.EMPTY_LIST;
-//
-// connectorCollection = adminApi.getVDBs("*"); //$NON-NLS-1$
-//
-// return connectorCollection;
-// }
-
- /*
- * Return the tokens in a string in a list. This is particularly
- * helpful if the tokens need to be processed in reverse order. In that case,
- * a list iterator can be acquired from the list for reverse order traversal.
- *
- * @param str String to be tokenized
- * @param delimiter Characters which are delimit tokens
- * @return List of string tokens contained in the tokenized string
- */
- public static List getTokens(String str, String delimiter) {
- ArrayList l = new ArrayList();
- StringTokenizer tokens = new StringTokenizer(str, delimiter);
- while(tokens.hasMoreTokens()) {
- l.add(tokens.nextToken());
- }
- return l;
- }
-
-
- public static synchronized Map getPropertiesDefinitions(final Admin adminApi, String resourceType, String className, String identifier) throws AdminException, ConnectionException {
- Properties result = new Properties();
-
- boolean cache = false;
- if ( resourceType.equalsIgnoreCase(org.teiid.rhq.comm.ConnectionConstants.ComponentType.Runtime.Host.TYPE) ||
- resourceType.equalsIgnoreCase(Process.TYPE) ) {
- cache = true;
-
- if (defCache.containsKey(className)) {
- return defCache.get(className);
- }
- }
-
-
- Collection pdefs = adminApi.getPropertyDefinitions(identifier, className);
-
- Map<String, Object> defMap = new HashMap<String, Object>();
-
- for (Iterator it=pdefs.iterator(); it.hasNext();) {
- PropertyDefinition pdef = (PropertyDefinition)it.next();
- Object value = pdef.getValue() != null ? pdef.getValue() : pdef.getDefaultValue();
- defMap.put(pdef.getName(), (value != null ? value : "")); //$NON-NLS-1$
-
- }
-
- if (cache) {
- defCache.put(className, defMap);
- }
-
-
- return defMap;
- }
-
- static class InvalidAdminException extends Throwable {
-
- public InvalidAdminException(String msg) {
- super(msg);
- }
-
- }
-
-
-}
Deleted: branches/JCA/console/src/main/java/org/teiid/rhq/comm/impl/TeiidConnectionFactory.java
===================================================================
--- branches/JCA/console/src/main/java/org/teiid/rhq/comm/impl/TeiidConnectionFactory.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/console/src/main/java/org/teiid/rhq/comm/impl/TeiidConnectionFactory.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,248 +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.rhq.comm.impl;
-
-/*
- * The connection factory implementation is located here so that a new version
- * of MetaMatrix that has different connection requirements can be dealt
- * with on a per MM Version.
- */
-
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-import java.util.StringTokenizer;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.teiid.adminapi.Admin;
-import org.teiid.jdbc.TeiidDriver;
-import org.teiid.rhq.comm.Connection;
-import org.teiid.rhq.comm.ConnectionConstants;
-import org.teiid.rhq.comm.ConnectionException;
-import org.teiid.rhq.comm.ConnectionFactory;
-import org.teiid.rhq.comm.ConnectionPool;
-
-import com.metamatrix.common.comm.platform.client.ServerAdminFactory;
-import com.metamatrix.common.jdbc.JDBCUtil;
-import com.metamatrix.jdbc.MMConnection;
-
-
-
-public class TeiidConnectionFactory implements
- ConnectionFactory {
- private static final Log LOG = LogFactory.getLog(TeiidConnectionFactory.class);
-
- private Properties connEnv;
- private ConnectionPool pool;
- private String username = null;
- private String password = null;
- private String url = null;
-
- public TeiidConnectionFactory() {
-
- }
-
- public String getURL() {
- return url;
- }
-
- public Connection createConnection() throws ConnectionException {
-
- Thread currentThread = Thread.currentThread();
- ClassLoader threadContextLoader = currentThread.getContextClassLoader();
- try {
- currentThread.setContextClassLoader(pool.getClassLoader());
-
- MMConnection mmconn = getConnection();
-
- if (mmconn != null) {
- ConnectionImpl conn = new ConnectionImpl(url, connEnv, pool, mmconn);
- if (conn.isAlive()) {
- return conn;
- }
-
- conn.closeSource();
- }
-
- return new InvalidConnectionImpl(url, connEnv, pool);
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- throw new ConnectionException(e);
- } finally {
- currentThread.setContextClassLoader(threadContextLoader);
- }
-
-
- }
-
-
- public void initialize( final Properties env, final ConnectionPool connectionPool) throws ConnectionException {
- this.connEnv = (Properties) env.clone();
- this.pool = connectionPool;
-
-
- if (pool == null || connEnv == null || connEnv.isEmpty()) {
- throw new ConnectionException("ConnectionFactory has not been initialized properly"); //$NON-NLS-1$
- }
-
-
- url = connEnv.getProperty(ConnectionConstants.URL);
- username = connEnv
- .getProperty(ConnectionConstants.USERNAME);
- password = connEnv
- .getProperty(ConnectionConstants.PASSWORD);
-
-
- if (url == null ) {
- throw new ConnectionException("URL is not set"); //$NON-NLS-1$
-
- }
- if (username == null ) {
- throw new ConnectionException("USERNAME is not set"); //$NON-NLS-1$
-
- }
- if (password == null ) {
- throw new ConnectionException("PASSWORD is not set"); //$NON-NLS-1$
-
- }
- }
-
-
- /**
- * @see org.teiid.rhq.comm.ConnectionFactory#closeConnection(org.teiid.rhq.comm.Connection)
- */
- public void closeConnection(Connection connection) {
- if (connection instanceof ConnectionImpl) {
- ConnectionImpl conn = (ConnectionImpl) connection;
- conn.closeSource();
- } else {
-
- connection.close();
- }
- }
-
- private MMConnection getConnection() {
- MMConnection conn = null;
- Throwable firstexception = null;
-
- try {
- Properties props = new Properties();
- props.setProperty(JDBCUtil.DATABASE, url);
- props.setProperty(JDBCUtil.DRIVER, TeiidDriver.class.getName());
- props.setProperty(JDBCUtil.USERNAME, username);
- props.setProperty(JDBCUtil.PASSWORD, password);
-
- conn = (MMConnection) JDBCUtil.createJDBCConnection(props);
-
-
- return conn;
- } catch (Throwable ce) {
- if (firstexception == null) {
- firstexception = ce;
- }
- }
-
- if (firstexception != null) {
- firstexception.printStackTrace();
- LOG.error("Unable to connect to JBEDSP System: " + firstexception.getMessage()); //$NON-NLS-1$
- }
-
- return null;
- }
-
- /**
- * @param userName
- * @param password
- * @param servers
- * @return Admin
- * @throws Exception,
- * AdminException
- * @since 5.5.3
- */
-// private Admin getAdminAPI(String pusername, String ppassword, String purl)
-// throws Exception {
-//
-// String servers = null;
-//
-// com.metamatrix.common.comm.platform.client.ServerAdminFactory factory = null;
-//
-// Admin serverAdmin = null;
-//
-// try {
-// factory = ServerAdminFactory.getInstance();
-//
-// serverAdmin = factory.createAdmin(pusername, ppassword.toCharArray(),
-// purl, "RHQ"); //$NON-NLS-1$
-//
-// } catch (Throwable ae) {
-// if (ae instanceof MetaMatrixRuntimeException) {
-// Throwable child = ((MetaMatrixRuntimeException) ae).getChild();
-// if (child.getMessage().indexOf("Read timed out") > 0) { //$NON-NLS-1$
-// try {
-//
-// System.setProperty("com.metamatrix.ssl.trustStore", key + "/client/metamatrix.truststore"); //$NON-NLS-1$ //$NON-NLS-2$
-// servers = MMConnectionConstants.SSL_PROTOCOL + iNetAddress.getHostName() + ":" + pport; //$NON-NLS-1$
-// serverAdmin = factory.createAdmin(pusername, ppassword.toCharArray(),
-// servers, "RHQ");//$NON-NLS-1$
-// } catch (Exception ae2) {
-// throw ae;
-// }
-// } else {
-// throw ae;
-// }
-// } else {
-// throw new Exception(ae.getMessage());
-// }
-
-// }
-// LOG.info("Connected to JBEDSP Server using " + servers); //$NON-NLS-1$
-//
-// this.url = purl;
-//
-// return serverAdmin;
-// }
-
-
-
- /*
- * Return the tokens in a string in a list. This is particularly
- * helpful if the tokens need to be processed in reverse order. In that case,
- * a list iterator can be acquired from the list for reverse order traversal.
- *
- * @param str String to be tokenized
- * @param delimiter Characters which are delimit tokens
- * @return List of string tokens contained in the tokenized string
- */
- private static List getTokens(String str, String delimiter) {
- ArrayList l = new ArrayList();
- StringTokenizer tokens = new StringTokenizer(str, delimiter);
- while(tokens.hasMoreTokens()) {
- l.add(tokens.nextToken());
- }
- return l;
- }
-
-
-
-}
Modified: branches/JCA/console/src/main/java/org/teiid/rhq/plugin/PlatformDiscoveryComponent.java
===================================================================
--- branches/JCA/console/src/main/java/org/teiid/rhq/plugin/PlatformDiscoveryComponent.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/console/src/main/java/org/teiid/rhq/plugin/PlatformDiscoveryComponent.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -21,103 +21,90 @@
*/
package org.teiid.rhq.plugin;
-import java.util.HashMap;
import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
import java.util.Set;
+import javax.naming.InitialContext;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.jboss.deployers.spi.management.ManagementView;
+import org.jboss.managed.api.ComponentType;
+import org.jboss.managed.api.ManagedComponent;
+import org.jboss.profileservice.spi.ProfileService;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.PropertySimple;
import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
import org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
-import org.teiid.rhq.admin.utils.SingletonConnectionManager;
-import org.teiid.rhq.comm.Component;
-import org.teiid.rhq.comm.ConnectionConstants;
+import org.teiid.rhq.plugin.util.PluginConstants;
-
/**
* This is the parent node for a MetaMatrix system
*/
public class PlatformDiscoveryComponent implements ResourceDiscoveryComponent {
- private static SingletonConnectionManager connMgr = SingletonConnectionManager.getInstance();
+
private static final Log LOG = LogFactory
.getLog(PlatformDiscoveryComponent.class);
-
- Map environmentMap = new HashMap();
+ public static final String p = "connectorAddress"; //$NON-NLS-1$
- /**
+
+ private final Log log = LogFactory.getLog(this.getClass());
+
+ /**
* Review the javadoc for both {@link ResourceDiscoveryComponent} and
* {@link ResourceDiscoveryContext} to learn what you need to do in this
* method.
*
* @see ResourceDiscoveryComponent#discoverResources(ResourceDiscoveryContext)
*/
- public Set<DiscoveredResourceDetails> discoverResources(ResourceDiscoveryContext discoveryContext) throws InvalidPluginConfigurationException,
- Exception {
- try {
-
- String name = discoveryContext.getResourceType().getName();
- String desc = discoveryContext.getResourceType().getDescription();
- String version = ConnectionConstants.VERSION;
-
- LOG.info("Discovering " + desc); //$NON-NLS-1$
-
-
- // now perform your own discovery mechanism, if you have one. For each
- // resource discovered, you need to
- // create a details object that describe the resource that you
- // discovered.
- HashSet<DiscoveredResourceDetails> set = new HashSet<DiscoveredResourceDetails>();
+ public Set<DiscoveredResourceDetails> discoverResources(
+ ResourceDiscoveryContext discoveryContext)
+ throws InvalidPluginConfigurationException, Exception {
- Set<String> systemkeys = null ;
+ Set<DiscoveredResourceDetails> discoveredResources = new HashSet<DiscoveredResourceDetails>();
- try {
- systemkeys = connMgr.getInstallationSystemKeys();
- } catch (Exception e) {
- systemkeys = new HashSet(1);
- systemkeys.add("NotDefined");
+ InitialContext ic = new InitialContext();
+ ProfileService ps = (ProfileService) ic.lookup(PluginConstants.PROFILE_SERVICE);
- // TODO
- // - when the serverList cannot be obtained
-
- // DO NOT throw exception, still want to create the
- // resource, but it will show not active / available
- }
+ ManagementView vm = ps.getViewManager();
+ vm.load();
+ ComponentType type = new ComponentType(PluginConstants.CONNECTION_FACTORY_TYPE, PluginConstants.NO_TX_SUBTYPE);
+ ManagedComponent mc = vm.getComponent(PluginConstants.TEIID_RUNTIME_ENGINE,
+ type);
+ /*
+ * Currently this uses a hardcoded remote address for access to the
+ * MBean server This needs to be switched to check if we e.g. run inside
+ * a JBossAS to which we have a connection already that we can reuse.
+ */
+ Configuration c = new Configuration(); // TODO get from
+ // defaultPluginConfig
+ String managerName = mc.getName();
+
+ c.put(new PropertySimple("objectName", managerName));
+ /**
+ *
+ * A discovered resource must have a unique key, that must stay the same
+ * when the resource is discovered the next time
+ */
+ DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
+ discoveryContext.getResourceType(), // ResourceType
+ managerName, // Resource Key
+ PluginConstants.TEIID_ENGINE_RESOURCE_NAME, // Resource Name
+ null, // Version TODO can we get that from discovery ?
+ PluginConstants.TEIID_ENGINE_RESOURCE_DESCRIPTION, // Description
+ c, // Plugin Config
+ null // Process info from a process scan
+ );
- Iterator<String> serverIter = systemkeys.iterator();
- int hostCount = -1;
- while (serverIter.hasNext()) {
- hostCount++;
- String systemKey = serverIter.next();
-
- DiscoveredResourceDetails resource = new DiscoveredResourceDetails(discoveryContext.getResourceType(),
- systemKey, name,
- version, desc, null, null);
+ // Add to return values
+ discoveredResources.add(detail);
+ log.info("Discovered Teiid instance: " + managerName);
+ return discoveredResources;
- Configuration configuration = resource.getPluginConfiguration();
- configuration.put(new PropertySimple(Component.NAME, name));
- configuration.put(new PropertySimple(Component.IDENTIFIER, name));
- configuration.put(new PropertySimple(Component.SYSTEM_KEY, systemKey));
-
-
- set.add(resource);
-
- }
-
- return set;
- } catch (InvalidPluginConfigurationException ipe) {
- throw ipe;
- } catch (Throwable t) {
- throw new InvalidPluginConfigurationException(t);
- }
-
- }
+ }
}
\ No newline at end of file
Copied: branches/JCA/console/src/main/java/org/teiid/rhq/plugin/util/PluginConstants.java (from rev 1614, trunk/console/src/main/java/org/teiid/rhq/plugin/util/PluginConstants.java)
===================================================================
--- branches/JCA/console/src/main/java/org/teiid/rhq/plugin/util/PluginConstants.java (rev 0)
+++ branches/JCA/console/src/main/java/org/teiid/rhq/plugin/util/PluginConstants.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,235 @@
+/*
+ * 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.rhq.plugin.util;
+
+
+/**
+ * These are the Constants that used in conjunction with using the
+ * @since 5.5.3
+ */
+public interface PluginConstants {
+
+ /**
+ * These are properties required for connecting to the profile service and getting a handle
+ * to a specific component related to Teiid.
+ */
+
+ // The system key is the value used to obtain a connection.
+ // In embedded, its a predefined value
+ // In enterprise, its the installation directory
+ public final static String PROFILE_SERVICE = "ProfileService"; //$NON-NLS-1$
+ public final static String CONNECTION_FACTORY_TYPE = "ConnectionFactory"; //$NON-NLS-1$
+ public final static String NO_TX_SUBTYPE = "NoTx"; //$NON-NLS-1$
+ public final static String TEIID_RUNTIME_ENGINE = "teiid-runtime-engine"; //$NON-NLS-1$
+ public final static String TEIID_ENGINE_RESOURCE_NAME = "Data Service Runtime Engine"; //$NON-NLS-1$
+ public final static String TEIID_ENGINE_RESOURCE_DESCRIPTION = "JBoss Enterprise Data Service Runtime Engine"; //$NON-NLS-1$
+// public final static String INSTALL_DIR = "install.dir"; //$NON-NLS-1$
+
+ /**
+ * These are global properties used by all components
+ */
+ /*
+ * This is the key for the fully qualified identifier.
+ * For Runtime components it should be the deployedcomponent full name
+ * For Resource components it should be the Service Defn full name
+ * for adding to the value maps for metrics and operations.
+ */
+ public final static String IDENTIFIER = "identifier"; //$NON-NLS-1$
+
+
+ /**
+ * These properties are exposed via the #getProperty method call.
+ */
+ public static String SYSTEM_NAME = "cluster.name"; //$NON-NLS-1$
+ public static String SYSTEM_NAME_IDENTIFIER = "JGroups"; //$NON-NLS-1$
+
+ /**
+ * Use these component type names when calling Connection related methods
+ * that require the type.
+ * @since 1.0
+ */
+ public interface ComponentType {
+ public final static String PLATFORM = "Platform"; //$NON-NLS-1$
+
+ public interface Runtime {
+
+ public interface System {
+ public final static String TYPE = "Runtime.System"; //$NON-NLS-1$
+
+ public static interface Operations {
+
+ public final static String BOUNCE_SYSTEM = "bounceSystem"; //$NON-NLS-1$
+ public final static String GET_LONGRUNNINGQUERIES = "listLongRunningQueries"; //$NON-NLS-1$
+
+ }
+
+ public static interface Metrics {
+
+ public final static String QUERY_COUNT = "queryCount"; //$NON-NLS-1$
+ public final static String SESSION_COUNT = "sessionCount"; //$NON-NLS-1$
+ public final static String LONG_RUNNING_QUERIES = "longRunningQueries"; //$NON-NLS-1$
+
+ }
+ }
+
+ public interface Host {
+ public final static String TYPE = "Runtime.Host"; //$NON-NLS-1$
+
+ public static interface Operations {
+ public final static String GET_HOSTS = "getHosts"; //$NON-NLS-1$
+
+ }
+ }
+
+ public interface Process {
+
+ public final static String TYPE = "Runtime.Process"; //$NON-NLS-1$
+ public static interface Operations {
+
+ }
+
+ }
+
+
+ public interface Connector {
+
+ public final static String TYPE = "Runtime.Connector"; //$NON-NLS-1$
+ public static interface Operations {
+
+ public final static String RESTART_CONNECTOR = "restart"; //$NON-NLS-1$
+ public final static String STOP_CONNECTOR = "stop"; //$NON-NLS-1$
+
+ }
+
+ }
+
+// public interface Service {
+//
+// public final static String TYPE = "Runtime.Service"; //$NON-NLS-1$
+// public static interface Operations {
+//
+// public final static String RESTART_SERVICE = "restart"; //$NON-NLS-1$
+// public final static String STOP_SERVICE = "stop"; //$NON-NLS-1$
+//
+// }
+//
+// }
+
+ public interface Session {
+
+ public final static String TYPE = "Runtime.Sesssion"; //$NON-NLS-1$
+ public static interface Query {
+
+ public final static String GET_SESSIONS = "getSessions"; //$NON-NLS-1$
+ }
+
+
+
+ }
+
+ public interface Queries {
+
+ public final static String TYPE = "Runtime.Queries"; //$NON-NLS-1$
+ public static interface Query {
+
+ public final static String GET_QUERIES = "listQueries"; //$NON-NLS-1$
+ }
+
+
+
+ }
+
+ }
+ public interface Resource {
+ public interface Service {
+
+ public final static String TYPE = "Resource.Service"; //$NON-NLS-1$
+ public static interface Operations {
+
+ }
+
+ public static interface Query {
+
+ }
+
+ }
+ public interface Connector {
+
+ public final static String TYPE = "Resource.Connector"; //$NON-NLS-1$
+ public static interface Operations {
+
+ }
+
+ }
+ }
+
+ public interface Security {
+
+ }
+ /**
+ * Use these metric names when calling getValues() on the connection
+ * interface.
+ * @since 1.0
+ */
+ public interface Metric {
+ public final static String HIGH_WATER_MARK = "highWatermark"; //$NON-NLS-1$
+
+ }
+
+ /**
+ * Use these operation names when calling executeOperation() on the connection
+ * interface.
+ * @since 1.0
+ */
+ public static interface Operation {
+ public final static String KILL_REQUEST = "killRequest"; //$NON-NLS-1$
+ public final static String GET_VDBS = "listVDBs"; //$NON-NLS-1$
+
+ public final static String GET_PROPERTIES = "getProperties"; //$NON-NLS-1$
+
+ /**
+ * Use these value names when calling executeOperation() on the connection
+ * interface. These will correlate with parameters used in operations.
+ * @since 1.0
+ */
+ public static interface Value {
+ public final static String STOP_NOW = "stopNow"; //$NON-NLS-1$
+ public final static String WAIT_UNTIL_FINISHED = "waitUntilFinished"; //$NON-NLS-1$
+
+ public final static String INCLUDE_SOURCE_QUERIES = "includeSourceQueries"; //$NON-NLS-1$
+
+ public final static String LONG_RUNNING_QUERY_LIMIT = "longRunningQueryLimit"; //$NON-NLS-1$
+
+ public final static String FIELD_LIST = "fieldList"; //$NON-NLS-1$
+
+ public final static String REQUEST_ID = "requestID"; //$NON-NLS-1$
+
+ public final static String NAME = "Name"; //$NON-NLS-1$
+ public final static String VALUE = "Value"; //$NON-NLS-1$
+
+ }
+
+ }
+
+ }
+
+ }
Modified: branches/JCA/console/src/resources/embedded/META-INF/rhq-plugin.xml
===================================================================
--- branches/JCA/console/src/resources/embedded/META-INF/rhq-plugin.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/console/src/resources/embedded/META-INF/rhq-plugin.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -22,614 +22,17 @@
* 02110-1301 USA.
*/-->
-<plugin name="TeiidPlugin" displayName="Teiid Plugin"
- package="org.teiid.rhq.plugin" version="2.0.0"
- description="Supports management and monitoring of JBoss Teiid"
+<plugin name="TeiidPlugin" displayName="Teiid Plugin" package="org.teiid.rhq.plugin"
+ version="2.0.0" description="Supports management and monitoring of JBoss Teiid"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns="urn:xmlns:rhq-plugin"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:xmlns:rhq-plugin"
xmlns:c="urn:xmlns:rhq-configuration">
- <server name="Teiid Data Services"
- discovery="PlatformDiscoveryComponent"
- class="PlatformComponent"
- description="JBoss Teiid DataServices"
- supportsManualAdd="true"
- singleton="true">
+ <depends plugin="JMX" useClasses="true"/>
- <subcategories>
- <subcategory name="Runtime"/>
- <subcategory name="Resources"/>
- </subcategories>
+ <server name="Teiid Data Services" description="Teiid Datasources" class="PlatformComponent"
+ discovery="PlatformDiscoveryComponent" createDeletePolicy="both">
+ </server>
- <resource-configuration>
- <c:group name="connection" displayName="Connection Info">
- <c:description>Connection</c:description>
- <c:simple-property name="url" displayName="Teiid URL"
- description="The URL with which to connect to the Teiid Data Service instance (e.g. mm://localhost:31000)."
- default="mm://localhost:31000"/>
- <c:simple-property name="username" required="true" description="The name of the administrative principal (i.e. user) to authenticate."/>
- <c:simple-property name="password" type="password" required="true"
- description="The credentials (i.e. password) that should be used to authenticate the administrative principal."/>
- </c:group>
- </resource-configuration>
-
-
- <server name="Sessions"
- subCategory="Runtime"
- discovery="NodeDiscoveryComponent"
- description="Active / Inactive sessions connected to the Teidd Server"
- class="SessionComponent"
- singleton="true">
-
-<!--
- group name = operation name or query name
-
- simple-property name = the method name on the object to get the value
--->
- <resource-configuration>
- <c:group name="getSessions" displayName="Sessions">
-
- <c:list-property name="list"
- displayName="Current Sessions"
- description="Sessions currently connected to the Teiid"
- required="false">
- <c:map-property name="map">
- <c:simple-property displayName="Session ID"
- name="getSessionID" type="string" readOnly="true"
- description="The id for this session" />
- <c:simple-property displayName="User Name"
- name="getUserName" type="string" readOnly="true"
- description="The username for the user of this session" />
- <c:simple-property
- displayName="Application Name" name="getApplicationName"
- type="string" readOnly="true"
- description="The name of the application this user is accessing Teiid through" />
- <c:simple-property displayName="VDB Name"
- name="getVDBName" type="string" readOnly="true"
- description="The name of the VDB the user is connected to" />
- <c:simple-property displayName="VDB Version"
- name="getVDBVersion" type="string" readOnly="true"
- description="The version of the VDB the user is connected to" />
-
- <c:simple-property displayName="State"
- name="getStateAsString" type="string" readOnly="true"
- description="The current state of this session" />
-
- <c:simple-property displayName="IP Address"
- name="getIPAddress" type="string" readOnly="true"
- description="The IP Address for this user's connection" />
- <c:simple-property displayName="Host Name"
- name="getHostName" type="string" readOnly="true"
- description="The host machine from which this user connected" />
- </c:map-property>
- </c:list-property>
-
- </c:group>
- </resource-configuration>
-
- </server>
-
- <server name="Queries"
- subCategory="Runtime"
- discovery="NodeDiscoveryComponent"
- description="Current queries executing against the Teiid Server"
- class="QueriesComponent"
- singleton="true">
-
-<!--
- group name = operation name or query name
-
- simple-property name = the method name on the object to get the value
--->
- <resource-configuration>
- <c:group name="listQueries" displayName="Executing Queries">
-
- <c:list-property name="list"
- displayName="Executing Queries"
- description="Current queries executing in the Teiid system"
- required="false">
- <c:map-property name="map">
- <c:simple-property displayName="User Name"
- name="getUserName" type="string"
- description="The username for the user that submitted this query" />
- <c:simple-property displayName="Session ID"
- name="getSessionID" type="string"
- description="The id for the session" />
- <c:simple-property displayName="Request ID"
- name="getRequestID" type="string"
- description="The id for the request" />
- <c:simple-property displayName="Start Time"
- name="getCreated" type="string"
- description="The time this query has been running" />
- <c:simple-property displayName="Transaction ID"
- name="getTransactionID" type="string"
- description="The version of the VDB the user is connected to" />
- <c:simple-property displayName="SQL String"
- name="getSqlCommand" type="string"
- description="The SQL string for this query" />
- <c:simple-property
- displayName="Connector Binding Name"
- name="getConnectorBindingName" type="string"
- description="The IP Address for this user's connection" />
- <c:simple-property displayName="Node ID"
- name="getNodeID" type="string"
- description="The node ID of this query" />
- <c:simple-property displayName="Source Request"
- name="isSource" type="string"
- description="If false this is the top level query. If true this a physical source query." />
- </c:map-property>
- </c:list-property>
-
- </c:group>
- </resource-configuration>
-
- </server>
-
-
-
-
-
- <server name="System"
- subCategory="Runtime"
- discovery="NodeDiscoveryComponent"
- class="SystemComponent"
- description="Operational System"
- supportsManualAdd="true"
- singleton="true">
-
-
- <operation name="bounceSystem"
- displayName="Bounce System"
- description="Stop and restart the system">
- <parameters>
- <c:simple-property name="waitUntilFinished"
- type="boolean" default="false"
- description="If true, this method waits until the operation is finished before returning. This may take a long time to complete. If false, this method returns immediately, even though the operation may not be finished." />
- </parameters>
- </operation>
-<!--
- <operation name="listUsers"
- displayName="View current user sessions"
- description="List current user sessions connected to this Teiid System">
- <results>
- <c:list-property name="list">
- <c:map-property name="map">
- <c:simple-property displayName="User Name"
- name="getUserName" type="string"
- description="The username for the user of this session" />
- <c:simple-property
- displayName="Application Name" name="getApplicationName"
- type="string"
- description="The name of the application this user is accessing Teiid through" />
- <c:simple-property displayName="Session ID"
- name="getSessionID" type="string"
- description="The id for this session" />
- <c:simple-property displayName="VDB Name"
- name="getVDBName" type="string"
- description="The name of the VDB the user is connected to" />
- <c:simple-property displayName="VDB Version"
- name="getVDBVersion" type="string"
- description="The version of the VDB the user is connected to" />
- <c:simple-property displayName="Product Name"
- name="getProductName" type="string"
- description="The product name" />
- <c:simple-property displayName="IP Address"
- name="getIPAddress" type="string"
- description="The IP Address for this user's connection" />
- <c:simple-property displayName="Host Name"
- name="getHostName" type="string"
- description="The host name for this user's connection" />
- <c:simple-property displayName="Last Ping Time"
- name="getLastPingTime" type="string"
- description="The last time this client was ping'd" />
- <c:simple-property displayName="State"
- name="getStateAsString" type="string"
- description="The current state of this session" />
- </c:map-property>
- </c:list-property>
- </results>
- </operation>
--->
-
-<!--
- <operation name="listQueries" displayName="View current queries"
- description="List current queries executing against the Teiid System">
- <parameters>
- <c:simple-property name="includeSourceQueries"
- type="boolean" default="true"
- description="If true, source queries will be included in the results. If false, only top-level queries will be included in the results." />
- </parameters>
- <results>
- <c:list-property name="list">
- <c:map-property name="map">
- <c:simple-property displayName="User Name"
- name="getUserName" type="string"
- description="The username for the user that submitted this query" />
- <c:simple-property displayName="Session ID"
- name="getSessionID" type="string"
- description="The id for the session" />
- <c:simple-property displayName="Request ID"
- name="getRequestID" type="string"
- description="The id for the request" />
- <c:simple-property displayName="Start Time"
- name="getCreated" type="string"
- description="The time this query has been running" />
- <c:simple-property displayName="Transaction ID"
- name="getTransactionID" type="string"
- description="The version of the VDB the user is connected to" />
- <c:simple-property displayName="SQL String"
- name="getSqlCommand" type="string"
- description="The SQL string for this query" />
- <c:simple-property
- displayName="Connector Binding Name"
- name="getConnectorBindingName" type="string"
- description="The IP Address for this user's connection" />
- <c:simple-property displayName="Node ID"
- name="getNodeID" type="string"
- description="The node ID of this query" />
- <c:simple-property displayName="Source Request"
- name="isSource" type="string"
- description="If false this is the top level query. If true this a physical source query." />
- </c:map-property>
- </c:list-property>
- </results>
- </operation>
--->
- <operation name="listLongRunningQueries"
- displayName="View current long running queries"
- description="List current queries executing against the Teiid System that have surpassed the long running query threshhold">
- <parameters>
- <c:simple-property name="includeSourceQueries"
- type="boolean" default="true"
- description="If true, source queries will be included in the results. If false, only top-level queries will be included in the results." />
- </parameters>
- <results>
- <c:list-property name="list">
- <c:map-property name="map">
- <c:simple-property displayName="User Name"
- name="getUserName" type="string"
- description="The username for the user that submitted this query" />
- <c:simple-property displayName="Session ID"
- name="getSessionID" type="string"
- description="The name of the resource whose availability is being reported" />
- <c:simple-property displayName="Request ID"
- name="getRequestID" type="string"
- description="The id for the request" />
- <c:simple-property displayName="Start Time"
- name="getCreated" type="string"
- description="The time this query has been running" />
- <c:simple-property displayName="Transaction ID"
- name="getTransactionID" type="string"
- description="The version of the VDB the user is connected to" />
- <c:simple-property displayName="SQL String"
- name="getSqlCommand" type="string"
- description="The SQL string for this query" />
- <c:simple-property
- displayName="Connector Binding Name"
- name="getConnectorBindingName" type="string"
- description="The IP Address for this user's connection" />
- <c:simple-property displayName="Node ID"
- name="getNodeID" type="string"
- description="The node ID of this query" />
- <c:simple-property displayName="Source Request"
- name="isSource" type="string"
- description="If false this is the top level query. If true this a physical source query." />
- </c:map-property>
- </c:list-property>
- </results>
- </operation>
-
- <operation name="killRequest" displayName="Terminate query"
- description="Terminate the processing of a query and it's source queries">
- <parameters>
- <c:simple-property displayName="SessionID|RequestID"
- name="requestID" type="string" required="true"
- description="The IDs of the session|request to terminate (use format = sessionID|requestID)" />
- </parameters>
- </operation>
-
-
- <metric displayName="Query Count" defaultOn="true"
- displayType="summary" category="throughput" property="queryCount"
- description="The number of queries for a given point in time" />
-
- <metric displayName="Long Running Queries" defaultOn="true"
- displayType="summary" category="performance"
- property="longRunningQueries"
- description="The number of queries that have been running longer than the limit set for queries. The default is 60 minutes, but this may be overridden by the 'longRunningQueryTime' system variable." />
-
- <metric displayName="Session Count" defaultOn="true"
- displayType="summary" category="throughput" property="sessionCount"
- description="The number of user connections for a given point in time" />
-
- <resource-configuration>
- <c:group name="general" displayName="General" hiddenByDefault="false">
- <c:description>Query Configuration</c:description>
- <c:simple-property name="longRunningQueryLimit" type="integer" activationPolicy="immediate" units="seconds" default="600" displayName="Long Running Query limit" description="The value (in seconds) to use to determine if a query is to be considered 'long running'.">
- <c:constraint>
- <c:integer-constraint minimum="0" maximum="999999" />
- </c:constraint>
- </c:simple-property>
- </c:group>
- </resource-configuration>
-
-
- <server name="Host"
- discovery="HostDiscoveryComponent"
- class="HostComponent"
- description="Teiid Host"
- createDeletePolicy="delete-only">
-
- <resource-configuration>
- <c:group name="hostinfo" displayName="Host Info">
- <c:description>Host configuration information</c:description>
-
- <c:simple-property name="metamatrix.installationDir" readOnly="true" required="false" displayName="Installation Directory"
- description="The physical location of the Teiid server installation"/>
- <c:simple-property name="metamatrix.log.dir" readOnly="true" required="false" displayName="Log Directory"
- description="The physical location of the Host log files"/>
- <c:simple-property name="metamatrix.data.dir" readOnly="true" required="false" displayName="Data Directory"
- description="The physical location of the internal Teiid dynamic data"/>
- <c:simple-property name="metamatrix.host.dir" readOnly="true" required="false" displayName="Host Directory"
- description="The Host directory is where host specific files are located."/>
- <c:simple-property name="metamatrix.host.bind.address" readOnly="true" required="false" displayName="Bind Address"
- description="The bind address determines what interfaces the host machine will be bound to."/>
- <c:simple-property name="metamatrix.host.physical.address" readOnly="true" required="false" displayName="Physical Address"
- description="The physical address indicates what address a client application will use to connect."/>
- </c:group>
- </resource-configuration>
-
-
- <service name="Process"
- discovery="ProcessDiscoveryComponent"
- class="ProcessComponent"
- description="Teiid Process instance"
- createDeletePolicy="both">
-
- <plugin-configuration>
- <c:group name="event" displayName="Process Log Tracking">
- <c:simple-property name="enabled" type="boolean" summary="true" default="true" required="true"
- description="A flag indicating whether of not this log Event source is currently
- enabled (i.e. whether the associated log file should be tailed for
- new entries)."/>
- <c:simple-property name="minimumSeverity" required="true" default="ERROR"
- description="The minimum severity of Events that should be collected for this
- source. The default is ERROR.">
- <c:property-options>
- <c:option name="DEBUG" value="DEBUG"/>
- <c:option name="INFO" value="INFO"/>
- <c:option name="WARNING" value="WARNING"/>
- <c:option name="ERROR" value="ERROR" default="true"/>
- </c:property-options>
- </c:simple-property>
- </c:group>
- </plugin-configuration>
-
- <operation name="restartProcess"
- displayName="Re-start Process"
- description="Start/re-start this process" />
- <operation name="stopProcess"
- displayName="Stop Process"
- description="Stop this process">
- <parameters>
- <c:simple-property name="stopNow" type="boolean"
- default="true"
- description="If true, stop the process forcefully. If false, wait until any pending work is completed." />
- </parameters>
- </operation>
-
-
- <metric displayName="Query High Water Mark" defaultOn="true"
- displayType="summary" category="utilization"
- property="highWatermark"
- description="High water mark for queries in the Socket Worker Queue" />
-
- <event name="errorLogEntry" description="an entry in a log file"/>
- <!-- Ted Jones - 06/19/08
- Commenting out current threads metric until http://jira.jboss.org/jira/browse/JBEDSP-426 is resolved. -->
- <!-- <metric displayName="Current Threads"
- defaultOn="true"
- displayType="summary"
- category="utilization"
- property="threadCount"
- description="The number of active threads in the Socket Worker Queue"/> -->
-
- <resource-configuration>
- <c:group name="processinfo" displayName="Process Info">
- <c:description>Process configuration information</c:description>
- <c:simple-property name="vm.enabled" type="boolean" displayName="Start Enabled Flag"
- description="The enabled flag allows for disabling the VM from starting without have to remove it from deployment."/>
- <c:simple-property name="vm.socketPort" type="integer" displayName="Socket Port"
- description="The port number for the process when socket communications are being used"/>
-
- <c:simple-property name="vm.starter.cmd.java_opts" displayName="Java Options"
- description="These are the java options passed in before the main class"/>
- <c:simple-property name="vm.starter.minHeapSize" displayName="Minimum Heap Size (MB)" required="false"
- description="The bind address, when specified determines what address the vm will be bound to."/>
- <c:simple-property name="vm.starter.maxHeapSize" type="integer" displayName="Maximum Heap Size (MB)" required="false"
- description="The maximum heap size, in megabytes, to be used for this VM. If no value is provided for this property, the default property value from the configuration is used; if no value is specified anywhere, no maximum heap size will be set."/>
- <c:simple-property name="vm.bind.address" type="string" displayName="VM Bind Address" required="false"
- description="The bind address, when specified determines what address the vm will be bound to."/>
- <c:simple-property name="vm.unicast.port" type="integer" displayName="Cluster Port for Unicast"
- description="The port number for the process when unicast based clustering is used."/>
- <c:simple-property name="vm.minPort" type="integer" displayName="Min Port Number"
- description="Min port number"/>
-
- </c:group>
- <c:group name="tuning" displayName="Tuning">
-
- <c:simple-property name="vm.timetolive" type="integer" displayName="Socket Worker Thread Time-To-Live (ms)"
- description="Time-to-live (in milliseconds) for threads used to do work on client requests."/>
- <c:simple-property name="vm.maxThreads" type="integer" displayName="Max Threads" required="false"
- description="Maximum socket listener threads.">
- <c:defaultValueDescription>If nothing is specified, the default of 64 will be used.
- </c:defaultValueDescription>
- </c:simple-property>
- <c:simple-property name="vm.inputBufferSize" type="integer" displayName="Socket Input BufferSize"
- description="The size of socket buffer used when reading."/>
- <c:simple-property name="vm.forced.shutdown.time" type="integer" displayName="VM Forced Shutdown Time (secs)"
- description="The the number of seconds the VM will wait until it will perform a force shutdown."/>
- <c:simple-property name="vm.outputBufferSize" type="integer" displayName="Socket Output BufferSize"
- description="The size of the socket buffer used when writing."/>
-
- </c:group>
- </resource-configuration>
-
-
- <service name="Connectors"
- discovery="ConnectorDiscoveryComponent"
- class="ConnectorComponent">
-
- <resource-configuration>
- <c:group name="advanced" displayName="Advanced">
-
- <c:list-property name="config-property"
- displayName="Config Property"
- description="Configuration Properties"
- required="false">
- <c:map-property name="property-values">
- <c:simple-property name="config-property-name"
- displayName="Name"
- description="Name of the Configuration Property"
- required="true"/>
- <c:simple-property name="config-property-type"
- displayName="Type"
- description="Type of the Configuration Property"
- required="true"/>
- <c:simple-property name="config-property-value"
- displayName="Value"
- description="Value of the Configuration Property"
- required="true"/>
- </c:map-property>
- </c:list-property>
-
- </c:group>
- </resource-configuration>
-
- <operation name="restartConnector"
- displayName="Re-start Connector"
- description="Start/re-start this connector binding" />
- <operation name="stopConnector"
- displayName="Stop Connector"
- description="Stop this connector binding">
- <parameters>
- <c:simple-property name="stopNow" type="boolean"
- default="true"
- description="If true, stop the connector binding forcefully. If false, wait until any pending work is completed." />
- </parameters>
- </operation>
- </service>
-
- <service name="Services"
- discovery="ServiceDiscoveryComponent"
- class="ServiceComponent">
-
- <resource-configuration>
- <c:group name="advanced" displayName="Advanced">
-
- <c:list-property name="config-property"
- displayName="Config Property"
- description="Configuration Properties"
- required="false">
- <c:map-property name="property-values">
- <c:simple-property name="config-property-name"
- displayName="Name"
- description="Name of the Configuration Property"
- required="true"/>
- <c:simple-property name="config-property-type"
- displayName="Type"
- description="Type of the Configuration Property"
- required="true"/>
- <c:simple-property name="config-property-value"
- displayName="Value"
- description="Value of the Configuration Property"
- required="true"/>
- </c:map-property>
- </c:list-property>
-
- </c:group>
- </resource-configuration>
-
- <operation name="restart"
- displayName="Re-start Service"
- description="Start/re-start this service" />
- <operation name="stop"
- displayName="Stop Service"
- description="Stop this service">
- <parameters>
- <c:simple-property name="stopNow" type="boolean"
- default="true"
- description="If true, stop the servie forcefully. If false, wait until any pending work is completed." />
- </parameters>
- </operation>
- </service>
-
- </service> <!-- end of VM -->
-
- </server> <!-- end of Host -->
-
- </server> <!-- end of System -->
-
- <server name="Security"
- discovery="NodeDiscoveryComponent"
- description="Security"
- class="SecurityComponent"
- singleton="true">
-
- <resource-configuration>
- <c:group name="configuration" displayName="Configuration">
- <c:simple-property name="enabled" type="boolean" summary="true" default="false" required="true"
- description="A flag indicating whether or not security is enabled for this system."/>
- <c:simple-property name="username" required="false" description="The name of the administrative principal (i.e. user) to authenticate."/>
- <c:simple-property name="password" type="password" required="false"
- description="The credentials (i.e. password) that should be used to authenticate the administrative principal."/>
- </c:group>
- </resource-configuration>
- </server> <!-- End of security -->
-
- </server> <!-- end of Platform -->
-
-
-
-<!--
-
-
- <service name="Connector Types"
- subCategory="Resources"
- discovery="ResourceDiscoveryComponent"
- class="ResourceComponent"
- description="Connector Types"
- createDeletePolicy="both"
- creationDataType="content">
-
- <operation name="getProperties"
- displayName="View properties"
- description="List the properties">
- <results>
- <c:list-property name="list">
- <c:map-property name="map">
- <c:simple-property name="Name" type="string"
- description="The name of this property" />
- <c:simple-property name="Connector Type" type="string"
- description="The type of connector that defines this data source" />
- <c:simple-property name="Default" type="string"
- description="The default value when not defined by the user" />
- <c:simple-property name="Masked" type="boolean"
- description="Indicates if the property value requires masking after being entered. A password would be a good example of a value needing masking." />
- <c:simple-property name="Descritpion" type="string"
- description="The property description" />
- </c:map-property>
- </c:list-property>
- </results>
- </operation>
-
- <content name="file" displayName="CDK File" category="deployable" isCreationType="true">
- <configuration>
- </configuration>
- </content>
- </service>
--->
-
</plugin>
\ No newline at end of file
Modified: branches/JCA/documentation/admin-guide/pom.xml
===================================================================
--- branches/JCA/documentation/admin-guide/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/documentation/admin-guide/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -3,7 +3,7 @@
<parent>
<groupId>org.jboss.teiid.documentation</groupId>
<artifactId>documentation</artifactId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>admin-guide</artifactId>
Modified: branches/JCA/documentation/admin-guide/src/main/docbook/en-US/content/appendix-c.xml
===================================================================
--- branches/JCA/documentation/admin-guide/src/main/docbook/en-US/content/appendix-c.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/documentation/admin-guide/src/main/docbook/en-US/content/appendix-c.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -38,15 +38,22 @@
/**
* Prints the previously executed ResultSet to system out, in the form required by the assert call. Usally in
* the interactive more the resultset is automatically read, so this applies only in the script mode.
- * @param comparemode - true - print in the format that can be used in the regression tests
- * - false - print to console
+ * @param comparePrint - true - print in the format that can be used in the regression tests
+ * - false - print to console
*/
-printResults(boolean true);
+printResults(boolean comparePrint);
/**
* Walks the ResultSet, but does not print any results. Good for performance testing. Usally in
* the interactive more the resultset is automatically read, so this applies only in the script mode.
*/
-walkResults()
+walkResults();
+
+/**
+ * Shows the plan associated with the last executed statement.
+ * @param xml - true - show in xml form
+ * - false - show in text form
+ */
+showPlan(boolean xml);
]]></programlisting>
</appendix>
\ No newline at end of file
Modified: branches/JCA/documentation/connector-developer-guide/pom.xml
===================================================================
--- branches/JCA/documentation/connector-developer-guide/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/documentation/connector-developer-guide/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -3,7 +3,7 @@
<parent>
<groupId>org.jboss.teiid.documentation</groupId>
<artifactId>documentation</artifactId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>connector-developer-guide</artifactId>
Modified: branches/JCA/documentation/docbook/custom.dtd
===================================================================
--- branches/JCA/documentation/docbook/custom.dtd 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/documentation/docbook/custom.dtd 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,4 +1,4 @@
-<!ENTITY versionNumber "6.3.0">
+<!ENTITY versionNumber "7.0.0">
<!ENTITY copyrightYear "2009">
<!ENTITY copyrightHolder "Red Hat, Inc.">
<!ENTITY url "http://www.jboss.org/teiid/">
Modified: branches/JCA/documentation/jdbc-connector-guide/pom.xml
===================================================================
--- branches/JCA/documentation/jdbc-connector-guide/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/documentation/jdbc-connector-guide/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -3,7 +3,7 @@
<parent>
<groupId>org.jboss.teiid.documentation</groupId>
<artifactId>documentation</artifactId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jdbc-connector</artifactId>
Modified: branches/JCA/documentation/pom.xml
===================================================================
--- branches/JCA/documentation/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/documentation/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -3,7 +3,7 @@
<parent>
<artifactId>teiid</artifactId>
<groupId>org.jboss.teiid</groupId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.jboss.teiid.documentation</groupId>
Modified: branches/JCA/documentation/quick-start-example/pom.xml
===================================================================
--- branches/JCA/documentation/quick-start-example/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/documentation/quick-start-example/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -3,7 +3,7 @@
<parent>
<groupId>org.jboss.teiid.documentation</groupId>
<artifactId>documentation</artifactId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>quick-start-guide</artifactId>
Modified: branches/JCA/documentation/reference/pom.xml
===================================================================
--- branches/JCA/documentation/reference/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/documentation/reference/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -3,7 +3,7 @@
<parent>
<groupId>org.jboss.teiid.documentation</groupId>
<artifactId>documentation</artifactId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>reference</artifactId>
Modified: branches/JCA/documentation/reference/src/main/docbook/en-US/content/datatypes.xml
===================================================================
--- branches/JCA/documentation/reference/src/main/docbook/en-US/content/datatypes.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/documentation/reference/src/main/docbook/en-US/content/datatypes.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -231,7 +231,7 @@
<para>When Teiid detects that an explicit conversion can
not be applied implicitly in criteria, the criteria will be
treated as false. For example:</para>
- <programlisting>SELECT * FROM my.group WHERE created_by = ‘not a date’</programlisting>
+ <programlisting>SELECT * FROM my.table WHERE created_by = ‘not a date’</programlisting>
<para>
Given that created_by is typed as date, rather than converting
<literal>'not a date'</literal>
@@ -350,10 +350,10 @@
<title>Conversion of String Literals</title>
<para> Teiid automatically converts string literals within a
SQL statement to their implied types. This typically occurs in a
- criteria comparison where an element with a different datatype
+ criteria comparison where an expression with a different datatype
is compared to a literal string:</para>
- <programlisting>SELECT * FROM my.group WHERE created_by = ‘2003-01-02’</programlisting>
- <para> Here if the created_by element has the datatype of date,
+ <programlisting>SELECT * FROM my.table WHERE created_by = ‘2003-01-02’</programlisting>
+ <para> Here if the created_by column has the datatype of date,
Teiid automatically converts the string literal to a date
datatype as well.</para>
</sect2>
Modified: branches/JCA/documentation/reference/src/main/docbook/en-US/content/federated_planning.xml
===================================================================
--- branches/JCA/documentation/reference/src/main/docbook/en-US/content/federated_planning.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/documentation/reference/src/main/docbook/en-US/content/federated_planning.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -127,13 +127,13 @@
<sect2 id="access_patterns">
<title>Access Patterns</title>
<para>
- Access patterns are used on both physical and virtual sources to
- specify the need for criteria against a set of elements. Failure to supply the criteria will
+ Access patterns are used on both physical tables and views to
+ specify the need for criteria against a set of columns. Failure to supply the criteria will
result in a planning error, rather than a run-away source query. Access
patterns can be applied in a set such that only one of the access
patterns is required to be satisfied.</para>
- <para>Currently any form of criteria may satisfy an access
- pattern as long as it contains references to affect elements.</para>
+ <para>Currently any form of criteria referencing an affected column may satisfy an access
+ pattern.</para>
</sect2>
<sect2>
<title>Pushdown</title>
@@ -405,8 +405,17 @@
</para>
<example>
<title>Retrieving a Query Plan</title>
- <programlisting>ResultSet rs = statement.executeQuery("select ...");
-com.metamatrix.jdbc.api.Statement mmstatement = (com.metamatrix.jdbc.api.Statement)statement;
+ <programlisting>com.metamatrix.jdbc.api.Statement mmstatement = (com.metamatrix.jdbc.api.Statement)statement;
+String sql = "select ...";
+
+mmstatement.setExecutionProperty(ExecutionProperties.PROP_SQL_OPTIONS, ExecutionProperties.SQL_OPTION_SHOWPLAN);
+//or
+//sql += " OPTION SHOWPLAN";
+//or
+//sql += " OPTION PLANONLY";
+
+ResultSet rs = statement.executeQuery(sql);
+
PlanNode queryPlan = mmstatement.getPlanDescription();
System.out.println(XMLOutputVisitor.convertToXML(queryPlan);</programlisting>
</example>
@@ -527,21 +536,6 @@
processing. Also processes an offset if present.</para>
<para />
</listitem>
- <listitem>
- <para> Dependent Feeder - This node accepts its input stream
- and forwards to its parent unchanged but also feeds all
- dependent sources that need the stream of data. Thus, this
- node actually performs no work within the tree, just diverts
- a copy of the tuple stream to listening nodes.</para>
- <para />
- </listitem>
- <listitem>
- <para> Dependent Wait - This node waits until a criteria
- requiring dependent values below this node has the necessary
- data to continue. At that point, it continues processing on
- it's subplan and merely forwards data from the child to the
- parent.</para>
- </listitem>
</itemizedlist>
<sect3>
<title>Node Statistics</title>
@@ -766,8 +760,8 @@
There are a set of pre-defined rules that are dynamically
assembled into a rule stack for every query. The rule stack is
assembled based on the contents of the user’s query and its
- transformations. For example, if there are no virtual layers, then
- RuleMergeVirtual, which merges virtual layers together, is not
+ transformations. For example, if there are no view layers, then
+ RuleMergeVirtual, which merges view layers together, is not
needed and will not be added to the stack. This allows the rule
stack to reflect the complexity of the query.</para>
<para>Logically the plan node data structure represents a tree of nodes
@@ -889,10 +883,10 @@
</para>
</listitem>
<listitem>
- <para>RuleMergeVirtual - merges virtual layers together. Virtual
+ <para>RuleMergeVirtual - merges view layers together. View
layers are connected by nesting canonical plans under source leaf
nodes of the parent plan. Each canonical plan is also sometimes
- referred to as a “query frame”. Merge virtual attempts to merge
+ referred to as a “query frame”. RuleMergeVirtual attempts to merge
child frames into the parent frame. The merge involves renaming
any symbols in the lower frame that overlap with symbols in the
upper frame. It also involves merging the join information
Modified: branches/JCA/documentation/reference/src/main/docbook/en-US/content/grammar.xml
===================================================================
--- branches/JCA/documentation/reference/src/main/docbook/en-US/content/grammar.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/documentation/reference/src/main/docbook/en-US/content/grammar.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,423 +1,773 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<appendix id="grammar">
-<title>BNF Grammar</title>
-<sect1 id="terminals">
-<title>Terminals</title>
-<para>
-<informaltable>
-<tgroup cols="1">
-<tbody>
- <!-- Token -->
- <row>
- <entry>
-<DEFAULT> SKIP : {" "| "\t"| "\n"| "\r"} </entry>
- </row>
- <!-- Token -->
- <row>
- <entry>
-<DEFAULT> MORE : {"/*" : IN_MULTI_LINE_COMMENT} </entry>
- </row>
- <!-- Token -->
- <row>
- <entry>
-<IN_MULTI_LINE_COMMENT> SPECIAL : {<MULTI_LINE_COMMENT: "*/"> : DEFAULT} </entry>
- </row>
- <!-- Token -->
- <row>
- <entry>
-<IN_MULTI_LINE_COMMENT> MORE : {<~[]>} </entry>
- </row>
- <!-- Token -->
- <row>
- <entry>
-<DEFAULT> TOKEN : {<STRING: "string">| <BOOLEAN: "boolean">| <BYTE: "byte">| <SHORT: "short">| <CHAR: "char">| <INTEGER: "integer">| <LONG: "long">| <BIGINTEGER: "biginteger">| <FLOAT: "float">| <DOUBLE: "double">| <BIGDECIMAL: "bigdecimal">| <DATE: "date">| <TIME: "time">| <TIMESTAMP: "timestamp">| <OBJECT: "object">| <BLOB: "blob">| <CLOB: "clob">| <XML: "xml">} </entry>
- </row>
- <!-- Token -->
- <row>
- <entry>
-<DEFAULT> TOKEN : {<CAST: "cast">| <CONVERT: "convert">| <TIMESTAMPADD: "timestampadd">| <TIMESTAMPDIFF: "timestampdiff">| <COUNT: "count">| <SUM: "sum">| <AVG: "avg">| <MIN: "min">| <MAX: "max">} </entry>
- </row>
- <!-- Token -->
- <row>
- <entry>
-<DEFAULT> TOKEN : {<ALL: "all">| <AND: "and">| <ANY: "any">| <AS: "as">| <ASC: "asc">| <BEGIN: "begin">| <BETWEEN: "between">| <BREAK: "break">| <BY: "by">| <CASE: "case">| <CONTINUE: "continue">| <CREATE: "create">| <CRITERIA: "criteria">| <CROSS: "cross">| <DEBUG: "debug">| <DECLARE: "declare">| <DELETE: "delete">| <DESC: "desc">| <DISTINCT: "distinct">| <DROP: "drop">| <ELSE: "else">| <END: "end">| <ERROR: "error">| <ESCAPE: "escape">| <EXCEPT: "except">| <EXEC: "exec">| <EXECUTE: "execute">| <EXISTS: "exists">| <FALSE: "false">| <FN: "fn">| <FOR: "for">| <FROM: "from">| <FULL: "full">| <GROUP: "group">| <HAS: "has">| <HAVING: "having">| <IF: "if">| <IN: "in">| <INNER: "inner">| <INSERT: "insert">| <INTERSECT: "intersect">|!
<INTO: "into">| <IS: "is">| <JOIN: "join">| <LEFT: "left">| <LIKE: "like">| <LIMIT: "limit">| <LOCAL: "local">| <LOOP: "loop">| <MAKEDEP: "makedep">| <MAKENOTDEP: "makenotdep">| <NOCACHE: "nocache">| <NOT: "not">| <NULL: "null">| <ON: "on">| <OJ: "oj">| <OPTION: "option">| <OR: "or">| <ORDER: "order">| <OUTER: "outer">| <PLANONLY: "planonly">| <PROCEDURE: "procedure">| <RIGHT: "right">| <SELECT: "select">| <SET: "set">| <SHOWPLAN: "showplan">| <SOME: "some">| <TABLE: "table">| <TEMPORARY: "temporary">| <THEN: "then">| <TRANSLATE: "translate">| <TRUE: "true">| <UNION: "union">| <UNKNOWN: "unknown">| <UPDATE: "update">| <USING: "using">| <VALUES: "values">| <VIRTUAL: "virtual">| <WHEN: "when">| <WHERE: "where">| <WITH: "with">| <WHILE: !
"while">} </entry>
- </row>
- <!-- Token -->
- <row>
- <entry>
-<DEFAULT> TOKEN : {<SQL_TSI_FRAC_SECOND: "SQL_TSI_FRAC_SECOND">| <SQL_TSI_SECOND: "SQL_TSI_SECOND">| <SQL_TSI_MINUTE: "SQL_TSI_MINUTE">| <SQL_TSI_HOUR: "SQL_TSI_HOUR">| <SQL_TSI_DAY: "SQL_TSI_DAY">| <SQL_TSI_WEEK: "SQL_TSI_WEEK">| <SQL_TSI_MONTH: "SQL_TSI_MONTH">| <SQL_TSI_QUARTER: "SQL_TSI_QUARTER">| <SQL_TSI_YEAR: "SQL_TSI_YEAR">} </entry>
- </row>
- <!-- Token -->
- <row>
- <entry>
-<DEFAULT> TOKEN : {<ALL_IN_GROUP: (<GROUP_PART> | <MMUUID_PART>) <PERIOD> <STAR>>| <VARIABLE: <ID> | <MMUUID>>| <#ID: <GROUP_PART> ((<PERIOD> | <SLASH>) (<QUOTED_ID> | <MMUUID_PART>))?>| <#ELEMENT: <GROUP_PART> (<PERIOD> | <SLASH>) <QUOTED_ID>>| <#GROUP_PART: ("#")? (<QUOTED_ID> (<PERIOD> | <SLASH>))? <QUOTED_ID>>| <#QUOTED_ID: <DOTTED_ID> | "\"" <DOTTED_ID> "\"">| <#DOTTED_ID: <ID_PART> ((<PERIOD> | <SLASH>) <ID_PART>)*>| <#ID_PART: ("@")? <LETTER> (<ID_CHAR>)*>| <#ID_CHAR: <LETTER> | "_" | <DIGIT>>| <#MMUUID: <MMUUID_PART> (<PERIOD> <MMUUID_PART>)?>| <#MMUUID_PART: "mmuuid:" (<MMUUID_CHAR>)*>| <#MMUUID_CHAR: ["a"-"f"] | ["0"-"9"] | "-">| <DATETYPE: "{" "d">| <TIMETYPE: "{" "t">| <TIMEST!
AMPTYPE: "{" "ts">| <BOOLEANTYPE: "{" "b">| <INTEGERVAL: (<MINUS>)? (<DIGIT>)+>| <FLOATVAL: (<MINUS>)? (<DIGIT>)* <PERIOD> (<DIGIT>)+ (["e","E"] (["+","-"])? (<DIGIT>)+)?>| <STRINGVAL: ("N")? (<STRINGA> | <STRINGB>)>| <#STRINGA: "\'" (~["\'"])* ("\'\'" (~["\'"])*)* "\'">| <#STRINGB: "\"" (~["\""])* ("\"\"" (~["\""])*)* "\"">| <#LETTER: ["a"-"z","A"-"Z"] | ["\u0153"-"\ufffd"]>| <#DIGIT: ["0"-"9"]>| <#COLON: ":">} </entry>
- </row>
- <!-- Token -->
- <row>
- <entry>
-<DEFAULT> TOKEN : {<COMMA: ",">| <PERIOD: ".">| <LPAREN: "(">| <RPAREN: ")">| <LBRACE: "{">| <RBRACE: "}">| <EQ: "=">| <NE: "<>">| <NE2: "!=">| <LT: "<">| <LE: "<=">| <GT: ">">| <GE: ">=">| <STAR: "*">| <SLASH: "/">| <PLUS: "+">| <MINUS: "-">| <QMARK: "?">| <DOLLAR: "$">| <SEMICOLON: ";">| <CONCAT_OP: "||">} </entry>
- </row>
-</tbody>
-</tgroup>
-</informaltable>
-</para>
-</sect1>
-<sect1 id="non-terminals">
-<title>Non-Terminals</title>
-<para>
-<informaltable>
-<tgroup cols="2">
-<colspec align="right" colwidth="1*"/>
-<colspec align="left" colwidth="2*"/>
-<tbody>
-<row>
-<entry valign="top"><anchor id="prod1"/>command ::= </entry>
-<entry valign="top">( ( <link linkend="prod2">createUpdateProcedure</link> ) | <link linkend="prod3">userCommand</link> | <link linkend="prod4">callableStatement</link> ) ( <SEMICOLON> )? <EOF></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod3"/>userCommand ::= </entry>
-<entry valign="top">( <link linkend="prod5">queryExpression</link> | <link linkend="prod6">storedProcedure</link> | <link linkend="prod7">insert</link> | <link linkend="prod8">update</link> | <link linkend="prod9">delete</link> | <link linkend="prod10">dropTable</link> | <link linkend="prod11">createTempTable</link> )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod10"/>dropTable ::= </entry>
-<entry valign="top"><DROP> <TABLE> <VARIABLE></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod11"/>createTempTable ::= </entry>
-<entry valign="top"><CREATE> <LOCAL> <TEMPORARY> <TABLE> <VARIABLE> <LPAREN> <link linkend="prod12">createElementsWithTypes</link> <RPAREN></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod13"/>errorStatement ::= </entry>
-<entry valign="top"><ERROR> <link linkend="prod14">expression</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod15"/>statement ::= </entry>
-<entry valign="top">( <link linkend="prod16">ifStatement</link> | <link linkend="prod17">loopStatement</link> | <link linkend="prod18">whileStatement</link> | <link linkend="prod19">delimitedStatement</link> )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod19"/>delimitedStatement ::= </entry>
-<entry valign="top">( <link linkend="prod20">sqlStatement</link> | <link linkend="prod13">errorStatement</link> | <link linkend="prod21">assignStatement</link> | <link linkend="prod22">declareStatement</link> | <link linkend="prod23">continueStatement</link> | <link linkend="prod24">breakStatement</link> ) <SEMICOLON></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod25"/>block ::= </entry>
-<entry valign="top">( <link linkend="prod15">statement</link> | ( <BEGIN> ( <link linkend="prod15">statement</link> )* <END> ) )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod24"/>breakStatement ::= </entry>
-<entry valign="top"><BREAK></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod23"/>continueStatement ::= </entry>
-<entry valign="top"><CONTINUE></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod18"/>whileStatement ::= </entry>
-<entry valign="top"><WHILE> <LPAREN> <link linkend="prod26">criteria</link> <RPAREN> <link linkend="prod25">block</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod17"/>loopStatement ::= </entry>
-<entry valign="top"><LOOP> <ON> <LPAREN> <link linkend="prod5">queryExpression</link> <RPAREN> <AS> <VARIABLE> <link linkend="prod25">block</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod16"/>ifStatement ::= </entry>
-<entry valign="top"><IF> <LPAREN> <link linkend="prod26">criteria</link> <RPAREN> <link linkend="prod25">block</link> ( <ELSE> <link linkend="prod25">block</link> )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod27"/>criteriaSelector ::= </entry>
-<entry valign="top">( ( <EQ> | <NE> | <NE2> | <LE> | <GE> | <LT> | <GT> | <IN> | <LIKE> | ( <IS> <NULL> ) | <BETWEEN> ) )? <CRITERIA> ( <ON> <LPAREN> <VARIABLE> ( <COMMA> <VARIABLE> )* <RPAREN> )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod28"/>hasCriteria ::= </entry>
-<entry valign="top"><HAS> <link linkend="prod27">criteriaSelector</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod22"/>declareStatement ::= </entry>
-<entry valign="top"><DECLARE> <link linkend="prod29">dataType</link> <VARIABLE> ( <EQ> <link linkend="prod30">assignStatementOperand</link> )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod21"/>assignStatement ::= </entry>
-<entry valign="top"><VARIABLE> <EQ> <link linkend="prod30">assignStatementOperand</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod30"/>assignStatementOperand ::= </entry>
-<entry valign="top">( ( <link linkend="prod7">insert</link> ) | <link linkend="prod8">update</link> | <link linkend="prod9">delete</link> | <link linkend="prod6">storedProcedure</link> | ( <link linkend="prod14">expression</link> ) | <link linkend="prod5">queryExpression</link> )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod20"/>sqlStatement ::= </entry>
-<entry valign="top">( ( <link linkend="prod31">dynamicCommand</link> ) | <link linkend="prod3">userCommand</link> )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod32"/>translateCriteria ::= </entry>
-<entry valign="top"><TRANSLATE> <link linkend="prod27">criteriaSelector</link> ( <WITH> <LPAREN> <VARIABLE> <EQ> <link linkend="prod14">expression</link> ( <COMMA> <VARIABLE> <EQ> <link linkend="prod14">expression</link> )* <RPAREN> )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod2"/>createUpdateProcedure ::= </entry>
-<entry valign="top"><CREATE> ( <VIRTUAL> )? ( <UPDATE> )? <PROCEDURE> <link linkend="prod25">block</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod31"/>dynamicCommand ::= </entry>
-<entry valign="top">( <EXECUTE> | <EXEC> ) <STRING> <link linkend="prod14">expression</link> ( <AS> <link linkend="prod12">createElementsWithTypes</link> ( <INTO> <VARIABLE> )? )? ( <USING> <link linkend="prod33">setClauseList</link> )? ( <UPDATE> ( ( <INTEGERVAL> ) | ( <STAR> ) ) )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod33"/>setClauseList ::= </entry>
-<entry valign="top"><VARIABLE> <EQ> ( <COMMA> <VARIABLE> <EQ> )*</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod12"/>createElementsWithTypes ::= </entry>
-<entry valign="top"><VARIABLE> <link linkend="prod29">dataType</link> ( <COMMA> <VARIABLE> <link linkend="prod29">dataType</link> )*</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod4"/>callableStatement ::= </entry>
-<entry valign="top"><LBRACE> ( <QMARK> <EQ> )? <VARIABLE> <VARIABLE> ( <LPAREN> ( <link linkend="prod34">executeUnnamedParams</link> ) <RPAREN> )? <RBRACE> ( <link linkend="prod35">option</link> )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod6"/>storedProcedure ::= </entry>
-<entry valign="top">( ( <EXEC> | <EXECUTE> ) <VARIABLE> <LPAREN> ( <link linkend="prod36">executeNamedParams</link> | <link linkend="prod34">executeUnnamedParams</link> ) <RPAREN> ) ( <link linkend="prod35">option</link> )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod34"/>executeUnnamedParams ::= </entry>
-<entry valign="top">( <link linkend="prod14">expression</link> ( <COMMA> <link linkend="prod14">expression</link> )* )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod36"/>executeNamedParams ::= </entry>
-<entry valign="top">( <link linkend="prod37">paramName</link> <EQ> <link linkend="prod14">expression</link> ( <COMMA> <link linkend="prod37">paramName</link> <EQ> <link linkend="prod14">expression</link> )* )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod37"/>paramName ::= </entry>
-<entry valign="top"><VARIABLE></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod7"/>insert ::= </entry>
-<entry valign="top"><INSERT> <INTO> <VARIABLE> ( <LPAREN> <VARIABLE> ( <COMMA> <VARIABLE> )* <RPAREN> )? ( ( <VALUES> <link linkend="prod38">rowValues</link> ) | ( <link linkend="prod5">queryExpression</link> ) ) ( <link linkend="prod35">option</link> )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod38"/>rowValues ::= </entry>
-<entry valign="top"><LPAREN> <link linkend="prod14">expression</link> ( <COMMA> <link linkend="prod14">expression</link> )* <RPAREN></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod8"/>update ::= </entry>
-<entry valign="top"><UPDATE> <VARIABLE> <SET> <link linkend="prod33">setClauseList</link> ( <link linkend="prod39">where</link> )? ( <link linkend="prod35">option</link> )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod9"/>delete ::= </entry>
-<entry valign="top"><DELETE> <FROM> <VARIABLE> ( <link linkend="prod39">where</link> )? ( <link linkend="prod35">option</link> )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod5"/>queryExpression ::= </entry>
-<entry valign="top"><link linkend="prod40">queryExpressionBody</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod40"/>queryExpressionBody ::= </entry>
-<entry valign="top"><link linkend="prod41">queryTerm</link> ( ( <UNION> | <EXCEPT> ) ( <ALL> | <DISTINCT> )? <link linkend="prod41">queryTerm</link> )* ( <link linkend="prod42">orderby</link> )? ( <link linkend="prod43">limit</link> )? ( <link linkend="prod35">option</link> )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod41"/>queryTerm ::= </entry>
-<entry valign="top"><link linkend="prod44">queryPrimary</link> ( <INTERSECT> ( <ALL> | <DISTINCT> )? <link linkend="prod44">queryPrimary</link> )*</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod44"/>queryPrimary ::= </entry>
-<entry valign="top">( <link linkend="prod45">query</link> | ( <LPAREN> <link linkend="prod40">queryExpressionBody</link> <RPAREN> ) )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod45"/>query ::= </entry>
-<entry valign="top"><link linkend="prod46">select</link> ( <link linkend="prod47">into</link> )? ( <link linkend="prod48">from</link> ( <link linkend="prod39">where</link> )? ( <link linkend="prod49">groupBy</link> )? ( <link linkend="prod50">having</link> )? )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod47"/>into ::= </entry>
-<entry valign="top"><INTO> ( <VARIABLE> )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod46"/>select ::= </entry>
-<entry valign="top"><SELECT> ( <ALL> | ( <DISTINCT> ) )? ( <STAR> | ( <link linkend="prod51">selectSymbol</link> ( <COMMA> <link linkend="prod51">selectSymbol</link> )* ) )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod51"/>selectSymbol ::= </entry>
-<entry valign="top">( ( <ALL_IN_GROUP> ) | ( <link linkend="prod14">expression</link> ) ( ( <AS> )? ( <VARIABLE> | <STRINGVAL> ) )? )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod52"/>aggregateSymbol ::= </entry>
-<entry valign="top">( ( <COUNT> <LPAREN> <STAR> <RPAREN> ) | ( ( <COUNT> | <SUM> | <AVG> | <MIN> | <MAX> ) <LPAREN> ( <DISTINCT> )? <link linkend="prod14">expression</link> <RPAREN> ) )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod48"/>from ::= </entry>
-<entry valign="top"><FROM> ( <link linkend="prod53">tableReference</link> ( <COMMA> <link linkend="prod53">tableReference</link> )* )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod53"/>tableReference ::= </entry>
-<entry valign="top">( ( <LBRACE> <OJ> <link linkend="prod54">tableReferenceUnescaped</link> <RBRACE> ) | <link linkend="prod54">tableReferenceUnescaped</link> )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod54"/>tableReferenceUnescaped ::= </entry>
-<entry valign="top">( <link linkend="prod55">joinedTable</link> | <link linkend="prod56">tablePrimary</link> )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod55"/>joinedTable ::= </entry>
-<entry valign="top"><link linkend="prod56">tablePrimary</link> ( ( <link linkend="prod57">crossJoin</link> | <link linkend="prod58">qualifiedJoin</link> ) )+</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod57"/>crossJoin ::= </entry>
-<entry valign="top">( ( <CROSS> | <UNION> ) <JOIN> <link linkend="prod56">tablePrimary</link> )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod58"/>qualifiedJoin ::= </entry>
-<entry valign="top">( ( ( <RIGHT> ( <OUTER> )? ) | ( <LEFT> ( <OUTER> )? ) | ( <FULL> ( <OUTER> )? ) | <INNER> )? <JOIN> <link linkend="prod53">tableReference</link> <ON> <link linkend="prod26">criteria</link> )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod56"/>tablePrimary ::= </entry>
-<entry valign="top">( <link linkend="prod59">unaryFromClause</link> | <link linkend="prod60">subqueryFromClause</link> | ( <LPAREN> <link linkend="prod55">joinedTable</link> <RPAREN> ) ) ( ( <MAKEDEP> ) | ( <MAKENOTDEP> ) )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod60"/>subqueryFromClause ::= </entry>
-<entry valign="top"><LPAREN> ( <link linkend="prod5">queryExpression</link> | <link linkend="prod6">storedProcedure</link> ) <RPAREN> ( <AS> )? <VARIABLE></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod59"/>unaryFromClause ::= </entry>
-<entry valign="top">( <VARIABLE> ( ( <AS> )? <VARIABLE> )? )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod39"/>where ::= </entry>
-<entry valign="top"><WHERE> <link linkend="prod26">criteria</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod26"/>criteria ::= </entry>
-<entry valign="top"><link linkend="prod61">compoundCritOr</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod61"/>compoundCritOr ::= </entry>
-<entry valign="top"><link linkend="prod62">compoundCritAnd</link> ( <OR> <link linkend="prod62">compoundCritAnd</link> )*</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod62"/>compoundCritAnd ::= </entry>
-<entry valign="top"><link linkend="prod63">notCrit</link> ( <AND> <link linkend="prod63">notCrit</link> )*</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod63"/>notCrit ::= </entry>
-<entry valign="top">( <NOT> )? <link linkend="prod64">primary</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod64"/>primary ::= </entry>
-<entry valign="top">( <link linkend="prod65">predicate</link> | ( <LPAREN> <link linkend="prod26">criteria</link> <RPAREN> ) )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod65"/>predicate ::= </entry>
-<entry valign="top">( <link linkend="prod66">subqueryCompareCriteria</link> | <link linkend="prod67">compareCrit</link> | <link linkend="prod68">matchCrit</link> | <link linkend="prod69">betweenCrit</link> | <link linkend="prod70">setCrit</link> | <link linkend="prod71">existsCriteria</link> | <link linkend="prod28">hasCriteria</link> | <link linkend="prod32">translateCriteria</link> | <link linkend="prod72">isNullCrit</link> )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod67"/>compareCrit ::= </entry>
-<entry valign="top"><link linkend="prod14">expression</link> ( <EQ> | <NE> | <NE2> | <LT> | <LE> | <GT> | <GE> ) <link linkend="prod14">expression</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod73"/>subquery ::= </entry>
-<entry valign="top"><LPAREN> ( <link linkend="prod5">queryExpression</link> | <link linkend="prod6">storedProcedure</link> ) <RPAREN></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod66"/>subqueryCompareCriteria ::= </entry>
-<entry valign="top"><link linkend="prod14">expression</link> ( <EQ> | <NE> | <NE2> | <LT> | <LE> | <GT> | <GE> ) ( <ANY> | <SOME> | <ALL> ) <link linkend="prod73">subquery</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod68"/>matchCrit ::= </entry>
-<entry valign="top">( <link linkend="prod14">expression</link> ( <NOT> )? <LIKE> <link linkend="prod14">expression</link> ( <link linkend="prod74">escapeChar</link> | ( <LBRACE> <link linkend="prod74">escapeChar</link> <RBRACE> ) )? )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod74"/>escapeChar ::= </entry>
-<entry valign="top"><ESCAPE> <STRINGVAL></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod69"/>betweenCrit ::= </entry>
-<entry valign="top"><link linkend="prod14">expression</link> ( <NOT> )? <BETWEEN> <link linkend="prod14">expression</link> <AND> <link linkend="prod14">expression</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod72"/>isNullCrit ::= </entry>
-<entry valign="top"><link linkend="prod14">expression</link> <IS> ( <NOT> )? <NULL></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod70"/>setCrit ::= </entry>
-<entry valign="top"><link linkend="prod14">expression</link> ( <NOT> )? <IN> ( ( <link linkend="prod73">subquery</link> ) | ( <LPAREN> <link linkend="prod14">expression</link> ( <COMMA> <link linkend="prod14">expression</link> )* <RPAREN> ) )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod71"/>existsCriteria ::= </entry>
-<entry valign="top"><EXISTS> <link linkend="prod73">subquery</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod49"/>groupBy ::= </entry>
-<entry valign="top"><GROUP> <BY> ( <link linkend="prod75">groupByItem</link> ( <COMMA> <link linkend="prod75">groupByItem</link> )* )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod75"/>groupByItem ::= </entry>
-<entry valign="top"><link linkend="prod14">expression</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod50"/>having ::= </entry>
-<entry valign="top"><HAVING> <link linkend="prod26">criteria</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod42"/>orderby ::= </entry>
-<entry valign="top"><ORDER> <BY> ( <VARIABLE> | <STRINGVAL> | <INTEGERVAL> ) ( <ASC> | <DESC> )? ( <COMMA> ( <VARIABLE> | <STRINGVAL> | <INTEGERVAL> ) ( <ASC> | <DESC> )? )*</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod43"/>limit ::= </entry>
-<entry valign="top"><LIMIT> ( <INTEGERVAL> | <QMARK> ) ( <COMMA> ( <INTEGERVAL> | <QMARK> ) )?</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod35"/>option ::= </entry>
-<entry valign="top"><OPTION> ( <SHOWPLAN> | <PLANONLY> | <DEBUG> | <MAKEDEP> <VARIABLE> ( <COMMA> <VARIABLE> )* | <MAKENOTDEP> <VARIABLE> ( <COMMA> <VARIABLE> )* | <NOCACHE> ( <VARIABLE> ( <COMMA> <VARIABLE> )* )? )*</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod14"/>expression ::= </entry>
-<entry valign="top"><link linkend="prod76">concatExpression</link></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod76"/>concatExpression ::= </entry>
-<entry valign="top">( <link linkend="prod77">plusExpression</link> ( <CONCAT_OP> <link linkend="prod77">plusExpression</link> )* )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod77"/>plusExpression ::= </entry>
-<entry valign="top">( <link linkend="prod78">timesExpression</link> ( <link linkend="prod79">plusOperator</link> <link linkend="prod78">timesExpression</link> )* )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod79"/>plusOperator ::= </entry>
-<entry valign="top">( <PLUS> | <MINUS> )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod78"/>timesExpression ::= </entry>
-<entry valign="top">( <link linkend="prod80">basicExpression</link> ( <link linkend="prod81">timesOperator</link> <link linkend="prod80">basicExpression</link> )* )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod81"/>timesOperator ::= </entry>
-<entry valign="top">( <STAR> | <SLASH> )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod80"/>basicExpression ::= </entry>
-<entry valign="top">( <QMARK> | <link linkend="prod82">literal</link> | ( <LBRACE> <FN> <link linkend="prod83">function</link> <RBRACE> ) | ( <link linkend="prod52">aggregateSymbol</link> ) | ( <link linkend="prod83">function</link> ) | ( <VARIABLE> ) | ( <LPAREN> <link linkend="prod14">expression</link> <RPAREN> ) | <link linkend="prod73">subquery</link> | <link linkend="prod84">caseExpression</link> | <link linkend="prod85">searchedCaseExpression</link> )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod84"/>caseExpression ::= </entry>
-<entry valign="top"><CASE> <link linkend="prod14">expression</link> ( <WHEN> <link linkend="prod14">expression</link> <THEN> <link linkend="prod14">expression</link> )+ ( <ELSE> <link linkend="prod14">expression</link> )? <END></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod85"/>searchedCaseExpression ::= </entry>
-<entry valign="top"><CASE> ( <WHEN> <link linkend="prod26">criteria</link> <THEN> <link linkend="prod14">expression</link> )+ ( <ELSE> <link linkend="prod14">expression</link> )? <END></entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod83"/>function ::= </entry>
-<entry valign="top">( ( <CONVERT> <LPAREN> <link linkend="prod14">expression</link> <COMMA> <link linkend="prod29">dataType</link> <RPAREN> ) | ( <CAST> <LPAREN> <link linkend="prod14">expression</link> <AS> <link linkend="prod29">dataType</link> <RPAREN> ) | ( ( <TIMESTAMPADD> | <TIMESTAMPDIFF> ) <LPAREN> <link linkend="prod86">intervalType</link> <COMMA> <link linkend="prod14">expression</link> <COMMA> <link linkend="prod14">expression</link> <RPAREN> ) | ( ( <LEFT> | <RIGHT> | <CHAR> ) <LPAREN> ( <link linkend="prod14">expression</link> ( <COMMA> <link linkend="prod14">expression</link> )* )? <RPAREN> ) | ( ( <INSERT> ) <LPAREN> ( <link linkend="prod14">expression</link> ( <COMMA> <link linkend="prod14">expression</link> )* )? <RPAREN> ) | ( ( <TRANSLATE> ) <LPAREN> ( <link linkend="prod14">expression</link> ( <COM!
MA> <link linkend="prod14">expression</link> )* )? <RPAREN> ) | ( <VARIABLE> <LPAREN> ( <link linkend="prod14">expression</link> ( <COMMA> <link linkend="prod14">expression</link> )* )? <RPAREN> ) )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod29"/>dataType ::= </entry>
-<entry valign="top">( <STRING> | <BOOLEAN> | <BYTE> | <SHORT> | <CHAR> | <INTEGER> | <LONG> | <BIGINTEGER> | <FLOAT> | <DOUBLE> | <BIGDECIMAL> | <DATE> | <TIME> | <TIMESTAMP> | <OBJECT> | <BLOB> | <CLOB> | <XML> )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod86"/>intervalType ::= </entry>
-<entry valign="top">( <SQL_TSI_FRAC_SECOND> | <SQL_TSI_SECOND> | <SQL_TSI_MINUTE> | <SQL_TSI_HOUR> | <SQL_TSI_DAY> | <SQL_TSI_WEEK> | <SQL_TSI_MONTH> | <SQL_TSI_QUARTER> | <SQL_TSI_YEAR> )</entry>
-</row>
-<row>
-<entry valign="top"><anchor id="prod82"/>literal ::= </entry>
-<entry valign="top">( <STRINGVAL> | <INTEGERVAL> | <FLOATVAL> | <FALSE> | <TRUE> | <UNKNOWN> | <NULL> | ( <BOOLEANTYPE> <STRINGVAL> <RBRACE> ) | ( <TIMESTAMPTYPE> <STRINGVAL> <RBRACE> ) | ( <DATETYPE> <STRINGVAL> <RBRACE> ) | ( <TIMETYPE> <STRINGVAL> <RBRACE> ) )</entry>
-</row>
-</tbody>
-</tgroup>
-</informaltable>
-</para>
-</sect1>
+ <title>BNF for SQL Grammar</title>
+ <sect1 remap="h2">
+ <title>TOKENS</title>
+ <informaltable frame="none">
+ <tgroup cols="1">
+ <colspec colname="c1" colwidth="100*"/>
+ <!-- Token -->
+ <tbody>
+ <row>
+ <entry><para>
+<DEFAULT> SKIP : {
+" "
+| "\t"
+| "\n"
+| "\r"
+}
+
+ </para></entry>
+ </row>
+ <!-- Token -->
+ <row>
+ <entry><para>
+<DEFAULT> MORE : {
+"/*" : IN_MULTI_LINE_COMMENT
+}
+
+ </para></entry>
+ </row>
+ <!-- Token -->
+ <row>
+ <entry><para>
+<IN_MULTI_LINE_COMMENT> SPECIAL : {
+<MULTI_LINE_COMMENT: "*/"> : DEFAULT
+}
+
+ </para></entry>
+ </row>
+ <!-- Token -->
+ <row>
+ <entry><para>
+<IN_MULTI_LINE_COMMENT> MORE : {
+<~[]>
+}
+
+ </para></entry>
+ </row>
+ <!-- Token -->
+ <row>
+ <entry><para>
+<DEFAULT> TOKEN : {
+<STRING: "string">
+| <BOOLEAN: "boolean">
+| <BYTE: "byte">
+| <SHORT: "short">
+| <CHAR: "char">
+| <INTEGER: "integer">
+| <LONG: "long">
+| <BIGINTEGER: "biginteger">
+| <FLOAT: "float">
+| <DOUBLE: "double">
+| <BIGDECIMAL: "bigdecimal">
+| <DATE: "date">
+| <TIME: "time">
+| <TIMESTAMP: "timestamp">
+| <OBJECT: "object">
+| <BLOB: "blob">
+| <CLOB: "clob">
+| <XML: "xml">
+}
+
+ </para></entry>
+ </row>
+ <!-- Token -->
+ <row>
+ <entry><para>
+<DEFAULT> TOKEN : {
+<CAST: "cast">
+| <CONVERT: "convert">
+| <TIMESTAMPADD: "timestampadd">
+| <TIMESTAMPDIFF: "timestampdiff">
+| <COUNT: "count">
+| <SUM: "sum">
+| <AVG: "avg">
+| <MIN: "min">
+| <MAX: "max">
+}
+
+ </para></entry>
+ </row>
+ <!-- Token -->
+ <row>
+ <entry><para>
+<DEFAULT> TOKEN : {
+<ALL: "all">
+| <AND: "and">
+| <ANY: "any">
+| <AS: "as">
+| <ASC: "asc">
+| <BEGIN: "begin">
+| <BETWEEN: "between">
+| <BREAK: "break">
+| <BY: "by">
+| <CASE: "case">
+| <CONTINUE: "continue">
+| <CREATE: "create">
+| <CRITERIA: "criteria">
+| <CROSS: "cross">
+| <DEBUG: "debug">
+| <DECLARE: "declare">
+| <DELETE: "delete">
+| <DESC: "desc">
+| <DISTINCT: "distinct">
+| <DROP: "drop">
+| <ELSE: "else">
+| <END: "end">
+| <ERROR: "error">
+| <ESCAPE: "escape">
+| <EXCEPT: "except">
+| <EXEC: "exec">
+| <EXECUTE: "execute">
+| <EXISTS: "exists">
+| <FALSE: "false">
+| <FN: "fn">
+| <FOR: "for">
+| <FROM: "from">
+| <FULL: "full">
+| <GROUP: "group">
+| <HAS: "has">
+| <HAVING: "having">
+| <IF: "if">
+| <IN: "in">
+| <INNER: "inner">
+| <INSERT: "insert">
+| <INTERSECT: "intersect">
+| <INTO: "into">
+| <IS: "is">
+| <JOIN: "join">
+| <LEFT: "left">
+| <LIKE: "like">
+| <LIMIT: "limit">
+| <LOCAL: "local">
+| <LOOP: "loop">
+| <MAKEDEP: "makedep">
+| <MAKENOTDEP: "makenotdep">
+| <NOCACHE: "nocache">
+| <NOT: "not">
+| <NULL: "null">
+| <ON: "on">
+| <OJ: "oj">
+| <OPTION: "option">
+| <OR: "or">
+| <ORDER: "order">
+| <OUTER: "outer">
+| <PLANONLY: "planonly">
+| <PROCEDURE: "procedure">
+| <RIGHT: "right">
+| <SELECT: "select">
+| <SET: "set">
+| <SHOWPLAN: "showplan">
+| <SOME: "some">
+| <TABLE: "table">
+| <TEMPORARY: "temporary">
+| <THEN: "then">
+| <TRANSLATE: "translate">
+| <TRUE: "true">
+| <UNION: "union">
+| <UNKNOWN: "unknown">
+| <UPDATE: "update">
+| <USING: "using">
+| <VALUES: "values">
+| <VIRTUAL: "virtual">
+| <WHEN: "when">
+| <WHERE: "where">
+| <WITH: "with">
+| <WHILE: "while">
+}
+
+ </para></entry>
+ </row>
+ <!-- Token -->
+ <row>
+ <entry><para>
+<DEFAULT> TOKEN : {
+<SQL_TSI_FRAC_SECOND: "SQL_TSI_FRAC_SECOND">
+| <SQL_TSI_SECOND: "SQL_TSI_SECOND">
+| <SQL_TSI_MINUTE: "SQL_TSI_MINUTE">
+| <SQL_TSI_HOUR: "SQL_TSI_HOUR">
+| <SQL_TSI_DAY: "SQL_TSI_DAY">
+| <SQL_TSI_WEEK: "SQL_TSI_WEEK">
+| <SQL_TSI_MONTH: "SQL_TSI_MONTH">
+| <SQL_TSI_QUARTER: "SQL_TSI_QUARTER">
+| <SQL_TSI_YEAR: "SQL_TSI_YEAR">
+}
+
+ </para></entry>
+ </row>
+ <!-- Token -->
+ <row>
+ <entry><para>
+<DEFAULT> TOKEN : {
+<ALL_IN_GROUP: <ID> <PERIOD> <STAR>>
+| <ID: <QUOTED_ID> (<PERIOD> <QUOTED_ID>)*>
+| <#QUOTED_ID: <ID_PART> | "\"" ("\"\"" | ~["\""])+ "\"">
+| <#ID_PART: ("@" | "#" | <LETTER>) (<LETTER> | "_" | <DIGIT>)*>
+| <DATETYPE: "{" "d">
+| <TIMETYPE: "{" "t">
+| <TIMESTAMPTYPE: "{" "ts">
+| <BOOLEANTYPE: "{" "b">
+| <INTEGERVAL: (<MINUS>)? (<DIGIT>)+>
+| <FLOATVAL: (<MINUS>)? (<DIGIT>)* <PERIOD> (<DIGIT>)+ (["e","E"] (["+","-"])? (<DIGIT>)+)?>
+| <STRINGVAL: ("N")? "\'" ("\'\'" | ~["\'"])* "\'">
+| <#LETTER: ["a"-"z","A"-"Z"] | ["\u0153"-"\ufffd"]>
+| <#DIGIT: ["0"-"9"]>
+}
+
+ </para></entry>
+ </row>
+ <!-- Token -->
+ <row>
+ <entry><para>
+<DEFAULT> TOKEN : {
+<COMMA: ",">
+| <PERIOD: ".">
+| <LPAREN: "(">
+| <RPAREN: ")">
+| <LBRACE: "{">
+| <RBRACE: "}">
+| <EQ: "=">
+| <NE: "<>">
+| <NE2: "!=">
+| <LT: "<">
+| <LE: "<=">
+| <GT: ">">
+| <GE: ">=">
+| <STAR: "*">
+| <SLASH: "/">
+| <PLUS: "+">
+| <MINUS: "-">
+| <QMARK: "?">
+| <DOLLAR: "$">
+| <SEMICOLON: ";">
+| <CONCAT_OP: "||">
+}
+
+ </para></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </sect1>
+ <sect1 remap="h2">
+ <title>NON-TERMINALS</title>
+ <informaltable frame="none">
+ <tgroup cols="3">
+ <colspec colname="c1" colwidth="33*"/>
+ <colspec colname="c2" colwidth="5*"/>
+ <colspec colname="c3" colwidth="62*"/>
+ <tbody>
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod1" xreflabel="stringVal"/>stringVal</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( <STRINGVAL> )</para></entry>
+ </row>
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod2" xreflabel="id"/>id</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( <ID> )</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod3" xreflabel="command"/>command</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( ( <link linkend="SQLParser.html-prod4">createUpdateProcedure</link> ) | <link linkend="SQLParser.html-prod5">userCommand</link> | <link linkend="SQLParser.html-prod6">callableStatement</link> ) ( <SEMICOLON> )? <EOF></para></entry>
+ </row>
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod5" xreflabel="userCommand"/>userCommand</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( <link linkend="SQLParser.html-prod7">queryExpression</link> | <link linkend="SQLParser.html-prod8">storedProcedure</link> | <link linkend="SQLParser.html-prod9">insert</link> | <link linkend="SQLParser.html-prod10">update</link> | <link linkend="SQLParser.html-prod11">delete</link> | <link linkend="SQLParser.html-prod12">dropTable</link> | <link linkend="SQLParser.html-prod13">createTempTable</link> )</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod12" xreflabel="dropTable"/>dropTable</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><DROP> <TABLE> <link linkend="SQLParser.html-prod2">id</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod13" xreflabel="createTempTable"/>createTempTable</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><CREATE> <LOCAL> <TEMPORARY> <TABLE> <link linkend="SQLParser.html-prod2">id</link> <LPAREN> <link linkend="SQLParser.html-prod14">createElementsWithTypes</link> <RPAREN></para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod15" xreflabel="errorStatement"/>errorStatement</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><ERROR> <link linkend="SQLParser.html-prod16">expression</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod17" xreflabel="statement"/>statement</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( <link linkend="SQLParser.html-prod18">ifStatement</link> | <link linkend="SQLParser.html-prod19">loopStatement</link> | <link linkend="SQLParser.html-prod20">whileStatement</link> | <link linkend="SQLParser.html-prod21">delimitedStatement</link> )</para></entry>
+ </row>
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod21" xreflabel="delimitedStatement"/>delimitedStatement</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( <link linkend="SQLParser.html-prod22">sqlStatement</link> | <link linkend="SQLParser.html-prod15">errorStatement</link> | <link linkend="SQLParser.html-prod23">assignStatement</link> | <link linkend="SQLParser.html-prod24">declareStatement</link> | <link linkend="SQLParser.html-prod25">continueStatement</link> | <link linkend="SQLParser.html-prod26">breakStatement</link> ) <SEMICOLON></para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod27" xreflabel="block"/>block</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( <link linkend="SQLParser.html-prod17">statement</link> | ( <BEGIN> ( <link linkend="SQLParser.html-prod17">statement</link> )* <END> ) )</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod26" xreflabel="breakStatement"/>breakStatement</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><BREAK></para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod25" xreflabel="continueStatement"/>continueStatement</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><CONTINUE></para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod20" xreflabel="whileStatement"/>whileStatement</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><WHILE> <LPAREN> <link linkend="SQLParser.html-prod28">criteria</link> <RPAREN> <link linkend="SQLParser.html-prod27">block</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod19" xreflabel="loopStatement"/>loopStatement</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><LOOP> <ON> <LPAREN> <link linkend="SQLParser.html-prod7">queryExpression</link> <RPAREN> <AS> <link linkend="SQLParser.html-prod2">id</link><link linkend="SQLParser.html-prod27">block</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod18" xreflabel="ifStatement"/>ifStatement</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><IF> <LPAREN> <link linkend="SQLParser.html-prod28">criteria</link> <RPAREN> <link linkend="SQLParser.html-prod27">block</link> ( <ELSE> <link linkend="SQLParser.html-prod27">block</link> )?</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod29" xreflabel="criteriaSelector"/>criteriaSelector</para></entry>
+ <entry align="center" valign="top"><para>::=</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="SQLParser.html-prod2">id</link> ( <COMMA> <link linkend="SQLParser.html-prod2">id</link> )* <RPAREN> )?</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod30" xreflabel="hasCriteria"/>hasCriteria</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><HAS> <link linkend="SQLParser.html-prod29">criteriaSelector</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod24" xreflabel="declareStatement"/>declareStatement</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><DECLARE> <link linkend="SQLParser.html-prod31">dataType</link><link linkend="SQLParser.html-prod2">id</link> ( <EQ> <link linkend="SQLParser.html-prod32">assignStatementOperand</link> )?</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod23" xreflabel="assignStatement"/>assignStatement</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><link linkend="SQLParser.html-prod2">id</link> <EQ> <link linkend="SQLParser.html-prod32">assignStatementOperand</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod32" xreflabel="assignStatementOperand"/>assignStatementOperand</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( ( <link linkend="SQLParser.html-prod9">insert</link> ) | <link linkend="SQLParser.html-prod10">update</link> | <link linkend="SQLParser.html-prod11">delete</link> | <link linkend="SQLParser.html-prod8">storedProcedure</link> | ( <link linkend="SQLParser.html-prod16">expression</link> ) | <link linkend="SQLParser.html-prod7">queryExpression</link> )</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod22" xreflabel="sqlStatement"/>sqlStatement</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( ( <link linkend="SQLParser.html-prod33">dynamicCommand</link> ) | <link linkend="SQLParser.html-prod5">userCommand</link> )</para></entry>
+ </row>
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod34" xreflabel="translateCriteria"/>translateCriteria</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><TRANSLATE> <link linkend="SQLParser.html-prod29">criteriaSelector</link> ( <WITH> <LPAREN> <link linkend="SQLParser.html-prod2">id</link> <EQ> <link linkend="SQLParser.html-prod16">expression</link> ( <COMMA> <link linkend="SQLParser.html-prod2">id</link> <EQ> <link linkend="SQLParser.html-prod16">expression</link> )* <RPAREN> )?</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod4" xreflabel="createUpdateProcedure"/>createUpdateProcedure</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><CREATE> ( <VIRTUAL> )? ( <UPDATE> )? <PROCEDURE> <link linkend="SQLParser.html-prod27">block</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod33" xreflabel="dynamicCommand"/>dynamicCommand</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( <EXECUTE> | <EXEC> ) <STRING> <link linkend="SQLParser.html-prod16">expression</link> ( <AS> <link linkend="SQLParser.html-prod14">createElementsWithTypes</link> ( <INTO> <link linkend="SQLParser.html-prod2">id</link> )? )? ( <USING> <link linkend="SQLParser.html-prod35">setClauseList</link> )? ( <UPDATE> ( ( <INTEGERVAL> ) | ( <STAR> ) ) )?</para></entry>
+ </row>
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod35" xreflabel="setClauseList"/>setClauseList</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><link linkend="SQLParser.html-prod2">id</link> <EQ> ( <COMMA> <link linkend="SQLParser.html-prod2">id</link> <EQ> )*</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod14" xreflabel="createElementsWithTypes"/>createElementsWithTypes</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><link linkend="SQLParser.html-prod2">id</link><link linkend="SQLParser.html-prod31">dataType</link> ( <COMMA> <link linkend="SQLParser.html-prod2">id</link><link linkend="SQLParser.html-prod31">dataType</link> )*</para></entry>
+ </row>
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod6" xreflabel="callableStatement"/>callableStatement</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><LBRACE> ( <QMARK> <EQ> )? <ID> <link linkend="SQLParser.html-prod2">id</link> ( <LPAREN> ( <link linkend="SQLParser.html-prod36">executeUnnamedParams</link> ) <RPAREN> )? <RBRACE> ( <link linkend="SQLParser.html-prod37">option</link> )?</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod8" xreflabel="storedProcedure"/>storedProcedure</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( ( <EXEC> | <EXECUTE> ) <link linkend="SQLParser.html-prod2">id</link> <LPAREN> ( <link linkend="SQLParser.html-prod38">executeNamedParams</link> | <link linkend="SQLParser.html-prod36">executeUnnamedParams</link> ) <RPAREN> ) ( <link linkend="SQLParser.html-prod37">option</link> )?</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod36" xreflabel="executeUnnamedParams"/>executeUnnamedParams</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( <link linkend="SQLParser.html-prod16">expression</link> ( <COMMA> <link linkend="SQLParser.html-prod16">expression</link> )* )?</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod38" xreflabel="executeNamedParams"/>executeNamedParams</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( <link linkend="SQLParser.html-prod2">id</link> <EQ> <link linkend="SQLParser.html-prod16">expression</link> ( <COMMA> <link linkend="SQLParser.html-prod2">id</link> <EQ> <link linkend="SQLParser.html-prod16">expression</link> )* )</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod9" xreflabel="insert"/>insert</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><INSERT> <INTO> <link linkend="SQLParser.html-prod2">id</link> ( <LPAREN> <link linkend="SQLParser.html-prod2">id</link> ( <COMMA> <link linkend="SQLParser.html-prod2">id</link> )* <RPAREN> )? ( ( <VALUES> <link linkend="SQLParser.html-prod39">rowValues</link> ) | ( <link linkend="SQLParser.html-prod7">queryExpression</link> ) ) ( <link linkend="SQLParser.html-prod37">option</link> )?</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod39" xreflabel="rowValues"/>rowValues</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><LPAREN> <link linkend="SQLParser.html-prod16">expression</link> ( <COMMA> <link linkend="SQLParser.html-prod16">expression</link> )* <RPAREN></para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod10" xreflabel="update"/>update</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><UPDATE> <link linkend="SQLParser.html-prod2">id</link> <SET> <link linkend="SQLParser.html-prod35">setClauseList</link> ( <link linkend="SQLParser.html-prod40">where</link> )? ( <link linkend="SQLParser.html-prod37">option</link> )?</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod11" xreflabel="delete"/>delete</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><DELETE> <FROM> <link linkend="SQLParser.html-prod2">id</link> ( <link linkend="SQLParser.html-prod40">where</link> )? ( <link linkend="SQLParser.html-prod37">option</link> )?</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod7" xreflabel="queryExpression"/>queryExpression</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><link linkend="SQLParser.html-prod41">queryExpressionBody</link></para></entry>
+ </row>
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod41" xreflabel="queryExpressionBody"/>queryExpressionBody</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><link linkend="SQLParser.html-prod42">queryTerm</link> ( ( <UNION> | <EXCEPT> ) ( <ALL> | <DISTINCT> )? <link linkend="SQLParser.html-prod42">queryTerm</link> )* ( <link linkend="SQLParser.html-prod43">orderby</link> )? ( <link linkend="SQLParser.html-prod44">limit</link> )? ( <link linkend="SQLParser.html-prod37">option</link> )?</para></entry>
+ </row>
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod42" xreflabel="queryTerm"/>queryTerm</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><link linkend="SQLParser.html-prod45">queryPrimary</link> ( <INTERSECT> ( <ALL> | <DISTINCT> )? <link linkend="SQLParser.html-prod45">queryPrimary</link> )*</para></entry>
+ </row>
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod45" xreflabel="queryPrimary"/>queryPrimary</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( <link linkend="SQLParser.html-prod46">query</link> | ( <LPAREN> <link linkend="SQLParser.html-prod41">queryExpressionBody</link> <RPAREN> ) )</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod46" xreflabel="query"/>query</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><link linkend="SQLParser.html-prod47">select</link> ( <link linkend="SQLParser.html-prod48">into</link> )? ( <link linkend="SQLParser.html-prod49">from</link> ( <link linkend="SQLParser.html-prod40">where</link> )? ( <link linkend="SQLParser.html-prod50">groupBy</link> )? ( <link linkend="SQLParser.html-prod51">having</link> )? )?</para></entry>
+ </row>
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod48" xreflabel="into"/>into</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><INTO> ( <link linkend="SQLParser.html-prod2">id</link> )</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod47" xreflabel="select"/>select</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><SELECT> ( <ALL> | ( <DISTINCT> ) )? ( <STAR> | ( <link linkend="SQLParser.html-prod52">selectSymbol</link> ( <COMMA> <link linkend="SQLParser.html-prod52">selectSymbol</link> )* ) )</para></entry>
+ </row>
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod52" xreflabel="selectSymbol"/>selectSymbol</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( ( <ALL_IN_GROUP> ) | ( <link linkend="SQLParser.html-prod16">expression</link> ) ( ( <AS> )? ( <link linkend="SQLParser.html-prod2">id</link> ) )? )</para></entry>
+ </row>
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod53" xreflabel="aggregateSymbol"/>aggregateSymbol</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( ( <COUNT> <LPAREN> <STAR> <RPAREN> ) | ( ( <COUNT> | <SUM> | <AVG> | <MIN> | <MAX> ) <LPAREN> ( <DISTINCT> )? <link linkend="SQLParser.html-prod16">expression</link> <RPAREN> ) )</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod49" xreflabel="from"/>from</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><FROM> ( <link linkend="SQLParser.html-prod54">tableReference</link> ( <COMMA> <link linkend="SQLParser.html-prod54">tableReference</link> )* )</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod54" xreflabel="tableReference"/>tableReference</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( ( <LBRACE> <OJ> <link linkend="SQLParser.html-prod55">tableReferenceUnescaped</link> <RBRACE> ) | <link linkend="SQLParser.html-prod55">tableReferenceUnescaped</link> )</para></entry>
+ </row>
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod55" xreflabel="tableReferenceUnescaped"/>tableReferenceUnescaped</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( <link linkend="SQLParser.html-prod56">joinedTable</link> | <link linkend="SQLParser.html-prod57">tablePrimary</link> )</para></entry>
+ </row>
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod56" xreflabel="joinedTable"/>joinedTable</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><link linkend="SQLParser.html-prod57">tablePrimary</link> ( ( <link linkend="SQLParser.html-prod58">crossJoin</link> | <link linkend="SQLParser.html-prod59">qualifiedJoin</link> ) )+</para></entry>
+ </row>
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod58" xreflabel="crossJoin"/>crossJoin</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( ( <CROSS> | <UNION> ) <JOIN> <link linkend="SQLParser.html-prod57">tablePrimary</link> )</para></entry>
+ </row>
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod59" xreflabel="qualifiedJoin"/>qualifiedJoin</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( ( ( <RIGHT> ( <OUTER> )? ) | ( <LEFT> ( <OUTER> )? ) | ( <FULL> ( <OUTER> )? ) | <INNER> )? <JOIN> <link linkend="SQLParser.html-prod54">tableReference</link> <ON> <link linkend="SQLParser.html-prod28">criteria</link> )</para></entry>
+ </row>
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod57" xreflabel="tablePrimary"/>tablePrimary</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( <link linkend="SQLParser.html-prod60">unaryFromClause</link> | <link linkend="SQLParser.html-prod61">subqueryFromClause</link> | ( <LPAREN> <link linkend="SQLParser.html-prod56">joinedTable</link> <RPAREN> ) ) ( ( <MAKEDEP> ) | ( <MAKENOTDEP> ) )?</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod61" xreflabel="subqueryFromClause"/>subqueryFromClause</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><LPAREN> ( <link linkend="SQLParser.html-prod7">queryExpression</link> | <link linkend="SQLParser.html-prod8">storedProcedure</link> ) <RPAREN> ( <AS> )? <link linkend="SQLParser.html-prod2">id</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod60" xreflabel="unaryFromClause"/>unaryFromClause</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( <ID> ( ( <AS> )? <link linkend="SQLParser.html-prod2">id</link> )? )</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod40" xreflabel="where"/>where</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><WHERE> <link linkend="SQLParser.html-prod28">criteria</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod28" xreflabel="criteria"/>criteria</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><link linkend="SQLParser.html-prod62">compoundCritOr</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod62" xreflabel="compoundCritOr"/>compoundCritOr</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><link linkend="SQLParser.html-prod63">compoundCritAnd</link> ( <OR> <link linkend="SQLParser.html-prod63">compoundCritAnd</link> )*</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod63" xreflabel="compoundCritAnd"/>compoundCritAnd</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><link linkend="SQLParser.html-prod64">notCrit</link> ( <AND> <link linkend="SQLParser.html-prod64">notCrit</link> )*</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod64" xreflabel="notCrit"/>notCrit</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( <NOT> )? <link linkend="SQLParser.html-prod65">primary</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod65" xreflabel="primary"/>primary</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( <link linkend="SQLParser.html-prod66">predicate</link> | ( <LPAREN> <link linkend="SQLParser.html-prod28">criteria</link> <RPAREN> ) )</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod66" xreflabel="predicate"/>predicate</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( <link linkend="SQLParser.html-prod67">subqueryCompareCriteria</link> | <link linkend="SQLParser.html-prod68">compareCrit</link> | <link linkend="SQLParser.html-prod69">matchCrit</link> | <link linkend="SQLParser.html-prod70">betweenCrit</link> | <link linkend="SQLParser.html-prod71">setCrit</link> | <link linkend="SQLParser.html-prod72">existsCriteria</link> | <link linkend="SQLParser.html-prod30">hasCriteria</link> | <link linkend="SQLParser.html-prod34">translateCriteria</link> | <link linkend="SQLParser.html-prod73">isNullCrit</link> )</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod68" xreflabel="compareCrit"/>compareCrit</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><link linkend="SQLParser.html-prod16">expression</link> ( <EQ> | <NE> | <NE2> | <LT> | <LE> | <GT> | <GE> ) <link linkend="SQLParser.html-prod16">expression</link></para></entry>
+ </row>
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod74" xreflabel="subquery"/>subquery</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><LPAREN> ( <link linkend="SQLParser.html-prod7">queryExpression</link> | <link linkend="SQLParser.html-prod8">storedProcedure</link> ) <RPAREN></para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod67" xreflabel="subqueryCompareCriteria"/>subqueryCompareCriteria</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><link linkend="SQLParser.html-prod16">expression</link> ( <EQ> | <NE> | <NE2> | <LT> | <LE> | <GT> | <GE> ) ( <ANY> | <SOME> | <ALL> ) <link linkend="SQLParser.html-prod74">subquery</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod69" xreflabel="matchCrit"/>matchCrit</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( <link linkend="SQLParser.html-prod16">expression</link> ( <NOT> )? <LIKE> <link linkend="SQLParser.html-prod16">expression</link> ( <link linkend="SQLParser.html-prod75">escapeChar</link> | ( <LBRACE> <link linkend="SQLParser.html-prod75">escapeChar</link> <RBRACE> ) )? )</para></entry>
+ </row>
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod75" xreflabel="escapeChar"/>escapeChar</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><ESCAPE> <link linkend="SQLParser.html-prod1">stringVal</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod70" xreflabel="betweenCrit"/>betweenCrit</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><link linkend="SQLParser.html-prod16">expression</link> ( <NOT> )? <BETWEEN> <link linkend="SQLParser.html-prod16">expression</link> <AND> <link linkend="SQLParser.html-prod16">expression</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod73" xreflabel="isNullCrit"/>isNullCrit</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><link linkend="SQLParser.html-prod16">expression</link> <IS> ( <NOT> )? <NULL></para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod71" xreflabel="setCrit"/>setCrit</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><link linkend="SQLParser.html-prod16">expression</link> ( <NOT> )? <IN> ( ( <link linkend="SQLParser.html-prod74">subquery</link> ) | ( <LPAREN> <link linkend="SQLParser.html-prod16">expression</link> ( <COMMA> <link linkend="SQLParser.html-prod16">expression</link> )* <RPAREN> ) )</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod72" xreflabel="existsCriteria"/>existsCriteria</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><EXISTS> <link linkend="SQLParser.html-prod74">subquery</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod50" xreflabel="groupBy"/>groupBy</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><GROUP> <BY> ( <link linkend="SQLParser.html-prod76">groupByItem</link> ( <COMMA> <link linkend="SQLParser.html-prod76">groupByItem</link> )* )</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod76" xreflabel="groupByItem"/>groupByItem</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><link linkend="SQLParser.html-prod16">expression</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod51" xreflabel="having"/>having</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><HAVING> <link linkend="SQLParser.html-prod28">criteria</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod43" xreflabel="orderby"/>orderby</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><ORDER> <BY> <link linkend="SQLParser.html-prod77">sortKey</link> ( <ASC> | <DESC> )? ( <COMMA> <link linkend="SQLParser.html-prod77">sortKey</link> ( <ASC> | <DESC> )? )*</para></entry>
+ </row>
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod77" xreflabel="sortKey"/>sortKey</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><link linkend="SQLParser.html-prod16">expression</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod44" xreflabel="limit"/>limit</para></entry>
+ <entry align="center" valign="top"><para>::=</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="SQLParser.html-prod37" xreflabel="option"/>option</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><OPTION> ( <SHOWPLAN> | <PLANONLY> | <DEBUG> | <MAKEDEP> <link linkend="SQLParser.html-prod2">id</link> ( <COMMA> <link linkend="SQLParser.html-prod2">id</link> )* | <MAKENOTDEP> <link linkend="SQLParser.html-prod2">id</link> ( <COMMA> <link linkend="SQLParser.html-prod2">id</link> )* | <NOCACHE> ( <link linkend="SQLParser.html-prod2">id</link> ( <COMMA> <link linkend="SQLParser.html-prod2">id</link> )* )? )*</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod16" xreflabel="expression"/>expression</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><link linkend="SQLParser.html-prod78">concatExpression</link></para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod78" xreflabel="concatExpression"/>concatExpression</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( <link linkend="SQLParser.html-prod79">plusExpression</link> ( <CONCAT_OP> <link linkend="SQLParser.html-prod79">plusExpression</link> )* )</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod79" xreflabel="plusExpression"/>plusExpression</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( <link linkend="SQLParser.html-prod80">timesExpression</link> ( <link linkend="SQLParser.html-prod81">plusOperator</link><link linkend="SQLParser.html-prod80">timesExpression</link> )* )</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod81" xreflabel="plusOperator"/>plusOperator</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( <PLUS> | <MINUS> )</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod80" xreflabel="timesExpression"/>timesExpression</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( <link linkend="SQLParser.html-prod82">basicExpression</link> ( <link linkend="SQLParser.html-prod83">timesOperator</link><link linkend="SQLParser.html-prod82">basicExpression</link> )* )</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod83" xreflabel="timesOperator"/>timesOperator</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( <STAR> | <SLASH> )</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod82" xreflabel="basicExpression"/>basicExpression</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( <QMARK> | <link linkend="SQLParser.html-prod84">literal</link> | ( <LBRACE> <FN> <link linkend="SQLParser.html-prod85">function</link> <RBRACE> ) | ( <link linkend="SQLParser.html-prod53">aggregateSymbol</link> ) | ( <link linkend="SQLParser.html-prod85">function</link> ) | ( <ID> ) | ( <LPAREN> <link linkend="SQLParser.html-prod16">expression</link> <RPAREN> ) | <link linkend="SQLParser.html-prod74">subquery</link> | <link linkend="SQLParser.html-prod86">caseExpression</link> | <link linkend="SQLParser.html-prod87">searchedCaseExpression</link> )</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod86" xreflabel="caseExpression"/>caseExpression</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><CASE> <link linkend="SQLParser.html-prod16">expression</link> ( <WHEN> <link linkend="SQLParser.html-prod16">expression</link> <THEN> <link linkend="SQLParser.html-prod16">expression</link> )+ ( <ELSE> <link linkend="SQLParser.html-prod16">expression</link> )? <END></para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod87" xreflabel="searchedCaseExpression"/>searchedCaseExpression</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para><CASE> ( <WHEN> <link linkend="SQLParser.html-prod28">criteria</link> <THEN> <link linkend="SQLParser.html-prod16">expression</link> )+ ( <ELSE> <link linkend="SQLParser.html-prod16">expression</link> )? <END></para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod85" xreflabel="function"/>function</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( ( <CONVERT> <LPAREN> <link linkend="SQLParser.html-prod16">expression</link> <COMMA> <link linkend="SQLParser.html-prod31">dataType</link> <RPAREN> ) | ( <CAST> <LPAREN> <link linkend="SQLParser.html-prod16">expression</link> <AS> <link linkend="SQLParser.html-prod31">dataType</link> <RPAREN> ) | ( ( <TIMESTAMPADD> | <TIMESTAMPDIFF> ) <LPAREN> <link linkend="SQLParser.html-prod88">intervalType</link> <COMMA> <link linkend="SQLParser.html-prod16">expression</link> <COMMA> <link linkend="SQLParser.html-prod16">expression</link> <RPAREN> ) | ( ( <LEFT> | <RIGHT> | <CHAR> ) <LPAREN> ( <link linkend="SQLParser.html-prod16">expression</link> ( <COMMA> <link linkend="SQLParser.html-prod16">expression</link> )* )? <RPAREN> ) | ( ( <INSERT> ) <LPAREN> ( <link linkend="SQLParser.html-prod16">expression!
</link> ( <COMMA> <link linkend="SQLParser.html-prod16">expression</link> )* )? <RPAREN> ) | ( ( <TRANSLATE> ) <LPAREN> ( <link linkend="SQLParser.html-prod16">expression</link> ( <COMMA> <link linkend="SQLParser.html-prod16">expression</link> )* )? <RPAREN> ) | ( <link linkend="SQLParser.html-prod2">id</link> <LPAREN> ( <link linkend="SQLParser.html-prod16">expression</link> ( <COMMA> <link linkend="SQLParser.html-prod16">expression</link> )* )? <RPAREN> ) )</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod31" xreflabel="dataType"/>dataType</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( <STRING> | <BOOLEAN> | <BYTE> | <SHORT> | <CHAR> | <INTEGER> | <LONG> | <BIGINTEGER> | <FLOAT> | <DOUBLE> | <BIGDECIMAL> | <DATE> | <TIME> | <TIMESTAMP> | <OBJECT> | <BLOB> | <CLOB> | <XML> )</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod88" xreflabel="intervalType"/>intervalType</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( <SQL_TSI_FRAC_SECOND> | <SQL_TSI_SECOND> | <SQL_TSI_MINUTE> | <SQL_TSI_HOUR> | <SQL_TSI_DAY> | <SQL_TSI_WEEK> | <SQL_TSI_MONTH> | <SQL_TSI_QUARTER> | <SQL_TSI_YEAR> )</para></entry>
+ </row>
+
+ <row>
+ <entry align="right" valign="top"><para><anchor id="SQLParser.html-prod84" xreflabel="literal"/>literal</para></entry>
+ <entry align="center" valign="top"><para>::=</para></entry>
+ <entry align="left" valign="top"><para>( <link linkend="SQLParser.html-prod1">stringVal</link> | <INTEGERVAL> | <FLOATVAL> | <FALSE> | <TRUE> | <UNKNOWN> | <NULL> | ( ( <BOOLEANTYPE> | <TIMESTAMPTYPE> | <DATETYPE> | <TIMETYPE> ) <link linkend="SQLParser.html-prod1">stringVal</link> <RBRACE> ) )</para></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </sect1>
</appendix>
Modified: branches/JCA/documentation/reference/src/main/docbook/en-US/content/procedures.xml
===================================================================
--- branches/JCA/documentation/reference/src/main/docbook/en-US/content/procedures.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/documentation/reference/src/main/docbook/en-US/content/procedures.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -10,7 +10,7 @@
. These are similar to stored procedures in relational database
management systems. You can use this language to define the
transformation logic for decomposing INSERT, UPDATE, and DELETE
- commands against virtual tables; these are known as
+ commands against views; these are known as
<link linkend="update_procedures">update procedures</link>
.
</para>
@@ -20,12 +20,12 @@
A command statement executes a
<link linkend="sql_commands">SQL command</link>
, such as SELECT, INSERT, UPDATE, DELETE, or EXECUTE, against
- one or more other models (and their underlying data sources).
+ one or more data sources.
</para>
<example>
<title>Example Command Statements</title>
- <programlisting>SELECT * FROM MyModel.MyTable WHERE ColA > 100;
-INSERT INTO MyModel.MyTable (ColA,ColB) VALUES (50, 'hi');</programlisting>
+ <programlisting>SELECT * FROM MySchema.MyTable WHERE ColA > 100;
+INSERT INTO MySchema.MyTable (ColA,ColB) VALUES (50, 'hi');</programlisting>
</example>
</sect2>
<sect2 id="dynamic_sql">
@@ -49,7 +49,7 @@
</para>
</listitem>
<listitem>
- <para>The "USING" clause allows the dynamic SQL string to contain special element symbols that are bound at runtime to specified values. This allows for some independence of the SQL string from the surrounding procedure variable names and input names. In the dynamic command "USING" clause, each variable is specified by short name only. However in the dynamic SQL the "USING" variable must be fully qualified to "USING.". The "USING" clause is only for values that will be used in the dynamic SQL as legal expressions. It is not possible to use the "USING" clause to replace table names, keywords, etc. This makes using symbols equivalent in power to normal bind (?) expressions in prepared statements. The "USING" clause helps reduce the amount of string manipulation needed. If a reference is made to a USING symbol in the SQL string that is not bound to a value in the "USING" clause, an exception will occur.
+ <para>The "USING" clause allows the dynamic SQL string to contain variable references that are bound at runtime to specified values. This allows for some independence of the SQL string from the surrounding procedure variable names and input names. In the dynamic command "USING" clause, each variable is specified by short name only. However in the dynamic SQL the "USING" variable must be fully qualified to "USING.". The "USING" clause is only for values that will be used in the dynamic SQL as legal expressions. It is not possible to use the "USING" clause to replace table names, keywords, etc. This makes using symbols equivalent in power to normal bind (?) expressions in prepared statements. The "USING" clause helps reduce the amount of string manipulation needed. If a reference is made to a USING symbol in the SQL string that is not bound to a value in the "USING" clause, an exception will occur.
</para>
</listitem>
<listitem>
@@ -194,7 +194,7 @@
</para>
</listitem>
<listitem>
- <para>VARIABLES.x = SELECT Column1 FROM MyModel.MyTable;
+ <para>VARIABLES.x = SELECT Column1 FROM MySchema.MyTable;
</para>
</listitem>
</itemizedlist>
@@ -303,19 +303,19 @@
<para>Nullable - NO_NULLS, NULLABLE, NULLABLE_UNKNOWN; parameter is optional if nullable, and is not required to be listed when using named parameter syntax</para>
</listitem>
</itemizedlist>
- <para>You reference an input to a virtual procedure by using the fully-qualified name of the param (or less if unambiguous). For example, MyModel.MyProc.Param1.
+ <para>You reference an input to a virtual procedure by using the fully-qualified name of the param (or less if unambiguous). For example, MySchema.MyProc.Param1.
</para>
<example>
<title>Example of Referencing an Input Parameter for 'GetBalance' Procedure</title>
<programlisting>
CREATE VIRTUAL PROCEDURE
BEGIN
- SELECT Balance FROM MyModel.Accts WHERE MyModel.Accts.AccountID = MyModel.GetBalance.AcctID;
+ SELECT Balance FROM MySchema.Accts WHERE MySchema.Accts.AccountID = MySchema.GetBalance.AcctID;
END</programlisting>
</example>
</sect2>
<sect2>
- <title>Examle Virtual Procedures</title>
+ <title>Example Virtual Procedures</title>
<para>This example is a LOOP that walks through a cursored table and uses CONTINUE and BREAK.</para>
<example>
<title>Virtual Procedure Using LOOP, CONTINUE, BREAK
@@ -370,7 +370,7 @@
the procedure has defined inputs, you specify those in a
sequential list, or using "name=value" syntax. You must use the
name of the input parameter, scoped by the full procedure name if
- the parameter name is ambiguous in the context of other elements
+ the parameter name is ambiguous in the context of other columns
or variables in the procedure.</para>
<para> A virtual procedure call will return a result set just like any
SELECT, so you can use this in many places you can use a SELECT.
@@ -402,15 +402,15 @@
<sect1 id="update_procedures">
<title>Update Procedures</title>
<para>
- Virtual tables are abstractions above physical sources. They typically
+ Views are abstractions above physical sources. They typically
union or join information from multiple tables, often from multiple
data sources or other views. Teiid can perform update operations
- against virtual tables. Update commands - INSERT, UPDATE, or DELETE -
- against a virtual table require logic to define how the tables and
- views integrated by the virtual table are affected by each type of
+ against views. Update commands - INSERT, UPDATE, or DELETE -
+ against a view require logic to define how the tables and
+ views integrated by the view are affected by each type of
command. This transformation logic is invoked when an update command
- is issued against a virtual table. Update procedures define the logic
- for how a user's update command against a virtual table should be
+ is issued against a view. Update procedures define the logic
+ for how a user's update command against a view should be
decomposed into the individual commands to be executed against the
underlying physical sources. Similar to
<link linkend="virtual_procedures">virtual procedures</link>
@@ -437,15 +437,15 @@
<para>You can use a number of special variables when defining your update procedure.</para>
<sect3 id="input_variables">
<title>INPUT Variables</title>
- <para>Every attribute in the virtual table whose UPDATE and INSERT transformations you are defining has an equivalent variable named INPUT.<column_name></para>
- <para>When an INSERT or an UPDATE command is executed against the virtual table, these variables are initialized to the values in the INSERT VALUES clause or the UPDATE SET clause respectively.</para>
+ <para>Every attribute in the view whose UPDATE and INSERT transformations you are defining has an equivalent variable named INPUT.<column_name></para>
+ <para>When an INSERT or an UPDATE command is executed against the view, these variables are initialized to the values in the INSERT VALUES clause or the UPDATE SET clause respectively.</para>
<para>In an UPDATE procedure, the default value of these variables, if they are not set by the command, is null. In an INSERT procedure, the default value of these variables is the default value of the virtual table attributes, based on their defined types. See <link linkend="changing_variables">CHANGING Variables</link> for distinguishing defaults from passed values.</para>
</sect3>
<sect3 id="changing_variables">
<title>CHANGING Variables</title>
- <para>Similar to INPUT Variables, every attribute in the virtual table whose UPDATE and INSERT transformations you are defining has an equivalent variable named CHANGING.<column_name></para>
- <para>When an INSERT or an UPDATE command is executed against the virtual table, these variables are initialized to <literal>true</literal> or <literal>false</literal> depending on whether the INPUT variable was set by the command.</para>
- <para>For example, for a virtual table with columns A, B, C:</para>
+ <para>Similar to INPUT Variables, every attribute in the view whose UPDATE and INSERT transformations you are defining has an equivalent variable named CHANGING.<column_name></para>
+ <para>When an INSERT or an UPDATE command is executed against the view, these variables are initialized to <literal>true</literal> or <literal>false</literal> depending on whether the INPUT variable was set by the command.</para>
+ <para>For example, for a view with columns A, B, C:</para>
<informaltable>
<tgroup cols="2">
<thead>
@@ -470,9 +470,9 @@
<sect3 id="rowsupdated_variable">
<title>ROWS_UPDATED Variable</title>
<para> Teiid returns the value of the VARIABLES.ROWS_UPDATED variable as a response to an update command executed against
- the virtual table. Your procedure must set the value that returns
- when an application executes an update command against the virtual
- table, which triggers invocation of the update procedure. For
+ the view. Your procedure must set the value that returns
+ when an application executes an update command against the view,
+ which triggers invocation of the update procedure. For
example, if an UPDATE command is issued that affects 5 records, the
ROWS_UPDATED should be set appropriately so that the user will
receive '5' for the count of records affected.</para>
@@ -489,7 +489,7 @@
<para>You can use the HAS CRITERIA clause to check whether the user’s command has a particular kind of criteria on a particular set of attributes. This clause evaluates to either true or false. You can use it anywhere you can use a criteria within a procedure.</para>
<para>
Usage:
- <synopsis>HAS [criteria operator] CRITERIA [ON (element list)]</synopsis>
+ <synopsis>HAS [criteria operator] CRITERIA [ON (column list)]</synopsis>
</para>
<itemizedlist>
<para>Syntax Rules</para>
@@ -498,11 +498,11 @@
</para>
</listitem>
<listitem>
- <para>If the ON clause is present, HAS CRITERIA will return true only if criteria was present on all of the specified elements.
+ <para>If the ON clause is present, HAS CRITERIA will return true only if criteria was present on all of the specified columns.
</para>
</listitem>
<listitem>
- <para>The elements in a HAS CRITERIA ON clause always refer to virtual elements.
+ <para>The columns in a HAS CRITERIA ON clause always refer to view columns.
</para>
</listitem>
</itemizedlist>
@@ -521,11 +521,11 @@
<entry>Checks simply whether there was any criteria at all.</entry>
</row>
<row>
- <entry><code>HAS CRITERIA ON (element1, element2)</code></entry>
- <entry>Checks whether the criteria uses element1 and element2.</entry>
+ <entry><code>HAS CRITERIA ON (column1, column2)</code></entry>
+ <entry>Checks whether the criteria uses column1 and column2.</entry>
</row>
<row>
- <entry><code>HAS = CRITERIA ON (element1)</code></entry>
+ <entry><code>HAS = CRITERIA ON (column1)</code></entry>
<entry>Checks whether the criteria has a comparison criteria with = operator.</entry>
</row>
<row>
@@ -541,10 +541,10 @@
</sect3>
<sect3>
<title>TRANSLATE CRITERIA</title>
- <para>You can use the TRANSLATE CRITERIA clause to convert the criteria from the user application’s SQL command into the form required to interact with the target source or view tables. The TRANSLATE CRITERIA statement uses the SELECT transformation to infer the element mapping. This clause evaluates to a translated criteria that is evaluated in the context of a command.</para>
+ <para>You can use the TRANSLATE CRITERIA clause to convert the criteria from the user application’s SQL command into the form required to interact with the target source or view tables. The TRANSLATE CRITERIA statement uses the SELECT transformation to infer the column mapping. This clause evaluates to a translated criteria that is evaluated in the context of a command.</para>
<para>
Usage:
- <synopsis>TRANSLATE [criteria operator] CRITERIA [ON (element list)] [WITH (mapping list)]</synopsis>
+ <synopsis>TRANSLATE [criteria operator] CRITERIA [ON (column list)] [WITH (mapping list)]</synopsis>
</para>
<itemizedlist>
<para>Syntax Rules</para>
@@ -553,15 +553,15 @@
</para>
</listitem>
<listitem>
- <para>If the ON clause is present, TRANSLATE CRITERIA will only form criteria using the specified elements.
+ <para>If the ON clause is present, TRANSLATE CRITERIA will only form criteria using the specified columns.
</para>
</listitem>
<listitem>
- <para>The elements in a TRANSLATE CRITERIA ON clause always refer to virtual elements.
+ <para>The columns in a TRANSLATE CRITERIA ON clause always refer to view columns.
</para>
</listitem>
</itemizedlist>
- <para>You can use these mappings either to replace the default mappings generated from the SELECT transformation or to specify a reverse expression when a virtual element is defined by an expression.</para>
+ <para>You can use these mappings either to replace the default mappings generated from the SELECT transformation or to specify a reverse expression when a virtual column is defined by an expression.</para>
<para>Some samples of the HAS TRANSLATE clause:</para>
<informaltable>
<tgroup cols="2">
@@ -579,25 +579,25 @@
<entry>Translates any user criteria using the default mappings.</entry>
</row>
<row>
- <entry>TRANSLATE CRITERIA WITH (element1 = 'A', element2 = INPUT.element2 + 2)</entry>
- <entry>Translates any criteria with some additional mappings: element1 is always mapped to 'A' and element2 is mapped to the incoming element2 value + 2.</entry>
+ <entry>TRANSLATE CRITERIA WITH (column1 = 'A', column2 = INPUT.column2 + 2)</entry>
+ <entry>Translates any criteria with some additional mappings: column1 is always mapped to 'A' and column2 is mapped to the incoming column2 value + 2.</entry>
</row>
<row>
- <entry><code>TRANSLATE = CRITERIA ON (element1)</code></entry>
- <entry>Translates only criteria that have = comparison operator and involve element1.</entry>
+ <entry><code>TRANSLATE = CRITERIA ON (column1)</code></entry>
+ <entry>Translates only criteria that have = comparison operator and involve column1.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
- The TRANSLATE CRITERIA, ON clause always refers to virtual elements.
+ The TRANSLATE CRITERIA, ON clause always refers to view columns.
The WITH clause always has items with form <elem> = <expression>,
- where the <elem> is a virtual element and the <expression>
- specifies what that virtual element should be
- replaced with when TRANSLATE CRITERIA translates the virtual
+ where the <elem> is a view column and the <expression>
+ specifies what that view column should be
+ replaced with when TRANSLATE CRITERIA translates the view
criteria (from UPDATE or DELETE) into a physical criteria in
the command. By default, a mapping is created based on the
- SELECT clause of the SELECT transformation (virtual column
+ SELECT clause of the SELECT transformation (view column
gets mapped to expression in SELECT clause at same
position).
</para>
@@ -611,7 +611,7 @@
</para>
</listitem>
<listitem>
- <para>The virtual table that this SQL command is executed against is detected.
+ <para>The view this SQL command is executed against is detected.
</para>
</listitem>
<listitem>
Modified: branches/JCA/documentation/reference/src/main/docbook/en-US/content/scalar_functions.xml
===================================================================
--- branches/JCA/documentation/reference/src/main/docbook/en-US/content/scalar_functions.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/documentation/reference/src/main/docbook/en-US/content/scalar_functions.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1343,8 +1343,7 @@
(endTime > startTime), a positive number will be returned. If (endTime < startTime), a negative number will be returned. Calculations are approximate and may be less accurate over longer time spans.</para>
</entry>
<entry>
- <para>Interval in {string}; startTime, endTime in {date,
- time, timestamp}, returns a long.</para>
+ <para>Interval in {string}; startTime, endTime in {timestamp}, returns a long.</para>
</entry>
</row>
<row>
@@ -1737,47 +1736,43 @@
</sect1>
<sect1>
<title>Lookup Function</title>
- <para>The Lookup function allows you to cache a group’s
+ <para>The Lookup function allows you to cache a table’s
data in memory and access it through a scalar function. This caching
- accelerates response time to queries that use the lookup groups, known
- in business terminology as lookup tables or code groups.</para>
- <para>A StatePostalCodes group used to translate postal codes to
+ accelerates response time to queries that use the lookup tables, known
+ in business terminology as lookup tables or code tables.</para>
+ <para>A StatePostalCodes table used to translate postal codes to
complete state names might represent an example of this type of
- lookup group. One element, PostalCode, represents a key element.
- Other groups within the model refer to this two-letter code. A
- second element, StateDisplayName, would represent the complete name
- of the state. Hence, a query to this lookup group would typically
+ lookup table. One column, PostalCode, represents a key column.
+ Other tables refer to this two-letter code. A
+ second column, StateDisplayName, would represent the complete name
+ of the state. Hence, a query to this lookup table would typically
provide the PostalCode and expect the StateDisplayName in response.
</para>
- <para>When you call this function for any combination of codeGroup, returnElement, and
- keyElement for the first time, the Teiid System caches the result.
+ <para>When you call this function for any combination of codeTable, returnColumn, and
+ keyColumn for the first time, the Teiid System caches the result.
The Teiid System uses this cached map for all
- queries, in all sessions, that later access this lookup group. The
- codeGroup requires use of the fully-qualified name, and the
- returnElement and keyElement parameters should use shortened column
+ queries, in all sessions, that later access this lookup table. The
+ codeTable requires use of the fully-qualified name, and the
+ returnColumn and keyColumn parameters should use shortened column
names.</para>
<para>Because the Teiid System caches and indexes this
information in memory, this function provides quick access after the
- Teiid System initially caches the lookup group. The Teiid
- System unloads these cached lookup groups when you stop and restart
+ Teiid System initially caches the lookup table. The Teiid
+ System unloads these cached lookup tables when you stop and restart
the Teiid System. Thus, you should not use this function for
data that is subject to updates. Instead, you can use it against
static data that does not change over time.</para>
<note>
<itemizedlist>
<listitem>
- <para>The keyElement column is expected to contain unique key
- values. If the column contains duplicate values, only the last
- loaded value will be used for lookup purposes. In some cases, this
- may cause unexpected results, so it is strongly recommended that
- only columns without duplicate values be used as the keyElement. The
+ <para>The keyColumn is expected to contain unique key
+ values. If the column contains duplicate values, an exception will be thrown. The
lookup caches can be flushed via the svcmgr.</para>
</listitem>
<listitem>
- <para>Cached lookup groups might consume significant memory. You
- can limit the number and maximum size of these code groups by
- setting properties of the QueryService through the Teiid
- Console.</para>
+ <para>Cached lookup tables might consume significant memory. You
+ can limit the number and maximum size of these code tables by
+ setting configuration properties.</para>
</listitem>
</itemizedlist>
</note>
@@ -1799,20 +1794,20 @@
<tbody>
<row>
<entry>
- <para>LOOKUP(codeGroup, returnElement,
- keyElement, keyValue)</para>
+ <para>LOOKUP(codeTable, returnColumn,
+ keyColumn, keyValue)</para>
</entry>
<entry>
- <para>In the lookup group codeGroup, find the row where
- keyElement has the value keyValue and return the
- associated returnElement</para>
+ <para>In the lookup table codeTable, find the row where
+ keyColumn has the value keyValue and return the
+ associated returnColumn</para>
</entry>
<entry>
- <para>codeGroup must be a fully-qualified string
+ <para>codeTable must be a fully-qualified string
literal containing metadata identifiers, keyValue datatype
- must match datatype of the keyElement, return datatype
- matches that of returnElement. returnElement and
- keyElement parameters should use their shortened names.
+ must match datatype of the keyColumn, return datatype
+ matches that of returnColumn. returnColumn and
+ keyColumn parameters should use their shortened names.
</para>
</entry>
</row>
Modified: branches/JCA/documentation/reference/src/main/docbook/en-US/content/sql_support.xml
===================================================================
--- branches/JCA/documentation/reference/src/main/docbook/en-US/content/sql_support.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/documentation/reference/src/main/docbook/en-US/content/sql_support.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -24,17 +24,17 @@
are processed in the context of a virtual database, or VDB.
Because information can be federated across multiple sources,
tables and columns must be scoped in some manner to avoid
- conflicts. This scoping is provided by models, which contain the
+ conflicts. This scoping is provided by schemas, which contain the
information for each data source or set of views.</para>
<itemizedlist>
<para>Fully-qualified table and column names are of
the following form, where the separate 'parts' of the identifier
are delimited by periods.</para>
<listitem>
- <para>TABLE: <model_name>.<table_spec></para>
+ <para>TABLE: <schema_name>.<table_spec></para>
</listitem>
<listitem>
- <para>COLUMN: <model_name>.<table_spec>.<column_name></para>
+ <para>COLUMN: <schema_name>.<table_spec>.<column_name></para>
</listitem>
</itemizedlist>
<itemizedlist>
@@ -46,34 +46,42 @@
</para>
</listitem>
<listitem>
+ <para>Identifiers in double quotes can have any contents.
+ The double quote character can it's be escaped with an additional double quote. e.g. "some "" id"
+ </para>
+ </listitem>
+ <listitem>
<para> Because different data sources organize tables in different
ways, some prepending catalog or schema or user information,
- Teiid allows the 'table_spec' to be a dot-delimited construct.
+ Teiid allows table specification to be a dot-delimited construct.
</para>
</listitem>
<listitem>
- <para> Identifiers are not case-sensitive in Teiid.</para>
+ <para> When a table specification contains a dot resolving will allow for the match of
+ a partial name against any number of the end segments in the name.
+ </para>
</listitem>
<listitem>
- <para>The separate parts of an identifier can be quoted, with double quotes. This is not required, but some tools do this automatically. Quotes establish another level of grouping, in addition to the dot delimiters. Quotes should not be used in such a way that the table specification, which may itself have multiple parts, is split between two quoted sections.</para>
+ <para> Columns, schemas, and aliases identifiers cannot contain a dot.
+ </para>
</listitem>
+ <listitem>
+ <para> Identifiers, even when quoted, are not case-sensitive in Teiid.</para>
+ </listitem>
</itemizedlist>
<itemizedlist>
<para> Some examples of valid fully-qualified table identifiers are:
</para>
<listitem>
- <para>MyModel.MySchema.Portfolios
+ <para>MySchema.Portfolios
</para>
</listitem>
<listitem>
- <para>"MyModel"."MySchema.Portfolios"
+ <para>"MySchema.Portfolios"
</para>
</listitem>
<listitem>
- <para>MyModel.Inventory</para>
- </listitem>
- <listitem>
- <para>MyModel.MyCatalog.dbo.Authors
+ <para>MySchema.MyCatalog.dbo.Authors
</para>
</listitem>
</itemizedlist>
@@ -81,21 +89,17 @@
<para>Some examples of valid fully-qualified column identifiers
are:</para>
<listitem>
- <para>MyModel.MySchema.Portfolios.portfolioID
+ <para>MySchema.Portfolios.portfolioID
</para>
</listitem>
<listitem>
- <para>"MyModel"."MySchema.Portfolios"."portfolioID"
+ <para>"MySchema.Portfolios"."portfolioID"
</para>
</listitem>
<listitem>
- <para>MyModel.Inventory.totalPallets
+ <para>MySchema.MyCatalog.dbo.Authors.lastName
</para>
</listitem>
- <listitem>
- <para>MyModel.MyCatalog.dbo.Authors.lastName
- </para>
- </listitem>
</itemizedlist>
<para> Fully-qualified identifiers can always be used in SQL commands.
Partially- or unqualified forms can also be used, as long as the
@@ -564,7 +568,7 @@
</para>
</listitem>
<listitem>
- <para>The procedure virtual group automatically has an access pattern on its IN and IN_OUT parameters which
+ <para>The procedure view automatically has an access pattern on its IN and IN_OUT parameters which
allows it to be planned correctly as a dependent join when necessary or fail when sufficient criteria cannot be found.
</para>
</listitem>
@@ -605,7 +609,7 @@
</para>
</listitem>
<listitem>
- <para>SELECT <element name>,...INTO <temporary table name> FROM <table name>
+ <para>SELECT <column name>,...INTO <temporary table name> FROM <table name>
</para>
</listitem>
<listitem>
@@ -699,7 +703,7 @@
MAKEDEP and MAKENOTDEP are hints used to control
<link linkend="dependent_join">dependent join</link>
behavior. They should only be used in situations where the optimizer
- does not chose the most optimal plan based upon query structure,
+ does not choose the most optimal plan based upon query structure,
metadata, and costing information.
</para>
</note>
@@ -781,15 +785,14 @@
</para>
<para>
Usage:
- <synopsis label="Usage">ORDER BY column1 [ASC|DESC], ...</synopsis>
+ <synopsis label="Usage">ORDER BY expression [ASC|DESC], ...</synopsis>
</para>
<itemizedlist>
<para>Syntax Rules:
</para>
<listitem>
<para>Sort columns may be specified positionally by a 1 based
- integer or string literal, by SELECT clause alias name, or by a column
- reference.</para>
+ integer, by SELECT clause alias name, by SELECT clause expression, or by an unrelated expression.</para>
</listitem>
<listitem>
<para>Column references may appear in the SELECT clause as the
@@ -800,6 +803,11 @@
clause.</para>
</listitem>
<listitem>
+ <para>Unrelated expressions, expressions not appearing as an aliased expression in the select clause,
+ are allowed in the order by clause of a non-set QUERY. The columns referenced in the expression must also follow the prior rule.
+ </para>
+ </listitem>
+ <listitem>
<para>The ORDER BY columns must be of a comparable type.</para>
</listitem>
<listitem>
Modified: branches/JCA/documentation/reference/src/main/docbook/en-US/content/system_tables.xml
===================================================================
--- branches/JCA/documentation/reference/src/main/docbook/en-US/content/system_tables.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/documentation/reference/src/main/docbook/en-US/content/system_tables.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -3,7 +3,7 @@
<chapter id="system_tables">
<title>System Tables</title>
<sect1>
- <title>VDB and Model Metadata</title>
+ <title>VDB, Schema, and Properties</title>
<sect2>
<title>System.VirtualDatabases</title>
<para>This table supplies information about the currently
@@ -52,9 +52,9 @@
</informaltable>
</sect2>
<sect2>
- <title>System.Models</title>
- <para>This table supplies information about all the models in
- the virtual database, including the system model itself
+ <title>System.Schemas</title>
+ <para>This table supplies information about all the schemas in
+ the virtual database, including the system schema itself
(System).</para>
<informaltable frame="all">
<tgroup cols="3">
@@ -74,24 +74,24 @@
<tbody>
<row>
<entry>
- <para>Name</para>
+ <para>VDBName</para>
</entry>
<entry>
<para>string</para>
</entry>
<entry>
- <para>Model name</para>
+ <para>VDB name</para>
</entry>
</row>
<row>
<entry>
- <para>Version</para>
+ <para>Name</para>
</entry>
<entry>
<para>string</para>
</entry>
<entry>
- <para>Model version</para>
+ <para>Schema name</para>
</entry>
</row>
<row>
@@ -102,80 +102,11 @@
<para>boolean</para>
</entry>
<entry>
- <para>True if source model, false for view</para>
+ <para>True if this represents a source</para>
</entry>
</row>
<row>
<entry>
- <para>SupportsWhereAll</para>
- </entry>
- <entry>
- <para>boolean</para>
- </entry>
- <entry>
- <para>Model supports queries with no criteria
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>SupportsOrderBy</para>
- </entry>
- <entry>
- <para>boolean</para>
- </entry>
- <entry>
- <para>Model supports ORDER BY queries</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>SupportsJoin</para>
- </entry>
- <entry>
- <para>boolean</para>
- </entry>
- <entry>
- <para>Model supports queries with joins</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>SupportsDistinct</para>
- </entry>
- <entry>
- <para>boolean</para>
- </entry>
- <entry>
- <para>Model supports SELECT DISTINCT queries</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>SupportsOuterJoin</para>
- </entry>
- <entry>
- <para>boolean</para>
- </entry>
- <entry>
- <para>Model supports queries with outer joins
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>MaxSetSize</para>
- </entry>
- <entry>
- <para>integer</para>
- </entry>
- <entry>
- <para>Max number of values to pass in an IN value set
- for a dependent join</para>
- </entry>
- </row>
- <row>
- <entry>
<para>UID</para>
</entry>
<entry>
@@ -204,8 +135,7 @@
<para>string</para>
</entry>
<entry>
- <para>URI for the primary metamodel describing this
- model</para>
+ <para>URI for the primary metamodel describing the model used for this schema</para>
</entry>
</row>
</tbody>
@@ -213,8 +143,8 @@
</informaltable>
</sect2>
<sect2>
- <title>System.ModelProperties</title>
- <para>This table supplies user-defined properties on models
+ <title>System.Properties</title>
+ <para>This table supplies user-defined properties on all objects
based on metamodel extensions. Normally, this table is empty if
no metamodel extensions are being used.</para>
<informaltable frame="all">
@@ -235,24 +165,13 @@
<tbody>
<row>
<entry>
- <para>ModelName</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
- <para>Model name</para>
- </entry>
- </row>
- <row>
- <entry>
<para>Name</para>
</entry>
<entry>
<para>string</para>
</entry>
<entry>
- <para>Property name</para>
+ <para>Extension property name</para>
</entry>
</row>
<row>
@@ -263,7 +182,7 @@
<para>string</para>
</entry>
<entry>
- <para>Property value</para>
+ <para>Extension property value</para>
</entry>
</row>
<row>
@@ -274,7 +193,7 @@
<para>string</para>
</entry>
<entry>
- <para>Model unique ID</para>
+ <para>Key unique ID</para>
</entry>
</row>
</tbody>
@@ -285,7 +204,7 @@
<sect1>
<title>Table Metadata</title>
<sect2>
- <title>System.Groups</title>
+ <title>System.Tables</title>
<para>This table supplies information about all the groups
(tables, views, documents, etc) in the virtual database.</para>
<informaltable frame="all">
@@ -306,24 +225,24 @@
<tbody>
<row>
<entry>
- <para>ModelName</para>
+ <para>VDBName</para>
</entry>
<entry>
<para>string</para>
</entry>
<entry>
- <para>Model name</para>
+ <para>VDB name</para>
</entry>
</row>
<row>
<entry>
- <para>FullName</para>
+ <para>SchemaName</para>
</entry>
<entry>
<para>string</para>
</entry>
<entry>
- <para>Full group name</para>
+ <para>Schema Name</para>
</entry>
</row>
<row>
@@ -368,23 +287,11 @@
<para>boolean</para>
</entry>
<entry>
- <para>True if this is a source model</para>
+ <para>True if this is a source table</para>
</entry>
</row>
<row>
<entry>
- <para>UpperName</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
- <para>Upper-case full group name for easier
- matching</para>
- </entry>
- </row>
- <row>
- <entry>
<para>SupportsUpdates</para>
</entry>
<entry>
@@ -436,7 +343,7 @@
<para>boolean</para>
</entry>
<entry>
- <para>True if in system model</para>
+ <para>True if in system table</para>
</entry>
</row>
</tbody>
@@ -444,109 +351,7 @@
</informaltable>
</sect2>
<sect2>
- <title>System.GroupProperties</title>
- <para>This table supplies user-defined properties on groups
- based on metamodel extensions. Normally, this table is empty if
- no metamodel extensions are being used.</para>
- <informaltable frame="all">
- <tgroup cols="3">
- <thead>
- <row>
- <entry>
- <para>Column Name</para>
- </entry>
- <entry>
- <para>Type</para>
- </entry>
- <entry>
- <para>Description</para>
- </entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <para>ModelName</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
- <para>Model name</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>GroupFullName</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
- <para>Full group name</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>Name</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
- <para>Property name</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>Value</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
- <para>Property value</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>GroupName</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
- <para>Short group name</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>GroupUpperName</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
- <para>Full upper-case group name</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>ID</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
- <para>Group unique ID</para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </sect2>
- <sect2>
- <title>System.Elements</title>
+ <title>System.Columns</title>
<para>This table supplies information about all the elements
(columns, tags, attributes, etc) in the virtual database.</para>
<informaltable frame="all">
@@ -567,35 +372,35 @@
<tbody>
<row>
<entry>
- <para>ModelName</para>
+ <para>VDBName</para>
</entry>
<entry>
<para>string</para>
</entry>
<entry>
- <para>Model name</para>
+ <para>VDB name</para>
</entry>
</row>
<row>
<entry>
- <para>GroupName</para>
+ <para>SchemaName</para>
</entry>
<entry>
<para>string</para>
</entry>
<entry>
- <para>Short group name</para>
+ <para>Schema Name</para>
</entry>
</row>
<row>
<entry>
- <para>GroupFullName</para>
+ <para>TableName</para>
</entry>
<entry>
<para>string</para>
</entry>
<entry>
- <para>Full group name</para>
+ <para>Table name</para>
</entry>
</row>
<row>
@@ -907,10 +712,9 @@
</informaltable>
</sect2>
<sect2>
- <title>System.ElementProperties</title>
- <para>This table supplies user-defined properties on groups
- based on metamodel extensions. Normally, this table is empty if
- no metamodel extensions are being used.</para>
+ <title>System.Keys</title>
+ <para>This table supplies information about primary, foreign,
+ and unique keys.</para>
<informaltable frame="all">
<tgroup cols="3">
<thead>
@@ -929,35 +733,35 @@
<tbody>
<row>
<entry>
- <para>ModelName</para>
+ <para>VDBName</para>
</entry>
<entry>
<para>string</para>
</entry>
<entry>
- <para>Model name</para>
+ <para>VDB name</para>
</entry>
</row>
<row>
<entry>
- <para>GroupFullName</para>
+ <para>SchemaName</para>
</entry>
<entry>
<para>string</para>
</entry>
<entry>
- <para>Full group name</para>
+ <para>Schema Name</para>
</entry>
</row>
<row>
<entry>
- <para>ElementName</para>
+ <para>Table Name</para>
</entry>
<entry>
<para>string</para>
</entry>
<entry>
- <para>Element name</para>
+ <para>Table name</para>
</entry>
</row>
<row>
@@ -968,118 +772,6 @@
<para>string</para>
</entry>
<entry>
- <para>Property name</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>Value</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
- <para>Property value</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>GroupName</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
- <para>Short group name</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>ElementUpperName</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
- <para>Upper-case element name</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>GroupUpperName</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
- <para>Upper-case group name</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>UID</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
- <para>Element unique ID</para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </sect2>
- <sect2>
- <title>System.Keys</title>
- <para>This table supplies information about primary, foreign,
- and unique keys.</para>
- <informaltable frame="all">
- <tgroup cols="3">
- <thead>
- <row>
- <entry>
- <para>Column Name</para>
- </entry>
- <entry>
- <para>Type</para>
- </entry>
- <entry>
- <para>Description</para>
- </entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <para>ModelName</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
- <para>Model name</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>GroupFullName</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
- <para>Full group name</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>Name</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
<para>Key name</para>
</entry>
</row>
@@ -1130,28 +822,6 @@
</row>
<row>
<entry>
- <para>GroupName</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
- <para>Short group name</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>GroupUpperName</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
- <para>Upper-case full group name</para>
- </entry>
- </row>
- <row>
- <entry>
<para>RefKeyUID</para>
</entry>
<entry>
@@ -1178,10 +848,9 @@
</informaltable>
</sect2>
<sect2>
- <title>System.KeyProperties</title>
- <para>This table supplies user-defined properties on keys
- based on metamodel extensions. Normally, this table is empty if
- no metamodel extensions are being used.</para>
+ <title>System.KeyElements</title>
+ <para>This table supplies information about the elements
+ referenced by a key.</para>
<informaltable frame="all">
<tgroup cols="3">
<thead>
@@ -1200,46 +869,35 @@
<tbody>
<row>
<entry>
- <para>Column Name</para>
+ <para>VDBName</para>
</entry>
<entry>
- <para>Type</para>
- </entry>
- <entry>
- <para>Description</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>ModelName</para>
- </entry>
- <entry>
<para>string</para>
</entry>
<entry>
- <para>Model name</para>
+ <para>VDB name</para>
</entry>
</row>
<row>
<entry>
- <para>GroupFullName</para>
+ <para>SchemaName</para>
</entry>
<entry>
<para>string</para>
</entry>
<entry>
- <para>Full group name</para>
+ <para>Schema Name</para>
</entry>
</row>
<row>
<entry>
- <para>KeyName</para>
+ <para>TableName</para>
</entry>
<entry>
<para>string</para>
</entry>
<entry>
- <para>Key name</para>
+ <para>Table name</para>
</entry>
</row>
<row>
@@ -1250,107 +908,6 @@
<para>string</para>
</entry>
<entry>
- <para>Extension property name</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>Value</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
- <para>Extension property value</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>GroupName</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
- <para>Short group name</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>GroupUpperName</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
- <para>Upper-case full group name</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>UID</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
- <para>Key unique ID</para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </sect2>
- <sect2>
- <title>System.KeyElements</title>
- <para>This table supplies information about the elements
- referenced by a key.</para>
- <informaltable frame="all">
- <tgroup cols="3">
- <thead>
- <row>
- <entry>
- <para>Column Name</para>
- </entry>
- <entry>
- <para>Type</para>
- </entry>
- <entry>
- <para>Description</para>
- </entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <para>ModelName</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
- <para>Model name</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>GroupFullName</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
- <para>Full group name</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>Name</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
<para>Element name</para>
</entry>
</row>
@@ -1379,28 +936,6 @@
</row>
<row>
<entry>
- <para>GroupName</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
- <para>Short group name</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>GroupUpperName</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
- <para>Upper case full group name</para>
- </entry>
- </row>
- <row>
- <entry>
<para>RefKeyUID</para>
</entry>
<entry>
@@ -1463,57 +998,57 @@
<tbody>
<row>
<entry>
- <para>ModelName</para>
+ <para>VDBName</para>
</entry>
<entry>
<para>string</para>
</entry>
<entry>
- <para>Model name</para>
+ <para>VDB name</para>
</entry>
</row>
<row>
<entry>
- <para>Name</para>
+ <para>SchemaName</para>
</entry>
<entry>
<para>string</para>
</entry>
<entry>
- <para>Procedure name</para>
+ <para>Schema Name</para>
</entry>
</row>
<row>
<entry>
- <para>NameInSource</para>
+ <para>Name</para>
</entry>
<entry>
<para>string</para>
</entry>
<entry>
- <para>Procedure name in source system</para>
+ <para>Procedure name</para>
</entry>
</row>
<row>
<entry>
- <para>ReturnsResults</para>
+ <para>NameInSource</para>
</entry>
<entry>
- <para>boolean</para>
+ <para>string</para>
</entry>
<entry>
- <para>Returns a result set</para>
+ <para>Procedure name in source system</para>
</entry>
</row>
<row>
<entry>
- <para>ModelUID</para>
+ <para>ReturnsResults</para>
</entry>
<entry>
- <para>string</para>
+ <para>boolean</para>
</entry>
<entry>
- <para>Model UID</para>
+ <para>Returns a result set</para>
</entry>
</row>
<row>
@@ -1538,27 +1073,14 @@
<para>Description</para>
</entry>
</row>
- <row>
- <entry>
- <para>FullName</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
- <para>Full procedure name</para>
- </entry>
- </row>
</tbody>
</tgroup>
</informaltable>
</sect2>
<sect2>
- <title>System.ProcedureProperties
- </title>
- <para>This table supplies user-defined properties on
- procedures based on metamodel extensions. Normally, this table
- is empty if no metamodel extensions are being used.</para>
+ <title>System.ProcedureParams</title>
+ <para>This supplies information on procedure parameters.
+ </para>
<informaltable frame="all">
<tgroup cols="3">
<thead>
@@ -1577,96 +1099,28 @@
<tbody>
<row>
<entry>
- <para>ModelName</para>
+ <para>VDBName</para>
</entry>
<entry>
<para>string</para>
</entry>
<entry>
- <para>Model name</para>
+ <para>VDB name</para>
</entry>
</row>
<row>
<entry>
- <para>ProcedureName</para>
+ <para>SchemaName</para>
</entry>
<entry>
<para>string</para>
</entry>
<entry>
- <para>Procedure name</para>
+ <para>Schema Name</para>
</entry>
</row>
<row>
<entry>
- <para>Name</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
- <para>Property name</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>Value</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
- <para>Property value</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>UID</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
- <para>Procedure UID</para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </sect2>
- <sect2>
- <title>System.ProcedureParams</title>
- <para>This supplies information on procedure parameters.
- </para>
- <informaltable frame="all">
- <tgroup cols="3">
- <thead>
- <row>
- <entry>
- <para>Column Name</para>
- </entry>
- <entry>
- <para>Type</para>
- </entry>
- <entry>
- <para>Description</para>
- </entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <para>ModelName</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
- <para>Model name</para>
- </entry>
- </row>
- <row>
- <entry>
<para>ProcedureName</para>
</entry>
<entry>
@@ -2023,74 +1477,5 @@
</tgroup>
</informaltable>
</sect2>
- <sect2>
- <title>System.DataTypeProperties</title>
- <para>This table supplies user-defined properties on data
- types based on metamodel extensions. Normally, this table is
- empty if no metamodel extensions are being used.</para>
- <informaltable frame="all">
- <tgroup cols="3">
- <thead>
- <row>
- <entry>
- <para>Column Name</para>
- </entry>
- <entry>
- <para>Type</para>
- </entry>
- <entry>
- <para>Description</para>
- </entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <para>DataType</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
- <para>Data type name</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>Name</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
- <para>Property name</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>Value</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
- <para>Property value</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>UID</para>
- </entry>
- <entry>
- <para>string</para>
- </entry>
- <entry>
- <para>Data type UID</para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </sect2>
</sect1>
</chapter>
\ No newline at end of file
Modified: branches/JCA/documentation/reference/src/main/docbook/en-US/content/transaction_support.xml
===================================================================
--- branches/JCA/documentation/reference/src/main/docbook/en-US/content/transaction_support.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/documentation/reference/src/main/docbook/en-US/content/transaction_support.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -84,7 +84,7 @@
</entry>
</row>
<row>
- <entry>PESSIMITIC</entry>
+ <entry>PESSIMISTIC</entry>
<entry>
Will automatically wrap commands in a transaction, but only if
the command seems to be
Modified: branches/JCA/documentation/salesforce-connector-guide/pom.xml
===================================================================
--- branches/JCA/documentation/salesforce-connector-guide/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/documentation/salesforce-connector-guide/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -3,7 +3,7 @@
<parent>
<groupId>org.jboss.teiid.documentation</groupId>
<artifactId>documentation</artifactId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>salesforce-connector-guide</artifactId>
Modified: branches/JCA/documentation/server-extensions-guide/pom.xml
===================================================================
--- branches/JCA/documentation/server-extensions-guide/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/documentation/server-extensions-guide/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -3,7 +3,7 @@
<parent>
<groupId>org.jboss.teiid.documentation</groupId>
<artifactId>documentation</artifactId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>server-extensions-guide</artifactId>
Modified: branches/JCA/engine/pom.xml
===================================================================
--- branches/JCA/engine/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -3,7 +3,7 @@
<parent>
<artifactId>teiid</artifactId>
<groupId>org.jboss.teiid</groupId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>teiid-engine</artifactId>
Deleted: branches/JCA/engine/src/main/java/com/metamatrix/common/application/Application.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/common/application/Application.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/common/application/Application.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,72 +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 com.metamatrix.common.application;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import com.metamatrix.common.CommonPlugin;
-import com.metamatrix.common.application.exception.ApplicationInitializationException;
-import com.metamatrix.common.application.exception.ApplicationLifecycleException;
-
-/**
- */
-public class Application {
-
- protected ApplicationEnvironment environment = new ApplicationEnvironment();
- private ArrayList<String> installedServices = new ArrayList<String>();
-
- /*
- * @see com.metamatrix.common.application.Application#installService(com.metamatrix.common.application.ApplicationService)
- */
- public final void installService(String type, ApplicationService service) throws ApplicationInitializationException {
- if(service == null) {
- return;
- }
-
- try {
- service.start(this.environment);
- this.environment.bindService(type, service);
- installedServices.add(0, type);
- } catch(ApplicationLifecycleException e) {
- throw new ApplicationInitializationException(e, CommonPlugin.Util.getString("BasicApplication.Failed_while_installing_service_of_type__1") + type); //$NON-NLS-1$
- }
- }
-
- public ApplicationEnvironment getEnvironment() {
- return this.environment;
- }
- /**
- * @see com.metamatrix.common.application.Application#stop()
- */
- public void stop() throws ApplicationLifecycleException {
- for (Iterator i = installedServices.iterator(); i.hasNext();) {
- String type = (String)i.next();
- ApplicationService service = environment.findService(type);
- environment.unbindService(type);
- service.stop();
- i.remove();
- }
- }
-
-}
Modified: branches/JCA/engine/src/main/java/com/metamatrix/common/application/ApplicationEnvironment.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/common/application/ApplicationEnvironment.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/common/application/ApplicationEnvironment.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -22,9 +22,14 @@
package com.metamatrix.common.application;
-import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.Map;
+import com.metamatrix.cache.CacheFactory;
+import com.metamatrix.common.CommonPlugin;
+import com.metamatrix.common.application.exception.ApplicationInitializationException;
+import com.metamatrix.common.application.exception.ApplicationLifecycleException;
+
/**
* The environment is available internally to the application as a means
* of finding application services of a particular type or to retrieve
@@ -32,7 +37,13 @@
*/
public class ApplicationEnvironment {
- private Map<String, ApplicationService> services = new HashMap<String, ApplicationService>();
+ private LinkedHashMap<String, ApplicationService> services = new LinkedHashMap<String, ApplicationService>();
+
+ private CacheFactory cache;
+
+ public ApplicationEnvironment() {
+
+ }
/*
* @see com.metamatrix.common.application.ApplicationEnvironment#bindService(java.lang.String, com.metamatrix.common.application.ApplicationService)
@@ -41,18 +52,42 @@
this.services.put(type, service);
}
+ public ApplicationService findService(String type) {
+ return this.services.get(type);
+ }
+
+ public CacheFactory getCacheFactory() {
+ return cache;
+ }
+
+ public void setCacheFactory(CacheFactory cache) {
+ this.cache = cache;
+ }
+
/*
- * @see com.metamatrix.common.application.ApplicationEnvironment#unbindService(java.lang.String)
+ * @see com.metamatrix.common.application.Application#installService(com.metamatrix.common.application.ApplicationService)
*/
- public void unbindService(String type) {
- this.services.remove(type);
+ public final void installService(String type, ApplicationService service) throws ApplicationInitializationException {
+ if(service == null) {
+ return;
+ }
+
+ try {
+ service.start(this);
+ this.bindService(type, service);
+ } catch(ApplicationLifecycleException e) {
+ throw new ApplicationInitializationException(e, CommonPlugin.Util.getString("BasicApplication.Failed_while_installing_service_of_type__1") + type); //$NON-NLS-1$
+ }
}
- /*
- * @see com.metamatrix.common.application.ApplicationEnvironment#findService(java.lang.String)
+ /**
+ * @see com.metamatrix.common.application.Application#stop()
*/
- public ApplicationService findService(String type) {
- return this.services.get(type);
+ public void stop() throws ApplicationLifecycleException {
+ for (Map.Entry<String, ApplicationService> entry : services.entrySet()) {
+ entry.getValue().stop();
+ }
+ services.clear();
}
}
Modified: branches/JCA/engine/src/main/java/com/metamatrix/common/buffer/BufferManager.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/common/buffer/BufferManager.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/common/buffer/BufferManager.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -100,13 +100,13 @@
* Creates a tuple source based on a schema and properties describing
* hints about the source
* @param elements Elements of the tuple source
- * @param groupName Tuple source group name
- * @param tupleSourceType Type of tuple source
+ * @param groupName Tuple source group name
+ * @param tupleSourceType Type of tuple source
* @return Identifier for tuple source
* @throws MetaMatrixComponentException indicating a non-business-related
* exception (such as a communication exception)
*/
- TupleSourceID createTupleSource(List elements, String[] types, String groupName, TupleSourceType tupleSourceType)
+ TupleSourceID createTupleSource(List elements, String groupName, TupleSourceType tupleSourceType)
throws MetaMatrixComponentException;
/**
Modified: branches/JCA/engine/src/main/java/com/metamatrix/common/buffer/impl/BufferConfig.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/common/buffer/impl/BufferConfig.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/common/buffer/impl/BufferConfig.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -32,7 +32,8 @@
*/
public class BufferConfig {
- public static int DEFAULT_CONNECTOR_BATCH_SIZE = 1000;
+ public static int DEFAULT_CONNECTOR_BATCH_SIZE = 2000;
+ public static int DEFAULT_PROCESSOR_BATCH_SIZE = 2000;
// Configuration
private long totalAvailableMemory = 100000000;
@@ -40,8 +41,7 @@
private int activeMemoryThreshold = 75;
private int managementInterval = 500;
private int connectorBatchSize = DEFAULT_CONNECTOR_BATCH_SIZE;
- //private int processorBatchSize = 500;
- private int processorBatchSize = 100;
+ private int processorBatchSize = DEFAULT_PROCESSOR_BATCH_SIZE;
private String bufferStorageDirectory = "../buffer"; //$NON-NLS-1$
private int logStatInterval = 0;
Modified: branches/JCA/engine/src/main/java/com/metamatrix/common/buffer/impl/BufferManagerImpl.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/common/buffer/impl/BufferManagerImpl.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/common/buffer/impl/BufferManagerImpl.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -29,6 +29,7 @@
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
+import java.util.ListIterator;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
@@ -48,12 +49,14 @@
import com.metamatrix.common.buffer.TupleSourceNotFoundException;
import com.metamatrix.common.lob.LobChunk;
import com.metamatrix.common.log.LogManager;
+import com.metamatrix.common.types.DataTypeManager;
import com.metamatrix.common.types.Streamable;
import com.metamatrix.core.log.MessageLevel;
import com.metamatrix.core.util.Assertion;
import com.metamatrix.dqp.DQPPlugin;
import com.metamatrix.dqp.util.LogConstants;
import com.metamatrix.query.execution.QueryExecPlugin;
+import com.metamatrix.query.sql.symbol.Expression;
/**
* <p>Default implementation of BufferManager. This buffer manager implementation
@@ -242,18 +245,18 @@
/**
* Register a new tuple source and return a unique ID for it.
- * @param schema List of ElementSymbol
* @param groupName Group name
* @param tupleSourceType Type of tuple source as defined in BufferManager constants
+ * @param schema List of ElementSymbol
* @return New unique ID for this tuple source
* @throws MetaMatrixComponentException If internal server error occurs
*/
- public TupleSourceID createTupleSource(List schema, String[] types, String groupName, TupleSourceType tupleSourceType)
+ public TupleSourceID createTupleSource(List schema, String groupName, TupleSourceType tupleSourceType)
throws MetaMatrixComponentException {
TupleSourceID newID = new TupleSourceID(String.valueOf(this.currentTuple.getAndIncrement()), this.lookup);
TupleGroupInfo tupleGroupInfo = getGroupInfo(groupName);
- TupleSourceInfo info = new TupleSourceInfo(newID, schema, types, tupleGroupInfo, tupleSourceType);
+ TupleSourceInfo info = new TupleSourceInfo(newID, schema, getTypeNames(schema), tupleGroupInfo, tupleSourceType);
tupleGroupInfo.getTupleSourceIDs().add(newID);
tupleSourceMap.put(newID, info);
if (LogManager.isMessageToBeRecorded(LogConstants.CTX_BUFFER_MGR, MessageLevel.DETAIL)) {
@@ -262,6 +265,21 @@
return newID;
}
+
+ /**
+ * Gets the data type names for each of the input expressions, in order.
+ * @param expressions List of Expressions
+ * @return
+ * @since 4.2
+ */
+ public static String[] getTypeNames(List expressions) {
+ String[] types = new String[expressions.size()];
+ for (ListIterator i = expressions.listIterator(); i.hasNext();) {
+ Expression expr = (Expression)i.next();
+ types[i.previousIndex()] = DataTypeManager.getDataTypeName(expr.getType());
+ }
+ return types;
+ }
/**
* Remove a tuple source based on ID
Deleted: branches/JCA/engine/src/main/java/com/metamatrix/dqp/ResourceFinder.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/dqp/ResourceFinder.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/dqp/ResourceFinder.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,43 +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 com.metamatrix.dqp;
-
-
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-
-import com.metamatrix.cache.CacheFactory;
-import com.metamatrix.core.MetaMatrixRuntimeException;
-
-public class ResourceFinder {
-
- public static CacheFactory getCacheFactory() {
- try {
- InitialContext ic = new InitialContext();
- return (CacheFactory)ic.lookup("teiid/cache");
- } catch (NamingException e) {
- throw new MetaMatrixRuntimeException(e);
- }
- }
-
-}
Modified: branches/JCA/engine/src/main/java/com/metamatrix/dqp/service/AuthorizationService.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/dqp/service/AuthorizationService.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/dqp/service/AuthorizationService.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -28,7 +28,6 @@
import com.metamatrix.api.exception.security.AuthorizationException;
import com.metamatrix.api.exception.security.AuthorizationMgmtException;
import com.metamatrix.common.application.ApplicationService;
-import com.metamatrix.core.CoreConstants;
import com.metamatrix.platform.security.api.AuthorizationPolicy;
import com.metamatrix.platform.security.api.AuthorizationRealm;
import com.metamatrix.query.eval.SecurityFunctionEvaluator;
@@ -50,8 +49,6 @@
public static final int CONTEXT_DELETE = 3;
public static final int CONTEXT_PROCEDURE = 4;
- public static final String DEFAULT_WSDL_USERNAME = CoreConstants.DEFAULT_ANON_USERNAME;
-
public static final String ENTITELEMENTS_ENABLED = "auth.check_entitlements"; //$NON-NLS-1$
public static final String ADMIN_ROLES_FILE = "auth.adminRolesFile"; //$NON-NLS-1$
Modified: branches/JCA/engine/src/main/java/com/metamatrix/dqp/service/ConfigurationService.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/dqp/service/ConfigurationService.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/dqp/service/ConfigurationService.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -49,6 +49,8 @@
*/
public URL getSystemVdb();
+ public File getWorkDir();
+
/**
* Get DQP properties
* @return Properties - properties
Modified: branches/JCA/engine/src/main/java/com/metamatrix/dqp/service/DataService.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/dqp/service/DataService.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/dqp/service/DataService.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -23,8 +23,9 @@
package com.metamatrix.dqp.service;
import java.util.Collection;
+import java.util.Properties;
-import org.teiid.connector.metadata.runtime.ConnectorMetadata;
+import org.teiid.connector.metadata.runtime.MetadataStore;
import com.metamatrix.api.exception.MetaMatrixComponentException;
import com.metamatrix.common.application.ApplicationService;
@@ -62,7 +63,7 @@
* @param connector Connector to retrieve capabilities from
* @return All capability information as key-value pairs
*/
- SourceCapabilities getCapabilities(String connectorName)
+ SourceCapabilities getCapabilities(String deployedConnector)
throws MetaMatrixComponentException;
/**
@@ -73,8 +74,8 @@
* @return
* @throws MetaMatrixComponentException
*/
- ConnectorMetadata getConnectorMetadata(String vdbName, String vdbVersion, String modelName) throws MetaMatrixComponentException;
-
+ MetadataStore getConnectorMetadata(String vdbName, String vdbVersion, String modelName, Properties importProperties) throws MetaMatrixComponentException;
+
/**
* Clear any caches for the connector binding. Incase of the JDBC Connector
* clear the result set cache.
Modified: branches/JCA/engine/src/main/java/com/metamatrix/dqp/service/MetadataService.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/dqp/service/MetadataService.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/dqp/service/MetadataService.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -24,11 +24,11 @@
import java.util.Map;
-import org.teiid.connector.metadata.runtime.DatatypeRecordImpl;
+import org.teiid.connector.metadata.runtime.Datatype;
+import org.teiid.metadata.CompositeMetadataStore;
import com.metamatrix.api.exception.MetaMatrixComponentException;
import com.metamatrix.common.application.ApplicationService;
-import com.metamatrix.connector.metadata.internal.IObjectSource;
import com.metamatrix.query.metadata.QueryMetadataInterface;
/**
@@ -37,8 +37,8 @@
QueryMetadataInterface lookupMetadata(String vdbName, String vdbVersion) throws MetaMatrixComponentException;
- IObjectSource getMetadataObjectSource(String vdbName, String vdbVersion) throws MetaMatrixComponentException;
+ CompositeMetadataStore getMetadataObjectSource(String vdbName, String vdbVersion) throws MetaMatrixComponentException;
- Map<String, DatatypeRecordImpl> getBuiltinDatatypes() throws MetaMatrixComponentException;
+ Map<String, Datatype> getBuiltinDatatypes() throws MetaMatrixComponentException;
}
Modified: branches/JCA/engine/src/main/java/com/metamatrix/dqp/service/VDBService.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/dqp/service/VDBService.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/dqp/service/VDBService.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -28,7 +28,6 @@
import com.metamatrix.common.application.ApplicationService;
import com.metamatrix.common.application.exception.ApplicationLifecycleException;
import com.metamatrix.common.vdb.api.VDBArchive;
-import com.metamatrix.metadata.runtime.api.VirtualDatabaseException;
/**
* This interface defines methods which are specific to dealing with VDBs
@@ -101,7 +100,12 @@
// to be removed later..
public String getConnectorName(String connectorBindingID) throws MetaMatrixComponentException;
- public String getActiveVDBVersion(String vdbName, String vdbVersion) throws MetaMatrixComponentException, VirtualDatabaseException;
-
+ /**
+ *
+ * @param vdbName
+ * @param vdbVersion may be null to indicate latest/default
+ * @return
+ * @throws MetaMatrixComponentException
+ */
public VDBArchive getVDB(String vdbName, String vdbVersion) throws MetaMatrixComponentException;
}
Modified: branches/JCA/engine/src/main/java/com/metamatrix/platform/security/api/service/SessionServiceInterface.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/platform/security/api/service/SessionServiceInterface.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/platform/security/api/service/SessionServiceInterface.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -144,4 +144,6 @@
*/
public void register(SessionListener listener);
+ public void setLocalSession(MetaMatrixSessionID sessionID);
+
}
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/eval/Evaluator.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/eval/Evaluator.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/eval/Evaluator.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -103,8 +103,9 @@
this.elements = elements;
}
- public void setContext(CommandContext context) {
+ public void initialize(CommandContext context, ProcessorDataManager dataMgr) {
this.context = context;
+ this.dataMgr = dataMgr;
}
public boolean evaluate(Criteria criteria, List tuple)
@@ -316,13 +317,13 @@
valueIter = new CollectionValueIterator(((SetCriteria)criteria).getValues());
} else if (criteria instanceof DependentSetCriteria){
ContextReference ref = (ContextReference)criteria;
- ValueIteratorSource vis = (ValueIteratorSource)getContext(criteria).getVariableContext().getGlobalValue(ref.getContextSymbol());
- HashSet<Object> values;
- try {
- values = vis.getCachedSet(ref.getValueExpression());
- } catch (MetaMatrixProcessingException e) {
- throw new CriteriaEvaluationException(e, e.getMessage());
- }
+ ValueIteratorSource vis = (ValueIteratorSource)getContext(criteria).getVariableContext().getGlobalValue(ref.getContextSymbol());
+ HashSet<Object> values;
+ try {
+ values = vis.getCachedSet(ref.getValueExpression());
+ } catch (MetaMatrixProcessingException e) {
+ throw new CriteriaEvaluationException(e, e.getMessage());
+ }
if (values != null) {
return values.contains(leftValue);
}
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/function/FunctionLibrary.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/function/FunctionLibrary.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/function/FunctionLibrary.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -82,6 +82,11 @@
public static final String FROM_UNIXTIME = "from_unixtime"; //$NON-NLS-1$
public static final String TIMESTAMPADD = "timestampadd"; //$NON-NLS-1$
+ public static final String PARSETIME = "parsetime"; //$NON-NLS-1$
+ public static final String PARSEDATE = "parsedate"; //$NON-NLS-1$
+ public static final String FORMATTIME = "formattime"; //$NON-NLS-1$
+ public static final String FORMATDATE = "formatdate"; //$NON-NLS-1$
+
public static final String NULLIF = "nullif"; //$NON-NLS-1$
public static final String COALESCE = "coalesce"; //$NON-NLS-1$
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/function/FunctionMethods.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/function/FunctionMethods.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/function/FunctionMethods.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -479,23 +479,6 @@
return ts;
}
- public static Object timestampAdd(String intervalType, Integer count, java.sql.Date timestamp) {
- Calendar cal = TimestampWithTimezone.getCalendar();
- // Note: if dates are different, for example, days are different, the times
- // are still different even they may have the same hours, minutes and seconds.
- cal.setTime(timestamp);
- addField(intervalType, count, cal);
- return TimestampWithTimezone.createDate(cal.getTime());
- }
-
- public static Object timestampAdd(String intervalType, Integer count, Time timestamp) {
- Calendar cal = TimestampWithTimezone.getCalendar();
- cal.setTime(timestamp);
- addField(intervalType, count, cal);
- return TimestampWithTimezone.createTime(cal.getTime());
- }
-
-
/** Helper method for timestampAdd method
* @param interval Integer
* @param count Integer
@@ -527,10 +510,6 @@
// ================== Function = timestampdiff =====================
- public static Object timestampDiff(String intervalType, Time timestamp1, Time timestamp2) {
- return timestampDiff(intervalType, new Timestamp(timestamp1.getTime()), new Timestamp(timestamp2.getTime()));
- }
-
/**
* This method truncates (ignores) figures
* @param interval
@@ -1055,16 +1034,6 @@
}
}
- public static Date parseDate(String date, String format)
- throws FunctionExecutionException {
- return TimestampWithTimezone.createDate(parseDateHelper(date, format));
- }
-
- public static Time parseTime(String time, String format)
- throws FunctionExecutionException {
- return TimestampWithTimezone.createTime(parseDateHelper(time, format));
- }
-
public static Timestamp parseTimestamp(String timestamp, String format)
throws FunctionExecutionException {
return new Timestamp(parseDateHelper(timestamp, format).getTime());
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/function/metadata/FunctionMetadataReader.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/function/metadata/FunctionMetadataReader.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/function/metadata/FunctionMetadataReader.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -106,9 +106,7 @@
}
return methods;
} catch (JDOMException e) {
- IOException ex = new IOException();
- ex.initCause(e);
- throw ex;
+ throw new IOException(e);
}
}
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/function/source/SystemSource.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/function/source/SystemSource.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/function/source/SystemSource.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -160,17 +160,11 @@
addIfNullFunctions();
// format
- addFormatTimeFunction(SourceSystemFunctions.FORMATTIME, QueryPlugin.Util.getString("SystemSource.Formattime_desc"), "format", QueryPlugin.Util.getString("SystemSource.Formattime_result_desc")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- addFormatDateFunction(SourceSystemFunctions.FORMATDATE, QueryPlugin.Util.getString("SystemSource.Formatdate_desc"), "format", QueryPlugin.Util.getString("SystemSource.Formatdate_result_desc")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- addFormatTimestampFunction(SourceSystemFunctions.FORMATTIMESTAMP, QueryPlugin.Util.getString("SystemSource.Formattimestamp_desc"), "format", QueryPlugin.Util.getString("SystemSource.Formattimestamp_result_desc")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-
+ addFormatTimestampFunction();
addFormatNumberFunctions();
// parse
- addParseTimeFunction(SourceSystemFunctions.PARSETIME, QueryPlugin.Util.getString("SystemSource.Parsetime_desc"), "parseTime", QueryPlugin.Util.getString("SystemSource.Parsetime_result_desc")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- addParseDateFunction(SourceSystemFunctions.PARSEDATE, QueryPlugin.Util.getString("SystemSource.Parsedate_desc"), "parseDate", QueryPlugin.Util.getString("SystemSource.Parsedate_result_desc")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- addParseTimestampFunction(SourceSystemFunctions.PARSETIMESTAMP, QueryPlugin.Util.getString("SystemSource.Parsetimestamp_desc"), "parseTimestamp", QueryPlugin.Util.getString("SystemSource.Parsetimestamp_result_desc")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-
+ addParseTimestampFunction();
addParseNumberFunctions();
// xml functions
@@ -396,14 +390,14 @@
private void addTimestampAddFunction() {
functions.add(
- new FunctionMethod(SourceSystemFunctions.TIMESTAMPADD, QueryPlugin.Util.getString("SystemSource.Timestampadd_d_desc"), DATETIME, FUNCTION_CLASS, "timestampAdd", //$NON-NLS-1$ //$NON-NLS-2$
+ new FunctionMethod(SourceSystemFunctions.TIMESTAMPADD, QueryPlugin.Util.getString("SystemSource.Timestampadd_d_desc"), DATETIME, FunctionMethod.SYNTHETIC, null, null, //$NON-NLS-1$
new FunctionParameter[] {
new FunctionParameter("interval", DataTypeManager.DefaultDataTypes.STRING, QueryPlugin.Util.getString("SystemSource.Timestampadd_d_arg1")), //$NON-NLS-1$ //$NON-NLS-2$
new FunctionParameter("count", DataTypeManager.DefaultDataTypes.INTEGER, QueryPlugin.Util.getString("SystemSource.Timestampadd_d_arg2")), //$NON-NLS-1$ //$NON-NLS-2$
new FunctionParameter("timestamp", DataTypeManager.DefaultDataTypes.DATE, QueryPlugin.Util.getString("SystemSource.Timestampadd_d_arg3"))}, //$NON-NLS-1$ //$NON-NLS-2$
new FunctionParameter("result", DataTypeManager.DefaultDataTypes.DATE, QueryPlugin.Util.getString("SystemSource.Timestampadd_d_result_desc")) ) ); //$NON-NLS-1$ //$NON-NLS-2$
functions.add(
- new FunctionMethod(SourceSystemFunctions.TIMESTAMPADD, QueryPlugin.Util.getString("SystemSource.Timestampadd_t_desc"), DATETIME, FUNCTION_CLASS, "timestampAdd", //$NON-NLS-1$ //$NON-NLS-2$
+ new FunctionMethod(SourceSystemFunctions.TIMESTAMPADD, QueryPlugin.Util.getString("SystemSource.Timestampadd_t_desc"), DATETIME, FunctionMethod.SYNTHETIC, null, null, //$NON-NLS-1$
new FunctionParameter[] {
new FunctionParameter("interval", DataTypeManager.DefaultDataTypes.STRING, QueryPlugin.Util.getString("SystemSource.Timestampadd_t_arg1")), //$NON-NLS-1$ //$NON-NLS-2$
new FunctionParameter("count", DataTypeManager.DefaultDataTypes.INTEGER, QueryPlugin.Util.getString("SystemSource.Timestampadd_t_arg2")), //$NON-NLS-1$ //$NON-NLS-2$
@@ -420,13 +414,6 @@
private void addTimestampDiffFunction() {
functions.add(
- new FunctionMethod(SourceSystemFunctions.TIMESTAMPDIFF, QueryPlugin.Util.getString("SystemSource.Timestampdiff_t_desc"), DATETIME, FUNCTION_CLASS, "timestampDiff", //$NON-NLS-1$ //$NON-NLS-2$
- new FunctionParameter[] {
- new FunctionParameter("interval", DataTypeManager.DefaultDataTypes.STRING, QueryPlugin.Util.getString("SystemSource.Timestampdiff_t_arg1")), //$NON-NLS-1$ //$NON-NLS-2$
- new FunctionParameter("time1", DataTypeManager.DefaultDataTypes.TIME, QueryPlugin.Util.getString("SystemSource.Timestampdiff_t_arg2")), //$NON-NLS-1$ //$NON-NLS-2$
- new FunctionParameter("time2", DataTypeManager.DefaultDataTypes.TIME, QueryPlugin.Util.getString("SystemSource.Timestampdiff_t_arg3"))}, //$NON-NLS-1$ //$NON-NLS-2$
- new FunctionParameter("result", DataTypeManager.DefaultDataTypes.LONG, QueryPlugin.Util.getString("SystemSource.Timestampdiff_t_result_desc")) ) ); //$NON-NLS-1$ //$NON-NLS-2$
- functions.add(
new FunctionMethod(SourceSystemFunctions.TIMESTAMPDIFF, QueryPlugin.Util.getString("SystemSource.Timestampdiff_ts_desc"), DATETIME, FUNCTION_CLASS, "timestampDiff", //$NON-NLS-1$ //$NON-NLS-2$
new FunctionParameter[] {
new FunctionParameter("interval", DataTypeManager.DefaultDataTypes.STRING, QueryPlugin.Util.getString("SystemSource.Timestampdiff_ts_arg1")), //$NON-NLS-1$ //$NON-NLS-2$
@@ -805,59 +792,47 @@
nvl.setNullDependent(true);
functions.add(nvl);
}
-
- private void addFormatTimeFunction(String functionName, String description, String methodName, String resultDesc) {
+
+ private void addFormatTimestampFunction() {
functions.add(
- new FunctionMethod(functionName, description,CONVERSION, FUNCTION_CLASS, methodName,
+ new FunctionMethod(SourceSystemFunctions.FORMATTIMESTAMP, QueryPlugin.Util.getString("SystemSource.Formattimestamp_desc"),CONVERSION, FUNCTION_CLASS, "format", //$NON-NLS-1$ //$NON-NLS-2$
new FunctionParameter[] {
- new FunctionParameter("time", DataTypeManager.DefaultDataTypes.TIME, QueryPlugin.Util.getString("SystemSource.Formattime_arg1")), //$NON-NLS-1$ //$NON-NLS-2$
- new FunctionParameter("format", DataTypeManager.DefaultDataTypes.STRING, QueryPlugin.Util.getString("SystemSource.Formattime_arg2")) }, //$NON-NLS-1$ //$NON-NLS-2$
- new FunctionParameter("result", DataTypeManager.DefaultDataTypes.STRING, resultDesc) ) ); //$NON-NLS-1$
- }
-
- private void addFormatDateFunction(String functionName, String description, String methodName, String resultDesc) {
- functions.add(
- new FunctionMethod(functionName, description,CONVERSION, FUNCTION_CLASS, methodName,
- new FunctionParameter[] {
- new FunctionParameter("date", DataTypeManager.DefaultDataTypes.DATE, QueryPlugin.Util.getString("SystemSource.Formatdate_arg1")), //$NON-NLS-1$ //$NON-NLS-2$
- new FunctionParameter("format", DataTypeManager.DefaultDataTypes.STRING, QueryPlugin.Util.getString("SystemSource.Formatdate_arg2")) }, //$NON-NLS-1$ //$NON-NLS-2$
- new FunctionParameter("result", DataTypeManager.DefaultDataTypes.STRING, resultDesc) ) ); //$NON-NLS-1$
- }
-
- private void addFormatTimestampFunction(String functionName, String description, String methodName, String resultDesc) {
- functions.add(
- new FunctionMethod(functionName, description,CONVERSION, FUNCTION_CLASS, methodName,
- new FunctionParameter[] {
new FunctionParameter("timestamp", DataTypeManager.DefaultDataTypes.TIMESTAMP, QueryPlugin.Util.getString("SystemSource.Formattimestamp_arg1")), //$NON-NLS-1$ //$NON-NLS-2$
new FunctionParameter("format", DataTypeManager.DefaultDataTypes.STRING, QueryPlugin.Util.getString("SystemSource.Formattimestamp_arg2")) }, //$NON-NLS-1$ //$NON-NLS-2$
- new FunctionParameter("result", DataTypeManager.DefaultDataTypes.STRING, resultDesc) ) ); //$NON-NLS-1$
- }
-
- private void addParseTimeFunction(String functionName, String description, String methodName, String resultDesc) {
+ new FunctionParameter("result", DataTypeManager.DefaultDataTypes.STRING, QueryPlugin.Util.getString("SystemSource.Formattimestamp_result_desc")) ) ); //$NON-NLS-1$ //$NON-NLS-2$
functions.add(
- new FunctionMethod(functionName, description,CONVERSION, FUNCTION_CLASS, methodName,
- new FunctionParameter[] {
- new FunctionParameter("time", DataTypeManager.DefaultDataTypes.STRING, QueryPlugin.Util.getString("SystemSource.Parsetime_arg1")), //$NON-NLS-1$ //$NON-NLS-2$
- new FunctionParameter("format", DataTypeManager.DefaultDataTypes.STRING, QueryPlugin.Util.getString("SystemSource.Parsetime_arg2")) }, //$NON-NLS-1$ //$NON-NLS-2$
- new FunctionParameter("result", DataTypeManager.DefaultDataTypes.TIME, resultDesc) ) ); //$NON-NLS-1$
- }
-
- private void addParseDateFunction(String functionName, String description, String methodName, String resultDesc) {
+ new FunctionMethod(FunctionLibrary.FORMATDATE, QueryPlugin.Util.getString("SystemSource.Formatdate_desc"),CONVERSION, FunctionMethod.SYNTHETIC, null, null, //$NON-NLS-1$
+ new FunctionParameter[] {
+ new FunctionParameter("date", DataTypeManager.DefaultDataTypes.DATE, QueryPlugin.Util.getString("SystemSource.Formatdate_arg1")), //$NON-NLS-1$ //$NON-NLS-2$
+ new FunctionParameter("format", DataTypeManager.DefaultDataTypes.STRING, QueryPlugin.Util.getString("SystemSource.Formatdate_arg2")) }, //$NON-NLS-1$ //$NON-NLS-2$
+ new FunctionParameter("result", DataTypeManager.DefaultDataTypes.STRING, QueryPlugin.Util.getString("SystemSource.Formatdate_result_desc")) ) ); //$NON-NLS-1$ //$NON-NLS-2$
functions.add(
- new FunctionMethod(functionName, description,CONVERSION, FUNCTION_CLASS, methodName,
- new FunctionParameter[] {
- new FunctionParameter("date", DataTypeManager.DefaultDataTypes.STRING, QueryPlugin.Util.getString("SystemSource.Parsedate_arg1")), //$NON-NLS-1$ //$NON-NLS-2$
- new FunctionParameter("format", DataTypeManager.DefaultDataTypes.STRING, QueryPlugin.Util.getString("SystemSource.Parsedate_arg2")) }, //$NON-NLS-1$ //$NON-NLS-2$
- new FunctionParameter("result", DataTypeManager.DefaultDataTypes.DATE, resultDesc) ) ); //$NON-NLS-1$
+ new FunctionMethod(FunctionLibrary.FORMATTIME, QueryPlugin.Util.getString("SystemSource.Formattime_desc"),CONVERSION, FunctionMethod.SYNTHETIC, null, null, //$NON-NLS-1$
+ new FunctionParameter[] {
+ new FunctionParameter("time", DataTypeManager.DefaultDataTypes.TIME, QueryPlugin.Util.getString("SystemSource.Formattime_arg1")), //$NON-NLS-1$ //$NON-NLS-2$
+ new FunctionParameter("format", DataTypeManager.DefaultDataTypes.STRING, QueryPlugin.Util.getString("SystemSource.Formattime_arg2")) }, //$NON-NLS-1$ //$NON-NLS-2$
+ new FunctionParameter("result", DataTypeManager.DefaultDataTypes.STRING, QueryPlugin.Util.getString("SystemSource.Formattime_result_desc")) ) ); //$NON-NLS-1$ //$NON-NLS-2$
}
-
- private void addParseTimestampFunction(String functionName, String description, String methodName, String resultDesc) {
+
+ private void addParseTimestampFunction() {
functions.add(
- new FunctionMethod(functionName, description,CONVERSION, FUNCTION_CLASS, methodName,
+ new FunctionMethod(SourceSystemFunctions.PARSETIMESTAMP, QueryPlugin.Util.getString("SystemSource.Parsetimestamp_desc"),CONVERSION, FUNCTION_CLASS, "parseTimestamp", //$NON-NLS-1$ //$NON-NLS-2$
new FunctionParameter[] {
new FunctionParameter("timestamp", DataTypeManager.DefaultDataTypes.STRING, QueryPlugin.Util.getString("SystemSource.Parsetimestamp_arg1")), //$NON-NLS-1$ //$NON-NLS-2$
new FunctionParameter("format", DataTypeManager.DefaultDataTypes.STRING, QueryPlugin.Util.getString("SystemSource.Parsetimestamp_arg2")) }, //$NON-NLS-1$ //$NON-NLS-2$
- new FunctionParameter("result", DataTypeManager.DefaultDataTypes.TIMESTAMP, resultDesc) ) ); //$NON-NLS-1$
+ new FunctionParameter("result", DataTypeManager.DefaultDataTypes.TIMESTAMP, QueryPlugin.Util.getString("SystemSource.Parsetimestamp_result_desc")) ) ); //$NON-NLS-1$ //$NON-NLS-2$
+ functions.add(
+ new FunctionMethod(FunctionLibrary.PARSETIME, QueryPlugin.Util.getString("SystemSource.Parsetime_desc"),CONVERSION, FunctionMethod.SYNTHETIC, null, null, //$NON-NLS-1$
+ new FunctionParameter[] {
+ new FunctionParameter("time", DataTypeManager.DefaultDataTypes.STRING, QueryPlugin.Util.getString("SystemSource.Parsetime_arg1")), //$NON-NLS-1$ //$NON-NLS-2$
+ new FunctionParameter("format", DataTypeManager.DefaultDataTypes.STRING, QueryPlugin.Util.getString("SystemSource.Parsetime_arg2")) }, //$NON-NLS-1$ //$NON-NLS-2$
+ new FunctionParameter("result", DataTypeManager.DefaultDataTypes.TIME, QueryPlugin.Util.getString("SystemSource.Parsetime_result_desc")) ) ); //$NON-NLS-1$ //$NON-NLS-2$
+ functions.add(
+ new FunctionMethod(FunctionLibrary.PARSEDATE, QueryPlugin.Util.getString("SystemSource.Parsedate_desc"),CONVERSION, FunctionMethod.SYNTHETIC, null, null, //$NON-NLS-1$
+ new FunctionParameter[] {
+ new FunctionParameter("date", DataTypeManager.DefaultDataTypes.STRING, QueryPlugin.Util.getString("SystemSource.Parsedate_arg1")), //$NON-NLS-1$ //$NON-NLS-2$
+ new FunctionParameter("format", DataTypeManager.DefaultDataTypes.STRING, QueryPlugin.Util.getString("SystemSource.Parsedate_arg2")) }, //$NON-NLS-1$ //$NON-NLS-2$
+ new FunctionParameter("result", DataTypeManager.DefaultDataTypes.DATE, QueryPlugin.Util.getString("SystemSource.Parsedate_result_desc")) ) ); //$NON-NLS-1$ //$NON-NLS-2$
}
private void addFormatNumberFunction(String functionName, String description, String methodName, String inputParam, String dataType, String resultDesc) {
Deleted: branches/JCA/engine/src/main/java/com/metamatrix/query/metadata/MetadataStore.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/metadata/MetadataStore.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/metadata/MetadataStore.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,107 +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 com.metamatrix.query.metadata;
-
-import java.util.Collection;
-
-import org.teiid.connector.metadata.runtime.AbstractMetadataRecord;
-import org.teiid.connector.metadata.runtime.ColumnRecordImpl;
-import org.teiid.connector.metadata.runtime.ModelRecordImpl;
-import org.teiid.connector.metadata.runtime.ProcedureRecordImpl;
-import org.teiid.connector.metadata.runtime.PropertyRecordImpl;
-import org.teiid.connector.metadata.runtime.TableRecordImpl;
-
-import com.metamatrix.api.exception.MetaMatrixComponentException;
-import com.metamatrix.api.exception.query.QueryMetadataException;
-import com.metamatrix.core.MetaMatrixCoreException;
-
-public interface MetadataStore {
-
- ModelRecordImpl getModel(String fullName) throws QueryMetadataException, MetaMatrixComponentException;
-
- TableRecordImpl findGroup(String fullName) throws QueryMetadataException, MetaMatrixComponentException;
-
- /**
- * Returns the fully qualified names of groups matching the given partial name.
- *
- * @param partialGroupName expected to be in lowercase
- * @return
- * @throws MetaMatrixComponentException
- * @throws QueryMetadataException
- */
- Collection<String> getGroupsForPartialName(final String partialGroupName)
- throws MetaMatrixComponentException, QueryMetadataException;
-
- ProcedureRecordImpl getStoredProcedure(final String fullyQualifiedProcedureName)
- throws MetaMatrixComponentException, QueryMetadataException;
-
- Collection<PropertyRecordImpl> getExtensionProperties(AbstractMetadataRecord record) throws MetaMatrixComponentException;
-
- /**
- * Get the set of model names known to this store.
- */
- Collection<String> getModelNames();
-
- /**
- * Search method used by the index connector
- * @param indexName
- * @param patterns
- * @param isPrefix
- * @param isCaseSensitive
- * @return
- * @throws MetaMatrixCoreException
- */
- Collection<? extends AbstractMetadataRecord> findMetadataRecords(final String indexName,
- String pattern, boolean isPrefix,
- boolean isCaseSensitive) throws MetaMatrixCoreException;
-
- boolean postProcessFindMetadataRecords();
-
- /**
- * @deprecated used only for xml
- * @param table
- * @return
- * @throws MetaMatrixComponentException
- */
- Collection getXMLTempGroups(TableRecordImpl table) throws MetaMatrixComponentException;
-
- /**
- * @deprecated used only for xml
- * @param table
- * @return
- * @throws MetaMatrixComponentException
- */
- Collection<? extends AbstractMetadataRecord> findMetadataRecords(final char recordType,
- final String entityName, final boolean isPartialName)
- throws MetaMatrixComponentException;
-
- /**
- * @deprecated used only by xml and uuid resolving
- * @param fullName
- * @return
- * @throws QueryMetadataException
- * @throws MetaMatrixComponentException
- */
- ColumnRecordImpl findElement(String fullName) throws QueryMetadataException, MetaMatrixComponentException;
-
-}
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/metadata/TempMetadataStore.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/metadata/TempMetadataStore.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/metadata/TempMetadataStore.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -43,13 +43,13 @@
public class TempMetadataStore implements Serializable {
// UPPER CASE TEMP GROUP NAME --> TempMetadataID for group
- private Map tempGroups;
+ private Map<String, TempMetadataID> tempGroups;
/**
* Constructor for TempMetadataStore.
*/
public TempMetadataStore() {
- this(new HashMap());
+ this(new HashMap<String, TempMetadataID>());
}
/**
@@ -57,9 +57,9 @@
* the parameter is null, a new empty Map will beused instead.
* @param data Map of upper case group name to group TempMetadataID object
*/
- public TempMetadataStore(Map data) {
+ public TempMetadataStore(Map<String, TempMetadataID> data) {
if (data == null) {
- tempGroups = new HashMap();
+ tempGroups = new HashMap<String, TempMetadataID>();
} else {
tempGroups = data;
}
@@ -164,7 +164,7 @@
public TempMetadataID addElementSymbolToTempGroup(String tempGroup, SingleElementSymbol symbol) {
String tempName = tempGroup.toUpperCase();
- TempMetadataID groupID = (TempMetadataID)this.tempGroups.get(tempName);
+ TempMetadataID groupID = this.tempGroups.get(tempName);
if (groupID != null) {
TempMetadataID elementID = createElementSymbol(tempName, symbol, false);
@@ -198,7 +198,7 @@
* @return Metadata ID or null if not found
*/
public TempMetadataID getTempGroupID(String tempGroup) {
- return (TempMetadataID) tempGroups.get(tempGroup.toUpperCase());
+ return tempGroups.get(tempGroup.toUpperCase());
}
/**
@@ -213,7 +213,7 @@
}
String groupName = tempElement.substring(0, index);
- TempMetadataID groupID = (TempMetadataID) tempGroups.get(groupName.toUpperCase());
+ TempMetadataID groupID = tempGroups.get(groupName.toUpperCase());
if(groupID != null) {
Iterator elementIter = groupID.getElements().iterator();
while(elementIter.hasNext()) {
@@ -234,7 +234,7 @@
* @return Metadata ID or null if not found
*/
public List getTempElementElementIDs(String tempGroup) {
- TempMetadataID groupID = (TempMetadataID) tempGroups.get(tempGroup.toUpperCase());
+ TempMetadataID groupID = tempGroups.get(tempGroup.toUpperCase());
if(groupID != null) {
return groupID.getElements();
}
@@ -243,14 +243,14 @@
}
public void addElementToTempGroup(String tempGroup, ElementSymbol symbol) {
- TempMetadataID groupID = (TempMetadataID) tempGroups.get(tempGroup.toUpperCase());
+ TempMetadataID groupID = tempGroups.get(tempGroup.toUpperCase());
if(groupID != null) {
groupID.addElement((TempMetadataID)symbol.getMetadataID());
}
}
- public void removeTempGroup(String tempGroup) {
- tempGroups.remove(tempGroup.toUpperCase());
+ public TempMetadataID removeTempGroup(String tempGroup) {
+ return tempGroups.remove(tempGroup.toUpperCase());
}
}
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/batch/BatchedUpdatePlanner.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/batch/BatchedUpdatePlanner.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/batch/BatchedUpdatePlanner.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -40,6 +40,7 @@
import com.metamatrix.query.optimizer.capabilities.SourceCapabilities;
import com.metamatrix.query.optimizer.capabilities.SourceCapabilities.Capability;
import com.metamatrix.query.optimizer.relational.RelationalPlanner;
+import com.metamatrix.query.optimizer.relational.rules.CapabilitiesUtil;
import com.metamatrix.query.processor.ProcessorPlan;
import com.metamatrix.query.processor.batch.BatchedUpdatePlan;
import com.metamatrix.query.processor.relational.BatchedUpdateNode;
@@ -138,7 +139,7 @@
batchLoop: for (int batchIndex = commandIndex+1; batchIndex < numCommands; batchIndex++) {
Command batchingCandidate = (Command)updateCommands.get(batchIndex);
// If this command updates the same model, and is eligible for batching, add it to the batch
- if (canBeAddedToBatch(batchingCandidate, batchModelID, metadata)) {
+ if (canBeAddedToBatch(batchingCandidate, batchModelID, metadata, capFinder)) {
batch.add(batchingCandidate);
if (allContexts != null) {
contexts.add(allContexts.get(batchIndex));
@@ -222,20 +223,18 @@
* @param command an update command
* @param batchModelID the model ID for the batch concerned
* @param metadata
+ * @param capFinder
* @return true if this command can be place in a batch associated with the model ID; false otherwise
* @throws QueryMetadataException
* @throws MetaMatrixComponentException
* @since 4.2
*/
- private static boolean canBeAddedToBatch(Command command, Object batchModelID, QueryMetadataInterface metadata) throws QueryMetadataException, MetaMatrixComponentException {
+ private static boolean canBeAddedToBatch(Command command, Object batchModelID, QueryMetadataInterface metadata, CapabilitiesFinder capFinder) throws QueryMetadataException, MetaMatrixComponentException {
// If it's eligible ...
if (isEligibleForBatching(command, metadata)) {
Object modelID = metadata.getModelID(getUpdatedGroup(command).getMetadataID());
- // ... and it updates a group in the same model ...
- if (modelID.equals(batchModelID)) {
- // ... then it can be added to the batch.
- return true;
- }
+
+ return CapabilitiesUtil.isSameConnector(modelID, batchModelID, metadata, capFinder);
}
return false;
}
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/capabilities/DefaultCapabilitiesFinder.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/capabilities/DefaultCapabilitiesFinder.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/capabilities/DefaultCapabilitiesFinder.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -28,17 +28,23 @@
*/
public class DefaultCapabilitiesFinder implements CapabilitiesFinder {
+ private SourceCapabilities capabilities;
/**
*
*/
public DefaultCapabilitiesFinder() {
+ this.capabilities = new BasicSourceCapabilities();
}
+
+ public DefaultCapabilitiesFinder(SourceCapabilities capabilities) {
+ this.capabilities = capabilities;
+ }
/* (non-Javadoc)
* @see com.metamatrix.query.optimizer.capabilities.CapabilitiesFinder#findCapabilities(java.lang.Object)
*/
public SourceCapabilities findCapabilities(String modelName) throws MetaMatrixComponentException {
- return new BasicSourceCapabilities();
+ return capabilities;
}
}
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/PlanToProcessConverter.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/PlanToProcessConverter.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/PlanToProcessConverter.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -29,6 +29,7 @@
import com.metamatrix.api.exception.MetaMatrixComponentException;
import com.metamatrix.api.exception.query.QueryMetadataException;
import com.metamatrix.api.exception.query.QueryPlannerException;
+import com.metamatrix.core.CoreConstants;
import com.metamatrix.core.id.IDGenerator;
import com.metamatrix.core.id.IntegerID;
import com.metamatrix.core.id.IntegerIDFactory;
@@ -82,7 +83,6 @@
import com.metamatrix.query.sql.util.SymbolMap;
import com.metamatrix.query.sql.visitor.EvaluatableVisitor;
import com.metamatrix.query.sql.visitor.GroupCollectorVisitor;
-import com.metamatrix.query.util.CommandContext;
import com.metamatrix.query.util.ErrorMessageKeys;
public class PlanToProcessConverter {
@@ -90,14 +90,12 @@
private IDGenerator idGenerator;
private AnalysisRecord analysisRecord;
private CapabilitiesFinder capFinder;
- private CommandContext context;
- public PlanToProcessConverter(QueryMetadataInterface metadata, IDGenerator idGenerator, AnalysisRecord analysisRecord, CapabilitiesFinder capFinder, CommandContext context) {
+ public PlanToProcessConverter(QueryMetadataInterface metadata, IDGenerator idGenerator, AnalysisRecord analysisRecord, CapabilitiesFinder capFinder) {
this.metadata = metadata;
this.idGenerator = idGenerator;
this.analysisRecord = analysisRecord;
this.capFinder = capFinder;
- this.context = context;
}
public RelationalPlan convert(PlanNode planNode)
@@ -275,16 +273,9 @@
//create dependent access node
DependentAccessNode depAccessNode = new DependentAccessNode(getID());
- int maxSetSize = -1;
if(modelID != null){
- try {
- // set the max set size for the access node
- maxSetSize = CapabilitiesUtil.getMaxInCriteriaSize(modelID, metadata, capFinder);
- }catch(QueryMetadataException e) {
- throw new QueryPlannerException(e, QueryExecPlugin.Util.getString(ErrorMessageKeys.OPTIMIZER_0006, modelID));
- }
+ depAccessNode.setMaxSetSize(CapabilitiesUtil.getMaxInCriteriaSize(modelID, metadata, capFinder));
}
- depAccessNode.setMaxSetSize(maxSetSize);
processNode = depAccessNode;
aNode = depAccessNode;
}
@@ -298,8 +289,7 @@
//-- special handling for temp tables. currently they cannot perform projection
try {
if (command instanceof Query) {
- processNode = correctProjectionForTempTable(node,
- aNode);
+ processNode = correctProjectionInternalTables(node, aNode, (Query)command);
}
} catch (QueryMetadataException err) {
throw new MetaMatrixComponentException(err);
@@ -417,20 +407,23 @@
return processNode;
}
- private RelationalNode correctProjectionForTempTable(PlanNode node,
- AccessNode aNode) throws QueryMetadataException,
+ private RelationalNode correctProjectionInternalTables(PlanNode node,
+ AccessNode aNode, Query query) throws QueryMetadataException,
MetaMatrixComponentException {
if (node.getGroups().size() != 1) {
return aNode;
}
GroupSymbol group = node.getGroups().iterator().next();
- if (!group.isTempTable()) {
+ if (!group.isTempTable() && !CoreConstants.SYSTEM_MODEL.equals(metadata.getFullName(metadata.getModelID(group.getMetadataID())))) {
return aNode;
}
List projectSymbols = (List) node.getProperty(NodeConstants.Info.OUTPUT_COLS);
- List acutalColumns = ResolverUtil.resolveElementsInGroup(group, metadata);
+ List<ElementSymbol> acutalColumns = ResolverUtil.resolveElementsInGroup(group, metadata);
+ if (projectSymbols.equals(acutalColumns)) {
+ return aNode;
+ }
node.setProperty(NodeConstants.Info.OUTPUT_COLS, acutalColumns);
- if (node.getParent().getType() == NodeConstants.Types.PROJECT) {
+ if (node.getParent() != null && node.getParent().getType() == NodeConstants.Types.PROJECT) {
//if the parent is already a project, just correcting the output cols is enough
return aNode;
}
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/RelationalPlanner.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/RelationalPlanner.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/RelationalPlanner.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -53,7 +53,6 @@
import com.metamatrix.query.sql.symbol.SingleElementSymbol;
import com.metamatrix.query.sql.util.SymbolMap;
import com.metamatrix.query.sql.visitor.CorrelatedReferenceCollectorVisitor;
-import com.metamatrix.query.sql.visitor.GroupCollectorVisitor;
import com.metamatrix.query.sql.visitor.GroupsUsedByElementsVisitor;
import com.metamatrix.query.util.CommandContext;
import com.metamatrix.query.util.ErrorMessageKeys;
@@ -146,7 +145,7 @@
planToProcessConverter = context.getPlanToProcessConverter();
}
if (planToProcessConverter == null) {
- planToProcessConverter = new PlanToProcessConverter(metadata, idGenerator, analysisRecord, capFinder, context);
+ planToProcessConverter = new PlanToProcessConverter(metadata, idGenerator, analysisRecord, capFinder);
}
RelationalPlan result = planToProcessConverter.convert(plan);
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/CapabilitiesUtil.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/CapabilitiesUtil.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/CapabilitiesUtil.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -222,7 +222,7 @@
return supports(Capability.QUERY_SELECT_DISTINCT, modelID, metadata, capFinder);
}
- public static boolean supportsSelectLiterals(Object modelID, QueryMetadataInterface metadata, CapabilitiesFinder capFinder)
+ public static boolean supportsSelectExpression(Object modelID, QueryMetadataInterface metadata, CapabilitiesFinder capFinder)
throws QueryMetadataException, MetaMatrixComponentException {
return supports(Capability.QUERY_SELECT_EXPRESSION, modelID, metadata, capFinder);
}
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/NewCalculateCostUtil.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/NewCalculateCostUtil.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/NewCalculateCostUtil.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -36,6 +36,7 @@
import com.metamatrix.api.exception.MetaMatrixComponentException;
import com.metamatrix.api.exception.query.QueryMetadataException;
+import com.metamatrix.common.buffer.impl.BufferConfig;
import com.metamatrix.common.log.LogManager;
import com.metamatrix.common.types.DataTypeManager;
import com.metamatrix.query.QueryPlugin;
@@ -78,11 +79,6 @@
public static final float UNKNOWN_VALUE = -1;
- // These batch size should generally not be used as they should be retrieved from the
- // command context, however they might be used in test scenarios where that is undefined
- static final int DEFAULT_PROCESSOR_BATCH_SIZE = 2000;
- static final int DEFAULT_CONNECTOR_BATCH_SIZE = 2000;
-
// the following variables are used to hold cost estimates (roughly in milliseconds)
private final static float compareTime = .05f; //TODO: a better estimate would be based upon the number of conjuncts
private final static float readTime = .001f; //TODO: should come from the connector
@@ -908,7 +904,7 @@
float numberComparisons = merge?(leftChildCardinality + rightChildCardinality):(leftChildCardinality * rightChildCardinality);
- float connectorBatchSize = DEFAULT_CONNECTOR_BATCH_SIZE;
+ float connectorBatchSize = BufferConfig.DEFAULT_CONNECTOR_BATCH_SIZE;
if(context != null) {
connectorBatchSize = context.getConnectorBatchSize();
}
@@ -969,8 +965,8 @@
return UNKNOWN_VALUE;
}
- float connectorBatchSize = DEFAULT_CONNECTOR_BATCH_SIZE;
- float processorBatchSize = DEFAULT_PROCESSOR_BATCH_SIZE;
+ float connectorBatchSize = BufferConfig.DEFAULT_CONNECTOR_BATCH_SIZE;
+ float processorBatchSize = BufferConfig.DEFAULT_PROCESSOR_BATCH_SIZE;
if(context != null) {
connectorBatchSize = context.getConnectorBatchSize();
processorBatchSize = context.getProcessorBatchSize();
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/RuleCollapseSource.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/RuleCollapseSource.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/RuleCollapseSource.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -434,17 +434,11 @@
List clauses = from.getClauses();
FromClause rootClause = (FromClause) clauses.get(0);
- // If only one group, this is as good as we can do
- if(rootClause instanceof UnaryFromClause) {
- return;
- }
-
// If all joins are inner joins, move criteria to WHERE and make
// FROM a list of groups instead of a tree of JoinPredicates
if(! hasOuterJoins(rootClause)) {
from.setClauses(new ArrayList());
shredJoinTree(rootClause, query);
-
} // else leave as is
}
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/RulePlanProcedures.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/RulePlanProcedures.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/RulePlanProcedures.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -183,7 +183,7 @@
}
public void visit(DependentSetCriteria obj) {
- if (checkForInput(obj.getExpression())) {
+ if (!obj.isNegated() && checkForInput(obj.getExpression())) {
addInputNode((Reference)obj.getExpression());
}
}
@@ -197,9 +197,9 @@
return inputs.contains(ref.getExpression());
}
- boolean checkForAnyInput(LanguageObject expr) {
- for (Iterator refs = ReferenceCollectorVisitor.getReferences(expr).iterator(); refs.hasNext();) {
- if (checkForInput((Expression)refs.next())) {
+ boolean checkForAnyInput(LanguageObject expr) {
+ for (Reference ref : ReferenceCollectorVisitor.getReferences(expr)) {
+ if (checkForInput(ref)) {
return true;
}
}
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/RulePushSelectCriteria.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/RulePushSelectCriteria.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/RulePushSelectCriteria.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -282,8 +282,9 @@
}
satisfyAccessPatterns(critNode, currentNode);
-
- if (critNode.hasBooleanProperty(NodeConstants.Info.IS_DEPENDENT_SET)) {
+
+ if (critNode.hasBooleanProperty(NodeConstants.Info.IS_DEPENDENT_SET)
+ && CapabilitiesUtil.getMaxInCriteriaSize(RuleRaiseAccess.getModelIDFromAccess(currentNode, metadata), metadata, capFinder) > 0) {
//once a dependent crit node is pushed, don't bother pushing it further into the command
//dependent access node will use this as an assumption for where dependent sets can appear in the command
critNode.setProperty(NodeConstants.Info.IS_PUSHED, Boolean.TRUE);
@@ -449,14 +450,11 @@
* @param elements
* @return
*/
- static boolean satisfyAccessPatterns(List aps, Collection elements) {
- for (Iterator i = aps.iterator(); i.hasNext();) {
- AccessPattern ap = (AccessPattern)i.next();
- if (ap.getCurrentElements().containsAll(elements)) {
- ap.getUnsatisfied().removeAll(elements);
- if (ap.getUnsatisfied().isEmpty()) {
- return true;
- }
+ static boolean satisfyAccessPatterns(List<AccessPattern> aps, Collection elements) {
+ for (AccessPattern ap : aps) {
+ ap.getUnsatisfied().removeAll(elements);
+ if (ap.getUnsatisfied().isEmpty()) {
+ return true;
}
}
return false;
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/RuleRaiseAccess.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/RuleRaiseAccess.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/RuleRaiseAccess.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -49,13 +49,11 @@
import com.metamatrix.query.sql.lang.JoinType;
import com.metamatrix.query.sql.lang.SetQuery.Operation;
import com.metamatrix.query.sql.symbol.AggregateSymbol;
-import com.metamatrix.query.sql.symbol.Constant;
import com.metamatrix.query.sql.symbol.ElementSymbol;
import com.metamatrix.query.sql.symbol.Expression;
import com.metamatrix.query.sql.symbol.GroupSymbol;
import com.metamatrix.query.sql.symbol.SingleElementSymbol;
import com.metamatrix.query.sql.util.SymbolMap;
-import com.metamatrix.query.sql.visitor.EvaluatableVisitor;
import com.metamatrix.query.util.CommandContext;
public final class RuleRaiseAccess implements OptimizerRule {
@@ -368,11 +366,9 @@
return false;
}
- if(inSelectClause && !(expr instanceof ElementSymbol)) {
- if (!CapabilitiesUtil.supportsSelectLiterals(modelID, metadata, capFinder)
- && (expr instanceof Constant || EvaluatableVisitor.willBecomeConstant(expr))) {
- return false;
- }
+ if(inSelectClause && !(expr instanceof ElementSymbol || expr instanceof AggregateSymbol)
+ && !CapabilitiesUtil.supportsSelectExpression(modelID, metadata, capFinder)) {
+ return false;
}
// By default, no reason we can't push
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/RuleRemoveOptionalJoins.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/RuleRemoveOptionalJoins.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/RuleRemoveOptionalJoins.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -244,6 +244,9 @@
*/
static boolean useNonDistinctRows(PlanNode parent) {
while (parent != null) {
+ if (parent.hasBooleanProperty(NodeConstants.Info.IS_DUP_REMOVAL)) {
+ return false;
+ }
switch (parent.getType()) {
case NodeConstants.Types.DUP_REMOVE: {
return false;
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/parser/ParseInfo.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/parser/ParseInfo.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/parser/ParseInfo.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -36,18 +36,18 @@
// This gets set according to the current clause
public boolean aggregatesAllowed = false;
- // treat a double quoted variable as variable insted of string
- public boolean allowDoubleQuotedVariable=false;
+ // treat a double quoted variable as variable instead of string
+ public boolean ansiQuotedIdentifiers=Boolean.valueOf(System.getProperty("teiid.ansi_quoted_identifiers", Boolean.TRUE.toString())).booleanValue(); //$NON-NLS-1$
public ParseInfo() { }
- public boolean allowDoubleQuotedVariable() {
- return allowDoubleQuotedVariable;
+ public boolean useAnsiQuotedIdentifiers() {
+ return ansiQuotedIdentifiers;
}
@Override
public int hashCode() {
- return allowDoubleQuotedVariable?1:0;
+ return ansiQuotedIdentifiers?1:0;
}
@Override
@@ -59,6 +59,6 @@
return false;
}
ParseInfo other = (ParseInfo)obj;
- return this.allowDoubleQuotedVariable == other.allowDoubleQuotedVariable;
+ return this.ansiQuotedIdentifiers == other.ansiQuotedIdentifiers;
}
}
\ No newline at end of file
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/parser/SQLParserUtil.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/parser/SQLParserUtil.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/parser/SQLParserUtil.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -23,6 +23,8 @@
package com.metamatrix.query.parser;
import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
import java.util.List;
import com.metamatrix.core.util.Assertion;
@@ -37,200 +39,92 @@
import com.metamatrix.query.sql.proc.CriteriaSelector;
public class SQLParserUtil {
-
- /**
- * Check that this is a valid group or element ID
- * @param id Group ID string
- */
- boolean isMetadataID(String id) throws ParseException {
- int length = id.length();
-
- if(id.indexOf("mmuuid:") >= 0) { //$NON-NLS-1$
- // Validate modeler form. Example: "mmuuid:345f22c0-3236-1dfa-9931-e83d04ce10a0"
-
- int dotIndex = id.indexOf("."); //$NON-NLS-1$
- if(dotIndex >= 0) {
- String groupPart = id.substring(0, dotIndex);
- String lastPart = id.substring(dotIndex+1);
- if(isModelerID(groupPart) || isMetadataPart(groupPart)) {
- return (lastPart.equals("*") || isModelerID(lastPart)); //$NON-NLS-1$
- }
- return false;
- }
- return isModelerID(id);
- }
-
- // Validate server forms:
- // group, vdb.group, "group", vdb."group",
- // group.*, vdb.group.*, "group".*, vdb."group".*,
- // group.element, vdb.group.element, "group".element, vdb."group".element
- // tag.tag.tag
- // tag.tag. at attribute
-
- // Check first character - must be letter or "
- char c = id.charAt(0);
- if( ! (c == '\"' || c == '#' || StringUtil.isLetter(c)) ) {
- return false;
- }
-
- // Check middle characters - letter, number, _, "
- if(length > 1) {
- for(int i=1; i<length; i++) {
- c = id.charAt(i);
- if( ! (c == '.' || c == '_' || c == '\"' || c == '/' || c == '@' || StringUtil.isLetterOrDigit(c)) ) {
- // Allow last character to be * as well
- if( i == (length-1) ) {
- if(c != '*') {
- return false;
- }
- } else {
- return false;
- }
- }
- }
- }
-
- return true;
- }
-
- /**
- * Check that this is a valid mmuuid
- * @param id Group ID string
- */
- boolean isModelerID(String id) throws ParseException {
- int length = id.length();
-
- if(id.startsWith("mmuuid:")) { //$NON-NLS-1$
- // Validate modeler form. Example: "mmuuid:345f22c0-3236-1dfa-9931-e83d04ce10a0"
- for(int i=7; i<length; i++) {
- char c = id.charAt(i);
- if( ! (c == '-' || (c >= 'a' && c <= 'f') || StringUtil.isDigit(c)) ) {
- return false;
- }
- }
- return true;
- }
- return false;
- }
-
- /**
- * Check that this is a valid function name
- * @param id Function name string
- */
- boolean isFunctionName(String id) throws ParseException {
- int length = id.length();
+
+ String normalizeStringLiteral(String s) {
+ int start = 1;
+ if (s.charAt(0) == 'N') {
+ start++;
+ }
+ char tickChar = s.charAt(start - 1);
+ s = s.substring(start, s.length() - 1);
+ return removeEscapeChars(s, String.valueOf(tickChar));
+ }
+
+ String normalizeId(String s) {
+ if (s.indexOf('"') == -1) {
+ return s;
+ }
+ List<String> nameParts = new LinkedList<String>();
+ while (s.length() > 0) {
+ if (s.charAt(0) == '"') {
+ boolean escape = false;
+ for (int i = 1; i < s.length(); i++) {
+ if (s.charAt(i) != '"') {
+ continue;
+ }
+ escape = !escape;
+ boolean end = i == s.length() - 1;
+ if (end || (escape && s.charAt(i + 1) == '.')) {
+ String part = s.substring(1, i);
+ s = s.substring(i + (end?1:2));
+ nameParts.add(removeEscapeChars(part, "\"")); //$NON-NLS-1$
+ break;
+ }
+ }
+ } else {
+ int index = s.indexOf('.');
+ if (index == -1) {
+ nameParts.add(s);
+ break;
+ }
+ nameParts.add(s.substring(0, index));
+ s = s.substring(index + 1);
+ }
+ }
+ StringBuilder sb = new StringBuilder();
+ for (Iterator<String> i = nameParts.iterator(); i.hasNext();) {
+ sb.append(i.next());
+ if (i.hasNext()) {
+ sb.append('.');
+ }
+ }
+ return sb.toString();
+ }
+
+ String validateFunctionName(String id) throws ParseException {
+ int length = id.length();
for(int i=0; i<length; i++) {
char c = id.charAt(i);
if(! (c == '_' || StringUtil.isLetterOrDigit(c))) {
- return false;
+ throw new ParseException(QueryPlugin.Util.getString("SQLParser.Invalid_func", id)); //$NON-NLS-1$
}
}
- return true;
- }
-
- String validateFunctionName(String id) throws ParseException {
- if(isFunctionName(id)) {
- return id;
- }
-
- Object[] params = new Object[] { id };
- throw new ParseException(QueryPlugin.Util.getString("SQLParser.Invalid_func", params)); //$NON-NLS-1$
+ return id;
}
/**
- * Check that this is a valid alias
- * @param alias Alias string
- */
- boolean isAlias(String alias) throws ParseException {
- if((alias.charAt(0) == '\"' && alias.charAt(alias.length()-1) == '\"')
- ||(alias.charAt(0) == '\'' && alias.charAt(alias.length()-1) == '\'')) {
- return isMetadataPart(alias.substring(1, alias.length()-1));
- }
- return isMetadataPart(alias);
- }
-
- /**
- * Check that this is a valid metadata part - starts with a letter and contains alpha, numeric, _
- * @param part Metadata part string
- */
- boolean isMetadataPart(String part) throws ParseException {
- int length = part.length();
-
- // Check first character - must be letter
- char c = part.charAt(0);
- if( ! StringUtil.isLetter(c) ) {
- return false;
- }
-
- // Check other characters - letter, number, _
- if(length > 1) {
- for(int i=1; i<length; i++) {
- c = part.charAt(i);
- if( ! (c == '_' || StringUtil.isLetterOrDigit(c)) ) {
- return false;
- }
- }
- }
-
- return true;
- }
-
- /**
* Check if this is a valid string literal
* @param id Possible string literal
*/
boolean isStringLiteral(String str, ParseInfo info) throws ParseException {
- // Check first last characters first - this is a requirement and should
- // fail quickly in most cases
- if(str.charAt(0) != '\"' || str.charAt(str.length()-1) != '\"') {
- return false;
- }
-
- // Check whether this is a string like "abcdefg" or a variable like "category.group"."element"
-
- // First, tokenize on periods (note that periods may be embedded in quoted parts)
- List tokens = StringUtil.split(str, "."); //$NON-NLS-1$
- if(tokens.size() < 2) {
- // No periods, so this must be a string literal
- return info.allowDoubleQuotedVariable()? false : true;
- }
- // Start at second token (i=1) and look at pairs of this and previous for
- // a pair that ends and begins in ". Also, have to make sure that " is not
- // part of an escaped quote: "abc"".""def" should be a string literal while
- // "abc"."def" should be a variable.
- for(int i=1; i<tokens.size(); i++) {
- String first = (String) tokens.get(i-1);
- String second = (String) tokens.get(i);
- if( second.charAt(0) == '\"' &&
- second.charAt(1) != '\"' &&
- first.charAt(first.length()-1) == '\"' &&
- first.charAt(first.length()-2) != '\"' ) {
-
- return false;
- }
- }
-
- // Didn't find any evidence that this is a dotted variable, so must be a string
- // unless we are allowing double quoted variable, like ODBC metadata tools use.
- return info.allowDoubleQuotedVariable()? false : true;
+ if (info.useAnsiQuotedIdentifiers() || str.charAt(0) != '"' || str.charAt(str.length() - 1) != '"') {
+ return false;
+ }
+ int index = 1;
+ while (index < str.length() - 1) {
+ index = str.indexOf('"', index);
+ if (index == -1 || index + 1 == str.length()) {
+ return true;
+ }
+ if (str.charAt(index + 1) != '"') {
+ return false;
+ }
+ index += 2;
+ }
+ return true;
}
/**
- * Check that this is a valid metadata ID, remove quotes, and return updated
- * ID string.
- * @param id Metadata ID string
- */
- String validateMetadataID(String id) throws ParseException {
- if(! isMetadataID(id)) {
- Object[] params = new Object[] { id };
- throw new ParseException(QueryPlugin.Util.getString("SQLParser.Invalid_id", params)); //$NON-NLS-1$
- }
- id = id.replace('/', '.');
- id = id.replaceAll("\"", ""); //$NON-NLS-1$ //$NON-NLS-2$
- return id;
- }
-
- /**
* Check that this is a valid alias, remove quotes, and return updated
* alias string.
* @param id Metadata alias
@@ -240,17 +134,14 @@
}
private String validateName(String id, boolean element) throws ParseException {
- if(! isAlias(id)) {
- Object[] params = new Object[] { id };
+ if(id.indexOf('.') != -1) {
String key = "SQLParser.Invalid_alias"; //$NON-NLS-1$
if (element) {
key = "SQLParser.Invalid_short_name"; //$NON-NLS-1$
}
- throw new ParseException(QueryPlugin.Util.getString(key, params));
+ throw new ParseException(QueryPlugin.Util.getString(key, id));
}
- // Remove Quotes and Single Tick
- id = removeCharacter(id, '"');
- return removeCharacter(id, '\'');
+ return id;
}
/**
@@ -261,49 +152,8 @@
return validateName(id, true);
}
- /**
- * Remove all quotes from the specified id string
- * @param id Input string
- * @param remove character to be removed from id
- * @return string from which remove character is removed,
- * if no instances of remove character is found original string returned
- */
- String removeCharacter(String id, char remove) {
- if(id.indexOf(remove) >= 0) {
- StringBuffer newStr = new StringBuffer();
- int length = id.length();
- for(int i=0; i<length; i++) {
- char c = id.charAt(i);
- if(c != remove) {
- newStr.append(c);
- }
- }
- return newStr.toString();
- }
- return id;
- }
-
- String removeEscapeChars(String str, char tickChar) {
- String doubleTick = "" + tickChar + tickChar; //$NON-NLS-1$
- int index = str.indexOf(doubleTick);
- if(index < 0) {
- return str;
- }
-
- int last = 0;
- StringBuffer temp = new StringBuffer();
- while(index >= 0) {
- temp.append(str.substring(last, index));
- temp.append(tickChar);
- last = index+2;
- index = str.indexOf(doubleTick, last);
- }
-
- if(last <= (str.length()-1)) {
- temp.append(str.substring(last));
- }
-
- return temp.toString();
+ String removeEscapeChars(String str, String tickChar) {
+ return StringUtil.replaceAll(str, tickChar + tickChar, tickChar);
}
void setFromClauseOptions(Token groupID, FromClause fromClause){
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/processor/QueryProcessor.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/processor/QueryProcessor.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/processor/QueryProcessor.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -40,7 +40,6 @@
import com.metamatrix.dqp.util.LogConstants;
import com.metamatrix.query.execution.QueryExecPlugin;
import com.metamatrix.query.util.CommandContext;
-import com.metamatrix.query.util.TypeRetrievalUtil;
/**
* TODO: combine overlapping responsibilities with RequestWorkItem
@@ -85,7 +84,7 @@
// Add data manager to all nodes in tree
this.processPlan.initialize(context, this.dataMgr, bufferMgr);
- this.resultsID = bufferMgr.createTupleSource(processPlan.getOutputElements(), TypeRetrievalUtil.getTypeNames(processPlan.getOutputElements()), context.getConnectionID(), TupleSourceType.PROCESSOR);
+ this.resultsID = bufferMgr.createTupleSource(processPlan.getOutputElements(), context.getConnectionID(), TupleSourceType.PROCESSOR);
}
public CommandContext getContext() {
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/processor/proc/ProcedurePlan.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/processor/proc/ProcedurePlan.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/processor/proc/ProcedurePlan.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -83,6 +83,7 @@
// State initialized by processor
private ProcessorDataManager dataMgr;
+ private ProcessorDataManager parentDataMrg;
private BufferManager bufferMgr;
private int batchSize;
@@ -137,9 +138,9 @@
public void initialize(CommandContext context, ProcessorDataManager dataMgr, BufferManager bufferMgr) {
this.bufferMgr = bufferMgr;
this.batchSize = bufferMgr.getProcessorBatchSize();
- tempTableStore = new TempTableStoreImpl(bufferMgr, context.getConnectionID(), (TempTableStore)context.getTempTableStore());
- this.dataMgr = new TempTableDataManager(dataMgr, tempTableStore);
setContext(context);
+ this.dataMgr = dataMgr;
+ this.parentDataMrg = dataMgr;
if (evaluator == null) {
this.evaluator = new SubqueryAwareEvaluator(Collections.emptyMap(), getDataManager(), getContext(), this.bufferMgr);
}
@@ -199,6 +200,8 @@
context.setValue(entry.getKey(), value);
}
}
+ tempTableStore = new TempTableStoreImpl(bufferMgr, getContext().getConnectionID(), null);
+ this.dataMgr = new TempTableDataManager(dataMgr, tempTableStore);
}
this.evaluatedParams = true;
}
@@ -316,6 +319,8 @@
if (this.evaluator != null) {
this.evaluator.close();
}
+ this.tempTableStore = null;
+ this.dataMgr = parentDataMrg;
}
public String toString() {
@@ -632,14 +637,14 @@
}
boolean evaluateCriteria(Criteria condition) throws BlockedException, MetaMatrixProcessingException, MetaMatrixComponentException {
- evaluator.setContext(getContext());
+ evaluator.initialize(getContext(), getDataManager());
boolean result = evaluator.evaluate(condition, Collections.emptyList());
this.evaluator.close();
return result;
}
Object evaluateExpression(Expression expression) throws BlockedException, MetaMatrixProcessingException, MetaMatrixComponentException {
- evaluator.setContext(getContext());
+ evaluator.initialize(getContext(), getDataManager());
Object result = evaluator.evaluate(expression, Collections.emptyList());
this.evaluator.close();
return result;
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/processor/relational/BatchCollector.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/processor/relational/BatchCollector.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/processor/relational/BatchCollector.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -31,7 +31,6 @@
import com.metamatrix.common.buffer.TupleSourceNotFoundException;
import com.metamatrix.common.buffer.BufferManager.TupleSourceStatus;
import com.metamatrix.common.buffer.BufferManager.TupleSourceType;
-import com.metamatrix.query.util.TypeRetrievalUtil;
public class BatchCollector {
@@ -45,7 +44,7 @@
public BatchCollector(RelationalNode sourceNode) throws MetaMatrixComponentException {
this.sourceNode = sourceNode;
List sourceElements = sourceNode.getElements();
- tsID = sourceNode.getBufferManager().createTupleSource(sourceElements, TypeRetrievalUtil.getTypeNames(sourceElements), sourceNode.getConnectionID(), TupleSourceType.PROCESSOR);
+ tsID = sourceNode.getBufferManager().createTupleSource(sourceElements, sourceNode.getConnectionID(), TupleSourceType.PROCESSOR);
}
public TupleSourceID collectTuples() throws MetaMatrixComponentException, MetaMatrixProcessingException {
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/processor/relational/DependentAccessNode.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/processor/relational/DependentAccessNode.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/processor/relational/DependentAccessNode.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -114,10 +114,6 @@
Query query = (Query)atomicCommand;
- if (query.getCriteria() == null || maxSetSize < 1) {
- return super.prepareNextCommand(atomicCommand);
- }
-
if (this.criteriaProcessor == null) {
this.criteriaProcessor = new DependentCriteriaProcessor(this.maxSetSize, this, query.getCriteria());
}
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/processor/relational/DuplicateFilter.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/processor/relational/DuplicateFilter.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/processor/relational/DuplicateFilter.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -37,7 +37,6 @@
import com.metamatrix.query.function.aggregate.AggregateFunction;
import com.metamatrix.query.sql.lang.OrderBy;
import com.metamatrix.query.sql.symbol.ElementSymbol;
-import com.metamatrix.query.util.TypeRetrievalUtil;
/**
*/
@@ -50,7 +49,6 @@
// Derived and static - can be reused
private List elements;
- private String[] elementTypes;
private List sortTypes;
// Temporary state - should be reset
@@ -84,7 +82,6 @@
element.setType(inputType);
elements = new ArrayList();
elements.add(element);
- elementTypes = TypeRetrievalUtil.getTypeNames(elements);
sortTypes = new ArrayList();
sortTypes.add(Boolean.valueOf(OrderBy.ASC));
@@ -107,7 +104,7 @@
try {
if(collectionID == null) {
- collectionID = mgr.createTupleSource(elements, elementTypes, groupName, TupleSourceType.PROCESSOR);
+ collectionID = mgr.createTupleSource(elements, groupName, TupleSourceType.PROCESSOR);
this.tupleCollector = new TupleCollector(collectionID, mgr);
}
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/processor/relational/GroupingNode.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/processor/relational/GroupingNode.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/processor/relational/GroupingNode.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -53,7 +53,6 @@
import com.metamatrix.query.sql.symbol.AggregateSymbol;
import com.metamatrix.query.sql.symbol.Expression;
import com.metamatrix.query.sql.symbol.SingleElementSymbol;
-import com.metamatrix.query.util.TypeRetrievalUtil;
public class GroupingNode extends RelationalNode {
@@ -148,7 +147,7 @@
// Determine expressions to build (all grouping expressions + expressions used by aggregates)
collectExpressions();
- this.collectionID = getBufferManager().createTupleSource(collectedExpressions, TypeRetrievalUtil.getTypeNames(collectedExpressions), getConnectionID(), TupleSourceType.PROCESSOR);
+ this.collectionID = getBufferManager().createTupleSource(collectedExpressions, getConnectionID(), TupleSourceType.PROCESSOR);
initializeFunctionAccumulators();
}
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/processor/relational/SortUtility.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/processor/relational/SortUtility.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/processor/relational/SortUtility.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -42,7 +42,6 @@
import com.metamatrix.core.util.Assertion;
import com.metamatrix.query.sql.lang.OrderBy;
import com.metamatrix.query.sql.symbol.SingleElementSymbol;
-import com.metamatrix.query.util.TypeRetrievalUtil;
/**
*/
@@ -66,7 +65,6 @@
//init state
private int batchSize;
protected List schema;
- private String[] schemaTypes;
protected int[] sortCols;
private ListNestedSortComparator comparator;
@@ -153,7 +151,7 @@
}
private TupleSourceID createTupleSource() throws MetaMatrixComponentException {
- return bufferManager.createTupleSource(this.schema, this.schemaTypes, this.groupName, TupleSourceType.PROCESSOR);
+ return bufferManager.createTupleSource(this.schema, this.groupName, TupleSourceType.PROCESSOR);
}
protected void initialSort() throws BlockedOnMemoryException, TupleSourceNotFoundException, MetaMatrixComponentException {
@@ -405,7 +403,6 @@
private void initialize() throws TupleSourceNotFoundException, MetaMatrixComponentException {
this.schema = this.bufferManager.getTupleSchema(this.sourceID);
- this.schemaTypes = TypeRetrievalUtil.getTypeNames(schema);
this.batchSize = bufferManager.getProcessorBatchSize();
int distinctIndex = sortElements != null? sortElements.size() - 1:0;
if (useAllColumns && mode != Mode.SORT) {
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/processor/relational/SourceState.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/processor/relational/SourceState.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/processor/relational/SourceState.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -31,7 +31,6 @@
import com.metamatrix.common.buffer.TupleSourceID;
import com.metamatrix.common.buffer.TupleSourceNotFoundException;
import com.metamatrix.common.buffer.BufferManager.TupleSourceType;
-import com.metamatrix.query.util.TypeRetrievalUtil;
class SourceState {
@@ -66,7 +65,7 @@
}
TupleSourceID createSourceTupleSource() throws MetaMatrixComponentException {
- return this.source.getBufferManager().createTupleSource(source.getElements(), TypeRetrievalUtil.getTypeNames(source.getElements()), source.getConnectionID(), TupleSourceType.PROCESSOR);
+ return this.source.getBufferManager().createTupleSource(source.getElements(), source.getConnectionID(), TupleSourceType.PROCESSOR);
}
public List saveNext() throws MetaMatrixComponentException, MetaMatrixProcessingException {
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/processor/relational/SubqueryAwareRelationalNode.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/processor/relational/SubqueryAwareRelationalNode.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/processor/relational/SubqueryAwareRelationalNode.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -17,7 +17,7 @@
if (this.evaluator == null) {
this.evaluator = new SubqueryAwareEvaluator(elementMap, getDataManager(), getContext(), getBufferManager());
} else {
- this.evaluator.setContext(getContext());
+ this.evaluator.initialize(getContext(), getDataManager());
}
return this.evaluator;
}
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/processor/xml/XMLUtil.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/processor/xml/XMLUtil.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/processor/xml/XMLUtil.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -102,7 +102,7 @@
* Creates a buffer manager's id for XML based data.
*/
public static TupleSourceID createXMLTupleSource(BufferManager bufferMgr, String tupleGroupName) throws MetaMatrixComponentException {
- TupleSourceID sourceID = bufferMgr.createTupleSource(getOutputElements(), new String[]{DataTypeManager.DefaultDataTypes.XML}, tupleGroupName, TupleSourceType.PROCESSOR);
+ TupleSourceID sourceID = bufferMgr.createTupleSource(getOutputElements(), tupleGroupName, TupleSourceType.PROCESSOR);
return sourceID;
}
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/resolver/command/ExecResolver.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/resolver/command/ExecResolver.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/resolver/command/ExecResolver.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -23,6 +23,7 @@
package com.metamatrix.query.resolver.command;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -44,6 +45,7 @@
import com.metamatrix.query.metadata.TempMetadataStore;
import com.metamatrix.query.parser.QueryParser;
import com.metamatrix.query.resolver.ProcedureContainerResolver;
+import com.metamatrix.query.resolver.QueryResolver;
import com.metamatrix.query.resolver.VariableResolver;
import com.metamatrix.query.resolver.util.ResolverUtil;
import com.metamatrix.query.resolver.util.ResolverVisitor;
@@ -52,10 +54,12 @@
import com.metamatrix.query.sql.lang.ProcedureContainer;
import com.metamatrix.query.sql.lang.SPParameter;
import com.metamatrix.query.sql.lang.StoredProcedure;
+import com.metamatrix.query.sql.lang.SubqueryContainer;
import com.metamatrix.query.sql.proc.CreateUpdateProcedureCommand;
import com.metamatrix.query.sql.symbol.ElementSymbol;
import com.metamatrix.query.sql.symbol.Expression;
import com.metamatrix.query.sql.symbol.GroupSymbol;
+import com.metamatrix.query.sql.visitor.ValueIteratorProviderCollectorVisitor;
import com.metamatrix.query.util.ErrorMessageKeys;
/**
@@ -284,6 +288,11 @@
SPParameter param = (SPParameter) paramIter.next();
Expression expr = param.getExpression();
if(expr != null) {
+ for (SubqueryContainer container : ValueIteratorProviderCollectorVisitor.getValueIteratorProviders(expr)) {
+ QueryResolver.setChildMetadata(container.getCommand(), command);
+
+ QueryResolver.resolveCommand(container.getCommand(), Collections.EMPTY_MAP, useMetadataCommands, metadata.getMetadata(), analysis);
+ }
ResolverVisitor.resolveLanguageObject(expr, null, externalGroups, metadata);
Class paramType = param.getClassType();
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/resolver/command/SetQueryResolver.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/resolver/command/SetQueryResolver.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/resolver/command/SetQueryResolver.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -35,12 +35,15 @@
import com.metamatrix.query.QueryPlugin;
import com.metamatrix.query.analysis.AnalysisRecord;
import com.metamatrix.query.metadata.TempMetadataAdapter;
+import com.metamatrix.query.metadata.TempMetadataID;
import com.metamatrix.query.resolver.CommandResolver;
import com.metamatrix.query.resolver.QueryResolver;
import com.metamatrix.query.resolver.util.ResolverUtil;
import com.metamatrix.query.sql.lang.Command;
+import com.metamatrix.query.sql.lang.OrderBy;
import com.metamatrix.query.sql.lang.QueryCommand;
import com.metamatrix.query.sql.lang.SetQuery;
+import com.metamatrix.query.sql.symbol.ElementSymbol;
import com.metamatrix.query.sql.symbol.SingleElementSymbol;
import com.metamatrix.query.util.ErrorMessageKeys;
@@ -90,9 +93,8 @@
// ORDER BY clause
if(setQuery.getOrderBy() != null) {
- List validGroups = Collections.EMPTY_LIST;
//order by elements must use the short name of the projected symbols
- ResolverUtil.resolveOrderBy(setQuery.getOrderBy(), validGroups, setQuery.getProjectedSymbols(), metadata, false);
+ ResolverUtil.resolveOrderBy(setQuery.getOrderBy(), setQuery, metadata);
}
setProjectedTypes(setQuery, firstProjectTypes);
@@ -116,7 +118,7 @@
for (int j = 0; j < projectedSymbols.size(); j++) {
SingleElementSymbol ses = (SingleElementSymbol)projectedSymbols.get(j);
Class targetType = (Class)firstProjectTypes.get(j);
- if (ses.getType() != targetType && ResolverUtil.orderByContainsVariable(child.getOrderBy(), ses, j)) {
+ if (ses.getType() != targetType && orderByContainsVariable(child.getOrderBy(), ses, j)) {
String sourceTypeName = DataTypeManager.getDataTypeName(ses.getType());
String targetTypeName = DataTypeManager.getDataTypeName(targetType);
throw new QueryResolverException(QueryPlugin.Util.getString("UnionQueryResolver.type_conversion", //$NON-NLS-1$
@@ -129,6 +131,21 @@
}
}
+ /**
+ * Checks if a variable is in the ORDER BY
+ * @param position 0-based index of the variable
+ * @return True if the ORDER BY contains the element
+ */
+ public static boolean orderByContainsVariable(OrderBy orderBy, SingleElementSymbol ses, int position) {
+ for (final Iterator iterator = orderBy.getVariables().iterator(); iterator.hasNext();) {
+ final ElementSymbol element = (ElementSymbol)iterator.next();
+ if (position == ((TempMetadataID)element.getMetadataID()).getPosition()) {
+ return true;
+ }
+ }
+ return false;
+ }
+
static void checkSymbolTypes(List firstProjectTypes, List projSymbols) {
for(int j=0; j<projSymbols.size(); j++){
Class firstProjType = (Class)firstProjectTypes.get(j);
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/resolver/command/SimpleQueryResolver.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/resolver/command/SimpleQueryResolver.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/resolver/command/SimpleQueryResolver.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -612,7 +612,7 @@
public void visit(OrderBy obj) {
try {
- ResolverUtil.resolveOrderBy(obj, new ArrayList(currentGroups), query.getSelect().getProjectedSymbols(), metadata, query.getGroupBy() == null && !query.getSelect().isDistinct());
+ ResolverUtil.resolveOrderBy(obj, query, metadata);
} catch(QueryResolverException e) {
throw new MetaMatrixRuntimeException(e);
} catch(MetaMatrixComponentException e) {
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/resolver/command/XMLQueryResolver.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/resolver/command/XMLQueryResolver.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/resolver/command/XMLQueryResolver.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -31,7 +31,6 @@
import com.metamatrix.api.exception.MetaMatrixComponentException;
import com.metamatrix.api.exception.query.QueryMetadataException;
import com.metamatrix.api.exception.query.QueryResolverException;
-import com.metamatrix.common.types.DataTypeManager;
import com.metamatrix.core.util.StringUtil;
import com.metamatrix.query.QueryPlugin;
import com.metamatrix.query.analysis.AnalysisRecord;
@@ -396,32 +395,9 @@
}
}
-
static List getElementsInDocument(GroupSymbol group, QueryMetadataInterface metadata)
throws QueryMetadataException, QueryResolverException, MetaMatrixComponentException {
-
- // get all elements from the metadata
- List elementIDs = metadata.getElementIDsInGroupID(group.getMetadataID());
-
- if (elementIDs == null){
- throw new QueryResolverException(ErrorMessageKeys.RESOLVER_0021, QueryPlugin.Util.getString(ErrorMessageKeys.RESOLVER_0021, group));
- }
-
- // ok for each ELEMENT...
- List elements = new ArrayList(elementIDs.size());
- Iterator elementIter = elementIDs.iterator();
- while(elementIter.hasNext()){
- Object elementID = elementIter.next();
- String fullName = metadata.getFullName(elementID);
-
- // Form an element symbol from the ID
- ElementSymbol element = new ElementSymbol(fullName);
- element.setGroupSymbol(group);
- element.setMetadataID(elementID);
- element.setType( DataTypeManager.getDataTypeClass(metadata.getElementType(element.getMetadataID())) );
- elements.add(element);
- }
- return elements;
+ return ResolverUtil.resolveElementsInGroup(group, metadata);
}
static List getElementsUnderNode(ElementSymbol node, List validElements, QueryMetadataInterface metadata)
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/resolver/util/ResolverUtil.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/resolver/util/ResolverUtil.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/resolver/util/ResolverUtil.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -25,6 +25,7 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
@@ -39,7 +40,6 @@
import com.metamatrix.common.types.DataTypeManager;
import com.metamatrix.common.types.TransformationException;
import com.metamatrix.common.types.DataTypeManager.DefaultDataTypes;
-import com.metamatrix.core.util.StringUtil;
import com.metamatrix.query.QueryPlugin;
import com.metamatrix.query.function.FunctionDescriptor;
import com.metamatrix.query.function.FunctionLibrary;
@@ -54,6 +54,9 @@
import com.metamatrix.query.sql.LanguageObject;
import com.metamatrix.query.sql.lang.Limit;
import com.metamatrix.query.sql.lang.OrderBy;
+import com.metamatrix.query.sql.lang.Query;
+import com.metamatrix.query.sql.lang.QueryCommand;
+import com.metamatrix.query.sql.lang.SetQuery;
import com.metamatrix.query.sql.lang.SubqueryContainer;
import com.metamatrix.query.sql.symbol.AbstractCaseExpression;
import com.metamatrix.query.sql.symbol.AggregateSymbol;
@@ -68,6 +71,8 @@
import com.metamatrix.query.sql.symbol.ScalarSubquery;
import com.metamatrix.query.sql.symbol.SelectSymbol;
import com.metamatrix.query.sql.symbol.SingleElementSymbol;
+import com.metamatrix.query.sql.util.SymbolMap;
+import com.metamatrix.query.sql.visitor.ElementCollectorVisitor;
import com.metamatrix.query.util.ErrorMessageKeys;
/**
@@ -205,7 +210,7 @@
if(canImplicitlyConvert(sourceTypeName, targetTypeName)
|| (sourceExpression instanceof Constant && convertConstant(sourceTypeName, targetTypeName, (Constant)sourceExpression) != null)) {
- return getConversion(sourceExpression, sourceTypeName, targetTypeName);
+ return getConversion(sourceExpression, sourceTypeName, targetTypeName, true);
}
//Expression is wrong type and can't convert
@@ -250,9 +255,10 @@
return null;
}
- private static Expression getConversion(Expression sourceExpression,
+ public static Function getConversion(Expression sourceExpression,
String sourceTypeName,
- String targetTypeName) {
+ String targetTypeName,
+ boolean implicit) {
Class<?> srcType = DataTypeManager.getDataTypeClass(sourceTypeName);
FunctionLibrary library = FunctionLibraryManager.getFunctionLibrary();
@@ -261,7 +267,9 @@
Function conversion = new Function(fd.getName(), new Expression[] { sourceExpression, new Constant(targetTypeName) });
conversion.setType(DataTypeManager.getDataTypeClass(targetTypeName));
conversion.setFunctionDescriptor(fd);
- conversion.makeImplicit();
+ if (implicit) {
+ conversion.makeImplicit();
+ }
return conversion;
}
@@ -289,164 +297,159 @@
}
}
- /**
- * Attempt to resolve the order by
- * throws QueryResolverException if the symbol is not of SingleElementSymbol type
- * @param orderBy
- * @param fromClauseGroups groups of the FROM clause of the query (for
- * resolving ambiguous unqualified element names), or empty List if a Set Query
- * Order By is being resolved
- * @param knownElements resolved elements from SELECT clause, which are only
- * ones allowed to be in ORDER BY
- * @param metadata QueryMetadataInterface
- * @param isSimpleQuery
- */
- public static void resolveOrderBy(OrderBy orderBy, List fromClauseGroups, List knownElements, QueryMetadataInterface metadata, boolean isSimpleQuery)
+ /**
+ * Attempt to resolve the order by throws QueryResolverException if the
+ * symbol is not of SingleElementSymbol type
+ *
+ * @param orderBy
+ * @param fromClauseGroups
+ * groups of the FROM clause of the query (for resolving
+ * ambiguous unqualified element names), or empty List if a Set
+ * Query Order By is being resolved
+ * @param knownElements
+ * resolved elements from SELECT clause, which are only ones
+ * allowed to be in ORDER BY
+ * @param metadata
+ * QueryMetadataInterface
+ * @param isSimpleQuery
+ */
+ public static void resolveOrderBy(OrderBy orderBy, QueryCommand command, QueryMetadataInterface metadata)
throws QueryResolverException, QueryMetadataException, MetaMatrixComponentException {
- orderBy.setInPlanForm(false);
+ List<SingleElementSymbol> knownElements = command.getProjectedQuery().getSelect().getProjectedSymbols();
+
+ boolean isSimpleQuery = false;
+ List fromClauseGroups = Collections.emptyList();
+ if (command instanceof Query) {
+ Query query = (Query)command;
+ isSimpleQuery = !query.getSelect().isDistinct() && query.getGroupBy() == null;
+ if (query.getFrom() != null) {
+ fromClauseGroups = query.getFrom().getGroups();
+ }
+ }
+
// Cached state, if needed
String[] knownShortNames = new String[knownElements.size()];
+ List<Expression> expressions = new ArrayList<Expression>(knownElements.size());
for(int i=0; i<knownElements.size(); i++) {
- SingleElementSymbol knownSymbol = (SingleElementSymbol) knownElements.get(i);
+ SingleElementSymbol knownSymbol = knownElements.get(i);
+ expressions.add(SymbolMap.getExpression(knownSymbol));
if (knownSymbol instanceof ExpressionSymbol) {
continue;
}
String name = knownSymbol.getShortName();
- //special check for uuid element symbols
- if (knownSymbol instanceof ElementSymbol && knownSymbol.getShortName().equalsIgnoreCase(knownSymbol.getName())) {
- name = metadata.getShortElementName(metadata.getFullName((((ElementSymbol)knownSymbol).getMetadataID())));
- }
knownShortNames[i] = name;
}
- // Collect all elements from order by
- List elements = orderBy.getVariables();
- Iterator elementIter = elements.iterator();
-
- // Walk through elements of order by
- while(elementIter.hasNext()){
- ElementSymbol symbol = (ElementSymbol) elementIter.next();
- SingleElementSymbol matchedSymbol = null;
- String symbolName = symbol.getName();
- String groupPart = metadata.getGroupName(symbolName);
- String shortName = symbol.getShortName();
-
- //check for union order by (allow uuids to skip this check)
- if (fromClauseGroups.isEmpty() && groupPart != null && !shortName.equals(symbolName)) {
- throw new QueryResolverException(ErrorMessageKeys.RESOLVER_0043, QueryPlugin.Util.getString(ErrorMessageKeys.RESOLVER_0043, symbolName));
- }
-
- // walk the SELECT col short names, looking for a match on the current ORDER BY 'short name'
- for(int i=0; i<knownShortNames.length; i++) {
- if( shortName.equalsIgnoreCase( knownShortNames[i] )) {
- if (groupPart != null) {
- Object knownSymbol = knownElements.get(i);
- if(knownSymbol instanceof ElementSymbol) {
- ElementSymbol knownElement = (ElementSymbol) knownSymbol;
- GroupSymbol group = knownElement.getGroupSymbol();
-
- // skip this one if the two short names are not from the same group
- if (!nameMatchesGroup(groupPart.toUpperCase(), group.getCanonicalName())) {
- continue;
- }
- }
- }
-
- // if we already have a matched symbol, matching again here means it is duplicate/ambiguous
- if(matchedSymbol != null) {
- throw new QueryResolverException(ErrorMessageKeys.RESOLVER_0042, QueryPlugin.Util.getString(ErrorMessageKeys.RESOLVER_0042, symbolName));
- }
- matchedSymbol = (SingleElementSymbol)knownElements.get(i);
+ for (int i = 0; i < orderBy.getVariableCount(); i++) {
+ SingleElementSymbol sortKey = orderBy.getVariable(i);
+ if (sortKey instanceof ElementSymbol) {
+ int index = resolveSortKey(orderBy, fromClauseGroups, knownElements, metadata,
+ isSimpleQuery, knownShortNames, (ElementSymbol)sortKey);
+ if (index == -1) {
+ index = expressions.indexOf(SymbolMap.getExpression(sortKey));
}
- }
-
- // this clause handles the order by clause like
- // select foo from bar order by "1"; where 1 is foo.
- if (matchedSymbol == null && StringUtil.isDigits(symbolName)) {
- int elementOrder = Integer.valueOf(symbolName).intValue() - 1;
- // adjust for the 1 based index.
- if (elementOrder < knownElements.size() && elementOrder >= 0) {
- matchedSymbol = (SingleElementSymbol)knownElements.get(elementOrder);
-
- for(int i=0; i<knownShortNames.length; i++) {
- if (i == elementOrder) {
- continue;
- }
- if (matchedSymbol.getShortCanonicalName().equalsIgnoreCase(knownShortNames[i])) {
- throw new QueryResolverException(ErrorMessageKeys.RESOLVER_0042, QueryPlugin.Util.getString(ErrorMessageKeys.RESOLVER_0042, knownShortNames[i]));
- }
- }
+ orderBy.setExpressionPosition(i, index);
+ if (index == -1) {
+ orderBy.addUnrelated((ElementSymbol)sortKey);
}
- }
-
- if(matchedSymbol == null) {
- // Didn't find it by full name or short name, so try resolving
- // and retrying by full name - this will work for uuid case
- try {
- ResolverVisitor.resolveLanguageObject(symbol, fromClauseGroups, metadata);
- } catch(QueryResolverException e) {
- throw new QueryResolverException(e, ErrorMessageKeys.RESOLVER_0043, QueryPlugin.Util.getString(ErrorMessageKeys.RESOLVER_0043, symbol.getName()) );
- }
-
- matchedSymbol = findMatchingElementByID(symbol, knownElements);
- }
-
- if (matchedSymbol == null) {
- if (!isSimpleQuery) {
- throw new QueryResolverException(ErrorMessageKeys.RESOLVER_0043, QueryPlugin.Util.getString(ErrorMessageKeys.RESOLVER_0043, symbol.getName()));
- }
- orderBy.setUnrelated(true);
- } else {
- TempMetadataID tempMetadataID = new TempMetadataID(symbol.getName(), matchedSymbol.getType());
- tempMetadataID.setPosition(knownElements.indexOf(matchedSymbol));
- symbol.setMetadataID(tempMetadataID);
- symbol.setType(matchedSymbol.getType());
- }
+ continue;
+ } else if (sortKey instanceof ExpressionSymbol) {
+ // check for legacy positional
+ ExpressionSymbol es = (ExpressionSymbol)sortKey;
+ if (es.getExpression() instanceof Constant) {
+ Constant c = (Constant)es.getExpression();
+ int elementOrder = Integer.valueOf(c.getValue().toString()).intValue();
+ // adjust for the 1 based index.
+ if (elementOrder > knownElements.size() || elementOrder < 1) {
+ throw new QueryResolverException(QueryPlugin.Util.getString("SQLParser.non_position_constant", c)); //$NON-NLS-1$
+ }
+ orderBy.setExpressionPosition(i, elementOrder - 1);
+ }
+ }
+ //handle order by expressions
+ if (command instanceof SetQuery) {
+ throw new QueryResolverException(QueryPlugin.Util.getString("ResolverUtil.setquery_order_expression", sortKey)); //$NON-NLS-1$
+ }
+ for (ElementSymbol symbol : ElementCollectorVisitor.getElements(sortKey, false)) {
+ resolveSortKey(orderBy, fromClauseGroups, knownElements, metadata,
+ isSimpleQuery, knownShortNames, symbol);
+ }
+ ResolverVisitor.resolveLanguageObject(sortKey, metadata);
+ int index = expressions.indexOf(SymbolMap.getExpression(sortKey));
+
+ if (index != -1) {
+ //the query is using an derived column, but not through an alias
+ orderBy.setExpressionPosition(i, index);
+ }
+ //must be an unrelated sort expression
}
}
+
+ private static int resolveSortKey(OrderBy orderBy, List fromClauseGroups,
+ List knownElements, QueryMetadataInterface metadata,
+ boolean isSimpleQuery, String[] knownShortNames,
+ ElementSymbol symbol) throws MetaMatrixComponentException,
+ QueryMetadataException, QueryResolverException {
+ SingleElementSymbol matchedSymbol = null;
+ String symbolName = symbol.getName();
+ String groupPart = metadata.getGroupName(symbolName);
+ String shortName = symbol.getShortName();
+
+ //check for union order by
+ if (fromClauseGroups.isEmpty() && groupPart != null && !shortName.equals(symbolName)) {
+ throw new QueryResolverException(ErrorMessageKeys.RESOLVER_0043, QueryPlugin.Util.getString(ErrorMessageKeys.RESOLVER_0043, symbolName));
+ }
- /**
- * Helper for resolveOrderBy to find a matching fully-qualified element in a list of
- * projected SELECT symbols.
- * @throws QueryResolverException
- */
- private static SingleElementSymbol findMatchingElementByID(ElementSymbol symbol, List knownElements) throws QueryResolverException {
- Object elementID = symbol.getMetadataID();
-
- if(elementID == null) {
- throw new QueryResolverException(ErrorMessageKeys.RESOLVER_0043, QueryPlugin.Util.getString(ErrorMessageKeys.RESOLVER_0043, symbol.getName()));
- }
-
- Object groupID = symbol.getGroupSymbol().getMetadataID();
+ // walk the SELECT col short names, looking for a match on the current ORDER BY 'short name'
+ for(int i=0; i<knownShortNames.length; i++) {
+ if( shortName.equalsIgnoreCase( knownShortNames[i] )) {
+ if (groupPart != null) {
+ Object knownSymbol = knownElements.get(i);
+ if(knownSymbol instanceof ElementSymbol) {
+ ElementSymbol knownElement = (ElementSymbol) knownSymbol;
+ GroupSymbol group = knownElement.getGroupSymbol();
+
+ // skip this one if the two short names are not from the same group
+ if (!nameMatchesGroup(groupPart.toUpperCase(), group.getCanonicalName())) {
+ continue;
+ }
+ }
+ }
+
+ // if we already have a matched symbol, matching again here means it is duplicate/ambiguous
+ if(matchedSymbol != null) {
+ throw new QueryResolverException(ErrorMessageKeys.RESOLVER_0042, QueryPlugin.Util.getString(ErrorMessageKeys.RESOLVER_0042, symbolName));
+ }
+ matchedSymbol = (SingleElementSymbol)knownElements.get(i);
+ }
+ }
+
+ if (matchedSymbol != null) {
+ TempMetadataID tempMetadataID = new TempMetadataID(symbol.getName(), matchedSymbol.getType());
+ int position = knownElements.indexOf(matchedSymbol);
+ tempMetadataID.setPosition(position);
+ symbol.setMetadataID(tempMetadataID);
+ symbol.setType(matchedSymbol.getType());
+ return position;
+ }
+ if (!isSimpleQuery) {
+ throw new QueryResolverException(QueryPlugin.Util.getString("ResolverUtil.invalid_unrelated", symbol.getName())); //$NON-NLS-1$
+ }
+ // Didn't find it by full name or short name, so try resolving
+ try {
+ ResolverVisitor.resolveLanguageObject(symbol, fromClauseGroups, metadata);
+ } catch(QueryResolverException e) {
+ throw new QueryResolverException(e, ErrorMessageKeys.RESOLVER_0043, QueryPlugin.Util.getString(ErrorMessageKeys.RESOLVER_0043, symbol.getName()) );
+ }
+ return -1;
+ }
- for(int i=0; i<knownElements.size(); i++) {
- SingleElementSymbol selectSymbol = (SingleElementSymbol)knownElements.get(i);
- SingleElementSymbol knownSymbol = null;
- if(selectSymbol instanceof AliasSymbol) {
- knownSymbol = ((AliasSymbol)selectSymbol).getSymbol();
- }
- if(knownSymbol instanceof ElementSymbol) {
- ElementSymbol knownElement = (ElementSymbol) knownSymbol;
- Object knownElementID = knownElement.getMetadataID();
-
- if(elementID.equals(knownElementID)) {
- Object knownGroupID = knownElement.getGroupSymbol().getMetadataID();
- if(groupID.equals(knownGroupID)) {
- return selectSymbol;
- }
- }
- }
- }
-
- return null;
- }
-
/**
* Get the default value for the parameter, which could be null
* if the parameter is set to NULLABLE. If no default is available,
@@ -773,25 +776,6 @@
}
return false;
}
-
- /**
- * Checks if a variable is in the ORDER BY
- * @param position 0-based index of the variable
- * @return True if the ORDER BY contains the element
- */
- public static boolean orderByContainsVariable(OrderBy orderBy, SingleElementSymbol ses, int position) {
- if (!orderBy.isInPlanForm()) {
- for (final Iterator iterator = orderBy.getVariables().iterator(); iterator.hasNext();) {
- final ElementSymbol element = (ElementSymbol)iterator.next();
- if (position == ((TempMetadataID)element.getMetadataID()).getPosition()) {
- return true;
- }
- }
- } else {
- return orderBy.getVariables().contains(ses);
- }
- return false;
- }
/**
* Check the type of the (left) expression and the type of the single
@@ -909,16 +893,18 @@
int vdbIndex = potentialID.indexOf(ElementSymbol.SEPARATOR);
if(vdbIndex >= 0) {
String potentialVdbName = potentialID.substring(0, vdbIndex);
- newPotentialID = potentialID.substring(vdbIndex+1);
-
- try {
- groupID = metadata.getGroupID(newPotentialID);
- vdbName = potentialVdbName;
- } catch(QueryMetadataException e) {
- // ignore - just didn't find it
- }
- if(groupID != null) {
- potentialID = newPotentialID;
+ if (potentialVdbName.equalsIgnoreCase(metadata.getVirtualDatabaseName())) {
+ newPotentialID = potentialID.substring(vdbIndex+1);
+
+ try {
+ groupID = metadata.getGroupID(newPotentialID);
+ vdbName = potentialVdbName;
+ } catch(QueryMetadataException e) {
+ // ignore - just didn't find it
+ }
+ if(groupID != null) {
+ potentialID = newPotentialID;
+ }
}
}
}
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/resolver/util/ResolverVisitor.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/resolver/util/ResolverVisitor.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/resolver/util/ResolverVisitor.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -39,7 +39,6 @@
import com.metamatrix.api.exception.query.UnresolvedSymbolDescription;
import com.metamatrix.common.types.DataTypeManager;
import com.metamatrix.common.types.DataTypeManager.DefaultDataClasses;
-import com.metamatrix.core.util.Assertion;
import com.metamatrix.internal.core.xml.XPathHelper;
import com.metamatrix.query.QueryPlugin;
import com.metamatrix.query.function.FunctionDescriptor;
@@ -136,12 +135,8 @@
// look up group and element parts of the potentialID
String groupContext = metadata.getGroupName(potentialID);
String elementShortName = metadata.getShortElementName(potentialID);
- boolean isUUID = false;
if (groupContext != null) {
groupContext = groupContext.toUpperCase();
- if (metadata.getGroupName(elementShortName) != null) {
- isUUID = true;
- }
}
boolean isExternal = false;
@@ -183,10 +178,6 @@
if (matchedGroups != null && !matchedGroups.isEmpty()) {
groupMatched = true;
- if (isUUID) {
- resolveUsingUUID(potentialID, elementShortName, matches, matchedGroups);
- break;
- }
resolveAgainstGroups(shortCanonicalName, matchedGroups, matches);
if (matches.size() > 1) {
@@ -224,21 +215,6 @@
elementSymbol.setOutputName(oldName);
}
- private void resolveUsingUUID(String potentialID,
- String elementShortName,
- LinkedList<ElementMatch> matches,
- Collection<GroupSymbol> matchedGroups) throws MetaMatrixComponentException,
- QueryMetadataException {
- Assertion.assertTrue(matchedGroups.size() == 1);
- GroupSymbol group = matchedGroups.iterator().next();
- ElementSymbol resolvedSymbol = new ElementSymbol(potentialID);
- resolvedSymbol.setGroupSymbol(group);
- String elementID = metadata.getFullElementName( metadata.getFullName(group.getMetadataID()), elementShortName );
- resolvedSymbol.setMetadataID( metadata.getElementID(elementID) );
- resolvedSymbol.setType( DataTypeManager.getDataTypeClass(metadata.getElementType(resolvedSymbol.getMetadataID())) );
- matches.add(new ElementMatch(resolvedSymbol, group));
- }
-
private void resolveAgainstGroups(String elementShortName,
Collection<GroupSymbol> matchedGroups, LinkedList<ElementMatch> matches) throws QueryMetadataException,
MetaMatrixComponentException {
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/rewriter/QueryRewriter.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/rewriter/QueryRewriter.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/rewriter/QueryRewriter.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -66,9 +66,9 @@
import com.metamatrix.query.metadata.QueryMetadataInterface;
import com.metamatrix.query.metadata.SupportConstants;
import com.metamatrix.query.metadata.TempMetadataAdapter;
-import com.metamatrix.query.metadata.TempMetadataID;
import com.metamatrix.query.metadata.TempMetadataStore;
import com.metamatrix.query.processor.ProcessorDataManager;
+import com.metamatrix.query.processor.relational.DependentValueSource;
import com.metamatrix.query.resolver.QueryResolver;
import com.metamatrix.query.resolver.util.ResolverUtil;
import com.metamatrix.query.resolver.util.ResolverVisitor;
@@ -142,8 +142,10 @@
import com.metamatrix.query.sql.symbol.Reference;
import com.metamatrix.query.sql.symbol.ScalarSubquery;
import com.metamatrix.query.sql.symbol.SearchedCaseExpression;
+import com.metamatrix.query.sql.symbol.SelectSymbol;
import com.metamatrix.query.sql.symbol.SingleElementSymbol;
import com.metamatrix.query.sql.util.SymbolMap;
+import com.metamatrix.query.sql.util.ValueIterator;
import com.metamatrix.query.sql.visitor.AggregateSymbolCollectorVisitor;
import com.metamatrix.query.sql.visitor.CriteriaTranslatorVisitor;
import com.metamatrix.query.sql.visitor.ElementCollectorVisitor;
@@ -727,79 +729,7 @@
}
}
- if (query.getGroupBy() != null) {
- // we check for group by expressions here to create an ANSI SQL plan
- boolean hasExpression = false;
- for (final Iterator iterator = query.getGroupBy().getSymbols().iterator(); !hasExpression && iterator.hasNext();) {
- hasExpression = iterator.next() instanceof ExpressionSymbol;
- }
- if (hasExpression) {
- Select select = query.getSelect();
- GroupBy groupBy = query.getGroupBy();
- query.setGroupBy(null);
- Criteria having = query.getHaving();
- query.setHaving(null);
- OrderBy orderBy = query.getOrderBy();
- query.setOrderBy(null);
- Limit limit = query.getLimit();
- query.setLimit(null);
- Into into = query.getInto();
- query.setInto(null);
- Set<Expression> newSelectColumns = new HashSet<Expression>();
- for (final Iterator iterator = groupBy.getSymbols().iterator(); iterator.hasNext();) {
- newSelectColumns.add(SymbolMap.getExpression((SingleElementSymbol)iterator.next()));
- }
- Set<AggregateSymbol> aggs = new HashSet<AggregateSymbol>();
- aggs.addAll(AggregateSymbolCollectorVisitor.getAggregates(select, true));
- if (having != null) {
- aggs.addAll(AggregateSymbolCollectorVisitor.getAggregates(having, true));
- }
- for (AggregateSymbol aggregateSymbol : aggs) {
- if (aggregateSymbol.getExpression() != null) {
- Expression expr = aggregateSymbol.getExpression();
- newSelectColumns.add(SymbolMap.getExpression(expr));
- }
- }
- Select innerSelect = new Select();
- int index = 0;
- for (Expression expr : newSelectColumns) {
- if (expr instanceof SingleElementSymbol) {
- innerSelect.addSymbol((SingleElementSymbol)expr);
- } else {
- innerSelect.addSymbol(new ExpressionSymbol("EXPR" + index++ , expr)); //$NON-NLS-1$
- }
- }
- query.setSelect(innerSelect);
- Query outerQuery = null;
- try {
- outerQuery = QueryRewriter.createInlineViewQuery(new GroupSymbol("X"), query, metadata, query.getSelect().getProjectedSymbols()); //$NON-NLS-1$
- } catch (QueryMetadataException err) {
- throw new QueryValidatorException(err, err.getMessage());
- } catch (QueryResolverException err) {
- throw new QueryValidatorException(err, err.getMessage());
- } catch (MetaMatrixComponentException err) {
- throw new MetaMatrixRuntimeException(err);
- }
- Iterator iter = outerQuery.getSelect().getProjectedSymbols().iterator();
- HashMap<Expression, SingleElementSymbol> expressionMap = new HashMap<Expression, SingleElementSymbol>();
- for (SingleElementSymbol symbol : (List<SingleElementSymbol>)query.getSelect().getProjectedSymbols()) {
- expressionMap.put((Expression)SymbolMap.getExpression(symbol).clone(), (SingleElementSymbol)iter.next());
- }
- ExpressionMappingVisitor.mapExpressions(groupBy, expressionMap);
- outerQuery.setGroupBy(groupBy);
- ExpressionMappingVisitor.mapExpressions(having, expressionMap);
- outerQuery.setHaving(having);
- ExpressionMappingVisitor.mapExpressions(orderBy, expressionMap);
- outerQuery.setOrderBy(orderBy);
- outerQuery.setLimit(limit);
- ExpressionMappingVisitor.mapExpressions(select, expressionMap);
- outerQuery.setSelect(select);
- outerQuery.setInto(into);
- outerQuery.setOption(query.getOption());
- query = outerQuery;
- rewriteExpressions(innerSelect);
- }
- }
+ query = rewriteGroupBy(query);
// Rewrite having
Criteria having = query.getHaving();
@@ -810,7 +740,7 @@
rewriteExpressions(query.getSelect());
if (!query.getIsXML()) {
- rewriteOrderBy(query);
+ query = (Query)rewriteOrderBy(query);
}
if (query.getLimit() != null) {
@@ -823,6 +753,91 @@
return query;
}
+
+ /**
+ * Converts a group by with expressions into a group by with only element symbols and an inline view
+ * @param query
+ * @return
+ * @throws QueryValidatorException
+ */
+ private Query rewriteGroupBy(Query query) throws QueryValidatorException {
+ if (query.getGroupBy() == null) {
+ return query;
+ }
+ // we check for group by expressions here to create an ANSI SQL plan
+ boolean hasExpression = false;
+ for (final Iterator iterator = query.getGroupBy().getSymbols().iterator(); !hasExpression && iterator.hasNext();) {
+ hasExpression = iterator.next() instanceof ExpressionSymbol;
+ }
+ if (!hasExpression) {
+ return query;
+ }
+ Select select = query.getSelect();
+ GroupBy groupBy = query.getGroupBy();
+ query.setGroupBy(null);
+ Criteria having = query.getHaving();
+ query.setHaving(null);
+ OrderBy orderBy = query.getOrderBy();
+ query.setOrderBy(null);
+ Limit limit = query.getLimit();
+ query.setLimit(null);
+ Into into = query.getInto();
+ query.setInto(null);
+ Set<Expression> newSelectColumns = new HashSet<Expression>();
+ for (final Iterator iterator = groupBy.getSymbols().iterator(); iterator.hasNext();) {
+ newSelectColumns.add(SymbolMap.getExpression((SingleElementSymbol)iterator.next()));
+ }
+ Set<AggregateSymbol> aggs = new HashSet<AggregateSymbol>();
+ aggs.addAll(AggregateSymbolCollectorVisitor.getAggregates(select, true));
+ if (having != null) {
+ aggs.addAll(AggregateSymbolCollectorVisitor.getAggregates(having, true));
+ }
+ for (AggregateSymbol aggregateSymbol : aggs) {
+ if (aggregateSymbol.getExpression() != null) {
+ Expression expr = aggregateSymbol.getExpression();
+ newSelectColumns.add(SymbolMap.getExpression(expr));
+ }
+ }
+ Select innerSelect = new Select();
+ int index = 0;
+ for (Expression expr : newSelectColumns) {
+ if (expr instanceof SingleElementSymbol) {
+ innerSelect.addSymbol((SingleElementSymbol)expr);
+ } else {
+ innerSelect.addSymbol(new ExpressionSymbol("EXPR" + index++ , expr)); //$NON-NLS-1$
+ }
+ }
+ query.setSelect(innerSelect);
+ Query outerQuery = null;
+ try {
+ outerQuery = QueryRewriter.createInlineViewQuery(new GroupSymbol("X"), query, metadata, query.getSelect().getProjectedSymbols()); //$NON-NLS-1$
+ } catch (QueryMetadataException err) {
+ throw new QueryValidatorException(err, err.getMessage());
+ } catch (QueryResolverException err) {
+ throw new QueryValidatorException(err, err.getMessage());
+ } catch (MetaMatrixComponentException err) {
+ throw new MetaMatrixRuntimeException(err);
+ }
+ Iterator iter = outerQuery.getSelect().getProjectedSymbols().iterator();
+ HashMap<Expression, SingleElementSymbol> expressionMap = new HashMap<Expression, SingleElementSymbol>();
+ for (SingleElementSymbol symbol : (List<SingleElementSymbol>)query.getSelect().getProjectedSymbols()) {
+ expressionMap.put((Expression)SymbolMap.getExpression(symbol).clone(), (SingleElementSymbol)iter.next());
+ }
+ ExpressionMappingVisitor.mapExpressions(groupBy, expressionMap);
+ outerQuery.setGroupBy(groupBy);
+ ExpressionMappingVisitor.mapExpressions(having, expressionMap);
+ outerQuery.setHaving(having);
+ ExpressionMappingVisitor.mapExpressions(orderBy, expressionMap);
+ outerQuery.setOrderBy(orderBy);
+ outerQuery.setLimit(limit);
+ ExpressionMappingVisitor.mapExpressions(select, expressionMap);
+ outerQuery.setSelect(select);
+ outerQuery.setInto(into);
+ outerQuery.setOption(query.getOption());
+ query = outerQuery;
+ rewriteExpressions(innerSelect);
+ return query;
+ }
private void rewriteExpressions(LanguageObject obj) throws QueryValidatorException {
if (obj == null) {
@@ -853,55 +868,108 @@
/**
* Rewrite the order by clause.
+ * Unrelated order by expressions will cause the creation of nested inline views.
*
* @param query
* @throws QueryValidatorException
*/
- private void rewriteOrderBy(QueryCommand query) throws QueryValidatorException {
- OrderBy orderBy = query.getOrderBy();
+ public QueryCommand rewriteOrderBy(QueryCommand queryCommand) throws QueryValidatorException {
+ final OrderBy orderBy = queryCommand.getOrderBy();
if (orderBy == null) {
- return;
+ return queryCommand;
}
- makeSelectUnique(query.getProjectedQuery().getSelect(), true);
- List projectedSymbols = query.getProjectedQuery().getSelect().getProjectedSymbols();
- if (orderBy.isInPlanForm()) {
- rewriteExpressions(orderBy);
- }
-
- OrderBy newOrderBy = new OrderBy();
- newOrderBy.setUnrelated(orderBy.hasUnrelated());
+ Select select = queryCommand.getProjectedQuery().getSelect();
+ final List projectedSymbols = select.getProjectedSymbols();
HashSet<Expression> previousExpressions = new HashSet<Expression>();
+ boolean hasUnrelatedExpression = false;
+
for (int i = 0; i < orderBy.getVariableCount(); i++) {
- SingleElementSymbol querySymbol = orderBy.getVariable(i);
- if (!orderBy.isInPlanForm()) {
- //get the order by item from the select clause, the variable must be an element symbol
- //however we have a hack to determine the position...
- Object id = ((ElementSymbol)querySymbol).getMetadataID();
- if (id instanceof TempMetadataID) {
- int index = ((TempMetadataID)((ElementSymbol)querySymbol).getMetadataID()).getPosition();
- if (index != -1) {
- querySymbol = (SingleElementSymbol)((SingleElementSymbol)projectedSymbols.get(index)).clone();
- }
- } // else not a projected symbol
- }
- Expression expr = SymbolMap.getExpression(querySymbol);
- if (!previousExpressions.add(expr)) {
- continue;
- }
-
- if (query instanceof Query && EvaluatableVisitor.isFullyEvaluatable(expr, true)) {
- continue;
- }
- newOrderBy.addVariable((SingleElementSymbol)querySymbol.clone(), orderBy.getOrderType(i).booleanValue());
+ SingleElementSymbol querySymbol = orderBy.getVariable(i);
+ int index = orderBy.getExpressionPosition(i);
+ if (index == -1) {
+ hasUnrelatedExpression |= (querySymbol instanceof ExpressionSymbol);
+ continue; // must be unrelated - but potentially contains references to the select clause
+ }
+ querySymbol = (SingleElementSymbol)projectedSymbols.get(index);
+ Expression expr = SymbolMap.getExpression(querySymbol);
+ if (!previousExpressions.add(expr) || (queryCommand instanceof Query && EvaluatableVisitor.isFullyEvaluatable(expr, true))) {
+ orderBy.removeOrderByItem(i--);
+ } else {
+ orderBy.getVariables().set(i, querySymbol.clone());
+ }
}
- if (newOrderBy.getVariableCount() == 0) {
- query.setOrderBy(null);
- } else {
- newOrderBy.setInPlanForm(true);
- query.setOrderBy(newOrderBy);
- }
+ if (orderBy.getVariableCount() == 0) {
+ queryCommand.setOrderBy(null);
+ return queryCommand;
+ }
+
+ if (!hasUnrelatedExpression) {
+ return queryCommand;
+ }
+
+ int originalSymbolCount = select.getProjectedSymbols().size();
+
+ //add unrelated to select
+ select.addSymbols(orderBy.getUnrelated());
+ makeSelectUnique(select, false);
+
+ Query query = queryCommand.getProjectedQuery();
+
+ Into into = query.getInto();
+ query.setInto(null);
+ Limit limit = query.getLimit();
+ query.setLimit(null);
+ query.setOrderBy(null);
+
+ Query top = null;
+
+ try {
+ Query intermediate = createInlineViewQuery(new GroupSymbol("X"), query, metadata, select.getProjectedSymbols()); //$NON-NLS-1$
+ Iterator iter = intermediate.getSelect().getProjectedSymbols().iterator();
+ HashMap<Expression, SingleElementSymbol> expressionMap = new HashMap<Expression, SingleElementSymbol>();
+ for (SingleElementSymbol symbol : (List<SingleElementSymbol>)select.getProjectedSymbols()) {
+ SingleElementSymbol ses = (SingleElementSymbol)iter.next();
+ expressionMap.put(SymbolMap.getExpression(symbol), ses);
+ expressionMap.put(new ElementSymbol(symbol.getName()), ses);
+ }
+ ExpressionMappingVisitor.mapExpressions(orderBy, expressionMap);
+ for (int i = 0; i < orderBy.getVariableCount(); i++) {
+ int index = orderBy.getExpressionPosition(i);
+ SingleElementSymbol ss = orderBy.getVariable(i);
+ if (index == -1 && !(ss instanceof ElementSymbol)) {
+ intermediate.getSelect().addSymbol((SelectSymbol)ss.clone());
+ }
+ }
+ makeSelectUnique(intermediate.getSelect(), true);
+
+ top = createInlineViewQuery(new GroupSymbol("Y"), intermediate, metadata, intermediate.getSelect().getProjectedSymbols()); //$NON-NLS-1$
+ iter = top.getSelect().getProjectedSymbols().iterator();
+ expressionMap = new HashMap<Expression, SingleElementSymbol>();
+ for (SingleElementSymbol symbol : (List<SingleElementSymbol>)intermediate.getSelect().getProjectedSymbols()) {
+ expressionMap.put(SymbolMap.getExpression(symbol), (SingleElementSymbol)iter.next());
+ }
+ ExpressionMappingVisitor.mapExpressions(orderBy, expressionMap);
+ //now the order by should only contain element symbols
+ } catch (QueryResolverException e) {
+ throw new QueryValidatorException(e, e.getMessage());
+ } catch (QueryMetadataException e) {
+ throw new QueryValidatorException(e, e.getMessage());
+ } catch (MetaMatrixComponentException e) {
+ throw new QueryValidatorException(e, e.getMessage());
+ }
+ //filter back out the unrelated
+ orderBy.getUnrelated().clear();
+ List symbols = top.getSelect().getSymbols();
+ for (ElementSymbol symbol : (List<ElementSymbol>)symbols.subList(originalSymbolCount, symbols.size())) {
+ orderBy.addUnrelated(symbol);
+ }
+ top.getSelect().setSymbols(symbols.subList(0, originalSymbolCount));
+ top.setInto(into);
+ top.setLimit(limit);
+ top.setOrderBy(orderBy);
+ return top;
}
/**
@@ -1085,11 +1153,36 @@
}
rewriteSubqueryContainer((SubqueryContainer)criteria, true);
} else if (criteria instanceof DependentSetCriteria) {
- criteria = rewriteCriteria((AbstractSetCriteria)criteria);
+ criteria = rewriteDependentSetCriteria((DependentSetCriteria)criteria);
}
return evaluateCriteria(criteria);
}
+
+ private Criteria rewriteDependentSetCriteria(DependentSetCriteria dsc)
+ throws QueryValidatorException {
+ if (dataMgr == null) {
+ return rewriteCriteria(dsc);
+ }
+ SetCriteria setCrit = new SetCriteria();
+ setCrit.setExpression(dsc.getExpression());
+ HashSet<Object> values = new HashSet<Object>();
+ try {
+ DependentValueSource dvs = (DependentValueSource)this.context.getVariableContext().getGlobalValue(dsc.getContextSymbol());
+ ValueIterator iter = dvs.getValueIterator(dsc.getValueExpression());
+ while (iter.hasNext()) {
+ values.add(iter.next());
+ }
+ } catch (MetaMatrixComponentException e) {
+ throw new MetaMatrixRuntimeException(e);
+ }
+ List<Constant> constants = new ArrayList<Constant>(values.size());
+ for (Object value : values) {
+ constants.add(new Constant(value, setCrit.getExpression().getType()));
+ }
+ setCrit.setValues(constants);
+ return rewriteCriteria(setCrit);
+ }
/**
* Performs simple expression flattening
@@ -1987,92 +2080,140 @@
}
return expression;
}
-
+
+ private static Map<String, Integer> FUNCTION_MAP = new HashMap<String, Integer>();
+
+ static {
+ FUNCTION_MAP.put(FunctionLibrary.SPACE.toLowerCase(), 0);
+ FUNCTION_MAP.put(FunctionLibrary.FROM_UNIXTIME.toLowerCase(), 1);
+ FUNCTION_MAP.put(FunctionLibrary.NULLIF.toLowerCase(), 2);
+ FUNCTION_MAP.put(FunctionLibrary.COALESCE.toLowerCase(), 3);
+ FUNCTION_MAP.put(FunctionLibrary.CONCAT2.toLowerCase(), 4);
+ FUNCTION_MAP.put(FunctionLibrary.TIMESTAMPADD.toLowerCase(), 5);
+ FUNCTION_MAP.put(FunctionLibrary.PARSEDATE.toLowerCase(), 6);
+ FUNCTION_MAP.put(FunctionLibrary.PARSETIME.toLowerCase(), 7);
+ FUNCTION_MAP.put(FunctionLibrary.FORMATDATE.toLowerCase(), 8);
+ FUNCTION_MAP.put(FunctionLibrary.FORMATTIME.toLowerCase(), 9);
+ }
+
private Expression rewriteFunction(Function function) throws QueryValidatorException {
//rewrite alias functions
- String actualName =ALIASED_FUNCTIONS.get(function.getName().toLowerCase());
+ String functionLowerName = function.getName().toLowerCase();
+ String actualName =ALIASED_FUNCTIONS.get(functionLowerName);
if (actualName != null) {
function.setName(actualName);
}
- //space(x) => repeat(' ', x)
- if (function.getName().equalsIgnoreCase(FunctionLibrary.SPACE)) {
- Function result = new Function(SourceSystemFunctions.REPEAT,
- new Expression[] {new Constant(" "), function.getArg(0)}); //$NON-NLS-1$
- //resolve the function
- FunctionDescriptor descriptor =
- FunctionLibraryManager.getFunctionLibrary().findFunction(SourceSystemFunctions.REPEAT, new Class[] { DataTypeManager.DefaultDataClasses.STRING, DataTypeManager.DefaultDataClasses.INTEGER});
- result.setFunctionDescriptor(descriptor);
- result.setType(DataTypeManager.DefaultDataClasses.STRING);
- return rewriteFunction(result);
- }
-
- //from_unixtime(a) => timestampadd(SQL_TSI_SECOND, a, new Timestamp(0))
- if (function.getName().equalsIgnoreCase(FunctionLibrary.FROM_UNIXTIME)) {
- Function result = new Function(FunctionLibrary.TIMESTAMPADD,
- new Expression[] {new Constant(ReservedWords.SQL_TSI_SECOND), function.getArg(0), new Constant(new Timestamp(0)) });
- //resolve the function
- FunctionDescriptor descriptor =
- FunctionLibraryManager.getFunctionLibrary().findFunction(FunctionLibrary.TIMESTAMPADD, new Class[] { DataTypeManager.DefaultDataClasses.STRING, DataTypeManager.DefaultDataClasses.INTEGER, DataTypeManager.DefaultDataClasses.TIMESTAMP });
- result.setFunctionDescriptor(descriptor);
- result.setType(DataTypeManager.DefaultDataClasses.TIMESTAMP);
- return rewriteFunction(result);
- }
-
- //rewrite nullif(a, b) => case when (a = b) then null else a
- if (function.getName().equalsIgnoreCase(FunctionLibrary.NULLIF)) {
- List when = Arrays.asList(new Criteria[] {new CompareCriteria(function.getArg(0), CompareCriteria.EQ, function.getArg(1))});
- Constant nullConstant = new Constant(null, function.getType());
- List then = Arrays.asList(new Expression[] {nullConstant});
- SearchedCaseExpression caseExpr = new SearchedCaseExpression(when, then);
- caseExpr.setElseExpression(function.getArg(0));
- caseExpr.setType(function.getType());
- return rewriteExpressionDirect(caseExpr);
- }
-
- if (function.getName().equalsIgnoreCase(FunctionLibrary.COALESCE)) {
- Expression[] args = function.getArgs();
- if (args.length == 2) {
- Function result = new Function(SourceSystemFunctions.IFNULL,
- new Expression[] {function.getArg(0), function.getArg(1) });
+ Integer code = FUNCTION_MAP.get(functionLowerName);
+ if (code != null) {
+ switch (code) {
+ case 0: { //space(x) => repeat(' ', x)
+ Function result = new Function(SourceSystemFunctions.REPEAT,
+ new Expression[] {new Constant(" "), function.getArg(0)}); //$NON-NLS-1$
//resolve the function
FunctionDescriptor descriptor =
- FunctionLibraryManager.getFunctionLibrary().findFunction(SourceSystemFunctions.IFNULL, new Class[] { function.getType(), function.getType() });
+ FunctionLibraryManager.getFunctionLibrary().findFunction(SourceSystemFunctions.REPEAT, new Class[] { DataTypeManager.DefaultDataClasses.STRING, DataTypeManager.DefaultDataClasses.INTEGER});
result.setFunctionDescriptor(descriptor);
- result.setType(function.getType());
- return rewriteFunction(result);
+ result.setType(DataTypeManager.DefaultDataClasses.STRING);
+ function = result;
+ break;
}
- }
-
- //rewrite concat2 - CONCAT2(a, b) ==> CASE WHEN (a is NULL AND b is NULL) THEN NULL ELSE CONCAT( NVL(a, ''), NVL(b, '') )
- if (function.getName().equalsIgnoreCase(FunctionLibrary.CONCAT2)) {
- Expression[] args = function.getArgs();
- Function[] newArgs = new Function[args.length];
+ case 1: {//from_unixtime(a) => timestampadd(SQL_TSI_SECOND, a, new Timestamp(0))
+ Function result = new Function(FunctionLibrary.TIMESTAMPADD,
+ new Expression[] {new Constant(ReservedWords.SQL_TSI_SECOND), function.getArg(0), new Constant(new Timestamp(0)) });
+ //resolve the function
+ FunctionDescriptor descriptor =
+ FunctionLibraryManager.getFunctionLibrary().findFunction(FunctionLibrary.TIMESTAMPADD, new Class[] { DataTypeManager.DefaultDataClasses.STRING, DataTypeManager.DefaultDataClasses.INTEGER, DataTypeManager.DefaultDataClasses.TIMESTAMP });
+ result.setFunctionDescriptor(descriptor);
+ result.setType(DataTypeManager.DefaultDataClasses.TIMESTAMP);
+ function = result;
+ break;
+ }
+ case 2: { //rewrite nullif(a, b) => case when (a = b) then null else a
+ List when = Arrays.asList(new Criteria[] {new CompareCriteria(function.getArg(0), CompareCriteria.EQ, function.getArg(1))});
+ Constant nullConstant = new Constant(null, function.getType());
+ List then = Arrays.asList(new Expression[] {nullConstant});
+ SearchedCaseExpression caseExpr = new SearchedCaseExpression(when, then);
+ caseExpr.setElseExpression(function.getArg(0));
+ caseExpr.setType(function.getType());
+ return rewriteExpressionDirect(caseExpr);
+ }
+ case 3: {
+ Expression[] args = function.getArgs();
+ if (args.length == 2) {
+ Function result = new Function(SourceSystemFunctions.IFNULL,
+ new Expression[] {function.getArg(0), function.getArg(1) });
+ //resolve the function
+ FunctionDescriptor descriptor =
+ FunctionLibraryManager.getFunctionLibrary().findFunction(SourceSystemFunctions.IFNULL, new Class[] { function.getType(), function.getType() });
+ result.setFunctionDescriptor(descriptor);
+ result.setType(function.getType());
+ function = result;
+ }
+ break;
+ }
+ case 4: { //rewrite concat2 - CONCAT2(a, b) ==> CASE WHEN (a is NULL AND b is NULL) THEN NULL ELSE CONCAT( NVL(a, ''), NVL(b, '') )
+ Expression[] args = function.getArgs();
+ Function[] newArgs = new Function[args.length];
- for(int i=0; i<args.length; i++) {
- newArgs[i] = new Function(SourceSystemFunctions.IFNULL, new Expression[] {args[i], new Constant("")}); //$NON-NLS-1$
- newArgs[i].setType(args[i].getType());
- Assertion.assertTrue(args[i].getType() == DataTypeManager.DefaultDataClasses.STRING);
- FunctionDescriptor descriptor =
- FunctionLibraryManager.getFunctionLibrary().findFunction(SourceSystemFunctions.IFNULL, new Class[] { args[i].getType(), DataTypeManager.DefaultDataClasses.STRING });
- newArgs[i].setFunctionDescriptor(descriptor);
+ for(int i=0; i<args.length; i++) {
+ newArgs[i] = new Function(SourceSystemFunctions.IFNULL, new Expression[] {args[i], new Constant("")}); //$NON-NLS-1$
+ newArgs[i].setType(args[i].getType());
+ Assertion.assertTrue(args[i].getType() == DataTypeManager.DefaultDataClasses.STRING);
+ FunctionDescriptor descriptor =
+ FunctionLibraryManager.getFunctionLibrary().findFunction(SourceSystemFunctions.IFNULL, new Class[] { args[i].getType(), DataTypeManager.DefaultDataClasses.STRING });
+ newArgs[i].setFunctionDescriptor(descriptor);
+ }
+
+ Function concat = new Function(SourceSystemFunctions.CONCAT, newArgs);
+ concat.setType(DataTypeManager.DefaultDataClasses.STRING);
+ FunctionDescriptor descriptor =
+ FunctionLibraryManager.getFunctionLibrary().findFunction(SourceSystemFunctions.CONCAT, new Class[] { DataTypeManager.DefaultDataClasses.STRING, DataTypeManager.DefaultDataClasses.STRING });
+ concat.setFunctionDescriptor(descriptor);
+
+ List when = Arrays.asList(new Criteria[] {new CompoundCriteria(CompoundCriteria.AND, new IsNullCriteria(args[0]), new IsNullCriteria(args[1]))});
+ Constant nullConstant = new Constant(null, DataTypeManager.DefaultDataClasses.STRING);
+ List then = Arrays.asList(new Expression[] {nullConstant});
+ SearchedCaseExpression caseExpr = new SearchedCaseExpression(when, then);
+ caseExpr.setElseExpression(concat);
+ caseExpr.setType(DataTypeManager.DefaultDataClasses.STRING);
+ return rewriteExpressionDirect(caseExpr);
}
-
- Function concat = new Function(SourceSystemFunctions.CONCAT, newArgs);
- concat.setType(DataTypeManager.DefaultDataClasses.STRING);
- FunctionDescriptor descriptor =
- FunctionLibraryManager.getFunctionLibrary().findFunction(SourceSystemFunctions.CONCAT, new Class[] { DataTypeManager.DefaultDataClasses.STRING, DataTypeManager.DefaultDataClasses.STRING });
- concat.setFunctionDescriptor(descriptor);
-
- List when = Arrays.asList(new Criteria[] {new CompoundCriteria(CompoundCriteria.AND, new IsNullCriteria(args[0]), new IsNullCriteria(args[1]))});
- Constant nullConstant = new Constant(null, DataTypeManager.DefaultDataClasses.STRING);
- List then = Arrays.asList(new Expression[] {nullConstant});
- SearchedCaseExpression caseExpr = new SearchedCaseExpression(when, then);
- caseExpr.setElseExpression(concat);
- caseExpr.setType(DataTypeManager.DefaultDataClasses.STRING);
- return rewriteExpressionDirect(caseExpr);
+ case 5: {
+ if (function.getType() != DataTypeManager.DefaultDataClasses.TIMESTAMP) {
+ FunctionDescriptor descriptor =
+ FunctionLibraryManager.getFunctionLibrary().findFunction(SourceSystemFunctions.TIMESTAMPADD, new Class[] { DataTypeManager.DefaultDataClasses.STRING, DataTypeManager.DefaultDataClasses.INTEGER, DataTypeManager.DefaultDataClasses.TIMESTAMP });
+ function.setFunctionDescriptor(descriptor);
+ Class<?> type = function.getType();
+ function.setType(DataTypeManager.DefaultDataClasses.TIMESTAMP);
+ function.getArgs()[2] = ResolverUtil.getConversion(function.getArg(2), DataTypeManager.getDataTypeName(type), DataTypeManager.DefaultDataTypes.TIMESTAMP, false);
+ function = ResolverUtil.getConversion(function, DataTypeManager.DefaultDataTypes.TIMESTAMP, DataTypeManager.getDataTypeName(type), false);
+ }
+ break;
+ }
+ case 6:
+ case 7: {
+ FunctionDescriptor descriptor =
+ FunctionLibraryManager.getFunctionLibrary().findFunction(SourceSystemFunctions.PARSETIMESTAMP, new Class[] { DataTypeManager.DefaultDataClasses.STRING, DataTypeManager.DefaultDataClasses.STRING });
+ function.setName(SourceSystemFunctions.PARSETIMESTAMP);
+ function.setFunctionDescriptor(descriptor);
+ Class<?> type = function.getType();
+ function.setType(DataTypeManager.DefaultDataClasses.TIMESTAMP);
+ function = ResolverUtil.getConversion(function, DataTypeManager.DefaultDataTypes.TIMESTAMP, DataTypeManager.getDataTypeName(type), false);
+ break;
+ }
+ case 8:
+ case 9: {
+ FunctionDescriptor descriptor =
+ FunctionLibraryManager.getFunctionLibrary().findFunction(SourceSystemFunctions.FORMATTIMESTAMP, new Class[] { DataTypeManager.DefaultDataClasses.TIMESTAMP, DataTypeManager.DefaultDataClasses.STRING });
+ function.setName(SourceSystemFunctions.FORMATTIMESTAMP);
+ function.setFunctionDescriptor(descriptor);
+ function.getArgs()[0] = ResolverUtil.getConversion(function.getArg(0), DataTypeManager.getDataTypeName(function.getArg(0).getType()), DataTypeManager.DefaultDataTypes.TIMESTAMP, false);
+ break;
+ }
+ }
}
-
+
Expression[] args = function.getArgs();
Expression[] newArgs = new Expression[args.length];
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/sql/lang/OrderBy.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/sql/lang/OrderBy.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/sql/lang/OrderBy.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -24,14 +24,18 @@
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
+import java.util.Set;
import com.metamatrix.core.util.EquivalenceUtil;
import com.metamatrix.core.util.HashCodeUtil;
import com.metamatrix.query.QueryPlugin;
import com.metamatrix.query.sql.LanguageObject;
import com.metamatrix.query.sql.LanguageVisitor;
+import com.metamatrix.query.sql.symbol.ElementSymbol;
import com.metamatrix.query.sql.symbol.SingleElementSymbol;
import com.metamatrix.query.sql.visitor.SQLStringVisitor;
import com.metamatrix.query.util.ErrorMessageKeys;
@@ -46,17 +50,20 @@
public class OrderBy implements LanguageObject {
/** Constant for the ascending value */
- public static final boolean ASC = Boolean.TRUE.booleanValue();
+ public static final boolean ASC = true;
/** Constant for the descending value */
- public static final boolean DESC = Boolean.FALSE.booleanValue();
+ public static final boolean DESC = false;
private List sortOrder;
private List orderTypes;
- private boolean inPlanForm = true;
- private boolean hasUnrelated;
-
/**
+ * set by the resolver to contain element symbol references
+ * outside of the select clause
+ */
+ private Set<ElementSymbol> unrelated;
+ private List<Integer> expressionPositions;
+ /**
* Constructs a default instance of this class.
*/
public OrderBy() {
@@ -192,8 +199,16 @@
copySymbols.add(ses.clone());
}
OrderBy result = new OrderBy(copySymbols, getTypes());
- result.setInPlanForm(this.inPlanForm);
- result.setUnrelated(this.hasUnrelated);
+ if (this.unrelated != null) {
+ HashSet<ElementSymbol> copyUnrelated = new HashSet<ElementSymbol>();
+ for (ElementSymbol elementSymbol : this.unrelated) {
+ copyUnrelated.add((ElementSymbol)elementSymbol.clone());
+ }
+ result.unrelated = copyUnrelated;
+ }
+ if (this.expressionPositions != null) {
+ result.expressionPositions = new ArrayList<Integer>(expressionPositions);
+ }
return result;
}
@@ -239,20 +254,42 @@
return SQLStringVisitor.getSQLString(this);
}
- public boolean isInPlanForm() {
- return this.inPlanForm;
+ public boolean hasUnrelated() {
+ return this.unrelated != null;
+ }
+
+ public void addUnrelated(ElementSymbol symbol) {
+ if (this.unrelated == null) {
+ this.unrelated = new HashSet<ElementSymbol>();
+ }
+ this.unrelated.add(symbol);
+ }
+
+ public Set<ElementSymbol> getUnrelated() {
+ if (this.unrelated == null) {
+ return Collections.emptySet();
+ }
+ return unrelated;
+ }
+
+ public void setExpressionPosition(int orderIndex, int selectIndex) {
+ if (this.expressionPositions == null) {
+ this.expressionPositions = new ArrayList<Integer>(Collections.nCopies(sortOrder.size(), -1));
+ }
+ this.expressionPositions.set(orderIndex, selectIndex);
}
-
- public void setInPlanForm(boolean inPlanForm) {
- this.inPlanForm = inPlanForm;
- }
- public boolean hasUnrelated() {
- return hasUnrelated;
+ public int getExpressionPosition(int orderIndex) {
+ if (expressionPositions == null) {
+ return -1;
+ }
+ return expressionPositions.get(orderIndex);
}
- public void setUnrelated(boolean hasUnrelated) {
- this.hasUnrelated = hasUnrelated;
- }
-
+ public void removeOrderByItem(int index) {
+ sortOrder.remove(index);
+ orderTypes.remove(index);
+ expressionPositions.remove(index);
+ }
+
}
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/sql/lang/Query.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/sql/lang/Query.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/sql/lang/Query.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -34,7 +34,6 @@
import com.metamatrix.query.metadata.QueryMetadataInterface;
import com.metamatrix.query.sql.LanguageVisitor;
import com.metamatrix.query.sql.symbol.ElementSymbol;
-import com.metamatrix.query.sql.symbol.GroupSymbol;
import com.metamatrix.query.sql.symbol.SelectSymbol;
import com.metamatrix.query.sql.symbol.SingleElementSymbol;
/**
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/sql/lang/SPParameter.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/sql/lang/SPParameter.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/sql/lang/SPParameter.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -100,7 +100,7 @@
}
/**
- * Get full parameter name, including procedure name. If unknown, null is returned.
+ * Get full parameter name,. If unknown, null is returned.
* @return Parameter name
*/
public String getName() {
@@ -108,7 +108,7 @@
}
/**
- * Set full parameter name, including procedure name
+ * Set full parameter name
* @param name Parameter name
*/
public void setName(String name) {
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/sql/visitor/EvaluatableVisitor.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/sql/visitor/EvaluatableVisitor.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/sql/visitor/EvaluatableVisitor.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -133,7 +133,7 @@
}
public void visit(DependentSetCriteria obj) {
- evaluationNotPossible(EvaluationLevel.PUSH_DOWN);
+ evaluationNotPossible(EvaluationLevel.PROCESSING);
}
public void visit(ExistsCriteria obj) {
Deleted: branches/JCA/engine/src/main/java/com/metamatrix/query/sql/visitor/ExpressionSymbolCollector.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/sql/visitor/ExpressionSymbolCollector.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/sql/visitor/ExpressionSymbolCollector.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,100 +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 com.metamatrix.query.sql.visitor;
-
-import java.util.Collection;
-
-import com.metamatrix.query.QueryPlugin;
-import com.metamatrix.query.sql.LanguageObject;
-import com.metamatrix.query.sql.LanguageVisitor;
-import com.metamatrix.query.sql.navigator.PreOrderNavigator;
-import com.metamatrix.query.sql.symbol.AggregateSymbol;
-import com.metamatrix.query.sql.symbol.ExpressionSymbol;
-import com.metamatrix.query.util.ErrorMessageKeys;
-
-/**
- * <p>This visitor class will traverse a language object tree and collect all expression
- * element symbol references it finds. It uses a collection to collect the symbols in so
- * different collections will give you different collection properties - for instance,
- * using a Set will remove duplicates.</p>
- *
- * <p>The easiest way to use this visitor is to call the static methods which create
- * the visitor (and possibly the collection), run the visitor, and return the collection.
- * The public visit() methods should NOT be called directly.</p>
- */
-public class ExpressionSymbolCollector extends LanguageVisitor {
- private Collection symbols;
-
- /**
- * Construct a new visitor with the specified collection, which should
- * be non-null.
- * @param elements Collection to use for elements
- * @throws IllegalArgumentException If elements is null
- */
- public ExpressionSymbolCollector(Collection elements) {
- if(elements == null) {
- throw new IllegalArgumentException(QueryPlugin.Util.getString(ErrorMessageKeys.SQL_0021));
- }
- this.symbols = elements;
- }
-
- /**
- * Get the elements collected by the visitor. This should best be called
- * after the visitor has been run on the language object tree.
- * @return Collection of {@link com.metamatrix.query.sql.symbol.ElementSymbol}
- */
- public Collection getSymbols() {
- return this.symbols;
- }
-
- /**
- * Visit a language object and collect symbols. This method should <b>NOT</b> be
- * called directly.
- * @param obj Language object
- */
- public void visit(ExpressionSymbol obj) {
- this.symbols.add(obj);
- }
-
- /**
- * Visit a language object and collect symbols. This method should <b>NOT</b> be
- * called directly.
- * @param obj Language object
- */
- public void visit(AggregateSymbol obj) {
- this.symbols.add(obj);
- }
-
- /**
- * Helper to quickly get the elements from obj in the elements collection
- * @param obj Language object
- * @param elements Collection to collect elements in
- */
- public static final void getSymbols(LanguageObject obj, Collection elements) {
- if(obj == null) {
- return;
- }
- ExpressionSymbolCollector visitor = new ExpressionSymbolCollector(elements);
- PreOrderNavigator.doVisit(obj, visitor);
- }
-}
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/sql/visitor/SQLStringVisitor.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/sql/visitor/SQLStringVisitor.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/sql/visitor/SQLStringVisitor.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -30,6 +30,7 @@
import java.util.List;
import com.metamatrix.common.types.DataTypeManager;
+import com.metamatrix.core.util.StringUtil;
import com.metamatrix.query.sql.LanguageObject;
import com.metamatrix.query.sql.LanguageVisitor;
import com.metamatrix.query.sql.ReservedWords;
@@ -114,6 +115,7 @@
private static final String SPACE = " "; //$NON-NLS-1$
private static final String BEGIN_COMMENT = "/*"; //$NON-NLS-1$
private static final String END_COMMENT = "*/"; //$NON-NLS-1$
+ private static final char ID_ESCAPE_CHAR = '\"';
private LinkedList<Object> parts = new LinkedList<Object>();
@@ -618,87 +620,77 @@
}
public void visit(Option obj) {
- boolean anOption = false;
- List parts = new ArrayList();
-
parts.add(ReservedWords.OPTION);
if(obj.getShowPlan()) {
- anOption = true;
parts.add(" "); //$NON-NLS-1$
parts.add(ReservedWords.SHOWPLAN);
}
if(obj.getPlanOnly()) {
- anOption = true;
parts.add(" "); //$NON-NLS-1$
parts.add(ReservedWords.PLANONLY);
}
if(obj.getDebug()) {
- anOption = true;
parts.add(" "); //$NON-NLS-1$
parts.add(ReservedWords.DEBUG);
}
Collection groups = obj.getDependentGroups();
if(groups != null && groups.size() > 0) {
- anOption = true;
parts.add(" "); //$NON-NLS-1$
parts.add(ReservedWords.MAKEDEP);
parts.add(" "); //$NON-NLS-1$
Iterator iter = groups.iterator();
- parts.add(iter.next());
while(iter.hasNext()) {
- parts.add(", "); //$NON-NLS-1$
- parts.add(iter.next());
+ outputDisplayName((String)iter.next());
+
+ if (iter.hasNext()) {
+ parts.add(", ");
+ }
}
}
groups = obj.getNotDependentGroups();
if(groups != null && groups.size() > 0) {
- anOption = true;
parts.add(" "); //$NON-NLS-1$
parts.add(ReservedWords.MAKENOTDEP);
parts.add(" "); //$NON-NLS-1$
Iterator iter = groups.iterator();
- parts.add(iter.next());
while(iter.hasNext()) {
- parts.add(", "); //$NON-NLS-1$
- parts.add(iter.next());
+ outputDisplayName((String)iter.next());
+
+ if (iter.hasNext()) {
+ parts.add(", ");
+ }
}
}
groups = obj.getNoCacheGroups();
if(groups != null && groups.size() > 0) {
- anOption = true;
parts.add(" "); //$NON-NLS-1$
parts.add(ReservedWords.NOCACHE);
parts.add(" "); //$NON-NLS-1$
Iterator iter = groups.iterator();
- parts.add(iter.next());
while(iter.hasNext()) {
- parts.add(", "); //$NON-NLS-1$
- parts.add(iter.next());
+ outputDisplayName((String)iter.next());
+
+ if (iter.hasNext()) {
+ parts.add(", ");
+ }
}
}else if(obj.isNoCache()){
- anOption = true;
parts.add(" "); //$NON-NLS-1$
parts.add(ReservedWords.NOCACHE);
}
- // Only add this if any option was set to true - otherwise omit
- if(anOption) {
- replaceStringParts(parts.toArray());
- } else {
- replaceStringParts(new Object[0]);
- }
}
public void visit(OrderBy obj) {
@@ -713,11 +705,12 @@
Iterator typeIter = types.iterator();
while ( iter.hasNext() ) {
SingleElementSymbol ses = (SingleElementSymbol)iter.next();
- if (ses instanceof ElementSymbol && ((ElementSymbol)ses).getDisplayMode().equals(ElementSymbol.DisplayMode.SHORT_OUTPUT_NAME)) {
- parts.add(registerNode(ses));
- } else {
- outputDisplayName(ses.getOutputName());
- }
+ if (ses instanceof AliasSymbol) {
+ AliasSymbol as = (AliasSymbol)ses;
+ outputDisplayName(as.getOutputName());
+ } else {
+ parts.add(registerNode(ses));
+ }
Boolean type = (Boolean) typeIter.next();
if( type.booleanValue() == OrderBy.DESC ) {
parts.add(SPACE);
@@ -1000,7 +993,7 @@
if(param.getExpression() == null) {
if(param.getName() != null) {
- parts.add(escapeSinglePart(obj.getParamFullName(param)));
+ outputDisplayName(obj.getParamFullName(param));
} else {
parts.add("?"); //$NON-NLS-1$
}
@@ -1151,54 +1144,21 @@
constantParts = new Object[] { "{d'", obj.getValue().toString(), "'}" }; //$NON-NLS-1$ //$NON-NLS-2$
} else {
String strValue = obj.getValue().toString();
- strValue = escapeStringValue(strValue);
- constantParts = new Object[] { getStringQuoteBegin(), strValue, getStringQuoteEnd() };
+ strValue = escapeStringValue(strValue, "'"); //$NON-NLS-1$
+ constantParts = new Object[] { "'", strValue, "'" }; //$NON-NLS-1$ //$NON-NLS-2$
}
}
replaceStringParts(constantParts);
}
- /**
- * Get the string to quote the beginning of a string with. By default this is the ' character.
- * @return String quote begin character
- */
- protected String getStringQuoteBegin() {
- return "'"; //$NON-NLS-1$
- }
-
- /**
- * Get the string to quote the end of a string with. By default this is the ' character.
- * @return String quote end character
- */
- protected String getStringQuoteEnd() {
- return "'"; //$NON-NLS-1$
- }
-
/**
* Take a string literal and escape it as necessary. By default, this converts ' to ''.
* @param str String literal value (unquoted), never null
* @return Escaped string literal value
*/
- protected String escapeStringValue(String str) {
- int index = str.indexOf('\'');
- if(index < 0) {
- return str;
- }
- int last = 0;
- StringBuffer temp = new StringBuffer();
- while(index >= 0) {
- temp.append(str.substring(last, index));
- temp.append("''"); //$NON-NLS-1$
- last = index+1;
- index = str.indexOf('\'', last);
- }
-
- if(last <= (str.length()-1)) {
- temp.append(str.substring(last));
- }
-
- return temp.toString();
+ protected String escapeStringValue(String str, String tick) {
+ return StringUtil.replaceAll(str, tick, tick + tick);
}
public void visit(ElementSymbol obj) {
@@ -1591,13 +1551,23 @@
parts.add(registerNode(obj.getRowLimit()));
}
- private static final char ID_ESCAPE_CHAR = '\"';
-
private String escapeSinglePart(String part) {
if(isReservedWord(part)) {
return ID_ESCAPE_CHAR + part + ID_ESCAPE_CHAR;
}
- return part;
+ boolean escape = true;
+ char start = part.charAt(0);
+ if (start == '#' || start == '@' || StringUtil.isLetter(start)) {
+ escape = false;
+ for (int i = 1; !escape && i < part.length(); i++) {
+ char c = part.charAt(i);
+ escape = !StringUtil.isLetterOrDigit(c) && c != '_';
+ }
+ }
+ if (escape) {
+ return ID_ESCAPE_CHAR + escapeStringValue(part, "\"") + ID_ESCAPE_CHAR; //$NON-NLS-1$
+ }
+ return part;
}
/**
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/tempdata/TempTableStoreImpl.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/tempdata/TempTableStoreImpl.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/tempdata/TempTableStoreImpl.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -66,7 +66,6 @@
import com.metamatrix.query.sql.symbol.Expression;
import com.metamatrix.query.sql.symbol.GroupSymbol;
import com.metamatrix.query.sql.symbol.SingleElementSymbol;
-import com.metamatrix.query.util.TypeRetrievalUtil;
/**
* @since 5.5
@@ -91,7 +90,7 @@
this.ts = buffer.getTupleSource(tsId);
List columns = buffer.getTupleSchema(tsId);
this.lookup = RelationalNode.createLookupMap(columns);
- this.newTs = buffer.createTupleSource(columns, TypeRetrievalUtil.getTypeNames(columns), sessionID, TupleSourceType.PROCESSOR);
+ this.newTs = buffer.createTupleSource(columns, sessionID, TupleSourceType.PROCESSOR);
this.tc = new TupleCollector(newTs, buffer);
this.eval = new Evaluator(lookup, null, null);
this.crit = crit;
@@ -170,7 +169,7 @@
//add metadata
tempMetadataStore.addTempGroup(tempTableName, columns, false, true);
//create tuple source
- TupleSourceID tsId = buffer.createTupleSource(columns, TypeRetrievalUtil.getTypeNames(columns), sessionID, TupleSourceType.PROCESSOR);
+ TupleSourceID tsId = buffer.createTupleSource(columns, sessionID, TupleSourceType.PROCESSOR);
try {
buffer.setStatus(tsId, TupleSourceStatus.FULL);
}catch(TupleSourceNotFoundException e) {
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/util/CommandContext.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/util/CommandContext.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/util/CommandContext.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -30,6 +30,7 @@
import com.metamatrix.api.exception.MetaMatrixComponentException;
import com.metamatrix.api.exception.query.QueryProcessingException;
+import com.metamatrix.common.buffer.impl.BufferConfig;
import com.metamatrix.core.util.ArgCheck;
import com.metamatrix.query.QueryPlugin;
import com.metamatrix.query.eval.SecurityFunctionEvaluator;
@@ -54,9 +55,9 @@
/** Identify a group of related commands, which typically get cleaned up together */
private String connectionID;
- private int processorBatchSize = 2000;
+ private int processorBatchSize = BufferConfig.DEFAULT_PROCESSOR_BATCH_SIZE;
- private int connectorBatchSize = 2000;
+ private int connectorBatchSize = BufferConfig.DEFAULT_CONNECTOR_BATCH_SIZE;
private String userName;
@@ -168,7 +169,7 @@
public void setSessionFunctionEvaluated(boolean sessionFunctionEvaluated) {
if (parent != null) {
- parent.setCollectNodeStatistics(sessionFunctionEvaluated);
+ parent.setSessionFunctionEvaluated(sessionFunctionEvaluated);
} else {
this.sessionFunctionEvaluated = sessionFunctionEvaluated;
}
Deleted: branches/JCA/engine/src/main/java/com/metamatrix/query/util/TypeRetrievalUtil.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/util/TypeRetrievalUtil.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/util/TypeRetrievalUtil.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,56 +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 com.metamatrix.query.util;
-
-import java.util.List;
-import java.util.ListIterator;
-
-import com.metamatrix.common.types.DataTypeManager;
-import com.metamatrix.query.sql.symbol.Expression;
-
-
-/**
- * Utility to provide type names to pass to the BufferManager.createTupleSource() method.
- * @since 4.2
- */
-public class TypeRetrievalUtil {
- private TypeRetrievalUtil() {} // Uninstantiable
-
- /**
- * Gets the data type names for each of the input expressions, in order.
- * @param expressions List of Expressions
- * @return
- * @since 4.2
- */
- public static String[] getTypeNames(List expressions) {
- String[] types = new String[expressions.size()];
- ListIterator i = expressions.listIterator();
- Expression expr = null;
- for (int index = 0; i.hasNext(); index++) {
- expr = (Expression)i.next();
- types[index] = DataTypeManager.getDataTypeName(expr.getType());
- }
- return types;
- }
-
-}
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/validator/AggregateValidationVisitor.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/validator/AggregateValidationVisitor.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/validator/AggregateValidationVisitor.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -25,6 +25,7 @@
import java.util.Collection;
import java.util.Set;
+import com.metamatrix.common.types.DataTypeManager;
import com.metamatrix.query.QueryPlugin;
import com.metamatrix.query.sql.LanguageObject;
import com.metamatrix.query.sql.ReservedWords;
@@ -38,7 +39,6 @@
import com.metamatrix.query.sql.symbol.SearchedCaseExpression;
import com.metamatrix.query.sql.visitor.AggregateSymbolCollectorVisitor;
import com.metamatrix.query.sql.visitor.ElementCollectorVisitor;
-import com.metamatrix.query.sql.visitor.SQLStringVisitor;
import com.metamatrix.query.util.ErrorMessageKeys;
@@ -71,11 +71,12 @@
// Verify data type of aggregate expression
String aggregateFunction = obj.getAggregateFunction();
- if(aggregateFunction.equals(ReservedWords.SUM) || aggregateFunction.equals(ReservedWords.AVG)) {
- if(obj.getType() == null) {
- handleValidationError(QueryPlugin.Util.getString(ErrorMessageKeys.VALIDATOR_0041, new Object[] {aggregateFunction, SQLStringVisitor.getSQLString(obj)}), obj);
- }
- }
+ if((aggregateFunction.equals(ReservedWords.SUM) || aggregateFunction.equals(ReservedWords.AVG)) && obj.getType() == null) {
+ handleValidationError(QueryPlugin.Util.getString(ErrorMessageKeys.VALIDATOR_0041, new Object[] {aggregateFunction, obj}), obj);
+ }
+ if((aggregateFunction.equals(ReservedWords.MIN) || aggregateFunction.equals(ReservedWords.MAX)) && DataTypeManager.isNonComparable(DataTypeManager.getDataTypeName(aggExp.getType()))) {
+ handleValidationError(QueryPlugin.Util.getString("AggregateValidationVisitor.non_comparable", new Object[] {aggregateFunction, obj}), obj); //$NON-NLS-1$
+ }
validateBelow = false;
}
Modified: branches/JCA/engine/src/main/java/com/metamatrix/query/validator/ValidationVisitor.java
===================================================================
--- branches/JCA/engine/src/main/java/com/metamatrix/query/validator/ValidationVisitor.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/com/metamatrix/query/validator/ValidationVisitor.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -644,6 +644,17 @@
if(obj.getLimit() != null) {
handleValidationError(QueryPlugin.Util.getString("ValidationVisitor.limit_not_valid_for_xml"), obj); //$NON-NLS-1$
}
+ if (obj.getOrderBy() != null) {
+ OrderBy orderBy = obj.getOrderBy();
+ if (orderBy.hasUnrelated()) {
+ handleValidationError(QueryPlugin.Util.getString("ValidationVisitor.unrelated_orderby_xml"), obj); //$NON-NLS-1$
+ }
+ for (SingleElementSymbol ses : (List<SingleElementSymbol>)orderBy.getVariables()) {
+ if (!(ses instanceof ElementSymbol)) {
+ handleValidationError(QueryPlugin.Util.getString("ValidationVisitor.orderby_expression_xml"), obj); //$NON-NLS-1$
+ }
+ }
+ }
}
protected void validateGroupSupportsUpdate(GroupSymbol groupSymbol) {
Modified: branches/JCA/engine/src/main/java/org/teiid/dqp/internal/datamgr/impl/ConnectorManager.java
===================================================================
--- branches/JCA/engine/src/main/java/org/teiid/dqp/internal/datamgr/impl/ConnectorManager.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/org/teiid/dqp/internal/datamgr/impl/ConnectorManager.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -44,7 +44,9 @@
import org.teiid.connector.api.ConnectorEnvironment;
import org.teiid.connector.api.ConnectorException;
import org.teiid.connector.api.ExecutionContext;
-import org.teiid.connector.metadata.runtime.ConnectorMetadata;
+import org.teiid.connector.basic.WrappedConnection;
+import org.teiid.connector.metadata.runtime.MetadataFactory;
+import org.teiid.connector.metadata.runtime.MetadataStore;
import org.teiid.dqp.internal.cache.DQPContextCache;
import org.teiid.dqp.internal.cache.ResultSetCache;
import org.teiid.dqp.internal.datamgr.CapabilitiesConverter;
@@ -61,7 +63,6 @@
import com.metamatrix.core.log.MessageLevel;
import com.metamatrix.core.util.Assertion;
import com.metamatrix.dqp.DQPPlugin;
-import com.metamatrix.dqp.ResourceFinder;
import com.metamatrix.dqp.message.AtomicRequestID;
import com.metamatrix.dqp.message.AtomicRequestMessage;
import com.metamatrix.dqp.message.AtomicResultsMessage;
@@ -97,6 +98,8 @@
// known requests
private ConcurrentHashMap<AtomicRequestID, ConnectorWorkItem> requestStates = new ConcurrentHashMap<AtomicRequestID, ConnectorWorkItem>();
+
+ private SourceCapabilities cachedCapabilities;
public ConnectorManager(String name, WorkManager workManager) {
if (name == null) {
@@ -114,23 +117,33 @@
public String getName() {
return this.connectorName;
}
-
- public ConnectorMetadata getMetadata(String modelName) throws ConnectorException {
- Connection conn = null;
+
+ public MetadataStore getMetadata(String modelName, Properties importProperties) throws ConnectorException {
+ MetadataFactory factory;
+ try {
+ factory = new MetadataFactory(modelName, this.metadataService.getBuiltinDatatypes(), importProperties);
+ } catch (MetaMatrixComponentException e) {
+ throw new ConnectorException(e);
+ }
+
+ WrappedConnection conn = null;
try {
checkStatus();
- conn = getConnector().getConnection();
- return conn.getModelMetaData(modelName, this.metadataService.getBuiltinDatatypes());
- } catch(MetaMatrixComponentException e) {
- throw new ConnectorException(e);
+ conn = (WrappedConnection)getConnector().getConnection();
+ conn.getConnectorMetadata(factory);
} finally {
if (conn != null) {
conn.close();
}
- }
- }
+ }
+ return factory.getMetadataStore();
+ }
+
public SourceCapabilities getCapabilities() throws ConnectorException {
+ if (cachedCapabilities != null) {
+ return cachedCapabilities;
+ }
Connection conn = null;
try {
checkStatus();
@@ -144,7 +157,12 @@
}
BasicSourceCapabilities resultCaps = CapabilitiesConverter.convertCapabilities(caps, getName(), connector.getConnectorEnvironment().isXaCapable());
- resultCaps.setScope(global?Scope.SCOPE_GLOBAL:Scope.SCOPE_PER_USER);
+ if (global) {
+ resultCaps.setScope(Scope.SCOPE_GLOBAL);
+ cachedCapabilities = resultCaps;
+ } else {
+ resultCaps.setScope(Scope.SCOPE_PER_USER);
+ }
return resultCaps;
} finally {
if ( conn != null ) {
@@ -286,16 +304,11 @@
rsCacheProps.setProperty(ResultSetCache.RS_CACHE_MAX_SIZE, String.valueOf(connectorEnv.getResultSetCacheMaxSize()));
rsCacheProps.setProperty(ResultSetCache.RS_CACHE_MAX_AGE, String.valueOf(connectorEnv.getResultSetCacheMaxAge()));
rsCacheProps.setProperty(ResultSetCache.RS_CACHE_SCOPE, connectorEnv.getResultSetCacheScope());
- this.rsCache = createResultSetCache(rsCacheProps);
+ this.rsCache = new ResultSetCache(rsCacheProps, env.getCacheFactory());
}
this.workItemFactory = new ConnectorWorkItemFactory(this, this.rsCache, connectorEnv.isSynchWorkers());
this.state = ConnectorStatus.OPEN;
}
-
- protected ResultSetCache createResultSetCache(Properties rsCacheProps) {
- return new ResultSetCache(rsCacheProps, ResourceFinder.getCacheFactory());
- }
-
/**
* Stop this connector.
*/
Copied: branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/CachedFinder.java (from rev 1614, trunk/engine/src/main/java/org/teiid/dqp/internal/process/CachedFinder.java)
===================================================================
--- branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/CachedFinder.java (rev 0)
+++ branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/CachedFinder.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -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.dqp.internal.process;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import com.metamatrix.api.exception.MetaMatrixComponentException;
+import com.metamatrix.core.CoreConstants;
+import com.metamatrix.dqp.message.RequestMessage;
+import com.metamatrix.dqp.service.DataService;
+import com.metamatrix.dqp.service.VDBService;
+import com.metamatrix.query.optimizer.capabilities.BasicSourceCapabilities;
+import com.metamatrix.query.optimizer.capabilities.CapabilitiesFinder;
+import com.metamatrix.query.optimizer.capabilities.SourceCapabilities;
+
+/**
+ */
+public class CachedFinder implements CapabilitiesFinder {
+
+ private static BasicSourceCapabilities SYSTEM_CAPS = new BasicSourceCapabilities();
+
+ private DataService dataService;
+ private RequestMessage requestMessage;
+ private DQPWorkContext workContext;
+ private VDBService vdbService;
+
+ private Map<String, SourceCapabilities> userCache = new HashMap<String, SourceCapabilities>();
+
+ /**
+ * Construct a CacheFinder that wraps another finder
+ * @param internalFinder Finder to wrap
+ */
+ public CachedFinder(DataService dataService, VDBService vdbService, RequestMessage requestMessage, DQPWorkContext workContext) {
+ this.dataService = dataService;
+ this.requestMessage = requestMessage;
+ this.workContext = workContext;
+ this.vdbService = vdbService;
+ userCache.put(CoreConstants.SYSTEM_MODEL, SYSTEM_CAPS);
+ }
+
+ /**
+ * Find capabilities used the cache if possible, otherwise do the lookup.
+ */
+ public SourceCapabilities findCapabilities(String modelName) throws MetaMatrixComponentException {
+ SourceCapabilities caps = userCache.get(modelName);
+ if(caps != null) {
+ return caps;
+ }
+ List bindings = vdbService.getConnectorBindingNames(workContext.getVdbName(), workContext.getVdbVersion(), modelName);
+ for(int i=0; i<bindings.size(); i++) {
+ try {
+ String connBinding = (String) bindings.get(i);
+ caps = dataService.getCapabilities(connBinding);
+ }catch(MetaMatrixComponentException e) {
+ if(i == bindings.size()-1) {
+ throw e;
+ }
+ }
+ }
+ userCache.put(modelName, caps);
+ return caps;
+ }
+
+}
Modified: branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/CachedRequestWorkItem.java
===================================================================
--- branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/CachedRequestWorkItem.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/CachedRequestWorkItem.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -49,7 +49,7 @@
@Override
protected void processNew() throws MetaMatrixComponentException, MetaMatrixProcessingException {
request.initMetadata();
- request.validateEntitlement(originalCommand);
+ request.validateAccess(originalCommand);
this.request = null;
}
Modified: branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/DQPCore.java
===================================================================
--- branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/DQPCore.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/DQPCore.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -49,7 +49,7 @@
import com.metamatrix.api.exception.MetaMatrixComponentException;
import com.metamatrix.api.exception.MetaMatrixProcessingException;
import com.metamatrix.api.exception.query.QueryMetadataException;
-import com.metamatrix.common.application.Application;
+import com.metamatrix.cache.CacheFactory;
import com.metamatrix.common.application.ApplicationEnvironment;
import com.metamatrix.common.application.ApplicationService;
import com.metamatrix.common.application.DQPConfigSource;
@@ -65,9 +65,7 @@
import com.metamatrix.common.xa.XATransactionException;
import com.metamatrix.core.MetaMatrixRuntimeException;
import com.metamatrix.core.log.MessageLevel;
-import com.metamatrix.core.util.LRUCache;
import com.metamatrix.dqp.DQPPlugin;
-import com.metamatrix.dqp.ResourceFinder;
import com.metamatrix.dqp.client.ClientSideDQP;
import com.metamatrix.dqp.client.MetadataResult;
import com.metamatrix.dqp.client.ResultsFuture;
@@ -88,35 +86,45 @@
import com.metamatrix.dqp.service.VDBService;
import com.metamatrix.dqp.util.LogConstants;
import com.metamatrix.query.metadata.QueryMetadataInterface;
-import com.metamatrix.query.optimizer.capabilities.SourceCapabilities;
import com.metamatrix.query.processor.ProcessorDataManager;
import com.metamatrix.query.sql.lang.Command;
+import com.metamatrix.query.tempdata.TempTableStoreImpl;
import com.metamatrix.server.serverapi.RequestInfo;
-import com.metamatrix.vdb.runtime.VDBKey;
/**
* Implements the core DQP processing.
*/
@Singleton
-public class DQPCore extends Application implements ClientSideDQP {
+public class DQPCore implements ClientSideDQP {
- static class ConnectorCapabilitiesCache {
+ static class ClientState {
+ List<RequestID> requests;
+ TempTableStoreImpl tempTableStoreImpl;
- private Map<VDBKey, Map<String, SourceCapabilities>> cache = new LRUCache<VDBKey, Map<String, SourceCapabilities>>(1000);
+ public ClientState(TempTableStoreImpl tableStoreImpl) {
+ this.tempTableStoreImpl = tableStoreImpl;
+ }
- Map<String, SourceCapabilities> getVDBConnectorCapabilities(
- DQPWorkContext workContext) {
- VDBKey key = new VDBKey(workContext.getVdbName(), workContext.getVdbVersion());
- Map<String, SourceCapabilities> vdbCapabilties = null;
- synchronized (this.cache) {
- vdbCapabilties = cache.get(key);
- if (vdbCapabilties == null) {
- vdbCapabilties = new ConcurrentHashMap<String, SourceCapabilities>();
- this.cache.put(key, vdbCapabilties);
- }
+ public synchronized void addRequest(RequestID requestID) {
+ if (requests == null) {
+ requests = new LinkedList<RequestID>();
}
- return vdbCapabilties;
+ requests.add(requestID);
}
+
+ public synchronized List<RequestID> getRequests() {
+ if (requests == null) {
+ return Collections.emptyList();
+ }
+ return new ArrayList<RequestID>(requests);
+ }
+
+ public synchronized void removeRequest(RequestID requestID) {
+ if (requests != null) {
+ requests.remove(requestID);
+ }
+ }
+
}
@Inject @Named("TeiidWorkManager")
@@ -142,7 +150,6 @@
private int maxFetchSize = DEFAULT_FETCH_SIZE;
// Resources
- private ConnectorCapabilitiesCache connectorCapabilitiesCache = new ConnectorCapabilitiesCache();
private BufferManager bufferManager;
private ProcessorDataManager dataTierMgr;
private PreparedPlanCache prepPlanCache;
@@ -154,51 +161,61 @@
private int processorTimeslice = DEFAULT_PROCESSOR_TIMESLICE;
private boolean processorDebugAllowed;
- private TempTableStoresHolder tempTableStoresHolder;
private int chunkSize = 0;
- private Map<RequestID, RequestWorkItem> requests = Collections.synchronizedMap(new HashMap<RequestID, RequestWorkItem>());
- private Map<String, List<RequestID>> requestsByClients = Collections.synchronizedMap(new HashMap<String, List<RequestID>>());
+ private Map<RequestID, RequestWorkItem> requests = new ConcurrentHashMap<RequestID, RequestWorkItem>();
+ private Map<String, ClientState> clientState = Collections.synchronizedMap(new HashMap<String, ClientState>());
private DQPContextCache contextCache;
private ServiceLoader loader = new ServiceLoader();
+ private CacheFactory cacheFactory;
+
+ private ApplicationEnvironment environment = new ApplicationEnvironment();
/**
* perform a full shutdown and wait for 10 seconds for all threads to finish
* @throws ApplicationLifecycleException
*/
- @Override
public void stop() throws ApplicationLifecycleException {
LogManager.logDetail(LogConstants.CTX_DQP, "Stopping the DQP"); //$NON-NLS-1$
contextCache.shutdown();
- super.stop();
+ this.environment.stop();
+
+ if (cacheFactory != null) {
+ cacheFactory.destroy();
+ }
}
/**
* Return a list of {@link RequestInfo} for the given session
*/
public List<RequestInfo> getRequestsByClient(String clientConnection) {
- List<RequestID> ids = this.requestsByClients.get(clientConnection);
-
- return buildRequestInfos(ids);
+ ClientState state = getClientState(clientConnection, false);
+ if (state == null) {
+ return Collections.emptyList();
+ }
+ return buildRequestInfos(state.getRequests());
}
+
+ public ClientState getClientState(String key, boolean create) {
+ synchronized (clientState) {
+ ClientState state = clientState.get(key);
+ if (state == null && create) {
+ state = new ClientState(new TempTableStoreImpl(bufferManager, key, null));
+ clientState.put(key, state);
+ }
+ return state;
+ }
+ }
/**
* Return a list of all {@link RequestInfo}
*/
public List<RequestInfo> getRequests() {
- List<RequestID> copies = null;
- synchronized(requests) {
- copies = new ArrayList<RequestID>(requests.keySet());
- }
-
- return buildRequestInfos(copies);
+ return buildRequestInfos(requests.keySet());
}
- private List<RequestInfo> buildRequestInfos(List<RequestID> ids) {
- if(ids == null) {
- return Collections.emptyList();
- }
+ private List<RequestInfo> buildRequestInfos(Collection<RequestID> ids) {
List<RequestInfo> results = new ArrayList<RequestInfo>();
for (RequestID requestID : ids) {
RequestWorkItem holder = requests.get(requestID);
@@ -237,7 +254,6 @@
DQPWorkContext workContext = DQPWorkContext.getWorkContext();
RequestID requestID = workContext.getRequestID(reqID);
requestMsg.markProcessingStart();
- Map<String, SourceCapabilities> vdbCapabilties = this.connectorCapabilitiesCache.getVDBConnectorCapabilities(workContext);
requestMsg.setFetchSize(Math.min(requestMsg.getFetchSize(), maxFetchSize));
Request request = null;
if ( requestMsg.isPreparedStatement() || requestMsg.isCallableStatement()) {
@@ -245,11 +261,11 @@
} else {
request = new Request();
}
- request.initialize(requestMsg, getEnvironment(), bufferManager,
- dataTierMgr, vdbCapabilties, transactionService,
- processorDebugAllowed, this.tempTableStoresHolder
- .getTempTableStore(workContext.getConnectionID()),
- workContext, chunkSize);
+ ClientState state = this.getClientState(workContext.getConnectionID(), true);
+ request.initialize(requestMsg, environment, bufferManager,
+ dataTierMgr, transactionService, processorDebugAllowed,
+ state.tempTableStoreImpl, workContext,
+ chunkSize);
RequestWorkItem workItem = null;
@@ -270,7 +286,7 @@
}
logMMCommand(workItem, true, false, 0);
- addRequest(requestID, workItem);
+ addRequest(requestID, workItem, state);
this.addWork(workItem);
return resultsFuture;
@@ -288,26 +304,17 @@
return resultsFuture;
}
- void addRequest(RequestID requestID, RequestWorkItem workItem) {
+ void addRequest(RequestID requestID, RequestWorkItem workItem, ClientState state) {
this.requests.put(requestID, workItem);
- synchronized (requestsByClients) {
- List<RequestID> clientRequests = this.requestsByClients.get(workItem.getDqpWorkContext().getConnectionID());
- if (clientRequests == null) {
- clientRequests = new LinkedList<RequestID>();
- this.requestsByClients.put(workItem.getDqpWorkContext().getConnectionID(), clientRequests);
- }
- clientRequests.add(requestID);
- }
+ state.addRequest(requestID);
}
void removeRequest(final RequestWorkItem workItem) {
this.requests.remove(workItem.requestID);
- synchronized (requestsByClients) {
- List<RequestID> clientRequests = this.requestsByClients.get(workItem.getDqpWorkContext().getConnectionID());
- if (clientRequests != null) {
- clientRequests.remove(workItem.requestID);
- }
- }
+ ClientState state = getClientState(workItem.getDqpWorkContext().getConnectionID(), false);
+ if (state != null) {
+ state.removeRequest(workItem.requestID);
+ }
contextCache.removeRequestScopedCache(workItem.requestID.toString());
}
@@ -411,12 +418,9 @@
// sometimes there will not be any atomic requests pending, in that
// situation we still need to clear the master request from our map
- List<RequestID> requestIds = requestsByClients.get(sessionId);
- if (requestIds != null) {
- synchronized (requestsByClients) {
- requestIds = new ArrayList<RequestID>(requestIds);
- }
- for (RequestID reqId : requestIds) {
+ ClientState state = getClientState(sessionId, false);
+ if (state != null) {
+ for (RequestID reqId : state.getRequests()) {
try {
cancelRequest(reqId);
} catch (MetaMatrixComponentException err) {
@@ -608,11 +612,11 @@
}
appService.initialize(configSource.getProperties());
- installService(serviceName, appService);
+ this.environment.installService(serviceName, appService);
LogManager.logInfo(LogConstants.CTX_DQP, DQPPlugin.Util.getString("DQPLauncher.InstallService_ServiceInstalled", serviceName)); //$NON-NLS-1$
}
- ConfigurationService cs = (ConfigurationService)this.getEnvironment().findService(DQPServiceNames.CONFIGURATION_SERVICE);
+ ConfigurationService cs = (ConfigurationService)this.environment.findService(DQPServiceNames.CONFIGURATION_SERVICE);
Properties p = configSource.getProperties();
if (cs != null) {
p = cs.getSystemProperties();
@@ -622,8 +626,6 @@
public void start(Properties props) {
- ApplicationEnvironment env = this.getEnvironment();
-
PropertiesUtils.setBeanProperties(this, props, null);
this.processorTimeslice = PropertiesUtils.getIntProperty(props, DQPEmbeddedProperties.PROCESS_TIMESLICE, DEFAULT_PROCESSOR_TIMESLICE);
@@ -641,7 +643,7 @@
rsCacheProps.setProperty(ResultSetCache.RS_CACHE_MAX_SIZE, props.getProperty(DQPEmbeddedProperties.MAX_RESULTSET_CACHE_SIZE, DEFAULT_MAX_RESULTSET_CACHE_SIZE));
rsCacheProps.setProperty(ResultSetCache.RS_CACHE_MAX_AGE, props.getProperty(DQPEmbeddedProperties.MAX_RESULTSET_CACHE_AGE, DEFAULT_MAX_RESULTSET_CACHE_AGE));
rsCacheProps.setProperty(ResultSetCache.RS_CACHE_SCOPE, props.getProperty(DQPEmbeddedProperties.RESULTSET_CACHE_SCOPE, ResultSetCache.RS_CACHE_SCOPE_VDB));
- this.rsCache = new ResultSetCache(rsCacheProps, ResourceFinder.getCacheFactory());
+ this.rsCache = new ResultSetCache(rsCacheProps, cacheFactory);
}
//prepared plan cache
@@ -652,21 +654,20 @@
LogManager.logInfo(LogConstants.CTX_DQP, DQPPlugin.Util.getString("DQPCore.Processor_debug_allowed_{0}", this.processorDebugAllowed)); //$NON-NLS-1$
//get buffer manager
- BufferService bufferService = (BufferService) env.findService(DQPServiceNames.BUFFER_SERVICE);
+ BufferService bufferService = (BufferService) this.environment.findService(DQPServiceNames.BUFFER_SERVICE);
bufferManager = bufferService.getBufferManager();
contextCache = bufferService.getContextCache();
- transactionService = (TransactionService )env.findService(DQPServiceNames.TRANSACTION_SERVICE);
- metadataService = (MetadataService) env.findService(DQPServiceNames.METADATA_SERVICE);
+ transactionService = (TransactionService )this.environment.findService(DQPServiceNames.TRANSACTION_SERVICE);
+ metadataService = (MetadataService) this.environment.findService(DQPServiceNames.METADATA_SERVICE);
this.processWorkerPool = new StatsCapturingWorkManager(PROCESS_PLAN_QUEUE_NAME, this.workManager, PropertiesUtils.getIntProperty(props, DQPEmbeddedProperties.PROCESS_POOL_MAX_THREADS, DEFAULT_MAX_PROCESS_WORKERS));
- tempTableStoresHolder = new TempTableStoresHolder(bufferManager);
-
dataTierMgr = new DataTierManagerImpl(this,
- (DataService) env.findService(DQPServiceNames.DATA_SERVICE),
- (VDBService) env.findService(DQPServiceNames.VDB_SERVICE),
- (BufferService) env.findService(DQPServiceNames.BUFFER_SERVICE),
+ (DataService) this.environment.findService(DQPServiceNames.DATA_SERVICE),
+ (VDBService) this.environment.findService(DQPServiceNames.VDB_SERVICE),
+ (BufferService) this.environment.findService(DQPServiceNames.BUFFER_SERVICE),
+ metadataService,
this.maxCodeTables,
this.maxCodeRecords,
this.maxCodeTableRecords);
@@ -742,7 +743,7 @@
public MetadataResult getMetadata(long requestID)
throws MetaMatrixComponentException, MetaMatrixProcessingException {
DQPWorkContext workContext = DQPWorkContext.getWorkContext();
- MetaDataProcessor processor = new MetaDataProcessor(this.metadataService, this, this.prepPlanCache, getEnvironment(), this.tempTableStoresHolder);
+ MetaDataProcessor processor = new MetaDataProcessor(this.metadataService, this, this.prepPlanCache, this.environment);
return processor.processMessage(workContext.getRequestID(requestID), workContext, null, true);
}
@@ -750,7 +751,21 @@
boolean allowDoubleQuotedVariable)
throws MetaMatrixComponentException, MetaMatrixProcessingException {
DQPWorkContext workContext = DQPWorkContext.getWorkContext();
- MetaDataProcessor processor = new MetaDataProcessor(this.metadataService, this, this.prepPlanCache, getEnvironment(), this.tempTableStoresHolder);
+ MetaDataProcessor processor = new MetaDataProcessor(this.metadataService, this, this.prepPlanCache, this.environment);
return processor.processMessage(workContext.getRequestID(requestID), workContext, preparedSql, allowDoubleQuotedVariable);
}
+
+ public ApplicationEnvironment getEnvironment() {
+ return environment;
+ }
+
+ @Inject
+ public void setCacheFactory(CacheFactory cacheFactory) {
+ this.cacheFactory = cacheFactory;
+ this.environment.setCacheFactory(cacheFactory);
+ }
+
+ public void setEnvironment(ApplicationEnvironment environment) {
+ this.environment = environment;
+ }
}
\ No newline at end of file
Modified: branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/DataTierManagerImpl.java
===================================================================
--- branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/DataTierManagerImpl.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/DataTierManagerImpl.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -22,11 +22,31 @@
package org.teiid.dqp.internal.process;
+import java.sql.DatabaseMetaData;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
+import java.util.LinkedHashSet;
import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import javax.sql.rowset.serial.SerialBlob;
+import javax.sql.rowset.serial.SerialClob;
+
+import org.teiid.connector.metadata.runtime.AbstractMetadataRecord;
+import org.teiid.connector.metadata.runtime.Column;
+import org.teiid.connector.metadata.runtime.Datatype;
+import org.teiid.connector.metadata.runtime.ForeignKey;
+import org.teiid.connector.metadata.runtime.KeyRecord;
+import org.teiid.connector.metadata.runtime.ProcedureParameter;
+import org.teiid.connector.metadata.runtime.ProcedureRecordImpl;
+import org.teiid.connector.metadata.runtime.Schema;
+import org.teiid.connector.metadata.runtime.Table;
import org.teiid.dqp.internal.process.CodeTableCache.CacheKey;
+import org.teiid.metadata.CompositeMetadataStore;
import com.metamatrix.api.exception.MetaMatrixComponentException;
import com.metamatrix.api.exception.MetaMatrixProcessingException;
@@ -35,6 +55,8 @@
import com.metamatrix.common.buffer.TupleSource;
import com.metamatrix.common.comm.api.ResultsReceiver;
import com.metamatrix.common.log.LogManager;
+import com.metamatrix.common.vdb.api.ModelInfo;
+import com.metamatrix.core.CoreConstants;
import com.metamatrix.core.util.Assertion;
import com.metamatrix.dqp.DQPPlugin;
import com.metamatrix.dqp.embedded.DQPEmbeddedProperties;
@@ -45,33 +67,93 @@
import com.metamatrix.dqp.message.RequestMessage;
import com.metamatrix.dqp.service.BufferService;
import com.metamatrix.dqp.service.DataService;
+import com.metamatrix.dqp.service.MetadataService;
import com.metamatrix.dqp.service.VDBService;
import com.metamatrix.dqp.util.LogConstants;
+import com.metamatrix.metadata.runtime.api.MetadataSourceUtil;
import com.metamatrix.query.processor.ProcessorDataManager;
import com.metamatrix.query.processor.QueryProcessor;
import com.metamatrix.query.sql.ReservedWords;
import com.metamatrix.query.sql.lang.Command;
+import com.metamatrix.query.sql.lang.Query;
+import com.metamatrix.query.sql.lang.StoredProcedure;
+import com.metamatrix.query.sql.lang.UnaryFromClause;
+import com.metamatrix.query.sql.symbol.GroupSymbol;
+import com.metamatrix.query.sql.symbol.SingleElementSymbol;
import com.metamatrix.query.util.CommandContext;
public class DataTierManagerImpl implements ProcessorDataManager {
+
+ private enum SystemTables {
+ VIRTUALDATABASES,
+ SCHEMAS,
+ TABLES,
+ DATATYPES,
+ COLUMNS,
+ KEYS,
+ PROCEDURES,
+ KEYCOLUMNS,
+ PROCEDUREPARAMS,
+ REFERENCEKEYCOLUMNS,
+ PROPERTIES
+ }
+
+ private enum SystemProcs {
+ GETCHARACTERVDBRESOURCE,
+ GETBINARYVDBRESOURCE,
+ GETVDBRESOURCEPATHS
+ }
+
+ private class CollectionTupleSource implements TupleSource {
+
+ private Iterator<List<Object>> tuples;
+ private List<SingleElementSymbol> schema;
+
+ public CollectionTupleSource(Iterator<List<Object>> tuples,
+ List<SingleElementSymbol> schema) {
+ this.tuples = tuples;
+ this.schema = schema;
+ }
+ @Override
+ public List<?> nextTuple() throws MetaMatrixComponentException,
+ MetaMatrixProcessingException {
+ if (tuples.hasNext()) {
+ return tuples.next();
+ }
+ return null;
+ }
+
+ @Override
+ public List<SingleElementSymbol> getSchema() {
+ return schema;
+ }
+
+ @Override
+ public void closeSource() throws MetaMatrixComponentException {
+
+ }
+ }
+
// Resources
private DQPCore requestMgr;
private DataService dataService;
private VDBService vdbService;
private BufferService bufferService;
+ private MetadataService metadataService;
// Processor state
private CodeTableCache codeTableCache;
public DataTierManagerImpl(DQPCore requestMgr,
- DataService dataService, VDBService vdbService, BufferService bufferService,
+ DataService dataService, VDBService vdbService, BufferService bufferService, MetadataService metadataService,
int maxCodeTables, int maxCodeRecords, int maxCodeTableRecords) {
this.requestMgr = requestMgr;
this.dataService = dataService;
this.vdbService = vdbService;
this.bufferService = bufferService;
+ this.metadataService = metadataService;
this.codeTableCache = new CodeTableCache(maxCodeTables, maxCodeRecords, maxCodeTableRecords);
}
@@ -79,12 +161,199 @@
public TupleSource registerRequest(Object processorId, Command command,
String modelName, String connectorBindingId, int nodeID) throws MetaMatrixComponentException, MetaMatrixProcessingException {
RequestWorkItem workItem = requestMgr.getRequestWorkItem((RequestID)processorId);
+
+ if(CoreConstants.SYSTEM_MODEL.equals(modelName)) {
+ return processSystemQuery(command, workItem);
+ }
+
AtomicRequestMessage aqr = createRequest(processorId, command, modelName, connectorBindingId, nodeID);
DataTierTupleSource tupleSource = new DataTierTupleSource(aqr.getCommand().getProjectedSymbols(), aqr, this, aqr.getConnectorName(), workItem);
tupleSource.open();
return tupleSource;
}
+ /**
+ * TODO: it would be good if processing here was lazy, in response of next batch, rather than up front.
+ * @param command
+ * @param workItem
+ * @return
+ * @throws MetaMatrixComponentException
+ */
+ @SuppressWarnings("unchecked")
+ private TupleSource processSystemQuery(Command command,
+ RequestWorkItem workItem) throws MetaMatrixComponentException {
+ String vdbName = workItem.getDqpWorkContext().getVdbName();
+ String vdbVersion = workItem.getDqpWorkContext().getVdbVersion();
+ CompositeMetadataStore metadata = this.metadataService.getMetadataObjectSource(vdbName, vdbVersion);
+ Collection rows = new ArrayList();
+ if (command instanceof Query) {
+ Query query = (Query)command;
+ UnaryFromClause ufc = (UnaryFromClause)query.getFrom().getClauses().get(0);
+ GroupSymbol group = ufc.getGroup();
+ final SystemTables sysTable = SystemTables.valueOf(group.getNonCorrelationName().substring(CoreConstants.SYSTEM_MODEL.length() + 1).toUpperCase());
+ switch (sysTable) {
+ case DATATYPES:
+ rows = new LinkedHashSet(); //System types are duplicated in each indexed vdb...
+ for (Datatype datatype : metadata.getDatatypes()) {
+ rows.add(Arrays.asList(datatype.getName(), datatype.isBuiltin(), datatype.isBuiltin(), datatype.getName(), datatype.getJavaClassName(), datatype.getScale(),
+ datatype.getLength(), datatype.getNullType().toString(), datatype.isSigned(), datatype.isAutoIncrement(), datatype.isCaseSensitive(), datatype.getPrecisionLength(),
+ datatype.getRadix(), datatype.getSearchType().toString(), datatype.getUUID(), datatype.getRuntimeTypeName(), datatype.getBasetypeName(), datatype.getAnnotation()));
+ }
+ break;
+ case VIRTUALDATABASES:
+ rows.add(Arrays.asList(vdbName, vdbVersion));
+ break;
+ case SCHEMAS:
+ for (Schema model : getVisibleSchemas(vdbName, vdbVersion, metadata)) {
+ rows.add(Arrays.asList(vdbName, model.getName(), model.isPhysical(), model.getUUID(), model.getAnnotation(), model.getPrimaryMetamodelUri()));
+ }
+ break;
+ case PROCEDURES:
+ for (Schema schema : getVisibleSchemas(vdbName, vdbVersion, metadata)) {
+ for (ProcedureRecordImpl proc : schema.getProcedures().values()) {
+ rows.add(Arrays.asList(vdbName, proc.getSchema().getName(), proc.getName(), proc.getNameInSource(), proc.getResultSet() != null, proc.getUUID(), proc.getAnnotation()));
+ }
+ }
+ break;
+ case PROCEDUREPARAMS:
+ for (Schema schema : getVisibleSchemas(vdbName, vdbVersion, metadata)) {
+ for (ProcedureRecordImpl proc : schema.getProcedures().values()) {
+ for (ProcedureParameter param : proc.getParameters()) {
+ rows.add(Arrays.asList(vdbName, proc.getSchema().getName(), proc.getName(), param.getName(), param.getDatatype().getRuntimeTypeName(), param.getPosition(), param.getType().toString(), param.isOptional(),
+ param.getPrecision(), param.getLength(), param.getScale(), param.getRadix(), param.getNullType().toString(), param.getUUID()));
+ }
+ if (proc.getResultSet() != null) {
+ for (Column param : proc.getResultSet().getColumns()) {
+ rows.add(Arrays.asList(vdbName, proc.getSchema().getName(), proc.getName(), param.getName(), param.getDatatype().getRuntimeTypeName(), param.getPosition(), ProcedureParameter.Type.ResultSet.toString(), false,
+ param.getPrecision(), param.getLength(), param.getScale(), param.getRadix(), param.getNullType().toString(), param.getUUID()));
+ }
+ }
+ }
+ }
+ break;
+ case PROPERTIES: //TODO: consider storing separately in the metadatastore
+ Collection<AbstractMetadataRecord> records = new LinkedHashSet<AbstractMetadataRecord>();
+ records.addAll(metadata.getDatatypes());
+ for (Schema schema : getVisibleSchemas(vdbName, vdbVersion, metadata)) {
+ records.add(schema);
+ records.addAll(schema.getTables().values());
+ for (Table table : schema.getTables().values()) {
+ records.add(table);
+ records.addAll(table.getColumns());
+ records.addAll(table.getAllKeys());
+ }
+ for (ProcedureRecordImpl proc : schema.getProcedures().values()) {
+ records.add(proc);
+ records.addAll(proc.getParameters());
+ if (proc.getResultSet() != null) {
+ records.addAll(proc.getResultSet().getColumns());
+ }
+ }
+ }
+ for (AbstractMetadataRecord record : records) {
+ for (Map.Entry<String, String> entry : record.getProperties().entrySet()) {
+ rows.add(Arrays.asList(entry.getKey(), entry.getValue(), record.getUUID()));
+ }
+ }
+ break;
+ default:
+ for (Schema schema : getVisibleSchemas(vdbName, vdbVersion, metadata)) {
+ for (Table table : schema.getTables().values()) {
+ switch (sysTable) {
+ case TABLES:
+ rows.add(Arrays.asList(vdbName, schema.getName(), table.getName(), table.getTableType().toString(), table.getNameInSource(),
+ table.isPhysical(), table.supportsUpdate(), table.getUUID(), table.getCardinality(), table.getAnnotation(), table.isSystem(), table.isMaterialized()));
+ break;
+ case COLUMNS:
+ for (Column column : table.getColumns()) {
+ if (column.getDatatype() == null) {
+ continue; //some mapping classes don't set the datatype
+ }
+ rows.add(Arrays.asList(vdbName, schema.getName(), table.getName(), column.getName(), column.getPosition(), column.getNameInSource(),
+ column.getDatatype().getRuntimeTypeName(), column.getScale(), column.getLength(), column.isFixedLength(), column.isSelectable(), column.isUpdatable(),
+ column.isCaseSensitive(), column.isSigned(), column.isCurrency(), column.isAutoIncrementable(), column.getNullType().toString(), column.getMinValue(),
+ column.getMaxValue(), column.getSearchType().toString(), column.getFormat(), column.getDefaultValue(), column.getDatatype().getJavaClassName(), column.getPrecision(),
+ column.getCharOctetLength(), column.getRadix(), column.getUUID(), column.getAnnotation()));
+ }
+ break;
+ case KEYS:
+ for (KeyRecord key : table.getAllKeys()) {
+ rows.add(Arrays.asList(vdbName, table.getSchema().getName(), table.getName(), key.getName(), key.getAnnotation(), key.getNameInSource(), key.getType().toString(),
+ false, (key instanceof ForeignKey)?((ForeignKey)key).getUniqueKeyID():null, key.getUUID()));
+ }
+ break;
+ case KEYCOLUMNS:
+ for (KeyRecord key : table.getAllKeys()) {
+ int postition = 1;
+ for (Column column : key.getColumns()) {
+ rows.add(Arrays.asList(vdbName, schema.getName(), table.getName(), column.getName(), key.getName(), key.getType().toString(),
+ (key instanceof ForeignKey)?((ForeignKey)key).getUniqueKeyID():null, key.getUUID(), postition++));
+ }
+ }
+ break;
+ case REFERENCEKEYCOLUMNS:
+ for (ForeignKey key : table.getForeignKeys()) {
+ int postition = 0;
+ for (Column column : key.getColumns()) {
+ Table pkTable = key.getPrimaryKey().getTable();
+ rows.add(Arrays.asList(vdbName, pkTable.getSchema().getName(), pkTable.getName(), key.getPrimaryKey().getColumns().get(postition).getName(), vdbName, schema.getName(), table.getName(), column.getName(),
+ ++postition, (short)DatabaseMetaData.importedKeyNoAction, (short)DatabaseMetaData.importedKeyNoAction, key.getName(), key.getPrimaryKey().getName(), (short)DatabaseMetaData.importedKeyInitiallyDeferred));
+ }
+ }
+ break;
+ }
+ }
+ }
+ break;
+ }
+ } else {
+ StoredProcedure proc = (StoredProcedure)command;
+ final SystemProcs sysTable = SystemProcs.valueOf(proc.getProcedureCallableName().substring(CoreConstants.SYSTEM_MODEL.length() + 1).toUpperCase());
+ switch (sysTable) {
+ case GETVDBRESOURCEPATHS:
+ Set<String> filePaths = metadata.getMetadataSource().getEntries();
+ for (String filePath : filePaths) {
+ if (vdbService.getFileVisibility(vdbName, vdbVersion, filePath) != ModelInfo.PUBLIC) {
+ continue;
+ }
+ rows.add(Arrays.asList(filePath, filePath.endsWith(".INDEX"))); //$NON-NLS-1$
+ }
+ break;
+ case GETBINARYVDBRESOURCE:
+ String filePath = (String)proc.getParameter(0).getValue();
+ if (metadata.getMetadataSource().getEntries().contains(filePath) && vdbService.getFileVisibility(vdbName, vdbVersion, filePath) == ModelInfo.PUBLIC) {
+ try {
+ rows.add(Arrays.asList(new SerialBlob(MetadataSourceUtil.getFileContentAsString(filePath, metadata.getMetadataSource()).getBytes())));
+ } catch (SQLException e) {
+ throw new MetaMatrixComponentException(e);
+ }
+ }
+ break;
+ case GETCHARACTERVDBRESOURCE:
+ filePath = (String)proc.getParameter(0).getValue();
+ if (metadata.getMetadataSource().getEntries().contains(filePath) && vdbService.getFileVisibility(vdbName, vdbVersion, filePath) == ModelInfo.PUBLIC) {
+ try {
+ rows.add(Arrays.asList(new SerialClob(MetadataSourceUtil.getFileContentAsString(filePath, metadata.getMetadataSource()).toCharArray())));
+ } catch (SQLException e) {
+ throw new MetaMatrixComponentException(e);
+ }
+ }
+ break;
+ }
+ }
+ return new CollectionTupleSource(rows.iterator(), command.getProjectedSymbols());
+ }
+
+ private List<Schema> getVisibleSchemas(String vdbName, String vdbVersion, CompositeMetadataStore metadata) throws MetaMatrixComponentException {
+ ArrayList<Schema> result = new ArrayList<Schema>();
+ for (Schema schema : metadata.getSchemas().values()) {
+ if(vdbService.getModelVisibility(vdbName, vdbVersion, schema.getName()) == ModelInfo.PUBLIC) {
+ result.add(schema);
+ }
+ }
+ return result;
+ }
+
private AtomicRequestMessage createRequest(Object processorId,
Command command, String modelName, String connectorBindingId, int nodeID)
throws MetaMatrixProcessingException, MetaMatrixComponentException {
Modified: branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/MetaDataProcessor.java
===================================================================
--- branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/MetaDataProcessor.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/MetaDataProcessor.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -29,6 +29,7 @@
import java.util.List;
import java.util.Map;
+import org.teiid.dqp.internal.process.DQPCore.ClientState;
import org.teiid.dqp.internal.process.PreparedPlanCache.CacheID;
import org.teiid.dqp.internal.process.multisource.MultiSourceMetadataWrapper;
@@ -80,17 +81,15 @@
private PreparedPlanCache planCache;
private ApplicationEnvironment env;
- private TempTableStoresHolder tempTableStoresHolder;
private String vdbName;
private String vdbVersion;
private RequestID requestID;
- public MetaDataProcessor(MetadataService metadataService, DQPCore requestManager, PreparedPlanCache planCache, ApplicationEnvironment env, TempTableStoresHolder tempTableStoresHolder) {
+ public MetaDataProcessor(MetadataService metadataService, DQPCore requestManager, PreparedPlanCache planCache, ApplicationEnvironment env) {
this.metadataService = metadataService;
this.requestManager = requestManager;
this.planCache = planCache;
this.env = env;
- this.tempTableStoresHolder = tempTableStoresHolder;
}
/**
@@ -108,9 +107,7 @@
this.vdbName = workContext.getVdbName();
this.vdbVersion = workContext.getVdbVersion();
- QueryMetadataInterface md = metadataService.lookupMetadata(vdbName, vdbVersion);
- // Defect 15029 - Use the QueryMetadataWrapper to hide models with private visibility when resolving the command.
- this.metadata = new QueryMetadataWrapper(md, vdbName, vdbVersion, vdbService);
+ this.metadata = metadataService.lookupMetadata(vdbName, vdbVersion);
// If multi-source, use the multi-source wrapper as well
Collection multiModels = vdbService.getMultiSourceModels(vdbName, vdbVersion);
@@ -128,9 +125,12 @@
}
TempTableStore tempTableStore = null;
- if(tempTableStoresHolder != null) {
+ if(requestManager != null) {
if (workItem != null) {
- tempTableStore = tempTableStoresHolder.getTempTableStore(workContext.getConnectionID());
+ ClientState state = requestManager.getClientState(workContext.getConnectionID(), false);
+ if (state != null) {
+ tempTableStore = state.tempTableStoreImpl;
+ }
}
}
if(tempTableStore != null) {
@@ -213,7 +213,7 @@
ParseInfo info = new ParseInfo();
// Defect 19747 - the parser needs the following connection property to decide whether to treat double-quoted strings as variable names
- info.allowDoubleQuotedVariable = isDoubleQuotedVariablesAllowed;
+ info.ansiQuotedIdentifiers = isDoubleQuotedVariablesAllowed;
CacheID id = new PreparedPlanCache.CacheID(workContext, info, sql);
PreparedPlanCache.PreparedPlan plan = planCache.getPreparedPlan(id);
if(plan != null) {
Deleted: branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/QueryMetadataWrapper.java
===================================================================
--- branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/QueryMetadataWrapper.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/QueryMetadataWrapper.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,88 +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.dqp.internal.process;
-
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-
-import com.metamatrix.api.exception.MetaMatrixComponentException;
-import com.metamatrix.api.exception.query.QueryMetadataException;
-import com.metamatrix.common.vdb.api.ModelInfo;
-import com.metamatrix.dqp.service.VDBService;
-import com.metamatrix.query.metadata.QueryMetadataInterface;
-import com.metamatrix.query.metadata.BasicQueryMetadataWrapper;
-
-/**
- * This classs is a proxy to QueryMetadataInterface. It knows VDBService
- * and VNB name.
- */
-public class QueryMetadataWrapper extends BasicQueryMetadataWrapper{
- private String vdbName;
- private String vdbVersion;
- private VDBService vdbService;
-
- public QueryMetadataWrapper(QueryMetadataInterface actualMetadata, String vdbName, String vdbVersion, VDBService vdbService){
- super(actualMetadata);
- this.vdbName = vdbName;
- this.vdbService = vdbService;
- this.vdbVersion = vdbVersion;
- }
-
- protected QueryMetadataInterface getActualMetadata() {
- return this.actualMetadata;
- }
- protected String getVdbName() {
- return this.vdbName;
- }
- protected VDBService getVdbService() {
- return this.vdbService;
- }
- protected String getVdbVersion() {
- return this.vdbVersion;
- }
-
- /**
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getGroupsForPartialName(java.lang.String)
- */
- public Collection getGroupsForPartialName(String partialGroupName) throws MetaMatrixComponentException, QueryMetadataException {
- Collection result = actualMetadata.getGroupsForPartialName(partialGroupName);
- if(result == null || result.isEmpty()){
- return result;
- }
- Collection filteredResult = new HashSet();
- Iterator iter = result.iterator();
- while(iter.hasNext()){
- String groupName = (String)iter.next();
- Object groupID = actualMetadata.getGroupID(groupName);
- Object modelID = actualMetadata.getModelID(groupID);
- String modelName = actualMetadata.getFullName(modelID);
- int visibility = vdbService.getModelVisibility(vdbName, vdbVersion, modelName);
- if(visibility == ModelInfo.PUBLIC){
- filteredResult.add(groupName);
- }
- }
- return filteredResult;
- }
-
-}
Modified: branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/Request.java
===================================================================
--- branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/Request.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/Request.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -27,17 +27,13 @@
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
-import java.util.Map;
import java.util.Properties;
import java.util.Set;
-import org.teiid.dqp.internal.process.capabilities.ConnectorCapabilitiesFinder;
-import org.teiid.dqp.internal.process.capabilities.SharedCachedFinder;
import org.teiid.dqp.internal.process.multisource.MultiSourceCapabilitiesFinder;
import org.teiid.dqp.internal.process.multisource.MultiSourceMetadataWrapper;
import org.teiid.dqp.internal.process.multisource.MultiSourcePlanToProcessConverter;
import org.teiid.dqp.internal.process.validator.AuthorizationValidationVisitor;
-import org.teiid.dqp.internal.process.validator.ModelVisibilityValidationVisitor;
import com.metamatrix.api.exception.MetaMatrixComponentException;
import com.metamatrix.api.exception.MetaMatrixProcessingException;
@@ -121,7 +117,6 @@
private TempTableStore tempTableStore;
protected IDGenerator idGenerator = new IDGenerator();
private boolean procDebugAllowed = false;
- private Map connectorCapabilitiesCache;
DQPWorkContext workContext;
RequestID requestId;
@@ -150,7 +145,6 @@
ApplicationEnvironment env,
BufferManager bufferManager,
ProcessorDataManager processorDataManager,
- Map connectorCapabilitiesCache,
TransactionService transactionService,
boolean procDebugAllowed,
TempTableStore tempTableStore,
@@ -167,7 +161,6 @@
this.transactionService = transactionService;
this.procDebugAllowed = procDebugAllowed;
this.tempTableStore = tempTableStore;
- this.connectorCapabilitiesCache = connectorCapabilitiesCache;
idGenerator.setDefaultFactory(new IntegerIDFactory());
this.workContext = workContext;
this.requestId = workContext.getRequestID(this.requestMsg.getExecutionId());
@@ -190,15 +183,12 @@
return;
}
// Prepare dependencies for running the optimizer
- CapabilitiesFinder baseFinder =
- new ConnectorCapabilitiesFinder(
- this.vdbService,
- (DataService) this.env.findService(DQPServiceNames.DATA_SERVICE),
- requestMsg, workContext);
+ this.capabilitiesFinder =
+ new CachedFinder(
+ (DataService) this.env.findService(DQPServiceNames.DATA_SERVICE), (VDBService) this.env.findService(DQPServiceNames.VDB_SERVICE),
+ requestMsg,
+ workContext);
- // Wrap the finder with a cache
- this.capabilitiesFinder = new SharedCachedFinder(baseFinder, connectorCapabilitiesCache);
-
MetadataService metadataService = (MetadataService) this.env.findService(DQPServiceNames.METADATA_SERVICE);
if(metadataService == null){
//should not come here. Per defect 15087,
@@ -218,9 +208,6 @@
this.metadata = new TempMetadataAdapter(metadata, new TempMetadataStore());
- //wrap metadata in the wrapper that knows VDBService
- this.metadata = new QueryMetadataWrapper(this.metadata, this.vdbName, this.vdbVersion, this.vdbService);
-
// Check for multi-source models and further wrap the metadata interface
List multiSourceModelList = vdbService.getMultiSourceModels(this.vdbName, this.vdbVersion);
if(multiSourceModelList != null && multiSourceModelList.size() > 0) {
@@ -309,18 +296,12 @@
this.userCommand = (Command)command.clone();
}
- private void validateQuery(Command command, boolean validateVisibility)
+ private void validateQuery(Command command)
throws QueryValidatorException, MetaMatrixComponentException {
// Create generic sql validation visitor
AbstractValidationVisitor visitor = new ValidationVisitor();
validateWithVisitor(visitor, metadata, command, false);
-
- if (validateVisibility) {
- // Create model visibility validation visitor
- visitor = new ModelVisibilityValidationVisitor(this.vdbService, this.vdbName, this.vdbVersion);
- validateWithVisitor(visitor, metadata, command, true);
- }
}
private Command parseCommand() throws QueryParserException {
@@ -340,7 +321,7 @@
public static ParseInfo createParseInfo(RequestMessage requestMsg) {
ParseInfo parseInfo = new ParseInfo();
- parseInfo.allowDoubleQuotedVariable = requestMsg.isDoubleQuotedVariableAllowed();
+ parseInfo.ansiQuotedIdentifiers = requestMsg.isAnsiQuotedIdentifiers();
return parseInfo;
}
@@ -457,7 +438,7 @@
createCommandContext();
- validateQuery(command, true);
+ validateQuery(command);
command = QueryRewriter.rewrite(command, null, metadata, context);
@@ -578,7 +559,7 @@
Command processingCommand = generatePlan();
- validateEntitlement(userCommand);
+ validateAccess(userCommand);
setSchemasForXMLPlan(userCommand, metadata);
@@ -589,8 +570,8 @@
boolean isRootXQuery = recursionGroup == null && commandContext.getCallStackDepth() == 0 && userCommand instanceof XQuery;
ParseInfo parseInfo = new ParseInfo();
- if (isRootXQuery && requestMsg.isDoubleQuotedVariableAllowed()) {
- parseInfo.allowDoubleQuotedVariable = true;
+ if (isRootXQuery) {
+ parseInfo.ansiQuotedIdentifiers = requestMsg.isAnsiQuotedIdentifiers();
}
Command newCommand = QueryParser.getQueryParser().parseCommand(query, parseInfo);
QueryResolver.resolveCommand(newCommand, metadata);
@@ -599,10 +580,10 @@
referenceCheck(references);
- validateQuery(newCommand, isRootXQuery);
+ validateQuery(newCommand);
if (isRootXQuery) {
- validateEntitlement(newCommand);
+ validateAccess(newCommand);
}
CommandContext copy = (CommandContext) commandContext.clone();
@@ -615,28 +596,13 @@
return new QueryProcessor(plan, copy, bufferManager, processorDataManager);
}
- protected void validateEntitlement(Command command)
+ protected void validateAccess(Command command)
throws QueryValidatorException, MetaMatrixComponentException {
// Validate the query (may only want to validate entitlement)
- AuthorizationService authSvc = (AuthorizationService) this.env
- .findService(DQPServiceNames.AUTHORIZATION_SERVICE);
- if (authSvc != null) {
- // See if entitlement checking is turned on
- if (authSvc.checkingEntitlements()) {
- AuthorizationValidationVisitor visitor = new AuthorizationValidationVisitor(
- this.workContext.getConnectionID(), authSvc);
- validateWithVisitor(visitor, this.metadata, command, true);
- } else if (workContext.getUserName().equals(
- AuthorizationService.DEFAULT_WSDL_USERNAME)) {
- if (command.getType() == Command.TYPE_STORED_PROCEDURE &&
- AuthorizationValidationVisitor.GET_UPDATED_CHARACTER_VDB_RESOURCE.contains(((StoredProcedure) command).getProcedureName())) {
- // do nothing... this is valid
- } else {
- // Throw an exception since the WSDL user is trying to do something other than access the VDB resources
- final String message = DQPPlugin.Util.getString("Request.wsdl_user_not_authorized"); //$NON-NLS-1$
- throw new QueryValidatorException(message);
- }
- }
- }
+ AuthorizationService authSvc = (AuthorizationService) this.env.findService(DQPServiceNames.AUTHORIZATION_SERVICE);
+
+ // See if entitlement checking is turned on
+ AuthorizationValidationVisitor visitor = new AuthorizationValidationVisitor(this.workContext.getConnectionID(), authSvc, this.vdbService, this.vdbName, this.vdbVersion);
+ validateWithVisitor(visitor, this.metadata, command, true);
}
}
Deleted: branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/TempTableStoresHolder.java
===================================================================
--- branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/TempTableStoresHolder.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/TempTableStoresHolder.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,52 +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.dqp.internal.process;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import com.metamatrix.common.buffer.BufferManager;
-import com.metamatrix.query.tempdata.TempTableStore;
-import com.metamatrix.query.tempdata.TempTableStoreImpl;
-
-
-/**
- * @since 5.5
- */
-public class TempTableStoresHolder {
- private BufferManager buffer;
- private Map tempTableStores = new HashMap();
-
- public TempTableStoresHolder(BufferManager buffer) {
- this.buffer = buffer;
- }
-
- public synchronized TempTableStore getTempTableStore(String sessionID) {
- TempTableStore tempTableStore = (TempTableStore)tempTableStores.get(sessionID);
- if(tempTableStore == null) {
- tempTableStore = new TempTableStoreImpl(buffer, sessionID, null);
- tempTableStores.put(sessionID, tempTableStore);
- }
- return tempTableStore;
- }
-}
Modified: branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/multisource/MultiSourcePlanToProcessConverter.java
===================================================================
--- branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/multisource/MultiSourcePlanToProcessConverter.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/multisource/MultiSourcePlanToProcessConverter.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -59,7 +59,7 @@
IDGenerator idGenerator, AnalysisRecord analysisRecord,
CapabilitiesFinder capFinder, Set<String> multiSourceModels,
String vdbName, VDBService vdbService, String vdbVersion, CommandContext context) {
- super(metadata, idGenerator, analysisRecord, capFinder, context);
+ super(metadata, idGenerator, analysisRecord, capFinder);
this.multiSourceModels = multiSourceModels;
this.vdbName = vdbName;
this.vdbService = vdbService;
Modified: branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/validator/AuthorizationValidationVisitor.java
===================================================================
--- branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/validator/AuthorizationValidationVisitor.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/validator/AuthorizationValidationVisitor.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -30,15 +30,16 @@
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
-import java.util.Set;
import org.teiid.dqp.internal.process.multisource.MultiSourceElement;
import com.metamatrix.api.exception.MetaMatrixComponentException;
import com.metamatrix.api.exception.MetaMatrixProcessingException;
import com.metamatrix.api.exception.query.QueryMetadataException;
+import com.metamatrix.common.vdb.api.ModelInfo;
import com.metamatrix.dqp.DQPPlugin;
import com.metamatrix.dqp.service.AuthorizationService;
+import com.metamatrix.dqp.service.VDBService;
import com.metamatrix.query.function.FunctionLibrary;
import com.metamatrix.query.metadata.TempMetadataID;
import com.metamatrix.query.resolver.util.ResolverUtil;
@@ -58,66 +59,82 @@
public class AuthorizationValidationVisitor extends AbstractValidationVisitor {
- /**
- * This virtual procedure must be accessible to all users in order to read the WSDL
- * for web services.
- */
- public final static String GET_UPDATED_CHARACTER_VDB_RESOURCE = "System.getUpdatedCharacterVDBResource"; //$NON-NLS-1$
-
- /**
- * Set of procedures which must be available to all users.
- */
- private static Set globallyAccessibleProcedures = new HashSet();
-
private String connectionID;
private AuthorizationService authInterface;
-
-
- static {
- globallyAccessibleProcedures.add(GET_UPDATED_CHARACTER_VDB_RESOURCE);
- }
-
-
+ private VDBService vdbService;
+ private String vdbName;
+ private String vdbVersion;
+
public AuthorizationValidationVisitor(
String connectionID,
- AuthorizationService authInterface) {
- super();
-
+ AuthorizationService authInterface,
+ VDBService vdbService,
+ String vdbName,
+ String vdbVersion) {
this.connectionID = connectionID;
this.authInterface = authInterface;
+ this.vdbService = vdbService;
+ this.vdbName = vdbName;
+ this.vdbVersion = vdbVersion;
}
// ############### Visitor methods for language objects ##################
+
+ @Override
+ public void visit(GroupSymbol obj) {
+ try {
+ Object modelID = getMetadata().getModelID(obj.getMetadataID());
+ this.validateModelVisibility(modelID, obj);
+ } catch(QueryMetadataException e) {
+ handleException(e, obj);
+ } catch(MetaMatrixComponentException e) {
+ handleException(e, obj);
+ }
+ }
public void visit(Delete obj) {
- validateEntitlements(obj);
+ if (this.authInterface != null && this.authInterface.checkingEntitlements()) {
+ validateEntitlements(obj);
+ }
}
public void visit(Insert obj) {
- validateEntitlements(obj);
+ if (this.authInterface != null && this.authInterface.checkingEntitlements()) {
+ validateEntitlements(obj);
+ }
}
public void visit(Query obj) {
- validateEntitlements(obj);
+ if (this.authInterface != null && this.authInterface.checkingEntitlements()) {
+ validateEntitlements(obj);
+ }
}
public void visit(Update obj) {
- validateEntitlements(obj);
+ if (this.authInterface != null && this.authInterface.checkingEntitlements()) {
+ validateEntitlements(obj);
+ }
}
public void visit(StoredProcedure obj) {
- validateEntitlements(obj);
+ this.validateModelVisibility(obj.getModelID(), obj.getGroup());
+ if (this.authInterface != null && this.authInterface.checkingEntitlements()) {
+ validateEntitlements(obj);
+ }
}
public void visit(Function obj) {
if (FunctionLibrary.LOOKUP.equalsIgnoreCase(obj.getName())) {
try {
- List<Symbol> symbols = new LinkedList<Symbol>();
ResolverUtil.ResolvedLookup lookup = ResolverUtil.resolveLookup(obj, this.getMetadata());
- symbols.add(lookup.getGroup());
- symbols.add(lookup.getKeyElement());
- symbols.add(lookup.getReturnElement());
- validateEntitlements(symbols, AuthorizationService.ACTION_READ, AuthorizationService.CONTEXT_QUERY);
+ validateModelVisibility(getMetadata().getModelID(lookup.getGroup().getMetadataID()), lookup.getGroup());
+ if (this.authInterface != null && this.authInterface.checkingEntitlements()) {
+ List<Symbol> symbols = new LinkedList<Symbol>();
+ symbols.add(lookup.getGroup());
+ symbols.add(lookup.getKeyElement());
+ symbols.add(lookup.getReturnElement());
+ validateEntitlements(symbols, AuthorizationService.ACTION_READ, AuthorizationService.CONTEXT_QUERY);
+ }
} catch (MetaMatrixComponentException e) {
handleException(e, obj);
} catch (MetaMatrixProcessingException e) {
@@ -207,31 +224,10 @@
validateEntitlements(entitledObjects, AuthorizationService.ACTION_READ, AuthorizationService.CONTEXT_QUERY);
}
-
/**
- * Add a procedure to the list of globally
- * @param name
- * @since 4.2
- */
- public static void addGloballyAccessibleProcedure(String name) {
- globallyAccessibleProcedures.add(name);
- }
-
- public static void removeGloballyAccessibleProcedure(String name) {
- globallyAccessibleProcedures.remove(name);
- }
-
-
- /**
* Validate query entitlements
*/
protected void validateEntitlements(StoredProcedure obj) {
- //Skip entitlement checking for any globally available procedures.
- if (globallyAccessibleProcedures.contains(obj.getProcedureName())) {
- return;
- }
-
-
List symbols = new ArrayList(1);
symbols.add(obj.getGroup());
validateEntitlements(symbols, AuthorizationService.ACTION_READ, AuthorizationService.CONTEXT_PROCEDURE);
@@ -308,4 +304,19 @@
}
+ protected void validateModelVisibility(Object modelID, GroupSymbol group) {
+ if(modelID instanceof TempMetadataID){
+ return;
+ }
+ try {
+ String modelName = getMetadata().getFullName(modelID);
+ int visibility = this.vdbService.getModelVisibility(this.vdbName, this.vdbVersion, modelName);
+ if(visibility != ModelInfo.PUBLIC) {
+ handleValidationError(DQPPlugin.Util.getString("ERR.018.005.0088", getMetadata().getFullName(group.getMetadataID()))); //$NON-NLS-1$
+ }
+ } catch (MetaMatrixComponentException e) {
+ handleException(e, group);
+ }
+ }
+
}
Deleted: branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/validator/ModelVisibilityValidationVisitor.java
===================================================================
--- branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/validator/ModelVisibilityValidationVisitor.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/validator/ModelVisibilityValidationVisitor.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,139 +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.dqp.internal.process.validator;
-
-import java.util.Collection;
-import java.util.Iterator;
-
-import com.metamatrix.api.exception.MetaMatrixComponentException;
-import com.metamatrix.api.exception.query.QueryMetadataException;
-import com.metamatrix.api.exception.query.QueryResolverException;
-import com.metamatrix.common.vdb.api.ModelInfo;
-import com.metamatrix.dqp.DQPPlugin;
-import com.metamatrix.dqp.service.VDBService;
-import com.metamatrix.query.function.FunctionLibrary;
-import com.metamatrix.query.metadata.TempMetadataID;
-import com.metamatrix.query.resolver.util.ResolverUtil;
-import com.metamatrix.query.resolver.util.ResolverUtil.ResolvedLookup;
-import com.metamatrix.query.sql.lang.Command;
-import com.metamatrix.query.sql.lang.Delete;
-import com.metamatrix.query.sql.lang.Insert;
-import com.metamatrix.query.sql.lang.Query;
-import com.metamatrix.query.sql.lang.StoredProcedure;
-import com.metamatrix.query.sql.lang.Update;
-import com.metamatrix.query.sql.symbol.Function;
-import com.metamatrix.query.sql.symbol.GroupSymbol;
-import com.metamatrix.query.sql.visitor.GroupCollectorVisitor;
-import com.metamatrix.query.validator.AbstractValidationVisitor;
-
-/**
- */
-public class ModelVisibilityValidationVisitor extends AbstractValidationVisitor {
-
- private VDBService vdbService;
- private String vdbName;
- private String vdbVersion;
-
- /**
- *
- */
- public ModelVisibilityValidationVisitor(VDBService vdbService, String vdbName, String vdbVersion ) {
- super();
-
- this.vdbService = vdbService;
- this.vdbName = vdbName;
- this.vdbVersion = vdbVersion;
- }
-
- // ############### Visitor methods for language objects ##################
-
- public void visit(Delete obj) {
- validateModelVisibility(obj);
- }
-
- public void visit(Insert obj) {
- validateModelVisibility(obj);
- }
-
- public void visit(Query obj) {
- validateModelVisibility(obj);
- }
-
- public void visit(Update obj) {
- validateModelVisibility(obj);
- }
-
- public void visit(StoredProcedure obj) {
- validateModelVisibility(obj);
- }
-
- public void visit(Function obj) {
- if (FunctionLibrary.LOOKUP.equalsIgnoreCase(obj.getName())) {
- try {
- ResolverUtil.ResolvedLookup resolvedLookup = ResolverUtil.resolveLookup(obj, getMetadata());
- validateModelVisibility(getMetadata().getModelID(resolvedLookup.getGroup().getMetadataID()), resolvedLookup.getGroup());
- } catch (QueryResolverException e) {
- handleException(e, obj);
- } catch (MetaMatrixComponentException e) {
- handleException(e, obj);
- }
- }
- }
-
- // ######################### Validation methods #########################
-
- protected void validateModelVisibility(Command obj) {
- // first get list of groups from command
- Collection groups = GroupCollectorVisitor.getGroups(obj, true);
-
- try {
- // collect models used by this command
- Iterator groupIter = groups.iterator();
- while(groupIter.hasNext()) {
- GroupSymbol group = (GroupSymbol) groupIter.next();
- Object modelID = null;
- if(obj instanceof StoredProcedure){
- modelID = ((StoredProcedure)obj).getModelID();
- }else{
- modelID = getMetadata().getModelID(group.getMetadataID());
- }
- if(modelID instanceof TempMetadataID){
- return;
- }
- validateModelVisibility(modelID, group);
- }
- } catch(QueryMetadataException e) {
- handleException(e, obj);
- } catch(MetaMatrixComponentException e) {
- handleException(e, obj);
- }
- }
-
- protected void validateModelVisibility(Object modelID, GroupSymbol group) throws QueryMetadataException, MetaMatrixComponentException {
- String modelName = getMetadata().getFullName(modelID);
- int visibility = this.vdbService.getModelVisibility(this.vdbName, this.vdbVersion, modelName);
- if(visibility != ModelInfo.PUBLIC) {
- handleValidationError(DQPPlugin.Util.getString("ERR.018.005.0088", getMetadata().getFullName(group.getMetadataID()))); //$NON-NLS-1$
- }
- }
-}
Copied: branches/JCA/engine/src/main/java/org/teiid/metadata (from rev 1614, trunk/engine/src/main/java/org/teiid/metadata)
Deleted: branches/JCA/engine/src/main/java/org/teiid/metadata/CompositeMetadataStore.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/metadata/CompositeMetadataStore.java 2009-12-01 21:17:40 UTC (rev 1614)
+++ branches/JCA/engine/src/main/java/org/teiid/metadata/CompositeMetadataStore.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,144 +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 java.util.ArrayList;
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.List;
-
-import org.teiid.connector.metadata.runtime.MetadataStore;
-import org.teiid.connector.metadata.runtime.ProcedureRecordImpl;
-import org.teiid.connector.metadata.runtime.Schema;
-import org.teiid.connector.metadata.runtime.Table;
-import org.teiid.connector.metadata.runtime.Table.Type;
-
-import com.metamatrix.api.exception.MetaMatrixComponentException;
-import com.metamatrix.api.exception.query.QueryMetadataException;
-import com.metamatrix.metadata.runtime.api.MetadataSource;
-
-/**
- * Aggregates the metadata from multiple stores.
- * IMPORTANT: All strings queries should be in lower case.
- */
-public class CompositeMetadataStore extends MetadataStore {
-
- private MetadataSource metadataSource;
-
- public CompositeMetadataStore(List<MetadataStore> metadataStores, MetadataSource metadataSource) {
- this.metadataSource = metadataSource;
- for (MetadataStore metadataStore : metadataStores) {
- this.schemas.putAll(metadataStore.getSchemas());
- this.datatypes.addAll(metadataStore.getDatatypes());
- }
- }
-
- public Schema getSchema(String fullName)
- throws QueryMetadataException {
- Schema result = getSchemas().get(fullName);
- if (result == null) {
- throw new QueryMetadataException(fullName+TransformationMetadata.NOT_EXISTS_MESSAGE);
- }
- return result;
- }
-
- public Table findGroup(String fullName)
- throws QueryMetadataException {
- int index = fullName.indexOf(TransformationMetadata.DELIMITER_STRING);
- if (index == -1) {
- throw new QueryMetadataException(fullName+TransformationMetadata.NOT_EXISTS_MESSAGE);
- }
- String schema = fullName.substring(0, index);
- Table result = getSchema(schema).getTables().get(fullName.substring(index + 1));
- if (result == null) {
- throw new QueryMetadataException(fullName+TransformationMetadata.NOT_EXISTS_MESSAGE);
- }
- return result;
- }
-
- /**
- * TODO: this resolving mode allows partial matches of a full group name containing .
- * @param partialGroupName
- * @return
- */
- public Collection<Table> getGroupsForPartialName(String partialGroupName) {
- List<Table> result = new LinkedList<Table>();
- for (Schema schema : getSchemas().values()) {
- for (Table t : schema.getTables().values()) {
- String fullName = t.getFullName();
- if (fullName.regionMatches(true, fullName.length() - partialGroupName.length(), partialGroupName, 0, partialGroupName.length())) {
- result.add(t);
- }
- }
- }
- return result;
- }
-
- public Collection<ProcedureRecordImpl> getStoredProcedure(String name)
- throws MetaMatrixComponentException, QueryMetadataException {
- List<ProcedureRecordImpl> result = new LinkedList<ProcedureRecordImpl>();
- int index = name.indexOf(TransformationMetadata.DELIMITER_STRING);
- if (index > -1) {
- String schema = name.substring(0, index);
- ProcedureRecordImpl proc = getSchema(schema).getProcedures().get(name.substring(index + 1));
- if (proc != null) {
- result.add(proc);
- return result;
- }
- }
- //assume it's a partial name
- name = TransformationMetadata.DELIMITER_STRING + name;
- for (Schema schema : getSchemas().values()) {
- for (ProcedureRecordImpl p : schema.getProcedures().values()) {
- String fullName = p.getFullName();
- if (fullName.regionMatches(true, fullName.length() - name.length(), name, 0, name.length())) {
- result.add(p);
- }
- }
- }
- if (result.isEmpty()) {
- throw new QueryMetadataException(name+TransformationMetadata.NOT_EXISTS_MESSAGE);
- }
- return result;
- }
-
- public MetadataSource getMetadataSource() {
- return metadataSource;
- }
-
- /*
- * The next method is a hold over from XML/UUID resolving and will perform poorly
- */
-
- public Collection<Table> getXMLTempGroups(Table tableRecord) {
- ArrayList<Table> results = new ArrayList<Table>();
- String namePrefix = tableRecord.getFullName() + TransformationMetadata.DELIMITER_STRING;
- for (Table table : tableRecord.getSchema().getTables().values()) {
- if (table.getTableType() == Type.XmlStagingTable && table.getName().startsWith(namePrefix)) {
- results.add(table);
- }
- }
- return results;
- }
-
-}
Copied: branches/JCA/engine/src/main/java/org/teiid/metadata/CompositeMetadataStore.java (from rev 1614, trunk/engine/src/main/java/org/teiid/metadata/CompositeMetadataStore.java)
===================================================================
--- branches/JCA/engine/src/main/java/org/teiid/metadata/CompositeMetadataStore.java (rev 0)
+++ branches/JCA/engine/src/main/java/org/teiid/metadata/CompositeMetadataStore.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,144 @@
+/*
+ * 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 java.util.ArrayList;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.teiid.connector.metadata.runtime.MetadataStore;
+import org.teiid.connector.metadata.runtime.ProcedureRecordImpl;
+import org.teiid.connector.metadata.runtime.Schema;
+import org.teiid.connector.metadata.runtime.Table;
+import org.teiid.connector.metadata.runtime.Table.Type;
+
+import com.metamatrix.api.exception.MetaMatrixComponentException;
+import com.metamatrix.api.exception.query.QueryMetadataException;
+import com.metamatrix.metadata.runtime.api.MetadataSource;
+
+/**
+ * Aggregates the metadata from multiple stores.
+ * IMPORTANT: All strings queries should be in lower case.
+ */
+public class CompositeMetadataStore extends MetadataStore {
+
+ private MetadataSource metadataSource;
+
+ public CompositeMetadataStore(List<MetadataStore> metadataStores, MetadataSource metadataSource) {
+ this.metadataSource = metadataSource;
+ for (MetadataStore metadataStore : metadataStores) {
+ this.schemas.putAll(metadataStore.getSchemas());
+ this.datatypes.addAll(metadataStore.getDatatypes());
+ }
+ }
+
+ public Schema getSchema(String fullName)
+ throws QueryMetadataException {
+ Schema result = getSchemas().get(fullName);
+ if (result == null) {
+ throw new QueryMetadataException(fullName+TransformationMetadata.NOT_EXISTS_MESSAGE);
+ }
+ return result;
+ }
+
+ public Table findGroup(String fullName)
+ throws QueryMetadataException {
+ int index = fullName.indexOf(TransformationMetadata.DELIMITER_STRING);
+ if (index == -1) {
+ throw new QueryMetadataException(fullName+TransformationMetadata.NOT_EXISTS_MESSAGE);
+ }
+ String schema = fullName.substring(0, index);
+ Table result = getSchema(schema).getTables().get(fullName.substring(index + 1));
+ if (result == null) {
+ throw new QueryMetadataException(fullName+TransformationMetadata.NOT_EXISTS_MESSAGE);
+ }
+ return result;
+ }
+
+ /**
+ * TODO: this resolving mode allows partial matches of a full group name containing .
+ * @param partialGroupName
+ * @return
+ */
+ public Collection<Table> getGroupsForPartialName(String partialGroupName) {
+ List<Table> result = new LinkedList<Table>();
+ for (Schema schema : getSchemas().values()) {
+ for (Table t : schema.getTables().values()) {
+ String fullName = t.getFullName();
+ if (fullName.regionMatches(true, fullName.length() - partialGroupName.length(), partialGroupName, 0, partialGroupName.length())) {
+ result.add(t);
+ }
+ }
+ }
+ return result;
+ }
+
+ public Collection<ProcedureRecordImpl> getStoredProcedure(String name)
+ throws MetaMatrixComponentException, QueryMetadataException {
+ List<ProcedureRecordImpl> result = new LinkedList<ProcedureRecordImpl>();
+ int index = name.indexOf(TransformationMetadata.DELIMITER_STRING);
+ if (index > -1) {
+ String schema = name.substring(0, index);
+ ProcedureRecordImpl proc = getSchema(schema).getProcedures().get(name.substring(index + 1));
+ if (proc != null) {
+ result.add(proc);
+ return result;
+ }
+ }
+ //assume it's a partial name
+ name = TransformationMetadata.DELIMITER_STRING + name;
+ for (Schema schema : getSchemas().values()) {
+ for (ProcedureRecordImpl p : schema.getProcedures().values()) {
+ String fullName = p.getFullName();
+ if (fullName.regionMatches(true, fullName.length() - name.length(), name, 0, name.length())) {
+ result.add(p);
+ }
+ }
+ }
+ if (result.isEmpty()) {
+ throw new QueryMetadataException(name+TransformationMetadata.NOT_EXISTS_MESSAGE);
+ }
+ return result;
+ }
+
+ public MetadataSource getMetadataSource() {
+ return metadataSource;
+ }
+
+ /*
+ * The next method is a hold over from XML/UUID resolving and will perform poorly
+ */
+
+ public Collection<Table> getXMLTempGroups(Table tableRecord) {
+ ArrayList<Table> results = new ArrayList<Table>();
+ String namePrefix = tableRecord.getFullName() + TransformationMetadata.DELIMITER_STRING;
+ for (Table table : tableRecord.getSchema().getTables().values()) {
+ if (table.getTableType() == Type.XmlStagingTable && table.getName().startsWith(namePrefix)) {
+ results.add(table);
+ }
+ }
+ return results;
+ }
+
+}
Deleted: branches/JCA/engine/src/main/java/org/teiid/metadata/TransformationMetadata.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/metadata/TransformationMetadata.java 2009-12-01 21:17:40 UTC (rev 1614)
+++ branches/JCA/engine/src/main/java/org/teiid/metadata/TransformationMetadata.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,1046 +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 java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-import org.teiid.connector.metadata.runtime.AbstractMetadataRecord;
-import org.teiid.connector.metadata.runtime.Column;
-import org.teiid.connector.metadata.runtime.ColumnSet;
-import org.teiid.connector.metadata.runtime.Datatype;
-import org.teiid.connector.metadata.runtime.ForeignKey;
-import org.teiid.connector.metadata.runtime.KeyRecord;
-import org.teiid.connector.metadata.runtime.ProcedureParameter;
-import org.teiid.connector.metadata.runtime.ProcedureRecordImpl;
-import org.teiid.connector.metadata.runtime.Schema;
-import org.teiid.connector.metadata.runtime.Table;
-import org.teiid.connector.metadata.runtime.BaseColumn.NullType;
-import org.teiid.connector.metadata.runtime.Column.SearchType;
-import org.teiid.connector.metadata.runtime.ProcedureParameter.Type;
-
-import com.metamatrix.api.exception.MetaMatrixComponentException;
-import com.metamatrix.api.exception.query.QueryMetadataException;
-import com.metamatrix.common.properties.UnmodifiableProperties;
-import com.metamatrix.common.types.DataTypeManager;
-import com.metamatrix.common.vdb.api.ModelInfo;
-import com.metamatrix.core.util.ArgCheck;
-import com.metamatrix.core.util.LRUCache;
-import com.metamatrix.core.util.StringUtil;
-import com.metamatrix.dqp.DQPPlugin;
-import com.metamatrix.dqp.service.VDBService;
-import com.metamatrix.metadata.runtime.api.MetadataSourceUtil;
-import com.metamatrix.query.QueryPlugin;
-import com.metamatrix.query.mapping.relational.QueryNode;
-import com.metamatrix.query.mapping.xml.MappingDocument;
-import com.metamatrix.query.mapping.xml.MappingLoader;
-import com.metamatrix.query.mapping.xml.MappingNode;
-import com.metamatrix.query.metadata.BasicQueryMetadata;
-import com.metamatrix.query.metadata.StoredProcedureInfo;
-import com.metamatrix.query.metadata.SupportConstants;
-import com.metamatrix.query.sql.lang.SPParameter;
-
-/**
- * Modelers implementation of QueryMetadataInterface that reads columns, groups, models etc.
- * index files for various metadata properties.
- */
-public class TransformationMetadata extends BasicQueryMetadata {
-
- /** Delimiter character used when specifying fully qualified entity names */
- public static final char DELIMITER_CHAR = StringUtil.Constants.DOT_CHAR;
- public static final String DELIMITER_STRING = String.valueOf(DELIMITER_CHAR);
-
- // error message cached to avoid i18n lookup each time
- public static String NOT_EXISTS_MESSAGE = StringUtil.Constants.SPACE+DQPPlugin.Util.getString("TransformationMetadata.does_not_exist._1"); //$NON-NLS-1$
-
- private static UnmodifiableProperties EMPTY_PROPS = new UnmodifiableProperties(new Properties());
-
- private final CompositeMetadataStore store;
- private String vdbVersion;
- private VDBService vdbService;
-
- /*
- * TODO: move caching to jboss cache structure
- */
- private final Map<String, Object> metadataCache = Collections.synchronizedMap(new LRUCache<String, Object>(500));
- private final Map<String, Collection<Table>> partialNameToFullNameCache = Collections.synchronizedMap(new LRUCache<String, Collection<Table>>(1000));
- private final Map<String, Collection<StoredProcedureInfo>> procedureCache = Collections.synchronizedMap(new LRUCache<String, Collection<StoredProcedureInfo>>(200));
- /**
- * TransformationMetadata constructor
- * @param context Object containing the info needed to lookup metadta.
- */
- public TransformationMetadata(final CompositeMetadataStore store) {
- this(store, null, null);
- }
-
- public TransformationMetadata(final CompositeMetadataStore store, VDBService service, String vdbVersion) {
- ArgCheck.isNotNull(store);
- this.store = store;
- this.vdbService = service;
- this.vdbVersion = vdbVersion;
- }
-
- //==================================================================================
- // I N T E R F A C E M E T H O D S
- //==================================================================================
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getElementID(java.lang.String)
- */
- public Object getElementID(final String elementName) throws MetaMatrixComponentException, QueryMetadataException {
- int columnIndex = elementName.lastIndexOf(TransformationMetadata.DELIMITER_STRING);
- if (columnIndex == -1) {
- throw new QueryMetadataException(elementName+TransformationMetadata.NOT_EXISTS_MESSAGE);
- }
- Table table = this.store.findGroup(elementName.substring(0, columnIndex));
- String shortElementName = elementName.substring(columnIndex + 1);
- for (Column column : (List<Column>)getElementIDsInGroupID(table)) {
- if (column.getName().equalsIgnoreCase(shortElementName)) {
- return column;
- }
- }
- throw new QueryMetadataException(elementName+TransformationMetadata.NOT_EXISTS_MESSAGE);
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getGroupID(java.lang.String)
- */
- public Object getGroupID(final String groupName) throws MetaMatrixComponentException, QueryMetadataException {
- return getMetadataStore().findGroup(groupName.toLowerCase());
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getGroupsForPartialName(java.lang.String)
- */
- public Collection getGroupsForPartialName(final String partialGroupName)
- throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isNotEmpty(partialGroupName);
-
- Collection<Table> matches = this.partialNameToFullNameCache.get(partialGroupName);
-
- if (matches == null) {
- String partialName = DELIMITER_CHAR + partialGroupName.toLowerCase();
-
- matches = getMetadataStore().getGroupsForPartialName(partialName);
-
- this.partialNameToFullNameCache.put(partialGroupName, matches);
- }
-
- if (matches.isEmpty()) {
- return Collections.emptyList();
- }
-
- Collection<String> filteredResult = new ArrayList<String>(matches.size());
- for (Table table : matches) {
- if (vdbService == null || vdbService.getModelVisibility(getVirtualDatabaseName(), vdbVersion, table.getParent().getName()) == ModelInfo.PUBLIC) {
- filteredResult.add(table.getFullName());
- }
- }
- return filteredResult;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getModelID(java.lang.Object)
- */
- public Object getModelID(final Object groupOrElementID) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(AbstractMetadataRecord.class, groupOrElementID);
- AbstractMetadataRecord metadataRecord = (AbstractMetadataRecord) groupOrElementID;
- AbstractMetadataRecord parent = metadataRecord.getParent();
- if (parent instanceof Schema) {
- return parent;
- }
- if (parent == null) {
- throw createInvalidRecordTypeException(groupOrElementID);
- }
- parent = metadataRecord.getParent();
- if (parent instanceof Schema) {
- return parent;
- }
- throw createInvalidRecordTypeException(groupOrElementID);
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getFullName(java.lang.Object)
- */
- public String getFullName(final Object metadataID) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(AbstractMetadataRecord.class, metadataID);
- AbstractMetadataRecord metadataRecord = (AbstractMetadataRecord) metadataID;
- return metadataRecord.getFullName();
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getFullElementName(java.lang.String, java.lang.String)
- */
- public String getFullElementName(final String fullGroupName, final String shortElementName)
- throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isNotEmpty(fullGroupName);
- ArgCheck.isNotEmpty(shortElementName);
-
- return fullGroupName + DELIMITER_CHAR + shortElementName;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getShortElementName(java.lang.String)
- */
- public String getShortElementName(final String fullElementName) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isNotEmpty(fullElementName);
- int index = fullElementName.lastIndexOf(DELIMITER_CHAR);
- if(index >= 0) {
- return fullElementName.substring(index+1);
- }
- return fullElementName;
- }
-
- /**
- * Return the text portion of the fullElementName representing a group.
- * That means that this should only return text that is part of the
- * fullElementName and not look up new IDs or do much of anything fancy.
- * This method is used by the resolver to decide which portion of a fully-
- * qualified element name is the group name. It will compare whatever comes
- * back with the actual group names and aliases in the query, which is
- * why it is important not to introduce new metadata here. Also, returning
- * null indicates that no portion of the fullElementName is a
- * group name - that is ok as it will be resolved as an ambiguous element.
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getGroupName(java.lang.String)
- */
- public String getGroupName(final String fullElementName) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isNotEmpty(fullElementName);
-
- int index = fullElementName.lastIndexOf(DELIMITER_CHAR);
- if(index >= 0) {
- return fullElementName.substring(0, index);
- }
- return null;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getElementIDsInGroupID(java.lang.Object)
- */
- public List getElementIDsInGroupID(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(Table.class, groupID);
- return ((Table)groupID).getColumns();
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getGroupIDForElementID(java.lang.Object)
- */
- public Object getGroupIDForElementID(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
- if(elementID instanceof Column) {
- Column columnRecord = (Column) elementID;
- return this.getGroupID(getGroupName(columnRecord.getFullName()));
- } else if(elementID instanceof ProcedureParameter){
- ProcedureParameter columnRecord = (ProcedureParameter) elementID;
- return this.getGroupID(getGroupName(columnRecord.getFullName()));
- } else {
- throw createInvalidRecordTypeException(elementID);
- }
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getStoredProcedureInfoForProcedure(java.lang.String)
- */
- public StoredProcedureInfo getStoredProcedureInfoForProcedure(final String fullyQualifiedProcedureName)
- throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isNotEmpty(fullyQualifiedProcedureName);
- String lowerGroupName = fullyQualifiedProcedureName.toLowerCase();
- Collection<StoredProcedureInfo> results = this.procedureCache.get(lowerGroupName);
-
- if (results == null) {
- Collection<ProcedureRecordImpl> procRecords = getMetadataStore().getStoredProcedure(lowerGroupName);
- results = new ArrayList<StoredProcedureInfo>(procRecords.size());
- for (ProcedureRecordImpl procRecord : procRecords) {
- String procedureFullName = procRecord.getFullName();
-
- // create the storedProcedure info object that would hold procedure's metadata
- StoredProcedureInfo procInfo = new StoredProcedureInfo();
- procInfo.setProcedureCallableName(procedureFullName);
- procInfo.setProcedureID(procRecord);
-
- // modelID for the procedure
- procInfo.setModelID(procRecord.getSchema());
-
- // get the parameter metadata info
- for (ProcedureParameter paramRecord : procRecord.getParameters()) {
- String runtimeType = paramRecord.getRuntimeType();
- int direction = this.convertParamRecordTypeToStoredProcedureType(paramRecord.getType());
- // create a parameter and add it to the procedure object
- SPParameter spParam = new SPParameter(paramRecord.getPosition(), direction, paramRecord.getName());
- spParam.setMetadataID(paramRecord);
- spParam.setClassType(DataTypeManager.getDataTypeClass(runtimeType));
- procInfo.addParameter(spParam);
- }
-
- // if the procedure returns a resultSet, obtain resultSet metadata
- if(procRecord.getResultSet() != null) {
- ColumnSet<ProcedureRecordImpl> resultRecord = procRecord.getResultSet();
- // resultSet is the last parameter in the procedure
- int lastParamIndex = procInfo.getParameters().size() + 1;
- SPParameter param = new SPParameter(lastParamIndex, SPParameter.RESULT_SET, resultRecord.getName());
- param.setClassType(java.sql.ResultSet.class);
- param.setMetadataID(resultRecord);
-
- for (Column columnRecord : resultRecord.getColumns()) {
- String colType = columnRecord.getRuntimeType();
- param.addResultSetColumn(columnRecord.getFullName(), DataTypeManager.getDataTypeClass(colType), columnRecord);
- }
-
- procInfo.addParameter(param);
- }
-
- // if this is a virtual procedure get the procedure plan
- if(procRecord.isVirtual()) {
- QueryNode queryNode = new QueryNode(procedureFullName, procRecord.getQueryPlan());
- procInfo.setQueryPlan(queryNode);
- }
-
- //subtract 1, to match up with the server
- procInfo.setUpdateCount(procRecord.getUpdateCount() -1);
- results.add(procInfo);
- }
- this.procedureCache.put(lowerGroupName, results);
- }
-
- StoredProcedureInfo result = null;
-
- for (StoredProcedureInfo storedProcedureInfo : results) {
- Schema schema = (Schema)storedProcedureInfo.getModelID();
- if(vdbService == null || vdbService.getModelVisibility(getVirtualDatabaseName(), vdbVersion, schema.getName()) == ModelInfo.PUBLIC){
- if (result != null) {
- throw new QueryMetadataException(QueryPlugin.Util.getString("ambiguous_procedure", fullyQualifiedProcedureName)); //$NON-NLS-1$
- }
- result = storedProcedureInfo;
- }
- }
-
- if (result == null) {
- throw new QueryMetadataException(fullyQualifiedProcedureName+NOT_EXISTS_MESSAGE);
- }
-
- return result;
- }
-
- /**
- * Method to convert the parameter type returned from a ProcedureParameterRecord
- * to the parameter type expected by StoredProcedureInfo
- * @param parameterType
- * @return
- */
- private int convertParamRecordTypeToStoredProcedureType(final ProcedureParameter.Type parameterType) {
- switch (parameterType) {
- case In : return SPParameter.IN;
- case Out : return SPParameter.OUT;
- case InOut : return SPParameter.INOUT;
- case ReturnValue : return SPParameter.RETURN_VALUE;
- case ResultSet : return SPParameter.RESULT_SET;
- default :
- return -1;
- }
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getElementType(java.lang.Object)
- */
- public String getElementType(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
- if(elementID instanceof Column) {
- return ((Column) elementID).getRuntimeType();
- } else if(elementID instanceof ProcedureParameter){
- return ((ProcedureParameter) elementID).getRuntimeType();
- } else {
- throw createInvalidRecordTypeException(elementID);
- }
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getDefaultValue(java.lang.String)
- */
- public Object getDefaultValue(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
- if(elementID instanceof Column) {
- return ((Column) elementID).getDefaultValue();
- } else if(elementID instanceof ProcedureParameter){
- return ((ProcedureParameter) elementID).getDefaultValue();
- } else {
- throw createInvalidRecordTypeException(elementID);
- }
- }
-
- public Object getMinimumValue(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
- if(elementID instanceof Column) {
- return ((Column) elementID).getMinValue();
- } else if(elementID instanceof ProcedureParameter){
- return null;
- } else {
- throw createInvalidRecordTypeException(elementID);
- }
- }
-
- public Object getMaximumValue(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
- if(elementID instanceof Column) {
- return ((Column) elementID).getMaxValue();
- } else if(elementID instanceof ProcedureParameter){
- return null;
- } else {
- throw createInvalidRecordTypeException(elementID);
- }
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#isVirtualGroup(java.lang.Object)
- */
- public boolean isVirtualGroup(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(Table.class, groupID);
- return ((Table) groupID).isVirtual();
- }
-
- /**
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#isProcedureInputElement(java.lang.Object)
- * @since 4.2
- */
- public boolean isProcedure(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
- if(groupID instanceof ProcedureRecordImpl) {
- return true;
- }
- if(groupID instanceof Table){
- return false;
- }
- throw createInvalidRecordTypeException(groupID);
- }
-
- public boolean isVirtualModel(final Object modelID) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(Schema.class, modelID);
- Schema modelRecord = (Schema) modelID;
- return !modelRecord.isPhysical();
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getVirtualPlan(java.lang.Object)
- */
- public QueryNode getVirtualPlan(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(Table.class, groupID);
-
- Table tableRecord = (Table) groupID;
- if (!tableRecord.isVirtual()) {
- throw new QueryMetadataException(DQPPlugin.Util.getString("TransformationMetadata.QueryPlan_could_not_be_found_for_physical_group__6")+tableRecord.getFullName()); //$NON-NLS-1$
- }
- String transQuery = tableRecord.getSelectTransformation();
- QueryNode queryNode = new QueryNode(tableRecord.getFullName(), transQuery);
-
- // get any bindings and add them onto the query node
- List bindings = tableRecord.getBindings();
- if(bindings != null) {
- for(Iterator bindIter = bindings.iterator();bindIter.hasNext();) {
- queryNode.addBinding((String)bindIter.next());
- }
- }
-
- return queryNode;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getInsertPlan(java.lang.Object)
- */
- public String getInsertPlan(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(Table.class, groupID);
- Table tableRecordImpl = (Table)groupID;
- if (!tableRecordImpl.isVirtual()) {
- throw new QueryMetadataException(DQPPlugin.Util.getString("TransformationMetadata.InsertPlan_could_not_be_found_for_physical_group__8")+tableRecordImpl.getFullName()); //$NON-NLS-1$
- }
- return ((Table)groupID).getInsertPlan();
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getUpdatePlan(java.lang.Object)
- */
- public String getUpdatePlan(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(Table.class, groupID);
- Table tableRecordImpl = (Table)groupID;
- if (!tableRecordImpl.isVirtual()) {
- throw new QueryMetadataException(DQPPlugin.Util.getString("TransformationMetadata.InsertPlan_could_not_be_found_for_physical_group__10")+tableRecordImpl.getFullName()); //$NON-NLS-1$
- }
- return ((Table)groupID).getUpdatePlan();
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getDeletePlan(java.lang.Object)
- */
- public String getDeletePlan(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(Table.class, groupID);
- Table tableRecordImpl = (Table)groupID;
- if (!tableRecordImpl.isVirtual()) {
- throw new QueryMetadataException(DQPPlugin.Util.getString("TransformationMetadata.DeletePlan_could_not_be_found_for_physical_group__12")+tableRecordImpl.getFullName()); //$NON-NLS-1$
- }
- return ((Table)groupID).getDeletePlan();
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#modelSupports(java.lang.Object, int)
- */
- public boolean modelSupports(final Object modelID, final int modelConstant)
- throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(Schema.class, modelID);
-
- switch(modelConstant) {
- default:
- throw new UnsupportedOperationException(DQPPlugin.Util.getString("TransformationMetadata.Unknown_support_constant___12") + modelConstant); //$NON-NLS-1$
- }
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#groupSupports(java.lang.Object, int)
- */
- public boolean groupSupports(final Object groupID, final int groupConstant)
- throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(Table.class, groupID);
- Table tableRecord = (Table) groupID;
-
- switch(groupConstant) {
- case SupportConstants.Group.UPDATE:
- return tableRecord.supportsUpdate();
- default:
- throw new UnsupportedOperationException(DQPPlugin.Util.getString("TransformationMetadata.Unknown_support_constant___12") + groupConstant); //$NON-NLS-1$
- }
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#elementSupports(java.lang.Object, int)
- */
- public boolean elementSupports(final Object elementID, final int elementConstant)
- throws MetaMatrixComponentException, QueryMetadataException {
-
- if(elementID instanceof Column) {
- Column columnRecord = (Column) elementID;
- switch(elementConstant) {
- case SupportConstants.Element.NULL:
- return columnRecord.getNullType() == NullType.Nullable;
- case SupportConstants.Element.NULL_UNKNOWN:
- return columnRecord.getNullType() == NullType.Unknown;
- case SupportConstants.Element.SEARCHABLE_COMPARE:
- return (columnRecord.getSearchType() == SearchType.Searchable || columnRecord.getSearchType() == SearchType.All_Except_Like);
- case SupportConstants.Element.SEARCHABLE_LIKE:
- return (columnRecord.getSearchType() == SearchType.Searchable || columnRecord.getSearchType() == SearchType.Like_Only);
- case SupportConstants.Element.SELECT:
- return columnRecord.isSelectable();
- case SupportConstants.Element.UPDATE:
- return columnRecord.isUpdatable();
- case SupportConstants.Element.DEFAULT_VALUE:
- Object defaultValue = columnRecord.getDefaultValue();
- if(defaultValue == null) {
- return false;
- }
- return true;
- case SupportConstants.Element.AUTO_INCREMENT:
- return columnRecord.isAutoIncrementable();
- case SupportConstants.Element.CASE_SENSITIVE:
- return columnRecord.isCaseSensitive();
- case SupportConstants.Element.SIGNED:
- return columnRecord.isSigned();
- default:
- throw new UnsupportedOperationException(DQPPlugin.Util.getString("TransformationMetadata.Unknown_support_constant___12") + elementConstant); //$NON-NLS-1$
- }
- } else if(elementID instanceof ProcedureParameter) {
- ProcedureParameter columnRecord = (ProcedureParameter) elementID;
- switch(elementConstant) {
- case SupportConstants.Element.NULL:
- return columnRecord.getNullType() == NullType.Nullable;
- case SupportConstants.Element.NULL_UNKNOWN:
- return columnRecord.getNullType() == NullType.Unknown;
- case SupportConstants.Element.SEARCHABLE_COMPARE:
- case SupportConstants.Element.SEARCHABLE_LIKE:
- return false;
- case SupportConstants.Element.SELECT:
- return columnRecord.getType() != Type.In;
- case SupportConstants.Element.UPDATE:
- return false;
- case SupportConstants.Element.DEFAULT_VALUE:
- Object defaultValue = columnRecord.getDefaultValue();
- if(defaultValue == null) {
- return false;
- }
- return true;
- case SupportConstants.Element.AUTO_INCREMENT:
- return false;
- case SupportConstants.Element.CASE_SENSITIVE:
- return false;
- case SupportConstants.Element.SIGNED:
- return true;
- default:
- throw new UnsupportedOperationException(DQPPlugin.Util.getString("TransformationMetadata.Unknown_support_constant___12") + elementConstant); //$NON-NLS-1$
- }
-
- } else {
- throw createInvalidRecordTypeException(elementID);
- }
- }
-
- private IllegalArgumentException createInvalidRecordTypeException(Object elementID) {
- return new IllegalArgumentException(DQPPlugin.Util.getString("TransformationMetadata.Invalid_type", elementID.getClass().getName())); //$NON-NLS-1$
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getMaxSetSize(java.lang.Object)
- */
- public int getMaxSetSize(final Object modelID) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(Schema.class, modelID);
- return 0;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getIndexesInGroup(java.lang.Object)
- */
- public Collection getIndexesInGroup(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(Table.class, groupID);
- return ((Table)groupID).getIndexes();
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getUniqueKeysInGroup(java.lang.Object)
- */
- public Collection getUniqueKeysInGroup(final Object groupID)
- throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(Table.class, groupID);
- Table tableRecordImpl = (Table)groupID;
- ArrayList<ColumnSet> result = new ArrayList<ColumnSet>(tableRecordImpl.getUniqueKeys());
- if (tableRecordImpl.getPrimaryKey() != null) {
- result.add(tableRecordImpl.getPrimaryKey());
- }
- for (KeyRecord key : tableRecordImpl.getIndexes()) {
- if (key.getType() == KeyRecord.Type.Index) {
- result.add(key);
- }
- }
- return result;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getForeignKeysInGroup(java.lang.Object)
- */
- public Collection getForeignKeysInGroup(final Object groupID)
- throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(Table.class, groupID);
- return ((Table)groupID).getForeignKeys();
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getPrimaryKeyIDForForeignKeyID(java.lang.Object)
- */
- public Object getPrimaryKeyIDForForeignKeyID(final Object foreignKeyID)
- throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(ForeignKey.class, foreignKeyID);
- ForeignKey fkRecord = (ForeignKey) foreignKeyID;
- return fkRecord.getPrimaryKey();
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getAccessPatternsInGroup(java.lang.Object)
- */
- public Collection getAccessPatternsInGroup(final Object groupID)
- throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(Table.class, groupID);
- return ((Table)groupID).getAccessPatterns();
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getElementIDsInIndex(java.lang.Object)
- */
- public List getElementIDsInIndex(final Object index) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(ColumnSet.class, index);
- return ((ColumnSet)index).getColumns();
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getElementIDsInKey(java.lang.Object)
- */
- public List getElementIDsInKey(final Object key) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(ColumnSet.class, key);
- return ((ColumnSet)key).getColumns();
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getElementIDsInAccessPattern(java.lang.Object)
- */
- public List getElementIDsInAccessPattern(final Object accessPattern)
- throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(ColumnSet.class, accessPattern);
- return ((ColumnSet)accessPattern).getColumns();
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#isXMLGroup(java.lang.Object)
- */
- public boolean isXMLGroup(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(Table.class, groupID);
-
- Table tableRecord = (Table) groupID;
- return tableRecord.getTableType() == Table.Type.Document;
- }
-
- /**
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#hasMaterialization(java.lang.Object)
- * @since 4.2
- */
- public boolean hasMaterialization(final Object groupID) throws MetaMatrixComponentException,
- QueryMetadataException {
- ArgCheck.isInstanceOf(Table.class, groupID);
- Table tableRecord = (Table) groupID;
- return tableRecord.isMaterialized();
- }
-
- /**
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getMaterialization(java.lang.Object)
- * @since 4.2
- */
- public Object getMaterialization(final Object groupID) throws MetaMatrixComponentException,
- QueryMetadataException {
- ArgCheck.isInstanceOf(Table.class, groupID);
- Table tableRecord = (Table) groupID;
- if(tableRecord.isMaterialized()) {
- return tableRecord.getMaterializedTable();
- }
- return null;
- }
-
- /**
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getMaterializationStage(java.lang.Object)
- * @since 4.2
- */
- public Object getMaterializationStage(final Object groupID) throws MetaMatrixComponentException,
- QueryMetadataException {
- ArgCheck.isInstanceOf(Table.class, groupID);
- Table tableRecord = (Table) groupID;
- if(tableRecord.isMaterialized()) {
- return tableRecord.getMaterializedStageTable();
- }
- return null;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getMappingNode(java.lang.Object)
- */
- public MappingNode getMappingNode(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(Table.class, groupID);
-
- Table tableRecord = (Table) groupID;
- final String groupName = tableRecord.getFullName();
- if(tableRecord.isVirtual()) {
- // get mappin transform
- String document = tableRecord.getSelectTransformation();
- InputStream inputStream = new ByteArrayInputStream(document.getBytes());
- MappingLoader reader = new MappingLoader();
- MappingDocument mappingDoc = null;
- try{
- mappingDoc = reader.loadDocument(inputStream);
- mappingDoc.setName(groupName);
- } catch (Exception e){
- throw new MetaMatrixComponentException(e, DQPPlugin.Util.getString("TransformationMetadata.Error_trying_to_read_virtual_document_{0},_with_body__n{1}_1", groupName, mappingDoc)); //$NON-NLS-1$
- } finally {
- try {
- inputStream.close();
- } catch(Exception e) {}
- }
- return (MappingDocument)mappingDoc.clone();
- }
-
- return null;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getVirtualDatabaseName()
- */
- public String getVirtualDatabaseName() throws MetaMatrixComponentException, QueryMetadataException {
- return this.getMetadataStore().getMetadataSource().getName();
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getXMLTempGroups(java.lang.Object)
- */
- public Collection getXMLTempGroups(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(Table.class, groupID);
- Table tableRecord = (Table) groupID;
-
- if(tableRecord.getTableType() == Table.Type.Document) {
- return this.store.getXMLTempGroups(tableRecord);
- }
- return Collections.EMPTY_SET;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getCardinality(java.lang.Object)
- */
- public int getCardinality(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(Table.class, groupID);
- return ((Table) groupID).getCardinality();
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getXMLSchemas(java.lang.Object)
- */
- public List getXMLSchemas(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
-
- ArgCheck.isInstanceOf(Table.class, groupID);
- Table tableRecord = (Table) groupID;
-
- // lookup transformation record for the group
- String groupName = tableRecord.getFullName();
-
- // get the schema Paths
- List<String> schemaPaths = tableRecord.getSchemaPaths();
-
- List<String> schemas = new LinkedList<String>();
- if (schemaPaths == null) {
- return schemas;
- }
- File f = new File(tableRecord.getResourcePath());
- String path = f.getParent();
-
- for (String string : schemaPaths) {
- String schema = getCharacterVDBResource(string);
-
- if (schema == null) {
- schema = getCharacterVDBResource(path + File.separator + string);
- }
-
- if (schema == null) {
- throw new MetaMatrixComponentException(DQPPlugin.Util.getString("TransformationMetadata.Error_trying_to_read_schemas_for_the_document/table____1")+groupName); //$NON-NLS-1$
- }
- }
-
- return schemas;
- }
-
- public String getNameInSource(final Object metadataID) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(AbstractMetadataRecord.class, metadataID);
- return ((AbstractMetadataRecord) metadataID).getNameInSource();
- }
-
- public int getElementLength(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
- if(elementID instanceof Column) {
- return ((Column) elementID).getLength();
- } else if(elementID instanceof ProcedureParameter){
- return ((ProcedureParameter) elementID).getLength();
- } else {
- throw createInvalidRecordTypeException(elementID);
- }
- }
-
- public int getPosition(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
- if(elementID instanceof Column) {
- return ((Column) elementID).getPosition();
- } else if(elementID instanceof ProcedureParameter) {
- return ((ProcedureParameter) elementID).getPosition();
- } else {
- throw createInvalidRecordTypeException(elementID);
- }
- }
-
- public int getPrecision(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
- if(elementID instanceof Column) {
- return ((Column) elementID).getPrecision();
- } else if(elementID instanceof ProcedureParameter) {
- return ((ProcedureParameter) elementID).getPrecision();
- } else {
- throw createInvalidRecordTypeException(elementID);
- }
- }
-
- public int getRadix(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
- if(elementID instanceof Column) {
- return ((Column) elementID).getRadix();
- } else if(elementID instanceof ProcedureParameter) {
- return ((ProcedureParameter) elementID).getRadix();
- } else {
- throw createInvalidRecordTypeException(elementID);
- }
- }
-
- public String getFormat(Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
- if(elementID instanceof Column) {
- return ((Column) elementID).getFormat();
- }
- throw createInvalidRecordTypeException(elementID);
- }
-
- public int getScale(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
- if(elementID instanceof Column) {
- return ((Column) elementID).getScale();
- } else if(elementID instanceof ProcedureParameter) {
- return ((ProcedureParameter) elementID).getScale();
- } else {
- throw createInvalidRecordTypeException(elementID);
- }
- }
-
- public int getDistinctValues(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
- if(elementID instanceof Column) {
- return ((Column) elementID).getDistinctValues();
- } else if(elementID instanceof ProcedureParameter) {
- return -1;
- } else {
- throw createInvalidRecordTypeException(elementID);
- }
- }
-
- public int getNullValues(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
- if(elementID instanceof Column) {
- return ((Column) elementID).getNullValues();
- } else if(elementID instanceof ProcedureParameter) {
- return -1;
- } else {
- throw createInvalidRecordTypeException(elementID);
- }
- }
-
- public String getNativeType(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
- if(elementID instanceof Column) {
- return ((Column) elementID).getNativeType();
- } else if(elementID instanceof ProcedureParameter) {
- return null;
- } else {
- throw createInvalidRecordTypeException(elementID);
- }
- }
-
- /*
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getExtensionProperties(java.lang.Object)
- */
- public Properties getExtensionProperties(final Object metadataID) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(AbstractMetadataRecord.class, metadataID);
- AbstractMetadataRecord metadataRecord = (AbstractMetadataRecord) metadataID;
- Map<String, String> result = metadataRecord.getProperties();
- if (result == null) {
- return EMPTY_PROPS;
- }
- Properties p = new Properties();
- p.putAll(result);
- return p;
- }
-
- /**
- * @see com.metamatrix.query.metadata.BasicQueryMetadata#getBinaryVDBResource(java.lang.String)
- * @since 4.3
- */
- public byte[] getBinaryVDBResource(String resourcePath) throws MetaMatrixComponentException,
- QueryMetadataException {
- String content = this.getCharacterVDBResource(resourcePath);
- if(content != null) {
- return content.getBytes();
- }
- return null;
- }
-
- /**
- * @see com.metamatrix.query.metadata.BasicQueryMetadata#getCharacterVDBResource(java.lang.String)
- * @since 4.3
- */
- public String getCharacterVDBResource(String resourcePath) throws MetaMatrixComponentException,
- QueryMetadataException {
- return MetadataSourceUtil.getFileContentAsString(resourcePath, this.getMetadataStore().getMetadataSource());
- }
-
- public CompositeMetadataStore getMetadataStore() {
- return this.store;
- }
-
- /**
- * @see com.metamatrix.query.metadata.BasicQueryMetadata#getVDBResourcePaths()
- * @since 4.3
- */
- public String[] getVDBResourcePaths() throws MetaMatrixComponentException,
- QueryMetadataException {
- return getMetadataStore().getMetadataSource().getEntries().toArray(new String[0]);
- }
-
- /**
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getModeledType(java.lang.Object)
- * @since 5.0
- */
- public String getModeledType(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
- Datatype record = getDatatypeRecord(elementID);
- if (record != null) {
- return record.getDatatypeID();
- }
- return null;
- }
-
- /**
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getModeledBaseType(java.lang.Object)
- * @since 5.0
- */
- public String getModeledBaseType(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
- Datatype record = getDatatypeRecord(elementID);
- if (record != null) {
- return record.getBasetypeID();
- }
- return null;
- }
-
- /**
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getModeledPrimitiveType(java.lang.Object)
- * @since 5.0
- */
- public String getModeledPrimitiveType(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
- Datatype record = getDatatypeRecord(elementID);
- if (record != null) {
- return record.getPrimitiveTypeID();
- }
- return null;
- }
-
- private Datatype getDatatypeRecord(final Object elementID) {
- if (elementID instanceof Column) {
- return ((Column)elementID).getDatatype();
- } else if (elementID instanceof ProcedureParameter) {
- return ((ProcedureParameter)elementID).getDatatype();
- } else {
- throw createInvalidRecordTypeException(elementID);
- }
- }
-
- @Override
- public Object addToMetadataCache(Object metadataID, String key, Object value)
- throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(AbstractMetadataRecord.class, metadataID);
- key = getCacheKey(key, (AbstractMetadataRecord)metadataID);
- return this.metadataCache.put(key, value);
- }
-
- @Override
- public Object getFromMetadataCache(Object metadataID, String key)
- throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(AbstractMetadataRecord.class, metadataID);
- key = getCacheKey(key, (AbstractMetadataRecord)metadataID);
- return this.metadataCache.get(key);
- }
-
- private String getCacheKey(String key, AbstractMetadataRecord record) {
- return record.getUUID() + "/" + key; //$NON-NLS-1$
- }
-
-}
\ No newline at end of file
Copied: branches/JCA/engine/src/main/java/org/teiid/metadata/TransformationMetadata.java (from rev 1614, trunk/engine/src/main/java/org/teiid/metadata/TransformationMetadata.java)
===================================================================
--- branches/JCA/engine/src/main/java/org/teiid/metadata/TransformationMetadata.java (rev 0)
+++ branches/JCA/engine/src/main/java/org/teiid/metadata/TransformationMetadata.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,1046 @@
+/*
+ * 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 java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import org.teiid.connector.metadata.runtime.AbstractMetadataRecord;
+import org.teiid.connector.metadata.runtime.Column;
+import org.teiid.connector.metadata.runtime.ColumnSet;
+import org.teiid.connector.metadata.runtime.Datatype;
+import org.teiid.connector.metadata.runtime.ForeignKey;
+import org.teiid.connector.metadata.runtime.KeyRecord;
+import org.teiid.connector.metadata.runtime.ProcedureParameter;
+import org.teiid.connector.metadata.runtime.ProcedureRecordImpl;
+import org.teiid.connector.metadata.runtime.Schema;
+import org.teiid.connector.metadata.runtime.Table;
+import org.teiid.connector.metadata.runtime.BaseColumn.NullType;
+import org.teiid.connector.metadata.runtime.Column.SearchType;
+import org.teiid.connector.metadata.runtime.ProcedureParameter.Type;
+
+import com.metamatrix.api.exception.MetaMatrixComponentException;
+import com.metamatrix.api.exception.query.QueryMetadataException;
+import com.metamatrix.common.properties.UnmodifiableProperties;
+import com.metamatrix.common.types.DataTypeManager;
+import com.metamatrix.common.vdb.api.ModelInfo;
+import com.metamatrix.core.util.ArgCheck;
+import com.metamatrix.core.util.LRUCache;
+import com.metamatrix.core.util.StringUtil;
+import com.metamatrix.dqp.DQPPlugin;
+import com.metamatrix.dqp.service.VDBService;
+import com.metamatrix.metadata.runtime.api.MetadataSourceUtil;
+import com.metamatrix.query.QueryPlugin;
+import com.metamatrix.query.mapping.relational.QueryNode;
+import com.metamatrix.query.mapping.xml.MappingDocument;
+import com.metamatrix.query.mapping.xml.MappingLoader;
+import com.metamatrix.query.mapping.xml.MappingNode;
+import com.metamatrix.query.metadata.BasicQueryMetadata;
+import com.metamatrix.query.metadata.StoredProcedureInfo;
+import com.metamatrix.query.metadata.SupportConstants;
+import com.metamatrix.query.sql.lang.SPParameter;
+
+/**
+ * Modelers implementation of QueryMetadataInterface that reads columns, groups, models etc.
+ * index files for various metadata properties.
+ */
+public class TransformationMetadata extends BasicQueryMetadata {
+
+ /** Delimiter character used when specifying fully qualified entity names */
+ public static final char DELIMITER_CHAR = StringUtil.Constants.DOT_CHAR;
+ public static final String DELIMITER_STRING = String.valueOf(DELIMITER_CHAR);
+
+ // error message cached to avoid i18n lookup each time
+ public static String NOT_EXISTS_MESSAGE = StringUtil.Constants.SPACE+DQPPlugin.Util.getString("TransformationMetadata.does_not_exist._1"); //$NON-NLS-1$
+
+ private static UnmodifiableProperties EMPTY_PROPS = new UnmodifiableProperties(new Properties());
+
+ private final CompositeMetadataStore store;
+ private String vdbVersion;
+ private VDBService vdbService;
+
+ /*
+ * TODO: move caching to jboss cache structure
+ */
+ private final Map<String, Object> metadataCache = Collections.synchronizedMap(new LRUCache<String, Object>(500));
+ private final Map<String, Collection<Table>> partialNameToFullNameCache = Collections.synchronizedMap(new LRUCache<String, Collection<Table>>(1000));
+ private final Map<String, Collection<StoredProcedureInfo>> procedureCache = Collections.synchronizedMap(new LRUCache<String, Collection<StoredProcedureInfo>>(200));
+ /**
+ * TransformationMetadata constructor
+ * @param context Object containing the info needed to lookup metadta.
+ */
+ public TransformationMetadata(final CompositeMetadataStore store) {
+ this(store, null, null);
+ }
+
+ public TransformationMetadata(final CompositeMetadataStore store, VDBService service, String vdbVersion) {
+ ArgCheck.isNotNull(store);
+ this.store = store;
+ this.vdbService = service;
+ this.vdbVersion = vdbVersion;
+ }
+
+ //==================================================================================
+ // I N T E R F A C E M E T H O D S
+ //==================================================================================
+
+ /* (non-Javadoc)
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getElementID(java.lang.String)
+ */
+ public Object getElementID(final String elementName) throws MetaMatrixComponentException, QueryMetadataException {
+ int columnIndex = elementName.lastIndexOf(TransformationMetadata.DELIMITER_STRING);
+ if (columnIndex == -1) {
+ throw new QueryMetadataException(elementName+TransformationMetadata.NOT_EXISTS_MESSAGE);
+ }
+ Table table = this.store.findGroup(elementName.substring(0, columnIndex));
+ String shortElementName = elementName.substring(columnIndex + 1);
+ for (Column column : (List<Column>)getElementIDsInGroupID(table)) {
+ if (column.getName().equalsIgnoreCase(shortElementName)) {
+ return column;
+ }
+ }
+ throw new QueryMetadataException(elementName+TransformationMetadata.NOT_EXISTS_MESSAGE);
+ }
+
+ /* (non-Javadoc)
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getGroupID(java.lang.String)
+ */
+ public Object getGroupID(final String groupName) throws MetaMatrixComponentException, QueryMetadataException {
+ return getMetadataStore().findGroup(groupName.toLowerCase());
+ }
+
+ /* (non-Javadoc)
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getGroupsForPartialName(java.lang.String)
+ */
+ public Collection getGroupsForPartialName(final String partialGroupName)
+ throws MetaMatrixComponentException, QueryMetadataException {
+ ArgCheck.isNotEmpty(partialGroupName);
+
+ Collection<Table> matches = this.partialNameToFullNameCache.get(partialGroupName);
+
+ if (matches == null) {
+ String partialName = DELIMITER_CHAR + partialGroupName.toLowerCase();
+
+ matches = getMetadataStore().getGroupsForPartialName(partialName);
+
+ this.partialNameToFullNameCache.put(partialGroupName, matches);
+ }
+
+ if (matches.isEmpty()) {
+ return Collections.emptyList();
+ }
+
+ Collection<String> filteredResult = new ArrayList<String>(matches.size());
+ for (Table table : matches) {
+ if (vdbService == null || vdbService.getModelVisibility(getVirtualDatabaseName(), vdbVersion, table.getParent().getName()) == ModelInfo.PUBLIC) {
+ filteredResult.add(table.getFullName());
+ }
+ }
+ return filteredResult;
+ }
+
+ /* (non-Javadoc)
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getModelID(java.lang.Object)
+ */
+ public Object getModelID(final Object groupOrElementID) throws MetaMatrixComponentException, QueryMetadataException {
+ ArgCheck.isInstanceOf(AbstractMetadataRecord.class, groupOrElementID);
+ AbstractMetadataRecord metadataRecord = (AbstractMetadataRecord) groupOrElementID;
+ AbstractMetadataRecord parent = metadataRecord.getParent();
+ if (parent instanceof Schema) {
+ return parent;
+ }
+ if (parent == null) {
+ throw createInvalidRecordTypeException(groupOrElementID);
+ }
+ parent = metadataRecord.getParent();
+ if (parent instanceof Schema) {
+ return parent;
+ }
+ throw createInvalidRecordTypeException(groupOrElementID);
+ }
+
+ /* (non-Javadoc)
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getFullName(java.lang.Object)
+ */
+ public String getFullName(final Object metadataID) throws MetaMatrixComponentException, QueryMetadataException {
+ ArgCheck.isInstanceOf(AbstractMetadataRecord.class, metadataID);
+ AbstractMetadataRecord metadataRecord = (AbstractMetadataRecord) metadataID;
+ return metadataRecord.getFullName();
+ }
+
+ /* (non-Javadoc)
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getFullElementName(java.lang.String, java.lang.String)
+ */
+ public String getFullElementName(final String fullGroupName, final String shortElementName)
+ throws MetaMatrixComponentException, QueryMetadataException {
+ ArgCheck.isNotEmpty(fullGroupName);
+ ArgCheck.isNotEmpty(shortElementName);
+
+ return fullGroupName + DELIMITER_CHAR + shortElementName;
+ }
+
+ /* (non-Javadoc)
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getShortElementName(java.lang.String)
+ */
+ public String getShortElementName(final String fullElementName) throws MetaMatrixComponentException, QueryMetadataException {
+ ArgCheck.isNotEmpty(fullElementName);
+ int index = fullElementName.lastIndexOf(DELIMITER_CHAR);
+ if(index >= 0) {
+ return fullElementName.substring(index+1);
+ }
+ return fullElementName;
+ }
+
+ /**
+ * Return the text portion of the fullElementName representing a group.
+ * That means that this should only return text that is part of the
+ * fullElementName and not look up new IDs or do much of anything fancy.
+ * This method is used by the resolver to decide which portion of a fully-
+ * qualified element name is the group name. It will compare whatever comes
+ * back with the actual group names and aliases in the query, which is
+ * why it is important not to introduce new metadata here. Also, returning
+ * null indicates that no portion of the fullElementName is a
+ * group name - that is ok as it will be resolved as an ambiguous element.
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getGroupName(java.lang.String)
+ */
+ public String getGroupName(final String fullElementName) throws MetaMatrixComponentException, QueryMetadataException {
+ ArgCheck.isNotEmpty(fullElementName);
+
+ int index = fullElementName.lastIndexOf(DELIMITER_CHAR);
+ if(index >= 0) {
+ return fullElementName.substring(0, index);
+ }
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getElementIDsInGroupID(java.lang.Object)
+ */
+ public List getElementIDsInGroupID(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
+ ArgCheck.isInstanceOf(Table.class, groupID);
+ return ((Table)groupID).getColumns();
+ }
+
+ /* (non-Javadoc)
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getGroupIDForElementID(java.lang.Object)
+ */
+ public Object getGroupIDForElementID(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
+ if(elementID instanceof Column) {
+ Column columnRecord = (Column) elementID;
+ return this.getGroupID(getGroupName(columnRecord.getFullName()));
+ } else if(elementID instanceof ProcedureParameter){
+ ProcedureParameter columnRecord = (ProcedureParameter) elementID;
+ return this.getGroupID(getGroupName(columnRecord.getFullName()));
+ } else {
+ throw createInvalidRecordTypeException(elementID);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getStoredProcedureInfoForProcedure(java.lang.String)
+ */
+ public StoredProcedureInfo getStoredProcedureInfoForProcedure(final String fullyQualifiedProcedureName)
+ throws MetaMatrixComponentException, QueryMetadataException {
+ ArgCheck.isNotEmpty(fullyQualifiedProcedureName);
+ String lowerGroupName = fullyQualifiedProcedureName.toLowerCase();
+ Collection<StoredProcedureInfo> results = this.procedureCache.get(lowerGroupName);
+
+ if (results == null) {
+ Collection<ProcedureRecordImpl> procRecords = getMetadataStore().getStoredProcedure(lowerGroupName);
+ results = new ArrayList<StoredProcedureInfo>(procRecords.size());
+ for (ProcedureRecordImpl procRecord : procRecords) {
+ String procedureFullName = procRecord.getFullName();
+
+ // create the storedProcedure info object that would hold procedure's metadata
+ StoredProcedureInfo procInfo = new StoredProcedureInfo();
+ procInfo.setProcedureCallableName(procedureFullName);
+ procInfo.setProcedureID(procRecord);
+
+ // modelID for the procedure
+ procInfo.setModelID(procRecord.getSchema());
+
+ // get the parameter metadata info
+ for (ProcedureParameter paramRecord : procRecord.getParameters()) {
+ String runtimeType = paramRecord.getRuntimeType();
+ int direction = this.convertParamRecordTypeToStoredProcedureType(paramRecord.getType());
+ // create a parameter and add it to the procedure object
+ SPParameter spParam = new SPParameter(paramRecord.getPosition(), direction, paramRecord.getName());
+ spParam.setMetadataID(paramRecord);
+ spParam.setClassType(DataTypeManager.getDataTypeClass(runtimeType));
+ procInfo.addParameter(spParam);
+ }
+
+ // if the procedure returns a resultSet, obtain resultSet metadata
+ if(procRecord.getResultSet() != null) {
+ ColumnSet<ProcedureRecordImpl> resultRecord = procRecord.getResultSet();
+ // resultSet is the last parameter in the procedure
+ int lastParamIndex = procInfo.getParameters().size() + 1;
+ SPParameter param = new SPParameter(lastParamIndex, SPParameter.RESULT_SET, resultRecord.getName());
+ param.setClassType(java.sql.ResultSet.class);
+ param.setMetadataID(resultRecord);
+
+ for (Column columnRecord : resultRecord.getColumns()) {
+ String colType = columnRecord.getRuntimeType();
+ param.addResultSetColumn(columnRecord.getFullName(), DataTypeManager.getDataTypeClass(colType), columnRecord);
+ }
+
+ procInfo.addParameter(param);
+ }
+
+ // if this is a virtual procedure get the procedure plan
+ if(procRecord.isVirtual()) {
+ QueryNode queryNode = new QueryNode(procedureFullName, procRecord.getQueryPlan());
+ procInfo.setQueryPlan(queryNode);
+ }
+
+ //subtract 1, to match up with the server
+ procInfo.setUpdateCount(procRecord.getUpdateCount() -1);
+ results.add(procInfo);
+ }
+ this.procedureCache.put(lowerGroupName, results);
+ }
+
+ StoredProcedureInfo result = null;
+
+ for (StoredProcedureInfo storedProcedureInfo : results) {
+ Schema schema = (Schema)storedProcedureInfo.getModelID();
+ if(vdbService == null || vdbService.getModelVisibility(getVirtualDatabaseName(), vdbVersion, schema.getName()) == ModelInfo.PUBLIC){
+ if (result != null) {
+ throw new QueryMetadataException(QueryPlugin.Util.getString("ambiguous_procedure", fullyQualifiedProcedureName)); //$NON-NLS-1$
+ }
+ result = storedProcedureInfo;
+ }
+ }
+
+ if (result == null) {
+ throw new QueryMetadataException(fullyQualifiedProcedureName+NOT_EXISTS_MESSAGE);
+ }
+
+ return result;
+ }
+
+ /**
+ * Method to convert the parameter type returned from a ProcedureParameterRecord
+ * to the parameter type expected by StoredProcedureInfo
+ * @param parameterType
+ * @return
+ */
+ private int convertParamRecordTypeToStoredProcedureType(final ProcedureParameter.Type parameterType) {
+ switch (parameterType) {
+ case In : return SPParameter.IN;
+ case Out : return SPParameter.OUT;
+ case InOut : return SPParameter.INOUT;
+ case ReturnValue : return SPParameter.RETURN_VALUE;
+ case ResultSet : return SPParameter.RESULT_SET;
+ default :
+ return -1;
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getElementType(java.lang.Object)
+ */
+ public String getElementType(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
+ if(elementID instanceof Column) {
+ return ((Column) elementID).getRuntimeType();
+ } else if(elementID instanceof ProcedureParameter){
+ return ((ProcedureParameter) elementID).getRuntimeType();
+ } else {
+ throw createInvalidRecordTypeException(elementID);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getDefaultValue(java.lang.String)
+ */
+ public Object getDefaultValue(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
+ if(elementID instanceof Column) {
+ return ((Column) elementID).getDefaultValue();
+ } else if(elementID instanceof ProcedureParameter){
+ return ((ProcedureParameter) elementID).getDefaultValue();
+ } else {
+ throw createInvalidRecordTypeException(elementID);
+ }
+ }
+
+ public Object getMinimumValue(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
+ if(elementID instanceof Column) {
+ return ((Column) elementID).getMinValue();
+ } else if(elementID instanceof ProcedureParameter){
+ return null;
+ } else {
+ throw createInvalidRecordTypeException(elementID);
+ }
+ }
+
+ public Object getMaximumValue(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
+ if(elementID instanceof Column) {
+ return ((Column) elementID).getMaxValue();
+ } else if(elementID instanceof ProcedureParameter){
+ return null;
+ } else {
+ throw createInvalidRecordTypeException(elementID);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#isVirtualGroup(java.lang.Object)
+ */
+ public boolean isVirtualGroup(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
+ ArgCheck.isInstanceOf(Table.class, groupID);
+ return ((Table) groupID).isVirtual();
+ }
+
+ /**
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#isProcedureInputElement(java.lang.Object)
+ * @since 4.2
+ */
+ public boolean isProcedure(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
+ if(groupID instanceof ProcedureRecordImpl) {
+ return true;
+ }
+ if(groupID instanceof Table){
+ return false;
+ }
+ throw createInvalidRecordTypeException(groupID);
+ }
+
+ public boolean isVirtualModel(final Object modelID) throws MetaMatrixComponentException, QueryMetadataException {
+ ArgCheck.isInstanceOf(Schema.class, modelID);
+ Schema modelRecord = (Schema) modelID;
+ return !modelRecord.isPhysical();
+ }
+
+ /* (non-Javadoc)
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getVirtualPlan(java.lang.Object)
+ */
+ public QueryNode getVirtualPlan(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
+ ArgCheck.isInstanceOf(Table.class, groupID);
+
+ Table tableRecord = (Table) groupID;
+ if (!tableRecord.isVirtual()) {
+ throw new QueryMetadataException(DQPPlugin.Util.getString("TransformationMetadata.QueryPlan_could_not_be_found_for_physical_group__6")+tableRecord.getFullName()); //$NON-NLS-1$
+ }
+ String transQuery = tableRecord.getSelectTransformation();
+ QueryNode queryNode = new QueryNode(tableRecord.getFullName(), transQuery);
+
+ // get any bindings and add them onto the query node
+ List bindings = tableRecord.getBindings();
+ if(bindings != null) {
+ for(Iterator bindIter = bindings.iterator();bindIter.hasNext();) {
+ queryNode.addBinding((String)bindIter.next());
+ }
+ }
+
+ return queryNode;
+ }
+
+ /* (non-Javadoc)
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getInsertPlan(java.lang.Object)
+ */
+ public String getInsertPlan(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
+ ArgCheck.isInstanceOf(Table.class, groupID);
+ Table tableRecordImpl = (Table)groupID;
+ if (!tableRecordImpl.isVirtual()) {
+ throw new QueryMetadataException(DQPPlugin.Util.getString("TransformationMetadata.InsertPlan_could_not_be_found_for_physical_group__8")+tableRecordImpl.getFullName()); //$NON-NLS-1$
+ }
+ return ((Table)groupID).getInsertPlan();
+ }
+
+ /* (non-Javadoc)
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getUpdatePlan(java.lang.Object)
+ */
+ public String getUpdatePlan(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
+ ArgCheck.isInstanceOf(Table.class, groupID);
+ Table tableRecordImpl = (Table)groupID;
+ if (!tableRecordImpl.isVirtual()) {
+ throw new QueryMetadataException(DQPPlugin.Util.getString("TransformationMetadata.InsertPlan_could_not_be_found_for_physical_group__10")+tableRecordImpl.getFullName()); //$NON-NLS-1$
+ }
+ return ((Table)groupID).getUpdatePlan();
+ }
+
+ /* (non-Javadoc)
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getDeletePlan(java.lang.Object)
+ */
+ public String getDeletePlan(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
+ ArgCheck.isInstanceOf(Table.class, groupID);
+ Table tableRecordImpl = (Table)groupID;
+ if (!tableRecordImpl.isVirtual()) {
+ throw new QueryMetadataException(DQPPlugin.Util.getString("TransformationMetadata.DeletePlan_could_not_be_found_for_physical_group__12")+tableRecordImpl.getFullName()); //$NON-NLS-1$
+ }
+ return ((Table)groupID).getDeletePlan();
+ }
+
+ /* (non-Javadoc)
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#modelSupports(java.lang.Object, int)
+ */
+ public boolean modelSupports(final Object modelID, final int modelConstant)
+ throws MetaMatrixComponentException, QueryMetadataException {
+ ArgCheck.isInstanceOf(Schema.class, modelID);
+
+ switch(modelConstant) {
+ default:
+ throw new UnsupportedOperationException(DQPPlugin.Util.getString("TransformationMetadata.Unknown_support_constant___12") + modelConstant); //$NON-NLS-1$
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#groupSupports(java.lang.Object, int)
+ */
+ public boolean groupSupports(final Object groupID, final int groupConstant)
+ throws MetaMatrixComponentException, QueryMetadataException {
+ ArgCheck.isInstanceOf(Table.class, groupID);
+ Table tableRecord = (Table) groupID;
+
+ switch(groupConstant) {
+ case SupportConstants.Group.UPDATE:
+ return tableRecord.supportsUpdate();
+ default:
+ throw new UnsupportedOperationException(DQPPlugin.Util.getString("TransformationMetadata.Unknown_support_constant___12") + groupConstant); //$NON-NLS-1$
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#elementSupports(java.lang.Object, int)
+ */
+ public boolean elementSupports(final Object elementID, final int elementConstant)
+ throws MetaMatrixComponentException, QueryMetadataException {
+
+ if(elementID instanceof Column) {
+ Column columnRecord = (Column) elementID;
+ switch(elementConstant) {
+ case SupportConstants.Element.NULL:
+ return columnRecord.getNullType() == NullType.Nullable;
+ case SupportConstants.Element.NULL_UNKNOWN:
+ return columnRecord.getNullType() == NullType.Unknown;
+ case SupportConstants.Element.SEARCHABLE_COMPARE:
+ return (columnRecord.getSearchType() == SearchType.Searchable || columnRecord.getSearchType() == SearchType.All_Except_Like);
+ case SupportConstants.Element.SEARCHABLE_LIKE:
+ return (columnRecord.getSearchType() == SearchType.Searchable || columnRecord.getSearchType() == SearchType.Like_Only);
+ case SupportConstants.Element.SELECT:
+ return columnRecord.isSelectable();
+ case SupportConstants.Element.UPDATE:
+ return columnRecord.isUpdatable();
+ case SupportConstants.Element.DEFAULT_VALUE:
+ Object defaultValue = columnRecord.getDefaultValue();
+ if(defaultValue == null) {
+ return false;
+ }
+ return true;
+ case SupportConstants.Element.AUTO_INCREMENT:
+ return columnRecord.isAutoIncrementable();
+ case SupportConstants.Element.CASE_SENSITIVE:
+ return columnRecord.isCaseSensitive();
+ case SupportConstants.Element.SIGNED:
+ return columnRecord.isSigned();
+ default:
+ throw new UnsupportedOperationException(DQPPlugin.Util.getString("TransformationMetadata.Unknown_support_constant___12") + elementConstant); //$NON-NLS-1$
+ }
+ } else if(elementID instanceof ProcedureParameter) {
+ ProcedureParameter columnRecord = (ProcedureParameter) elementID;
+ switch(elementConstant) {
+ case SupportConstants.Element.NULL:
+ return columnRecord.getNullType() == NullType.Nullable;
+ case SupportConstants.Element.NULL_UNKNOWN:
+ return columnRecord.getNullType() == NullType.Unknown;
+ case SupportConstants.Element.SEARCHABLE_COMPARE:
+ case SupportConstants.Element.SEARCHABLE_LIKE:
+ return false;
+ case SupportConstants.Element.SELECT:
+ return columnRecord.getType() != Type.In;
+ case SupportConstants.Element.UPDATE:
+ return false;
+ case SupportConstants.Element.DEFAULT_VALUE:
+ Object defaultValue = columnRecord.getDefaultValue();
+ if(defaultValue == null) {
+ return false;
+ }
+ return true;
+ case SupportConstants.Element.AUTO_INCREMENT:
+ return false;
+ case SupportConstants.Element.CASE_SENSITIVE:
+ return false;
+ case SupportConstants.Element.SIGNED:
+ return true;
+ default:
+ throw new UnsupportedOperationException(DQPPlugin.Util.getString("TransformationMetadata.Unknown_support_constant___12") + elementConstant); //$NON-NLS-1$
+ }
+
+ } else {
+ throw createInvalidRecordTypeException(elementID);
+ }
+ }
+
+ private IllegalArgumentException createInvalidRecordTypeException(Object elementID) {
+ return new IllegalArgumentException(DQPPlugin.Util.getString("TransformationMetadata.Invalid_type", elementID.getClass().getName())); //$NON-NLS-1$
+ }
+
+ /* (non-Javadoc)
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getMaxSetSize(java.lang.Object)
+ */
+ public int getMaxSetSize(final Object modelID) throws MetaMatrixComponentException, QueryMetadataException {
+ ArgCheck.isInstanceOf(Schema.class, modelID);
+ return 0;
+ }
+
+ /* (non-Javadoc)
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getIndexesInGroup(java.lang.Object)
+ */
+ public Collection getIndexesInGroup(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
+ ArgCheck.isInstanceOf(Table.class, groupID);
+ return ((Table)groupID).getIndexes();
+ }
+
+ /* (non-Javadoc)
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getUniqueKeysInGroup(java.lang.Object)
+ */
+ public Collection getUniqueKeysInGroup(final Object groupID)
+ throws MetaMatrixComponentException, QueryMetadataException {
+ ArgCheck.isInstanceOf(Table.class, groupID);
+ Table tableRecordImpl = (Table)groupID;
+ ArrayList<ColumnSet> result = new ArrayList<ColumnSet>(tableRecordImpl.getUniqueKeys());
+ if (tableRecordImpl.getPrimaryKey() != null) {
+ result.add(tableRecordImpl.getPrimaryKey());
+ }
+ for (KeyRecord key : tableRecordImpl.getIndexes()) {
+ if (key.getType() == KeyRecord.Type.Index) {
+ result.add(key);
+ }
+ }
+ return result;
+ }
+
+ /* (non-Javadoc)
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getForeignKeysInGroup(java.lang.Object)
+ */
+ public Collection getForeignKeysInGroup(final Object groupID)
+ throws MetaMatrixComponentException, QueryMetadataException {
+ ArgCheck.isInstanceOf(Table.class, groupID);
+ return ((Table)groupID).getForeignKeys();
+ }
+
+ /* (non-Javadoc)
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getPrimaryKeyIDForForeignKeyID(java.lang.Object)
+ */
+ public Object getPrimaryKeyIDForForeignKeyID(final Object foreignKeyID)
+ throws MetaMatrixComponentException, QueryMetadataException {
+ ArgCheck.isInstanceOf(ForeignKey.class, foreignKeyID);
+ ForeignKey fkRecord = (ForeignKey) foreignKeyID;
+ return fkRecord.getPrimaryKey();
+ }
+
+ /* (non-Javadoc)
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getAccessPatternsInGroup(java.lang.Object)
+ */
+ public Collection getAccessPatternsInGroup(final Object groupID)
+ throws MetaMatrixComponentException, QueryMetadataException {
+ ArgCheck.isInstanceOf(Table.class, groupID);
+ return ((Table)groupID).getAccessPatterns();
+ }
+
+ /* (non-Javadoc)
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getElementIDsInIndex(java.lang.Object)
+ */
+ public List getElementIDsInIndex(final Object index) throws MetaMatrixComponentException, QueryMetadataException {
+ ArgCheck.isInstanceOf(ColumnSet.class, index);
+ return ((ColumnSet)index).getColumns();
+ }
+
+ /* (non-Javadoc)
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getElementIDsInKey(java.lang.Object)
+ */
+ public List getElementIDsInKey(final Object key) throws MetaMatrixComponentException, QueryMetadataException {
+ ArgCheck.isInstanceOf(ColumnSet.class, key);
+ return ((ColumnSet)key).getColumns();
+ }
+
+ /* (non-Javadoc)
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getElementIDsInAccessPattern(java.lang.Object)
+ */
+ public List getElementIDsInAccessPattern(final Object accessPattern)
+ throws MetaMatrixComponentException, QueryMetadataException {
+ ArgCheck.isInstanceOf(ColumnSet.class, accessPattern);
+ return ((ColumnSet)accessPattern).getColumns();
+ }
+
+ /* (non-Javadoc)
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#isXMLGroup(java.lang.Object)
+ */
+ public boolean isXMLGroup(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
+ ArgCheck.isInstanceOf(Table.class, groupID);
+
+ Table tableRecord = (Table) groupID;
+ return tableRecord.getTableType() == Table.Type.Document;
+ }
+
+ /**
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#hasMaterialization(java.lang.Object)
+ * @since 4.2
+ */
+ public boolean hasMaterialization(final Object groupID) throws MetaMatrixComponentException,
+ QueryMetadataException {
+ ArgCheck.isInstanceOf(Table.class, groupID);
+ Table tableRecord = (Table) groupID;
+ return tableRecord.isMaterialized();
+ }
+
+ /**
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getMaterialization(java.lang.Object)
+ * @since 4.2
+ */
+ public Object getMaterialization(final Object groupID) throws MetaMatrixComponentException,
+ QueryMetadataException {
+ ArgCheck.isInstanceOf(Table.class, groupID);
+ Table tableRecord = (Table) groupID;
+ if(tableRecord.isMaterialized()) {
+ return tableRecord.getMaterializedTable();
+ }
+ return null;
+ }
+
+ /**
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getMaterializationStage(java.lang.Object)
+ * @since 4.2
+ */
+ public Object getMaterializationStage(final Object groupID) throws MetaMatrixComponentException,
+ QueryMetadataException {
+ ArgCheck.isInstanceOf(Table.class, groupID);
+ Table tableRecord = (Table) groupID;
+ if(tableRecord.isMaterialized()) {
+ return tableRecord.getMaterializedStageTable();
+ }
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getMappingNode(java.lang.Object)
+ */
+ public MappingNode getMappingNode(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
+ ArgCheck.isInstanceOf(Table.class, groupID);
+
+ Table tableRecord = (Table) groupID;
+ final String groupName = tableRecord.getFullName();
+ if(tableRecord.isVirtual()) {
+ // get mappin transform
+ String document = tableRecord.getSelectTransformation();
+ InputStream inputStream = new ByteArrayInputStream(document.getBytes());
+ MappingLoader reader = new MappingLoader();
+ MappingDocument mappingDoc = null;
+ try{
+ mappingDoc = reader.loadDocument(inputStream);
+ mappingDoc.setName(groupName);
+ } catch (Exception e){
+ throw new MetaMatrixComponentException(e, DQPPlugin.Util.getString("TransformationMetadata.Error_trying_to_read_virtual_document_{0},_with_body__n{1}_1", groupName, mappingDoc)); //$NON-NLS-1$
+ } finally {
+ try {
+ inputStream.close();
+ } catch(Exception e) {}
+ }
+ return (MappingDocument)mappingDoc.clone();
+ }
+
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getVirtualDatabaseName()
+ */
+ public String getVirtualDatabaseName() throws MetaMatrixComponentException, QueryMetadataException {
+ return this.getMetadataStore().getMetadataSource().getName();
+ }
+
+ /* (non-Javadoc)
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getXMLTempGroups(java.lang.Object)
+ */
+ public Collection getXMLTempGroups(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
+ ArgCheck.isInstanceOf(Table.class, groupID);
+ Table tableRecord = (Table) groupID;
+
+ if(tableRecord.getTableType() == Table.Type.Document) {
+ return this.store.getXMLTempGroups(tableRecord);
+ }
+ return Collections.EMPTY_SET;
+ }
+
+ /* (non-Javadoc)
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getCardinality(java.lang.Object)
+ */
+ public int getCardinality(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
+ ArgCheck.isInstanceOf(Table.class, groupID);
+ return ((Table) groupID).getCardinality();
+ }
+
+ /* (non-Javadoc)
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getXMLSchemas(java.lang.Object)
+ */
+ public List getXMLSchemas(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
+
+ ArgCheck.isInstanceOf(Table.class, groupID);
+ Table tableRecord = (Table) groupID;
+
+ // lookup transformation record for the group
+ String groupName = tableRecord.getFullName();
+
+ // get the schema Paths
+ List<String> schemaPaths = tableRecord.getSchemaPaths();
+
+ List<String> schemas = new LinkedList<String>();
+ if (schemaPaths == null) {
+ return schemas;
+ }
+ File f = new File(tableRecord.getResourcePath());
+ String path = f.getParent();
+
+ for (String string : schemaPaths) {
+ String schema = getCharacterVDBResource(string);
+
+ if (schema == null) {
+ schema = getCharacterVDBResource(path + File.separator + string);
+ }
+
+ if (schema == null) {
+ throw new MetaMatrixComponentException(DQPPlugin.Util.getString("TransformationMetadata.Error_trying_to_read_schemas_for_the_document/table____1")+groupName); //$NON-NLS-1$
+ }
+ }
+
+ return schemas;
+ }
+
+ public String getNameInSource(final Object metadataID) throws MetaMatrixComponentException, QueryMetadataException {
+ ArgCheck.isInstanceOf(AbstractMetadataRecord.class, metadataID);
+ return ((AbstractMetadataRecord) metadataID).getNameInSource();
+ }
+
+ public int getElementLength(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
+ if(elementID instanceof Column) {
+ return ((Column) elementID).getLength();
+ } else if(elementID instanceof ProcedureParameter){
+ return ((ProcedureParameter) elementID).getLength();
+ } else {
+ throw createInvalidRecordTypeException(elementID);
+ }
+ }
+
+ public int getPosition(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
+ if(elementID instanceof Column) {
+ return ((Column) elementID).getPosition();
+ } else if(elementID instanceof ProcedureParameter) {
+ return ((ProcedureParameter) elementID).getPosition();
+ } else {
+ throw createInvalidRecordTypeException(elementID);
+ }
+ }
+
+ public int getPrecision(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
+ if(elementID instanceof Column) {
+ return ((Column) elementID).getPrecision();
+ } else if(elementID instanceof ProcedureParameter) {
+ return ((ProcedureParameter) elementID).getPrecision();
+ } else {
+ throw createInvalidRecordTypeException(elementID);
+ }
+ }
+
+ public int getRadix(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
+ if(elementID instanceof Column) {
+ return ((Column) elementID).getRadix();
+ } else if(elementID instanceof ProcedureParameter) {
+ return ((ProcedureParameter) elementID).getRadix();
+ } else {
+ throw createInvalidRecordTypeException(elementID);
+ }
+ }
+
+ public String getFormat(Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
+ if(elementID instanceof Column) {
+ return ((Column) elementID).getFormat();
+ }
+ throw createInvalidRecordTypeException(elementID);
+ }
+
+ public int getScale(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
+ if(elementID instanceof Column) {
+ return ((Column) elementID).getScale();
+ } else if(elementID instanceof ProcedureParameter) {
+ return ((ProcedureParameter) elementID).getScale();
+ } else {
+ throw createInvalidRecordTypeException(elementID);
+ }
+ }
+
+ public int getDistinctValues(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
+ if(elementID instanceof Column) {
+ return ((Column) elementID).getDistinctValues();
+ } else if(elementID instanceof ProcedureParameter) {
+ return -1;
+ } else {
+ throw createInvalidRecordTypeException(elementID);
+ }
+ }
+
+ public int getNullValues(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
+ if(elementID instanceof Column) {
+ return ((Column) elementID).getNullValues();
+ } else if(elementID instanceof ProcedureParameter) {
+ return -1;
+ } else {
+ throw createInvalidRecordTypeException(elementID);
+ }
+ }
+
+ public String getNativeType(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
+ if(elementID instanceof Column) {
+ return ((Column) elementID).getNativeType();
+ } else if(elementID instanceof ProcedureParameter) {
+ return null;
+ } else {
+ throw createInvalidRecordTypeException(elementID);
+ }
+ }
+
+ /*
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getExtensionProperties(java.lang.Object)
+ */
+ public Properties getExtensionProperties(final Object metadataID) throws MetaMatrixComponentException, QueryMetadataException {
+ ArgCheck.isInstanceOf(AbstractMetadataRecord.class, metadataID);
+ AbstractMetadataRecord metadataRecord = (AbstractMetadataRecord) metadataID;
+ Map<String, String> result = metadataRecord.getProperties();
+ if (result == null) {
+ return EMPTY_PROPS;
+ }
+ Properties p = new Properties();
+ p.putAll(result);
+ return p;
+ }
+
+ /**
+ * @see com.metamatrix.query.metadata.BasicQueryMetadata#getBinaryVDBResource(java.lang.String)
+ * @since 4.3
+ */
+ public byte[] getBinaryVDBResource(String resourcePath) throws MetaMatrixComponentException,
+ QueryMetadataException {
+ String content = this.getCharacterVDBResource(resourcePath);
+ if(content != null) {
+ return content.getBytes();
+ }
+ return null;
+ }
+
+ /**
+ * @see com.metamatrix.query.metadata.BasicQueryMetadata#getCharacterVDBResource(java.lang.String)
+ * @since 4.3
+ */
+ public String getCharacterVDBResource(String resourcePath) throws MetaMatrixComponentException,
+ QueryMetadataException {
+ return MetadataSourceUtil.getFileContentAsString(resourcePath, this.getMetadataStore().getMetadataSource());
+ }
+
+ public CompositeMetadataStore getMetadataStore() {
+ return this.store;
+ }
+
+ /**
+ * @see com.metamatrix.query.metadata.BasicQueryMetadata#getVDBResourcePaths()
+ * @since 4.3
+ */
+ public String[] getVDBResourcePaths() throws MetaMatrixComponentException,
+ QueryMetadataException {
+ return getMetadataStore().getMetadataSource().getEntries().toArray(new String[0]);
+ }
+
+ /**
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getModeledType(java.lang.Object)
+ * @since 5.0
+ */
+ public String getModeledType(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
+ Datatype record = getDatatypeRecord(elementID);
+ if (record != null) {
+ return record.getDatatypeID();
+ }
+ return null;
+ }
+
+ /**
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getModeledBaseType(java.lang.Object)
+ * @since 5.0
+ */
+ public String getModeledBaseType(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
+ Datatype record = getDatatypeRecord(elementID);
+ if (record != null) {
+ return record.getBasetypeID();
+ }
+ return null;
+ }
+
+ /**
+ * @see com.metamatrix.query.metadata.QueryMetadataInterface#getModeledPrimitiveType(java.lang.Object)
+ * @since 5.0
+ */
+ public String getModeledPrimitiveType(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
+ Datatype record = getDatatypeRecord(elementID);
+ if (record != null) {
+ return record.getPrimitiveTypeID();
+ }
+ return null;
+ }
+
+ private Datatype getDatatypeRecord(final Object elementID) {
+ if (elementID instanceof Column) {
+ return ((Column)elementID).getDatatype();
+ } else if (elementID instanceof ProcedureParameter) {
+ return ((ProcedureParameter)elementID).getDatatype();
+ } else {
+ throw createInvalidRecordTypeException(elementID);
+ }
+ }
+
+ @Override
+ public Object addToMetadataCache(Object metadataID, String key, Object value)
+ throws MetaMatrixComponentException, QueryMetadataException {
+ ArgCheck.isInstanceOf(AbstractMetadataRecord.class, metadataID);
+ key = getCacheKey(key, (AbstractMetadataRecord)metadataID);
+ return this.metadataCache.put(key, value);
+ }
+
+ @Override
+ public Object getFromMetadataCache(Object metadataID, String key)
+ throws MetaMatrixComponentException, QueryMetadataException {
+ ArgCheck.isInstanceOf(AbstractMetadataRecord.class, metadataID);
+ key = getCacheKey(key, (AbstractMetadataRecord)metadataID);
+ return this.metadataCache.get(key);
+ }
+
+ private String getCacheKey(String key, AbstractMetadataRecord record) {
+ return record.getUUID() + "/" + key; //$NON-NLS-1$
+ }
+
+}
\ No newline at end of file
Modified: branches/JCA/engine/src/main/javacc/com/metamatrix/query/parser/SQLParser.jj
===================================================================
--- branches/JCA/engine/src/main/javacc/com/metamatrix/query/parser/SQLParser.jj 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/javacc/com/metamatrix/query/parser/SQLParser.jj 2009-12-02 23:40:40 UTC (rev 1616)
@@ -196,24 +196,12 @@
TOKEN : /* User variables and literals */
{
- < ALL_IN_GROUP: (<GROUP_PART> | <MMUUID_PART>) <PERIOD> <STAR> >
+ < ALL_IN_GROUP: <ID> <PERIOD> <STAR> >
-| < VARIABLE: <ID> | <MMUUID> >
+| < ID: <QUOTED_ID> (<PERIOD> <QUOTED_ID>)* >
+| < #QUOTED_ID: <ID_PART> | ("\"" (("\"\"") | ~["\""] )+ "\"") >
+| < #ID_PART: (("@" | "#" | <LETTER>) (<LETTER> | "_" | <DIGIT>)*) >
-| < #ID: <GROUP_PART> // Group name
- ( (<PERIOD>|<SLASH>) (<QUOTED_ID> | <MMUUID_PART>) )? > // Element name extension
-
-| < #ELEMENT: <GROUP_PART> (<PERIOD>|<SLASH>) <QUOTED_ID> >
-| < #GROUP_PART: ("#")? (<QUOTED_ID> (<PERIOD>|<SLASH>))? <QUOTED_ID> >
-| < #QUOTED_ID: <DOTTED_ID> | ("\"" <DOTTED_ID> "\"") >
-| < #DOTTED_ID: <ID_PART> ((<PERIOD>|<SLASH>) <ID_PART>)* >
-| < #ID_PART: ("@")? <LETTER> (<ID_CHAR>)* >
-| < #ID_CHAR: (<LETTER> | "_" | <DIGIT>) >
-
-| < #MMUUID: <MMUUID_PART> (<PERIOD> <MMUUID_PART>)? > // Modeler-only mmuuid formats
-| < #MMUUID_PART: "mmuuid:" (<MMUUID_CHAR>)* >
-| < #MMUUID_CHAR: ["a"-"f"] | ["0"-"9"] | "-">
-
| < DATETYPE: "{" "d" >
| < TIMETYPE: "{" "t" >
| < TIMESTAMPTYPE: "{" "ts" >
@@ -222,12 +210,9 @@
| < INTEGERVAL: (<MINUS>)?(<DIGIT>)+ >
| < FLOATVAL: (<MINUS>)? (<DIGIT>)* <PERIOD> (<DIGIT>)+
( ["e", "E"] (["+","-"])? (<DIGIT>)+ )? >
-| < STRINGVAL: (("N")? (<STRINGA> | <STRINGB>)) >
-| < #STRINGA: "'" (~["'"])* ( "''" (~["'"])* )* "'" >
-| < #STRINGB: "\"" (~["\""])* ( "\"\"" (~["\""])* )* "\"" >
+| < STRINGVAL: (("N")? "'" ( ("''") | ~["'"] )* "'") >
| < #LETTER: (["a"-"z","A"-"Z"] | ["\u0153"-"\ufffd"]) >
| < #DIGIT: ["0"-"9"] >
-| < #COLON: ":">
}
@@ -260,6 +245,28 @@
//----------------------------------------------------
//----------------------------------------------------
+String stringVal() :
+{
+ Token t = null;
+}
+{
+ (t = <STRINGVAL>)
+ {
+ return normalizeStringLiteral(t.image);
+ }
+}
+
+String id() :
+{
+ Token t = null;
+}
+{
+ (t = <ID>)
+ {
+ return normalizeId(t.image);
+ }
+}
+
/**
* Parse any of several command types - this is the main parser entry point.
* @param info instructions to parse the command
@@ -309,13 +316,13 @@
Command dropTable(ParseInfo info) :
{
Drop drop = new Drop();
- Token tableToken = null;
+ String table = null;
}
{
<DROP> <TABLE>
- tableToken = <VARIABLE>
+ table = id()
{
- drop.setTable(new GroupSymbol(validateMetadataID(tableToken.image)));
+ drop.setTable(new GroupSymbol(table));
return drop;
}
}
@@ -329,15 +336,15 @@
Command createTempTable(ParseInfo info) :
{
Create create = new Create();
- Token tableToken = null;
+ String table = null;
List columns = null;
}
{
<CREATE> <LOCAL> <TEMPORARY> <TABLE>
- tableToken = <VARIABLE>
+ table = id()
<LPAREN>
{
- create.setTable(new GroupSymbol(validateMetadataID(tableToken.image)));
+ create.setTable(new GroupSymbol(table));
}
columns = createElementsWithTypes(info)
{
@@ -500,7 +507,7 @@
LoopStatement loopStatement(ParseInfo info) :
{
LoopStatement loopStmt = null;
- Token cursor = null;
+ String cursor = null;
QueryCommand query = null;
Block block = null;
}
@@ -511,12 +518,11 @@
query = queryExpression(info)
<RPAREN>
<AS>
- cursor = <VARIABLE>
+ cursor = id()
block = block(info)
{
- String cursorName = cursor.image;
- loopStmt = new LoopStatement(block, query, cursorName);
+ loopStmt = new LoopStatement(block, query, cursor);
return loopStmt;
}
@@ -557,7 +563,7 @@
{
CriteriaSelector critSelector = new CriteriaSelector();
- Token elementToken = null;
+ String element = null;
List elements = new ArrayList();
Token operator = null;
}
@@ -583,18 +589,18 @@
[LOOKAHEAD(4)<ON>
<LPAREN>
- elementToken = <VARIABLE>
+ element = id()
{
- elements.add(new ElementSymbol(validateMetadataID(elementToken.image)));
+ elements.add(new ElementSymbol(element));
}
(<COMMA>
- elementToken = <VARIABLE>
-
- {
- elements.add(new ElementSymbol(validateMetadataID(elementToken.image)));
- }
+ element = id()
+
+ {
+ elements.add(new ElementSymbol(element));
+ }
)*
<RPAREN>
@@ -635,7 +641,7 @@
DeclareStatement declareStatement(ParseInfo info) :
{
DeclareStatement declStmt = null;
- Token varToken = null;
+ String var = null;
Constant type = null;
ElementSymbol variableID = null;
LanguageObject value = null;
@@ -643,9 +649,9 @@
{
<DECLARE>
type = dataType()
- varToken = <VARIABLE>
+ var = id()
{
- variableID = new ElementSymbol(validateMetadataID(varToken.image));
+ variableID = new ElementSymbol(var);
}
[<EQ>
value = assignStatementOperand(info)
@@ -664,14 +670,14 @@
AssignmentStatement assignStatement(ParseInfo info) :
{
LanguageObject value = null;
- Token varToken = null;
+ String var = null;
ElementSymbol elementID = null;
}
{
- varToken = <VARIABLE>
+ var = id()
{
- elementID = new ElementSymbol(validateMetadataID(varToken.image));
+ elementID = new ElementSymbol(var);
}
<EQ>
value = assignStatementOperand(info)
@@ -729,7 +735,7 @@
TranslateCriteria translateCriteria(ParseInfo info) :
{
- Token elementToken = null;
+ String element = null;
Expression value = null;
ElementSymbol leftSymbol = null;
@@ -750,12 +756,12 @@
critList = new ArrayList();
}
<LPAREN>
- elementToken = <VARIABLE>
+ element = id()
<EQ>
value = expression(info)
{
compCrit = new CompareCriteria();
- leftSymbol = new ElementSymbol(elementToken.image);
+ leftSymbol = new ElementSymbol(element);
compCrit.setLeftExpression(leftSymbol);
compCrit.setRightExpression(value);
compCrit.setOperator(CompareCriteria.EQ);
@@ -763,12 +769,12 @@
compCrit = null;
}
( <COMMA>
- elementToken = <VARIABLE>
+ element = id()
<EQ>
value = expression(info)
{
compCrit = new CompareCriteria();
- leftSymbol = new ElementSymbol(elementToken.image);
+ leftSymbol = new ElementSymbol(element);
compCrit.setLeftExpression(leftSymbol);
compCrit.setRightExpression(value);
compCrit.setOperator(CompareCriteria.EQ);
@@ -819,7 +825,7 @@
DynamicCommand dynamicCommand(ParseInfo info) :
{
Expression sql = null;
- Token groupToken = null;
+ String groupID = null;
GroupSymbol group = null;
int updateCount = 0;
Token updateToken = null;
@@ -838,9 +844,8 @@
elements = createElementsWithTypes(info)
[<INTO>
- groupToken = <VARIABLE>
+ groupID = id()
{
- String groupID = validateMetadataID(groupToken.image);
group = new GroupSymbol(groupID);
}
]
@@ -876,22 +881,22 @@
SetClauseList setClauseList(boolean shortName, ParseInfo info) :
{
SetClauseList using = new SetClauseList();
- Token elementToken = null;
+ String element = null;
}
{
- elementToken = <VARIABLE>
+ element = id()
<EQ>
{
- String symbolName = shortName?validateElementName(elementToken.image):validateMetadataID(elementToken.image);
+ String symbolName = shortName?validateElementName(element):element;
ElementSymbol symbol = new ElementSymbol(symbolName);
Expression value = expression(info);
using.addClause(symbol, value);
}
(<COMMA>
- elementToken = <VARIABLE>
+ element = id()
<EQ>
{
- symbolName = shortName?validateElementName(elementToken.image):validateMetadataID(elementToken.image);
+ symbolName = shortName?validateElementName(element):element;
symbol = new ElementSymbol(symbolName);
value = expression(info);
using.addClause(symbol, value);
@@ -903,28 +908,28 @@
}
/**
- * * Create elementes with datatypes
+ * Create elements with datatypes
* @throws ParseException if parsing failed
*/
List createElementsWithTypes(ParseInfo info) :
{
- Token elementToken = null;
+ String element = null;
Constant type = null;
List elements = new ArrayList();
}
{
- elementToken = <VARIABLE>
+ element = id()
type = dataType()
{
- ElementSymbol symbol = new ElementSymbol(validateElementName(elementToken.image));
+ ElementSymbol symbol = new ElementSymbol(validateElementName(element));
symbol.setType(DataTypeManager.getDataTypeClass(type.getValue().toString()));
elements.add(symbol);
}
(<COMMA>
- elementToken = <VARIABLE>
+ element = id()
type = dataType()
{
- symbol = new ElementSymbol(validateElementName(elementToken.image));
+ symbol = new ElementSymbol(validateElementName(element));
symbol.setType(DataTypeManager.getDataTypeClass(type.getValue().toString()));
elements.add(symbol);
}
@@ -939,7 +944,7 @@
StoredProcedure storedProcedure = new StoredProcedure();
storedProcedure.setCallableStatement(true);
Token call = null;
- Token procNameToken = null;
+ String procName = null;
Option option = null;
SPParameter parameter = null;
int parameterIndex = 1;
@@ -952,15 +957,15 @@
storedProcedure.setParameter(parameter);
}
]
- call = <VARIABLE>
+ call = <ID>
{
if (!"call".equalsIgnoreCase(call.image)) { //$NON-NLS-1$
throw new ParseException(QueryPlugin.Util.getString("SQLParser.call_expected")); //$NON-NLS-1$
}
}
- procNameToken = <VARIABLE>
+ procName = id()
{
- storedProcedure.setProcedureName(procNameToken.image);
+ storedProcedure.setProcedureName(procName);
}
//parameters
@@ -992,22 +997,22 @@
StoredProcedure storedProcedure(ParseInfo info) :
{
StoredProcedure storedProcedure = new StoredProcedure();
- Token procNameToken = null;
+ String procName = null;
Option option = null;
}
{
(
(<EXEC> | <EXECUTE>)
- procNameToken = <VARIABLE>
+ procName = id()
{
- storedProcedure.setProcedureName(procNameToken.image);
+ storedProcedure.setProcedureName(procName);
}
//parameters
<LPAREN>
(
- LOOKAHEAD(<VARIABLE> <EQ>)
+ LOOKAHEAD(<ID> <EQ>)
storedProcedure = executeNamedParams(info, storedProcedure)
|
storedProcedure = executeUnnamedParams(info, storedProcedure, 1)
@@ -1071,7 +1076,7 @@
{
storedProcedure.setDisplayNamedParameters(true);
}
- (name=paramName(info)
+ (name=id()
<EQ>
value = expression(info)
{
@@ -1082,7 +1087,7 @@
parameter = null;
}
( <COMMA>
- name=paramName(info)
+ name=id()
<EQ>
value = expression(info)
{
@@ -1101,29 +1106,6 @@
}
/**
- * Parse an execute statement parameter name (must not be
- * enclosed in single or double ticks)
- * @return Parsed insert statement
- * @throws ParseException if parsing failed
- */
-String paramName(ParseInfo info) :
-{
- Token t = null;
- String parameterName = null;
-
-}
-{
- t=<VARIABLE>
- {
- parameterName = t.image;
-
- parameterName = validateMetadataID(parameterName);
-
- return parameterName;
- }
-}
-
-/**
* Parse an INSERT command
* @return Parsed insert statement
* @throws ParseException if parsing failed
@@ -1131,26 +1113,26 @@
Insert insert(ParseInfo info) :
{
Insert insert = new Insert();
- Token groupToken = null;
- Token elementToken = null;
+ String group = null;
+ String element = null;
List values = null;
Option option = null;
QueryCommand query = null;
}
{
<INSERT> <INTO>
- groupToken = <VARIABLE>
+ group = id()
- [LOOKAHEAD(<LPAREN><VARIABLE>)
+ [LOOKAHEAD(<LPAREN><ID>)
<LPAREN>
- elementToken = <VARIABLE>
+ element = id()
{
- insert.addVariable(new ElementSymbol(validateMetadataID(elementToken.image)));
+ insert.addVariable(new ElementSymbol(element));
}
( <COMMA>
- elementToken = <VARIABLE>
+ element = id()
{
- insert.addVariable(new ElementSymbol(validateMetadataID(elementToken.image)));
+ insert.addVariable(new ElementSymbol(element));
}
)*
<RPAREN>
@@ -1180,7 +1162,7 @@
{
// Store group
- insert.setGroup(new GroupSymbol(validateMetadataID(groupToken.image)) );
+ insert.setGroup(new GroupSymbol(group) );
return insert;
}
@@ -1223,7 +1205,7 @@
Update update(ParseInfo info) :
{
Update update = new Update();
- Token groupToken = null;
+ String group = null;
SetClauseList setClauseList = null;
Criteria criteria = null;
ElementSymbol elementID = null;
@@ -1231,7 +1213,7 @@
}
{
<UPDATE>
- groupToken = <VARIABLE>
+ group = id()
<SET>
setClauseList = setClauseList(false, info)
{
@@ -1245,7 +1227,7 @@
]
{
// Store group
- update.setGroup(new GroupSymbol( validateMetadataID(groupToken.image)) );
+ update.setGroup(new GroupSymbol( group) );
// Store optional criteria
if(criteria != null) {
@@ -1264,14 +1246,14 @@
*/
Delete delete(ParseInfo info) :
{
- Token groupToken = null;
+ String group = null;
Criteria criteria = null;
Delete delete = new Delete();
Option option = null;
}
{
<DELETE> <FROM>
- groupToken = <VARIABLE>
+ group = id()
[criteria = where(info)]
[option = option(info)
{
@@ -1279,7 +1261,7 @@
}
]
{
- delete.setGroup(new GroupSymbol(validateMetadataID(groupToken.image)));
+ delete.setGroup(new GroupSymbol(group));
delete.setCriteria(criteria);
return delete;
@@ -1402,14 +1384,14 @@
Into into(ParseInfo info) :
{
- Token groupID = null;
+ String groupID = null;
Into into = null;
}
{
<INTO>
- (groupID=<VARIABLE>)
+ (groupID=id())
{
- into = new Into(new GroupSymbol(groupID.image));
+ into = new Into(new GroupSymbol(groupID));
return into;
}
}
@@ -1458,7 +1440,7 @@
SelectSymbol selectSymbol(ParseInfo info) :
{
Expression expression = null;
- Token aliasToken = null;
+ String alias = null;
Token allInGroupToken = null;
}
{
@@ -1472,50 +1454,32 @@
// Expression
expression=expression(info)
)
- [[<AS>] ( aliasToken=<VARIABLE> |
- aliasToken=<STRINGVAL>
- )
+ [[<AS>] ( alias=id() )
]
)
{
// Validate alias
- String alias = null;
- if(aliasToken != null) {
- alias = validateAlias(aliasToken.image);
+ if(alias != null) {
+ alias = validateAlias(alias);
}
if(allInGroupToken != null) {
- if(aliasToken == null) {
- // Group.*
- return new AllInGroupSymbol(validateMetadataID(allInGroupToken.image));
- } else {
- Object[] params = new Object[] { allInGroupToken.image };
- throw new ParseException(QueryPlugin.Util.getString("SQLParser.Cant_alias_star", params)); //$NON-NLS-1$
- }
- } else if(expression instanceof ElementSymbol) {
- SingleElementSymbol es = (ElementSymbol) expression;
- if(aliasToken != null) {
- // Aliased element
- es = new AliasSymbol(alias, es);
- }
- return es;
+ // Group.*
+ return new AllInGroupSymbol(normalizeId(allInGroupToken.image));
+ }
+ SingleElementSymbol es = null;
+ if(expression instanceof ElementSymbol) {
+ es = (ElementSymbol) expression;
} else if(expression instanceof AggregateSymbol) {
- // This can happen if the aggregate symbol is surrounded by ( ), which
- // can happen when queries are generated in ODBC
- AggregateSymbol aggSymbol = (AggregateSymbol) expression;
- if(aliasToken != null) {
- return new AliasSymbol(alias, aggSymbol);
- } else {
- return aggSymbol;
- }
+ es = (AggregateSymbol)expression;
} else {
String functionName = generateFunctionName(info, null);
- SingleElementSymbol expSymbol = new ExpressionSymbol(functionName, expression);
- if(aliasToken != null) {
- expSymbol = new AliasSymbol(alias, expSymbol);
- }
- return expSymbol;
+ es = new ExpressionSymbol(functionName, expression);
}
+ if(alias != null) {
+ return new AliasSymbol(alias, es);
+ }
+ return es;
}
}
@@ -1733,7 +1697,7 @@
*/
SubqueryFromClause subqueryFromClause(ParseInfo info) :
{
- Token aliasID = null;
+ String aliasID = null;
Command command = null;
SubqueryFromClause clause = null;
Token lparen = null;
@@ -1744,10 +1708,10 @@
command = storedProcedure(info) )
<RPAREN>
[<AS>]
- aliasID = <VARIABLE>
+ aliasID = id()
{
- clause = new SubqueryFromClause(validateAlias(aliasID.image), command);
+ clause = new SubqueryFromClause(validateAlias(aliasID), command);
setFromClauseOptions(lparen, clause);
return clause;
}
@@ -1762,16 +1726,16 @@
{
GroupSymbol group = null;
Token groupID = null;
- Token aliasID = null;
+ String aliasID = null;
UnaryFromClause clause = null;
}
{
- (groupID=<VARIABLE> [[<AS>] aliasID=<VARIABLE>])
+ (groupID=<ID> [[<AS>] aliasID=id()])
{
if(aliasID != null) {
- group = new GroupSymbol(validateAlias(aliasID.image), validateMetadataID(groupID.image));
+ group = new GroupSymbol(validateAlias(aliasID), normalizeId(groupID.image));
} else {
- group = new GroupSymbol(validateMetadataID(groupID.image));
+ group = new GroupSymbol(normalizeId(groupID.image));
}
clause = new UnaryFromClause(group);
setFromClauseOptions(groupID, clause);
@@ -2067,15 +2031,15 @@
Character escapeChar(ParseInfo info) :
{
- Token escStr = null;
+ String escStr = null;
}
{
- <ESCAPE> escStr=<STRINGVAL>
+ <ESCAPE> escStr=stringVal()
{
- if (escStr.image.length() != 3) {
- throw new ParseException(QueryPlugin.Util.getString("SQLParser.Invalid_escape_char", escStr.image)); //$NON-NLS-1$
+ if (escStr.length() != 1) {
+ throw new ParseException(QueryPlugin.Util.getString("SQLParser.Invalid_escape_char", escStr)); //$NON-NLS-1$
}
- return Character.valueOf(escStr.image.charAt(1));
+ return Character.valueOf(escStr.charAt(0));
}
}
@@ -2280,41 +2244,31 @@
*/
OrderBy orderby(ParseInfo info) :
{
- Token id = null;
+ SingleElementSymbol ex = null;
Token type = null;
OrderBy orderby = new OrderBy();
boolean ascending = true;
}
{
<ORDER> <BY>
- (id=<VARIABLE> | id=<STRINGVAL> | id=<INTEGERVAL>) [<ASC> | type=<DESC>]
+ ex=sortKey(info) [<ASC> | type=<DESC>]
{
ascending = true;
if(type != null) {
ascending = false;
type=null;
}
- if (StringUtil.isDigits(id.image)){
- orderby.addVariable(new ElementSymbol(id.image), ascending);
- }
- else{
- orderby.addVariable(new ElementSymbol(validateMetadataID(id.image)), ascending);
- }
+ orderby.addVariable(ex, ascending);
}
(<COMMA>
- (id=<VARIABLE> | id=<STRINGVAL> | id=<INTEGERVAL>) [<ASC> | type=<DESC>]
+ ex=sortKey(info) [<ASC> | type=<DESC>]
{
ascending = true;
if(type != null) {
ascending = false;
type=null;
}
- if (StringUtil.isDigits(id.image)){
- orderby.addVariable(new ElementSymbol(id.image), ascending);
- }
- else{
- orderby.addVariable(new ElementSymbol(validateMetadataID(id.image)), ascending);
- }
+ orderby.addVariable(ex, ascending);
}
)*
{
@@ -2322,6 +2276,33 @@
}
}
+SingleElementSymbol sortKey(ParseInfo info) :
+{
+ Expression ex = null;
+}
+{
+ ex=expression(info)
+ {
+ //legacy support check for positional constants
+ if (ex instanceof Constant) {
+ boolean valid = false;
+ Constant c = (Constant)ex;
+ if (c.getValue() instanceof Integer) {
+ Integer val = (Integer)c.getValue();
+ valid = val.intValue() > 0;
+ }
+ if (!valid) {
+ throw new ParseException(QueryPlugin.Util.getString("SQLParser.non_position_constant", ex)); //$NON-NLS-1$
+ }
+ }
+ if(ex instanceof ElementSymbol) {
+ return (ElementSymbol)ex;
+ }
+ String exprName = generateFunctionName(info, null);
+ return new ExpressionSymbol(exprName, ex);
+ }
+}
+
/**
* <p>Parse an LIMIT clause.</p>
* @return Parsed LIMIT
@@ -2367,7 +2348,7 @@
Token plan = null;
Token debug = null;
Token planOnly = null;
- Token id = null;
+ String id = null;
Token nocache = null;
Option option = new Option();
}
@@ -2379,37 +2360,37 @@
debug = <DEBUG> |
<MAKEDEP>
- id=<VARIABLE>
+ id=id()
{
- option.addDependentGroup(validateMetadataID(id.image));
+ option.addDependentGroup(id);
}
(<COMMA>
- id=<VARIABLE>
+ id=id()
{
- option.addDependentGroup(validateMetadataID(id.image));
+ option.addDependentGroup(id);
}
)* |
<MAKENOTDEP>
- id=<VARIABLE>
+ id=id()
{
- option.addNotDependentGroup(validateMetadataID(id.image));
+ option.addNotDependentGroup(id);
}
(<COMMA>
- id=<VARIABLE>
+ id=id()
{
- option.addNotDependentGroup(validateMetadataID(id.image));
+ option.addNotDependentGroup(id);
}
)* |
nocache = <NOCACHE>
- [id=<VARIABLE>
+ [id=id()
{
- option.addNoCacheGroup(validateMetadataID(id.image));
+ option.addNoCacheGroup(id);
}
(<COMMA>
- id=<VARIABLE>
+ id=id()
{
- option.addNoCacheGroup(validateMetadataID(id.image));
+ option.addNoCacheGroup(id);
}
)*]
)*
@@ -2579,7 +2560,7 @@
(
// Reference
refToken=<QMARK>
- |
+ |
// Literal
literal=literal()
|
@@ -2596,18 +2577,11 @@
LOOKAHEAD(2) (expression=function(info))
|
// ElementSymbol
- (symbol=<VARIABLE>
+ (symbol=<ID>
{
- // Check that this isn't actually a string expression. That
- // is a possibility due to the token definitions where a
- // quoted group ("group") may look like a string constant ("xyz").
- // Due to the ordering of token definitions (which is important
- // in other places), this will be matched as an ID, not as a
- // StringVal. Anywhere that an expression can be used, the
- // only valid choice is as a string constant.
String symbolImage = symbol.image;
if(isStringLiteral(symbolImage, info)) {
- literal = new Constant(symbolImage.substring(1, symbolImage.length()-1));
+ literal = new Constant(normalizeStringLiteral(symbolImage));
symbol = null;
}
}
@@ -2633,7 +2607,7 @@
if(refToken != null) {
return new Reference(info.referenceCount++);
} else if(symbol != null) {
- return new ElementSymbol(validateMetadataID(symbol.image));
+ return new ElementSymbol(normalizeId(symbol.image));
} else if(literal != null) {
return literal; // may be null literal
} else if (subquery != null){
@@ -2841,9 +2815,9 @@
<RPAREN>
)
|
- ( funcToken = <VARIABLE>
+ ( funcName = id()
{
- funcName = validateFunctionName(funcToken.image);
+ funcName = validateFunctionName(funcName);
}
<LPAREN>
[
@@ -2948,21 +2922,12 @@
{
Token t = null;
String strVal = null;
- char tickChar = '\'';
Class escapeType = null;
Constant constant = null;
}
{
(
- t=<STRINGVAL> {
- strVal = t.image;
-
- if(strVal.charAt(0) == 'N') {
- strVal = strVal.substring(1);
- }
- tickChar = strVal.charAt(0);
- strVal = strVal.substring(1, strVal.length()-1);
- strVal = removeEscapeChars(strVal, tickChar);
+ strVal=stringVal() {
constant = new Constant(strVal, DataTypeManager.DefaultDataClasses.STRING);
} |
@@ -3003,10 +2968,9 @@
( (<BOOLEANTYPE> { escapeType=DataTypeManager.DefaultDataClasses.BOOLEAN; } |
<TIMESTAMPTYPE> { escapeType=DataTypeManager.DefaultDataClasses.TIMESTAMP; } |
<DATETYPE> { escapeType=DataTypeManager.DefaultDataClasses.DATE; } |
- <TIMETYPE> { escapeType=DataTypeManager.DefaultDataClasses.TIME; }) t=<STRINGVAL> {
- String str = t.image.substring(1, t.image.length()-1);
+ <TIMETYPE> { escapeType=DataTypeManager.DefaultDataClasses.TIME; }) strVal=stringVal() {
try {
- constant = new Constant(DataTypeManager.transformValue(str, escapeType), escapeType);
+ constant = new Constant(DataTypeManager.transformValue(strVal, escapeType), escapeType);
} catch (TransformationException e) {
throw new ParseException(e.getMessage()); //$NON-NLS-1$
}
Modified: branches/JCA/engine/src/main/resources/com/metamatrix/dqp/i18n.properties
===================================================================
--- branches/JCA/engine/src/main/resources/com/metamatrix/dqp/i18n.properties 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/resources/com/metamatrix/dqp/i18n.properties 2009-12-02 23:40:40 UTC (rev 1616)
@@ -78,8 +78,8 @@
ConnectorWorker.MaxResultRowsExceed=The number of result rows has exceeded the maximum result rows "{0}"
ConnectorWorker.invalidAtomicType=Invalid atomic request message type: {0}.
ConnectorWorker.zero_size_non_last_batch=Connector returned a 0 row non-last batch: {0}.
-ConnectorWorker.requestID_does_not_exist=RequestID {0} does not exist or has been cancelled. The request will not be processed.
-ConnectorWorker.could_not_retrieve_execution=Could not retrieve the execution for atomic requestID {0}. The request may have been cancelled.
+ConnectorWorker.requestID_does_not_exist=RequestID {0} does not exist or has been canceled. The request will not be processed.
+ConnectorWorker.could_not_retrieve_execution=Could not retrieve the execution for atomic requestID {0}. The request may have been canceled.
ConnectorWorker.process_failed=Connector worker process failed for atomic-request={0}
ConnectorWorker.ConnectorWorker_result_set_unexpected_columns=Could not process stored procedure results for {0}. Expected {1} result set columns, but was {2}. Please update your models to allow for stored procedure results batching.
ConnectorWorker.error_occurred=Error occurred on connector {0} - {1}
@@ -110,12 +110,7 @@
DQPBufferService.Error_initializing_buffer_manager__missing_required_property_7=Error initializing buffer manager: missing required property {0}
DQPBufferService.Failed_initializing_buffer_manager._8=Failed initializing buffer manager.
-DQPCore.License_allows_DQP_{0}=License allows DQP {0}
-DQPCore.License_allows_transactions__{0}=License allows transactions: {0}
-DQPCore.License_allows_materialized_views_{0}=License allows materialized views: {0}
-DQPCore.License_allows_updates__{0}=License allows updates: {0}
DQPCore.Exception_trying_to_determine_processor_timeslice_from_{0}=Exception trying to determine processor timeslice from {0}
-DQPCore.Group_names_must_be_set.=Group names must be set.
DQPCore.Unable_to_retrieve_metadata=Unable to retrieve metadata
DQPCore.Unable_to_parse_command=Unable to parse command: {0}
DQPCore.Unable_to_load_metadata_for_VDB_name__{0},_version__{1}=Unable to load metadata for VDB name= {0}, version= {1}
@@ -133,8 +128,8 @@
DQPCore.Clearing_code_table_cache=Clearing code table cache
DQPCore.Unable_to_check_license_for_update_capability._Updates_will_not_be_allowed_3=Unable to check license for update capability. Updates will not be allowed
DQPCore.The_request_has_been_closed.=The request {0} has been closed.
-DQPCore.The_atomic_request_has_been_cancelled=The atomic request {0} has been cancelled.
-DQPCore.The_atomic_request_cancelled_not_closed=The atomic request {0}.{1} has been cancelled, but closed yet.
+DQPCore.The_atomic_request_has_been_cancelled=The atomic request {0} has been canceled.
+DQPCore.The_atomic_request_cancelled_not_closed=The atomic request {0}.{1} has been canceled, but closed yet.
DQPCore.The_atomic_request_closed_queued=The atomic request {0} has queued to close, another request in progress.
DQPCore.failed_to_cancel=Failed to Cancel request, as request already finished processing
@@ -307,8 +302,8 @@
ERR.018.005.0037 = The type of the value does not match that of parameter {0}
ERR.018.005.0038 = Error executing conversion function to convert value.
ERR.018.005.0039 = Problem getting cursor batch for {0}
-ERR.018.005.0040 = The request {0} has been cancelled by the administrator.
-ERR.018.005.0041 = The request {0} has been cancelled.
+ERR.018.005.0040 = The request {0} has been canceled by the administrator.
+ERR.018.005.0041 = The request {0} has been canceled.
ERR.018.005.0042 = Failed to deliver cancellation error response for {0} as it does not have a response receiver.
ERR.018.005.0043 = Error loading configuration while trying to load metadata for system queries.
ERR.018.005.0044 = Error trying to access metadata for loading metadata for elements/keys of the group :{0}
@@ -474,4 +469,67 @@
ConnectorEnvironmentImpl.vdb_scope_error=VDB information is not available; VDB scoped cache can not be accessed.
BufferManagerLobChunkStream.no_tuple_source=Lob chunk is not found in the Buffer Manager with tuple id {0}
-BufferManagerLobChunkStream.error_processing=Error occurred during the fetching of the lob chunk from buffer manager with tuple id {0}
\ No newline at end of file
+BufferManagerLobChunkStream.error_processing=Error occurred during the fetching of the lob chunk from buffer manager with tuple id {0}
+
+TransformationMetadata.does_not_exist._1=does not exist.
+TransformationMetadata.0={0} ambiguous, more than one entity matching the same name
+TransformationMetadata.Group(0}_does_not_have_elements=Group ''{0}'' does not have any elements.
+TransformationMetadata.Error_trying_to_read_virtual_document_{0},_with_body__n{1}_1=Error trying to read virtual document {0}, with body \n{1}
+TransformationMetadata.Unknown_support_constant___12=Unknown support constant:
+TransformationMetadata.error_intialize_selector=Error trying to initialize the index selector.
+TransformationMetadata.Error_trying_to_obtain_index_file_using_IndexSelector_1=Error trying to obtain index file using IndexSelector {0}
+TransformationMetadata.Model_name_ambiguous,more_than_one_model_exist_with_the_name__2=Model name ambiguous, more than one model exists with the name
+TransformationMetadata.The_metadataID_passed_does_not_match_a_index_record._1=The metadataID passed does not match an index record
+TransformationMetadata.Expected_id_of_the_type_key_record_as_the_argument_2=Expected ID of the type key record as the argument
+TransformationMetadata.Expected_id_of_the_type_accesspattern_record_as_the_argument_3=Expected ID of the type accesspattern record as the argument
+TransformationMetadata.No_known_index_file_type_associated_with_the_recordType_1=No known index file type associated with the recordType
+TransformationMetadata.GroupID_ambiguous_there_are_multiple_virtual_plans_available_for_this_groupID__1=GroupID ambiguous, there are multiple virtual plans available for this groupID
+TransformationMetadata.GroupID_ambiguous_there_are_multiple_insert_plans_available_for_this_groupID__2=GroupID ambiguous, there are multiple insert plans available for this groupID
+TransformationMetadata.GroupID_ambiguous_there_are_multiple_update_plans_available_for_this_groupID__3=GroupID ambiguous, there are multiple update plans available for this groupID
+TransformationMetadata.GroupID_ambiguous_there_are_multiple_delete_plans_available_for_this_groupID__4=GroupID ambiguous, there are multiple delete plans available for this groupID
+TransformationMetadata.Failed_to_create_index_files_for_non-indexed_model_resources__1=Failed to create index files for non-indexed model resources :
+TransformationMetadata.Procedure_ambiguous_there_are_multiple_procedure_plans_available_for_this_name___4=Procedure ambiguous, there are multiple procedure plans available for this name:
+TransformationMetadata.Could_not_find_query_plan_for_the_group__5=Could not find query plan for the group
+TransformationMetadata.QueryPlan_could_not_be_found_for_physical_group__6=QueryPlan could not be found for physical group
+TransformationMetadata.InsertPlan_could_not_be_found_for_physical_group__8=InsertPlan could not be found for physical group
+TransformationMetadata.InsertPlan_could_not_be_found_for_physical_group__10=InsertPlan could not be found for physical group
+TransformationMetadata.DeletePlan_could_not_be_found_for_physical_group__12=DeletePlan could not be found for physical group
+TransformationMetadata.Could_not_find_transformation_record_for_the_group__1=Could not find transformation record for the group
+TransformationMetadata.Error_trying_to_read_schemas_for_the_document/table____1=Error trying to read schemas for the document/table :
+TransformationMetadata.Multiple_transformation_records_found_for_the_group___1=Multiple transformation records found for the group:
+TransformationMetadata.Multiple_annotation_records_found_for_the_entity_{0}_1=Multiple annotation records found for the entity {0}
+TransformationMetadata.No_metadata_info_available_for_the_index_with_UUID_{0}._1=No metadata info available for the index with UUID {0}.
+TransformationMetadata.Ambigous_index_with_UUID_{0},_found_multiple_indexes_with_the_given_UUID._2=Ambigous index with UUID {0}, found multiple indexes with the given UUID.
+TransformationMetadata.Invalid_type=Invalid type: {0}.
+TransformationMetadata.Unable_to_determine_fullname_for_element__1=Unable to determine fullname for element
+TransformationMetadata.does_not_exist._1=does not exist.
+TransformationMetadata.0={0} ambiguous, more than one entity matching the same name
+TransformationMetadata.Group(0}_does_not_have_elements=Group ''{0}'' does not have any elements.
+TransformationMetadata.Error_trying_to_read_virtual_document_{0},_with_body__n{1}_1=Error trying to read virtual document {0}, with body \n{1}
+TransformationMetadata.Unknown_support_constant___12=Unknown support constant:
+TransformationMetadata.error_intialize_selector=Error trying to initialize the index selector.
+TransformationMetadata.Error_trying_to_obtain_index_file_using_IndexSelector_1=Error trying to obtain index file using IndexSelector {0}
+TransformationMetadata.Model_name_ambiguous,more_than_one_model_exist_with_the_name__2=Model name ambiguous, more than one model exists with the name
+TransformationMetadata.The_metadataID_passed_does_not_match_a_index_record._1=The metadataID passed does not match an index record
+TransformationMetadata.Expected_id_of_the_type_key_record_as_the_argument_2=Expected ID of the type key record as the argument
+TransformationMetadata.Expected_id_of_the_type_accesspattern_record_as_the_argument_3=Expected ID of the type accesspattern record as the argument
+TransformationMetadata.No_known_index_file_type_associated_with_the_recordType_1=No known index file type associated with the recordType
+TransformationMetadata.GroupID_ambiguous_there_are_multiple_virtual_plans_available_for_this_groupID__1=GroupID ambiguous, there are multiple virtual plans available for this groupID
+TransformationMetadata.GroupID_ambiguous_there_are_multiple_insert_plans_available_for_this_groupID__2=GroupID ambiguous, there are multiple insert plans available for this groupID
+TransformationMetadata.GroupID_ambiguous_there_are_multiple_update_plans_available_for_this_groupID__3=GroupID ambiguous, there are multiple update plans available for this groupID
+TransformationMetadata.GroupID_ambiguous_there_are_multiple_delete_plans_available_for_this_groupID__4=GroupID ambiguous, there are multiple delete plans available for this groupID
+TransformationMetadata.Failed_to_create_index_files_for_non-indexed_model_resources__1=Failed to create index files for non-indexed model resources :
+TransformationMetadata.Procedure_ambiguous_there_are_multiple_procedure_plans_available_for_this_name___4=Procedure ambiguous, there are multiple procedure plans available for this name:
+TransformationMetadata.Could_not_find_query_plan_for_the_group__5=Could not find query plan for the group
+TransformationMetadata.QueryPlan_could_not_be_found_for_physical_group__6=QueryPlan could not be found for physical group
+TransformationMetadata.InsertPlan_could_not_be_found_for_physical_group__8=InsertPlan could not be found for physical group
+TransformationMetadata.InsertPlan_could_not_be_found_for_physical_group__10=InsertPlan could not be found for physical group
+TransformationMetadata.DeletePlan_could_not_be_found_for_physical_group__12=DeletePlan could not be found for physical group
+TransformationMetadata.Could_not_find_transformation_record_for_the_group__1=Could not find transformation record for the group
+TransformationMetadata.Error_trying_to_read_schemas_for_the_document/table____1=Error trying to read schemas for the document/table :
+TransformationMetadata.Multiple_transformation_records_found_for_the_group___1=Multiple transformation records found for the group:
+TransformationMetadata.Multiple_annotation_records_found_for_the_entity_{0}_1=Multiple annotation records found for the entity {0}
+TransformationMetadata.No_metadata_info_available_for_the_index_with_UUID_{0}._1=No metadata info available for the index with UUID {0}.
+TransformationMetadata.Ambigous_index_with_UUID_{0},_found_multiple_indexes_with_the_given_UUID._2=Ambigous index with UUID {0}, found multiple indexes with the given UUID.
+TransformationMetadata.Invalid_type=Invalid type: {0}.
+TransformationMetadata.Unable_to_determine_fullname_for_element__1=Unable to determine fullname for element
\ No newline at end of file
Modified: branches/JCA/engine/src/main/resources/com/metamatrix/query/i18n.properties
===================================================================
--- branches/JCA/engine/src/main/resources/com/metamatrix/query/i18n.properties 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/main/resources/com/metamatrix/query/i18n.properties 2009-12-02 23:40:40 UTC (rev 1616)
@@ -193,6 +193,7 @@
ERR.015.008.0053= Element "{0}" is ambiguous, it exists in two or more groups.
ERR.015.008.0054= Element "{0}" is not defined by any relevant group.
ERR.015.008.0055= Group specified is ambiguous, resubmit the query by fully qualifying the group name
+ambiguous_procedure= Procedure ''{0}'' is ambiguous, use the fully qualified name instead
ERR.015.008.0056= Group does not exist
ERR.015.008.0057= Variable {0} is not resolvable.
ERR.015.008.0058= Variable {0} is declared with an invalid datatype {1}
@@ -297,6 +298,7 @@
ERR.015.012.0039 = Nested aggregate expressions are not allowed: {0}
ERR.015.012.0040 = Aggregate expression has unknown data type: {0}
ERR.015.012.0041 = The aggregate function {0} cannot be used with non-numeric expressions: {1}
+AggregateValidationVisitor.non_comparable = The aggregate function {0} cannot be used with non-comparable expressions: {1}
ERR.015.012.0042 = Cross join may not have criteria: {0}
ERR.015.012.0043 = Join must have criteria declared in the ON clause: {0}
ERR.015.012.0045 = Elements in this join criteria are not from a group involved in the join: {0}
@@ -847,6 +849,8 @@
ResolverUtil.required_param=Required parameter ''{0}'' has no value was set or is an invalid parameter.
ResolverUtil.duplicateName=Cannot create group ''{0}'' with multiple columns named ''{1}''
ResolverUtil.error_converting_value_type=Exception converting value {0} of type {1} to expected type {2}
+ResolverUtil.setquery_order_expression=ORDER BY expression ''{0}'' cannot be used with a set query.
+ResolverUtil.invalid_unrelated=Unrelated order by column {0} cannot be used in a SET query, with SELECT DISTINCT, or GROUP BY
XMLQueryResolver.xml_only_valid_alone=If any symbol in SELECT clause is ''xml'' or group.''xml'' , then no other element is allowed.
EvaluateExpressionVisitor.Cant_get_iterator=Unable to retrieve ValueIterator with independent value expression: {0}
ResolveFunctionsVisitor.xpath_cant_be_null=XPath cannot be null
@@ -855,6 +859,8 @@
TempTableResolver.unqualified_name_required=Cannot create temporary table "{0}". Local temporary tables must be created with unqualified names.
TempTableResolver.table_already_exists=Cannot create temporary table "{0}". A table with the same name already exists.
ValidationVisitor.drop_of_nontemptable=Cannot drop a non temporary table "{0}".
+ValidationVisitor.unrelated_orderby_xml=XML queries cannot order by an unrelated order by item.
+ValidationVisitor.orderby_expression_xml=XML queries cannot order by an expression.
UpdateProcedureResolver.only_variables=Element symbol "{0}" cannot be assigned a value. Only declared VARIABLES can be assigned values.
wrong_result_type=No results found; or non-XML result object has been produced as a result of the execution of XQuery expression. Please note that only XML type results are supported.
MappingLoader.unknown_node_type=Unknown Node Type "{0}" being loaded by the XML mapping document.
Modified: branches/JCA/engine/src/test/java/com/metamatrix/common/buffer/impl/TestBufferManagerImpl.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/common/buffer/impl/TestBufferManagerImpl.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/common/buffer/impl/TestBufferManagerImpl.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -30,6 +30,7 @@
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import java.util.Properties;
import java.util.Random;
@@ -58,6 +59,7 @@
import com.metamatrix.common.types.SQLXMLImpl;
import com.metamatrix.common.types.XMLType;
import com.metamatrix.core.util.UnitTestUtil;
+import com.metamatrix.query.sql.symbol.ElementSymbol;
/**
*/
@@ -87,11 +89,10 @@
List expectedRows = new ArrayList();
- List schema = new ArrayList();
- schema.add("col"); //$NON-NLS-1$
- String[] schemaTypes = new String[] {DataTypeManager.DefaultDataTypes.STRING};
+ List<ElementSymbol> schema = Arrays.asList(new ElementSymbol("col")); //$NON-NLS-1$
+ schema.get(0).setType(DataTypeManager.DefaultDataClasses.STRING);
- TupleSourceID tsID = mgr.createTupleSource(schema, schemaTypes, null, TupleSourceType.PROCESSOR);
+ TupleSourceID tsID = mgr.createTupleSource(schema, null, TupleSourceType.PROCESSOR);
long batchSize = -1;
for(int b=0; b<numBatches; b++) {
@@ -211,9 +212,10 @@
XMLType xml1 = new XMLType(new SQLXMLImpl("<foo/>")); //$NON-NLS-1$
XMLType xml2 = new XMLType(new SQLXMLImpl("<bar/>")); //$NON-NLS-1$
- List schema = new ArrayList();
- schema.add("xml"); //$NON-NLS-1$
- final TupleSourceID id = mgr.createTupleSource(schema, new String[] {DataTypeManager.DefaultDataTypes.XML}, "GROUP1", TupleSourceType.PROCESSOR); //$NON-NLS-1$
+ List<ElementSymbol> schema = Arrays.asList(new ElementSymbol("col")); //$NON-NLS-1$
+ schema.get(0).setType(DataTypeManager.DefaultDataClasses.XML);
+
+ final TupleSourceID id = mgr.createTupleSource(schema, "GROUP1", TupleSourceType.PROCESSOR); //$NON-NLS-1$
List xmlList1 = new ArrayList();
xmlList1.add(xml1);
@@ -232,7 +234,7 @@
assertNotNull(mgr.getStreamable(id, xml1.getReferenceStreamId()));
- final TupleSourceID id1 = mgr.createTupleSource(schema, new String[] {DataTypeManager.DefaultDataTypes.XML}, "GROUP1", TupleSourceType.PROCESSOR); //$NON-NLS-1$
+ final TupleSourceID id1 = mgr.createTupleSource(schema, "GROUP1", TupleSourceType.PROCESSOR); //$NON-NLS-1$
TupleBatch batch1 = new TupleBatch(1, new List[] {xmlList1, xmlList2});
mgr.addTupleBatch(id1, batch1);
@@ -246,9 +248,10 @@
final BufferManager mgr = getTestBufferManager(1, createFakeDatabaseStorageManager());
// save the lob
- List schema = new ArrayList();
- schema.add("xml"); //$NON-NLS-1$
- final TupleSourceID id = mgr.createTupleSource(schema, new String[] {DataTypeManager.DefaultDataTypes.XML}, "GROUP1", TupleSourceType.PROCESSOR); //$NON-NLS-1$
+ List<ElementSymbol> schema = Arrays.asList(new ElementSymbol("col")); //$NON-NLS-1$
+ schema.get(0).setType(DataTypeManager.DefaultDataClasses.XML);
+
+ final TupleSourceID id = mgr.createTupleSource(schema, "GROUP1", TupleSourceType.PROCESSOR); //$NON-NLS-1$
ByteLobChunkStream stream = new ByteLobChunkStream(new FileInputStream(UnitTestUtil.getTestDataPath()+"/LicenseMappingExample.xml"), 11); //$NON-NLS-1$
int i = 1;
@@ -306,12 +309,11 @@
@Test public void testPinning1() throws Exception {
BufferManager mgr = getTestBufferManager(1, createFakeDatabaseStorageManager());
- List schema = new ArrayList();
- schema.add("val"); //$NON-NLS-1$
- schema.add("col"); //$NON-NLS-1$
+ List<ElementSymbol> schema = Arrays.asList(new ElementSymbol("val"), new ElementSymbol("col")); //$NON-NLS-1$ //$NON-NLS-2$
+ schema.get(0).setType(DataTypeManager.DefaultDataClasses.INTEGER);
+ schema.get(1).setType(DataTypeManager.DefaultDataClasses.STRING);
String group = "test"; //$NON-NLS-1$
- String[] schemaTypes = new String[] {DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.STRING};
- TupleSourceID tsID = mgr.createTupleSource(schema, schemaTypes, group, TupleSourceType.PROCESSOR);
+ TupleSourceID tsID = mgr.createTupleSource(schema, group, TupleSourceType.PROCESSOR);
// Add some batches, 1000 at a time
int maxRows = 4000;
@@ -337,12 +339,12 @@
@Test public void testUnpinOfUnpinnedBatch() throws Exception {
BufferManager mgr = getTestBufferManager(1, createFakeDatabaseStorageManager());
- List schema = new ArrayList();
- schema.add("val"); //$NON-NLS-1$
- schema.add("col"); //$NON-NLS-1$
+ List<ElementSymbol> schema = Arrays.asList(new ElementSymbol("val"), new ElementSymbol("col")); //$NON-NLS-1$ //$NON-NLS-2$
+ schema.get(0).setType(DataTypeManager.DefaultDataClasses.INTEGER);
+ schema.get(1).setType(DataTypeManager.DefaultDataClasses.STRING);
+
String group = "test"; //$NON-NLS-1$
- String[] schemaTypes = new String[] {DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.STRING};
- TupleSourceID tsID = mgr.createTupleSource(schema, schemaTypes, group, TupleSourceType.PROCESSOR);
+ TupleSourceID tsID = mgr.createTupleSource(schema, group, TupleSourceType.PROCESSOR);
// Add some batches, 1000 at a time
int maxRows = 4000;
@@ -399,9 +401,9 @@
@Test public void testDeadlockOnMultiThreadClean() throws Exception {
BufferManager mgr = getTestBufferManager(1, createFakeDatabaseStorageManager());
- List schema = new ArrayList();
- schema.add("val"); //$NON-NLS-1$
- String[] schemaTypes = new String[] {DataTypeManager.DefaultDataTypes.STRING};
+ List<ElementSymbol> schema = Arrays.asList(new ElementSymbol("col")); //$NON-NLS-1$
+ schema.get(0).setType(DataTypeManager.DefaultDataClasses.STRING);
+
String group = "test"; //$NON-NLS-1$
int count = 20;
int pins = 50;
@@ -414,7 +416,7 @@
// Setup
for(int t=0; t<count; t++) {
- ids[t] = mgr.createTupleSource(schema, schemaTypes, group, TupleSourceType.PROCESSOR);
+ ids[t] = mgr.createTupleSource(schema, group, TupleSourceType.PROCESSOR);
for(int i=1; i<(batches*rowsPerBatch); i=i+rowsPerBatch) {
mgr.addTupleBatch(ids[t], exampleBigBatch(i, i+rowsPerBatch-1, rowSize));
}
@@ -437,12 +439,12 @@
BufferManager mgr = getTestBufferManager(1, createFakeDatabaseStorageManager());
TupleSourceID tsID = null;
try {
- List schema = new ArrayList();
- schema.add("val"); //$NON-NLS-1$
- schema.add("col"); //$NON-NLS-1$
+ List<ElementSymbol> schema = Arrays.asList(new ElementSymbol("val"), new ElementSymbol("col")); //$NON-NLS-1$ //$NON-NLS-2$
+ schema.get(0).setType(DataTypeManager.DefaultDataClasses.INTEGER);
+ schema.get(1).setType(DataTypeManager.DefaultDataClasses.STRING);
+
String group = "test"; //$NON-NLS-1$
- String[] schemaTypes = new String[] {DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.STRING};
- tsID = mgr.createTupleSource(schema, schemaTypes, group, TupleSourceType.PROCESSOR);
+ tsID = mgr.createTupleSource(schema, group, TupleSourceType.PROCESSOR);
// Add some batches, 1000 at a time
int maxRows = 10000;
@@ -476,11 +478,10 @@
*/
@Test public void testDefect_18499() throws Exception {
BufferManager mgr = getTestBufferManager(1, createFakeDatabaseStorageManager());
- List schema = new ArrayList();
- schema.add("col"); //$NON-NLS-1$
- String[] schemaTypes = new String[] {DataTypeManager.DefaultDataTypes.STRING};
+ List<ElementSymbol> schema = Arrays.asList(new ElementSymbol("col")); //$NON-NLS-1$
+ schema.get(0).setType(DataTypeManager.DefaultDataClasses.STRING);
- TupleSourceID tsID = mgr.createTupleSource(schema, schemaTypes, null, TupleSourceType.PROCESSOR);
+ TupleSourceID tsID = mgr.createTupleSource(schema, null, TupleSourceType.PROCESSOR);
mgr.addTupleBatch(tsID, exampleBigBatch(1, 1000, 512));
mgr.setStatus(tsID, TupleSourceStatus.FULL);
TupleSource ts = mgr.getTupleSource(tsID);
@@ -499,12 +500,12 @@
BufferManager mgr = getTestBufferManager(1, createFakeDatabaseStorageManager());
TupleSourceID tsID = null;
try {
- List schema = new ArrayList();
- schema.add("val"); //$NON-NLS-1$
- schema.add("col"); //$NON-NLS-1$
+ List<ElementSymbol> schema = Arrays.asList(new ElementSymbol("val"), new ElementSymbol("col")); //$NON-NLS-1$ //$NON-NLS-2$
+ schema.get(0).setType(DataTypeManager.DefaultDataClasses.INTEGER);
+ schema.get(1).setType(DataTypeManager.DefaultDataClasses.STRING);
+
String group = "test"; //$NON-NLS-1$
- String[] schemaTypes = new String[] {DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.STRING};
- tsID = mgr.createTupleSource(schema, schemaTypes, group, TupleSourceType.PROCESSOR);
+ tsID = mgr.createTupleSource(schema, group, TupleSourceType.PROCESSOR);
// Add some batches, 1000 at a time
int maxRows = 10000;
@@ -527,20 +528,16 @@
@Test public void testDefect19325() throws Exception{
BufferManagerImpl mgr = (BufferManagerImpl)getTestBufferManager(1, createFakeDatabaseStorageManager());
TupleSourceID tsID = null;
- List schema = new ArrayList();
- schema.add("val"); //$NON-NLS-1$
- schema.add("col"); //$NON-NLS-1$
+ List<ElementSymbol> schema = Arrays.asList(new ElementSymbol("val"), new ElementSymbol("col")); //$NON-NLS-1$ //$NON-NLS-2$
+ schema.get(0).setType(DataTypeManager.DefaultDataClasses.INTEGER);
+ schema.get(1).setType(DataTypeManager.DefaultDataClasses.STRING);
+
String group = "test1"; //$NON-NLS-1$
- String[] schemaTypes = new String[] {DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.STRING};
- tsID = mgr.createTupleSource(schema, schemaTypes, group, TupleSourceType.PROCESSOR);
+ tsID = mgr.createTupleSource(schema, group, TupleSourceType.PROCESSOR);
TupleSourceID tsID2 = null;
- schema = new ArrayList();
- schema.add("val"); //$NON-NLS-1$
- schema.add("col"); //$NON-NLS-1$
group = "test2"; //$NON-NLS-1$
- schemaTypes = new String[] {DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.STRING};
- tsID2 = mgr.createTupleSource(schema, schemaTypes, group, TupleSourceType.PROCESSOR);
+ tsID2 = mgr.createTupleSource(schema, group, TupleSourceType.PROCESSOR);
// Add some batches, 1000 at a time
int maxRows = 50000;
@@ -564,12 +561,12 @@
BufferManager mgr = getTestBufferManager(50, createFakeDatabaseStorageManager());
TupleSourceID tsID = null;
try {
- List schema = new ArrayList();
- schema.add("val"); //$NON-NLS-1$
- schema.add("col"); //$NON-NLS-1$
+ List<ElementSymbol> schema = Arrays.asList(new ElementSymbol("val"), new ElementSymbol("col")); //$NON-NLS-1$ //$NON-NLS-2$
+ schema.get(0).setType(DataTypeManager.DefaultDataClasses.INTEGER);
+ schema.get(1).setType(DataTypeManager.DefaultDataClasses.STRING);
+
String group = "test"; //$NON-NLS-1$
- String[] schemaTypes = new String[] {DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.STRING};
- tsID = mgr.createTupleSource(schema, schemaTypes, group, TupleSourceType.PROCESSOR);
+ tsID = mgr.createTupleSource(schema, group, TupleSourceType.PROCESSOR);
// Add some batches
int maxRows = 10000;
@@ -597,12 +594,12 @@
@Test public void testPinning2() throws Exception {
BufferManager mgr = getTestBufferManager(1, createFakeDatabaseStorageManager());
- List schema = new ArrayList();
- schema.add("val"); //$NON-NLS-1$
- schema.add("col"); //$NON-NLS-1$
+ List<ElementSymbol> schema = Arrays.asList(new ElementSymbol("val"), new ElementSymbol("col")); //$NON-NLS-1$ //$NON-NLS-2$
+ schema.get(0).setType(DataTypeManager.DefaultDataClasses.INTEGER);
+ schema.get(1).setType(DataTypeManager.DefaultDataClasses.STRING);
+
String group = "test"; //$NON-NLS-1$
- String[] schemaTypes = new String[] {DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.STRING};
- TupleSourceID tsID = mgr.createTupleSource(schema, schemaTypes, group, TupleSourceType.PROCESSOR);
+ TupleSourceID tsID = mgr.createTupleSource(schema, group, TupleSourceType.PROCESSOR);
// Add some batches, 1000 at a time
int maxRows = 4000;
Modified: branches/JCA/engine/src/test/java/com/metamatrix/dqp/config/TestDQPLauncher.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/dqp/config/TestDQPLauncher.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/dqp/config/TestDQPLauncher.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -22,7 +22,6 @@
package com.metamatrix.dqp.config;
-import java.util.HashMap;
import java.util.Properties;
import junit.framework.TestCase;
@@ -30,7 +29,6 @@
import org.mockito.Mockito;
import org.teiid.dqp.internal.process.DQPCore;
-import com.metamatrix.common.application.ApplicationService;
import com.metamatrix.common.application.DQPConfigSource;
import com.metamatrix.dqp.service.AutoGenDataService;
import com.metamatrix.dqp.service.BufferService;
Modified: branches/JCA/engine/src/test/java/com/metamatrix/dqp/service/AutoGenDataService.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/dqp/service/AutoGenDataService.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/dqp/service/AutoGenDataService.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -28,8 +28,9 @@
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
+import java.util.Properties;
-import org.teiid.connector.metadata.runtime.ConnectorMetadata;
+import org.teiid.connector.metadata.runtime.MetadataStore;
import org.teiid.dqp.internal.datamgr.impl.ConnectorWorkItem;
import com.metamatrix.api.exception.MetaMatrixComponentException;
@@ -180,7 +181,8 @@
}
@Override
- public ConnectorMetadata getConnectorMetadata(String vdbName, String vdbVersion, String modelName) {
+ public MetadataStore getConnectorMetadata(String vdbName,
+ String vdbVersion, String modelName, Properties importProperties) {
throw new UnsupportedOperationException();
}
Modified: branches/JCA/engine/src/test/java/com/metamatrix/dqp/service/FakeMetadataService.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/dqp/service/FakeMetadataService.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/dqp/service/FakeMetadataService.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -25,10 +25,10 @@
import java.util.HashMap;
import java.util.Map;
-import org.teiid.connector.metadata.runtime.DatatypeRecordImpl;
+import org.teiid.connector.metadata.runtime.Datatype;
+import org.teiid.metadata.CompositeMetadataStore;
import com.metamatrix.api.exception.MetaMatrixComponentException;
-import com.metamatrix.connector.metadata.internal.IObjectSource;
import com.metamatrix.query.metadata.QueryMetadataInterface;
import com.metamatrix.query.unittest.FakeMetadataFactory;
@@ -76,13 +76,13 @@
}
@Override
- public IObjectSource getMetadataObjectSource(String vdbName,
+ public CompositeMetadataStore getMetadataObjectSource(String vdbName,
String vdbVersion) throws MetaMatrixComponentException {
return null;
}
@Override
- public Map<String, DatatypeRecordImpl> getBuiltinDatatypes()
+ public Map<String, Datatype> getBuiltinDatatypes()
throws MetaMatrixComponentException {
return null;
}
Modified: branches/JCA/engine/src/test/java/com/metamatrix/dqp/service/FakeVDBService.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/dqp/service/FakeVDBService.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/dqp/service/FakeVDBService.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -24,8 +24,10 @@
import java.io.InputStream;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -37,52 +39,16 @@
import com.metamatrix.common.application.exception.ApplicationLifecycleException;
import com.metamatrix.common.vdb.api.ModelInfo;
import com.metamatrix.common.vdb.api.VDBArchive;
+import com.metamatrix.vdb.runtime.VDBKey;
/**
*/
public class FakeVDBService extends FakeAbstractService implements VDBService {
private Map vdbsMap = new HashMap(); // VdbInfo -> Map<Model name (upper), <ModelInfo>>
private Map bindingNames = new HashMap(); // binding UUID -> binding name
+ public Collection publicFiles = new HashSet();
+ private boolean defaultPrivate;
- private static class VdbInfo {
- private final String vdbName;
- private final String vdbVersion;
-
- private final String key;
-
- public VdbInfo(String name, String version) {
- this.vdbName = name;
- this.vdbVersion = version;
- this.key = name.toUpperCase() + ":" + version; //$NON-NLS-1$
- }
-
- public String getName() {
- return this.vdbName;
- }
-
- public String getVersion() {
- return this.vdbVersion;
- }
-
- public boolean equals(Object obj) {
- if(obj == null) {
- return false;
- } else if(obj == this) {
- return true;
- } else {
- return this.key.equals(((VdbInfo)obj).key);
- }
- }
-
- public int hashCode() {
- return this.key.hashCode();
- }
-
- public String toString() {
- return vdbName + ":" + vdbVersion; //$NON-NLS-1$
- }
- }
-
private static class FakeModel {
String modelName;
boolean multiSource = false;
@@ -91,6 +57,10 @@
List bindingUUIDs = new ArrayList(); // mapped to names
}
+ public void setDefaultPrivate(boolean defaultPrivate) {
+ this.defaultPrivate = defaultPrivate;
+ }
+
/**
* Method for testing - add a model with the specified properties. The vdb will be created
* automatically under the hood.
@@ -107,7 +77,7 @@
model.multiSource = multiSource;
model.modelName = modelName;
- VdbInfo vdb = new VdbInfo(vdbName, version);
+ VDBKey vdb = new VDBKey(vdbName, version);
Map vdbModels = (Map)this.vdbsMap.get(vdb);
if(vdbModels == null) {
vdbModels = new HashMap();
@@ -131,7 +101,7 @@
FakeModel model = null;
// Find existing model
- VdbInfo vdb = new VdbInfo(vdbName, version);
+ VDBKey vdb = new VDBKey(vdbName, version);
Map vdbModels = (Map)this.vdbsMap.get(vdb);
if(vdbModels != null) {
model = (FakeModel) vdbModels.get(modelName.toUpperCase());
@@ -158,14 +128,14 @@
* @see com.metamatrix.dqp.service.VDBService#isActiveVDB(java.lang.String, java.lang.String)
*/
public boolean isActiveVDB(String vdbName, String vdbVersion) {
- return vdbsMap.containsKey(new VdbInfo(vdbName, vdbVersion));
+ return vdbsMap.containsKey(new VDBKey(vdbName, vdbVersion));
}
/* (non-Javadoc)
* @see com.metamatrix.dqp.service.VDBService#getConnectorBinding(java.lang.String, java.lang.String, java.lang.String)
*/
public List getConnectorBindingNames(String vdbName, String vdbVersion, String modelName) {
- VdbInfo vdb = new VdbInfo(vdbName, vdbVersion);
+ VDBKey vdb = new VDBKey(vdbName, vdbVersion);
Map vdbModels = (Map)this.vdbsMap.get(vdb);
if(vdbModels != null) {
FakeModel model = (FakeModel) vdbModels.get(modelName.toUpperCase());
@@ -187,7 +157,7 @@
* @see com.metamatrix.dqp.service.VDBService#getModelVisibility(java.lang.String, java.lang.String, java.lang.String)
*/
public int getModelVisibility(String vdbName, String vdbVersion, String modelName) {
- VdbInfo vdb = new VdbInfo(vdbName, vdbVersion);
+ VDBKey vdb = new VDBKey(vdbName, vdbVersion);
Map vdbModels = (Map)this.vdbsMap.get(vdb);
if(vdbModels != null) {
FakeModel model = (FakeModel) vdbModels.get(modelName.toUpperCase());
@@ -195,7 +165,9 @@
return model.visibility;
}
}
-
+ if (defaultPrivate) {
+ return ModelInfo.PRIVATE;
+ }
return ModelInfo.PUBLIC;
}
@@ -204,7 +176,10 @@
* @since 4.2
*/
public int getFileVisibility(String vdbName, String vdbVersion, String pathInVDB) throws MetaMatrixComponentException {
- return ModelInfo.PUBLIC;
+ if(this.publicFiles.contains(pathInVDB)) {
+ return ModelInfo.PUBLIC;
+ }
+ return ModelInfo.PRIVATE;
}
/* (non-Javadoc)
@@ -240,7 +215,7 @@
public List getMultiSourceModels(String vdbName,
String vdbVersion) throws MetaMatrixComponentException {
- VdbInfo vdb = new VdbInfo(vdbName, vdbVersion);
+ VDBKey vdb = new VDBKey(vdbName, vdbVersion);
Map vdbModels = (Map)this.vdbsMap.get(vdb);
if(vdbModels != null) {
List multiModels = new ArrayList();
@@ -293,11 +268,6 @@
}
@Override
- public String getActiveVDBVersion(String vdbName, String vdbVersion) {
- throw new UnsupportedOperationException();
- }
-
- @Override
public VDBArchive getVDB(String vdbName, String vdbVersion)
throws MetaMatrixComponentException {
throw new UnsupportedOperationException();
Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/function/TestFunction.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/function/TestFunction.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/function/TestFunction.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -188,18 +188,6 @@
expected2, actual2);
}
- public static void helpTestTimestampDiff(String intervalType, Time timeStamp1, Time timeStamp2, Long expected) {
- Object actual = FunctionMethods.timestampDiff(intervalType, timeStamp1, timeStamp2);
- assertEquals("timestampDiff(" + intervalType + ", " + timeStamp1 + ", " + timeStamp2 + ") failed", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- expected, actual);
-
- // test reverse - should be
- Long expected2 = new Long(0 - expected.longValue());
- Object actual2 = FunctionMethods.timestampDiff(intervalType, timeStamp2, timeStamp1);
- assertEquals("timestampDiff(" + intervalType + ", " + timeStamp2 + ", " + timeStamp1 + ") failed", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- expected2, actual2);
- }
-
public static void helpTestParseTimestamp(String tsStr, String format, String expected) throws FunctionExecutionException {
Object actual = FunctionMethods.parseTimestamp(tsStr, format);
assertEquals("parseTimestamp(" + tsStr + ", " + format + ") failed", expected.toString(), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
@@ -856,18 +844,10 @@
helpTestTimestampCreate(TimestampUtil.createDate(103, 11, 1), TimestampUtil.createTime(23, 59, 59), "2003-12-01 23:59:59.0"); //$NON-NLS-1$
}
- @Test public void testTimestampAdd1() throws Exception {
- assertEquals(TimestampUtil.createDate(103, 11, 4), FunctionMethods.timestampAdd(ReservedWords.SQL_TSI_DAY, 3, TimestampUtil.createDate(103, 11, 1)));
- }
-
@Test public void testTimestampAdd2() throws Exception {
assertEquals(TimestampUtil.createTimestamp(103, 11, 1, 18, 20, 30, 0), FunctionMethods.timestampAdd(ReservedWords.SQL_TSI_HOUR, 3, TimestampUtil.createTimestamp(103, 11, 1, 15, 20, 30, 0)));
}
- @Test public void testTimestampAdd3() throws Exception {
- assertEquals(TimestampUtil.createTime(11, 50, 30), FunctionMethods.timestampAdd(ReservedWords.SQL_TSI_MINUTE, 90, TimestampUtil.createTime(10, 20, 30)));
- }
-
@Test public void testTimestampDiffTimeStamp_FracSec_1() throws Exception {
helpTestTimestampDiff(ReservedWords.SQL_TSI_FRAC_SECOND,
TimestampUtil.createTimestamp((2001-1900), 5, 21, 3, 9, 35, 1),
@@ -1034,19 +1014,17 @@
new Long(29));
}
- @Test public void testTimestampDiffTime_Hour_1() throws Exception {
- helpTestTimestampDiff(ReservedWords.SQL_TSI_HOUR,
- TimestampUtil.createTime(3, 4, 45),
- TimestampUtil.createTime(5, 5, 36),
- new Long(2));
- }
+ @Test public void testTimestampDiffTime_Hour_1() throws Exception {
+ helpTestTimestampDiff(ReservedWords.SQL_TSI_HOUR, new Timestamp(
+ TimestampUtil.createTime(3, 4, 45).getTime()), new Timestamp(
+ TimestampUtil.createTime(5, 5, 36).getTime()), new Long(2));
+ }
- @Test public void testTimestampDiffTime_Hour_2() throws Exception {
- helpTestTimestampDiff(ReservedWords.SQL_TSI_HOUR,
- TimestampUtil.createTime(5, 0, 30),
- TimestampUtil.createTime(3, 0, 31),
- new Long(-1));
- }
+ @Test public void testTimestampDiffTime_Hour_2() throws Exception {
+ helpTestTimestampDiff(ReservedWords.SQL_TSI_HOUR, new Timestamp(
+ TimestampUtil.createTime(5, 0, 30).getTime()), new Timestamp(
+ TimestampUtil.createTime(3, 0, 31).getTime()), new Long(-1));
+ }
@Test public void testParseTimestamp1() throws Exception {
helpTestParseTimestamp("1993-04-24 3:59:59 PM", "yyyy-MM-dd hh:mm:ss aa", "{ts'1993-04-24 15:59:59.0'}"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
@@ -1158,16 +1136,16 @@
assertEquals(systemProperty+"_lowercase", FunctionMethods.env(context, systemProperty.toUpperCase())); //$NON-NLS-1$
}
- public void testParseIntStrictness() throws Exception {
- assertEquals(Integer.valueOf(1), FunctionMethods.parseInteger("a 1 a", "#")); //$NON-NLS-1$ //$NON-NLS-2$
+ @Test(expected=FunctionExecutionException.class) public void testParseIntStrictness() throws Exception {
+ FunctionMethods.parseInteger("a 1 a", "#"); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testParseDateStrictness() throws Exception {
- assertEquals(TimestampUtil.createDate(2007, 1, 1), FunctionMethods.parseDate(" 2007-13-01", "yyyy-MM")); //$NON-NLS-1$ //$NON-NLS-2$
+ @Test public void testParseDateStrictness() throws Exception {
+ assertEquals(TimestampUtil.createTimestamp(108, 0, 1, 0, 0, 0, 0), FunctionMethods.parseTimestamp(" 2007-13-01", "yyyy-MM")); //$NON-NLS-1$ //$NON-NLS-2$
}
@Test public void testParseTimeWhitespace() throws Exception {
- assertEquals(TimestampUtil.createTime(15, 0, 0), FunctionMethods.parseTime(" 15:00:00 ", "HH:mm:ss")); //$NON-NLS-1$ //$NON-NLS-2$
+ assertEquals(TimestampUtil.createTime(15, 0, 0), FunctionMethods.parseTimestamp(" 15:00:00 ", "HH:mm:ss")); //$NON-NLS-1$ //$NON-NLS-2$
}
@Test public void testMod() {
Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/function/TestFunctionLibrary.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/function/TestFunctionLibrary.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/function/TestFunctionLibrary.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -22,6 +22,8 @@
package com.metamatrix.query.function;
+import static org.junit.Assert.*;
+
import java.math.BigDecimal;
import java.math.BigInteger;
import java.sql.Date;
@@ -32,7 +34,6 @@
import java.util.Properties;
import java.util.TimeZone;
-import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -789,45 +790,6 @@
helpCreateDescriptor("env", new Class[] {T_STRING})); //$NON-NLS-1$
}
- @Test public void testInvokeFormatTime1() {
- helpInvokeMethod("formatTime", new Object[] {TimestampUtil.createTime(3,5,12), new String("h:mm a") }, "3:05 AM"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
-
- @Test public void testInvokeFormatTime2() {
- helpInvokeMethod("formatTime", new Object[] {TimestampUtil.createTime(13, 5,12), new String("K:mm a, z") }, "1:05 PM, GMT-06:00"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
-
- @Test public void testInvokeFormatTime3() {
- helpInvokeMethod("formatTime", new Object[] {TimestampUtil.createTime(13, 5,12), new String("HH:mm:ss z") }, "13:05:12 GMT-06:00"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
-
- @Test public void testInvokeFormatTime4() {
- TimestampWithTimezone.resetCalendar(TimeZone.getTimeZone("America/Chicago")); //$NON-NLS-1$
- helpInvokeMethod("formatTime", new Object[] {TimestampUtil.createTime(13, 5,12), new String("hh a, zzzz") }, "01 PM, Central Standard Time"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
-
- @Test public void testInvokeFormatTimeFail() {
- helpInvokeMethodFail("formatTime", new Object[] {TimestampUtil.createTime(13, 5,12), new String("hh i, www") }, //$NON-NLS-1$ //$NON-NLS-2$
- new FunctionExecutionException("")); //$NON-NLS-1$
- }
-
- @Test public void testInvokeFormatDate1() {
- helpInvokeMethod("formatDate", new Object[] {TimestampUtil.createDate(103, 2, 5), new String("yyyy.MM.dd G") }, "2003.03.05 AD"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
-
- @Test public void testInvokeFormatDate2() {
- helpInvokeMethod("formatDate", new Object[] {TimestampUtil.createDate(103, 2, 5), new String("EEE, MMM d, '' yy") }, "Wed, Mar 5, ' 03"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
-
- @Test public void testInvokeFormatDate3() {
- helpInvokeMethod("formatDate", new Object[] {new Date(12345678), new String("yyyy.MMMMM.dd GGG hh:mm aaa") }, "1969.December.31 AD 09:25 PM"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
-
- @Test public void testInvokeFormatDateFail() {
- helpInvokeMethodFail("formatTime", new Object[] {TimestampUtil.createTime(103, 2, 5), new String("yyyy.i.www") }, //$NON-NLS-1$ //$NON-NLS-2$
- new FunctionExecutionException("")); //$NON-NLS-1$
- }
-
@Test public void testInvokeFormatTimestamp1() {
helpInvokeMethod("formatTimestamp", new Object[] {TimestampUtil.createTimestamp(103, 2, 5, 3, 4, 12, 255), new String("mm/dd/yy h:mm a") }, "04/05/03 3:04 AM"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
@@ -845,22 +807,6 @@
new FunctionExecutionException("")); //$NON-NLS-1$
}
- @Test public void testInvokeParseTime1() {
- helpInvokeMethod("parseTime", new Object[] {new String("3:12 PM"), new String("h:mm a") }, TimestampUtil.createTime(15, 12, 0)); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
-
- @Test public void testInvokeParseTime2() {
- helpInvokeMethod("parseTime", new Object[] {new String("03:12:23 CST"), new String("hh:mm:ss z") }, TimestampUtil.createTime(3, 12, 23)); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
-
- @Test public void testInvokeParseDate1() {
- helpInvokeMethod("parseDate", new Object[] {new String("03/05/03"), new String("MM/dd/yy") }, TimestampUtil.createDate(103, 2, 5)); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
-
- @Test public void testInvokeParseDate2() {
- helpInvokeMethod("parseDate", new Object[] {new String("05-Mar-03"), new String("dd-MMM-yy") }, TimestampUtil.createDate(103, 2, 5)); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
-
@Test public void testInvokeParseTimestamp1() {
helpInvokeMethod("parseTimestamp", new Object[] {new String("05 Mar 2003 03:12:23 CST"), new String("dd MMM yyyy HH:mm:ss z") }, TimestampUtil.createTimestamp(103, 2, 5, 3, 12, 23, 0)); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
@@ -1062,75 +1008,63 @@
new Integer(5), new String("cat")}, new String("Downtocat")); //$NON-NLS-1$ //$NON-NLS-2$
}
- /** date + day --> count=28, inteval=day, result should be 2003-6-12 */
- @Test public void testInvokeTimestampAddDate1() {
- helpInvokeMethod("timestampAdd", new Object[] {ReservedWords.SQL_TSI_DAY, //$NON-NLS-1$
- new Integer(28), TimestampUtil.createDate(103, 4, 15)}, TimestampUtil.createDate(103, 5, 12));
- }
-
@Test public void testInvokeTimestampAddDate_ignore_case() {
helpInvokeMethod("timestampAdd", new Object[] {"sql_TSI_day", //$NON-NLS-1$ //$NON-NLS-2$
- new Integer(28), TimestampUtil.createDate(103, 4, 15)}, TimestampUtil.createDate(103, 5, 12));
+ new Integer(28), new Timestamp(TimestampUtil.createDate(103, 4, 15).getTime())}, new Timestamp(TimestampUtil.createDate(103, 5, 12).getTime()));
}
- /** date + day --> count=-28, inteval=day, result should be 2003-4-17 */
- @Test public void testInvokeTimestampAddDate1a() {
- helpInvokeMethod("timestampAdd", new Object[] {ReservedWords.SQL_TSI_DAY, //$NON-NLS-1$
- new Integer(-28), TimestampUtil.createDate(103, 4, 15)}, TimestampUtil.createDate(103, 3, 17));
- }
-
/** date + month --> count=18, inteval=month, result should be 2004-11-15 */
@Test public void testInvokeTimestampAddDate2() {
helpInvokeMethod("timestampAdd", new Object[] {ReservedWords.SQL_TSI_MONTH, //$NON-NLS-1$
- new Integer(18), TimestampUtil.createDate(103, 4, 15)}, TimestampUtil.createDate(104, 10, 15));
+ new Integer(18), new Timestamp(TimestampUtil.createDate(103, 4, 15).getTime())}, new Timestamp(TimestampUtil.createDate(104, 10, 15).getTime()));
}
/** date + month --> count=-18, inteval=month, result should be 2001-11-15 */
@Test public void testInvokeTimestampAddDate2a() {
helpInvokeMethod("timestampAdd", new Object[] {ReservedWords.SQL_TSI_MONTH, //$NON-NLS-1$
- new Integer(-18), TimestampUtil.createDate(103, 4, 15)}, TimestampUtil.createDate(101, 10, 15));
+ new Integer(-18), new Timestamp(TimestampUtil.createDate(103, 4, 15).getTime())}, new Timestamp(TimestampUtil.createDate(101, 10, 15).getTime()));
}
/** date + week --> count=6, inteval=week, result should be 2003-04-03 */
@Test public void testInvokeTimestampAddDate3() {
helpInvokeMethod("timestampAdd", new Object[] {ReservedWords.SQL_TSI_WEEK, //$NON-NLS-1$
- new Integer(-6), TimestampUtil.createDate(103, 4, 15)}, TimestampUtil.createDate(103, 3, 3));
+ new Integer(-6), new Timestamp(TimestampUtil.createDate(103, 4, 15).getTime())}, new Timestamp(TimestampUtil.createDate(103, 3, 3).getTime()));
}
/** date + quarter --> count=3, inteval=quarter, result should be 2004-2-15 */
@Test public void testInvokeTimestampAddDate4() {
helpInvokeMethod("timestampAdd", new Object[] {ReservedWords.SQL_TSI_QUARTER, //$NON-NLS-1$
- new Integer(3), TimestampUtil.createDate(103, 4, 15)}, TimestampUtil.createDate(104, 1, 15));
+ new Integer(3), new Timestamp(TimestampUtil.createDate(103, 4, 15).getTime())}, new Timestamp(TimestampUtil.createDate(104, 1, 15).getTime()));
}
/** date + year --> count=-1, inteval=year, result should be 2002-5-15 */
@Test public void testInvokeTimestampAddDate5() {
helpInvokeMethod("timestampAdd", new Object[] {ReservedWords.SQL_TSI_YEAR, //$NON-NLS-1$
- new Integer(-1), TimestampUtil.createDate(103, 4, 15)}, TimestampUtil.createDate(102, 4, 15));
+ new Integer(-1), new Timestamp(TimestampUtil.createDate(103, 4, 15).getTime())}, new Timestamp(TimestampUtil.createDate(102, 4, 15).getTime()));
}
/** time + minute --> count=23, inteval=3, result should be 03:32:12 */
@Test public void testInvokeTimestampAddTime1() {
helpInvokeMethod("timestampAdd", new Object[] {ReservedWords.SQL_TSI_MINUTE, //$NON-NLS-1$
- new Integer(23), TimestampUtil.createTime(3, 9, 12)}, TimestampUtil.createTime(3, 32, 12));
+ new Integer(23), new Timestamp(TimestampUtil.createTime(3, 9, 12).getTime())}, new Timestamp(TimestampUtil.createTime(3, 32, 12).getTime()));
}
/** time + hour --> count=21, inteval=4, result should be 00:09:12 and overflow */
@Test public void testInvokeTimestampAddTime2() {
helpInvokeMethod("timestampAdd", new Object[] {ReservedWords.SQL_TSI_HOUR, //$NON-NLS-1$
- new Integer(21), TimestampUtil.createTime(3, 9, 12)}, TimestampUtil.createTime(0, 9, 12));
+ new Integer(21), new Timestamp(TimestampUtil.createTime(3, 9, 12).getTime())}, TimestampUtil.createTimestamp(70, 0, 2, 0, 9, 12, 0));
}
/** time + hour --> count=2, inteval=4, result should be 01:12:12*/
@Test public void testInvokeTimestampAddTime3() {
helpInvokeMethod("timestampAdd", new Object[] {ReservedWords.SQL_TSI_HOUR, //$NON-NLS-1$
- new Integer(2), TimestampUtil.createTime(23, 12, 12)}, TimestampUtil.createTime(1, 12, 12));
+ new Integer(2), new Timestamp(TimestampUtil.createTime(23, 12, 12).getTime())}, TimestampUtil.createTimestamp(70, 0, 2, 1, 12, 12, 0));
}
/** time + second --> count=23, inteval=2, result should be 03:10:01 */
@Test public void testInvokeTimestampAddTime4() {
helpInvokeMethod("timestampAdd", new Object[] {ReservedWords.SQL_TSI_SECOND, //$NON-NLS-1$
- new Integer(49), TimestampUtil.createTime(3, 9, 12)}, TimestampUtil.createTime(3, 10, 1));
+ new Integer(49), new Timestamp(TimestampUtil.createTime(3, 9, 12).getTime())}, new Timestamp(TimestampUtil.createTime(3, 10, 1).getTime()));
}
/** timestamp + second --> count=23, inteval=2, result should be 2003-05-15 03:09:35.100 */
@@ -1159,13 +1093,13 @@
/** time --> interval=hour, time1 = 03:04:45, time2= 05:05:36 return = 2 */
@Test public void testInvokeTimestampDiffTime1() {
helpInvokeMethod("timestampDiff", new Object[] {ReservedWords.SQL_TSI_HOUR, //$NON-NLS-1$
- TimestampUtil.createTime(3, 4, 45), TimestampUtil.createTime(5, 5, 36) },
+ new Timestamp(TimestampUtil.createTime(3, 4, 45).getTime()), new Timestamp(TimestampUtil.createTime(5, 5, 36).getTime()) },
new Long(2));
}
@Test public void testInvokeTimestampDiffTime1_ignorecase() {
helpInvokeMethod("timestampDiff", new Object[] {"SQL_tsi_HOUR", //$NON-NLS-1$ //$NON-NLS-2$
- TimestampUtil.createTime(3, 4, 45), TimestampUtil.createTime(5, 5, 36) },
+ new Timestamp(TimestampUtil.createTime(3, 4, 45).getTime()), new Timestamp(TimestampUtil.createTime(5, 5, 36).getTime()) },
new Long(2));
}
Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/TestAggregatePushdown.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/TestAggregatePushdown.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/TestAggregatePushdown.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -28,6 +28,8 @@
import com.metamatrix.query.optimizer.TestOptimizer.ComparisonMode;
import com.metamatrix.query.optimizer.capabilities.BasicSourceCapabilities;
+import com.metamatrix.query.optimizer.capabilities.CapabilitiesFinder;
+import com.metamatrix.query.optimizer.capabilities.DefaultCapabilitiesFinder;
import com.metamatrix.query.optimizer.capabilities.FakeCapabilitiesFinder;
import com.metamatrix.query.optimizer.capabilities.SourceCapabilities.Capability;
import com.metamatrix.query.processor.ProcessorPlan;
@@ -50,13 +52,8 @@
return caps;
}
- private FakeCapabilitiesFinder getAggregatesFinder() {
- FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
- BasicSourceCapabilities caps = getAggregateCapabilities();
- capFinder.addCapabilities("m1", caps); //$NON-NLS-1$
- capFinder.addCapabilities("m2", caps); //$NON-NLS-1$
-
- return capFinder;
+ public static CapabilitiesFinder getAggregatesFinder() {
+ return new DefaultCapabilitiesFinder(getAggregateCapabilities());
}
@Test public void testCase6327() {
Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/TestExpressionsInGroupBy.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/TestExpressionsInGroupBy.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/TestExpressionsInGroupBy.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -46,10 +46,10 @@
// Create capabilities
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = new BasicSourceCapabilities();
+ caps.setCapabilitySupport(Capability.QUERY_SELECT_EXPRESSION, true);
caps.setCapabilitySupport(Capability.QUERY_GROUP_BY, true);
caps.setCapabilitySupport(Capability.QUERY_AGGREGATES_COUNT_STAR, true);
caps.setCapabilitySupport(Capability.QUERY_FROM_GROUP_ALIAS, true);
- caps.setCapabilitySupport(Capability.QUERY_FUNCTIONS_IN_GROUP_BY, true);
caps.setCapabilitySupport(Capability.QUERY_FROM_INLINE_VIEWS, true);
caps.setFunctionSupport("convert", true); //$NON-NLS-1$
capFinder.addCapabilities("BQT1", caps); //$NON-NLS-1$
@@ -70,10 +70,10 @@
// Create capabilities
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = new BasicSourceCapabilities();
+ caps.setCapabilitySupport(Capability.QUERY_SELECT_EXPRESSION, true);
caps.setCapabilitySupport(Capability.QUERY_GROUP_BY, true);
caps.setCapabilitySupport(Capability.QUERY_AGGREGATES_COUNT_STAR, true);
caps.setCapabilitySupport(Capability.QUERY_FROM_GROUP_ALIAS, true);
- caps.setCapabilitySupport(Capability.QUERY_FUNCTIONS_IN_GROUP_BY, true);
caps.setCapabilitySupport(Capability.QUERY_FROM_INLINE_VIEWS, true);
caps.setFunctionSupport("convert", true); //$NON-NLS-1$
capFinder.addCapabilities("BQT1", caps); //$NON-NLS-1$
@@ -222,6 +222,7 @@
// Plan query
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = new BasicSourceCapabilities();
+ caps.setCapabilitySupport(Capability.QUERY_SELECT_EXPRESSION, true);
caps.setCapabilitySupport(Capability.QUERY_CASE, true);
caps.setCapabilitySupport(Capability.QUERY_SEARCHED_CASE, true);
caps.setCapabilitySupport(Capability.QUERY_AGGREGATES_SUM, true);
Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/TestJoinOptimization.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/TestJoinOptimization.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/TestJoinOptimization.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -407,24 +407,9 @@
String sql = "select bqt1.smalla.intkey, bqt2.smalla.intkey from bqt1.smalla left outer join bqt2.smalla on (bqt1.smalla.stringkey = bqt2.smalla.intkey and bqt2.smalla.intkey = null)"; //$NON-NLS-1$
// Plan query
- ProcessorPlan plan = TestOptimizer.helpPlan(sql, FakeMetadataFactory.exampleBQTCached(), new String[] {"SELECT bqt1.smalla.intkey FROM bqt1.smalla"}); //$NON-NLS-1$
+ ProcessorPlan plan = TestOptimizer.helpPlan(sql, FakeMetadataFactory.exampleBQTCached(), new String[] {"SELECT bqt1.smalla.intkey, null FROM bqt1.smalla"}); //$NON-NLS-1$
- TestOptimizer.checkNodeTypes(plan, new int[] {
- 1, // Access
- 0, // DependentAccess
- 0, // DependentSelect
- 0, // DependentProject
- 0, // DupRemove
- 0, // Grouping
- 0, // Join
- 0, // MergeJoin
- 0, // Null
- 0, // PlanExecution
- 1, // Project
- 0, // Select
- 0, // Sort
- 0 // UnionAll
- });
+ TestOptimizer.checkNodeTypes(plan, TestOptimizer.FULL_PUSHDOWN);
}
@Test public void testPushMultiGroupJoinCriteria() throws Exception {
@@ -884,6 +869,7 @@
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = new BasicSourceCapabilities();
+ caps.setCapabilitySupport(Capability.QUERY_SELECT_EXPRESSION, true);
caps.setCapabilitySupport(Capability.CRITERIA_COMPARE_EQ, true);
caps.setCapabilitySupport(Capability.CRITERIA_COMPARE_EQ, true);
caps.setCapabilitySupport(Capability.QUERY_FROM_JOIN_INNER, true);
Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/TestOptimizer.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/TestOptimizer.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/TestOptimizer.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -49,7 +49,6 @@
import com.metamatrix.query.optimizer.capabilities.CapabilitiesFinder;
import com.metamatrix.query.optimizer.capabilities.DefaultCapabilitiesFinder;
import com.metamatrix.query.optimizer.capabilities.FakeCapabilitiesFinder;
-import com.metamatrix.query.optimizer.capabilities.SourceCapabilities;
import com.metamatrix.query.optimizer.capabilities.SourceCapabilities.Capability;
import com.metamatrix.query.optimizer.relational.AliasGenerator;
import com.metamatrix.query.optimizer.relational.rules.CapabilitiesUtil;
@@ -130,6 +129,7 @@
public static BasicSourceCapabilities getTypicalCapabilities() {
BasicSourceCapabilities caps = new BasicSourceCapabilities();
caps.setCapabilitySupport(Capability.QUERY_SELECT_DISTINCT, true);
+ caps.setCapabilitySupport(Capability.QUERY_SELECT_EXPRESSION, true);
caps.setCapabilitySupport(Capability.QUERY_FROM_JOIN_INNER, true);
caps.setCapabilitySupport(Capability.QUERY_FROM_JOIN_OUTER, true);
caps.setCapabilitySupport(Capability.QUERY_FROM_JOIN_OUTER_FULL, true);
@@ -157,12 +157,7 @@
caps.setCapabilitySupport(Capability.QUERY_FROM_JOIN_INNER, false);
caps.setCapabilitySupport(Capability.QUERY_ORDERBY, false);
}
- CapabilitiesFinder finder = new CapabilitiesFinder() {
- public SourceCapabilities findCapabilities(String modelName) throws MetaMatrixComponentException {
- return caps;
- }
- };
- return finder;
+ return new DefaultCapabilitiesFinder(caps);
}
public static CapabilitiesFinder getGenericFinder() {
@@ -807,17 +802,17 @@
}
public void testInsert() {
- helpPlan("Insert into pm1.g1 (pm1.g1.e1, pm1.g1.e2) values (\"MyString\", 1)", FakeMetadataFactory.example1Cached(), //$NON-NLS-1$
+ helpPlan("Insert into pm1.g1 (pm1.g1.e1, pm1.g1.e2) values ('MyString', 1)", FakeMetadataFactory.example1Cached(), //$NON-NLS-1$
new String[] { "INSERT INTO pm1.g1 (pm1.g1.e1, pm1.g1.e2) VALUES ('MyString', 1)"} ); //$NON-NLS-1$
}
public void testUpdate1() {
- helpPlan("Update pm1.g1 Set pm1.g1.e1= LTRIM(\"MyString\"), pm1.g1.e2= 1 where pm1.g1.e3= \"true\"", FakeMetadataFactory.example1Cached(), //$NON-NLS-1$
+ helpPlan("Update pm1.g1 Set pm1.g1.e1= LTRIM('MyString'), pm1.g1.e2= 1 where pm1.g1.e3= 'true'", FakeMetadataFactory.example1Cached(), //$NON-NLS-1$
new String[] { "UPDATE pm1.g1 SET pm1.g1.e1 = 'MyString', pm1.g1.e2 = 1 WHERE pm1.g1.e3 = TRUE"} ); //$NON-NLS-1$
}
public void testUpdate2() {
- helpPlan("Update pm1.g1 Set pm1.g1.e1= LTRIM(\"MyString\"), pm1.g1.e2= 1 where pm1.g1.e2= convert(pm1.g1.e4, integer)", FakeMetadataFactory.example1Cached(), //$NON-NLS-1$
+ helpPlan("Update pm1.g1 Set pm1.g1.e1= LTRIM('MyString'), pm1.g1.e2= 1 where pm1.g1.e2= convert(pm1.g1.e4, integer)", FakeMetadataFactory.example1Cached(), //$NON-NLS-1$
new String[] { "UPDATE pm1.g1 SET pm1.g1.e1 = 'MyString', pm1.g1.e2 = 1 WHERE pm1.g1.e2 = convert(pm1.g1.e4, integer)"} ); //$NON-NLS-1$
}
@@ -953,16 +948,16 @@
public void testPushCriteriaThroughUnion11() {
helpPlan("select * from vm1.u8 where const = 's3' or e1 is null", example1(), //$NON-NLS-1$
- new String[] { "SELECT e1 FROM pm1.g3", //$NON-NLS-1$
- "SELECT e1 FROM pm1.g2 WHERE e1 IS NULL", //$NON-NLS-1$
- "SELECT e1 FROM pm1.g1 WHERE e1 IS NULL" } ); //$NON-NLS-1$
+ new String[] { "SELECT 's3', e1 FROM pm1.g3", //$NON-NLS-1$
+ "SELECT 's2', e1 FROM pm1.g2 WHERE e1 IS NULL", //$NON-NLS-1$
+ "SELECT 's1', e1 FROM pm1.g1 WHERE e1 IS NULL" } ); //$NON-NLS-1$
}
public void testPushCriteriaThroughUnion12() {
helpPlan("select * from vm1.u8 where const = 's1' or e1 is null", example1(), //$NON-NLS-1$
- new String[] { "SELECT e1 FROM pm1.g3 WHERE e1 IS NULL", //$NON-NLS-1$
- "SELECT e1 FROM pm1.g2 WHERE e1 IS NULL", //$NON-NLS-1$
- "SELECT e1 FROM pm1.g1" } ); //$NON-NLS-1$
+ new String[] { "SELECT 's3', e1 FROM pm1.g3 WHERE e1 IS NULL", //$NON-NLS-1$
+ "SELECT 's2', e1 FROM pm1.g2 WHERE e1 IS NULL", //$NON-NLS-1$
+ "SELECT 's1', e1 FROM pm1.g1" } ); //$NON-NLS-1$
}
/** defect #4997 */
@@ -2382,7 +2377,7 @@
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = new BasicSourceCapabilities();
caps.setCapabilitySupport(Capability.CRITERIA_COMPARE_EQ, true);
- caps.setFunctionSupport(SourceSystemFunctions.UCASE, true); //$NON-NLS-1$
+ caps.setFunctionSupport(SourceSystemFunctions.UCASE, true);
capFinder.addCapabilities("pm1", caps); //$NON-NLS-1$
// Add join capability to pm1
@@ -2401,9 +2396,10 @@
public void testPushFunctionInSelect1() {
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = new BasicSourceCapabilities();
+ caps.setCapabilitySupport(Capability.QUERY_SELECT_EXPRESSION, true);
caps.setCapabilitySupport(Capability.CRITERIA_COMPARE_EQ, true);
- caps.setFunctionSupport(SourceSystemFunctions.UCASE, true); //$NON-NLS-1$
- caps.setFunctionSupport(SourceSystemFunctions.LCASE, true); //$NON-NLS-1$
+ caps.setFunctionSupport(SourceSystemFunctions.UCASE, true);
+ caps.setFunctionSupport(SourceSystemFunctions.LCASE, true);
capFinder.addCapabilities("pm1", caps); //$NON-NLS-1$
// Add join capability to pm1
@@ -2422,9 +2418,10 @@
public void testPushFunctionInSelect2() {
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = new BasicSourceCapabilities();
+ caps.setCapabilitySupport(Capability.QUERY_SELECT_EXPRESSION, true);
caps.setCapabilitySupport(Capability.CRITERIA_COMPARE_EQ, true);
- caps.setFunctionSupport(SourceSystemFunctions.UCASE, true); //$NON-NLS-1$
- caps.setFunctionSupport(SourceSystemFunctions.LCASE, true); //$NON-NLS-1$
+ caps.setFunctionSupport(SourceSystemFunctions.UCASE, true);
+ caps.setFunctionSupport(SourceSystemFunctions.LCASE, true);
capFinder.addCapabilities("pm1", caps); //$NON-NLS-1$
// Add join capability to pm1
@@ -2444,8 +2441,8 @@
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = new BasicSourceCapabilities();
caps.setCapabilitySupport(Capability.CRITERIA_COMPARE_EQ, true);
- caps.setFunctionSupport(SourceSystemFunctions.UCASE, true); //$NON-NLS-1$
- caps.setFunctionSupport(SourceSystemFunctions.LCASE, false); //$NON-NLS-1$
+ caps.setFunctionSupport(SourceSystemFunctions.UCASE, true);
+ caps.setFunctionSupport(SourceSystemFunctions.LCASE, false);
capFinder.addCapabilities("pm1", caps); //$NON-NLS-1$
// Add join capability to pm1
@@ -2479,9 +2476,10 @@
public void testPushFunctionInSelect4() {
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = new BasicSourceCapabilities();
+ caps.setCapabilitySupport(Capability.QUERY_SELECT_EXPRESSION, true);
caps.setCapabilitySupport(Capability.CRITERIA_COMPARE_EQ, true);
- caps.setFunctionSupport(SourceSystemFunctions.UCASE, true); //$NON-NLS-1$
- caps.setFunctionSupport(SourceSystemFunctions.LCASE, true); //$NON-NLS-1$
+ caps.setFunctionSupport(SourceSystemFunctions.UCASE, true);
+ caps.setFunctionSupport(SourceSystemFunctions.LCASE, true);
capFinder.addCapabilities("pm1", caps); //$NON-NLS-1$
// Add join capability to pm1
@@ -2500,9 +2498,10 @@
public void testPushFunctionInSelect5() {
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = new BasicSourceCapabilities();
+ caps.setCapabilitySupport(Capability.QUERY_SELECT_EXPRESSION, true);
caps.setCapabilitySupport(Capability.CRITERIA_COMPARE_EQ, true);
- caps.setFunctionSupport(SourceSystemFunctions.UCASE, true); //$NON-NLS-1$
- caps.setFunctionSupport(SourceSystemFunctions.LCASE, true); //$NON-NLS-1$
+ caps.setFunctionSupport(SourceSystemFunctions.UCASE, true);
+ caps.setFunctionSupport(SourceSystemFunctions.LCASE, true);
capFinder.addCapabilities("pm1", caps); //$NON-NLS-1$
// Add join capability to pm1
@@ -2556,10 +2555,11 @@
public void testPushFunctionInSelectWithOrderBy1() {
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = new BasicSourceCapabilities();
+ caps.setCapabilitySupport(Capability.QUERY_SELECT_EXPRESSION, true);
caps.setCapabilitySupport(Capability.CRITERIA_COMPARE_EQ, true);
caps.setCapabilitySupport(Capability.QUERY_ORDERBY, true);
- caps.setFunctionSupport(SourceSystemFunctions.UCASE, true); //$NON-NLS-1$
- caps.setFunctionSupport(SourceSystemFunctions.LCASE, true); //$NON-NLS-1$
+ caps.setFunctionSupport(SourceSystemFunctions.UCASE, true);
+ caps.setFunctionSupport(SourceSystemFunctions.LCASE, true);
capFinder.addCapabilities("pm1", caps); //$NON-NLS-1$
// Add join capability to pm1
@@ -2579,10 +2579,11 @@
public void testPushFunctionInSelectWithOrderBy1a() {
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = new BasicSourceCapabilities();
+ caps.setCapabilitySupport(Capability.QUERY_SELECT_EXPRESSION, true);
caps.setCapabilitySupport(Capability.CRITERIA_COMPARE_EQ, true);
caps.setCapabilitySupport(Capability.QUERY_ORDERBY, true);
- caps.setFunctionSupport(SourceSystemFunctions.UCASE, true); //$NON-NLS-1$
- caps.setFunctionSupport(SourceSystemFunctions.LCASE, true); //$NON-NLS-1$
+ caps.setFunctionSupport(SourceSystemFunctions.UCASE, true);
+ caps.setFunctionSupport(SourceSystemFunctions.LCASE, true);
capFinder.addCapabilities("pm1", caps); //$NON-NLS-1$
// Add join capability to pm1
@@ -2602,10 +2603,11 @@
public void testPushFunctionInSelectWithOrderBy2() {
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = new BasicSourceCapabilities();
+ caps.setCapabilitySupport(Capability.QUERY_SELECT_EXPRESSION, true);
caps.setCapabilitySupport(Capability.CRITERIA_COMPARE_EQ, true);
caps.setCapabilitySupport(Capability.QUERY_ORDERBY, true);
- caps.setFunctionSupport(SourceSystemFunctions.UCASE, true); //$NON-NLS-1$
- caps.setFunctionSupport(SourceSystemFunctions.LCASE, true); //$NON-NLS-1$
+ caps.setFunctionSupport(SourceSystemFunctions.UCASE, true);
+ caps.setFunctionSupport(SourceSystemFunctions.LCASE, true);
capFinder.addCapabilities("pm1", caps); //$NON-NLS-1$
// Add join capability to pm1
@@ -2626,7 +2628,7 @@
BasicSourceCapabilities caps = new BasicSourceCapabilities();
caps.setCapabilitySupport(Capability.CRITERIA_COMPARE_EQ, true);
caps.setCapabilitySupport(Capability.QUERY_FROM_JOIN_INNER, true);
- caps.setFunctionSupport(SourceSystemFunctions.UCASE, true); //$NON-NLS-1$
+ caps.setFunctionSupport(SourceSystemFunctions.UCASE, true);
caps.setFunctionSupport("convert", true); //$NON-NLS-1$
capFinder.addCapabilities("pm1", caps); //$NON-NLS-1$
@@ -2648,7 +2650,7 @@
BasicSourceCapabilities caps = new BasicSourceCapabilities();
caps.setCapabilitySupport(Capability.CRITERIA_COMPARE_EQ, true);
caps.setCapabilitySupport(Capability.QUERY_FROM_JOIN_INNER, true);
- caps.setFunctionSupport(SourceSystemFunctions.UCASE, true); //$NON-NLS-1$
+ caps.setFunctionSupport(SourceSystemFunctions.UCASE, true);
caps.setFunctionSupport("convert", true); //$NON-NLS-1$
capFinder.addCapabilities("pm1", caps); //$NON-NLS-1$
@@ -2686,7 +2688,7 @@
BasicSourceCapabilities caps = new BasicSourceCapabilities();
caps.setCapabilitySupport(Capability.CRITERIA_COMPARE_EQ, true);
caps.setCapabilitySupport(Capability.QUERY_FROM_JOIN_INNER, true);
- caps.setFunctionSupport(SourceSystemFunctions.UCASE, true); //$NON-NLS-1$
+ caps.setFunctionSupport(SourceSystemFunctions.UCASE, true);
caps.setFunctionSupport("convert", true); //$NON-NLS-1$
capFinder.addCapabilities("pm1", caps); //$NON-NLS-1$
@@ -2722,6 +2724,7 @@
public void testUnionOverFunctions() {
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = new BasicSourceCapabilities();
+ caps.setCapabilitySupport(Capability.QUERY_SELECT_EXPRESSION, true);
caps.setCapabilitySupport(Capability.CRITERIA_COMPARE_EQ, true);
caps.setCapabilitySupport(Capability.QUERY_FROM_JOIN_INNER, true);
caps.setFunctionSupport("convert", true); //$NON-NLS-1$
@@ -2966,6 +2969,7 @@
public void testPushSubqueryInWhereClause3() {
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = new BasicSourceCapabilities();
+ caps.setCapabilitySupport(Capability.QUERY_SELECT_EXPRESSION, true);
caps.setCapabilitySupport(Capability.CRITERIA_IN, true);
caps.setCapabilitySupport(Capability.CRITERIA_IN_SUBQUERY, true);
caps.setFunctionSupport("ltrim", true); //$NON-NLS-1$
@@ -2984,6 +2988,7 @@
public void testPushSubqueryInWhereClause4() {
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = new BasicSourceCapabilities();
+ caps.setCapabilitySupport(Capability.QUERY_SELECT_EXPRESSION, true);
caps.setCapabilitySupport(Capability.CRITERIA_IN, true);
caps.setCapabilitySupport(Capability.CRITERIA_IN_SUBQUERY, true);
caps.setFunctionSupport("ltrim", true); //$NON-NLS-1$
@@ -3279,8 +3284,6 @@
capFinder.addCapabilities("pm2", caps); //$NON-NLS-1$
FakeMetadataFacade metadata = FakeMetadataFactory.example1();
- FakeMetadataObject model = metadata.getStore().findObject("pm1", FakeMetadataObject.MODEL); //$NON-NLS-1$
- FakeMetadataObject model2 = metadata.getStore().findObject("pm2", FakeMetadataObject.MODEL); //$NON-NLS-1$
FakeMetadataObject g1 = metadata.getStore().findObject("pm1.g1", FakeMetadataObject.GROUP); //$NON-NLS-1$
g1.putProperty(FakeMetadataObject.Props.CARDINALITY, new Integer(RuleChooseDependent.DEFAULT_INDEPENDENT_CARDINALITY + 500));
FakeMetadataObject g2 = metadata.getStore().findObject("pm2.g2", FakeMetadataObject.GROUP); //$NON-NLS-1$
@@ -3322,7 +3325,6 @@
capFinder.addCapabilities("pm1", caps); //$NON-NLS-1$
FakeMetadataFacade metadata = FakeMetadataFactory.example1();
- FakeMetadataObject model = metadata.getStore().findObject("pm1", FakeMetadataObject.MODEL); //$NON-NLS-1$
FakeMetadataObject g1 = metadata.getStore().findObject("pm1.g1", FakeMetadataObject.GROUP); //$NON-NLS-1$
g1.putProperty(FakeMetadataObject.Props.CARDINALITY, new Integer(RuleChooseDependent.DEFAULT_INDEPENDENT_CARDINALITY + 500));
FakeMetadataObject g2 = metadata.getStore().findObject("pm1.g2", FakeMetadataObject.GROUP); //$NON-NLS-1$
@@ -3595,25 +3597,9 @@
/** defect 21965 */
public void testLookupFunctionInSelect() {
ProcessorPlan plan = helpPlan("SELECT e1, LOOKUP('pm1.g1','e1', 'e2', 1) FROM pm1.g2", FakeMetadataFactory.example1Cached(), //$NON-NLS-1$
- new String[] { "SELECT e1 FROM pm1.g2" }); //$NON-NLS-1$
+ new String[] { "SELECT e1, LOOKUP('pm1.g1','e1', 'e2', 1) FROM pm1.g2" }); //$NON-NLS-1$
- checkNodeTypes(plan, new int[] {
- 1, // Access
- 0, // DependentAccess
- 0, // DependentSelect
- 0, // DependentProject
- 0, // DupRemove
- 0, // Grouping
- 0, // NestedLoopJoinStrategy
- 0, // MergeJoinStrategy
- 0, // Null
- 0, // PlanExecution
- 1, // Project
- 0, // Select
- 0, // Sort
- 0 // UnionAll
- });
-
+ checkNodeTypes(plan, FULL_PUSHDOWN);
}
// SELECT * FROM (SELECT IntKey FROM BQT1.SmallA UNION ALL SELECT DISTINCT IntNum FROM BQT1.SmallA) AS x WHERE IntKey = 0
@@ -3653,7 +3639,7 @@
ProcessorPlan plan = helpPlan(
"SELECT VDBName PKVDB, PKGroupFullName, PKElementName, VDBName FKVDB,FKGroupFullName, FKElementName, convert(FKPosition, short) As FKPosition, FKKeyName, PKKeyName " + //$NON-NLS-1$
- "FROM System.ReferenceKeyElements WHERE PKKeyType = 'Primary' AND FKKeyType = 'Foreign' AND FKGroupFullName = \"PartsOracle.SUPPLIER_PARTS\"", //$NON-NLS-1$
+ "FROM System.ReferenceKeyElements WHERE PKKeyType = 'Primary' AND FKKeyType = 'Foreign' AND FKGroupFullName = 'PartsOracle.SUPPLIER_PARTS'", //$NON-NLS-1$
FakeMetadataFactory.exampleSystemPhysical(),
null, capFinder,
new String[] {
@@ -4075,6 +4061,7 @@
public void testUnionPushdownWithFunctionsAndAliases() {
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = new BasicSourceCapabilities();
+ caps.setCapabilitySupport(Capability.QUERY_SELECT_EXPRESSION, true);
caps.setCapabilitySupport(Capability.QUERY_FROM_GROUP_ALIAS, true);
caps.setCapabilitySupport(Capability.QUERY_FROM_JOIN_INNER, true);
caps.setCapabilitySupport(Capability.QUERY_UNION, true);
@@ -4133,6 +4120,7 @@
public void testUnionNoAllPushdownInInlineView() {
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = new BasicSourceCapabilities();
+ caps.setCapabilitySupport(Capability.QUERY_SELECT_EXPRESSION, true);
caps.setCapabilitySupport(Capability.QUERY_FROM_GROUP_ALIAS, true);
caps.setCapabilitySupport(Capability.QUERY_FROM_JOIN_INNER, true);
caps.setCapabilitySupport(Capability.QUERY_UNION, true);
@@ -4184,6 +4172,7 @@
public void testUnionAllPushdownVirtualGroup() {
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = new BasicSourceCapabilities();
+ caps.setCapabilitySupport(Capability.QUERY_SELECT_EXPRESSION, true);
caps.setCapabilitySupport(Capability.QUERY_FROM_GROUP_ALIAS, true);
caps.setCapabilitySupport(Capability.QUERY_FROM_JOIN_INNER, true);
caps.setCapabilitySupport(Capability.QUERY_UNION, true);
@@ -4272,6 +4261,7 @@
public void testPushCaseInSelect() {
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = new BasicSourceCapabilities();
+ caps.setCapabilitySupport(Capability.QUERY_SELECT_EXPRESSION, true);
caps.setCapabilitySupport(Capability.CRITERIA_COMPARE_EQ, true);
caps.setCapabilitySupport(Capability.QUERY_CASE, true);
caps.setCapabilitySupport(Capability.QUERY_SEARCHED_CASE, true);
@@ -4328,6 +4318,7 @@
public void testPushSearchedCaseInSelect() {
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = new BasicSourceCapabilities();
+ caps.setCapabilitySupport(Capability.QUERY_SELECT_EXPRESSION, true);
caps.setCapabilitySupport(Capability.CRITERIA_COMPARE_EQ, true);
caps.setCapabilitySupport(Capability.QUERY_SEARCHED_CASE, true);
capFinder.addCapabilities("pm1", caps); //$NON-NLS-1$
@@ -4885,6 +4876,7 @@
// Plan query
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = new BasicSourceCapabilities();
+ caps.setCapabilitySupport(Capability.QUERY_SELECT_EXPRESSION, true);
caps.setCapabilitySupport(Capability.QUERY_AGGREGATES, true);
caps.setCapabilitySupport(Capability.QUERY_AGGREGATES_SUM, true);
caps.setFunctionSupport("+", true); //$NON-NLS-1$
@@ -5604,6 +5596,7 @@
public void testCase2507() {
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = new BasicSourceCapabilities();
+ caps.setCapabilitySupport(Capability.QUERY_SELECT_EXPRESSION, true);
caps.setCapabilitySupport(Capability.CRITERIA_COMPARE_EQ, true);
caps.setCapabilitySupport(Capability.CRITERIA_COMPARE_ORDERED, true);
caps.setCapabilitySupport(Capability.CRITERIA_IN, true);
@@ -5633,6 +5626,7 @@
public void testCase2507A() {
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = new BasicSourceCapabilities();
+ caps.setCapabilitySupport(Capability.QUERY_SELECT_EXPRESSION, true);
caps.setCapabilitySupport(Capability.CRITERIA_COMPARE_EQ, true);
caps.setCapabilitySupport(Capability.CRITERIA_COMPARE_ORDERED, true);
caps.setCapabilitySupport(Capability.CRITERIA_IN, true);
@@ -5661,6 +5655,7 @@
public void testCase2507B() {
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = new BasicSourceCapabilities();
+ caps.setCapabilitySupport(Capability.QUERY_SELECT_EXPRESSION, true);
caps.setCapabilitySupport(Capability.CRITERIA_COMPARE_EQ, true);
caps.setCapabilitySupport(Capability.CRITERIA_COMPARE_ORDERED, true);
caps.setCapabilitySupport(Capability.CRITERIA_IN, true);
@@ -5986,12 +5981,12 @@
/*
* Select literals created by runtime evaluation should not be pushed down.
*/
- public void testCase4017() {
+ public void testCase4017() throws Exception {
String sql = "SELECT env('soap_host') AS HOST, intkey from bqt2.smalla"; //$NON-NLS-1$
- helpPlan(sql, FakeMetadataFactory.exampleBQTCached(),
- new String[] {"SELECT intkey FROM bqt2.smalla"}); //$NON-NLS-1$
+ helpPlan(sql, FakeMetadataFactory.exampleBQTCached(), null, new DefaultCapabilitiesFinder(),
+ new String[] {"SELECT bqt2.smalla.intkey FROM bqt2.smalla"}, ComparisonMode.EXACT_COMMAND_STRING); //$NON-NLS-1$
}
/**
@@ -6216,6 +6211,7 @@
// Plan query
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = new BasicSourceCapabilities();
+ caps.setCapabilitySupport(Capability.QUERY_SELECT_EXPRESSION, true);
caps.setCapabilitySupport(Capability.QUERY_FROM_JOIN_INNER, true);
caps.setCapabilitySupport(Capability.QUERY_FROM_JOIN_OUTER, true);
caps.setCapabilitySupport(Capability.QUERY_FROM_JOIN_OUTER_FULL, true);
@@ -6241,6 +6237,7 @@
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = new BasicSourceCapabilities();
+ caps.setCapabilitySupport(Capability.QUERY_SELECT_EXPRESSION, true);
caps.setCapabilitySupport(Capability.CRITERIA_COMPARE_EQ, true);
caps.setCapabilitySupport(Capability.CRITERIA_COMPARE_ORDERED, true);
caps.setCapabilitySupport(Capability.CRITERIA_IN, true);
@@ -6307,6 +6304,7 @@
// Plan query
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = new BasicSourceCapabilities();
+ caps.setCapabilitySupport(Capability.QUERY_SELECT_EXPRESSION, true);
caps.setCapabilitySupport(Capability.CRITERIA_COMPARE_EQ, true);
caps.setCapabilitySupport(Capability.QUERY_ORDERBY, true);
caps.setFunctionSupport("concat", true); //$NON-NLS-1$
Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/TestRuleMergeVirtual.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/TestRuleMergeVirtual.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/TestRuleMergeVirtual.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -22,8 +22,10 @@
package com.metamatrix.query.optimizer;
-import junit.framework.TestCase;
+import org.junit.Test;
+import static junit.framework.Assert.*;
+
import com.metamatrix.query.optimizer.capabilities.BasicSourceCapabilities;
import com.metamatrix.query.optimizer.capabilities.FakeCapabilitiesFinder;
import com.metamatrix.query.optimizer.capabilities.SourceCapabilities.Capability;
@@ -33,174 +35,90 @@
import com.metamatrix.query.unittest.FakeMetadataFacade;
import com.metamatrix.query.unittest.FakeMetadataFactory;
-public class TestRuleMergeVirtual extends TestCase {
+public class TestRuleMergeVirtual {
- public void testSimpleMergeGroupBy() {
- FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
- BasicSourceCapabilities caps = new BasicSourceCapabilities();
- caps.setCapabilitySupport(Capability.QUERY_AGGREGATES, true);
- caps.setCapabilitySupport(Capability.QUERY_AGGREGATES_MAX, true);
- capFinder.addCapabilities("pm1", caps); //$NON-NLS-1$
-
+ @Test public void testSimpleMergeGroupBy() {
ProcessorPlan plan = TestOptimizer.helpPlan("SELECT x FROM (SELECT e1, max(e2) as x FROM pm1.g1 GROUP BY e1) AS z", //$NON-NLS-1$
- FakeMetadataFactory.example1Cached(), null, capFinder,
+ FakeMetadataFactory.example1Cached(), null, TestAggregatePushdown.getAggregatesFinder(),
new String[] {
"SELECT MAX(e2) AS x FROM pm1.g1 GROUP BY e1"}, TestOptimizer.SHOULD_SUCCEED); //$NON-NLS-1$
TestOptimizer.checkNodeTypes(plan, TestOptimizer.FULL_PUSHDOWN);
}
- public void testSimpleMergeGroupBy1() {
- FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
- BasicSourceCapabilities caps = new BasicSourceCapabilities();
- caps.setCapabilitySupport(Capability.QUERY_AGGREGATES, true);
- caps.setCapabilitySupport(Capability.QUERY_AGGREGATES_MAX, true);
- caps.setCapabilitySupport(Capability.QUERY_SELECT_DISTINCT, true);
- capFinder.addCapabilities("pm1", caps); //$NON-NLS-1$
-
+ @Test public void testSimpleMergeGroupBy1() {
ProcessorPlan plan = TestOptimizer.helpPlan("SELECT x FROM (SELECT distinct e1, max(e2) as x FROM pm1.g1 GROUP BY e1) AS z", //$NON-NLS-1$
- FakeMetadataFactory.example1Cached(), null, capFinder,
+ FakeMetadataFactory.example1Cached(), null, TestAggregatePushdown.getAggregatesFinder(),
new String[] {
- "SELECT DISTINCT e1, MAX(e2) AS x FROM pm1.g1 GROUP BY e1"}, TestOptimizer.SHOULD_SUCCEED); //$NON-NLS-1$
+ "SELECT v_0.c_1 FROM (SELECT DISTINCT g_0.e1 AS c_0, MAX(g_0.e2) AS c_1 FROM pm1.g1 AS g_0 GROUP BY g_0.e1) AS v_0"}, TestOptimizer.SHOULD_SUCCEED); //$NON-NLS-1$
- TestOptimizer.checkNodeTypes(plan, new int[] {
- 1, // Access
- 0, // DependentAccess
- 0, // DependentSelect
- 0, // DependentProject
- 0, // DupRemove
- 0, // Grouping
- 0, // NestedLoopJoinStrategy
- 0, // MergeJoinStrategy
- 0, // Null
- 0, // PlanExecution
- 1, // Project
- 0, // Select
- 0, // Sort
- 0 // UnionAll
- });
+ TestOptimizer.checkNodeTypes(plan, TestOptimizer.FULL_PUSHDOWN);
}
/**
* Same as above but all required symbols are selected
*/
- public void testSimpleMergeGroupBy2() {
- FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
- BasicSourceCapabilities caps = new BasicSourceCapabilities();
- caps.setCapabilitySupport(Capability.QUERY_AGGREGATES, true);
- caps.setCapabilitySupport(Capability.QUERY_AGGREGATES_MAX, true);
- caps.setCapabilitySupport(Capability.QUERY_SELECT_DISTINCT, true);
- capFinder.addCapabilities("pm1", caps); //$NON-NLS-1$
+ @Test public void testSimpleMergeGroupBy2() {
FakeMetadataFacade metadata = FakeMetadataFactory.example1Cached();
ProcessorPlan plan = TestOptimizer.helpPlan("SELECT x, e1 FROM (SELECT distinct e1, max(e2) as x FROM pm1.g1 GROUP BY e1) AS z", //$NON-NLS-1$
- metadata, null, capFinder,
+ metadata, null, TestAggregatePushdown.getAggregatesFinder(),
new String[] {
"SELECT DISTINCT MAX(e2) AS x, e1 FROM pm1.g1 GROUP BY e1"}, TestOptimizer.SHOULD_SUCCEED); //$NON-NLS-1$
TestOptimizer.checkNodeTypes(plan, TestOptimizer.FULL_PUSHDOWN);
}
- public void testSimpleMergeGroupBy3() {
- FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
- BasicSourceCapabilities caps = new BasicSourceCapabilities();
- caps.setCapabilitySupport(Capability.QUERY_AGGREGATES, true);
- caps.setCapabilitySupport(Capability.QUERY_AGGREGATES_MAX, true);
- caps.setCapabilitySupport(Capability.QUERY_SELECT_DISTINCT, true);
- capFinder.addCapabilities("pm1", caps); //$NON-NLS-1$
+ @Test public void testSimpleMergeGroupBy3() {
FakeMetadataFacade metadata = FakeMetadataFactory.example1Cached();
ProcessorPlan plan = TestOptimizer.helpPlan("SELECT distinct x, e1 FROM (SELECT e1, max(e2) as x FROM pm1.g1 GROUP BY e1) AS z", //$NON-NLS-1$
- metadata, null, capFinder,
+ metadata, null, TestAggregatePushdown.getAggregatesFinder(),
new String[] {
"SELECT DISTINCT MAX(e2) AS x, e1 FROM pm1.g1 GROUP BY e1"}, TestOptimizer.SHOULD_SUCCEED); //$NON-NLS-1$
TestOptimizer.checkNodeTypes(plan, TestOptimizer.FULL_PUSHDOWN);
}
- public void testSimpleMergeGroupBy4() {
- FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
- BasicSourceCapabilities caps = new BasicSourceCapabilities();
- caps.setCapabilitySupport(Capability.QUERY_AGGREGATES, true);
- caps.setCapabilitySupport(Capability.QUERY_AGGREGATES_MAX, true);
- caps.setCapabilitySupport(Capability.QUERY_SELECT_DISTINCT, true);
- capFinder.addCapabilities("pm1", caps); //$NON-NLS-1$
-
+ @Test public void testSimpleMergeGroupBy4() {
ProcessorPlan plan = TestOptimizer.helpPlan("SELECT x, x FROM (SELECT e1, max(e2) as x FROM pm1.g1 GROUP BY e1) AS z", //$NON-NLS-1$
- FakeMetadataFactory.example1Cached(), null, capFinder,
+ FakeMetadataFactory.example1Cached(), null, TestAggregatePushdown.getAggregatesFinder(),
new String[] {
- "SELECT MAX(e2) AS x FROM pm1.g1 GROUP BY e1"}, TestOptimizer.SHOULD_SUCCEED); //$NON-NLS-1$
+ "SELECT v_0.c_0, v_0.c_0 FROM (SELECT MAX(g_0.e2) AS c_0 FROM pm1.g1 AS g_0 GROUP BY g_0.e1) AS v_0"}, TestOptimizer.SHOULD_SUCCEED); //$NON-NLS-1$
- TestOptimizer.checkNodeTypes(plan, new int[] {
- 1, // Access
- 0, // DependentAccess
- 0, // DependentSelect
- 0, // DependentProject
- 0, // DupRemove
- 0, // Grouping
- 0, // NestedLoopJoinStrategy
- 0, // MergeJoinStrategy
- 0, // Null
- 0, // PlanExecution
- 1, // Project
- 0, // Select
- 0, // Sort
- 0 // UnionAll
- });
+ TestOptimizer.checkNodeTypes(plan, TestOptimizer.FULL_PUSHDOWN);
}
- public void testSimpleMergeGroupBy5() {
- FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
- BasicSourceCapabilities caps = new BasicSourceCapabilities();
- caps.setCapabilitySupport(Capability.QUERY_AGGREGATES, true);
- caps.setCapabilitySupport(Capability.QUERY_AGGREGATES_MAX, true);
- caps.setCapabilitySupport(Capability.QUERY_SELECT_DISTINCT, true);
- caps.setCapabilitySupport(Capability.CRITERIA_COMPARE_EQ, true);
- capFinder.addCapabilities("pm1", caps); //$NON-NLS-1$
-
+ @Test public void testSimpleMergeGroupBy5() {
ProcessorPlan plan = TestOptimizer.helpPlan("SELECT x FROM (SELECT e1, max(e2) as x FROM pm1.g1 GROUP BY e1) AS z where z.x = 1", //$NON-NLS-1$
- FakeMetadataFactory.example1Cached(), null, capFinder,
+ FakeMetadataFactory.example1Cached(), null, TestAggregatePushdown.getAggregatesFinder(),
new String[] {
"SELECT MAX(e2) AS x FROM pm1.g1 GROUP BY e1 HAVING MAX(e2) = 1"}, TestOptimizer.SHOULD_SUCCEED); //$NON-NLS-1$
TestOptimizer.checkNodeTypes(plan, TestOptimizer.FULL_PUSHDOWN);
}
- public void testSimpleMergeGroupBy6() {
- FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
- BasicSourceCapabilities caps = new BasicSourceCapabilities();
- caps.setCapabilitySupport(Capability.QUERY_AGGREGATES, true);
- caps.setCapabilitySupport(Capability.QUERY_AGGREGATES_MAX, true);
- caps.setCapabilitySupport(Capability.QUERY_SELECT_DISTINCT, true);
- caps.setCapabilitySupport(Capability.CRITERIA_COMPARE_EQ, true);
- capFinder.addCapabilities("pm1", caps); //$NON-NLS-1$
-
+ @Test public void testSimpleMergeGroupBy6() {
ProcessorPlan plan = TestOptimizer.helpPlan("SELECT x FROM (SELECT e1, max(e2) as x FROM pm1.g1 GROUP BY e1) AS z where z.x = 1", //$NON-NLS-1$
- FakeMetadataFactory.example1Cached(), null, capFinder,
+ FakeMetadataFactory.example1Cached(), null, TestAggregatePushdown.getAggregatesFinder(),
new String[] {
"SELECT MAX(e2) AS x FROM pm1.g1 GROUP BY e1 HAVING MAX(e2) = 1"}, TestOptimizer.SHOULD_SUCCEED); //$NON-NLS-1$
TestOptimizer.checkNodeTypes(plan, TestOptimizer.FULL_PUSHDOWN);
}
- public void testSimpleMergeGroupBy7() {
- FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
- BasicSourceCapabilities caps = new BasicSourceCapabilities();
- caps.setCapabilitySupport(Capability.QUERY_AGGREGATES, true);
- caps.setCapabilitySupport(Capability.QUERY_AGGREGATES_MAX, true);
- caps.setCapabilitySupport(Capability.QUERY_SELECT_DISTINCT, true);
- capFinder.addCapabilities("pm1", caps); //$NON-NLS-1$
+ @Test public void testSimpleMergeGroupBy7() {
FakeMetadataFacade metadata = FakeMetadataFactory.example1Cached();
ProcessorPlan plan = TestOptimizer.helpPlan("SELECT distinct x, e1 FROM (SELECT distinct e1, max(e2) as x FROM pm1.g1 GROUP BY e1) AS z", //$NON-NLS-1$
- metadata, null, capFinder,
+ metadata, null, TestAggregatePushdown.getAggregatesFinder(),
new String[] {
"SELECT DISTINCT MAX(e2) AS x, e1 FROM pm1.g1 GROUP BY e1"}, TestOptimizer.SHOULD_SUCCEED); //$NON-NLS-1$
TestOptimizer.checkNodeTypes(plan, TestOptimizer.FULL_PUSHDOWN);
}
- public void testSimpleMergeUnion() {
+ @Test public void testSimpleMergeUnion() {
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = new BasicSourceCapabilities();
caps.setCapabilitySupport(Capability.QUERY_UNION, true);
@@ -215,7 +133,7 @@
TestOptimizer.checkNodeTypes(plan, TestOptimizer.FULL_PUSHDOWN);
}
- public void testSimpleMergeUnion1() {
+ @Test public void testSimpleMergeUnion1() {
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = new BasicSourceCapabilities();
caps.setCapabilitySupport(Capability.QUERY_UNION, true);
@@ -233,7 +151,7 @@
/**
* Same as above, but the expression will prevent the source removal
*/
- public void testSimpleMergeUnion2() {
+ @Test public void testSimpleMergeUnion2() {
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = new BasicSourceCapabilities();
caps.setCapabilitySupport(Capability.QUERY_UNION, true);
@@ -263,7 +181,7 @@
});
}
- public void testSimpleMergeUnion3() {
+ @Test public void testSimpleMergeUnion3() {
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = new BasicSourceCapabilities();
caps.setCapabilitySupport(Capability.QUERY_UNION, true);
@@ -293,7 +211,7 @@
});
}
- public void testSimpleMergeWithLimit() {
+ @Test public void testSimpleMergeWithLimit() {
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = new BasicSourceCapabilities();
caps.setCapabilitySupport(Capability.ROW_LIMIT, true);
@@ -307,7 +225,7 @@
TestOptimizer.checkNodeTypes(plan, TestOptimizer.FULL_PUSHDOWN);
}
- public void testSimpleMergeWithLimit1() {
+ @Test public void testSimpleMergeWithLimit1() {
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = new BasicSourceCapabilities();
caps.setCapabilitySupport(Capability.ROW_LIMIT, true);
@@ -341,7 +259,7 @@
/**
* Note that the merge is not performed since it would create an expression in the group by clause
*/
- public void testViewPreservationWithGroupByExpression() throws Exception {
+ @Test public void testViewPreservationWithGroupByExpression() throws Exception {
String sql = "SELECT gbl_date " + //$NON-NLS-1$
"FROM " + //$NON-NLS-1$
"(SELECT a.intkey as x, convert(a.TimestampValue, date) AS gbl_date, b.intkey as y " + //$NON-NLS-1$
@@ -351,6 +269,7 @@
// Create capabilities
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = TestOptimizer.getTypicalCapabilities();
+ caps.setCapabilitySupport(Capability.QUERY_SELECT_EXPRESSION, true);
caps.setCapabilitySupport(Capability.QUERY_AGGREGATES, true);
caps.setCapabilitySupport(Capability.QUERY_AGGREGATES_COUNT, true);
caps.setCapabilitySupport(Capability.QUERY_AGGREGATES_COUNT_STAR, true);
@@ -370,7 +289,7 @@
TestOptimizer.checkNodeTypes(plan, TestOptimizer.FULL_PUSHDOWN);
}
- public void testSortAliasWithSameName() throws Exception {
+ @Test public void testSortAliasWithSameName() throws Exception {
String sql = "select e1 from (select distinct pm1.g1.e1 as e1 from pm1.g1) x order by e1"; //$NON-NLS-1$
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/TestRuleRaiseNull.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/TestRuleRaiseNull.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/TestRuleRaiseNull.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -68,24 +68,9 @@
String sql = "select * from ( select intkey as cola, null as colb, intnum as colc from bqt1.smalla union all select null, intkey, intnum from bqt2.smalla) as X where X.cola = 1"; //$NON-NLS-1$
ProcessorPlan plan = TestOptimizer.helpPlan(sql, FakeMetadataFactory.exampleBQT(),
- new String[] {"SELECT intkey, intnum FROM bqt1.smalla WHERE intkey = 1"} ); //$NON-NLS-1$
+ new String[] {"SELECT intkey, null, intnum FROM bqt1.smalla WHERE intkey = 1"} ); //$NON-NLS-1$
- TestOptimizer.checkNodeTypes(plan, new int[] {
- 1, // Access
- 0, // DependentAccess
- 0, // DependentSelect
- 0, // DependentProject
- 0, // DupRemove
- 0, // Grouping
- 0, // NestedLoopJoinStrategy
- 0, // MergeJoinStrategy
- 0, // Null
- 0, // PlanExecution
- 1, // Project
- 0, // Select
- 0, // Sort
- 0 // UnionAll
- });
+ TestOptimizer.checkNodeTypes(plan, TestOptimizer.FULL_PUSHDOWN);
}
@@ -101,46 +86,16 @@
String sql = "select b.intkey from (select intkey from bqt1.smalla) a full outer join (select intkey from bqt1.smallb where 1 = 0) b on (a.intkey = b.intkey)"; //$NON-NLS-1$
ProcessorPlan plan = TestOptimizer.helpPlan(sql, FakeMetadataFactory.exampleBQTCached(),
- new String[]{"SELECT BQT1.SmallA.IntKey FROM bqt1.smalla"}); //$NON-NLS-1$
- TestOptimizer.checkNodeTypes(plan, new int[] {
- 1, // Access
- 0, // DependentAccess
- 0, // DependentSelect
- 0, // DependentProject
- 0, // DupRemove
- 0, // Grouping
- 0, // NestedLoopJoinStrategy
- 0, // MergeJoinStrategy
- 0, // Null
- 0, // PlanExecution
- 1, // Project
- 0, // Select
- 0, // Sort
- 0 // UnionAll
- });
+ new String[]{"SELECT null FROM bqt1.smalla"}); //$NON-NLS-1$
+ TestOptimizer.checkNodeTypes(plan, TestOptimizer.FULL_PUSHDOWN);
}
public void testRaiseNullWithOuterJoin() {
String sql = "select b.intkey from (select intkey from bqt1.smalla) a left outer join (select intkey from bqt1.smallb where 1 = 0) b on (a.intkey = b.intkey)"; //$NON-NLS-1$
ProcessorPlan plan = TestOptimizer.helpPlan(sql, FakeMetadataFactory.exampleBQTCached(),
- new String[]{"SELECT BQT1.SmallA.IntKey FROM bqt1.smalla"}); //$NON-NLS-1$
- TestOptimizer.checkNodeTypes(plan, new int[] {
- 1, // Access
- 0, // DependentAccess
- 0, // DependentSelect
- 0, // DependentProject
- 0, // DupRemove
- 0, // Grouping
- 0, // NestedLoopJoinStrategy
- 0, // MergeJoinStrategy
- 0, // Null
- 0, // PlanExecution
- 1, // Project
- 0, // Select
- 0, // Sort
- 0 // UnionAll
- });
+ new String[]{"SELECT null FROM bqt1.smalla"}); //$NON-NLS-1$
+ TestOptimizer.checkNodeTypes(plan, TestOptimizer.FULL_PUSHDOWN);
}
public void testRaiseNullWithOuterJoin1() {
@@ -178,7 +133,7 @@
String sql = "select b.intkey, b.x from (select intkey, intnum as x from bqt1.smalla where 1 = 0 union all select intnum as a, null from bqt1.smalla union all select 1 as z, intkey as b from bqt1.smallb) b"; //$NON-NLS-1$
ProcessorPlan plan = TestOptimizer.helpPlan(sql, FakeMetadataFactory.exampleBQTCached(),
- new String[]{"SELECT intkey FROM bqt1.smallb", "SELECT IntNum FROM bqt1.smalla"}); //$NON-NLS-1$ //$NON-NLS-2$
+ new String[]{"SELECT 1, intkey FROM bqt1.smallb", "SELECT IntNum, null FROM bqt1.smalla"}); //$NON-NLS-1$ //$NON-NLS-2$
TestOptimizer.checkNodeTypes(plan, new int[] {
2, // Access
0, // DependentAccess
@@ -190,7 +145,7 @@
0, // MergeJoinStrategy
0, // Null
0, // PlanExecution
- 2, // Project
+ 0, // Project
0, // Select
0, // Sort
1 // UnionAll
@@ -209,23 +164,8 @@
String sql = "select b.intkey, b.x from (select intkey, intnum as x from bqt1.smalla where 1 = 0 union all select 1 as z, intkey as b from bqt1.smallb) b inner join bqt1.smalla on b.intkey = bqt1.smalla.intkey"; //$NON-NLS-1$
ProcessorPlan plan = TestOptimizer.helpPlan(sql, FakeMetadataFactory.exampleBQTCached(),
- new String[]{"SELECT g_0.intkey FROM bqt1.smallb AS g_0, bqt1.smalla AS g_1 WHERE g_1.IntKey = 1"}, TestOptimizer.ComparisonMode.EXACT_COMMAND_STRING); //$NON-NLS-1$
- TestOptimizer.checkNodeTypes(plan, new int[] {
- 1, // Access
- 0, // DependentAccess
- 0, // DependentSelect
- 0, // DependentProject
- 0, // DupRemove
- 0, // Grouping
- 0, // NestedLoopJoinStrategy
- 0, // MergeJoinStrategy
- 0, // Null
- 0, // PlanExecution
- 1, // Project
- 0, // Select
- 0, // Sort
- 0 // UnionAll
- });
+ new String[]{"SELECT 1, g_0.intkey FROM bqt1.smallb AS g_0, bqt1.smalla AS g_1 WHERE g_1.IntKey = 1"}, TestOptimizer.ComparisonMode.EXACT_COMMAND_STRING); //$NON-NLS-1$
+ TestOptimizer.checkNodeTypes(plan, TestOptimizer.FULL_PUSHDOWN);
}
public void testRaiseNullWithUnion5() {
@@ -261,12 +201,12 @@
public void testPushCriteriaThroughUnion9() {
TestOptimizer.helpPlan("select * from vm1.u8 where const = 's1'", TestOptimizer.example1(), //$NON-NLS-1$
- new String[] { "SELECT e1 FROM pm1.g1" } ); //$NON-NLS-1$
+ new String[] { "SELECT 's1', e1 FROM pm1.g1" } ); //$NON-NLS-1$
}
public void testPushCriteriaThroughUnion10() {
TestOptimizer.helpPlan("select * from vm1.u8 where const = 's3'", TestOptimizer.example1(), //$NON-NLS-1$
- new String[] { "SELECT e1 FROM pm1.g3" } ); //$NON-NLS-1$
+ new String[] { "SELECT 's3', e1 FROM pm1.g3" } ); //$NON-NLS-1$
}
public void testRaiseNullWithOuterJoinAndHaving() {
@@ -411,7 +351,7 @@
String sql = "select pm1.g1.e1 from pm1.g1, (select e1 from pm1.g1 where (1 = 0) union all select e1 as x from pm1.g2) x where pm1.g1.e1 <> x.e1"; //$NON-NLS-1$
RelationalPlan plan = (RelationalPlan)TestOptimizer.helpPlan(sql, FakeMetadataFactory.example1Cached(),
- new String[]{"SELECT g_0.e1 FROM pm1.g1 AS g_0, pm1.g2 AS g_1 WHERE g_0.e1 <> g_1.e1"}); //$NON-NLS-1$ //$NON-NLS-2$
+ new String[]{"SELECT g_0.e1 FROM pm1.g1 AS g_0, pm1.g2 AS g_1 WHERE g_0.e1 <> g_1.e1"}); //$NON-NLS-1$
TestOptimizer.checkNodeTypes(plan, TestOptimizer.FULL_PUSHDOWN);
}
Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/TestSubqueryPushdown.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/TestSubqueryPushdown.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/TestSubqueryPushdown.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -121,6 +121,7 @@
caps.setCapabilitySupport(Capability.CRITERIA_IN, true);
caps.setCapabilitySupport(Capability.CRITERIA_IN_SUBQUERY, true);
caps.setCapabilitySupport(Capability.QUERY_SUBQUERIES_SCALAR, true);
+ caps.setCapabilitySupport(Capability.QUERY_SELECT_EXPRESSION, true);
caps.setCapabilitySupport(Capability.QUERY_SUBQUERIES_CORRELATED, true);
caps.setCapabilitySupport(Capability.QUERY_AGGREGATES, true);
caps.setCapabilitySupport(Capability.QUERY_AGGREGATES_MAX, true);
@@ -144,6 +145,7 @@
caps.setCapabilitySupport(Capability.CRITERIA_IN_SUBQUERY, true);
caps.setCapabilitySupport(Capability.QUERY_SUBQUERIES_SCALAR, true);
caps.setCapabilitySupport(Capability.QUERY_SUBQUERIES_CORRELATED, true);
+ caps.setCapabilitySupport(Capability.QUERY_SELECT_EXPRESSION, true);
caps.setCapabilitySupport(Capability.QUERY_AGGREGATES, true);
caps.setCapabilitySupport(Capability.QUERY_AGGREGATES_MAX, true);
caps.setCapabilitySupport(Capability.QUERY_FROM_GROUP_ALIAS, true);
@@ -184,6 +186,7 @@
caps.setCapabilitySupport(Capability.CRITERIA_IN_SUBQUERY, true);
caps.setCapabilitySupport(Capability.QUERY_SUBQUERIES_SCALAR, true);
caps.setCapabilitySupport(Capability.QUERY_SUBQUERIES_CORRELATED, true);
+ caps.setCapabilitySupport(Capability.QUERY_SELECT_EXPRESSION, true);
caps.setCapabilitySupport(Capability.QUERY_AGGREGATES, true);
caps.setCapabilitySupport(Capability.QUERY_AGGREGATES_MAX, true);
caps.setCapabilitySupport(Capability.QUERY_FROM_GROUP_ALIAS, true);
@@ -679,6 +682,7 @@
caps.setCapabilitySupport(Capability.CRITERIA_IN_SUBQUERY, true);
caps.setCapabilitySupport(Capability.QUERY_SUBQUERIES_SCALAR, true);
caps.setCapabilitySupport(Capability.QUERY_SUBQUERIES_CORRELATED, true);
+ caps.setCapabilitySupport(Capability.QUERY_SELECT_EXPRESSION, true);
caps.setCapabilitySupport(Capability.QUERY_AGGREGATES, true);
caps.setCapabilitySupport(Capability.QUERY_AGGREGATES_MAX, true);
caps.setCapabilitySupport(Capability.QUERY_AGGREGATES_MIN, true);
Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/batch/TestBatchedUpdatePlanner.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/batch/TestBatchedUpdatePlanner.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/batch/TestBatchedUpdatePlanner.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -24,7 +24,6 @@
import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashMap;
import java.util.List;
import junit.framework.TestCase;
@@ -39,6 +38,8 @@
import com.metamatrix.query.metadata.QueryMetadataInterface;
import com.metamatrix.query.optimizer.QueryOptimizer;
import com.metamatrix.query.optimizer.capabilities.CapabilitiesFinder;
+import com.metamatrix.query.optimizer.capabilities.DefaultCapabilitiesFinder;
+import com.metamatrix.query.optimizer.capabilities.FakeCapabilitiesFinder;
import com.metamatrix.query.optimizer.capabilities.SourceCapabilities;
import com.metamatrix.query.parser.QueryParser;
import com.metamatrix.query.processor.ProcessorPlan;
@@ -126,13 +127,7 @@
}
public static CapabilitiesFinder getGenericFinder() {
- CapabilitiesFinder finder = new CapabilitiesFinder() {
- private SourceCapabilities caps = new FakeCapabilities(true);
- public SourceCapabilities findCapabilities(String modelName) throws MetaMatrixComponentException {
- return caps;
- }
- };
- return finder;
+ return new DefaultCapabilitiesFinder(new FakeCapabilities(true));
}
private BatchedUpdatePlan helpPlan(String[] sql, QueryMetadataInterface md) throws QueryParserException, QueryResolverException, QueryValidatorException, MetaMatrixComponentException, QueryPlannerException, QueryMetadataException {
@@ -195,8 +190,8 @@
"DELETE FROM pm1.g1 WHERE e2 > 5000", //$NON-NLS-1$
"UPDATE pm1.g1 set e2 = -1 WHERE e2 = 4999" //$NON-NLS-1$
};
- FakeFinder finder = new FakeFinder();
- finder.setCapabilities("pm1", new FakeCapabilities(false)); //$NON-NLS-1$
+ FakeCapabilitiesFinder finder = new FakeCapabilitiesFinder();
+ finder.addCapabilities("pm1", new FakeCapabilities(false)); //$NON-NLS-1$
boolean[] expectedBatching = {false, false, false, false};
helpTestPlanner(sql, expectedBatching, finder);
}
@@ -209,9 +204,9 @@
"UPDATE pm2.g1 set e2 = -1 WHERE e2 = 4999", //$NON-NLS-1$
"DELETE FROM pm1.g2 WHERE e2 = 50" //$NON-NLS-1$
};
- FakeFinder finder = new FakeFinder();
- finder.setCapabilities("pm1", new FakeCapabilities(false)); //$NON-NLS-1$
- finder.setCapabilities("pm2", new FakeCapabilities(true)); //$NON-NLS-1$
+ FakeCapabilitiesFinder finder = new FakeCapabilitiesFinder();
+ finder.addCapabilities("pm1", new FakeCapabilities(false)); //$NON-NLS-1$
+ finder.addCapabilities("pm2", new FakeCapabilities(true)); //$NON-NLS-1$
boolean[] expectedBatching = {false, false, true, false};
helpTestPlanner(sql, expectedBatching, finder);
}
@@ -230,15 +225,7 @@
public Object getSourceProperty(Capability propertyName) {return null;}
}
- private static final class FakeFinder implements CapabilitiesFinder {
- private HashMap caps = new HashMap();
- private void setCapabilities(String modelName, SourceCapabilities cap) {
- caps.put(modelName, cap);
- }
- public SourceCapabilities findCapabilities(String modelName) throws MetaMatrixComponentException {
- return (SourceCapabilities)caps.get(modelName);
- }
-}
+
private static final boolean DEBUG = false;
}
Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/capabilities/FakeCapabilitiesFinder.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/capabilities/FakeCapabilitiesFinder.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/capabilities/FakeCapabilitiesFinder.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -31,7 +31,7 @@
*/
public class FakeCapabilitiesFinder implements CapabilitiesFinder {
- private Map caps = new HashMap();
+ private Map<String, SourceCapabilities> caps = new HashMap<String, SourceCapabilities>();
/**
*
@@ -47,7 +47,7 @@
* @see com.metamatrix.query.optimizer.capabilities.CapabilitiesFinder#findCapabilities(java.lang.String)
*/
public SourceCapabilities findCapabilities(String connectorBindingID) throws MetaMatrixComponentException {
- return (SourceCapabilities) caps.get(connectorBindingID);
+ return caps.get(connectorBindingID);
}
public String toString() {
Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/proc/TestProcedurePlanner.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/proc/TestProcedurePlanner.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/proc/TestProcedurePlanner.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -138,7 +138,7 @@
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
- procedure = procedure + "if(CHANGING.e1=\"false\" and INPUT.e1=1)\n"; //$NON-NLS-1$
+ procedure = procedure + "if(CHANGING.e1='false' and INPUT.e1=1)\n"; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "Select pm1.g1.e2, Input.e2 from pm1.g1;\n"; //$NON-NLS-1$
procedure = procedure + "UPDATE pm1.g1 SET pm1.g1.e1 = INPUT.e1, pm1.g1.e2 = INPUT.e2;\n"; //$NON-NLS-1$
Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/relational/TestAliasGenerator.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/relational/TestAliasGenerator.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/relational/TestAliasGenerator.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -89,7 +89,7 @@
}
@Test public void testNestedInlineViewOrderBy() throws Exception {
- String sql = "select * from (select intnum x from (select intnum from bqt1.smallb) b order by x) y order by x"; //$NON-NLS-1$
+ String sql = "select x from (select intnum x from (select intnum from bqt1.smallb) b order by x) y order by x"; //$NON-NLS-1$
String expected = "SELECT v_1.c_0 FROM (SELECT v_0.c_0 FROM (SELECT g_0.intnum AS c_0 FROM bqt1.smallb AS g_0) AS v_0) AS v_1 ORDER BY c_0"; //$NON-NLS-1$
helpTest(sql, expected, true, FakeMetadataFactory.exampleBQTCached());
}
Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/relational/rules/TestCapabilitiesUtil.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/relational/rules/TestCapabilitiesUtil.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/relational/rules/TestCapabilitiesUtil.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -513,7 +513,7 @@
finder.addCapabilities("pm1", sourceCaps); //$NON-NLS-1$
// Test capabilities util
- boolean actual = CapabilitiesUtil.supportsSelectLiterals(modelID, metadata, finder);
+ boolean actual = CapabilitiesUtil.supportsSelectExpression(modelID, metadata, finder);
assertEquals("Got wrong answer for supports", supports, actual); //$NON-NLS-1$
}
Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/relational/rules/TestRuleAccessPatternValidation.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/relational/rules/TestRuleAccessPatternValidation.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/optimizer/relational/rules/TestRuleAccessPatternValidation.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -34,7 +34,7 @@
import com.metamatrix.query.metadata.QueryMetadataInterface;
import com.metamatrix.query.optimizer.TestOptimizer;
import com.metamatrix.query.optimizer.capabilities.CapabilitiesFinder;
-import com.metamatrix.query.optimizer.capabilities.SourceCapabilities;
+import com.metamatrix.query.optimizer.capabilities.DefaultCapabilitiesFinder;
import com.metamatrix.query.optimizer.relational.GenerateCanonical;
import com.metamatrix.query.optimizer.relational.OptimizerRule;
import com.metamatrix.query.optimizer.relational.PlanHints;
@@ -130,12 +130,7 @@
System.out.println("EXECUTING " + rule); //$NON-NLS-1$
}
- CapabilitiesFinder finder = new CapabilitiesFinder() {
- private SourceCapabilities caps = TestOptimizer.getTypicalCapabilities();
- public SourceCapabilities findCapabilities(String modelName) throws MetaMatrixComponentException {
- return caps;
- }
- };
+ CapabilitiesFinder finder = new DefaultCapabilitiesFinder(TestOptimizer.getTypicalCapabilities());
plan = rule.execute(plan, metadata, finder, rules, new AnalysisRecord(false, false, debug), null);
if(debug) {
System.out.println("\nAFTER: \n" + plan); //$NON-NLS-1$
Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/parser/TestParser.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/parser/TestParser.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/parser/TestParser.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -22,6 +22,8 @@
package com.metamatrix.query.parser;
+import static org.junit.Assert.*;
+
import java.io.UnsupportedEncodingException;
import java.math.BigInteger;
import java.util.ArrayList;
@@ -29,7 +31,7 @@
import java.util.Collection;
import java.util.List;
-import junit.framework.TestCase;
+import org.junit.Test;
import com.metamatrix.api.exception.MetaMatrixException;
import com.metamatrix.api.exception.query.QueryParserException;
@@ -103,22 +105,8 @@
import com.metamatrix.query.sql.symbol.TestCaseExpression;
import com.metamatrix.query.sql.symbol.TestSearchedCaseExpression;
-public class TestParser extends TestCase {
+public class TestParser {
- private ParseInfo info = new ParseInfo();
-
- // ################################## FRAMEWORK ################################
-
- public TestParser(String name) {
- super(name);
- }
-
- public void setUp() {
- info.allowDoubleQuotedVariable = true;
- }
-
- // ################################## TEST HELPERS ################################
-
static void helpTest(String sql, String expectedString, Command expectedCommand) {
helpTest(sql, expectedString, expectedCommand, new ParseInfo());
}
@@ -150,7 +138,6 @@
}
}
}
-
private void helpBlockTest(String block, String expectedString, Block expectedBlock) {
Block actualBlock = null;
@@ -221,7 +208,7 @@
// ======================== Joins ===============================================
/** SELECT * FROM g1 inner join g2 on g1.a1=g2.a2 */
- public void testInnerJoin() {
+ @Test public void testInnerJoin() {
UnaryFromClause g1 = new UnaryFromClause(new GroupSymbol("g1")); //$NON-NLS-1$
UnaryFromClause g2 = new UnaryFromClause(new GroupSymbol("g2")); //$NON-NLS-1$
CompareCriteria jcrit = new CompareCriteria(
@@ -247,7 +234,7 @@
}
/** SELECT * FROM g1 cross join g2 */
- public void testCrossJoin() {
+ @Test public void testCrossJoin() {
UnaryFromClause g1 = new UnaryFromClause(new GroupSymbol("g1")); //$NON-NLS-1$
UnaryFromClause g2 = new UnaryFromClause(new GroupSymbol("g2")); //$NON-NLS-1$
JoinPredicate jp = new JoinPredicate(g1, g2, JoinType.JOIN_CROSS);
@@ -268,7 +255,7 @@
}
/** SELECT * FROM (g1 cross join g2), g3 */
- public void testFromClauses() {
+ @Test public void testFromClauses() {
UnaryFromClause g1 = new UnaryFromClause(new GroupSymbol("g1")); //$NON-NLS-1$
UnaryFromClause g2 = new UnaryFromClause(new GroupSymbol("g2")); //$NON-NLS-1$
JoinPredicate jp = new JoinPredicate(g1, g2, JoinType.JOIN_CROSS);
@@ -290,12 +277,12 @@
}
/** SELECT * FROM g1 inner join g2 */
- public void testInvalidInnerJoin() {
+ @Test public void testInvalidInnerJoin() {
helpException("SELECT * FROM g1 inner join g2"); //$NON-NLS-1$
}
/** SELECT * FROM (g1 cross join g2) cross join g3 */
- public void testMultiCrossJoin() {
+ @Test public void testMultiCrossJoin() {
UnaryFromClause g1 = new UnaryFromClause(new GroupSymbol("g1")); //$NON-NLS-1$
UnaryFromClause g2 = new UnaryFromClause(new GroupSymbol("g2")); //$NON-NLS-1$
JoinPredicate jp = new JoinPredicate(g1, g2, JoinType.JOIN_CROSS);
@@ -317,7 +304,7 @@
}
/** SELECT * FROM (g1 cross join g2) cross join (g3 cross join g4) */
- public void testMultiCrossJoin2() {
+ @Test public void testMultiCrossJoin2() {
UnaryFromClause g1 = new UnaryFromClause(new GroupSymbol("g1")); //$NON-NLS-1$
UnaryFromClause g2 = new UnaryFromClause(new GroupSymbol("g2")); //$NON-NLS-1$
JoinPredicate jp = new JoinPredicate(g1, g2, JoinType.JOIN_CROSS);
@@ -342,7 +329,7 @@
}
/** SELECT * FROM g1 cross join (g2 cross join g3) */
- public void testMultiCrossJoin3() {
+ @Test public void testMultiCrossJoin3() {
UnaryFromClause g1 = new UnaryFromClause(new GroupSymbol("g1")); //$NON-NLS-1$
UnaryFromClause g2 = new UnaryFromClause(new GroupSymbol("g2")); //$NON-NLS-1$
UnaryFromClause g3 = new UnaryFromClause(new GroupSymbol("g3")); //$NON-NLS-1$
@@ -365,7 +352,7 @@
}
/** SELECT * FROM g1 cross join (g2 cross join g3), g4 */
- public void testMixedJoin() {
+ @Test public void testMixedJoin() {
UnaryFromClause g1 = new UnaryFromClause(new GroupSymbol("g1")); //$NON-NLS-1$
UnaryFromClause g2 = new UnaryFromClause(new GroupSymbol("g2")); //$NON-NLS-1$
UnaryFromClause g3 = new UnaryFromClause(new GroupSymbol("g3")); //$NON-NLS-1$
@@ -389,7 +376,7 @@
}
/** SELECT * FROM g1 cross join (g2 cross join g3), g4, g5 cross join g6 */
- public void testMixedJoin2() {
+ @Test public void testMixedJoin2() {
UnaryFromClause g1 = new UnaryFromClause(new GroupSymbol("g1")); //$NON-NLS-1$
UnaryFromClause g2 = new UnaryFromClause(new GroupSymbol("g2")); //$NON-NLS-1$
UnaryFromClause g3 = new UnaryFromClause(new GroupSymbol("g3")); //$NON-NLS-1$
@@ -418,7 +405,7 @@
}
/** SELECT * FROM g1, g2 inner join g3 on g2.a=g3.a */
- public void testMixedJoin3() {
+ @Test public void testMixedJoin3() {
UnaryFromClause g1 = new UnaryFromClause(new GroupSymbol("g1")); //$NON-NLS-1$
UnaryFromClause g2 = new UnaryFromClause(new GroupSymbol("g2")); //$NON-NLS-1$
UnaryFromClause g3 = new UnaryFromClause(new GroupSymbol("g3")); //$NON-NLS-1$
@@ -446,7 +433,7 @@
}
/** Select myG.a myA, myH.b from g myG right outer join h myH on myG.x=myH.x */
- public void testRightOuterJoinWithAliases() {
+ @Test public void testRightOuterJoinWithAliases() {
UnaryFromClause g = new UnaryFromClause(new GroupSymbol("myG", "g")); //$NON-NLS-1$ //$NON-NLS-2$
UnaryFromClause h = new UnaryFromClause(new GroupSymbol("myH", "h")); //$NON-NLS-1$ //$NON-NLS-2$
CompareCriteria jcrit = new CompareCriteria(
@@ -473,7 +460,7 @@
}
/** Select myG.x myX, myH.y from g myG right join h myH on myG.x=myH.x */
- public void testRightJoinWithAliases() {
+ @Test public void testRightJoinWithAliases() {
UnaryFromClause g = new UnaryFromClause(new GroupSymbol("myG", "g")); //$NON-NLS-1$ //$NON-NLS-2$
UnaryFromClause h = new UnaryFromClause(new GroupSymbol("myH", "h")); //$NON-NLS-1$ //$NON-NLS-2$
CompareCriteria jcrit = new CompareCriteria(
@@ -500,7 +487,7 @@
}
/** Select myG.a myA, myH.b from g myG left outer join h myH on myG.x=myH.x */
- public void testLeftOuterJoinWithAliases() {
+ @Test public void testLeftOuterJoinWithAliases() {
UnaryFromClause g = new UnaryFromClause(new GroupSymbol("myG", "g")); //$NON-NLS-1$ //$NON-NLS-2$
UnaryFromClause h = new UnaryFromClause(new GroupSymbol("myH", "h")); //$NON-NLS-1$ //$NON-NLS-2$
CompareCriteria jcrit = new CompareCriteria(
@@ -527,7 +514,7 @@
}
/** Select myG.a myA, myH.b from g myG left join h myH on myG.x=myH.x */
- public void testLeftJoinWithAliases() {
+ @Test public void testLeftJoinWithAliases() {
UnaryFromClause g = new UnaryFromClause(new GroupSymbol("myG", "g")); //$NON-NLS-1$ //$NON-NLS-2$
UnaryFromClause h = new UnaryFromClause(new GroupSymbol("myH", "h")); //$NON-NLS-1$ //$NON-NLS-2$
CompareCriteria jcrit = new CompareCriteria(
@@ -554,7 +541,7 @@
}
/** Select myG.a myA, myH.b from g myG full outer join h myH on myG.x=myH.x */
- public void testFullOuterJoinWithAliases() {
+ @Test public void testFullOuterJoinWithAliases() {
UnaryFromClause g = new UnaryFromClause(new GroupSymbol("myG", "g")); //$NON-NLS-1$ //$NON-NLS-2$
UnaryFromClause h = new UnaryFromClause(new GroupSymbol("myH", "h")); //$NON-NLS-1$ //$NON-NLS-2$
CompareCriteria jcrit = new CompareCriteria(
@@ -581,7 +568,7 @@
}
/** Select g.a, h.b from g full join h on g.x=h.x */
- public void testFullJoin() {
+ @Test public void testFullJoin() {
UnaryFromClause g = new UnaryFromClause(new GroupSymbol("g")); //$NON-NLS-1$
UnaryFromClause h = new UnaryFromClause(new GroupSymbol("h")); //$NON-NLS-1$
CompareCriteria jcrit = new CompareCriteria(
@@ -609,7 +596,7 @@
// ======================= Convert ==============================================
/** SELECT CONVERT(a, string) FROM g */
- public void testConversionFunction() {
+ @Test public void testConversionFunction() {
GroupSymbol g = new GroupSymbol("g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -628,7 +615,7 @@
}
/** SELECT CONVERT(CONVERT(a, timestamp), string) FROM g */
- public void testConversionFunction2() {
+ @Test public void testConversionFunction2() {
GroupSymbol g = new GroupSymbol("g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -650,7 +637,7 @@
// ======================= Functions ==============================================
/** SELECT 5 + length(concat(a, 'x')) FROM g */
- public void testMultiFunction() {
+ @Test public void testMultiFunction() {
GroupSymbol g = new GroupSymbol("g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -671,7 +658,7 @@
}
/** SELECT REPLACE(a, 'x', 'y') AS y FROM g */
- public void testAliasedFunction() {
+ @Test public void testAliasedFunction() {
GroupSymbol g = new GroupSymbol("g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -691,7 +678,7 @@
}
/** SELECT cast(a as string) FROM g */
- public void testCastFunction() {
+ @Test public void testCastFunction() {
GroupSymbol g = new GroupSymbol("g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -710,7 +697,7 @@
}
/** SELECT cast(cast(a as timestamp) as string) FROM g */
- public void testMultiCastFunction() {
+ @Test public void testMultiCastFunction() {
GroupSymbol g = new GroupSymbol("g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -730,7 +717,7 @@
}
/** SELECT left(fullname, 3) as x FROM system.groups */
- public void testLeftFunction() {
+ @Test public void testLeftFunction() {
GroupSymbol g = new GroupSymbol("system.groups"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -750,7 +737,7 @@
}
/** SELECT right(fullname, 3) as x FROM system.groups */
- public void testRightFunction() {
+ @Test public void testRightFunction() {
GroupSymbol g = new GroupSymbol("system.groups"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -770,7 +757,7 @@
}
/** SELECT char('x') AS x FROM system.groups */
- public void testCharFunction() {
+ @Test public void testCharFunction() {
GroupSymbol g = new GroupSymbol("system.groups"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -790,7 +777,7 @@
}
/** SELECT insert('x', 1, 'a') as x FROM system.groups */
- public void testInsertFunction() {
+ @Test public void testInsertFunction() {
GroupSymbol g = new GroupSymbol("system.groups"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -811,7 +798,7 @@
- public void testInsertIntoSelect() {
+ @Test public void testInsertIntoSelect() {
GroupSymbol g = new GroupSymbol("system.groups"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -835,7 +822,7 @@
}
/** SELECT translate('x', 'x', 'y') FROM system.groups */
- public void testTranslateFunction() {
+ @Test public void testTranslateFunction() {
GroupSymbol g = new GroupSymbol("system.groups"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -854,7 +841,7 @@
}
/** SELECT timestampadd(SQL_TSI_FRAC_SECOND, 10, '2003-05-01 10:20:30') as x FROM my.group1 */
- public void testTimestampaddFunctionFracSecond() {
+ @Test public void testTimestampaddFunctionFracSecond() {
GroupSymbol g = new GroupSymbol("my.group1"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -875,7 +862,7 @@
}
/** SELECT timestampadd(SQL_TSI_SECOND, 10, '2003-05-01 10:20:30') as x FROM my.group1 */
- public void testTimestampaddFunctionSecond() {
+ @Test public void testTimestampaddFunctionSecond() {
GroupSymbol g = new GroupSymbol("my.group1"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -896,7 +883,7 @@
}
/** SELECT timestampadd(SQL_TSI_MINUTE, 10, '2003-05-01 10:20:30') as x FROM my.group1 */
- public void testTimestampaddFunctionMinute() {
+ @Test public void testTimestampaddFunctionMinute() {
GroupSymbol g = new GroupSymbol("my.group1"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -917,7 +904,7 @@
}
/** SELECT timestampadd(SQL_TSI_HOUR, 10, '2003-05-01 10:20:30') as x FROM my.group1 */
- public void testTimestampaddFunctionHour() {
+ @Test public void testTimestampaddFunctionHour() {
GroupSymbol g = new GroupSymbol("my.group1"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -938,7 +925,7 @@
}
/** SELECT timestampadd(SQL_TSI_DAY, 10, '2003-05-01 10:20:30') as x FROM my.group1 */
- public void testTimestampaddFunctionDay() {
+ @Test public void testTimestampaddFunctionDay() {
GroupSymbol g = new GroupSymbol("my.group1"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -959,7 +946,7 @@
}
/** SELECT timestampadd(SQL_TSI_WEEK, 10, '2003-05-01 10:20:30') as x FROM my.group1 */
- public void testTimestampaddFunctionWeek() {
+ @Test public void testTimestampaddFunctionWeek() {
GroupSymbol g = new GroupSymbol("my.group1"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -980,7 +967,7 @@
}
/** SELECT timestampadd(SQL_TSI_QUARTER, 10, '2003-05-01 10:20:30') as x FROM my.group1 */
- public void testTimestampaddFunctionQuarter() {
+ @Test public void testTimestampaddFunctionQuarter() {
GroupSymbol g = new GroupSymbol("my.group1"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1001,7 +988,7 @@
}
/** SELECT timestampadd(SQL_TSI_YEAR, 10, '2003-05-01 10:20:30') as x FROM my.group1 */
- public void testTimestampaddFunctionYear() {
+ @Test public void testTimestampaddFunctionYear() {
GroupSymbol g = new GroupSymbol("my.group1"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1022,7 +1009,7 @@
}
/** SELECT timestampdiff(SQL_TSI_FRAC_SECOND, '2003-05-01 10:20:10', '2003-05-01 10:20:30') as x FROM my.group1 */
- public void testTimestampdiffFunctionFracSecond() {
+ @Test public void testTimestampdiffFunctionFracSecond() {
GroupSymbol g = new GroupSymbol("my.group1"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1043,7 +1030,7 @@
}
/** SELECT 5 + 2 + 3 FROM g */
- public void testArithmeticOperatorPrecedence1() {
+ @Test public void testArithmeticOperatorPrecedence1() {
GroupSymbol g = new GroupSymbol("g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1063,7 +1050,7 @@
}
/** SELECT 5 + 2 - 3 FROM g */
- public void testArithmeticOperatorPrecedence2() {
+ @Test public void testArithmeticOperatorPrecedence2() {
GroupSymbol g = new GroupSymbol("g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1083,7 +1070,7 @@
}
/** SELECT 5 + 2 * 3 FROM g */
- public void testArithmeticOperatorPrecedence3() {
+ @Test public void testArithmeticOperatorPrecedence3() {
GroupSymbol g = new GroupSymbol("g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1104,7 +1091,7 @@
}
/** SELECT 5 * 2 + 3 FROM g */
- public void testArithmeticOperatorPrecedence4() {
+ @Test public void testArithmeticOperatorPrecedence4() {
GroupSymbol g = new GroupSymbol("g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1124,7 +1111,7 @@
}
/** SELECT 5 * 2 * 3 FROM g */
- public void testArithmeticOperatorPrecedence5() {
+ @Test public void testArithmeticOperatorPrecedence5() {
GroupSymbol g = new GroupSymbol("g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1144,7 +1131,7 @@
}
/** SELECT 1 + 2 * 3 + 4 * 5 FROM g */
- public void testArithmeticOperatorPrecedenceMixed1() {
+ @Test public void testArithmeticOperatorPrecedenceMixed1() {
GroupSymbol g = new GroupSymbol("g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1166,7 +1153,7 @@
}
/** SELECT 1 * 2 + 3 * 4 + 5 FROM g */
- public void testArithmeticOperatorPrecedenceMixed2() {
+ @Test public void testArithmeticOperatorPrecedenceMixed2() {
GroupSymbol g = new GroupSymbol("g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1188,7 +1175,7 @@
}
/** SELECT 5 - 4 - 3 - 2 FROM g --> SELECT ((5 - 4) - 3) - 2 FROM g */
- public void testLeftAssociativeExpressions1() {
+ @Test public void testLeftAssociativeExpressions1() {
GroupSymbol g = new GroupSymbol("g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1209,7 +1196,7 @@
}
/** SELECT 5 / 4 / 3 / 2 FROM g --> SELECT ((5 / 4) / 3) / 2 FROM g */
- public void testLeftAssociativeExpressions2() {
+ @Test public void testLeftAssociativeExpressions2() {
GroupSymbol g = new GroupSymbol("g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1230,7 +1217,7 @@
}
/** SELECT 'a' || 'b' || 'c' FROM g */
- public void testConcatOperator1() {
+ @Test public void testConcatOperator1() {
GroupSymbol g = new GroupSymbol("g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1250,7 +1237,7 @@
}
/** SELECT 2 + 3 || 5 + 1 * 2 FROM g */
- public void testMixedOperators1() {
+ @Test public void testMixedOperators1() {
GroupSymbol g = new GroupSymbol("g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1274,7 +1261,7 @@
// ======================= Group By ==============================================
/** SELECT a FROM m.g GROUP BY b, c */
- public void testGroupBy() {
+ @Test public void testGroupBy() {
GroupSymbol g = new GroupSymbol("m.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1297,7 +1284,7 @@
}
/** SELECT a FROM m.g GROUP BY b, c HAVING b=5*/
- public void testGroupByHaving() {
+ @Test public void testGroupByHaving() {
GroupSymbol g = new GroupSymbol("m.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1322,7 +1309,7 @@
}
/** SELECT COUNT(a) AS c FROM m.g */
- public void testAggregateFunction() {
+ @Test public void testAggregateFunction() {
GroupSymbol g = new GroupSymbol("m.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1341,7 +1328,7 @@
}
/** SELECT (COUNT(a)) AS c FROM m.g - this kind of query is generated by ODBC sometimes */
- public void testAggregateFunctionWithParens() {
+ @Test public void testAggregateFunctionWithParens() {
GroupSymbol g = new GroupSymbol("m.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1360,7 +1347,7 @@
}
/** SELECT a FROM m.g GROUP BY a HAVING COUNT(b) > 0*/
- public void testHavingFunction() {
+ @Test public void testHavingFunction() {
GroupSymbol g = new GroupSymbol("m.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1388,7 +1375,7 @@
}
/** SELECT a FROM m.g GROUP BY a, b HAVING COUNT(b) > 0 AND b+5 > 0 */
- public void testCompoundHaving() {
+ @Test public void testCompoundHaving() {
GroupSymbol g = new GroupSymbol("m.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1423,22 +1410,22 @@
}
/** SELECT a FROM m.g GROUP BY a, b HAVING COUNT(AVG(b)) */
- public void testFailNestedAggregateInHaving() {
+ @Test public void testFailNestedAggregateInHaving() {
helpException("SELECT a FROM m.g GROUP BY a, b HAVING COUNT(b) AS x = 5"); //$NON-NLS-1$
}
/** SELECT a FROM m.g GROUP BY a, b AS x */
- public void testFailAliasInHaving() {
+ @Test public void testFailAliasInHaving() {
helpException("SELECT a FROM m.g GROUP BY a, b AS x"); //$NON-NLS-1$
}
/** SELECT a FROM m.g GROUP BY count(a) */
- public void testFailAggregateInGroupBy() {
+ @Test public void testFailAggregateInGroupBy() {
helpException("SELECT a FROM m.g GROUP BY count(a)"); //$NON-NLS-1$
}
- public void testExceptionLength() {
+ @Test public void testExceptionLength() {
String sql = "SELECT * FROM Customer where Customer.Name = (select lastname from CUSTOMER where acctid = 9"; ////$NON-NLS-1$
try {
QueryParser.getQueryParser().parseCommand(sql);
@@ -1453,7 +1440,7 @@
- public void testFunctionOfAggregates() {
+ @Test public void testFunctionOfAggregates() {
GroupSymbol g = new GroupSymbol("m.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1476,7 +1463,7 @@
}
/** SELECT 5-null, a.g1.c1 FROM a.g1 */
- public void testArithmeticNullFunction() {
+ @Test public void testArithmeticNullFunction() {
GroupSymbol g = new GroupSymbol("a.g1"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1497,7 +1484,7 @@
}
/** SELECT 'abc' FROM a.g1 */
- public void testStringLiteral() {
+ @Test public void testStringLiteral() {
GroupSymbol g = new GroupSymbol("a.g1"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1516,7 +1503,7 @@
/** SELECT 'O''Leary' FROM a.g1 */
- public void testStringLiteralEscapedTick() {
+ @Test public void testStringLiteralEscapedTick() {
GroupSymbol g = new GroupSymbol("a.g1"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1534,7 +1521,7 @@
}
/** SELECT '''abc''' FROM a.g1 */
- public void testStringLiteralEscapedTick2() {
+ @Test public void testStringLiteralEscapedTick2() {
GroupSymbol g = new GroupSymbol("a.g1"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1552,7 +1539,7 @@
}
/** SELECT 'a''b''c' FROM a.g1 */
- public void testStringLiteralEscapedTick3() {
+ @Test public void testStringLiteralEscapedTick3() {
GroupSymbol g = new GroupSymbol("a.g1"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1570,25 +1557,25 @@
}
/** SELECT " "" " FROM a.g1 */
- public void testStringLiteralEscapedTick4() {
+ @Test public void testStringLiteralEscapedTick4() {
GroupSymbol g = new GroupSymbol("a.g1"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
Select select = new Select();
- select.addSymbol(new ExpressionSymbol("expr", new Constant(" \" "))); //$NON-NLS-1$ //$NON-NLS-2$
+ select.addSymbol(new ElementSymbol(" \" ")); //$NON-NLS-1$
Query query = new Query();
query.setSelect(select);
query.setFrom(from);
helpTest("SELECT \" \"\" \" FROM a.g1", //$NON-NLS-1$
- "SELECT ' \" ' FROM a.g1", //$NON-NLS-1$
+ "SELECT \" \"\" \" FROM a.g1", //$NON-NLS-1$
query);
}
/** SELECT 123456789012 FROM a.g1 */
- public void testLongLiteral() {
+ @Test public void testLongLiteral() {
GroupSymbol g = new GroupSymbol("a.g1"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1606,7 +1593,7 @@
}
/** SELECT 1000000000000000000000000 FROM a.g1 */
- public void testBigIntegerLiteral() {
+ @Test public void testBigIntegerLiteral() {
GroupSymbol g = new GroupSymbol("a.g1"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1624,7 +1611,7 @@
}
/** SELECT 1.3e8 FROM a.g1 */
- public void testFloatWithE() {
+ @Test public void testFloatWithE() {
GroupSymbol g = new GroupSymbol("a.g1"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1642,7 +1629,7 @@
}
/** SELECT -1.3e-6 FROM a.g1 */
- public void testFloatWithMinusE() {
+ @Test public void testFloatWithMinusE() {
GroupSymbol g = new GroupSymbol("a.g1"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1660,7 +1647,7 @@
}
/** SELECT -1.3e+8 FROM a.g1 */
- public void testFloatWithPlusE() {
+ @Test public void testFloatWithPlusE() {
GroupSymbol g = new GroupSymbol("a.g1"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1678,7 +1665,7 @@
}
/** SELECT {d'2002-10-02'} FROM m.g1 */
- public void testDateLiteral1() {
+ @Test public void testDateLiteral1() {
GroupSymbol g = new GroupSymbol("m.g1"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1696,7 +1683,7 @@
}
/** SELECT {d'2002-9-1'} FROM m.g1 */
- public void testDateLiteral2() {
+ @Test public void testDateLiteral2() {
GroupSymbol g = new GroupSymbol("m.g1"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1714,12 +1701,12 @@
}
/** SELECT {d'bad'} FROM m.g1 */
- public void testDateLiteralFail() {
+ @Test public void testDateLiteralFail() {
helpException("SELECT {d'bad'} FROM m.g1"); //$NON-NLS-1$
}
/** SELECT {t '11:10:00' } FROM m.g1 */
- public void testTimeLiteral1() {
+ @Test public void testTimeLiteral1() {
GroupSymbol g = new GroupSymbol("m.g1"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1737,7 +1724,7 @@
}
/** SELECT {t '5:10:00'} FROM m.g1 */
- public void testTimeLiteral2() {
+ @Test public void testTimeLiteral2() {
GroupSymbol g = new GroupSymbol("m.g1"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1755,12 +1742,12 @@
}
/** SELECT {t 'xyz'} FROM m.g1 */
- public void testTimeLiteralFail() {
+ @Test public void testTimeLiteralFail() {
helpException("SELECT {t 'xyz'} FROM m.g1"); //$NON-NLS-1$
}
/** SELECT {ts'2002-10-02 19:00:02.50'} FROM m.g1 */
- public void testTimestampLiteral() {
+ @Test public void testTimestampLiteral() {
GroupSymbol g = new GroupSymbol("m.g1"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1778,7 +1765,7 @@
}
/** SELECT {b'true'} FROM m.g1 */
- public void testBooleanLiteralTrue() {
+ @Test public void testBooleanLiteralTrue() {
Boolean expected = Boolean.TRUE;
Class<?> expectedType = DataTypeManager.DefaultDataClasses.BOOLEAN;
String sql = "SELECT {b'true'}"; //$NON-NLS-1$
@@ -1800,7 +1787,7 @@
query);
}
/** SELECT TRUE FROM m.g1 */
- public void testBooleanLiteralTrue2() {
+ @Test public void testBooleanLiteralTrue2() {
Boolean expected = Boolean.TRUE;
Class<?> expectedType = DataTypeManager.DefaultDataClasses.BOOLEAN;
String sql = "SELECT TRUE"; //$NON-NLS-1$
@@ -1810,7 +1797,7 @@
}
/** SELECT {b'false'} FROM m.g1 */
- public void testBooleanLiteralFalse() {
+ @Test public void testBooleanLiteralFalse() {
Boolean expected = Boolean.FALSE;
Class<?> expectedType = DataTypeManager.DefaultDataClasses.BOOLEAN;
String sql = "SELECT {b'false'}"; //$NON-NLS-1$
@@ -1820,7 +1807,7 @@
}
/** SELECT FALSE FROM m.g1 */
- public void testBooleanLiteralFalse2() {
+ @Test public void testBooleanLiteralFalse2() {
Boolean expected = Boolean.FALSE;
Class<?> expectedType = DataTypeManager.DefaultDataClasses.BOOLEAN;
String sql = "SELECT {b'false'}"; //$NON-NLS-1$
@@ -1829,7 +1816,7 @@
helpTestLiteral(expected, expectedType, sql, expectedSql);
}
- public void testBooleanLiteralUnknown() {
+ @Test public void testBooleanLiteralUnknown() {
Boolean expected = null;
Class<?> expectedType = DataTypeManager.DefaultDataClasses.BOOLEAN;
String sql = "SELECT {b'unknown'}"; //$NON-NLS-1$
@@ -1838,7 +1825,7 @@
helpTestLiteral(expected, expectedType, sql, expectedSql);
}
- public void testBooleanLiteralUnknown2() {
+ @Test public void testBooleanLiteralUnknown2() {
Boolean expected = null;
Class<?> expectedType = DataTypeManager.DefaultDataClasses.BOOLEAN;
String sql = "SELECT UNKNOWN"; //$NON-NLS-1$
@@ -1848,7 +1835,7 @@
}
/** SELECT DISTINCT a FROM g */
- public void testSelectDistinct(){
+ @Test public void testSelectDistinct(){
GroupSymbol g = new GroupSymbol("g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1866,7 +1853,7 @@
}
/** SELECT ALL a FROM g */
- public void testSelectAll(){
+ @Test public void testSelectAll(){
GroupSymbol g = new GroupSymbol("g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1886,7 +1873,7 @@
//=========================Aliasing==============================================
/** SELECT a AS myA, b FROM g */
- public void testAliasInSelect(){
+ @Test public void testAliasInSelect(){
GroupSymbol g = new GroupSymbol("g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -1905,7 +1892,7 @@
}
/** SELECT a myA, b FROM g, h */
- public void testAliasInSelect2(){
+ @Test public void testAliasInSelect2(){
GroupSymbol g = new GroupSymbol("g"); //$NON-NLS-1$
GroupSymbol h = new GroupSymbol("h"); //$NON-NLS-1$
From from = new From();
@@ -1926,7 +1913,7 @@
}
/** SELECT myG.a FROM g AS myG */
- public void testAliasInFrom(){
+ @Test public void testAliasInFrom(){
GroupSymbol g = new GroupSymbol("myG", "g"); //$NON-NLS-1$ //$NON-NLS-2$
From from = new From();
from.addGroup(g);
@@ -1943,7 +1930,7 @@
}
/** SELECT myG.*, myH.b FROM g AS myG, h AS myH */
- public void testAliasesInFrom(){
+ @Test public void testAliasesInFrom(){
GroupSymbol g = new GroupSymbol("myG", "g"); //$NON-NLS-1$ //$NON-NLS-2$
GroupSymbol h = new GroupSymbol("myH", "h"); //$NON-NLS-1$ //$NON-NLS-2$
From from = new From();
@@ -1964,7 +1951,7 @@
}
/** SELECT myG.a, myH.b FROM g myG, h myH */
- public void testHiddenAliasesInFrom(){
+ @Test public void testHiddenAliasesInFrom(){
GroupSymbol g = new GroupSymbol("myG", "g"); //$NON-NLS-1$ //$NON-NLS-2$
GroupSymbol h = new GroupSymbol("myH", "h"); //$NON-NLS-1$ //$NON-NLS-2$
From from = new From();
@@ -1985,19 +1972,19 @@
}
/** SELECT a AS or FROM g */
- public void testAliasInSelectUsingKeywordFails(){
+ @Test public void testAliasInSelectUsingKeywordFails(){
helpException("SELECT a AS or FROM g"); //$NON-NLS-1$
}
/** SELECT or.a FROM g AS or */
- public void testAliasInFromUsingKeywordFails(){
+ @Test public void testAliasInFromUsingKeywordFails(){
helpException("SELECT or.a FROM g AS or"); //$NON-NLS-1$
}
// ======================= Misc ==============================================
/** Select a From db.g Where a IS NULL */
- public void testIsNullCriteria1(){
+ @Test public void testIsNullCriteria1(){
GroupSymbol g = new GroupSymbol("db.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2018,7 +2005,7 @@
}
/** Select a From db.g Where a IS NOT NULL */
- public void testIsNullCriteria2(){
+ @Test public void testIsNullCriteria2(){
GroupSymbol g = new GroupSymbol("db.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2040,7 +2027,7 @@
}
/** Select a From db.g Where Not a IS NULL */
- public void testNotIsNullCriteria(){
+ @Test public void testNotIsNullCriteria(){
GroupSymbol g = new GroupSymbol("db.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2061,7 +2048,7 @@
}
/** SELECT a from db.g where a <> "value" */
- public void testStringNotEqualDoubleTicks(){
+ @Test public void testStringNotEqualDoubleTicks(){
GroupSymbol g = new GroupSymbol("db.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2070,20 +2057,20 @@
ElementSymbol a = new ElementSymbol("a"); //$NON-NLS-1$
select.addSymbol(a);
- Expression constant = new Constant("value"); //$NON-NLS-1$
- Criteria crit = new CompareCriteria(a, CompareCriteria.NE, constant);
+ Expression ex = new ElementSymbol("value"); //$NON-NLS-1$
+ Criteria crit = new CompareCriteria(a, CompareCriteria.NE, ex);
Query query = new Query();
query.setSelect(select);
query.setFrom(from);
query.setCriteria(crit);
helpTest("SELECT a from db.g where a <> \"value\"", //$NON-NLS-1$
- "SELECT a FROM db.g WHERE a <> 'value'", //$NON-NLS-1$
+ "SELECT a FROM db.g WHERE a <> value", //$NON-NLS-1$
query);
}
/** SELECT a from db.g where a != "value" */
- public void testNotEquals2(){
+ @Test public void testNotEquals2(){
GroupSymbol g = new GroupSymbol("db.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2099,13 +2086,13 @@
query.setSelect(select);
query.setFrom(from);
query.setCriteria(crit);
- helpTest("SELECT a from db.g where a != \"value\"", //$NON-NLS-1$
+ helpTest("SELECT a from db.g where a != 'value'", //$NON-NLS-1$
"SELECT a FROM db.g WHERE a <> 'value'", //$NON-NLS-1$
query);
}
/** SELECT a from db."g" where a = 5 */
- public void testPartlyQuotedGroup(){
+ @Test public void testPartlyQuotedGroup(){
GroupSymbol g = new GroupSymbol("db.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2126,7 +2113,7 @@
}
/** SELECT a from "db"."g" where a = 5 */
- public void testFullyQuotedGroup(){
+ @Test public void testFullyQuotedGroup(){
GroupSymbol g = new GroupSymbol("db.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2147,7 +2134,7 @@
}
/** SELECT "db".g.a from db.g */
- public void testPartlyQuotedElement1(){
+ @Test public void testPartlyQuotedElement1(){
GroupSymbol g = new GroupSymbol("db.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2166,7 +2153,7 @@
}
/** SELECT "db"."g".a from db.g */
- public void testPartlyQuotedElement2(){
+ @Test public void testPartlyQuotedElement2(){
GroupSymbol g = new GroupSymbol("db.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2185,7 +2172,7 @@
}
/** SELECT "db"."g"."a" from db.g */
- public void testPartlyQuotedElement3(){
+ @Test public void testPartlyQuotedElement3(){
GroupSymbol g = new GroupSymbol("db.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2204,26 +2191,44 @@
}
/** SELECT ""g"".""a" from db.g */
- public void testStringLiteralLikeQuotedElement(){
+ @Test public void testStringLiteralLikeQuotedElement(){
GroupSymbol g = new GroupSymbol("g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
Select select = new Select();
- ExpressionSymbol a = new ExpressionSymbol("expr", new Constant("g\".\"a")); //$NON-NLS-1$ //$NON-NLS-2$
- select.addSymbol(a);
+ select.addSymbol(new ElementSymbol("g\".\"a")); //$NON-NLS-1$
Query query = new Query();
query.setSelect(select);
query.setFrom(from);
helpTest("SELECT \"g\"\".\"\"a\" from g", //$NON-NLS-1$
- "SELECT 'g\".\"a' FROM g", //$NON-NLS-1$
+ "SELECT \"g\"\"\".\"\"\"a\" FROM g", //$NON-NLS-1$
query);
}
+
+ /** SELECT ""g"".""a" from db.g */
+ @Test public void testStringLiteralLikeQuotedElement1(){
+ GroupSymbol g = new GroupSymbol("g"); //$NON-NLS-1$
+ From from = new From();
+ from.addGroup(g);
+ Select select = new Select();
+ select.addSymbol(new ExpressionSymbol("expr", new Constant("g\".\"a"))); //$NON-NLS-1$ //$NON-NLS-2$
+
+ Query query = new Query();
+ query.setSelect(select);
+ query.setFrom(from);
+ ParseInfo info = new ParseInfo();
+ info.ansiQuotedIdentifiers = false;
+ helpTest("SELECT \"g\"\".\"\"a\" from g", //$NON-NLS-1$
+ "SELECT 'g\".\"a' FROM g", //$NON-NLS-1$
+ query, info);
+ }
+
/** SELECT g.x AS "select" FROM g */
- public void testQuotedAlias(){
+ @Test public void testQuotedAlias(){
GroupSymbol g = new GroupSymbol("g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2242,7 +2247,7 @@
}
/** SELECT g.x AS year FROM g */
- public void testQuotedAlias2(){
+ @Test public void testQuotedAlias2(){
GroupSymbol g = new GroupSymbol("g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2259,9 +2264,28 @@
"SELECT g.x AS year FROM g", //$NON-NLS-1$
query);
}
+
+ @Test public void testQuotedAlias3(){
+ GroupSymbol g = new GroupSymbol("g"); //$NON-NLS-1$
+ From from = new From();
+ from.addGroup(g);
+
+ Select select = new Select();
+ AliasSymbol a = new AliasSymbol("some year", new ElementSymbol("g.x")); //$NON-NLS-1$ //$NON-NLS-2$
+ select.addSymbol(a);
+
+ Query query = new Query();
+ query.setSelect(select);
+ query.setFrom(from);
+
+ helpTest("SELECT g.x AS \"some year\" FROM g", //$NON-NLS-1$
+ "SELECT g.x AS \"some year\" FROM g", //$NON-NLS-1$
+ query);
+ }
+
/** SELECT g."select" FROM g */
- public void testReservedWordElement1(){
+ @Test public void testReservedWordElement1(){
GroupSymbol g = new GroupSymbol("g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2280,7 +2304,7 @@
}
/** SELECT newModel5.ResultSetDocument.MappingClasses.from.from.Query1InputSet.x FROM newModel5.ResultSetDocument.MappingClasses.from.from.Query1InputSet */
- public void testReservedWordElement2() {
+ @Test public void testReservedWordElement2() {
GroupSymbol g = new GroupSymbol("newModel5.ResultSetDocument.MappingClasses.from.from.Query1InputSet"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2299,7 +2323,7 @@
}
/** SELECT * FROM newModel5.ResultSetDocument.MappingClasses.from.from.Query1InputSet */
- public void testReservedWordGroup1(){
+ @Test public void testReservedWordGroup1(){
GroupSymbol g = new GroupSymbol("newModel5.ResultSetDocument.MappingClasses.from.from.Query1InputSet"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2317,7 +2341,7 @@
}
/** SELECT * FROM newModel5."ResultSetDocument.MappingClasses.from.from.Query1InputSet" */
- public void testReservedWordGroup2(){
+ @Test public void testReservedWordGroup2(){
GroupSymbol g = new GroupSymbol("newModel5.ResultSetDocument.MappingClasses.from.from.Query1InputSet"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2335,7 +2359,7 @@
}
/** SELECT * FROM model.doc WHERE ab.cd. at ef = 'abc' */
- public void testXMLCriteriaWithAttribute() {
+ @Test public void testXMLCriteriaWithAttribute() {
GroupSymbol g = new GroupSymbol("model.doc"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2355,13 +2379,8 @@
query);
}
- /** SELECT * FROM model.doc WHERE @ef = 'abc' */
- public void testXMLCriteriaWithUnqualifiedAttribute() {
- helpException("SELECT * FROM model.doc WHERE @ef = 'abc'"); //$NON-NLS-1$
- }
-
/** SELECT a from db.g where a <> 'value' */
- public void testStringNotEqual(){
+ @Test public void testStringNotEqual(){
GroupSymbol g = new GroupSymbol("db.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2383,7 +2402,7 @@
}
/** SELECT a from db.g where a BETWEEN 1000 AND 2000 */
- public void testBetween1(){
+ @Test public void testBetween1(){
GroupSymbol g = new GroupSymbol("db.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2406,7 +2425,7 @@
}
/** SELECT a from db.g where a NOT BETWEEN 1000 AND 2000 */
- public void testBetween2(){
+ @Test public void testBetween2(){
GroupSymbol g = new GroupSymbol("db.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2429,7 +2448,7 @@
}
/** SELECT a from db.g where a < 1000 */
- public void testCompareLT(){
+ @Test public void testCompareLT(){
GroupSymbol g = new GroupSymbol("db.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2451,7 +2470,7 @@
}
/** SELECT a from db.g where a > 1000 */
- public void testCompareGT(){
+ @Test public void testCompareGT(){
GroupSymbol g = new GroupSymbol("db.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2473,7 +2492,7 @@
}
/** SELECT a from db.g where a <= 1000 */
- public void testCompareLE(){
+ @Test public void testCompareLE(){
GroupSymbol g = new GroupSymbol("db.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2495,7 +2514,7 @@
}
/** SELECT a from db.g where a >= 1000 */
- public void testCompareGE(){
+ @Test public void testCompareGE(){
GroupSymbol g = new GroupSymbol("db.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2517,22 +2536,22 @@
}
/** SELECT a from db.g where b = x and a = 1000 */
- public void testCompoundCompare1(){
+ @Test public void testCompoundCompare1(){
helpTestCompoundCompare("SELECT a from db.g where b = x and a = 1000"); //$NON-NLS-1$
}
/** SELECT a from db.g where (b = x and a = 1000) */
- public void testCompoundCompare2(){
+ @Test public void testCompoundCompare2(){
helpTestCompoundCompare("SELECT a from db.g where (b = x and a = 1000)"); //$NON-NLS-1$
}
/** SELECT a from db.g where ((b = x) and (a = 1000)) */
- public void testCompoundCompare3(){
+ @Test public void testCompoundCompare3(){
helpTestCompoundCompare("SELECT a from db.g where ((b = x) and (a = 1000))"); //$NON-NLS-1$
}
/** SELECT a from db.g where (((b = x) and (a = 1000))) */
- public void testCompoundCompare4(){
+ @Test public void testCompoundCompare4(){
helpTestCompoundCompare("SELECT a from db.g where (((b = x) and (a = 1000)))"); //$NON-NLS-1$
}
@@ -2561,7 +2580,7 @@
}
/** SELECT a FROM db.g WHERE b IN (1000,5000)*/
- public void testSetCriteria0(){
+ @Test public void testSetCriteria0(){
GroupSymbol g = new GroupSymbol("db.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2586,7 +2605,7 @@
}
/** SELECT a FROM db.g WHERE b NOT IN (1000,5000)*/
- public void testSetCriteria1(){
+ @Test public void testSetCriteria1(){
GroupSymbol g = new GroupSymbol("db.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2613,7 +2632,7 @@
// ================================== order by ==================================
/** SELECT a FROM db.g WHERE b = aString order by c*/
- public void testOrderBy(){
+ @Test public void testOrderBy(){
GroupSymbol g = new GroupSymbol("db.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2635,7 +2654,7 @@
}
/** SELECT a FROM db.g WHERE b = aString order by c desc*/
- public void testOrderByDesc(){
+ @Test public void testOrderByDesc(){
GroupSymbol g = new GroupSymbol("db.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2659,7 +2678,7 @@
}
/** SELECT a FROM db.g WHERE b = aString order by c,d*/
- public void testOrderBys(){
+ @Test public void testOrderBys(){
GroupSymbol g = new GroupSymbol("db.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2682,7 +2701,7 @@
}
/** SELECT a FROM db.g WHERE b = aString order by c desc,d desc*/
- public void testOrderBysDesc(){
+ @Test public void testOrderBysDesc(){
GroupSymbol g = new GroupSymbol("db.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2708,7 +2727,7 @@
}
/** SELECT a FROM db.g WHERE b = aString order by c desc,d*/
- public void testMixedOrderBys(){
+ @Test public void testMixedOrderBys(){
GroupSymbol g = new GroupSymbol("db.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2736,7 +2755,7 @@
// ================================== match ====================================
/** SELECT a FROM db.g WHERE b LIKE 'aString'*/
- public void testLike0(){
+ @Test public void testLike0(){
GroupSymbol g = new GroupSymbol("db.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2758,7 +2777,7 @@
}
/** SELECT a FROM db.g WHERE b NOT LIKE 'aString'*/
- public void testLike1(){
+ @Test public void testLike1(){
GroupSymbol g = new GroupSymbol("db.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2780,7 +2799,7 @@
}
/** SELECT a from db.g where b like '#String' escape '#'*/
- public void testLikeWithEscape(){
+ @Test public void testLikeWithEscape(){
GroupSymbol g = new GroupSymbol("db.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2801,117 +2820,12 @@
query);
}
- public void testLikeWithEscapeException(){
+ @Test public void testLikeWithEscapeException(){
helpException("SELECT a from db.g where b like '#String' escape '#1'", "Parsing error: Like escape value must be a single character."); //$NON-NLS-1$ //$NON-NLS-2$
}
-
- // ==================== modeler literals ===========================
-
- /** Select mmuuid:abcf22c0-3236-1dfa-9931-e83d04ce10a0 From mmuuid:345f22c0-3236-1dfa-9931-e83d04ce10a0 */
- public void testModelerID() {
- GroupSymbol g = new GroupSymbol("mmuuid:345f22c0-3236-1dfa-9931-e83d04ce10a0"); //$NON-NLS-1$
- From from = new From();
- from.addGroup(g);
-
- Select select = new Select();
- ElementSymbol a = new ElementSymbol("mmuuid:abcf22c0-3236-1dfa-9931-e83d04ce10a0"); //$NON-NLS-1$
- select.addSymbol(a);
-
- Query query = new Query();
- query.setSelect(select);
- query.setFrom(from);
-
- helpTest("Select mmuuid:abcf22c0-3236-1dfa-9931-e83d04ce10a0 From mmuuid:345f22c0-3236-1dfa-9931-e83d04ce10a0", //$NON-NLS-1$
- "SELECT mmuuid:abcf22c0-3236-1dfa-9931-e83d04ce10a0 FROM mmuuid:345f22c0-3236-1dfa-9931-e83d04ce10a0", //$NON-NLS-1$
- query);
- }
-
- /** Select mmuuid:345f22c0-3236-1dfa-9931-e83d04ce10a0.mmuuid:abcf22c0-3236-1dfa-9931-e83d04ce10a0 From mmuuid:345f22c0-3236-1dfa-9931-e83d04ce10a0 */
- public void testModelerFullID() {
- GroupSymbol g = new GroupSymbol("mmuuid:345f22c0-3236-1dfa-9931-e83d04ce10a0"); //$NON-NLS-1$
- From from = new From();
- from.addGroup(g);
-
- Select select = new Select();
- ElementSymbol a = new ElementSymbol("mmuuid:345f22c0-3236-1dfa-9931-e83d04ce10a0.mmuuid:abcf22c0-3236-1dfa-9931-e83d04ce10a0"); //$NON-NLS-1$
- select.addSymbol(a);
-
- Query query = new Query();
- query.setSelect(select);
- query.setFrom(from);
-
- helpTest("Select mmuuid:345f22c0-3236-1dfa-9931-e83d04ce10a0.mmuuid:abcf22c0-3236-1dfa-9931-e83d04ce10a0 From mmuuid:345f22c0-3236-1dfa-9931-e83d04ce10a0", //$NON-NLS-1$
- "SELECT mmuuid:345f22c0-3236-1dfa-9931-e83d04ce10a0.mmuuid:abcf22c0-3236-1dfa-9931-e83d04ce10a0 FROM mmuuid:345f22c0-3236-1dfa-9931-e83d04ce10a0", //$NON-NLS-1$
- query);
-
- }
-
- /** Select a.mmuuid:abcf22c0-3236-1dfa-9931-e83d04ce10a0 From mmuuid:345f22c0-3236-1dfa-9931-e83d04ce10a0 as a */
- public void testModelerAliasElement() {
- GroupSymbol g = new GroupSymbol("a", "mmuuid:345f22c0-3236-1dfa-9931-e83d04ce10a0"); //$NON-NLS-1$ //$NON-NLS-2$
- From from = new From();
- from.addGroup(g);
-
- Select select = new Select();
- ElementSymbol a = new ElementSymbol("a.mmuuid:abcf22c0-3236-1dfa-9931-e83d04ce10a0"); //$NON-NLS-1$
- select.addSymbol(a);
-
- Query query = new Query();
- query.setSelect(select);
- query.setFrom(from);
-
- helpTest("Select a.mmuuid:abcf22c0-3236-1dfa-9931-e83d04ce10a0 From mmuuid:345f22c0-3236-1dfa-9931-e83d04ce10a0 as a", //$NON-NLS-1$
- "SELECT a.mmuuid:abcf22c0-3236-1dfa-9931-e83d04ce10a0 FROM mmuuid:345f22c0-3236-1dfa-9931-e83d04ce10a0 AS a", //$NON-NLS-1$
- query);
-
- }
-
- /** Select mmuuid:345f22c0-3236-1dfa-9931-e83d04ce10a0.* From mmuuid:345f22c0-3236-1dfa-9931-e83d04ce10a0 */
- public void testModelerGroupStar() {
- GroupSymbol g = new GroupSymbol("mmuuid:345f22c0-3236-1dfa-9931-e83d04ce10a0"); //$NON-NLS-1$
- From from = new From();
- from.addGroup(g);
-
- Select select = new Select();
- AllInGroupSymbol a = new AllInGroupSymbol("mmuuid:345f22c0-3236-1dfa-9931-e83d04ce10a0.*"); //$NON-NLS-1$
- select.addSymbol(a);
-
- Query query = new Query();
- query.setSelect(select);
- query.setFrom(from);
-
- helpTest("Select mmuuid:345f22c0-3236-1dfa-9931-e83d04ce10a0.* From mmuuid:345f22c0-3236-1dfa-9931-e83d04ce10a0", //$NON-NLS-1$
- "SELECT mmuuid:345f22c0-3236-1dfa-9931-e83d04ce10a0.* FROM mmuuid:345f22c0-3236-1dfa-9931-e83d04ce10a0", //$NON-NLS-1$
- query);
-
- }
-
- /** SELECT * FROM mmuuid:66f628c1-3455-1dfa-9931-e83d04ce10a0 ORDER BY mmuuid:66f628c2-3455-1dfa-9931-e83d04ce10a0 */
- public void testModelerOrderBy() {
- GroupSymbol g = new GroupSymbol("mmuuid:66f628c1-3455-1dfa-9931-e83d04ce10a0"); //$NON-NLS-1$
- From from = new From();
- from.addGroup(g);
-
- Select select = new Select();
- select.addSymbol(new AllSymbol());
-
- OrderBy orderBy = new OrderBy();
- orderBy.addVariable(new ElementSymbol("mmuuid:66f628c2-3455-1dfa-9931-e83d04ce10a0")); //$NON-NLS-1$
-
- Query query = new Query();
- query.setSelect(select);
- query.setFrom(from);
- query.setOrderBy(orderBy);
-
- helpTest("SELECT * FROM mmuuid:66f628c1-3455-1dfa-9931-e83d04ce10a0 ORDER BY mmuuid:66f628c2-3455-1dfa-9931-e83d04ce10a0", //$NON-NLS-1$
- "SELECT * FROM mmuuid:66f628c1-3455-1dfa-9931-e83d04ce10a0 ORDER BY mmuuid:66f628c2-3455-1dfa-9931-e83d04ce10a0", //$NON-NLS-1$
- query);
-
- }
-
/** SELECT "date"."time" from db.g */
- public void testReservedWordsInElement() {
+ @Test public void testReservedWordsInElement() {
GroupSymbol g = new GroupSymbol("db.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2930,7 +2844,7 @@
}
/** SELECT a */
- public void testNoFromClause(){
+ @Test public void testNoFromClause(){
Select select = new Select();
ElementSymbol a = new ElementSymbol("a"); //$NON-NLS-1$
ExpressionSymbol b = new ExpressionSymbol("expr", new Constant(new Integer(5), Integer.class)); //$NON-NLS-1$
@@ -2944,27 +2858,27 @@
// ==================== misc queries that should fail ===========================
/** FROM g WHERE a = 'aString' */
- public void testFailsNoSelectClause(){
+ @Test public void testFailsNoSelectClause(){
helpException("FROM g WHERE a = 'aString'"); //$NON-NLS-1$
}
/** SELECT a WHERE a = 'aString' */
- public void testFailsNoFromClause(){
+ @Test public void testFailsNoFromClause(){
helpException("SELECT a WHERE a = 'aString'"); //$NON-NLS-1$
}
/** SELECT xx.yy%.a from xx.yy */
- public void testFailsWildcardInSelect(){
+ @Test public void testFailsWildcardInSelect(){
helpException("SELECT xx.yy%.a from xx.yy"); //$NON-NLS-1$
}
/** SELECT a or b from g */
- public void testFailsOrInSelect(){
+ @Test public void testFailsOrInSelect(){
helpException("SELECT a or b from g"); //$NON-NLS-1$
}
/** SELECT a FROM g WHERE a LIKE x*/
- public void testLikeWOConstant(){
+ @Test public void testLikeWOConstant(){
GroupSymbol g = new GroupSymbol("g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -2986,12 +2900,12 @@
}
/** SELECT a from g ORDER BY b DSC*/
- public void testFailsDSCMisspelled(){
+ @Test public void testFailsDSCMisspelled(){
helpException("SELECT a from g ORDER BY b DSC"); //$NON-NLS-1$
}
/** Test reusability of parser */
- public void testReusabilityOfParserObject() {
+ @Test public void testReusabilityOfParserObject() {
GroupSymbol g = new GroupSymbol("m.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -3013,7 +2927,7 @@
}
/** SELECT a from db.g where b LIKE ? */
- public void testParameter1() {
+ @Test public void testParameter1() {
GroupSymbol g = new GroupSymbol("db.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -3035,7 +2949,7 @@
}
/** SELECT a from db.g where b LIKE ? */
- public void testParameter2() {
+ @Test public void testParameter2() {
GroupSymbol g = new GroupSymbol("db.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -3077,7 +2991,7 @@
}
/** SELECT a, b FROM (SELECT c FROM m.g) AS y */
- public void testSubquery1() {
+ @Test public void testSubquery1() {
GroupSymbol g = new GroupSymbol("m.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -3109,7 +3023,7 @@
}
/** SELECT a, b FROM ((SELECT c FROM m.g)) AS y */
- public void testSubquery1a() {
+ @Test public void testSubquery1a() {
GroupSymbol g = new GroupSymbol("m.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -3141,7 +3055,7 @@
}
/** SELECT a, b FROM m.g1 JOIN (SELECT c FROM m.g2) AS y ON m.g1.a = y.c */
- public void testSubquery2() {
+ @Test public void testSubquery2() {
GroupSymbol g = new GroupSymbol("m.g2"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -3178,12 +3092,12 @@
}
/** SELECT a, b FROM (SELECT c FROM m.g2) */
- public void testSubqueryInvalid() {
+ @Test public void testSubqueryInvalid() {
helpException("SELECT a, b FROM (SELECT c FROM m.g2)"); //$NON-NLS-1$
}
/** INSERT INTO m.g (a) VALUES (?) */
- public void testInsertWithReference() {
+ @Test public void testInsertWithReference() {
Insert insert = new Insert();
insert.setGroup(new GroupSymbol("m.g")); //$NON-NLS-1$
List vars = new ArrayList();
@@ -3197,14 +3111,14 @@
insert);
}
- public void testStoredQueryWithNoParameter(){
+ @Test public void testStoredQueryWithNoParameter(){
StoredProcedure storedQuery = new StoredProcedure();
storedQuery.setProcedureName("proc1"); //$NON-NLS-1$
helpTest("exec proc1()", "EXEC proc1()", storedQuery); //$NON-NLS-1$ //$NON-NLS-2$
helpTest("execute proc1()", "EXEC proc1()", storedQuery); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testStoredQueryWithNoParameter2(){
+ @Test public void testStoredQueryWithNoParameter2(){
StoredProcedure storedQuery = new StoredProcedure();
storedQuery.setProcedureName("proc1"); //$NON-NLS-1$
@@ -3221,7 +3135,7 @@
helpTest("SELECT X.A FROM (exec proc1()) AS X", "SELECT X.A FROM (EXEC proc1()) AS X", query); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testStoredQuery(){
+ @Test public void testStoredQuery(){
StoredProcedure storedQuery = new StoredProcedure();
storedQuery.setProcedureName("proc1"); //$NON-NLS-1$
SPParameter parameter = new SPParameter(1, new Constant("param1")); //$NON-NLS-1$
@@ -3231,7 +3145,7 @@
helpTest("execute proc1('param1')", "EXEC proc1('param1')", storedQuery); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testStoredQuery2(){
+ @Test public void testStoredQuery2(){
StoredProcedure storedQuery = new StoredProcedure();
storedQuery.setProcedureName("proc1"); //$NON-NLS-1$
SPParameter parameter = new SPParameter(1, new Constant("param1")); //$NON-NLS-1$
@@ -3249,7 +3163,7 @@
helpTest("SELECT X.A FROM (exec proc1('param1')) AS X", "SELECT X.A FROM (EXEC proc1('param1')) AS X", query); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testStoredQuery2SanityCheck(){
+ @Test public void testStoredQuery2SanityCheck(){
StoredProcedure storedQuery = new StoredProcedure();
storedQuery.setProcedureName("proc1"); //$NON-NLS-1$
SPParameter parameter = new SPParameter(1, new Constant("param1")); //$NON-NLS-1$
@@ -3291,14 +3205,14 @@
helpTest("SELECT X.A FROM ((exec proc1('param1'))) AS X", "SELECT X.A FROM (EXEC proc1('param1')) AS X", query); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testErrorStatement(){
+ @Test public void testErrorStatement(){
RaiseErrorStatement errStmt = new RaiseErrorStatement(new Constant("Test only")); //$NON-NLS-1$
helpStmtTest("ERROR 'Test only';", "ERROR 'Test only';", //$NON-NLS-1$ //$NON-NLS-2$
errStmt);
}
- public void testIfStatement(){
+ @Test public void testIfStatement(){
ElementSymbol a = new ElementSymbol("a"); //$NON-NLS-1$
String shortType = new String("short"); //$NON-NLS-1$
Statement ifStmt = new DeclareStatement(a, shortType);
@@ -3324,7 +3238,7 @@
stmt);
}
- /*public void testIfStatement1(){
+ /*@Test public void testIfStatement1(){
ElementSymbol a = new ElementSymbol("a");
String shortType = new String("short");
Statement ifStmt = new DeclareStatement(a, shortType);
@@ -3350,7 +3264,7 @@
stmt);
}*/
- public void testCriteriaSelector0(){
+ @Test public void testCriteriaSelector0(){
ElementSymbol a = new ElementSymbol("a"); //$NON-NLS-1$
CriteriaSelector critSelector = new CriteriaSelector();
@@ -3360,7 +3274,7 @@
helpCriteriaSelectorTest("IS NULL CRITERIA ON (a)", "IS NULL CRITERIA ON (a)", critSelector); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testCriteriaSelector1(){
+ @Test public void testCriteriaSelector1(){
ElementSymbol a = new ElementSymbol("a"); //$NON-NLS-1$
CriteriaSelector critSelector = new CriteriaSelector();
@@ -3370,7 +3284,7 @@
helpCriteriaSelectorTest("= CRITERIA ON (a)", "= CRITERIA ON (a)", critSelector); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testCriteriaSelector2(){
+ @Test public void testCriteriaSelector2(){
ElementSymbol a = new ElementSymbol("a"); //$NON-NLS-1$
CriteriaSelector critSelector = new CriteriaSelector();
@@ -3380,7 +3294,7 @@
helpCriteriaSelectorTest("<> CRITERIA ON (a)", "<> CRITERIA ON (a)", critSelector); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testCriteriaSelector3(){
+ @Test public void testCriteriaSelector3(){
ElementSymbol a = new ElementSymbol("a"); //$NON-NLS-1$
CriteriaSelector critSelector = new CriteriaSelector();
@@ -3390,7 +3304,7 @@
helpCriteriaSelectorTest("< CRITERIA ON (a)", "< CRITERIA ON (a)", critSelector); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testCriteriaSelector4(){
+ @Test public void testCriteriaSelector4(){
ElementSymbol a = new ElementSymbol("a"); //$NON-NLS-1$
CriteriaSelector critSelector = new CriteriaSelector();
@@ -3400,7 +3314,7 @@
helpCriteriaSelectorTest("> CRITERIA ON (a)", "> CRITERIA ON (a)", critSelector); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testCriteriaSelector5(){
+ @Test public void testCriteriaSelector5(){
ElementSymbol a = new ElementSymbol("a"); //$NON-NLS-1$
CriteriaSelector critSelector = new CriteriaSelector();
@@ -3410,7 +3324,7 @@
helpCriteriaSelectorTest(">= CRITERIA ON (a)", ">= CRITERIA ON (a)", critSelector); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testCriteriaSelector6(){
+ @Test public void testCriteriaSelector6(){
ElementSymbol a = new ElementSymbol("a"); //$NON-NLS-1$
CriteriaSelector critSelector = new CriteriaSelector();
@@ -3420,7 +3334,7 @@
helpCriteriaSelectorTest("<= CRITERIA ON (a)", "<= CRITERIA ON (a)", critSelector); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testCriteriaSelector7(){
+ @Test public void testCriteriaSelector7(){
ElementSymbol a = new ElementSymbol("a"); //$NON-NLS-1$
CriteriaSelector critSelector = new CriteriaSelector();
@@ -3431,7 +3345,7 @@
}
- public void testCriteriaSelector8(){
+ @Test public void testCriteriaSelector8(){
ElementSymbol a = new ElementSymbol("a"); //$NON-NLS-1$
CriteriaSelector critSelector = new CriteriaSelector();
@@ -3441,7 +3355,7 @@
helpCriteriaSelectorTest("IN CRITERIA ON (a)", "IN CRITERIA ON (a)", critSelector); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testCriteriaSelector9(){
+ @Test public void testCriteriaSelector9(){
//ElementSymbol a = new ElementSymbol("a");
CriteriaSelector critSelector = new CriteriaSelector();
@@ -3451,7 +3365,7 @@
helpCriteriaSelectorTest("CRITERIA", "CRITERIA", critSelector); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testCriteriaSelector10(){
+ @Test public void testCriteriaSelector10(){
ElementSymbol a = new ElementSymbol("a"); //$NON-NLS-1$
CriteriaSelector critSelector = new CriteriaSelector();
@@ -3462,7 +3376,7 @@
}
/**HAS IS NULL CRITERIA ON (a)*/
- public void testHasIsNullCriteria(){
+ @Test public void testHasIsNullCriteria(){
ElementSymbol a = new ElementSymbol("a"); //$NON-NLS-1$
List elements = new ArrayList();
elements.add(a);
@@ -3479,7 +3393,7 @@
}
/**HAS LIKE CRITERIA ON (a)*/
- public void testHasLikeCriteria(){
+ @Test public void testHasLikeCriteria(){
ElementSymbol a = new ElementSymbol("a"); //$NON-NLS-1$
List elements = new ArrayList();
elements.add(a);
@@ -3495,7 +3409,7 @@
hasSelector);
}
- public void testHasEQCriteria(){
+ @Test public void testHasEQCriteria(){
ElementSymbol a = new ElementSymbol("a"); //$NON-NLS-1$
List elements = new ArrayList();
elements.add(a);
@@ -3511,7 +3425,7 @@
hasSelector);
}
- public void testHasNECriteria(){
+ @Test public void testHasNECriteria(){
ElementSymbol a = new ElementSymbol("a"); //$NON-NLS-1$
List elements = new ArrayList();
elements.add(a);
@@ -3528,7 +3442,7 @@
}
/**HAS IN CRITERIA ON (a)*/
- public void testHasInCriteria(){
+ @Test public void testHasInCriteria(){
ElementSymbol a = new ElementSymbol("a"); //$NON-NLS-1$
List elements = new ArrayList();
elements.add(a);
@@ -3545,7 +3459,7 @@
}
/**HAS COMPARE_LT CRITERIA ON (a)*/
- public void testHasLTCriteria(){
+ @Test public void testHasLTCriteria(){
ElementSymbol a = new ElementSymbol("a"); //$NON-NLS-1$
List elements = new ArrayList();
elements.add(a);
@@ -3562,7 +3476,7 @@
}
/**HAS COMPARE_LE CRITERIA ON (a)*/
- public void testHasLECriteria(){
+ @Test public void testHasLECriteria(){
ElementSymbol a = new ElementSymbol("a"); //$NON-NLS-1$
List elements = new ArrayList();
elements.add(a);
@@ -3579,7 +3493,7 @@
}
/**HAS COMPARE_GT CRITERIA ON (a)*/
- public void testHasGTCriteria(){
+ @Test public void testHasGTCriteria(){
ElementSymbol a = new ElementSymbol("a"); //$NON-NLS-1$
List elements = new ArrayList();
elements.add(a);
@@ -3596,7 +3510,7 @@
}
/**HAS COMPARE_GE CRITERIA ON (a)*/
- public void testHasGECriteria(){
+ @Test public void testHasGECriteria(){
ElementSymbol a = new ElementSymbol("a"); //$NON-NLS-1$
List elements = new ArrayList();
elements.add(a);
@@ -3613,7 +3527,7 @@
}
/**HAS BETWEEN CRITERIA ON (a)*/
- public void testHasBetweenCriteria(){
+ @Test public void testHasBetweenCriteria(){
ElementSymbol a = new ElementSymbol("a"); //$NON-NLS-1$
List elements = new ArrayList();
elements.add(a);
@@ -3629,7 +3543,7 @@
hasSelector);
}
- public void testTranslateCriteria(){
+ @Test public void testTranslateCriteria(){
ElementSymbol a = new ElementSymbol("a"); //$NON-NLS-1$
List elements = new ArrayList();
elements.add(a);
@@ -3655,7 +3569,7 @@
}
- public void testAssignStatement(){
+ @Test public void testAssignStatement(){
ElementSymbol a = new ElementSymbol("a"); //$NON-NLS-1$
List symbols = new ArrayList();
@@ -3686,7 +3600,7 @@
helpStmtTest("a = 'aString';", "a = 'aString';", exprStmt); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testAssignStatement2(){
+ @Test public void testAssignStatement2(){
Insert insert = new Insert();
insert.setGroup(new GroupSymbol("g")); //$NON-NLS-1$
List vars = new ArrayList();
@@ -3705,7 +3619,7 @@
}
- public void testDeclareStatement(){
+ @Test public void testDeclareStatement(){
ElementSymbol a = new ElementSymbol("a"); //$NON-NLS-1$
String type = new String("short"); //$NON-NLS-1$
DeclareStatement stmt = new DeclareStatement(a, type);
@@ -3713,7 +3627,7 @@
helpStmtTest("DECLARE short a;","DECLARE short a;", stmt); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testDeclareStatementWithAssignment(){
+ @Test public void testDeclareStatementWithAssignment(){
ElementSymbol a = new ElementSymbol("a"); //$NON-NLS-1$
String type = new String("short"); //$NON-NLS-1$
DeclareStatement stmt = new DeclareStatement(a, type, new Constant(null));
@@ -3721,7 +3635,7 @@
helpStmtTest("DECLARE short a = null;","DECLARE short a = null;", stmt); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testDeclareStatementWithAssignment1(){
+ @Test public void testDeclareStatementWithAssignment1(){
ElementSymbol a = new ElementSymbol("a"); //$NON-NLS-1$
String type = new String("string"); //$NON-NLS-1$
DeclareStatement stmt = new DeclareStatement(a, type, sampleQuery());
@@ -3729,7 +3643,7 @@
helpStmtTest("DECLARE string a = SELECT a1 FROM g WHERE a2 = 5;","DECLARE string a = SELECT a1 FROM g WHERE a2 = 5;", stmt); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testStatement() {
+ @Test public void testStatement() {
ElementSymbol a = new ElementSymbol("a"); //$NON-NLS-1$
String type = new String("short"); //$NON-NLS-1$
DeclareStatement declStmt = new DeclareStatement(a, type);
@@ -3739,7 +3653,7 @@
stmt);
}
- public void testBlock() {
+ @Test public void testBlock() {
ElementSymbol a = new ElementSymbol("a"); //$NON-NLS-1$
String type = new String("short"); //$NON-NLS-1$
DeclareStatement declStmt = new DeclareStatement(a, type);
@@ -3750,7 +3664,7 @@
block);
}
- public void testCommandStatement(){
+ @Test public void testCommandStatement(){
Query query = sampleQuery();
Command sqlCmd = query;
@@ -3781,7 +3695,7 @@
return query;
}
- public void testDynamicCommandStatement(){
+ @Test public void testDynamicCommandStatement(){
List symbols = new ArrayList();
ElementSymbol a1 = new ElementSymbol("a1"); //$NON-NLS-1$
@@ -3804,7 +3718,7 @@
}
//sql is a variable, also uses the as, into, and update clauses
- public void testDynamicCommandStatement1(){
+ @Test public void testDynamicCommandStatement1(){
List symbols = new ArrayList();
ElementSymbol a1 = new ElementSymbol("a1"); //$NON-NLS-1$
@@ -3832,7 +3746,7 @@
cmdStmt);
}
- public void testDynamicCommandStatementWithUsing(){
+ @Test public void testDynamicCommandStatementWithUsing(){
SetClauseList using = new SetClauseList();
ElementSymbol a = new ElementSymbol("a"); //$NON-NLS-1$
@@ -3851,22 +3765,22 @@
}
//as clause should use short names
- public void testDynamicCommandStatement2(){
+ @Test public void testDynamicCommandStatement2(){
helpException("create virtual procedure begin execute string z as variables.a1 string, a2 integer into #g; end"); //$NON-NLS-1$
}
//using clause should use short names
- public void testDynamicCommandStatement3(){
+ @Test public void testDynamicCommandStatement3(){
helpException("create virtual procedure begin execute string z as a1 string, a2 integer into #g using variables.x=variables.y; end", "Parsing error: Invalid simple identifier format: [variables.x]"); //$NON-NLS-1$ //$NON-NLS-2$
}
//into clause requires as clause
- public void testDynamicCommandStatement4(){
+ @Test public void testDynamicCommandStatement4(){
helpException("create virtual procedure begin execute string z into #g using x=variables.y; end"); //$NON-NLS-1$
}
/** original test */
- public void testCreateUpdateProcedureCommand(){
+ @Test public void testCreateUpdateProcedureCommand(){
helpTestCreateUpdateProcedureCommandCase3025("CREATE PROCEDURE\nBEGIN\nDECLARE short var1;"+ //$NON-NLS-1$
"IF(HAS IS NULL CRITERIA ON (a))\nBEGIN\nvar1 = SELECT a1 FROM g WHERE a2 = 5;\nEND\n"+ //$NON-NLS-1$
"ELSE\nBEGIN\nDECLARE short var2;\nvar2 = SELECT b1 FROM g WHERE a2 = 5;\nEND\n" + //$NON-NLS-1$
@@ -3875,7 +3789,7 @@
}
/** test that a command in parens isn't parsed as a ScalarSubquery */
- public void testCreateUpdateProcedureCommandCase3025_1(){
+ @Test public void testCreateUpdateProcedureCommandCase3025_1(){
helpTestCreateUpdateProcedureCommandCase3025("CREATE PROCEDURE\nBEGIN\nDECLARE short var1;"+ //$NON-NLS-1$
"IF(HAS IS NULL CRITERIA ON (a))\nBEGIN\nvar1 = (SELECT a1 FROM g WHERE a2 = 5);\nEND\n"+ //$NON-NLS-1$
@@ -3885,7 +3799,7 @@
}
/** test that a command in DOUBLE parens isn't parsed as a ScalarSubquery */
- public void testCreateUpdateProcedureCommandCase3025_2(){
+ @Test public void testCreateUpdateProcedureCommandCase3025_2(){
helpTestCreateUpdateProcedureCommandCase3025("CREATE PROCEDURE\nBEGIN\nDECLARE short var1;"+ //$NON-NLS-1$
"IF(HAS IS NULL CRITERIA ON (a))\nBEGIN\nvar1 = ((SELECT a1 FROM g WHERE a2 = 5) );\nEND\n"+ //$NON-NLS-1$
"ELSE\nBEGIN\nDECLARE short var2;\nvar2 = SELECT b1 FROM g WHERE a2 = 5;\nEND\n" + //$NON-NLS-1$
@@ -3973,7 +3887,7 @@
}
/** test an expression in parentheses in an assignment statement */
- public void testCreateUpdateProcedureCommandCase3025_3(){
+ @Test public void testCreateUpdateProcedureCommandCase3025_3(){
String procedureString = "CREATE PROCEDURE\nBEGIN\nDECLARE short var1;"+ //$NON-NLS-1$
"IF(HAS IS NULL CRITERIA ON (a))\nBEGIN\nvar1 = (concat('x', 'y') );\nEND\n"+ //$NON-NLS-1$
@@ -3984,7 +3898,7 @@
}
/** test an expression in parentheses in an assignment statement */
- public void testCreateUpdateProcedureCommandCase3025_4(){
+ @Test public void testCreateUpdateProcedureCommandCase3025_4(){
String procedureString = "CREATE PROCEDURE\nBEGIN\nDECLARE short var1;"+ //$NON-NLS-1$
"IF(HAS IS NULL CRITERIA ON (a))\nBEGIN\nvar1 = ((concat('x', 'y') ));\nEND\n"+ //$NON-NLS-1$
@@ -3995,7 +3909,7 @@
}
/** test an expression without parentheses in an assignment statement */
- public void testCreateUpdateProcedureCommandCase3025_5(){
+ @Test public void testCreateUpdateProcedureCommandCase3025_5(){
String procedureString = "CREATE PROCEDURE\nBEGIN\nDECLARE short var1;"+ //$NON-NLS-1$
"IF(HAS IS NULL CRITERIA ON (a))\nBEGIN\nvar1 = concat('x', 'y') ;\nEND\n"+ //$NON-NLS-1$
@@ -4081,7 +3995,7 @@
}
/**IF statement with has criteria */
- public void testCreateUpdateProcedureCommand1(){
+ @Test public void testCreateUpdateProcedureCommand1(){
//declare var1
ElementSymbol var1 = new ElementSymbol("var1"); //$NON-NLS-1$
String shortType = new String("short"); //$NON-NLS-1$
@@ -4161,7 +4075,7 @@
"var2 = SELECT b1 FROM g WHERE a2 = 5;"+"\n"+"END"+"\n"+"END", cmd); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
}
- public void testCreateUpdateProcedureCommand0(){
+ @Test public void testCreateUpdateProcedureCommand0(){
//declare var1
ElementSymbol var1 = new ElementSymbol("var1"); //$NON-NLS-1$
String shortType = new String("short"); //$NON-NLS-1$
@@ -4242,7 +4156,7 @@
}
/**IF statement with has LIKE criteria */
- public void testCreateUpdateProcedureCommand2(){
+ @Test public void testCreateUpdateProcedureCommand2(){
//declare var1
ElementSymbol var1 = new ElementSymbol("var1"); //$NON-NLS-1$
String shortType = new String("short"); //$NON-NLS-1$
@@ -4324,7 +4238,7 @@
}
/**IF statement with has IN criteria */
- public void testCreateUpdateProcedureCommand3(){
+ @Test public void testCreateUpdateProcedureCommand3(){
//declare var1
ElementSymbol var1 = new ElementSymbol("var1"); //$NON-NLS-1$
String shortType = new String("short"); //$NON-NLS-1$
@@ -4406,7 +4320,7 @@
}
/**IF statement with has <> criteria */
- public void testCreateUpdateProcedureCommand4(){
+ @Test public void testCreateUpdateProcedureCommand4(){
//declare var1
ElementSymbol var1 = new ElementSymbol("var1"); //$NON-NLS-1$
String shortType = new String("short"); //$NON-NLS-1$
@@ -4488,7 +4402,7 @@
}
/**Has criteria in WHERE clause*/
- public void testCreateUpdateProcedureCommand5(){
+ @Test public void testCreateUpdateProcedureCommand5(){
//declare var1
ElementSymbol var1 = new ElementSymbol("var1"); //$NON-NLS-1$
String shortType = new String("short"); //$NON-NLS-1$
@@ -4578,7 +4492,7 @@
}
/** Translate criteria (empty criteriaSelector in WHERE clause*/
- public void testCreateUpdateProcedureCommand7(){
+ @Test public void testCreateUpdateProcedureCommand7(){
//declare var1
ElementSymbol var1 = new ElementSymbol("var1"); //$NON-NLS-1$
String shortType = new String("short"); //$NON-NLS-1$
@@ -4671,7 +4585,7 @@
}
/** Translate criteria (is null criteriaSelector in WHERE clause*/
- public void testCreateUpdateProcedureCommand9(){
+ @Test public void testCreateUpdateProcedureCommand9(){
//declare var1
ElementSymbol var1 = new ElementSymbol("var1"); //$NON-NLS-1$
String shortType = new String("short"); //$NON-NLS-1$
@@ -4764,7 +4678,7 @@
}
/** Translate criteria ( only with WHERE clause) */
- public void testCreateUpdateProcedureCommand10(){
+ @Test public void testCreateUpdateProcedureCommand10(){
//declare var1
ElementSymbol var1 = new ElementSymbol("var1"); //$NON-NLS-1$
String shortType = new String("short"); //$NON-NLS-1$
@@ -4857,7 +4771,7 @@
}
/** Translate criteria ( only with WHERE clause) */
- public void testCreateUpdateProcedureCommand12(){
+ @Test public void testCreateUpdateProcedureCommand12(){
//declare var1
ElementSymbol var1 = new ElementSymbol("var1"); //$NON-NLS-1$
String shortType = new String("short"); //$NON-NLS-1$
@@ -4956,7 +4870,7 @@
}
/** Translate criteria (with only Criteria in WHERE clause) */
- public void testCreateUpdateProcedureCommand11(){
+ @Test public void testCreateUpdateProcedureCommand11(){
//declare var1
ElementSymbol var1 = new ElementSymbol("var1"); //$NON-NLS-1$
String shortType = new String("short"); //$NON-NLS-1$
@@ -5048,7 +4962,7 @@
}
/**IF statement with has criteria no on */
- public void testCreateUpdateProcedureCommand8(){
+ @Test public void testCreateUpdateProcedureCommand8(){
//declare var1
ElementSymbol var1 = new ElementSymbol("var1"); //$NON-NLS-1$
String shortType = new String("short"); //$NON-NLS-1$
@@ -5122,7 +5036,7 @@
"var2 = SELECT b1 FROM g WHERE a2 = 5;"+"\n"+"END"+"\n"+"END", cmd); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
}
- public void testSubquerySetCriteria0() {
+ @Test public void testSubquerySetCriteria0() {
//test wrap up command with subquerySetCriteria
GroupSymbol g = new GroupSymbol("db.g"); //$NON-NLS-1$
From from = new From();
@@ -5152,7 +5066,7 @@
outer);
}
- public void testSubquerySetCriteria1() {
+ @Test public void testSubquerySetCriteria1() {
GroupSymbol g = new GroupSymbol("db.g"); //$NON-NLS-1$
From from = new From();
@@ -5182,7 +5096,7 @@
outer);
}
- public void testSubquerySetCriteriaWithExec() {
+ @Test public void testSubquerySetCriteriaWithExec() {
GroupSymbol g = new GroupSymbol("db.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -5206,7 +5120,7 @@
outer);
}
- public void testSubquerySetCriteriaWithUnion() {
+ @Test public void testSubquerySetCriteriaWithUnion() {
GroupSymbol g = new GroupSymbol("db.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -5248,7 +5162,7 @@
outer);
}
- public void testVariablesInExec(){
+ @Test public void testVariablesInExec(){
StoredProcedure storedQuery = new StoredProcedure();
storedQuery.setProcedureName("proc1"); //$NON-NLS-1$
SPParameter parameter = new SPParameter(1, new ElementSymbol("param1")); //$NON-NLS-1$
@@ -5258,7 +5172,7 @@
helpTest("execute proc1(param1)", "EXEC proc1(param1)", storedQuery); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testExecSubquery(){
+ @Test public void testExecSubquery(){
Query query = new Query();
Select select = new Select();
select.addSymbol(new AllSymbol());
@@ -5275,7 +5189,7 @@
query);
}
- public void testUnicode1() {
+ @Test public void testUnicode1() {
try {
byte[] data = { (byte)0xd0, (byte)0x9c, (byte)0xd0, (byte)0xbe, (byte)0xd1, (byte)0x81, (byte)0xd0, (byte)0xba, (byte)0xd0, (byte)0xb2, (byte)0xd0, (byte)0xb0};
@@ -5299,7 +5213,7 @@
}
}
- public void testUnicode2() {
+ @Test public void testUnicode2() {
String sql = "SELECT * FROM TestDocument.TestDocument WHERE Subject='\u0041\u005a'"; //$NON-NLS-1$
Query query = new Query();
@@ -5315,8 +5229,8 @@
helpTest(sql, query.toString(), query);
}
- public void testUnicode3() {
- String sql = "SELECT \"\u05e0\""; //$NON-NLS-1$
+ @Test public void testUnicode3() {
+ String sql = "SELECT '\u05e0'"; //$NON-NLS-1$
Query query = new Query();
Select select = new Select();
@@ -5327,7 +5241,7 @@
helpTest(sql, query.toString(), query);
}
- public void testUnicode4() {
+ @Test public void testUnicode4() {
String sql = "SELECT \u05e0 FROM g"; //$NON-NLS-1$
Query query = new Query();
@@ -5342,7 +5256,7 @@
helpTest(sql, query.toString(), query);
}
- public void testEscapedFunction1() {
+ @Test public void testEscapedFunction1() {
String sql = "SELECT * FROM a.thing WHERE e1 = {fn concat('a', 'b')}"; //$NON-NLS-1$
Query query = new Query();
@@ -5361,7 +5275,7 @@
query);
}
- public void testEscapedFunction2() {
+ @Test public void testEscapedFunction2() {
String sql = "SELECT * FROM a.thing WHERE e1 = {fn convert(5, string)}"; //$NON-NLS-1$
Query query = new Query();
@@ -5380,7 +5294,7 @@
query);
}
- public void testEscapedFunction3() {
+ @Test public void testEscapedFunction3() {
String sql = "SELECT * FROM a.thing WHERE e1 = {fn cast(5 as string)}"; //$NON-NLS-1$
Query query = new Query();
@@ -5397,7 +5311,7 @@
helpTest(sql, "SELECT * FROM a.thing WHERE e1 = cast(5 AS string)", query); //$NON-NLS-1$
}
- public void testEscapedFunction4() {
+ @Test public void testEscapedFunction4() {
String sql = "SELECT * FROM a.thing WHERE e1 = {fn concat({fn concat('a', 'b')}, 'c')}"; //$NON-NLS-1$
Query query = new Query();
@@ -5415,7 +5329,7 @@
helpTest(sql, "SELECT * FROM a.thing WHERE e1 = concat(concat('a', 'b'), 'c')", query); //$NON-NLS-1$
}
- public void testFunctionWithUnderscore() {
+ @Test public void testFunctionWithUnderscore() {
String sql = "SELECT yowza_yowza() FROM a.thing"; //$NON-NLS-1$
Query query = new Query();
@@ -5432,7 +5346,7 @@
helpTest(sql, "SELECT yowza_yowza() FROM a.thing", query); //$NON-NLS-1$
}
- public void testManyInnerJoins1() {
+ @Test public void testManyInnerJoins1() {
String sql = "SELECT * " + //$NON-NLS-1$
"FROM SQL1.dbo.Customers INNER JOIN SQL1.dbo.Orders " + //$NON-NLS-1$
"ON SQL1.dbo.Customers.CustomerID = SQL1.dbo.Orders.CustomerID " + //$NON-NLS-1$
@@ -5474,7 +5388,7 @@
helpTest(sql, sqlExpected, query);
}
- public void testManyInnerJoins2() {
+ @Test public void testManyInnerJoins2() {
String sql = "SELECT * " + //$NON-NLS-1$
"FROM A INNER JOIN (B RIGHT OUTER JOIN C ON b1 = c1) " + //$NON-NLS-1$
"ON a1 = b1 " + //$NON-NLS-1$
@@ -5520,7 +5434,7 @@
helpTest(sql, sqlExpected, query);
}
- public void testManyInnerJoins3() {
+ @Test public void testManyInnerJoins3() {
String sql = "SELECT * " + //$NON-NLS-1$
"FROM A INNER JOIN " + //$NON-NLS-1$
"(B RIGHT OUTER JOIN C ON b1 = c1 " + //$NON-NLS-1$
@@ -5564,7 +5478,7 @@
helpTest(sql, sqlExpected, query);
}
- public void testLoopStatement(){
+ @Test public void testLoopStatement(){
GroupSymbol g = new GroupSymbol("m.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -5596,7 +5510,7 @@
+"\n"+"END", loopStmt); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testLoopStatementWithOrderBy(){
+ @Test public void testLoopStatementWithOrderBy(){
GroupSymbol g = new GroupSymbol("m.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -5632,7 +5546,7 @@
+"\n"+"END", loopStmt); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testWhileStatement(){
+ @Test public void testWhileStatement(){
ElementSymbol x = new ElementSymbol("x", false); //$NON-NLS-1$
Function f = new Function("+", new Expression[] { x, new Constant(new Integer(1)) }); //$NON-NLS-1$
Statement assignmentStmt = new AssignmentStatement(x, f);
@@ -5646,17 +5560,17 @@
+"\n"+"END", whileStmt); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testBreakStatement(){
+ @Test public void testBreakStatement(){
Statement breakStmt = new BreakStatement();
helpStmtTest("break;", "BREAK;", breakStmt); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testContinueStatement(){
+ @Test public void testContinueStatement(){
Statement contStmt = new ContinueStatement();
helpStmtTest("continue;", "CONTINUE;", contStmt); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testVirtualProcedure(){
+ @Test public void testVirtualProcedure(){
ElementSymbol x = new ElementSymbol("x"); //$NON-NLS-1$
String intType = new String("integer"); //$NON-NLS-1$
Statement dStmt = new DeclareStatement(x, intType);
@@ -5709,7 +5623,7 @@
}
- public void testScalarSubqueryExpressionInSelect(){
+ @Test public void testScalarSubqueryExpressionInSelect(){
Select s1 = new Select();
s1.addSymbol(new ElementSymbol("e1")); //$NON-NLS-1$
@@ -5733,7 +5647,7 @@
q2);
}
- public void testScalarSubqueryExpressionInSelect2(){
+ @Test public void testScalarSubqueryExpressionInSelect2(){
Select s1 = new Select();
s1.addSymbol(new ElementSymbol("e1")); //$NON-NLS-1$
@@ -5756,7 +5670,7 @@
q2);
}
- public void testScalarSubqueryExpressionInSelect3(){
+ @Test public void testScalarSubqueryExpressionInSelect3(){
Select s1 = new Select();
s1.addSymbol(new ElementSymbol("e1")); //$NON-NLS-1$
@@ -5780,7 +5694,7 @@
q2);
}
- public void testScalarSubqueryExpressionWithAlias(){
+ @Test public void testScalarSubqueryExpressionWithAlias(){
Select s1 = new Select();
s1.addSymbol(new ElementSymbol("e1")); //$NON-NLS-1$
@@ -5804,7 +5718,7 @@
q2);
}
- public void testScalarSubqueryExpressionInComplexExpression() throws QueryParserException {
+ @Test public void testScalarSubqueryExpressionInComplexExpression() throws QueryParserException {
Select s2 = new Select();
s2.addSymbol(new ElementSymbol("e1")); //$NON-NLS-1$
@@ -5821,7 +5735,7 @@
q2);
}
- public void testScalarSubqueryExpressionInComplexExpression2() throws QueryParserException{
+ @Test public void testScalarSubqueryExpressionInComplexExpression2() throws QueryParserException{
Select s2 = new Select();
s2.addSymbol(new ElementSymbol("e1")); //$NON-NLS-1$
@@ -5838,7 +5752,7 @@
q2);
}
- public void testScalarSubqueryExpressionInComplexExpression3() throws QueryParserException{
+ @Test public void testScalarSubqueryExpressionInComplexExpression3() throws QueryParserException{
Select s2 = new Select();
s2.addSymbol(new ElementSymbol("e1")); //$NON-NLS-1$
@@ -5855,7 +5769,7 @@
q2);
}
- public void testScalarSubqueryExpressionInFunction() throws QueryParserException{
+ @Test public void testScalarSubqueryExpressionInFunction() throws QueryParserException{
Select s2 = new Select();
s2.addSymbol(new ElementSymbol("e1")); //$NON-NLS-1$
@@ -5872,11 +5786,11 @@
q2);
}
- public void testBadScalarSubqueryExpression() {
+ @Test public void testBadScalarSubqueryExpression() {
helpException("SELECT e1, length(SELECT e1 FROM m.g1) as X FROM m.g2"); //$NON-NLS-1$
}
- public void testExistsPredicateCriteria(){
+ @Test public void testExistsPredicateCriteria(){
Select s1 = new Select();
s1.addSymbol(new ElementSymbol("e1")); //$NON-NLS-1$
@@ -5901,7 +5815,7 @@
q2);
}
- public void testAnyQuantifierSubqueryComparePredicate(){
+ @Test public void testAnyQuantifierSubqueryComparePredicate(){
Select s1 = new Select();
s1.addSymbol(new ElementSymbol("e1")); //$NON-NLS-1$
@@ -5927,7 +5841,7 @@
}
- public void testSomeQuantifierSubqueryComparePredicate(){
+ @Test public void testSomeQuantifierSubqueryComparePredicate(){
Select s1 = new Select();
s1.addSymbol(new ElementSymbol("e1")); //$NON-NLS-1$
@@ -5953,7 +5867,7 @@
}
- public void testAllQuantifierSubqueryComparePredicate(){
+ @Test public void testAllQuantifierSubqueryComparePredicate(){
Select s1 = new Select();
s1.addSymbol(new ElementSymbol("e1")); //$NON-NLS-1$
@@ -5979,7 +5893,7 @@
}
- public void testScalarSubqueryComparePredicate(){
+ @Test public void testScalarSubqueryComparePredicate(){
Select s1 = new Select();
s1.addSymbol(new ElementSymbol("e1")); //$NON-NLS-1$
@@ -6005,7 +5919,7 @@
}
- public void testSelectInto(){
+ @Test public void testSelectInto(){
GroupSymbol g = new GroupSymbol("m.g"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -6025,7 +5939,7 @@
q);
}
- public void testCaseExpression1() {
+ @Test public void testCaseExpression1() {
CaseExpression expr = TestCaseExpression.example(4);
Select select = new Select();
select.addSymbol(new ElementSymbol("y")); //$NON-NLS-1$
@@ -6051,7 +5965,7 @@
helpTest(query, query, q);
}
- public void testCaseExpression2() {
+ @Test public void testCaseExpression2() {
CaseExpression expr = TestCaseExpression.example(4);
expr.setElseExpression(null);
Select select = new Select();
@@ -6077,7 +5991,7 @@
helpTest(query, query, q);
}
- public void testCaseExpression3() {
+ @Test public void testCaseExpression3() {
SearchedCaseExpression expr = TestSearchedCaseExpression.example2(4);
Select select = new Select();
select.addSymbol(new ElementSymbol("y")); //$NON-NLS-1$
@@ -6100,7 +6014,7 @@
helpTest(query, query, q);
}
- public void testSearchedCaseExpression1() {
+ @Test public void testSearchedCaseExpression1() {
SearchedCaseExpression expr = TestSearchedCaseExpression.example(4);
Select select = new Select();
select.addSymbol(new ElementSymbol("y")); //$NON-NLS-1$
@@ -6125,7 +6039,7 @@
helpTest(query, query, q);
}
- public void testSearchedCaseExpression2() {
+ @Test public void testSearchedCaseExpression2() {
SearchedCaseExpression expr = TestSearchedCaseExpression.example(4);
expr.setElseExpression(null);
Select select = new Select();
@@ -6150,7 +6064,7 @@
helpTest(query, query, q);
}
- public void testSearchedCaseExpression3() {
+ @Test public void testSearchedCaseExpression3() {
SearchedCaseExpression expr = TestSearchedCaseExpression.example(4);
Select select = new Select();
select.addSymbol(new ElementSymbol("y")); //$NON-NLS-1$
@@ -6173,7 +6087,7 @@
helpTest(query, query, q);
}
- public void testAndOrPrecedence_1575() {
+ @Test public void testAndOrPrecedence_1575() {
Select s = new Select();
s.addSymbol(new AllSymbol());
From f = new From();
@@ -6192,7 +6106,7 @@
"SELECT * FROM m.g1 WHERE (e1 = 0) OR ((e2 = 1) AND (e3 = 3))", q); //$NON-NLS-1$
}
- public void testAndOrPrecedence2_1575() {
+ @Test public void testAndOrPrecedence2_1575() {
Select s = new Select();
s.addSymbol(new AllSymbol());
From f = new From();
@@ -6235,16 +6149,16 @@
}
- public void testCompoundNonJoinCriteriaInFromWithComparisonCriteria() {
+ @Test public void testCompoundNonJoinCriteriaInFromWithComparisonCriteria() {
CompareCriteria c2 = new CompareCriteria(new ElementSymbol("e2"), CompareCriteria.EQ, new Constant(new Integer(1))); //$NON-NLS-1$
helpTestCompoundNonJoinCriteria("e2 = 1", c2); //$NON-NLS-1$
}
- public void testCompoundNonJoinCriteriaInFromWithIsNull() {
+ @Test public void testCompoundNonJoinCriteriaInFromWithIsNull() {
helpTestCompoundNonJoinCriteria("e2 IS NULL", new IsNullCriteria(new ElementSymbol("e2"))); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testCompoundNonJoinCriteriaInFromUWithIN() {
+ @Test public void testCompoundNonJoinCriteriaInFromUWithIN() {
Collection values = new ArrayList();
values.add(new Constant(new Integer(0)));
values.add(new Constant(new Integer(1)));
@@ -6252,36 +6166,36 @@
helpTestCompoundNonJoinCriteria("e2 IN (0, 1)", crit); //$NON-NLS-1$
}
- public void testCompoundNonJoinCriteriaInFromUWithLIKE() {
+ @Test public void testCompoundNonJoinCriteriaInFromUWithLIKE() {
PredicateCriteria crit = new MatchCriteria(new ElementSymbol("e2"), new Constant("%")); //$NON-NLS-1$ //$NON-NLS-2$
helpTestCompoundNonJoinCriteria("e2 LIKE '%'", crit); //$NON-NLS-1$
}
- public void testCompoundNonJoinCriteria_defect15167_1() throws Exception {
+ @Test public void testCompoundNonJoinCriteria_defect15167_1() throws Exception {
QueryParser.getQueryParser().parseCommand("SELECT A.alert_id, A.primary_entity_name, A.primary_entity_level_code, A.alert_description, A.create_date, A.alert_risk_score, S.scenario_name, A.alert_status_code, A.process_id, A.actual_values_text, S.SCENARIO_CATEGORY_DESC, A.primary_entity_number, A.scenario_id, A.primary_entity_key FROM (FSK_ALERT AS A LEFT OUTER JOIN FSK_SCENARIO AS S ON A.scenario_id = S.scenario_id) INNER JOIN FSC_ACCOUNT_DIM AS C ON A.primary_entity_key = C.ACCOUNT_KEY AND ((S.current_ind = 'Y') OR (S.current_ind IS NULL)) WHERE (A.primary_entity_level_code = 'ACC') AND (C.ACCOUNT_KEY = 23923) AND (A.logical_delete_ind = 'N') OPTION PLANONLY"); //$NON-NLS-1$
}
- public void testCompoundNonJoinCriteria_defect15167_2() throws Exception {
+ @Test public void testCompoundNonJoinCriteria_defect15167_2() throws Exception {
QueryParser.getQueryParser().parseCommand("SELECT A.alert_id, A.primary_entity_name, A.primary_entity_level_code, A.alert_description, A.create_date, A.alert_risk_score, S.scenario_name, A.alert_status_code, A.process_id, A.actual_values_text, S.SCENARIO_CATEGORY_DESC, A.primary_entity_number, A.scenario_id, A.primary_entity_key FROM (FSK_ALERT AS A LEFT OUTER JOIN FSK_SCENARIO AS S ON A.scenario_id = S.scenario_id) INNER JOIN FSC_ACCOUNT_DIM AS C ON A.primary_entity_key = C.ACCOUNT_KEY AND (S.current_ind = 'Y' OR S.current_ind IS NULL) WHERE (A.primary_entity_level_code = 'ACC') AND (C.ACCOUNT_KEY = 23923) AND (A.logical_delete_ind = 'N') OPTION PLANONLY"); //$NON-NLS-1$
}
- public void testCompoundNonJoinCriteria_defect15167_3() throws Exception {
+ @Test public void testCompoundNonJoinCriteria_defect15167_3() throws Exception {
QueryParser.getQueryParser().parseCommand("SELECT A.alert_id, A.primary_entity_name, A.primary_entity_level_code, A.alert_description, A.create_date, A.alert_risk_score, S.scenario_name, A.alert_status_code, A.process_id, A.actual_values_text, S.SCENARIO_CATEGORY_DESC, A.primary_entity_number, A.scenario_id, A.primary_entity_key FROM (FSK_ALERT AS A LEFT OUTER JOIN FSK_SCENARIO AS S ON A.scenario_id = S.scenario_id) INNER JOIN FSC_ACCOUNT_DIM AS C ON (A.primary_entity_key = C.ACCOUNT_KEY AND (S.current_ind = 'Y' OR S.current_ind IS NULL)) WHERE (A.primary_entity_level_code = 'ACC') AND (C.ACCOUNT_KEY = 23923) AND (A.logical_delete_ind = 'N') OPTION PLANONLY"); //$NON-NLS-1$
}
- public void testCompoundNonJoinCriteria_defect15167_4() throws Exception {
+ @Test public void testCompoundNonJoinCriteria_defect15167_4() throws Exception {
QueryParser.getQueryParser().parseCommand("SELECT A.alert_id, A.primary_entity_name, A.primary_entity_level_code, A.alert_description, A.create_date, A.alert_risk_score, S.scenario_name, A.alert_status_code, A.process_id, A.actual_values_text, S.SCENARIO_CATEGORY_DESC, A.primary_entity_number, A.scenario_id, A.primary_entity_key FROM (FSK_ALERT AS A LEFT OUTER JOIN FSK_SCENARIO AS S ON A.scenario_id = S.scenario_id) INNER JOIN FSC_ACCOUNT_DIM AS C ON (A.primary_entity_key = C.ACCOUNT_KEY AND S.current_ind = 'Y' OR S.current_ind IS NULL) WHERE (A.primary_entity_level_code = 'ACC') AND (C.ACCOUNT_KEY = 23923) AND (A.logical_delete_ind = 'N') OPTION PLANONLY"); //$NON-NLS-1$
}
- public void testFunctionInGroupBy() throws Exception {
+ @Test public void testFunctionInGroupBy() throws Exception {
QueryParser.getQueryParser().parseCommand("SELECT SUM(s), elem+1 FROM m.g GROUP BY elem+1"); //$NON-NLS-1$
}
- public void testCaseInGroupBy() throws Exception {
+ @Test public void testCaseInGroupBy() throws Exception {
QueryParser.getQueryParser().parseCommand("SELECT SUM(elem+1), CASE elem WHEN 0 THEN 1 ELSE 2 END AS c FROM m.g GROUP BY CASE elem WHEN 0 THEN 1 ELSE 2 END"); //$NON-NLS-1$
}
- public void testNationCharString() throws Exception {
+ @Test public void testNationCharString() throws Exception {
Query query = (Query) QueryParser.getQueryParser().parseCommand("SELECT N'blah' FROM m.g"); //$NON-NLS-1$
Select select = query.getSelect();
ExpressionSymbol s = (ExpressionSymbol) select.getSymbol(0);
@@ -6289,18 +6203,18 @@
assertEquals(c, new Constant("blah")); //$NON-NLS-1$
}
- public void testNationCharString2() throws Exception {
+ @Test public void testNationCharString2() throws Exception {
Query query = (Query) QueryParser.getQueryParser().parseCommand("SELECT DISTINCT TABLE_QUALIFIER, NULL AS TABLE_OWNER, NULL AS TABLE_NAME, NULL AS TABLE_TYPE, NULL AS REMARKS FROM ATIODBCSystem.OA_TABLES WHERE TABLE_QUALIFIER LIKE N'%' ESCAPE '\\' ORDER BY TABLE_QUALIFIER "); //$NON-NLS-1$
MatchCriteria matchCrit = (MatchCriteria) query.getCriteria();
Constant c = (Constant) matchCrit.getRightExpression();
assertEquals(c, new Constant("%")); //$NON-NLS-1$
}
- public void testScalarSubquery() throws Exception {
+ @Test public void testScalarSubquery() throws Exception {
QueryParser.getQueryParser().parseCommand("SELECT (SELECT 1) FROM x"); //$NON-NLS-1$
}
- public void testElementInDoubleQuotes() throws Exception {
+ @Test public void testElementInDoubleQuotes() throws Exception {
GroupSymbol g = new GroupSymbol("x"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -6315,10 +6229,10 @@
helpTest("SELECT \"foo\" FROM x", //$NON-NLS-1$
"SELECT foo FROM x", //$NON-NLS-1$
- query, info);
+ query);
}
- public void testElementInDoubleQuotes_Insert() throws Exception {
+ @Test public void testElementInDoubleQuotes_Insert() throws Exception {
GroupSymbol g = new GroupSymbol("x"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -6331,10 +6245,10 @@
helpTest("insert into x (\"foo\") values ('bar')", //$NON-NLS-1$
"INSERT INTO x (foo) VALUES ('bar')", //$NON-NLS-1$
- query, info);
+ query);
}
- public void testElementInDoubleQuotes_Update() throws Exception {
+ @Test public void testElementInDoubleQuotes_Update() throws Exception {
GroupSymbol g = new GroupSymbol("x"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -6346,10 +6260,10 @@
helpTest("update x set \"foo\"='bar'", //$NON-NLS-1$
"UPDATE x SET foo = 'bar'", //$NON-NLS-1$
- query, info);
+ query);
}
- public void testElementInDoubleQuotes_delete() throws Exception {
+ @Test public void testElementInDoubleQuotes_delete() throws Exception {
GroupSymbol g = new GroupSymbol("x"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -6360,10 +6274,10 @@
helpTest("delete from x where \"foo\"='bar'", //$NON-NLS-1$
"DELETE FROM x WHERE foo = 'bar'", //$NON-NLS-1$
- query, info);
+ query);
}
- public void testAliasInDoubleQuotes() throws Exception {
+ @Test public void testAliasInDoubleQuotes() throws Exception {
GroupSymbol g = new GroupSymbol("x"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -6378,10 +6292,10 @@
helpTest("SELECT fooKey AS \"fooAlias\" FROM x", //$NON-NLS-1$
"SELECT fooKey AS fooAlias FROM x", //$NON-NLS-1$
- query, info);
+ query);
}
- public void testAliasInDoubleQuotesWithQuotedGroup() throws Exception {
+ @Test public void testAliasInDoubleQuotesWithQuotedGroup() throws Exception {
GroupSymbol g = new GroupSymbol("x.y.z"); //$NON-NLS-1$
From from = new From();
@@ -6402,10 +6316,10 @@
helpTest("SELECT fooKey AS \"fooAlias\" FROM \"x.y\".z where x.\"y.z\".id = 10", //$NON-NLS-1$
"SELECT fooKey AS fooAlias FROM x.y.z WHERE x.y.z.id = 10", //$NON-NLS-1$
- query, info);
+ query);
}
- public void testSingleQuotedConstant() throws Exception {
+ @Test public void testSingleQuotedConstant() throws Exception {
GroupSymbol g = new GroupSymbol("x.y.z"); //$NON-NLS-1$
From from = new From();
@@ -6421,10 +6335,10 @@
helpTest("SELECT 'fooString' FROM \"x.y.z\"", //$NON-NLS-1$
"SELECT 'fooString' FROM x.y.z", //$NON-NLS-1$
- query, info);
+ query);
}
- public void testAliasInSingleQuotes() throws Exception {
+ @Test public void testAliasInSingleQuotes() throws Exception {
GroupSymbol g = new GroupSymbol("x.y.z"); //$NON-NLS-1$
From from = new From();
@@ -6438,103 +6352,30 @@
query.setSelect(select);
query.setFrom(from);
- helpTest("SELECT fooKey 'fooAlias' FROM x.\"y\".z", //$NON-NLS-1$
- "SELECT fooKey AS fooAlias FROM x.y.z", //$NON-NLS-1$
- query, info);
+ helpException("SELECT fooKey 'fooAlias' FROM x.\"y\".z"); //$NON-NLS-1$
}
- public void testAliasInSingleQuotes2() throws Exception {
-
- GroupSymbol g = new GroupSymbol("x.y.z"); //$NON-NLS-1$
- From from = new From();
- from.addGroup(g);
-
- AliasSymbol as = new AliasSymbol("fooAlias", new ElementSymbol("fooKey")); //$NON-NLS-1$ //$NON-NLS-2$
- Select select = new Select();
- select.addSymbol(as);
-
- Query query = new Query();
- query.setSelect(select);
- query.setFrom(from);
-
- helpTest("SELECT \"fooKey\" AS 'fooAlias' FROM x.y.z", //$NON-NLS-1$
- "SELECT fooKey AS fooAlias FROM x.y.z", //$NON-NLS-1$
- query, info);
- }
-
- public void testFullyQualifiedElementWithSlashes() throws Exception {
- GroupSymbol g = new GroupSymbol("x.y.z"); //$NON-NLS-1$
- From from = new From();
- from.addGroup(g);
-
- Select select = new Select();
- select.addSymbol(new ElementSymbol("x.y.z.fooKey")); //$NON-NLS-1$
-
- Query query = new Query();
- query.setSelect(select);
- query.setFrom(from);
-
- helpTest("SELECT \"x/y\".z.fooKey FROM \"x/y\".z", //$NON-NLS-1$
- "SELECT x.y.z.fooKey FROM x.y.z", //$NON-NLS-1$
- query);
- }
-
- public void testFullyQualifiedVaribleWithSlashes() throws Exception {
- GroupSymbol g = new GroupSymbol("x.y.z"); //$NON-NLS-1$
- From from = new From();
- from.addGroup(g);
-
- Select select = new Select();
- select.addSymbol(new ElementSymbol("x.y.z.fooKey")); //$NON-NLS-1$
- AliasSymbol alias = new AliasSymbol("key", new ElementSymbol("x.y.z.key2")); //$NON-NLS-1$ //$NON-NLS-2$
- select.addSymbol(alias);
-
- Criteria crit = new CompareCriteria(new ElementSymbol("x.y.z.fooKey"), SubqueryCompareCriteria.GT, new Constant(new Integer(10))); //$NON-NLS-1$
-
- OrderBy orderby = new OrderBy();
- orderby.addVariable(new ElementSymbol("x.y.z.fooKey"), true); //$NON-NLS-1$
-
- GroupBy groupby = new GroupBy();
- groupby.addSymbol(new ElementSymbol("key")); //$NON-NLS-1$
-
- Query query = new Query();
- query.setSelect(select);
- query.setFrom(from);
- query.setCriteria(crit);
- query.setOrderBy(orderby);
- query.setGroupBy(groupby);
-
- helpTest("SELECT x/y.z.fooKey, x/y.z.key2 as 'key' FROM x/y.z where x/y.z.fooKey > 10 group by key order by x/y.z.fooKey", //$NON-NLS-1$
- "SELECT x.y.z.fooKey, x.y.z.key2 AS key FROM x.y.z WHERE x.y.z.fooKey > 10 GROUP BY key ORDER BY x.y.z.fooKey", //$NON-NLS-1$
- query);
- }
-
/** QUERY Tool Format*/
- public void testQueryWithQuotes_MSQuery() throws Exception {
- QueryParser.getQueryParser().parseCommand("SELECT \"PART_COLOR\", \"PART_ID\", \"PART_NAME\", \"PART_WEIGHT\" FROM \"VirtualParts/base\".\"Parts\""); //$NON-NLS-1$
+ @Test public void testQueryWithQuotes_MSQuery() throws Exception {
+ QueryParser.getQueryParser().parseCommand("SELECT \"PART_COLOR\", \"PART_ID\", \"PART_NAME\", \"PART_WEIGHT\" FROM \"VirtualParts.base\".\"Parts\""); //$NON-NLS-1$
}
- /** MS Query Format **/
- public void testQueryWithQuotes_MSQuery2() throws Exception {
- QueryParser.getQueryParser().parseCommand("SELECT Core.ModelType.Value AS 'ModelType', DtcBase.Metamodels.DisplayName AS 'MetaModel', DtcBase.Models.Name AS 'ModelName', DtcBase.Models.Version, Core.ModelAnnotation.PrimaryMetamodelUri, DtcBase.Models.TransactionId AS 'ModelID'"); //$NON-NLS-1$
- }
-
/** MS Access Format**/
- public void testQueryWithQuotes_MSAccess() throws Exception {
- QueryParser.getQueryParser().parseCommand("SELECT \"PART_COLOR\" ,\"PART_ID\" ,\"PART_NAME\" ,\"PART_WEIGHT\" FROM \"parts_oracle/DEV_RRAMESH\".\"PARTS\""); //$NON-NLS-1$
+ @Test public void testQueryWithQuotes_MSAccess() throws Exception {
+ QueryParser.getQueryParser().parseCommand("SELECT \"PART_COLOR\" ,\"PART_ID\" ,\"PART_NAME\" ,\"PART_WEIGHT\" FROM \"parts_oracle.DEV_RRAMESH\".\"PARTS\""); //$NON-NLS-1$
}
/** BO Business View Manager**/
- public void testQueryWithQuotes_BODesigner() throws Exception {
- QueryParser.getQueryParser().parseCommand("SELECT DISTINCT \"PARTS\".\"PART_NAME\" FROM \"parts_oracle/DEV_RRAMESH\".\"PARTS\" \"PARTS\""); //$NON-NLS-1$
+ @Test public void testQueryWithQuotes_BODesigner() throws Exception {
+ QueryParser.getQueryParser().parseCommand("SELECT DISTINCT \"PARTS\".\"PART_NAME\" FROM \"parts_oracle.DEV_RRAMESH\".\"PARTS\" \"PARTS\""); //$NON-NLS-1$
}
/** Crystal Reports **/
- public void testQueryWithQuotes_CrystalReports() throws Exception {
- QueryParser.getQueryParser().parseCommand("SELECT \"Oracle_PARTS\".\"PART_COLOR\", \"Oracle_PARTS\".\"PART_ID\", \"Oracle_PARTS\".\"PART_NAME\", \"Oracle_PARTS\".\"PART_WEIGHT\", \"SQL_PARTS\".\"PART_COLOR\", \"SQL_PARTS\".\"PART_ID\", \"SQL_PARTS\".\"PART_NAME\", \"SQL_PARTS\".\"PART_WEIGHT\" FROM \"parts_oracle/DEV_RRAMESH\".\"PARTS\" \"Oracle_PARTS\", \"parts_sqlserver/dv_rreddy/dv_rreddy\".\"PARTS\" \"SQL_PARTS\" WHERE (\"Oracle_PARTS\".\"PART_ID\"=\"SQL_PARTS\".\"PART_ID\")"); //$NON-NLS-1$
+ @Test public void testQueryWithQuotes_CrystalReports() throws Exception {
+ QueryParser.getQueryParser().parseCommand("SELECT \"Oracle_PARTS\".\"PART_COLOR\", \"Oracle_PARTS\".\"PART_ID\", \"Oracle_PARTS\".\"PART_NAME\", \"Oracle_PARTS\".\"PART_WEIGHT\", \"SQL_PARTS\".\"PART_COLOR\", \"SQL_PARTS\".\"PART_ID\", \"SQL_PARTS\".\"PART_NAME\", \"SQL_PARTS\".\"PART_WEIGHT\" FROM \"parts_oracle.DEV_RRAMESH\".\"PARTS\" \"Oracle_PARTS\", \"parts_sqlserver.dv_rreddy.dv_rreddy\".\"PARTS\" \"SQL_PARTS\" WHERE (\"Oracle_PARTS\".\"PART_ID\"=\"SQL_PARTS\".\"PART_ID\")"); //$NON-NLS-1$
}
- public void testOrderByWithNumbers_InQuotes() throws Exception {
+ @Test public void testOrderByWithNumbers_InQuotes() throws Exception {
GroupSymbol g = new GroupSymbol("z"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -6551,10 +6392,10 @@
query.setFrom(from);
query.setOrderBy(orderby);
- helpTest("SELECT x, y from z order by \"1\"", "SELECT x, y FROM z ORDER BY 1", query); //$NON-NLS-1$ //$NON-NLS-2$
+ helpTest("SELECT x, y from z order by \"1\"", "SELECT x, y FROM z ORDER BY \"1\"", query); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testOrderByWithNumbers_AsInt() throws Exception {
+ @Test public void testOrderByWithNumbers_AsInt() throws Exception {
GroupSymbol g = new GroupSymbol("z"); //$NON-NLS-1$
From from = new From();
from.addGroup(g);
@@ -6564,7 +6405,7 @@
select.addSymbol(new ElementSymbol("y")); //$NON-NLS-1$
OrderBy orderby = new OrderBy();
- orderby.addVariable(new ElementSymbol("1"), true); //$NON-NLS-1$
+ orderby.addVariable(new ExpressionSymbol("expr", new Constant(1)), true); //$NON-NLS-1$
Query query = new Query();
query.setSelect(select);
@@ -6574,58 +6415,11 @@
helpTest("SELECT x, y FROM z order by 1", "SELECT x, y FROM z ORDER BY 1", query); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testOrderByWithNumbers_AsNegitiveInt() throws Exception {
- try {
+ @Test(expected=QueryParserException.class) public void testOrderByWithNumbers_AsNegitiveInt() throws Exception {
QueryParser.getQueryParser().parseCommand("SELECT x, y FROM z order by -1"); //$NON-NLS-1$
- fail("order by should not have negitive values"); //$NON-NLS-1$
- }catch(Exception e) {
- // this is expected.
- }
}
- public void testOrderByWithNumbers_Expression() throws Exception {
- GroupSymbol g = new GroupSymbol("z"); //$NON-NLS-1$
- From from = new From();
- from.addGroup(g);
-
- Function f = new Function("+", new Expression[] {new ElementSymbol("x"), new ElementSymbol("y")}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- ExpressionSymbol es = new ExpressionSymbol("expr", f); //$NON-NLS-1$
- Select select = new Select();
- select.addSymbol(es);
-
- OrderBy orderby = new OrderBy();
- orderby.addVariable(new ElementSymbol("1"), true); //$NON-NLS-1$
-
- Query query = new Query();
- query.setSelect(select);
- query.setFrom(from);
- query.setOrderBy(orderby);
-
- helpTest("SELECT x+y FROM z order by 1", "SELECT (x + y) FROM z ORDER BY 1", query); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- public void testOrderByWithNumbers_ScalarFunction() throws Exception {
- GroupSymbol g = new GroupSymbol("z"); //$NON-NLS-1$
- From from = new From();
- from.addGroup(g);
-
- Function f = new Function("concat", new Expression[] {new ElementSymbol("x", false), new Constant("5")}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- ExpressionSymbol es = new ExpressionSymbol("expr", f); //$NON-NLS-1$
- Select select = new Select();
- select.addSymbol(es);
-
- OrderBy orderby = new OrderBy();
- orderby.addVariable(new ElementSymbol("1"), true); //$NON-NLS-1$
-
- Query query = new Query();
- query.setSelect(select);
- query.setFrom(from);
- query.setOrderBy(orderby);
-
- helpTest("SELECT concat(x, \"5\") FROM z order by 1", "SELECT concat(x, '5') FROM z ORDER BY 1", query); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- public void testEmptyAndNullInputsGiveSameErrorMessage() throws Exception {
+ @Test public void testEmptyAndNullInputsGiveSameErrorMessage() throws Exception {
String emptyMessage = null;
try {
QueryParser.getQueryParser().parseCommand(""); //$NON-NLS-1$
@@ -6645,7 +6439,7 @@
assertTrue("Expected same message for empty and null cases", emptyMessage.equals(nullMessage)); //$NON-NLS-1$
}
- public void testCase3281NamedVariable() {
+ @Test public void testCase3281NamedVariable() {
StoredProcedure storedQuery = new StoredProcedure();
storedQuery.setDisplayNamedParameters(true);
storedQuery.setProcedureName("proc1"); //$NON-NLS-1$
@@ -6657,7 +6451,7 @@
helpTest("execute proc1(param1 = 'paramValue1')", "EXEC proc1(param1 = 'paramValue1')", storedQuery); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testCase3281NamedVariables() {
+ @Test public void testCase3281NamedVariables() {
StoredProcedure storedQuery = new StoredProcedure();
storedQuery.setDisplayNamedParameters(true);
storedQuery.setProcedureName("proc1"); //$NON-NLS-1$
@@ -6673,7 +6467,7 @@
helpTest("execute proc1(param1 = 'paramValue1', param2 = 'paramValue2')", "EXEC proc1(param1 = 'paramValue1', param2 = 'paramValue2')", storedQuery); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testCase3281QuotedNamedVariableFails2() {
+ @Test public void testCase3281QuotedNamedVariableFails2() {
try {
QueryParser.getQueryParser().parseCommand("Exec proc1('param1' = 'paramValue1')"); //$NON-NLS-1$
fail("Named parameter name cannot be quoted"); //$NON-NLS-1$
@@ -6685,7 +6479,7 @@
}
/** Test what happens if the name of a parameter is a reserved word. It must be quoted (double-ticks). */
- public void testCase3281NamedVariablesReservedWords() {
+ @Test public void testCase3281NamedVariablesReservedWords() {
StoredProcedure storedQuery = new StoredProcedure();
storedQuery.setDisplayNamedParameters(true);
storedQuery.setProcedureName("proc1"); //$NON-NLS-1$
@@ -6701,7 +6495,7 @@
helpTest("execute proc1(\"in\" = 'paramValue1', in2 = 'paramValue2')", "EXEC proc1(\"in\" = 'paramValue1', in2 = 'paramValue2')", storedQuery); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testExceptionMessageWithLocation() {
+ @Test public void testExceptionMessageWithLocation() {
try {
QueryParser.getQueryParser().parseCommand("SELECT FROM"); //$NON-NLS-1$
} catch(QueryParserException e) {
@@ -6709,7 +6503,7 @@
}
}
- public void testExceptionMessageWithoutLocation() {
+ @Test public void testExceptionMessageWithoutLocation() {
try {
QueryParser.getQueryParser().parseCommand("SELECT COUNT(*) FROM a WHERE COUNT(*) > 1"); //$NON-NLS-1$
} catch(QueryParserException e) {
@@ -6717,7 +6511,7 @@
}
}
- public void testLimit() {
+ @Test public void testLimit() {
Query query = new Query();
Select select = new Select(Arrays.asList(new Object[] {new AllSymbol()}));
From from = new From(Arrays.asList(new Object[] {new UnaryFromClause(new GroupSymbol("a"))})); //$NON-NLS-1$
@@ -6728,7 +6522,7 @@
helpTest("Select * from a limit 0, 100", "SELECT * FROM a LIMIT 0, 100", query); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testLimitWithOffset() {
+ @Test public void testLimitWithOffset() {
Query query = new Query();
Select select = new Select(Arrays.asList(new Object[] {new AllSymbol()}));
From from = new From(Arrays.asList(new Object[] {new UnaryFromClause(new GroupSymbol("a"))})); //$NON-NLS-1$
@@ -6738,7 +6532,7 @@
helpTest("Select * from a limit 50,100", "SELECT * FROM a LIMIT 50, 100", query); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testLimitWithReferences1() {
+ @Test public void testLimitWithReferences1() {
Query query = new Query();
Select select = new Select(Arrays.asList(new Object[] {new AllSymbol()}));
From from = new From(Arrays.asList(new Object[] {new UnaryFromClause(new GroupSymbol("a"))})); //$NON-NLS-1$
@@ -6748,7 +6542,7 @@
helpTest("Select * from a limit ?,100", "SELECT * FROM a LIMIT ?, 100", query); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testLimitWithReferences2() {
+ @Test public void testLimitWithReferences2() {
Query query = new Query();
Select select = new Select(Arrays.asList(new Object[] {new AllSymbol()}));
From from = new From(Arrays.asList(new Object[] {new UnaryFromClause(new GroupSymbol("a"))})); //$NON-NLS-1$
@@ -6758,7 +6552,7 @@
helpTest("Select * from a limit 50,?", "SELECT * FROM a LIMIT 50, ?", query); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testLimitWithReferences3() {
+ @Test public void testLimitWithReferences3() {
Query query = new Query();
Select select = new Select(Arrays.asList(new Object[] {new AllSymbol()}));
From from = new From(Arrays.asList(new Object[] {new UnaryFromClause(new GroupSymbol("a"))})); //$NON-NLS-1$
@@ -6768,11 +6562,11 @@
helpTest("Select * from a limit ?,?", "SELECT * FROM a LIMIT ?, ?", query); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testEmptyOuterJoinCriteria() {
+ @Test public void testEmptyOuterJoinCriteria() {
helpException("select a from b left outer join c on ()"); //$NON-NLS-1$
}
- public void testCreateTempTable1() {
+ @Test public void testCreateTempTable1() {
Create create = new Create();
create.setTable(new GroupSymbol("tempTable")); //$NON-NLS-1$
List columns = new ArrayList();
@@ -6786,7 +6580,7 @@
helpTest("Create local TEMPORARY table tempTable (c1 boolean, c2 byte)", "CREATE LOCAL TEMPORARY TABLE tempTable (c1 boolean, c2 byte)", create); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testCreateTempTable2() {
+ @Test public void testCreateTempTable2() {
Create create = new Create();
create.setTable(new GroupSymbol("tempTable")); //$NON-NLS-1$
List columns = new ArrayList();
@@ -6800,33 +6594,33 @@
helpTest("Create local TEMPORARY table tempTable(c1 boolean, c2 byte)", "CREATE LOCAL TEMPORARY TABLE tempTable (c1 boolean, c2 byte)", create); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testCreateTempTable3() {
+ @Test public void testCreateTempTable3() {
helpException("Create TEMPORARY table tempTable (c1 boolean, c2 byte)"); //$NON-NLS-1$
}
- public void testCreateTempTable4() {
+ @Test public void testCreateTempTable4() {
helpException("Create table tempTable (c1 boolean, c2 byte)"); //$NON-NLS-1$
}
- public void testCreateTempTable5() {
+ @Test public void testCreateTempTable5() {
helpException("Create local TEMPORARY table tempTable (c1 boolean primary, c2 byte)"); //$NON-NLS-1$
}
- public void testCreateTempTable6() {
+ @Test public void testCreateTempTable6() {
helpException("Create local TEMPORARY table tempTable (c1 varchar, c2 byte)"); //$NON-NLS-1$
}
- public void testCreateTempTable7() {
+ @Test public void testCreateTempTable7() {
helpException("Create local TEMPORARY table tempTable (c1.x boolean, c2 byte)" ,"Parsing error: Invalid simple identifier format: [c1.x]"); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testDropTable() {
+ @Test public void testDropTable() {
Drop drop = new Drop();
drop.setTable(new GroupSymbol("tempTable")); //$NON-NLS-1$
helpTest("DROP table tempTable", "DROP TABLE tempTable", drop); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testEscapedOuterJoin() {
+ @Test public void testEscapedOuterJoin() {
String sql = "SELECT * FROM {oj A LEFT OUTER JOIN B ON (A.x=B.x)}"; //$NON-NLS-1$
String expected = "SELECT * FROM A LEFT OUTER JOIN B ON A.x = B.x"; //$NON-NLS-1$
@@ -6845,19 +6639,19 @@
helpTest(sql, expected, query);
}
- public void testBadAlias() {
+ @Test public void testBadAlias() {
String sql = "select a as a.x from foo"; //$NON-NLS-1$
helpException(sql, "Parsing error: Invalid alias format: [a.x]"); //$NON-NLS-1$
}
- public void testBadFunctionName() {
+ @Test public void testBadFunctionName() {
String sql = "select a.x()"; //$NON-NLS-1$
helpException(sql, "Parsing error: Invalid function name: [a.x]"); //$NON-NLS-1$
}
- public void testUnionJoin() {
+ @Test public void testUnionJoin() {
String sql = "select * from pm1.g1 union join pm1.g2 where g1.e1 = 1"; //$NON-NLS-1$
String expected = "SELECT * FROM pm1.g1 UNION JOIN pm1.g2 WHERE g1.e1 = 1"; //$NON-NLS-1$
@@ -6873,13 +6667,13 @@
helpTest(sql, expected, command);
}
- public void testUnionJoin1() {
+ @Test public void testUnionJoin1() {
String sql = "select * from pm1.g1 union all join pm1.g2 where g1.e1 = 1"; //$NON-NLS-1$
helpException(sql);
}
- public void testIfElseWithoutBeginEnd() {
+ @Test public void testIfElseWithoutBeginEnd() {
String sql = "CREATE PROCEDURE BEGIN IF (x > 1) select 1; IF (x > 1) select 1; ELSE select 1; END"; //$NON-NLS-1$
String expected = "CREATE PROCEDURE\nBEGIN\nIF(x > 1)\nBEGIN\nSELECT 1;\nEND\nIF(x > 1)\nBEGIN\nSELECT 1;\nEND\nELSE\nBEGIN\nSELECT 1;\nEND\nEND"; //$NON-NLS-1$
@@ -6902,15 +6696,15 @@
helpTest(sql, expected, command);
}
- public void testBadCreate() {
+ @Test public void testBadCreate() {
helpException("create insert"); //$NON-NLS-1$
}
- public void testCommandWithSemicolon() throws Exception {
+ @Test public void testCommandWithSemicolon() throws Exception {
helpTest("select * from pm1.g1;", "SELECT * FROM pm1.g1", QueryParser.getQueryParser().parseCommand("select * from pm1.g1")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
- public void testLOBTypes() throws Exception {
+ @Test public void testLOBTypes() throws Exception {
Function convert = new Function("convert", new Expression[] {new Constant(null), new Constant("blob")}); //$NON-NLS-1$ //$NON-NLS-2$
Function convert1 = new Function("convert", new Expression[] {new Constant(null), new Constant("clob")}); //$NON-NLS-1$ //$NON-NLS-2$
Function convert2 = new Function("convert", new Expression[] {new Constant(null), new Constant("xml")}); //$NON-NLS-1$ //$NON-NLS-2$
@@ -6921,7 +6715,7 @@
helpTest("select convert(null, blob), convert(null, clob), convert(null, xml)", "SELECT convert(null, blob), convert(null, clob), convert(null, xml)", query); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testInsertWithoutColumns() {
+ @Test public void testInsertWithoutColumns() {
Insert insert = new Insert();
insert.setGroup(new GroupSymbol("m.g")); //$NON-NLS-1$
insert.addValue(new Constant("a")); //$NON-NLS-1$
@@ -6930,4 +6724,5 @@
"INSERT INTO m.g VALUES ('a', 'b')", //$NON-NLS-1$
insert);
}
+
}
Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/processor/TestDependentJoins.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/processor/TestDependentJoins.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/processor/TestDependentJoins.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -25,6 +25,10 @@
import java.util.Arrays;
import java.util.List;
+import com.metamatrix.api.exception.MetaMatrixComponentException;
+import com.metamatrix.api.exception.query.QueryParserException;
+import com.metamatrix.api.exception.query.QueryResolverException;
+import com.metamatrix.api.exception.query.QueryValidatorException;
import com.metamatrix.query.optimizer.TestOptimizer;
import com.metamatrix.query.optimizer.capabilities.BasicSourceCapabilities;
import com.metamatrix.query.optimizer.capabilities.FakeCapabilitiesFinder;
@@ -498,9 +502,24 @@
}
public void testCase5130a() throws Exception {
- FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
+ HardcodedDataManager dataManager = helpTestDependentJoin(false);
+
+ assertFalse(dataManager.getCommandHistory().contains("SELECT a.stringkey, a.intkey FROM bqt2.smalla AS a WHERE (concat(a.stringkey, 't') IN ('1t', '2')) AND (a.intkey IN (1))")); //$NON-NLS-1$
+ }
+
+ public void testUnlimitedIn() throws Exception {
+ helpTestDependentJoin(true);
+ }
+
+ private HardcodedDataManager helpTestDependentJoin(boolean unlimitIn)
+ throws QueryParserException, QueryResolverException,
+ QueryValidatorException, MetaMatrixComponentException {
+ FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = TestOptimizer.getTypicalCapabilities();
caps.setCapabilitySupport(Capability.QUERY_ORDERBY, false);
+ if (unlimitIn) {
+ caps.setSourceProperty(Capability.MAX_IN_CRITERIA_SIZE, -1);
+ }
capFinder.addCapabilities("BQT1", caps); //$NON-NLS-1$
capFinder.addCapabilities("BQT2", caps); //$NON-NLS-1$
@@ -511,8 +530,8 @@
new String[] {"SELECT g_0.stringkey, g_0.intkey FROM bqt1.smalla AS g_0 WHERE g_0.intkey IN (<dependent values>)", "SELECT g_0.stringkey, g_0.intkey FROM bqt2.smallb AS g_0"}, TestOptimizer.ComparisonMode.EXACT_COMMAND_STRING); //$NON-NLS-1$ //$NON-NLS-2$
TestOptimizer.checkNodeTypes(plan, new int[] {
- 1, // Access
- 1, // DependentAccess
+ unlimitIn?2:1, // Access
+ unlimitIn?0:1, // DependentAccess
0, // DependentSelect
0, // DependentProject
0, // DupRemove
@@ -540,9 +559,8 @@
};
TestProcessor.helpProcess(plan, dataManager, expected);
-
- assertFalse(dataManager.getCommandHistory().contains("SELECT a.stringkey, a.intkey FROM bqt2.smalla AS a WHERE (concat(a.stringkey, 't') IN ('1t', '2')) AND (a.intkey IN (1))")); //$NON-NLS-1$
- }
+ return dataManager;
+ }
static void sampleData4(FakeDataManager dataMgr) throws Exception {
FakeMetadataFacade metadata = FakeMetadataFactory.example1Cached();
Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/processor/TestProcedureRelational.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/processor/TestProcedureRelational.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/processor/TestProcedureRelational.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -195,6 +195,15 @@
TestOptimizer.helpPlan(sql, FakeMetadataFactory.example1Cached(), null, TestOptimizer.getGenericFinder(), null, false);
}
+ /**
+ * Will fail missing param2 assignment
+ */
+ @Test public void testProcAsTable5(){
+ String sql = "select param1, param2, e1, e2 from pm1.vsp26 where param1=e2 and param2 = 'a'"; //$NON-NLS-1$
+
+ TestOptimizer.helpPlan(sql, FakeMetadataFactory.example1Cached(), null, TestOptimizer.getGenericFinder(), null, false);
+ }
+
@Test public void testProcAsTableInJoin(){
String sql = "select param1, param2, pm1.vsp26.e2 from pm1.vsp26, pm1.g1 where param1 = pm1.g1.e2 and param2 = pm1.g1.e1 order by param1, param2, e2"; //$NON-NLS-1$
Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/processor/TestProcessor.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/processor/TestProcessor.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/processor/TestProcessor.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -3989,7 +3989,7 @@
@Test public void testInsert() {
// Create query
- String sql = "Insert into pm1.g1 (pm1.g1.e1, pm1.g1.e2) values (\"MyString\", 1)"; //$NON-NLS-1$
+ String sql = "Insert into pm1.g1 (pm1.g1.e1, pm1.g1.e2) values ('MyString', 1)"; //$NON-NLS-1$
// Create expected results
List[] expected = new List[] {
@@ -5567,6 +5567,7 @@
// Plan query
FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder();
BasicSourceCapabilities caps = new BasicSourceCapabilities();
+ caps.setCapabilitySupport(Capability.QUERY_SELECT_EXPRESSION, true);
caps.setCapabilitySupport(Capability.QUERY_SEARCHED_CASE, true);
caps.setCapabilitySupport(Capability.QUERY_AGGREGATES, true);
caps.setCapabilitySupport(Capability.QUERY_AGGREGATES_SUM, true);
@@ -7497,6 +7498,20 @@
helpProcess(plan, dataManager, expected);
}
+ @Test public void testOrderByUnrelatedExpression() {
+ String sql = "SELECT e1, e2 + 1 from pm1.g2 order by e3 || e2 limit 1"; //$NON-NLS-1$
+
+ List[] expected = new List[] {
+ Arrays.asList("a", 1),
+ };
+ FakeDataManager dataManager = new FakeDataManager();
+ sampleData1(dataManager);
+
+ ProcessorPlan plan = helpGetPlan(helpParse(sql), FakeMetadataFactory.example1Cached(), TestOptimizer.getGenericFinder());
+
+ helpProcess(plan, dataManager, expected);
+ }
+
private static final boolean DEBUG = false;
}
Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/processor/TestSetProcessing.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/processor/TestSetProcessing.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/processor/TestSetProcessing.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -25,17 +25,19 @@
import java.util.Arrays;
import java.util.List;
-import junit.framework.TestCase;
+import org.junit.Test;
import com.metamatrix.query.optimizer.TestOptimizer;
+import com.metamatrix.query.optimizer.TestOptimizer.ComparisonMode;
+import com.metamatrix.query.optimizer.capabilities.DefaultCapabilitiesFinder;
import com.metamatrix.query.unittest.FakeMetadataFactory;
-public class TestSetProcessing extends TestCase {
+public class TestSetProcessing {
- public void testExcept() {
+ @Test public void testExcept() throws Exception {
String sql = "select e1, e2 from pm1.g2 except select e1, 1 from pm1.g2"; //$NON-NLS-1$
- ProcessorPlan plan = TestOptimizer.helpPlan(sql, FakeMetadataFactory.example1Cached(), new String[] {"SELECT g_0.e1 FROM pm1.g2 AS g_0", "SELECT g_0.e1, g_0.e2 FROM pm1.g2 AS g_0"}); //$NON-NLS-1$ //$NON-NLS-2$
+ ProcessorPlan plan = TestOptimizer.helpPlan(sql, FakeMetadataFactory.example1Cached(), null, new DefaultCapabilitiesFinder(), new String[] {"SELECT pm1.g2.e1 FROM pm1.g2", "SELECT pm1.g2.e1, pm1.g2.e2 FROM pm1.g2"}, ComparisonMode.EXACT_COMMAND_STRING); //$NON-NLS-1$ //$NON-NLS-2$
List<?>[] expected = new List[] {
Arrays.asList(new Object[] {"a", 0}), //$NON-NLS-1$
@@ -48,10 +50,10 @@
TestProcessor.helpProcess(plan, manager, expected);
}
- public void testIntersect() {
+ @Test public void testIntersect() throws Exception {
String sql = "select e1, e2 from pm1.g2 intersect select e1, 1 from pm1.g2"; //$NON-NLS-1$
- ProcessorPlan plan = TestOptimizer.helpPlan(sql, FakeMetadataFactory.example1Cached(), new String[] {"SELECT g_0.e1 FROM pm1.g2 AS g_0", "SELECT g_0.e1, g_0.e2 FROM pm1.g2 AS g_0"}); //$NON-NLS-1$ //$NON-NLS-2$
+ ProcessorPlan plan = TestOptimizer.helpPlan(sql, FakeMetadataFactory.example1Cached(), null, new DefaultCapabilitiesFinder(), new String[] {"SELECT pm1.g2.e1 FROM pm1.g2", "SELECT pm1.g2.e1, pm1.g2.e2 FROM pm1.g2"}, ComparisonMode.EXACT_COMMAND_STRING); //$NON-NLS-1$ //$NON-NLS-2$
List<?>[] expected = new List[] {
Arrays.asList(new Object[] {null, 1}),
@@ -63,10 +65,10 @@
TestProcessor.helpProcess(plan, manager, expected);
}
- public void testIntersectExcept() {
+ @Test public void testIntersectExcept() {
String sql = "select e1, e2 from pm1.g2 except select e1, 1 from pm1.g2 intersect select 'a', e2 from pm1.g2"; //$NON-NLS-1$
- ProcessorPlan plan = TestOptimizer.helpPlan(sql, FakeMetadataFactory.example1Cached(), new String[] {"SELECT g_0.e1 FROM pm1.g2 AS g_0", "SELECT g_0.e1, g_0.e2 FROM pm1.g2 AS g_0", "SELECT g_0.e2 FROM pm1.g2 AS g_0"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ProcessorPlan plan = TestOptimizer.helpPlan(sql, FakeMetadataFactory.example1Cached(), new String[] {"SELECT g_0.e1, 1 FROM pm1.g2 AS g_0", "SELECT g_0.e1, g_0.e2 FROM pm1.g2 AS g_0", "SELECT 'a', g_0.e2 FROM pm1.g2 AS g_0"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
List<?>[] expected = new List[] {
Arrays.asList(new Object[] {null, 1}),
Deleted: branches/JCA/engine/src/test/java/com/metamatrix/query/processor/TestTempTables.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/processor/TestTempTables.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/processor/TestTempTables.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,93 +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 com.metamatrix.query.processor;
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import com.metamatrix.api.exception.MetaMatrixComponentException;
-import com.metamatrix.common.buffer.BufferManagerFactory;
-import com.metamatrix.query.metadata.TempMetadataAdapter;
-import com.metamatrix.query.tempdata.TempTableStoreImpl;
-import com.metamatrix.query.unittest.FakeMetadataFactory;
-
-public class TestTempTables {
-
- private TempMetadataAdapter metadata;
- private TempTableDataManager dataManager;
-
- private void execute(String sql, List[] expectedResults) throws Exception {
- TestProcessor.doProcess(TestProcessor.helpGetPlan(sql, metadata), dataManager, expectedResults, TestProcessor.createCommandContext());
- }
-
- @Before public void setUp() throws MetaMatrixComponentException {
- TempTableStoreImpl tempStore = new TempTableStoreImpl(BufferManagerFactory.getStandaloneBufferManager(), "1", null); //$NON-NLS-1$
- metadata = new TempMetadataAdapter(FakeMetadataFactory.example1Cached(), tempStore.getMetadataStore());
- FakeDataManager fdm = new FakeDataManager();
- TestProcessor.sampleData1(fdm);
- dataManager = new TempTableDataManager(fdm, tempStore);
- }
-
- @Test public void testInsertWithQueryExpression() throws Exception {
- execute("create local temporary table x (e1 string, e2 integer)", new List[] {Arrays.asList(0)}); //$NON-NLS-1$
- execute("insert into x (e2, e1) select e2, e1 from pm1.g1", new List[] {Arrays.asList(6)}); //$NON-NLS-1$
- execute("update x set e1 = e2 where e2 > 1", new List[] {Arrays.asList(2)}); //$NON-NLS-1$
- }
-
- @Test public void testOutofOrderInsert() throws Exception {
- execute("create local temporary table x (e1 string, e2 integer)", new List[] {Arrays.asList(0)}); //$NON-NLS-1$
- execute("insert into x (e2, e1) values (1, 'one')", new List[] {Arrays.asList(1)}); //$NON-NLS-1$
- execute("select e1, e2 from x", new List[] {Arrays.asList("one", 1)}); //$NON-NLS-1$
- }
-
- @Test public void testUpdate() throws Exception {
- execute("create local temporary table x (e1 string, e2 integer)", new List[] {Arrays.asList(0)}); //$NON-NLS-1$
- execute("insert into x (e2, e1) values (1, 'one')", new List[] {Arrays.asList(1)}); //$NON-NLS-1$
- execute("select e1, e2 into x from pm1.g1", new List[] {Arrays.asList(6)}); //$NON-NLS-1$
- execute("update x set e1 = e2 where e2 > 1", new List[] {Arrays.asList(2)}); //$NON-NLS-1$
- execute("select e1 from x where e2 > 0 order by e1", new List[] { //$NON-NLS-1$
- Arrays.asList((String)null),
- Arrays.asList("2"), //$NON-NLS-1$
- Arrays.asList("3"), //$NON-NLS-1$
- Arrays.asList("c"), //$NON-NLS-1$
- Arrays.asList("one")}); //$NON-NLS-1$
- }
-
- @Test public void testDelete() throws Exception {
- execute("create local temporary table x (e1 string, e2 integer)", new List[] {Arrays.asList(0)}); //$NON-NLS-1$
- execute("select e1, e2 into x from pm1.g1", new List[] {Arrays.asList(6)}); //$NON-NLS-1$
- execute("delete from x where ascii(e1) > e2", new List[] {Arrays.asList(5)}); //$NON-NLS-1$
- execute("select e1 from x order by e1", new List[] {Arrays.asList((String)null)}); //$NON-NLS-1$
- }
-
- @Test public void testDelete1() throws Exception {
- execute("create local temporary table x (e1 string, e2 integer)", new List[] {Arrays.asList(0)}); //$NON-NLS-1$
- execute("select e1, e2 into x from pm1.g1", new List[] {Arrays.asList(6)}); //$NON-NLS-1$
- execute("delete from x", new List[] {Arrays.asList(6)}); //$NON-NLS-1$
- execute("select e1 from x order by e1", new List[] {}); //$NON-NLS-1$
- }
-
-}
Copied: branches/JCA/engine/src/test/java/com/metamatrix/query/processor/TestTempTables.java (from rev 1614, trunk/engine/src/test/java/com/metamatrix/query/processor/TestTempTables.java)
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/processor/TestTempTables.java (rev 0)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/processor/TestTempTables.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,93 @@
+/*
+ * 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 com.metamatrix.query.processor;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import com.metamatrix.api.exception.MetaMatrixComponentException;
+import com.metamatrix.common.buffer.BufferManagerFactory;
+import com.metamatrix.query.metadata.TempMetadataAdapter;
+import com.metamatrix.query.tempdata.TempTableStoreImpl;
+import com.metamatrix.query.unittest.FakeMetadataFactory;
+
+public class TestTempTables {
+
+ private TempMetadataAdapter metadata;
+ private TempTableDataManager dataManager;
+
+ private void execute(String sql, List[] expectedResults) throws Exception {
+ TestProcessor.doProcess(TestProcessor.helpGetPlan(sql, metadata), dataManager, expectedResults, TestProcessor.createCommandContext());
+ }
+
+ @Before public void setUp() throws MetaMatrixComponentException {
+ TempTableStoreImpl tempStore = new TempTableStoreImpl(BufferManagerFactory.getStandaloneBufferManager(), "1", null); //$NON-NLS-1$
+ metadata = new TempMetadataAdapter(FakeMetadataFactory.example1Cached(), tempStore.getMetadataStore());
+ FakeDataManager fdm = new FakeDataManager();
+ TestProcessor.sampleData1(fdm);
+ dataManager = new TempTableDataManager(fdm, tempStore);
+ }
+
+ @Test public void testInsertWithQueryExpression() throws Exception {
+ execute("create local temporary table x (e1 string, e2 integer)", new List[] {Arrays.asList(0)}); //$NON-NLS-1$
+ execute("insert into x (e2, e1) select e2, e1 from pm1.g1", new List[] {Arrays.asList(6)}); //$NON-NLS-1$
+ execute("update x set e1 = e2 where e2 > 1", new List[] {Arrays.asList(2)}); //$NON-NLS-1$
+ }
+
+ @Test public void testOutofOrderInsert() throws Exception {
+ execute("create local temporary table x (e1 string, e2 integer)", new List[] {Arrays.asList(0)}); //$NON-NLS-1$
+ execute("insert into x (e2, e1) values (1, 'one')", new List[] {Arrays.asList(1)}); //$NON-NLS-1$
+ execute("select e1, e2 from x", new List[] {Arrays.asList("one", 1)}); //$NON-NLS-1$
+ }
+
+ @Test public void testUpdate() throws Exception {
+ execute("create local temporary table x (e1 string, e2 integer)", new List[] {Arrays.asList(0)}); //$NON-NLS-1$
+ execute("insert into x (e2, e1) values (1, 'one')", new List[] {Arrays.asList(1)}); //$NON-NLS-1$
+ execute("select e1, e2 into x from pm1.g1", new List[] {Arrays.asList(6)}); //$NON-NLS-1$
+ execute("update x set e1 = e2 where e2 > 1", new List[] {Arrays.asList(2)}); //$NON-NLS-1$
+ execute("select e1 from x where e2 > 0 order by e1", new List[] { //$NON-NLS-1$
+ Arrays.asList((String)null),
+ Arrays.asList("2"), //$NON-NLS-1$
+ Arrays.asList("3"), //$NON-NLS-1$
+ Arrays.asList("c"), //$NON-NLS-1$
+ Arrays.asList("one")}); //$NON-NLS-1$
+ }
+
+ @Test public void testDelete() throws Exception {
+ execute("create local temporary table x (e1 string, e2 integer)", new List[] {Arrays.asList(0)}); //$NON-NLS-1$
+ execute("select e1, e2 into x from pm1.g1", new List[] {Arrays.asList(6)}); //$NON-NLS-1$
+ execute("delete from x where ascii(e1) > e2", new List[] {Arrays.asList(5)}); //$NON-NLS-1$
+ execute("select e1 from x order by e1", new List[] {Arrays.asList((String)null)}); //$NON-NLS-1$
+ }
+
+ @Test public void testDelete1() throws Exception {
+ execute("create local temporary table x (e1 string, e2 integer)", new List[] {Arrays.asList(0)}); //$NON-NLS-1$
+ execute("select e1, e2 into x from pm1.g1", new List[] {Arrays.asList(6)}); //$NON-NLS-1$
+ execute("delete from x", new List[] {Arrays.asList(6)}); //$NON-NLS-1$
+ execute("select e1 from x order by e1", new List[] {}); //$NON-NLS-1$
+ }
+
+}
Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/processor/TestVirtualDepJoin.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/processor/TestVirtualDepJoin.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/processor/TestVirtualDepJoin.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -22,6 +22,8 @@
package com.metamatrix.query.processor;
+import static org.junit.Assert.*;
+
import java.math.BigDecimal;
import java.sql.SQLException;
import java.util.ArrayList;
@@ -31,7 +33,7 @@
import java.util.List;
import java.util.Properties;
-import junit.framework.TestCase;
+import org.junit.Test;
import com.metamatrix.api.exception.MetaMatrixComponentException;
import com.metamatrix.api.exception.MetaMatrixException;
@@ -55,8 +57,7 @@
import com.metamatrix.query.util.CommandContext;
import com.metamatrix.query.validator.TestValidator;
-
-public class TestVirtualDepJoin extends TestCase {
+public class TestVirtualDepJoin {
/**
* @param usAcctsElem
@@ -189,7 +190,7 @@
return new FakeMetadataFacade(store);
}
- public void testVirtualDepJoinNoValues() throws Exception {
+ @Test public void testVirtualDepJoinNoValues() throws Exception {
// Create query
String sql = "select first, last, sum(amount) from Europe.CustAccts e join CustomerMaster.Customers c on c.id=e.id where c.first=-9999 group by c.id, first, last"; //$NON-NLS-1$
@@ -280,15 +281,15 @@
TestProcessor.helpProcess(plan, context, dataManager, expected);
}
- public void testVirtualDepJoinSourceSelectionPushdown() throws Exception {
+ @Test public void testVirtualDepJoinSourceSelectionPushdown() throws Exception {
helpTestVirtualDepJoinSourceSelection(true);
}
- public void testVirtualDepJoinSourceSelectionNoPushdown() throws Exception {
+ @Test public void testVirtualDepJoinSourceSelectionNoPushdown() throws Exception {
helpTestVirtualDepJoinSourceSelection(false);
}
- public void testVirtualDepJoinPartialPushdown() throws Exception {
+ @Test public void testVirtualDepJoinPartialPushdown() throws Exception {
// Create query
String sql = "SELECT * from Master.Transactions where last = 'Davis'"; //$NON-NLS-1$
@@ -343,7 +344,7 @@
TestProcessor.helpProcess(plan, context, dataManager, expected);
}
- public void testVirtualDepJoinOverAggregates() throws Exception {
+ @Test public void testVirtualDepJoinOverAggregates() throws Exception {
// Create query
String sql = "select first, last, sum(amount) from Europe.CustAccts e join CustomerMaster.Customers c on c.id=e.id where c.first='Miles' group by c.id, first, last"; //$NON-NLS-1$
@@ -398,19 +399,19 @@
assertEquals(expectedQueries, dataManager.getQueries());
}
- public void testVirtualDepJoinSelects() throws Exception {
+ @Test public void testVirtualDepJoinSelects() throws Exception {
helpTestVirtualDepJoin(false);
}
- public void testVirtualDepJoinPushdown() throws Exception {
+ @Test public void testVirtualDepJoinPushdown() throws Exception {
helpTestVirtualDepJoin(true);
}
- public void testVirtualDepMultipleDependentBatches() throws Exception {
+ @Test public void testVirtualDepMultipleDependentBatches() throws Exception {
helpTestMultipleBatches(true);
}
- public void testVirtualDepMultipleDependentBatchesNonUnique() throws Exception {
+ @Test public void testVirtualDepMultipleDependentBatchesNonUnique() throws Exception {
helpTestMultipleBatches(false);
}
@@ -632,7 +633,7 @@
elementSymbols, (List[])data.toArray(new List[data.size()]));
}
- public void testVirtualAccessVirtualDep() throws Exception {
+ @Test public void testVirtualAccessVirtualDep() throws Exception {
String sql = "SELECT a.e0, b.e2 FROM vTest.vGroup a inner join vTest.vGroup b on (a.e0 = b.e2 and a.e1 = b.e2) where b.e0=1 and b.e1='2'"; //$NON-NLS-1$
BasicSourceCapabilities caps = TestOptimizer.getTypicalCapabilities();
@@ -666,7 +667,7 @@
* Here the virtual makenotdep hint causes us to throw an exception
*
*/
- public void testVirtualAccessVirtualDep2() {
+ @Test public void testVirtualAccessVirtualDep2() {
String sql = "SELECT a.e0, b.e2 FROM vTest.vGroup a makenotdep inner join vTest.vGroup b on (a.e0 = b.e2 and a.e1 = b.e2) where b.e0=1 and b.e1='2'"; //$NON-NLS-1$
BasicSourceCapabilities caps = TestOptimizer.getTypicalCapabilities();
@@ -683,7 +684,7 @@
* same as testVirtualDepJoinOverAggregate, but the makenotdep hint prevents the
* dependent join from happening
*/
- public void testVirtualDepJoinOverAggregates2() throws Exception {
+ @Test public void testVirtualDepJoinOverAggregates2() throws Exception {
// Create query
String sql = "select first, last, sum(amount) from Europe.CustAccts e makenotdep join CustomerMaster.Customers c on c.id=e.id where c.first='Miles' group by c.id, first, last"; //$NON-NLS-1$
@@ -731,7 +732,7 @@
}
- public void testVirtualMakeDepHint() throws Exception {
+ @Test public void testVirtualMakeDepHint() throws Exception {
// Create query
String sql = "select distinct pm1.g1.e1 from (pm1.g1 inner join pm1.g2 on g1.e1 = g2.e1) makedep inner join pm2.g1 on pm2.g1.e1 = pm1.g1.e1 where pm2.g1.e3 = 1"; //$NON-NLS-1$
Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/processor/proc/TestProcedureProcessor.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/processor/proc/TestProcedureProcessor.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/processor/proc/TestProcedureProcessor.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -22,7 +22,8 @@
package com.metamatrix.query.processor.proc;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
import java.sql.SQLException;
import java.util.ArrayList;
@@ -525,7 +526,7 @@
// error statement
@Test public void testProcedureProcessor7() throws Exception {
- String errorValue = "\"MY ERROR\""; //$NON-NLS-1$
+ String errorValue = "'MY ERROR'"; //$NON-NLS-1$
helpTestErrorStatment(errorValue, "MY ERROR"); //$NON-NLS-1$
}
@@ -535,7 +536,7 @@
}
@Test public void testProcedureProcessor9() throws Exception {
- String errorValue = "var1||\"MY ERROR\""; //$NON-NLS-1$
+ String errorValue = "var1||'MY ERROR'"; //$NON-NLS-1$
helpTestErrorStatment(errorValue, "5MY ERROR"); //$NON-NLS-1$
}
@@ -544,7 +545,7 @@
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "loop on (Select pm1.g1.e2 from pm1.g1 where e2 = 5) as mycursor\n"; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
- procedure = procedure + "ERROR (mycursor.e2||\"MY ERROR\");\n"; //$NON-NLS-1$
+ procedure = procedure + "ERROR (mycursor.e2||'MY ERROR');\n"; //$NON-NLS-1$
procedure = procedure + "ROWS_UPDATED = 0;\n"; //$NON-NLS-1$
procedure = procedure + "END\n"; //$NON-NLS-1$
procedure = procedure + "END\n"; //$NON-NLS-1$
@@ -2690,7 +2691,7 @@
helpTestProcess(plan, expected, dataMgr);
}
- @Test public void testTempSubqueryInput() throws Exception {
+ @Test public void testUpdateDeleteTemp() throws Exception {
String proc = "CREATE VIRTUAL PROCEDURE " + //$NON-NLS-1$
"BEGIN " + //$NON-NLS-1$
" select e1, e2, e3, e4 into #t1 from pm1.g1;\n" + //$NON-NLS-1$
@@ -2710,5 +2711,24 @@
helpTestProcess(plan, expected, dataMgr);
}
+ @Test public void testTempSubqueryInput() throws Exception {
+ String proc = "CREATE VIRTUAL PROCEDURE " + //$NON-NLS-1$
+ "BEGIN " + //$NON-NLS-1$
+ " create local temporary table t1 (e1 string);\n" + //$NON-NLS-1$
+ " select e1 into t1 from pm1.g1;\n" + //$NON-NLS-1$
+ " select e2 from (exec pm1.sq2((select max(e1) from t1))) x;\n" + //$NON-NLS-1$
+ "END"; //$NON-NLS-1$
+
+ FakeMetadataFacade metadata = createProcedureMetadata(proc);
+ String userQuery = "SELECT * FROM (EXEC pm1.sq1()) as proc"; //$NON-NLS-1$
+ FakeDataManager dataMgr = exampleDataManager2(metadata);
+ ProcessorPlan plan = getProcedurePlan(userQuery, metadata, TestOptimizer.getGenericFinder());
+
+ List[] expected = new List[] {
+ Arrays.asList( 51 ),
+ };
+ helpTestProcess(plan, expected, dataMgr);
+ }
+
private static final boolean DEBUG = false;
}
Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/processor/relational/NodeTestUtil.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/processor/relational/NodeTestUtil.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/processor/relational/NodeTestUtil.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -42,12 +42,6 @@
* @since 4.2
*/
public class NodeTestUtil {
- static BufferManager getTestBufferManager(long bytesAvailable) {
- // Get the properties for BufferManager
- Properties bmProps = new Properties();
- bmProps.setProperty(BufferManagerPropertyNames.MEMORY_AVAILABLE, "" + bytesAvailable); //$NON-NLS-1$
- return createBufferManager(bmProps);
- }
static BufferManager getTestBufferManager(long bytesAvailable, int procBatchSize, int connectorBatchSize) {
Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/processor/relational/TestAccessNode.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/processor/relational/TestAccessNode.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/processor/relational/TestAccessNode.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -22,15 +22,15 @@
package com.metamatrix.query.processor.relational;
+import java.util.Arrays;
+
import junit.framework.TestCase;
-import com.metamatrix.api.exception.MetaMatrixComponentException;
-import com.metamatrix.common.buffer.BlockedException;
import com.metamatrix.common.buffer.BufferManager;
import com.metamatrix.common.buffer.BufferManagerFactory;
-import com.metamatrix.common.buffer.TupleSource;
import com.metamatrix.query.parser.QueryParser;
-import com.metamatrix.query.processor.ProcessorDataManager;
+import com.metamatrix.query.processor.FakeDataManager;
+import com.metamatrix.query.processor.TestProcessor;
import com.metamatrix.query.resolver.TestResolver;
import com.metamatrix.query.sql.lang.Command;
import com.metamatrix.query.sql.lang.CompoundCriteria;
@@ -57,14 +57,18 @@
CommandContext context = new CommandContext();
context.setProcessorID("processorID"); //$NON-NLS-1$
BufferManager bm = BufferManagerFactory.getStandaloneBufferManager();
- FakePDM dataManager = new FakePDM(expectedCommand);
+ FakeDataManager dataManager = new FakeDataManager();
+ TestProcessor.sampleData1(dataManager);
node.initialize(context, bm, dataManager);
node.setShouldEvaluateExpressions(true);
// Call open()
node.open();
-
- assertEquals(shouldRegisterRequest, dataManager.registerRequestCalled);
+ if (shouldRegisterRequest) {
+ assertEquals(Arrays.asList(expectedCommand), dataManager.getQueries());
+ } else {
+ assertEquals(0, dataManager.getQueries().size());
+ }
}
public void testOpen_Defect16059() throws Exception {
@@ -91,31 +95,14 @@
CommandContext context = new CommandContext();
context.setProcessorID("processorID"); //$NON-NLS-1$
BufferManager bm = BufferManagerFactory.getStandaloneBufferManager();
- FakePDM dataManager = new FakePDM("SELECT e1, e2 FROM pm1.g1 WHERE e2 = 5"); //$NON-NLS-1$
+ FakeDataManager dataManager = new FakeDataManager();
+ TestProcessor.sampleData1(dataManager);
node.initialize(context, bm, dataManager);
// Call open()
node.open();
- assertTrue(dataManager.registerRequestCalled);
+ assertEquals(Arrays.asList("SELECT e1, e2 FROM pm1.g1 WHERE e2 = 5"), dataManager.getQueries()); //$NON-NLS-1$
}
- private final static class FakePDM implements ProcessorDataManager {
- private String expectedCommand;
- private boolean registerRequestCalled = false;
- private FakePDM(String command) {
- this.expectedCommand = command;
- }
- public Object lookupCodeValue(CommandContext context,String codeTableName,String returnElementName,String keyElementName,Object keyValue) throws BlockedException,MetaMatrixComponentException {return null;}
- public TupleSource registerRequest(Object processorID,Command command,String modelName,String connectorBindingId, int nodeID) throws MetaMatrixComponentException {
- registerRequestCalled = true;
- assertEquals(expectedCommand, command.toString());
- return null;
- }
- @Override
- public void clearCodeTables() {
-
- }
- }
-
public void testShouldExecuteUpdate() throws Exception {
Update update = new Update();
Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/processor/relational/TestSortNode.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/processor/relational/TestSortNode.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/processor/relational/TestSortNode.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -57,7 +57,7 @@
public static final int INT_BATCH_SIZE = TestSortNode.getIntBatchSize(); //the size of 100 integers
private void helpTestSort(long bytesInMemory, List elements, List[] data, List sortElements, List sortTypes, List[] expected, Set blockOn, Mode mode) throws MetaMatrixComponentException, MetaMatrixProcessingException {
- BufferManager mgr = NodeTestUtil.getTestBufferManager(bytesInMemory);
+ BufferManager mgr = NodeTestUtil.getTestBufferManager(bytesInMemory, BATCH_SIZE, BATCH_SIZE);
TestableBufferManagerImpl impl = (TestableBufferManagerImpl) mgr;
impl.setBlockOn(blockOn);
impl.getConfig().setTotalAvailableMemory(bytesInMemory);
@@ -322,7 +322,7 @@
ElementSymbol es1 = new ElementSymbol("e1"); //$NON-NLS-1$
es1.setType(DataTypeManager.DefaultDataClasses.INTEGER);
BufferManager bm = BufferManagerFactory.getStandaloneBufferManager();
- TupleSourceID tsid = bm.createTupleSource(Arrays.asList(es1), new String[] {DataTypeManager.DefaultDataTypes.INTEGER}, "test", TupleSourceType.PROCESSOR); //$NON-NLS-1$
+ TupleSourceID tsid = bm.createTupleSource(Arrays.asList(es1), "test", TupleSourceType.PROCESSOR); //$NON-NLS-1$
bm.addTupleBatch(tsid, new TupleBatch(1, new List[] {Arrays.asList(1)}));
SortUtility su = new SortUtility(tsid, Arrays.asList(es1), Arrays.asList(Boolean.TRUE), Mode.DUP_REMOVE, bm, "test", true); //$NON-NLS-1$
TupleSourceID out = su.sort();
Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/processor/xml/TestXMLProcessor.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/processor/xml/TestXMLProcessor.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/processor/xml/TestXMLProcessor.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -65,10 +65,8 @@
import com.metamatrix.query.optimizer.capabilities.BasicSourceCapabilities;
import com.metamatrix.query.optimizer.capabilities.CapabilitiesFinder;
import com.metamatrix.query.optimizer.capabilities.DefaultCapabilitiesFinder;
-import com.metamatrix.query.optimizer.capabilities.SourceCapabilities;
import com.metamatrix.query.optimizer.capabilities.SourceCapabilities.Capability;
import com.metamatrix.query.optimizer.xml.TestXMLPlanner;
-import com.metamatrix.query.parser.ParseInfo;
import com.metamatrix.query.parser.QueryParser;
import com.metamatrix.query.processor.FakeDataManager;
import com.metamatrix.query.processor.QueryProcessor;
@@ -2929,9 +2927,7 @@
public static Command helpGetCommand(String sql, QueryMetadataInterface metadata) throws QueryParserException, QueryResolverException, MetaMatrixComponentException, QueryValidatorException {
QueryParser parser = new QueryParser();
- ParseInfo info = new ParseInfo();
- info.allowDoubleQuotedVariable = true;
- Command command = parser.parseCommand(sql, info);
+ Command command = parser.parseCommand(sql);
QueryResolver.resolveCommand(command, metadata);
command = QueryRewriter.rewrite(command, null, metadata, null);
return command;
@@ -10064,7 +10060,7 @@
caps.setCapabilitySupport(Capability.QUERY_SUBQUERIES_SCALAR, true);
caps.setCapabilitySupport(Capability.CRITERIA_COMPARE_EQ, true);
caps.setFunctionSupport("convert", true); //$NON-NLS-1$
- CapabilitiesFinder capFinder = new SimpleCapabilitiesFinder(caps);
+ CapabilitiesFinder capFinder = new DefaultCapabilitiesFinder(caps);
helpTestProcess("SELECT * FROM xmltest.doc12260", expectedDoc, metadata, dataMgr, true, MetaMatrixComponentException.class, null, capFinder); //$NON-NLS-1$
}
@@ -11914,13 +11910,4 @@
}
}
- private static final class SimpleCapabilitiesFinder implements CapabilitiesFinder{
- private SourceCapabilities caps;
- SimpleCapabilitiesFinder(SourceCapabilities caps){
- this.caps = caps;
- }
- public SourceCapabilities findCapabilities(String modelName) {
- return caps;
- }
- }
}
Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/resolver/TestResolver.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/resolver/TestResolver.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/resolver/TestResolver.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -35,9 +35,11 @@
import java.util.List;
import java.util.Map;
-import junit.framework.Assert;
-import junit.framework.TestCase;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
import com.metamatrix.api.exception.MetaMatrixComponentException;
import com.metamatrix.api.exception.MetaMatrixException;
import com.metamatrix.api.exception.query.QueryMetadataException;
@@ -101,17 +103,11 @@
import com.metamatrix.query.unittest.FakeMetadataStore;
import com.metamatrix.query.unittest.TimestampUtil;
-public class TestResolver extends TestCase {
+public class TestResolver {
private FakeMetadataFacade metadata;
- // ################################## FRAMEWORK ################################
-
- public TestResolver(String name) {
- super(name);
- }
-
- public void setUp() {
+ @Before public void setUp() {
metadata = FakeMetadataFactory.example1Cached();
}
@@ -456,7 +452,7 @@
// ################################## ACTUAL TESTS ################################
- public void testElementSymbolForms() {
+ @Test public void testElementSymbolForms() {
String sql = "SELECT pm1.g1.e1, e2, pm1.g1.e3 AS a, e4 AS b FROM pm1.g1"; //$NON-NLS-1$
Query resolvedQuery = (Query) helpResolve(sql);
helpCheckFrom(resolvedQuery, new String[] { "pm1.g1" }); //$NON-NLS-1$
@@ -467,7 +463,7 @@
assertEquals("Resolved string form was incorrect ", sql, resolvedQuery.toString()); //$NON-NLS-1$
}
- public void testElementSymbolFormsWithAliasedGroup() {
+ @Test public void testElementSymbolFormsWithAliasedGroup() {
String sql = "SELECT x.e1, e2, x.e3 AS a, e4 AS b FROM pm1.g1 AS x"; //$NON-NLS-1$
Query resolvedQuery = (Query) helpResolve(sql);
helpCheckFrom(resolvedQuery, new String[] { "pm1.g1" }); //$NON-NLS-1$
@@ -478,84 +474,84 @@
assertEquals("Resolved string form was incorrect ", sql, resolvedQuery.toString()); //$NON-NLS-1$
}
- public void testGroupWithVDB() {
+ @Test public void testGroupWithVDB() {
String sql = "SELECT e1 FROM myvdb.pm1.g1"; //$NON-NLS-1$
Query resolvedQuery = (Query) helpResolve(sql);
helpCheckFrom(resolvedQuery, new String[] { "pm1.g1" }); //$NON-NLS-1$
assertEquals("Resolved string form was incorrect ", sql, resolvedQuery.toString()); //$NON-NLS-1$
}
- public void testAliasedGroupWithVDB() {
+ @Test public void testAliasedGroupWithVDB() {
String sql = "SELECT e1 FROM myvdb.pm1.g1 AS x"; //$NON-NLS-1$
Query resolvedQuery = (Query) helpResolve(sql);
helpCheckFrom(resolvedQuery, new String[] { "pm1.g1" }); //$NON-NLS-1$
assertEquals("Resolved string form was incorrect ", sql, resolvedQuery.toString()); //$NON-NLS-1$
}
- public void testPartiallyQualifiedGroup1() {
+ @Test public void testPartiallyQualifiedGroup1() {
metadata = FakeMetadataFactory.example3();
String sql = "SELECT e1 FROM cat2.cat3.g1"; //$NON-NLS-1$
Query resolvedQuery = (Query) helpResolve(sql);
helpCheckFrom(resolvedQuery, new String[] { "pm1.cat1.cat2.cat3.g1" }); //$NON-NLS-1$
}
- public void testPartiallyQualifiedGroup2() {
+ @Test public void testPartiallyQualifiedGroup2() {
metadata = FakeMetadataFactory.example3();
String sql = "SELECT e1 FROM cat1.g2"; //$NON-NLS-1$
Query resolvedQuery = (Query) helpResolve(sql);
helpCheckFrom(resolvedQuery, new String[] { "pm1.cat1.g2" }); //$NON-NLS-1$
}
- public void testPartiallyQualifiedGroup3() {
+ @Test public void testPartiallyQualifiedGroup3() {
metadata = FakeMetadataFactory.example3();
String sql = "SELECT e1 FROM cat1.cat2.cat3.g1"; //$NON-NLS-1$
Query resolvedQuery = (Query) helpResolve(sql);
helpCheckFrom(resolvedQuery, new String[] { "pm1.cat1.cat2.cat3.g1" }); //$NON-NLS-1$
}
- public void testPartiallyQualifiedGroup4() {
+ @Test public void testPartiallyQualifiedGroup4() {
metadata = FakeMetadataFactory.example3();
String sql = "SELECT e1 FROM cat2.g2"; //$NON-NLS-1$
Query resolvedQuery = (Query) helpResolve(sql);
helpCheckFrom(resolvedQuery, new String[] { "pm2.cat2.g2" }); //$NON-NLS-1$
}
- public void testPartiallyQualifiedGroup5() {
+ @Test public void testPartiallyQualifiedGroup5() {
metadata = FakeMetadataFactory.example3();
String sql = "SELECT e1 FROM cat2.g3"; //$NON-NLS-1$
Query resolvedQuery = (Query) helpResolve(sql);
helpCheckFrom(resolvedQuery, new String[] { "pm1.cat2.g3" }); //$NON-NLS-1$
}
- public void testPartiallyQualifiedGroup6() {
+ @Test public void testPartiallyQualifiedGroup6() {
metadata = FakeMetadataFactory.example3();
String sql = "SELECT e1 FROM cat1.g1"; //$NON-NLS-1$
Query resolvedQuery = (Query) helpResolve(sql);
helpCheckFrom(resolvedQuery, new String[] { "pm2.cat1.g1" }); //$NON-NLS-1$
}
- public void testPartiallyQualifiedGroup7() {
+ @Test public void testPartiallyQualifiedGroup7() {
metadata = FakeMetadataFactory.example3();
String sql = "SELECT e1 FROM g4"; //$NON-NLS-1$
Query resolvedQuery = (Query) helpResolve(sql);
helpCheckFrom(resolvedQuery, new String[] { "pm2.g4" }); //$NON-NLS-1$
}
- public void testPartiallyQualifiedGroup8() {
+ @Test public void testPartiallyQualifiedGroup8() {
metadata = FakeMetadataFactory.example3();
String sql = "SELECT e1 FROM pm2.g3"; //$NON-NLS-1$
Query resolvedQuery = (Query) helpResolve(sql);
helpCheckFrom(resolvedQuery, new String[] { "pm2.g3" }); //$NON-NLS-1$
}
- public void testPartiallyQualifiedGroupWithAlias() {
+ @Test public void testPartiallyQualifiedGroupWithAlias() {
metadata = FakeMetadataFactory.example3();
String sql = "SELECT X.e1 FROM cat2.cat3.g1 as X"; //$NON-NLS-1$
Query resolvedQuery = (Query) helpResolve(sql);
helpCheckFrom(resolvedQuery, new String[] { "pm1.cat1.cat2.cat3.g1" }); //$NON-NLS-1$
}
- public void testPartiallyQualifiedElement1() {
+ @Test public void testPartiallyQualifiedElement1() {
metadata = FakeMetadataFactory.example3();
String sql = "SELECT cat2.cat3.g1.e1 FROM cat2.cat3.g1"; //$NON-NLS-1$
Query resolvedQuery = (Query) helpResolve(sql);
@@ -563,7 +559,7 @@
}
/** defect 12536 */
- public void testPartiallyQualifiedElement2() {
+ @Test public void testPartiallyQualifiedElement2() {
metadata = FakeMetadataFactory.example3();
String sql = "SELECT cat3.g1.e1 FROM cat2.cat3.g1"; //$NON-NLS-1$
Query resolvedQuery = (Query) helpResolve(sql);
@@ -571,7 +567,7 @@
}
/** defect 12536 */
- public void testPartiallyQualifiedElement3() {
+ @Test public void testPartiallyQualifiedElement3() {
metadata = FakeMetadataFactory.example3();
String sql = "SELECT cat3.g1.e1 FROM cat2.cat3.g1, cat1.g2"; //$NON-NLS-1$
Query resolvedQuery = (Query) helpResolve(sql);
@@ -579,14 +575,14 @@
}
/** defect 12536 */
- public void testPartiallyQualifiedElement4() {
+ @Test public void testPartiallyQualifiedElement4() {
metadata = FakeMetadataFactory.example3();
String sql = "SELECT cat3.g1.e1, cat1.g2.e1 FROM cat2.cat3.g1, cat1.g2"; //$NON-NLS-1$
Query resolvedQuery = (Query) helpResolve(sql);
helpCheckSelect(resolvedQuery, new String[] { "pm1.cat1.cat2.cat3.g1.e1", "pm1.cat1.g2.e1" }); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testPartiallyQualifiedElement5() {
+ @Test public void testPartiallyQualifiedElement5() {
metadata = FakeMetadataFactory.example3();
String sql = "SELECT cat3.g1.e1, cat1.g2.e1 FROM myvdb.pm1.cat1.cat2.cat3.g1, pm1.cat1.g2"; //$NON-NLS-1$
Query resolvedQuery = (Query) helpResolve(sql);
@@ -594,71 +590,71 @@
}
/** defect 12536 */
- public void testPartiallyQualifiedElement6() {
+ @Test public void testPartiallyQualifiedElement6() {
metadata = FakeMetadataFactory.example3();
String sql = "SELECT cat3.g1.e1, e2 FROM cat2.cat3.g1"; //$NON-NLS-1$
Query resolvedQuery = (Query) helpResolve(sql);
helpCheckSelect(resolvedQuery, new String[] { "pm1.cat1.cat2.cat3.g1.e1", "pm1.cat1.cat2.cat3.g1.e2" }); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testPartiallyQualifiedElement7() {
+ @Test public void testPartiallyQualifiedElement7() {
metadata = FakeMetadataFactory.example3();
String sql = "SELECT cat3.g1.e1, cat2.cat3.g1.e2, g1.e3 FROM pm1.cat1.cat2.cat3.g1"; //$NON-NLS-1$
Query resolvedQuery = (Query) helpResolve(sql);
helpCheckSelect(resolvedQuery, new String[] { "pm1.cat1.cat2.cat3.g1.e1", "pm1.cat1.cat2.cat3.g1.e2", "pm1.cat1.cat2.cat3.g1.e3" }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
- public void testFailPartiallyQualifiedGroup1() {
+ @Test public void testFailPartiallyQualifiedGroup1() {
metadata = FakeMetadataFactory.example3();
helpResolveException("SELECT e1 FROM cat3.g1"); //$NON-NLS-1$
}
- public void testFailPartiallyQualifiedGroup2() {
+ @Test public void testFailPartiallyQualifiedGroup2() {
metadata = FakeMetadataFactory.example3();
helpResolveException("SELECT e1 FROM g1"); //$NON-NLS-1$
}
- public void testFailPartiallyQualifiedGroup3() {
+ @Test public void testFailPartiallyQualifiedGroup3() {
metadata = FakeMetadataFactory.example3();
helpResolveException("SELECT e1 FROM g2"); //$NON-NLS-1$
}
- public void testFailPartiallyQualifiedGroup4() {
+ @Test public void testFailPartiallyQualifiedGroup4() {
metadata = FakeMetadataFactory.example3();
helpResolveException("SELECT e1 FROM g3"); //$NON-NLS-1$
}
- public void testFailPartiallyQualifiedGroup5() {
+ @Test public void testFailPartiallyQualifiedGroup5() {
metadata = FakeMetadataFactory.example3();
helpResolveException("SELECT e1 FROM g5"); //$NON-NLS-1$
}
- public void testFailPartiallyQualifiedElement1() {
+ @Test public void testFailPartiallyQualifiedElement1() {
metadata = FakeMetadataFactory.example3();
helpResolveException("SELECT cat3.g1.e1 FROM pm1.cat1.cat2.cat3.g1, pm2.cat3.g1"); //$NON-NLS-1$
}
- public void testFailPartiallyQualifiedElement2() {
+ @Test public void testFailPartiallyQualifiedElement2() {
metadata = FakeMetadataFactory.example3();
helpResolveException("SELECT g1.e1 FROM pm1.cat1.cat2.cat3.g1, pm2.cat3.g1"); //$NON-NLS-1$
}
- public void testFailPartiallyQualifiedElement3() {
+ @Test public void testFailPartiallyQualifiedElement3() {
metadata = FakeMetadataFactory.example3();
helpResolveException("SELECT cat3.g1.e1 FROM pm2.cat2.g2, pm1.cat2.g3"); //$NON-NLS-1$
}
- public void testFailPartiallyQualifiedElement4() {
+ @Test public void testFailPartiallyQualifiedElement4() {
metadata = FakeMetadataFactory.example3();
helpResolveException("SELECT cat3.g1.e1 FROM pm2.cat2.g2"); //$NON-NLS-1$
}
- public void testFailPartiallyQualifiedElement5() {
+ @Test public void testFailPartiallyQualifiedElement5() {
metadata = FakeMetadataFactory.example3();
helpResolveException("SELECT cat3.g1.e1 FROM g1"); //$NON-NLS-1$
}
- public void testElementWithVDB() {
+ @Test public void testElementWithVDB() {
String sql = "SELECT myvdb.pm1.g1.e1 FROM pm1.g1"; //$NON-NLS-1$
Query resolvedQuery = (Query) helpResolve(sql);
helpCheckSelect(resolvedQuery, new String[] { "pm1.g1.e1" }); //$NON-NLS-1$
@@ -668,7 +664,7 @@
assertEquals("Resolved string form was incorrect ", sql, resolvedQuery.toString()); //$NON-NLS-1$
}
- public void testAliasedElementWithVDB() {
+ @Test public void testAliasedElementWithVDB() {
Query resolvedQuery = (Query) helpResolve("SELECT myvdb.pm1.g1.e1 AS x FROM pm1.g1"); //$NON-NLS-1$
helpCheckSelect(resolvedQuery, new String[] { "x" }); //$NON-NLS-1$
helpCheckElements(resolvedQuery.getSelect(),
@@ -676,7 +672,7 @@
new String[] { "pm1.g1.e1" } ); //$NON-NLS-1$
}
- public void testSelectStar() {
+ @Test public void testSelectStar() {
Query resolvedQuery = (Query) helpResolve("SELECT * FROM pm1.g1"); //$NON-NLS-1$
helpCheckFrom(resolvedQuery, new String[] { "pm1.g1" }); //$NON-NLS-1$
helpCheckSelect(resolvedQuery, new String[] { "*" }); //$NON-NLS-1$
@@ -685,7 +681,7 @@
new String[] { "pm1.g1.e1", "pm1.g1.e2", "pm1.g1.e3", "pm1.g1.e4" } ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
}
- public void testSelectStarFromAliasedGroup() {
+ @Test public void testSelectStarFromAliasedGroup() {
Query resolvedQuery = (Query) helpResolve("SELECT * FROM pm1.g1 as x"); //$NON-NLS-1$
helpCheckFrom(resolvedQuery, new String[] { "pm1.g1" }); //$NON-NLS-1$
helpCheckSelect(resolvedQuery, new String[] { "*" }); //$NON-NLS-1$
@@ -694,7 +690,7 @@
new String[] { "pm1.g1.e1", "pm1.g1.e2", "pm1.g1.e3", "pm1.g1.e4" } ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
}
- public void testSelectStarFromMultipleAliasedGroups() {
+ @Test public void testSelectStarFromMultipleAliasedGroups() {
Query resolvedQuery = (Query) helpResolve("SELECT * FROM pm1.g1 as x, pm1.g1 as y"); //$NON-NLS-1$
helpCheckFrom(resolvedQuery, new String[] { "pm1.g1", "pm1.g1" }); //$NON-NLS-1$ //$NON-NLS-2$
helpCheckSelect(resolvedQuery, new String[] { "*" }); //$NON-NLS-1$
@@ -703,7 +699,7 @@
new String[] { "pm1.g1.e1", "pm1.g1.e2", "pm1.g1.e3", "pm1.g1.e4", "pm1.g1.e1", "pm1.g1.e2", "pm1.g1.e3", "pm1.g1.e4" } ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$
}
- public void testSelectStarWhereSomeElementsAreNotSelectable() {
+ @Test public void testSelectStarWhereSomeElementsAreNotSelectable() {
Query resolvedQuery = (Query) helpResolve("SELECT * FROM pm1.g4"); //$NON-NLS-1$
helpCheckFrom(resolvedQuery, new String[] { "pm1.g4" }); //$NON-NLS-1$
helpCheckSelect(resolvedQuery, new String[] { "*" }); //$NON-NLS-1$
@@ -712,7 +708,7 @@
new String[] { "pm1.g4.e1", "pm1.g4.e3" } ); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testSelectGroupStarWhereSomeElementsAreNotSelectable() {
+ @Test public void testSelectGroupStarWhereSomeElementsAreNotSelectable() {
Query resolvedQuery = (Query) helpResolve("SELECT pm1.g4.* FROM pm1.g4"); //$NON-NLS-1$
helpCheckFrom(resolvedQuery, new String[] { "pm1.g4" }); //$NON-NLS-1$
helpCheckSelect(resolvedQuery, new String[] { "pm1.g4.*" }); //$NON-NLS-1$
@@ -721,7 +717,7 @@
new String[] { "pm1.g4.e1", "pm1.g4.e3" } ); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testFullyQualifiedSelectStar() {
+ @Test public void testFullyQualifiedSelectStar() {
Query resolvedQuery = (Query) helpResolve("SELECT pm1.g1.* FROM pm1.g1"); //$NON-NLS-1$
helpCheckFrom(resolvedQuery, new String[] { "pm1.g1" }); //$NON-NLS-1$
helpCheckSelect(resolvedQuery, new String[] { "pm1.g1.*" }); //$NON-NLS-1$
@@ -730,7 +726,7 @@
new String[] { "pm1.g1.e1", "pm1.g1.e2", "pm1.g1.e3", "pm1.g1.e4" } ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
}
- public void testSelectAllInAliasedGroup() {
+ @Test public void testSelectAllInAliasedGroup() {
Query resolvedQuery = (Query) helpResolve("SELECT x.* FROM pm1.g1 as x"); //$NON-NLS-1$
helpCheckFrom(resolvedQuery, new String[] { "pm1.g1" }); //$NON-NLS-1$
helpCheckSelect(resolvedQuery, new String[] { "x.*" }); //$NON-NLS-1$
@@ -739,7 +735,7 @@
new String[] { "pm1.g1.e1", "pm1.g1.e2", "pm1.g1.e3", "pm1.g1.e4" } ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
}
- public void testSelectExpressions() {
+ @Test public void testSelectExpressions() {
Query resolvedQuery = (Query) helpResolve("SELECT e1, concat(e1, 's'), concat(e1, 's') as c FROM pm1.g1"); //$NON-NLS-1$
helpCheckFrom(resolvedQuery, new String[] { "pm1.g1" }); //$NON-NLS-1$
helpCheckSelect(resolvedQuery, new String[] { "pm1.g1.e1", "expr", "c" }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
@@ -748,14 +744,14 @@
new String[] { "pm1.g1.e1", "pm1.g1.e1", "pm1.g1.e1" } ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
- public void testSelectCountStar() {
+ @Test public void testSelectCountStar() {
Query resolvedQuery = (Query) helpResolve("SELECT count(*) FROM pm1.g1"); //$NON-NLS-1$
helpCheckFrom(resolvedQuery, new String[] { "pm1.g1" }); //$NON-NLS-1$
helpCheckSelect(resolvedQuery, new String[] { "count" }); //$NON-NLS-1$
helpCheckElements(resolvedQuery.getSelect(), new String[] { }, new String[] { } );
}
- public void testMultipleIdenticalElements() {
+ @Test public void testMultipleIdenticalElements() {
Query resolvedQuery = (Query) helpResolve("SELECT e1, e1 FROM pm1.g1"); //$NON-NLS-1$
helpCheckFrom(resolvedQuery, new String[] { "pm1.g1" }); //$NON-NLS-1$
helpCheckSelect(resolvedQuery, new String[] { "pm1.g1.e1", "pm1.g1.e1" }); //$NON-NLS-1$ //$NON-NLS-2$
@@ -764,7 +760,7 @@
new String[] { "pm1.g1.e1", "pm1.g1.e1" }); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testMultipleIdenticalElements2() {
+ @Test public void testMultipleIdenticalElements2() {
Query resolvedQuery = (Query) helpResolve("SELECT e1, pm1.g1.e1 FROM pm1.g1"); //$NON-NLS-1$
helpCheckFrom(resolvedQuery, new String[] { "pm1.g1" }); //$NON-NLS-1$
helpCheckSelect(resolvedQuery, new String[] { "pm1.g1.e1", "pm1.g1.e1" }); //$NON-NLS-1$ //$NON-NLS-2$
@@ -773,7 +769,7 @@
new String[] { "pm1.g1.e1", "pm1.g1.e1" }); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testMultipleIdenticalElements3() {
+ @Test public void testMultipleIdenticalElements3() {
Query resolvedQuery = (Query) helpResolve("SELECT e1, e1 as x FROM pm1.g1"); //$NON-NLS-1$
helpCheckFrom(resolvedQuery, new String[] { "pm1.g1" }); //$NON-NLS-1$
helpCheckSelect(resolvedQuery, new String[] { "pm1.g1.e1", "x" }); //$NON-NLS-1$ //$NON-NLS-2$
@@ -782,7 +778,7 @@
new String[] { "pm1.g1.e1", "pm1.g1.e1" }); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testDifferentElementsSameName() {
+ @Test public void testDifferentElementsSameName() {
Query resolvedQuery = (Query) helpResolve("SELECT e1 as x, e2 as x FROM pm1.g2"); //$NON-NLS-1$
helpCheckFrom(resolvedQuery, new String[] { "pm1.g2" }); //$NON-NLS-1$
helpCheckSelect(resolvedQuery, new String[] { "x", "x" }); //$NON-NLS-1$ //$NON-NLS-2$
@@ -791,7 +787,7 @@
new String[] { "pm1.g2.e1", "pm1.g2.e2" }); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testDifferentConstantsSameName() {
+ @Test public void testDifferentConstantsSameName() {
Query resolvedQuery = (Query) helpResolve("SELECT 1 as x, 2 as x FROM pm1.g2"); //$NON-NLS-1$
helpCheckFrom(resolvedQuery, new String[] { "pm1.g2" }); //$NON-NLS-1$
helpCheckSelect(resolvedQuery, new String[] { "x", "x" }); //$NON-NLS-1$ //$NON-NLS-2$
@@ -800,42 +796,42 @@
new String[] { });
}
- public void testFailSameGroupsWithSameNames() {
+ @Test public void testFailSameGroupsWithSameNames() {
helpResolveException("SELECT * FROM pm1.g1 as x, pm1.g1 as x"); //$NON-NLS-1$
}
- public void testFailDifferentGroupsWithSameNames() {
+ @Test public void testFailDifferentGroupsWithSameNames() {
helpResolveException("SELECT * FROM pm1.g1 as x, pm1.g2 as x"); //$NON-NLS-1$
}
- public void testFailAmbiguousElement() {
+ @Test public void testFailAmbiguousElement() {
helpResolveException("SELECT e1 FROM pm1.g1, pm1.g2"); //$NON-NLS-1$
}
- public void testFailAmbiguousElementAliasedGroup() {
+ @Test public void testFailAmbiguousElementAliasedGroup() {
helpResolveException("SELECT e1 FROM pm1.g1 as x, pm1.g1"); //$NON-NLS-1$
}
- public void testFailFullyQualifiedElementUnknownGroup() {
+ @Test public void testFailFullyQualifiedElementUnknownGroup() {
helpResolveException("SELECT pm1.g1.e1 FROM pm1.g2"); //$NON-NLS-1$
}
- public void testFailUnknownGroup() {
+ @Test public void testFailUnknownGroup() {
helpResolveException("SELECT x.e1 FROM x"); //$NON-NLS-1$
}
- public void testFailUnknownElement() {
+ @Test public void testFailUnknownElement() {
helpResolveException("SELECT x FROM pm1.g1"); //$NON-NLS-1$
}
- public void testFailFunctionOfAggregatesInSelect() {
+ @Test public void testFailFunctionOfAggregatesInSelect() {
helpResolveException("SELECT (SUM(e0) * COUNT(e0)) FROM test.group GROUP BY e0"); //$NON-NLS-1$
}
/*
* per defect 4404
*/
- public void testFailGroupNotReferencedByAlias() {
+ @Test public void testFailGroupNotReferencedByAlias() {
helpResolveException("SELECT pm1.g1.x FROM pm1.g1 as H"); //$NON-NLS-1$
}
@@ -843,11 +839,11 @@
* per defect 4404 - this one reproduced the defect,
* then succeeded after the fix
*/
- public void testFailGroupNotReferencedByAliasSelectAll() {
+ @Test public void testFailGroupNotReferencedByAliasSelectAll() {
helpResolveException("SELECT pm1.g1.* FROM pm1.g1 as H"); //$NON-NLS-1$
}
- public void testComplicatedQuery() {
+ @Test public void testComplicatedQuery() {
Query resolvedQuery = (Query) helpResolve("SELECT pm1.g1.e2 as y, pm1.g1.E3 as z, CONVERT(pm1.g1.e1, integer) * 1000 as w FROM pm1.g1 WHERE e1 <> 'x'"); //$NON-NLS-1$
helpCheckFrom(resolvedQuery, new String[] { "pm1.g1" }); //$NON-NLS-1$
helpCheckSelect(resolvedQuery, new String[] { "y", "z", "w" }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
@@ -856,7 +852,7 @@
new String[] { "pm1.g1.e2", "pm1.g1.e3", "pm1.g1.e1", "pm1.g1.e1" } ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
}
- public void testJoinQuery() {
+ @Test public void testJoinQuery() {
Query resolvedQuery = (Query) helpResolve("SELECT pm3.g1.e2, pm3.g2.e2 FROM pm3.g1, pm3.g2 WHERE pm3.g1.e2=pm3.g2.e2"); //$NON-NLS-1$
helpCheckFrom(resolvedQuery, new String[] { "pm3.g1", "pm3.g2" }); //$NON-NLS-1$ //$NON-NLS-2$
helpCheckSelect(resolvedQuery, new String[] { "pm3.g1.e2", "pm3.g2.e2" }); //$NON-NLS-1$ //$NON-NLS-2$
@@ -865,27 +861,27 @@
new String[] { "pm3.g1.e2", "pm3.g2.e2", "pm3.g1.e2", "pm3.g2.e2" } ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
}
- public void testHavingRequiringConvertOnAggregate1() {
+ @Test public void testHavingRequiringConvertOnAggregate1() {
helpResolve("SELECT * FROM pm1.g1 GROUP BY e4 HAVING MAX(e2) > 1.2"); //$NON-NLS-1$
}
- public void testHavingRequiringConvertOnAggregate2() {
+ @Test public void testHavingRequiringConvertOnAggregate2() {
helpResolve("SELECT * FROM pm1.g1 GROUP BY e4 HAVING MIN(e2) > 1.2"); //$NON-NLS-1$
}
- public void testHavingRequiringConvertOnAggregate3() {
+ @Test public void testHavingRequiringConvertOnAggregate3() {
helpResolve("SELECT * FROM pm1.g1 GROUP BY e4 HAVING 1.2 > MAX(e2)"); //$NON-NLS-1$
}
- public void testHavingRequiringConvertOnAggregate4() {
+ @Test public void testHavingRequiringConvertOnAggregate4() {
helpResolve("SELECT * FROM pm1.g1 GROUP BY e4 HAVING 1.2 > MIN(e2)"); //$NON-NLS-1$
}
- public void testHavingWithAggsOfDifferentTypes() {
+ @Test public void testHavingWithAggsOfDifferentTypes() {
helpResolve("SELECT * FROM pm1.g1 GROUP BY e4 HAVING MIN(e1) = MIN(e2)"); //$NON-NLS-1$
}
- public void testCaseInGroupBy() {
+ @Test public void testCaseInGroupBy() {
String sql = "SELECT SUM(e2) FROM pm1.g1 GROUP BY CASE WHEN e2 = 0 THEN 1 ELSE 2 END"; //$NON-NLS-1$
Command command = helpResolve(sql);
assertEquals(sql, command.toString());
@@ -893,7 +889,7 @@
helpCheckElements(command, new String[] {"pm1.g1.e2", "pm1.g1.e2"}, new String[] {"pm1.g1.e2", "pm1.g1.e2"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$//$NON-NLS-4$
}
- public void testFunctionInGroupBy() {
+ @Test public void testFunctionInGroupBy() {
String sql = "SELECT SUM(e2) FROM pm1.g1 GROUP BY (e2 + 1)"; //$NON-NLS-1$
Command command = helpResolve(sql);
assertEquals(sql, command.toString());
@@ -901,15 +897,15 @@
helpCheckElements(command, new String[] {"pm1.g1.e2", "pm1.g1.e2"}, new String[] {"pm1.g1.e2", "pm1.g1.e2"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$//$NON-NLS-4$
}
- public void testUnknownFunction() {
+ @Test public void testUnknownFunction() {
helpResolveException("SELECT abc(e1) FROM pm1.g1", "Error Code:ERR.015.008.0039 Message:The function 'abc(e1)' is an unknown form. Check that the function name and number of arguments is correct."); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testConversionNotPossible() {
+ @Test public void testConversionNotPossible() {
helpResolveException("SELECT dayofmonth('2002-01-01') FROM pm1.g1", "Error Code:ERR.015.008.0040 Message:The function 'dayofmonth('2002-01-01')' is a valid function form, but the arguments do not match a known type signature and cannot be converted using implicit type conversions."); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testResolveParameters() {
+ @Test public void testResolveParameters() {
List bindings = new ArrayList();
bindings.add("pm1.g2.e1"); //$NON-NLS-1$
bindings.add("pm1.g2.e2"); //$NON-NLS-1$
@@ -924,14 +920,14 @@
}
- public void testResolveParametersInsert() {
+ @Test public void testResolveParametersInsert() {
List bindings = new ArrayList();
bindings.add("pm1.g2.e1"); //$NON-NLS-1$
helpResolve("INSERT INTO pm1.g1 (e1) VALUES (?)", bindings); //$NON-NLS-1$
}
- public void testResolveParametersExec() {
+ @Test public void testResolveParametersExec() {
List bindings = new ArrayList();
bindings.add("pm1.g2.e1"); //$NON-NLS-1$
@@ -942,11 +938,11 @@
assertNotNull(ref.getType());
}
- public void testUseNonExistentAlias() {
+ @Test public void testUseNonExistentAlias() {
helpResolveException("SELECT portfoliob.e1 FROM ((pm1.g1 AS portfoliob JOIN pm1.g2 AS portidentb ON portfoliob.e1 = portidentb.e1) RIGHT OUTER JOIN pm1.g3 AS identifiersb ON portidentb.e1 = 'ISIN' and portidentb.e2 = identifiersb.e2) RIGHT OUTER JOIN pm1.g1 AS issuesb ON a.identifiersb.e1 = issuesb.e1"); //$NON-NLS-1$
}
- public void testCriteria1() {
+ @Test public void testCriteria1() {
CompareCriteria expected = new CompareCriteria();
ElementSymbol es = new ElementSymbol("pm1.g1.e1"); //$NON-NLS-1$
GroupSymbol gs = new GroupSymbol("pm1.g1"); //$NON-NLS-1$
@@ -960,7 +956,7 @@
assertEquals("Did not match expected criteria", expected, actual); //$NON-NLS-1$
}
- public void testSubquery1() {
+ @Test public void testSubquery1() {
Query resolvedQuery = (Query) helpResolve("SELECT e1 FROM pm1.g1, (SELECT pm1.g2.e1 AS x FROM pm1.g2) AS y WHERE e1 = x"); //$NON-NLS-1$
helpCheckFrom(resolvedQuery, new String[] { "pm1.g1", "y" }); //$NON-NLS-1$ //$NON-NLS-2$
helpCheckSelect(resolvedQuery, new String[] { "pm1.g1.e1" }); //$NON-NLS-1$
@@ -970,7 +966,7 @@
}
- public void testStoredQuery1() {
+ @Test public void testStoredQuery1() {
StoredProcedure proc = (StoredProcedure) helpResolve("EXEC pm1.sq2('abc')"); //$NON-NLS-1$
// Check number of resolved parameters
@@ -994,7 +990,7 @@
* input params are numbered #1 and #2. This test tests that this disparity in ordering should not
* be a problem as long as RELATIVE ordering is in synch.
*/
- public void testStoredQueryParamOrdering_8211() {
+ @Test public void testStoredQueryParamOrdering_8211() {
StoredProcedure proc = (StoredProcedure) helpResolve("EXEC pm1.sq3a('abc', 123)"); //$NON-NLS-1$
// Check number of resolved parameters
@@ -1017,19 +1013,19 @@
assertEquals("Did not get expected type for param", expr, param.getExpression()); //$NON-NLS-1$
}
- public void testStoredSubQuery1() {
+ @Test public void testStoredSubQuery1() {
Query resolvedQuery = (Query) helpResolve("select x.e1 from (EXEC pm1.sq1()) as x"); //$NON-NLS-1$
helpCheckFrom(resolvedQuery, new String[] { "x" }); //$NON-NLS-1$
helpCheckSelect(resolvedQuery, new String[] { "x.e1" }); //$NON-NLS-1$
}
- public void testStoredSubQuery2() {
+ @Test public void testStoredSubQuery2() {
Query resolvedQuery = (Query) helpResolve("select x.e1 from (EXEC pm1.sq3('abc', 5)) as x"); //$NON-NLS-1$
helpCheckFrom(resolvedQuery, new String[] { "x" }); //$NON-NLS-1$
helpCheckSelect(resolvedQuery, new String[] { "x.e1" }); //$NON-NLS-1$
}
- public void testStoredSubQuery3() {
+ @Test public void testStoredSubQuery3() {
Query resolvedQuery = (Query) helpResolve("select * from (EXEC pm1.sq2('abc')) as x"); //$NON-NLS-1$
helpCheckFrom(resolvedQuery, new String[] { "x" }); //$NON-NLS-1$
@@ -1044,7 +1040,7 @@
assertEquals("Did not get expected type", DataTypeManager.DefaultDataClasses.INTEGER, elem2.getType()); //$NON-NLS-1$
}
- public void testStoredQueryTransformationWithVariable() throws Exception {
+ @Test public void testStoredQueryTransformationWithVariable() throws Exception {
Command command = QueryParser.getQueryParser().parseCommand("SELECT * FROM pm1.g1 WHERE pm1.sq5.in1 = 5"); //$NON-NLS-1$
// Construct command metadata
@@ -1064,7 +1060,7 @@
assertEquals("Did not find variable in resolved query", 1, vars.size()); //$NON-NLS-1$
}
- public void testStoredQueryTransformationWithVariable2() throws Exception {
+ @Test public void testStoredQueryTransformationWithVariable2() throws Exception {
Command command = QueryParser.getQueryParser().parseCommand("SELECT * FROM pm1.g1 WHERE in1 = 5"); //$NON-NLS-1$
// Construct command metadata
@@ -1084,7 +1080,7 @@
assertEquals("Did not find variable in resolved query", 1, vars.size()); //$NON-NLS-1$
}
- public void testStoredQueryTransformationWithVariable3() throws Exception {
+ @Test public void testStoredQueryTransformationWithVariable3() throws Exception {
Command command = QueryParser.getQueryParser().parseCommand("SELECT * FROM pm1.g1 WHERE in1 = 5 UNION SELECT * FROM pm1.g1"); //$NON-NLS-1$
// Construct command metadata
@@ -1103,7 +1099,7 @@
assertEquals("Did not find variable in resolved query", 1, vars.size()); //$NON-NLS-1$
}
- public void testStoredQueryTransformationWithVariable4() throws Exception {
+ @Test public void testStoredQueryTransformationWithVariable4() throws Exception {
Command command = QueryParser.getQueryParser().parseCommand("EXEC pm1.sq2(pm1.sq2.in)"); //$NON-NLS-1$
// resolve
@@ -1125,56 +1121,56 @@
}
}
- public void testExec1() {
+ @Test public void testExec1() {
helpResolve("EXEC pm1.sq2('xyz')"); //$NON-NLS-1$
}
- public void testExec2() {
+ @Test public void testExec2() {
// implicity convert 5 to proper type
helpResolve("EXEC pm1.sq2(5)"); //$NON-NLS-1$
}
- public void testExecNamedParam() {
+ @Test public void testExecNamedParam() {
Object[] expectedParameterExpressions = new Object[] {new Constant("xyz")};//$NON-NLS-1$
helpResolveExec("EXEC pm1.sq2(\"in\" = 'xyz')", expectedParameterExpressions);//$NON-NLS-1$
}
/** Should get exception because param name is wrong. */
- public void testExecWrongParamName() {
+ @Test public void testExecWrongParamName() {
helpResolveException("EXEC pm1.sq2(in1 = 'xyz')");//$NON-NLS-1$
}
- public void testExecNamedParams() {
+ @Test public void testExecNamedParams() {
Object[] expectedParameterExpressions = new Object[] {new Constant("xyz"), new Constant(new Integer(5))};//$NON-NLS-1$
helpResolveExec("EXEC pm1.sq3(\"in\" = 'xyz', in2 = 5)", expectedParameterExpressions);//$NON-NLS-1$
}
/** try entering params out of order */
- public void testExecNamedParamsReversed() {
+ @Test public void testExecNamedParamsReversed() {
Object[] expectedParameterExpressions = new Object[] {new Constant("xyz"), new Constant(new Integer(5))};//$NON-NLS-1$
helpResolveExec("EXEC pm1.sq3(in2 = 5, \"in\" = 'xyz')", expectedParameterExpressions);//$NON-NLS-1$
}
/** test omitting an optional parameter */
- public void testExecNamedParamsOptionalParam() {
+ @Test public void testExecNamedParamsOptionalParam() {
Object[] expectedParameterExpressions = new Object[] {new Constant("xyz"), new Constant(null), new Constant("something")};//$NON-NLS-1$ //$NON-NLS-2$
helpResolveExec("EXEC pm1.sq3b(\"in\" = 'xyz', in3 = 'something')", expectedParameterExpressions);//$NON-NLS-1$
}
/** test omitting a required parameter that has a default value */
- public void testExecNamedParamsOmitRequiredParamWithDefaultValue() {
+ @Test public void testExecNamedParamsOmitRequiredParamWithDefaultValue() {
Object[] expectedParameterExpressions = new Object[] {new Constant("xyz"), new Constant(new Integer(666)), new Constant("YYZ")};//$NON-NLS-1$ //$NON-NLS-2$
helpResolveExec("EXEC pm1.sq3b(\"in\" = 'xyz', in2 = 666)", expectedParameterExpressions);//$NON-NLS-1$
}
- public void testExecNamedParamsOptionalParamWithDefaults() {
+ @Test public void testExecNamedParamsOptionalParamWithDefaults() {
Object[] expectedParameterExpressions = helpGetStoredProcDefaultValues();
//override the default value for the first parameter
expectedParameterExpressions[0] = new Constant("xyz"); //$NON-NLS-1$
helpResolveExec("EXEC pm1.sqDefaults(inString = 'xyz')", expectedParameterExpressions);//$NON-NLS-1$
}
- public void testExecNamedParamsOptionalParamWithDefaultsCaseInsensitive() {
+ @Test public void testExecNamedParamsOptionalParamWithDefaultsCaseInsensitive() {
Object[] expectedParameterExpressions = helpGetStoredProcDefaultValues();
//override the default value for the first parameter
expectedParameterExpressions[0] = new Constant("xyz"); //$NON-NLS-1$
@@ -1182,7 +1178,7 @@
}
/** try just a few named parameters, in no particular order */
- public void testExecNamedParamsOptionalParamWithDefaults2() {
+ @Test public void testExecNamedParamsOptionalParamWithDefaults2() {
Object[] expectedParameterExpressions = helpGetStoredProcDefaultValues();
//override the proper default values in expected results
expectedParameterExpressions[3] = new Constant(Boolean.FALSE);
@@ -1194,7 +1190,7 @@
* Try entering in no actual parameters, rely entirely on defaults.
* This also tests the default value transformation code in ExecResolver.
*/
- public void testExecNamedParamsOptionalParamWithAllDefaults() {
+ @Test public void testExecNamedParamsOptionalParamWithAllDefaults() {
Object[] expectedParameterExpressions = helpGetStoredProcDefaultValues();
helpResolveExec("EXEC pm1.sqDefaults()", expectedParameterExpressions);//$NON-NLS-1$
}
@@ -1227,16 +1223,16 @@
}
/** Should get exception because there are two required params */
- public void testExceptionNotSupplyingRequiredParam() {
+ @Test public void testExceptionNotSupplyingRequiredParam() {
helpResolveException("EXEC pm1.sq3(in2 = 5)");//$NON-NLS-1$
}
/** Should get exception because the default value in metadata is bad for input param */
- public void testExceptionBadDefaultValue() {
+ @Test public void testExceptionBadDefaultValue() {
helpResolveException("EXEC pm1.sqBadDefault()");//$NON-NLS-1$
}
- public void testExecWithForcedConvertOfStringToCorrectType() {
+ @Test public void testExecWithForcedConvertOfStringToCorrectType() {
// force conversion of '5' to proper type (integer)
helpResolve("EXEC pm1.sq3('x', '5')"); //$NON-NLS-1$
}
@@ -1244,11 +1240,11 @@
/**
* True/false are consistently representable by integers
*/
- public void testExecBadType() {
+ @Test public void testExecBadType() {
helpResolve("EXEC pm1.sq3('xyz', {b'true'})"); //$NON-NLS-1$
}
- public void testSubqueryInUnion() {
+ @Test public void testSubqueryInUnion() {
String sql = "SELECT IntKey, FloatNum FROM BQT1.MediumA WHERE (IntKey >= 0) AND (IntKey < 15) " + //$NON-NLS-1$
"UNION ALL " + //$NON-NLS-1$
"SELECT BQT2.SmallB.IntKey, y.FloatNum " + //$NON-NLS-1$
@@ -1260,7 +1256,7 @@
helpResolve(sql, FakeMetadataFactory.exampleBQTCached(), null);
}
- public void testSubQueryINClause1(){
+ @Test public void testSubQueryINClause1(){
//select e1 from pm1.g1 where e2 in (select e2 from pm4.g1)
//sub command
@@ -1311,7 +1307,7 @@
* project symbol of the subquery is not the same type as the expression in
* the SubquerySetCriteria object
*/
- public void testSubQueryINClauseImplicitConversion(){
+ @Test public void testSubQueryINClauseImplicitConversion(){
//select e1 from pm1.g1 where e2 in (select e1 from pm4.g1)
//sub command
@@ -1371,7 +1367,7 @@
* type of the expression of the SubquerySetCriteria and the type of the
* projected symbol of the subquery.
*/
- public void testSubQueryINClauseNoConversionFails(){
+ @Test public void testSubQueryINClauseNoConversionFails(){
//select e1 from pm1.g1 where e1 in (select e2 from pm4.g1)
//sub command
@@ -1402,27 +1398,27 @@
this.helpResolveFails(outerQuery);
}
- public void testSubQueryINClauseTooManyColumns(){
+ @Test public void testSubQueryINClauseTooManyColumns(){
String sql = "select e1 from pm1.g1 where e1 in (select e1, e2 from pm4.g1)"; //$NON-NLS-1$
//test
this.helpResolveException(sql);
}
- public void testStoredQueryInFROMSubquery() {
+ @Test public void testStoredQueryInFROMSubquery() {
String sql = "select X.e1 from (EXEC pm1.sq3('abc', 123)) as X"; //$NON-NLS-1$
helpResolve(sql);
}
- public void testStoredQueryInINSubquery() throws Exception {
+ @Test public void testStoredQueryInINSubquery() throws Exception {
String sql = "select * from pm1.g1 where e1 in (EXEC pm1.sqsp1())"; //$NON-NLS-1$
helpResolve(sql);
}
// variable resolution
- public void testCreateUpdateProcedure1() {
+ @Test public void testCreateUpdateProcedure1() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -1437,7 +1433,7 @@
}
// variable resolution, variable used in if statement
- public void testCreateUpdateProcedure3() {
+ @Test public void testCreateUpdateProcedure3() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -1454,7 +1450,7 @@
// variable resolution, variable used in if statement, variable comapred against
// differrent datatype element
- public void testCreateUpdateProcedure4() {
+ @Test public void testCreateUpdateProcedure4() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE boolean var1;\n"; //$NON-NLS-1$
@@ -1469,7 +1465,7 @@
}
// variable resolution, variable used in if statement, invalid operation on variable
- public void testCreateUpdateProcedure5() {
+ @Test public void testCreateUpdateProcedure5() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE boolean var1;\n"; //$NON-NLS-1$
@@ -1485,7 +1481,7 @@
// variable resolution, variables declared in different blocks local variables
// should not override
- public void testCreateUpdateProcedure6() {
+ @Test public void testCreateUpdateProcedure6() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -1504,7 +1500,7 @@
// variable resolution, variables declared in different blocks local variables
// inner block using outer block variables
- public void testCreateUpdateProcedure7() {
+ @Test public void testCreateUpdateProcedure7() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -1523,7 +1519,7 @@
// variable resolution, variables declared in differrent blocks local variables
// outer block cannot use inner block variables
- public void testCreateUpdateProcedure8() {
+ @Test public void testCreateUpdateProcedure8() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -1543,7 +1539,7 @@
// variable resolution, variables declared in differrent blocks local variables
// should override, outer block variables still valid afetr inner block is declared
- public void testCreateUpdateProcedure9() {
+ @Test public void testCreateUpdateProcedure9() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -1562,7 +1558,7 @@
}
// special variable ROWS_UPDATED resolution
- public void testCreateUpdateProcedure10() {
+ @Test public void testCreateUpdateProcedure10() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -1578,7 +1574,7 @@
}
// special variable ROWS_UPDATED used with declared variable
- public void testCreateUpdateProcedure11() {
+ @Test public void testCreateUpdateProcedure11() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -1593,7 +1589,7 @@
}
// special variable INPUT used with declared variable
- public void testCreateUpdateProcedure12() {
+ @Test public void testCreateUpdateProcedure12() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -1608,7 +1604,7 @@
}
// special variable CHANGING used with declared variable
- public void testCreateUpdateProcedure14() {
+ @Test public void testCreateUpdateProcedure14() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -1626,11 +1622,11 @@
}
// special variable CHANGING and INPUT used in conpound criteria
- public void testCreateUpdateProcedure15() {
+ @Test public void testCreateUpdateProcedure15() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
- procedure = procedure + "if(CHANGING.e1=\"false\" and INPUT.e1=1)\n"; //$NON-NLS-1$
+ procedure = procedure + "if(CHANGING.e1='false' and INPUT.e1=1)\n"; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "Select pm1.g1.e2, Input.e2 from pm1.g1;\n"; //$NON-NLS-1$
procedure = procedure + "UPDATE pm1.g1 SET pm1.g1.e1 = INPUT.e1, pm1.g1.e2 = INPUT.e2;\n"; //$NON-NLS-1$
@@ -1644,7 +1640,7 @@
}
// special variable CHANGING and INPUT used in conpound criteria, with declared variables
- public void testCreateUpdateProcedure16() {
+ @Test public void testCreateUpdateProcedure16() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -1662,7 +1658,7 @@
}
// special variable CHANGING compared against integer no implicit conversion available
- public void testCreateUpdateProcedure17() {
+ @Test public void testCreateUpdateProcedure17() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "if(CHANGING.e4 = {d'2000-01-01'})\n"; //$NON-NLS-1$
@@ -1678,7 +1674,7 @@
}
// virtual group elements used in procedure(HAS CRITERIA)
- public void testCreateUpdateProcedure18() {
+ @Test public void testCreateUpdateProcedure18() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -1693,7 +1689,7 @@
}
// virtual group elements used in procedure in if statement(HAS CRITERIA)
- public void testCreateUpdateProcedure19() {
+ @Test public void testCreateUpdateProcedure19() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -1711,7 +1707,7 @@
}
// virtual group elements used in procedure(TRANSLATE CRITERIA)
- public void testCreateUpdateProcedure20() {
+ @Test public void testCreateUpdateProcedure20() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -1726,7 +1722,7 @@
}
// virtual group elements used in procedure(TRANSLATE CRITERIA)
- public void testCreateUpdateProcedure21() {
+ @Test public void testCreateUpdateProcedure21() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -1741,7 +1737,7 @@
}
// using undefined variable should fail
- public void testCreateUpdateProcedure22() {
+ @Test public void testCreateUpdateProcedure22() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
// procedure = procedure + "DECLARE integer var1;\n";
@@ -1757,7 +1753,7 @@
}
// using undefined variable declared is of invalid datatype
- public void testCreateUpdateProcedure23() {
+ @Test public void testCreateUpdateProcedure23() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE struct var1;\n"; //$NON-NLS-1$
@@ -1772,7 +1768,7 @@
}
// using declare variable that has parts
- public void testCreateUpdateProcedure24() {
+ @Test public void testCreateUpdateProcedure24() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var2.var1;\n"; //$NON-NLS-1$
@@ -1785,7 +1781,7 @@
}
// using declare variable is qualified
- public void testCreateUpdateProcedure26() {
+ @Test public void testCreateUpdateProcedure26() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer VARIABLES.var1;\n"; //$NON-NLS-1$
@@ -1798,7 +1794,7 @@
}
// using declare variable is qualified but has more parts
- public void testCreateUpdateProcedure27() {
+ @Test public void testCreateUpdateProcedure27() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer VARIABLES.var1.var2;\n"; //$NON-NLS-1$
@@ -1811,7 +1807,7 @@
}
// using a variable that has not been declared in an assignment stmt
- public void testCreateUpdateProcedure28() {
+ @Test public void testCreateUpdateProcedure28() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "var1 = Select pm1.g1.e2 from pm1.g1;\n"; //$NON-NLS-1$
@@ -1824,7 +1820,7 @@
}
// using a variable that has not been declared in an assignment stmt
- public void testCreateUpdateProcedure29() {
+ @Test public void testCreateUpdateProcedure29() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "var1 = 1;\n"; //$NON-NLS-1$
@@ -1837,7 +1833,7 @@
}
// using invalid function in assignment expr
- public void testCreateUpdateProcedure30() {
+ @Test public void testCreateUpdateProcedure30() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "Declare integer var1;\n"; //$NON-NLS-1$
@@ -1851,7 +1847,7 @@
}
// using invalid function in assignment expr
- public void testCreateUpdateProcedure31() {
+ @Test public void testCreateUpdateProcedure31() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "Declare integer var1;\n"; //$NON-NLS-1$
@@ -1865,7 +1861,7 @@
}
// using a variable being used inside a subcomand
- public void testCreateUpdateProcedure32() {
+ @Test public void testCreateUpdateProcedure32() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "Declare integer var1;\n"; //$NON-NLS-1$
@@ -1881,7 +1877,7 @@
// variable resolution, variables declared in differrent blocks local variables
// should override, outer block variables still valid afetr inner block is declared
// fails as variable being compared against incorrect type
- public void testCreateUpdateProcedure33() {
+ @Test public void testCreateUpdateProcedure33() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -1900,7 +1896,7 @@
}
// physical elements used on criteria of the if statement
- public void testCreateUpdateProcedure34() {
+ @Test public void testCreateUpdateProcedure34() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -1917,7 +1913,7 @@
}
// virtual elements used on criteria of the if statement
- public void testCreateUpdateProcedure35() {
+ @Test public void testCreateUpdateProcedure35() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -1934,7 +1930,7 @@
}
// physical elements used on criteria of the if statement
- public void testCreateUpdateProcedure36() {
+ @Test public void testCreateUpdateProcedure36() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -1951,7 +1947,7 @@
}
// TranslateCriteria on criteria of the if statement
- public void testCreateUpdateProcedure37() {
+ @Test public void testCreateUpdateProcedure37() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -1969,7 +1965,7 @@
// validating Translate CRITERIA, elements on it should be virtual group elements
// but can use variables
- public void testCreateUpdateProcedure38() {
+ @Test public void testCreateUpdateProcedure38() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -1983,7 +1979,7 @@
}
// physical elements used on criteria of the if statement
- public void testCreateUpdateProcedure39() {
+ @Test public void testCreateUpdateProcedure39() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -2000,7 +1996,7 @@
}
// TranslateCriteria on criteria of the if statement
- public void testCreateUpdateProcedure40() {
+ @Test public void testCreateUpdateProcedure40() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -2017,7 +2013,7 @@
}
// TranslateCriteria on criteria of the if statement
- public void testCreateUpdateProcedure41() {
+ @Test public void testCreateUpdateProcedure41() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -2034,7 +2030,7 @@
}
// TranslateCriteria on criteria of the if statement
- public void testCreateUpdateProcedure42() {
+ @Test public void testCreateUpdateProcedure42() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -2051,7 +2047,7 @@
}
// TranslateCriteria on criteria of the if statement
- public void testCreateUpdateProcedure43() throws Exception {
+ @Test public void testCreateUpdateProcedure43() throws Exception {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -2071,7 +2067,7 @@
}
// special variable CHANGING compared against integer no implicit conversion available
- public void testCreateUpdateProcedure44() {
+ @Test public void testCreateUpdateProcedure44() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "if(INPUT.e1 = 10)\n"; //$NON-NLS-1$
@@ -2087,7 +2083,7 @@
}
// special variable CHANGING compared against integer no implicit conversion available
- public void testCreateUpdateProcedure45() throws Exception {
+ @Test public void testCreateUpdateProcedure45() throws Exception {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "if(INPUT.e1 = 10)\n"; //$NON-NLS-1$
@@ -2108,7 +2104,7 @@
}
// special variable CHANGING compared against integer no implicit conversion available
- public void testCreateUpdateProcedure46() throws Exception {
+ @Test public void testCreateUpdateProcedure46() throws Exception {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "UPDATE pm1.g1 SET pm1.g1.e1 = INPUT.e1;\n"; //$NON-NLS-1$
@@ -2126,7 +2122,7 @@
}
// TranslateCriteria on criteria of the if statement
- public void testCreateUpdateProcedure47() {
+ @Test public void testCreateUpdateProcedure47() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -2143,7 +2139,7 @@
}
// validating Translate CRITERIA, elements(left elements on on it should be virtual group elements
- public void testCreateUpdateProcedure48() {
+ @Test public void testCreateUpdateProcedure48() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -2157,7 +2153,7 @@
}
// resolving Translate CRITERIA, right element should be present on the command
- public void testCreateUpdateProcedure49() {
+ @Test public void testCreateUpdateProcedure49() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "Select pm1.g1.e1 from pm1.g1 where Translate CRITERIA WITH (vm1.g1.e1 = pm1.g2.e1);\n"; //$NON-NLS-1$
@@ -2170,7 +2166,7 @@
}
// resolving criteria selector(on HAS CRITERIA), elements on it should be virtual group elements
- public void testCreateUpdateProcedure50() {
+ @Test public void testCreateUpdateProcedure50() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -2187,7 +2183,7 @@
}
// resolving Translate CRITERIA, right side expression in the translate criteria should be elements on the command
- public void testCreateUpdateProcedure51() {
+ @Test public void testCreateUpdateProcedure51() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -2204,7 +2200,7 @@
// validating Translate CRITERIA, elements on it should be virtual group elements
// but can use variables, gut left exprs should always be virtual elements
- public void testCreateUpdateProcedure52() {
+ @Test public void testCreateUpdateProcedure52() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -2220,7 +2216,7 @@
// resolving AssignmentStatement, variable type and assigned type
// do not match and no implicit conversion available
- public void testCreateUpdateProcedure53() {
+ @Test public void testCreateUpdateProcedure53() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -2236,7 +2232,7 @@
// resolving AssignmentStatement, variable type and assigned type
// do not match, but implicit conversion available
- public void testCreateUpdateProcedure54() {
+ @Test public void testCreateUpdateProcedure54() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE string var1;\n"; //$NON-NLS-1$
@@ -2252,7 +2248,7 @@
// resolving AssignmentStatement, variable type and assigned type
// do not match, but implicit conversion available
- public void testCreateUpdateProcedure55() {
+ @Test public void testCreateUpdateProcedure55() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE string var1;\n"; //$NON-NLS-1$
@@ -2267,7 +2263,7 @@
}
// no user command provided - should throw resolver exception
- public void testCreateUpdateProcedure56() {
+ @Test public void testCreateUpdateProcedure56() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE string var1;\n"; //$NON-NLS-1$
@@ -2278,7 +2274,7 @@
helpResolveException(procedure, FakeMetadataFactory.example1Cached(), "Error Code:ERR.015.008.0012 Message:Unable to resolve update procedure as the virtual group context is ambiguous."); //$NON-NLS-1$
}
- public void testDefect14912_CreateUpdateProcedure57_FunctionWithElementParamInAssignmentStatement() {
+ @Test public void testDefect14912_CreateUpdateProcedure57_FunctionWithElementParamInAssignmentStatement() {
// Tests that the function params are resolved before the function for assignment statements
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
@@ -2294,7 +2290,7 @@
// addresses Cases 4624. Before change to UpdateProcedureResolver,
// this case failed with assertion exception.
- public void testCase4624() {
+ @Test public void testCase4624() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "VARIABLES.ROWS_UPDATED = 0;\n"; //$NON-NLS-1$
@@ -2312,7 +2308,7 @@
}
// addresses Cases 5474.
- public void testCase5474() {
+ @Test public void testCase5474() {
String procedure = "CREATE VIRTUAL PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer VARIABLES.NLEVELS;\n"; //$NON-NLS-1$
@@ -2322,7 +2318,7 @@
helpResolve(procedure, FakeMetadataFactory.example1Cached(), null);
}
- public void testIssue174102() throws Exception {
+ @Test public void testIssue174102() throws Exception {
String procedure = "CREATE VIRTUAL PROCEDURE \n"; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE string crit = 'WHERE pm1.sq2.in = \"test\"';\n"; //$NON-NLS-1$
@@ -2335,7 +2331,7 @@
// Address Issue 174519.
// Expected result is resolver failure, but with different error.
- public void testIssue174519() {
+ @Test public void testIssue174519() {
String procedure = "CREATE VIRTUAL PROCEDURE \n"; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE string VARIABLES.l_in = pm1.sq1.in;\n"; //$NON-NLS-1$
@@ -2363,11 +2359,11 @@
return metadata;
}
- public void testIsXMLQuery1() throws Exception {
+ @Test public void testIsXMLQuery1() throws Exception {
helpTestIsXMLQuery("SELECT * FROM pm1.g1", false); //$NON-NLS-1$
}
- public void testIsXMLQuery2() throws Exception {
+ @Test public void testIsXMLQuery2() throws Exception {
helpTestIsXMLQuery("SELECT * FROM xmltest.doc1", true); //$NON-NLS-1$
}
@@ -2376,19 +2372,19 @@
* is used (assuming short doc name isn't ambiguous in a
* VDB). Defect 11479.
*/
- public void testIsXMLQuery3() throws Exception {
+ @Test public void testIsXMLQuery3() throws Exception {
helpTestIsXMLQuery("SELECT * FROM doc1", true); //$NON-NLS-1$
}
- public void testIsXMLQueryFail1() throws Exception {
+ @Test public void testIsXMLQueryFail1() throws Exception {
helpTestIsXMLQuery("SELECT * FROM xmltest.doc1, xmltest.doc2", false); //$NON-NLS-1$
}
- public void testIsXMLQueryFail2() throws Exception {
+ @Test public void testIsXMLQueryFail2() throws Exception {
helpTestIsXMLQuery("SELECT * FROM xmltest.doc1, pm1.g1", false); //$NON-NLS-1$
}
- public void testIsXMLQueryFail3() throws Exception {
+ @Test public void testIsXMLQueryFail3() throws Exception {
helpTestIsXMLQuery("SELECT * FROM pm1.g1, xmltest.doc1", false); //$NON-NLS-1$
}
@@ -2396,7 +2392,7 @@
* "docA" is ambiguous as there exist two documents called
* xmlTest2.docA and xmlTest3.docA. Defect 11479.
*/
- public void testIsXMLQueryFail4() throws Exception {
+ @Test public void testIsXMLQueryFail4() throws Exception {
Query query = (Query) helpParse("SELECT * FROM docA"); //$NON-NLS-1$
try {
@@ -2407,7 +2403,7 @@
}
}
- public void testStringConversion1() {
+ @Test public void testStringConversion1() {
// Expected left expression
ElementSymbol e1 = new ElementSymbol("pm3.g1.e2"); //$NON-NLS-1$
e1.setType(DataTypeManager.DefaultDataClasses.DATE);
@@ -2443,7 +2439,7 @@
assertEquals("Did not match expected criteria", expected, actual); //$NON-NLS-1$
}
- public void testStringConversion2() {
+ @Test public void testStringConversion2() {
// Expected left expression
ElementSymbol e1 = new ElementSymbol("pm3.g1.e2"); //$NON-NLS-1$
e1.setType(DataTypeManager.DefaultDataClasses.DATE);
@@ -2480,7 +2476,7 @@
}
// special test for both sides are String
- public void testStringConversion3() {
+ @Test public void testStringConversion3() {
// Expected left expression
ElementSymbol e1 = new ElementSymbol("pm3.g1.e1"); //$NON-NLS-1$
e1.setType(DataTypeManager.DefaultDataClasses.STRING);
@@ -2506,7 +2502,7 @@
assertEquals("Did not match expected criteria", expected, actual); //$NON-NLS-1$
}
- public void testDateToTimestampConversion_defect9747() {
+ @Test public void testDateToTimestampConversion_defect9747() {
// Expected left expression
ElementSymbol e1 = new ElementSymbol("pm3.g1.e4"); //$NON-NLS-1$
e1.setType(DataTypeManager.DefaultDataClasses.TIMESTAMP);
@@ -2528,14 +2524,14 @@
assertEquals("Did not match expected criteria", expected, actual); //$NON-NLS-1$
}
- public void testFailedConversion_defect9725() throws Exception{
+ @Test public void testFailedConversion_defect9725() throws Exception{
helpResolveException("select * from pm3.g1 where pm3.g1.e4 > {b 'true'}", "Error Code:ERR.015.008.0027 Message:The expressions in this criteria are being compared but are of differing types (timestamp and boolean) and no implicit conversion is available: pm3.g1.e4 > TRUE"); //$NON-NLS-1$ //$NON-NLS-2$
}
/**
* Constants will now auto resolve if they are consistently representable in the target type
*/
- public void testDefect23257() throws Exception{
+ @Test public void testDefect23257() throws Exception{
StoredProcedure command = (StoredProcedure)helpResolve("EXEC pm5.vsp59()"); //$NON-NLS-1$
CommandStatement cs = (CommandStatement)((CreateUpdateProcedureCommand)command.getSubCommand()).getBlock().getStatements().get(1);
@@ -2545,7 +2541,7 @@
assertEquals(DataTypeManager.DefaultDataClasses.SHORT, ((Expression)insert.getValues().get(1)).getType());
}
- public void testLookupFunction() {
+ @Test public void testLookupFunction() {
String sql = "SELECT lookup('pm1.g1', 'e1', 'e2', e2) AS x, lookup('pm1.g1', 'e4', 'e3', e3) AS y FROM pm1.g1"; //$NON-NLS-1$
Query resolvedQuery = (Query) helpResolve(sql);
helpCheckFrom(resolvedQuery, new String[] { "pm1.g1" }); //$NON-NLS-1$
@@ -2561,39 +2557,39 @@
assertEquals("Wrong type for second symbol", Double.class, ((SingleElementSymbol)projSymbols.get(1)).getType()); //$NON-NLS-1$
}
- public void testLookupFunctionFailBadElement() {
+ @Test public void testLookupFunctionFailBadElement() {
String sql = "SELECT lookup('nosuch', 'elementhere', 'e2', e2) AS x FROM pm1.g1"; //$NON-NLS-1$
helpResolveException(sql);
}
- public void testLookupFunctionFailNotConstantArg1() {
+ @Test public void testLookupFunctionFailNotConstantArg1() {
String sql = "SELECT lookup(e1, 'e1', 'e2', e2) AS x FROM pm1.g1"; //$NON-NLS-1$
helpResolveException(sql);
}
- public void testLookupFunctionFailNotConstantArg2() {
+ @Test public void testLookupFunctionFailNotConstantArg2() {
String sql = "SELECT lookup('pm1.g1', e1, 'e2', e2) AS x FROM pm1.g1"; //$NON-NLS-1$
helpResolveException(sql);
}
- public void testLookupFunctionFailNotConstantArg3() {
+ @Test public void testLookupFunctionFailNotConstantArg3() {
String sql = "SELECT lookup('pm1.g1', 'e1', e1, e2) AS x FROM pm1.g1"; //$NON-NLS-1$
helpResolveException(sql);
}
- public void testLookupFunctionVirtualGroup() throws Exception {
+ @Test public void testLookupFunctionVirtualGroup() throws Exception {
String sql = "SELECT lookup('vm1.g1', 'e1', 'e2', e2) FROM vm1.g1 "; //$NON-NLS-1$
Query command = (Query) helpParse(sql);
QueryResolver.resolveCommand(command, FakeMetadataFactory.example1Cached());
}
- public void testLookupFunctionPhysicalGroup() throws Exception {
+ @Test public void testLookupFunctionPhysicalGroup() throws Exception {
String sql = "SELECT lookup('pm1.g1', 'e1', 'e2', e2) FROM pm1.g1 "; //$NON-NLS-1$
Query command = (Query) helpParse(sql);
QueryResolver.resolveCommand(command, FakeMetadataFactory.example1Cached());
}
- public void testLookupFunctionFailBadKeyElement() throws Exception {
+ @Test public void testLookupFunctionFailBadKeyElement() throws Exception {
String sql = "SELECT lookup('pm1.g1', 'e1', 'x', e2) AS x, lookup('pm1.g1', 'e4', 'e3', e3) AS y FROM pm1.g1"; //$NON-NLS-1$
Command command = QueryParser.getQueryParser().parseCommand(sql);
try {
@@ -2605,7 +2601,7 @@
}
// special test for both sides are String
- public void testSetCriteriaCastFromExpression_9657() {
+ @Test public void testSetCriteriaCastFromExpression_9657() {
// parse
Criteria expected = null;
Criteria actual = null;
@@ -2631,89 +2627,89 @@
assertEquals("Did not match expected criteria", expected, actual); //$NON-NLS-1$
}
- public void testVirtualProcedure(){
+ @Test public void testVirtualProcedure(){
helpResolve("EXEC pm1.vsp1()"); //$NON-NLS-1$
}
- public void testVirtualProcedure2(){
+ @Test public void testVirtualProcedure2(){
helpResolve("EXEC pm1.vsp14()"); //$NON-NLS-1$
}
- public void testVirtualProcedurePartialParameterReference() {
+ @Test public void testVirtualProcedurePartialParameterReference() {
helpResolve("EXEC pm1.vsp58(5)"); //$NON-NLS-1$
}
//cursor starts with "#" Defect14924
- public void testVirtualProcedureInvalid1(){
+ @Test public void testVirtualProcedureInvalid1(){
helpResolveException("EXEC pm1.vsp32()","Cursor names cannot begin with \"#\" as that indicates the name of a temporary table: #mycursor."); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testVirtualProcedureWithOrderBy() {
+ @Test public void testVirtualProcedureWithOrderBy() {
helpResolve("EXEC pm1.vsp29()"); //$NON-NLS-1$
}
- public void testVirtualProcedureWithTempTableAndOrderBy() {
+ @Test public void testVirtualProcedureWithTempTableAndOrderBy() {
helpResolve("EXEC pm1.vsp33()"); //$NON-NLS-1$
}
- public void testVirtualProcedureWithConstAndOrderBy() {
+ @Test public void testVirtualProcedureWithConstAndOrderBy() {
helpResolve("EXEC pm1.vsp34()"); //$NON-NLS-1$
}
- public void testVirtualProcedureWithNoFromAndOrderBy() {
+ @Test public void testVirtualProcedureWithNoFromAndOrderBy() {
helpResolve("EXEC pm1.vsp28()"); //$NON-NLS-1$
}
/** select e1 from pm1.g1 where e2 BETWEEN 1000 AND 2000 */
- public void testBetween1(){
+ @Test public void testBetween1(){
String sql = "select e1 from pm1.g1 where e2 BETWEEN 1000 AND 2000"; //$NON-NLS-1$
helpResolve(sql);
}
/** select e1 from pm1.g1 where e2 NOT BETWEEN 1000 AND 2000 */
- public void testBetween2(){
+ @Test public void testBetween2(){
String sql = "select e1 from pm1.g1 where e2 NOT BETWEEN 1000 AND 2000"; //$NON-NLS-1$
helpResolve(sql);
}
/** select e2 from pm1.g1 where e4 BETWEEN 1000 AND e2 */
- public void testBetween3(){
+ @Test public void testBetween3(){
String sql = "select e2 from pm1.g1 where e4 BETWEEN 1000 AND e2"; //$NON-NLS-1$
helpResolve(sql);
}
/** select e2 from pm1.g1 where e2 BETWEEN 1000 AND e4 */
- public void testBetween4(){
+ @Test public void testBetween4(){
String sql = "select e2 from pm1.g1 where e2 BETWEEN 1000 AND e4"; //$NON-NLS-1$
helpResolve(sql);
}
/** select e1 from pm1.g1 where 1000 BETWEEN e1 AND e2 */
- public void testBetween5(){
+ @Test public void testBetween5(){
String sql = "select e1 from pm1.g1 where 1000 BETWEEN e1 AND e2"; //$NON-NLS-1$
helpResolve(sql);
}
/** select e1 from pm1.g1 where 1000 BETWEEN e2 AND e1 */
- public void testBetween6(){
+ @Test public void testBetween6(){
String sql = "select e1 from pm1.g1 where 1000 BETWEEN e2 AND e1"; //$NON-NLS-1$
helpResolve(sql);
}
/** select e1 from pm3.g1 where e2 BETWEEN e3 AND e4 */
- public void testBetween7(){
+ @Test public void testBetween7(){
String sql = "select e1 from pm3.g1 where e2 BETWEEN e3 AND e4"; //$NON-NLS-1$
helpResolve(sql);
}
/** select pm3.g1.e1 from pm3.g1, pm3.g2 where pm3.g1.e4 BETWEEN pm3.g1.e2 AND pm3.g2.e2 */
- public void testBetween8(){
+ @Test public void testBetween8(){
String sql = "select pm3.g1.e1 from pm3.g1, pm3.g2 where pm3.g1.e4 BETWEEN pm3.g1.e2 AND pm3.g2.e2"; //$NON-NLS-1$
helpResolve(sql);
}
/** select e1 from pm1.g1 where e2 = any (select e2 from pm4.g1) */
- public void testCompareSubQuery1(){
+ @Test public void testCompareSubQuery1(){
String sql = "select e1 from pm1.g1 where e2 = any (select e2 from pm4.g1)"; //$NON-NLS-1$
Query outerQuery = (Query) this.helpResolveSubquery(sql, new String[0]);
@@ -2734,128 +2730,128 @@
}
/** select e1 from pm1.g1 where e2 = all (select e2 from pm4.g1) */
- public void testCompareSubQuery2(){
+ @Test public void testCompareSubQuery2(){
String sql = "select e1 from pm1.g1 where e2 = all (select e2 from pm4.g1)"; //$NON-NLS-1$
this.helpResolveSubquery(sql, new String[0]);
}
/** select e1 from pm1.g1 where e2 < (select e2 from pm4.g1 where e1 = '3') */
- public void testCompareSubQuery3(){
+ @Test public void testCompareSubQuery3(){
String sql = "select e1 from pm1.g1 where e2 < (select e2 from pm4.g1 where e1 = '3')"; //$NON-NLS-1$
this.helpResolveSubquery(sql, new String[0]);
}
/** select e1 from pm1.g1 where e2 < (select e2 from pm4.g1 where e1 = '3') */
- public void testCompareSubQueryImplicitConversion(){
+ @Test public void testCompareSubQueryImplicitConversion(){
String sql = "select e1 from pm1.g1 where e1 < (select e2 from pm4.g1 where e1 = '3')"; //$NON-NLS-1$
this.helpResolveSubquery(sql, new String[0]);
}
- public void testExistsSubQuery(){
+ @Test public void testExistsSubQuery(){
String sql = "select e1 from pm1.g1 where exists (select e2 from pm4.g1)"; //$NON-NLS-1$
this.helpResolveSubquery(sql, new String[0]);
}
- public void testExistsSubQuery2(){
+ @Test public void testExistsSubQuery2(){
String sql = "select e1 from pm1.g1 where exists (select e1, e2 from pm4.g1)"; //$NON-NLS-1$
this.helpResolveSubquery(sql, new String[0]);
}
- public void testScalarSubQueryInSelect(){
+ @Test public void testScalarSubQueryInSelect(){
String sql = "select e1, (select e2 from pm4.g1 where e1 = '3') from pm1.g1"; //$NON-NLS-1$
this.helpResolveSubquery(sql, new String[0]);
}
- public void testScalarSubQueryInSelect2(){
+ @Test public void testScalarSubQueryInSelect2(){
String sql = "select (select e2 from pm4.g1 where e1 = '3'), e1 from pm1.g1"; //$NON-NLS-1$
this.helpResolveSubquery(sql, new String[0]);
}
- public void testScalarSubQueryInSelectWithAlias(){
+ @Test public void testScalarSubQueryInSelectWithAlias(){
String sql = "select e1, (select e2 from pm4.g1 where e1 = '3') as X from pm1.g1"; //$NON-NLS-1$
this.helpResolveSubquery(sql, new String[0]);
}
- public void testSelectWithNoFrom() {
+ @Test public void testSelectWithNoFrom() {
String sql = "SELECT 5"; //$NON-NLS-1$
helpResolve(sql);
}
- public void testSelectWithNoFrom_Alias() {
+ @Test public void testSelectWithNoFrom_Alias() {
String sql = "SELECT 5 AS INTKEY"; //$NON-NLS-1$
helpResolve(sql);
}
- public void testSelectWithNoFrom_Alias_OrderBy() {
+ @Test public void testSelectWithNoFrom_Alias_OrderBy() {
String sql = "SELECT 5 AS INTKEY ORDER BY INTKEY"; //$NON-NLS-1$
helpResolve(sql);
}
- public void testSubqueryCorrelatedInCriteria(){
+ @Test public void testSubqueryCorrelatedInCriteria(){
String sql = "select e2 from pm1.g1 where e2 = all (select e2 from pm4.g1 where pm1.g1.e1 = pm4.g1.e1)"; //$NON-NLS-1$
this.helpResolveSubquery(sql, new String[]{"pm1.g1.e1"}); //$NON-NLS-1$
}
- public void testSubqueryCorrelatedInCriteria2(){
+ @Test public void testSubqueryCorrelatedInCriteria2(){
String sql = "select e1 from pm1.g1 where e2 = all (select e2 from pm4.g1 where pm1.g1.e1 = e1)"; //$NON-NLS-1$
this.helpResolveSubquery(sql, new String[]{"pm1.g1.e1"}); //$NON-NLS-1$
}
- public void testSubqueryCorrelatedInCriteria3(){
+ @Test public void testSubqueryCorrelatedInCriteria3(){
String sql = "select e1 from pm1.g1 X where e2 = all (select e2 from pm4.g1 where X.e1 = pm4.g1.e1)"; //$NON-NLS-1$
this.helpResolveSubquery(sql, new String[]{"X.e1"}); //$NON-NLS-1$
}
- public void testSubqueryCorrelatedInCriteria4(){
+ @Test public void testSubqueryCorrelatedInCriteria4(){
String sql = "select e2 from pm1.g1 X where e2 in (select e2 from pm1.g1 Y where X.e1 = Y.e1)"; //$NON-NLS-1$
this.helpResolveSubquery(sql, new String[]{"X.e1"}); //$NON-NLS-1$
}
- public void testSubqueryCorrelatedInCriteria5(){
+ @Test public void testSubqueryCorrelatedInCriteria5(){
String sql = "select e1 from pm1.g1 X where e2 = all (select e2 from pm1.g1 Y where X.e1 = e1)"; //$NON-NLS-1$
this.helpResolveSubquery(sql, new String[]{"X.e1"}); //$NON-NLS-1$
}
/* 'e5' is only in pm4.g2 */
- public void testSubqueryCorrelatedInCriteria6(){
+ @Test public void testSubqueryCorrelatedInCriteria6(){
String sql = "select e1 from pm4.g2 where e2 = some (select e2 from pm4.g1 where e5 = e1)"; //$NON-NLS-1$
this.helpResolveSubquery(sql, new String[]{"pm4.g2.e5"}); //$NON-NLS-1$
}
/* 'e5' is only in pm4.g2 */
- public void testSubqueryCorrelatedInCriteria7(){
+ @Test public void testSubqueryCorrelatedInCriteria7(){
String sql = "select e1 from pm4.g2 where exists (select e2 from pm4.g1 where e5 = e1)"; //$NON-NLS-1$
this.helpResolveSubquery(sql, new String[]{"pm4.g2.e5"}); //$NON-NLS-1$
}
- public void testSubqueryCorrelatedInHaving(){
+ @Test public void testSubqueryCorrelatedInHaving(){
String sql = "select e1, e2 from pm4.g2 group by e2 having e2 in (select e2 from pm4.g1 where e5 = e1)"; //$NON-NLS-1$
this.helpResolveSubquery(sql, new String[]{"pm4.g2.e5"}); //$NON-NLS-1$
}
- public void testSubqueryCorrelatedInHaving2(){
+ @Test public void testSubqueryCorrelatedInHaving2(){
String sql = "select e1, e2 from pm4.g2 group by e2 having e2 <= all (select e2 from pm4.g1 where e5 = e1)"; //$NON-NLS-1$
this.helpResolveSubquery(sql, new String[]{"pm4.g2.e5"}); //$NON-NLS-1$
}
/* 'e5' is only in pm4.g2 */
- public void testSubqueryCorrelatedInSelect(){
+ @Test public void testSubqueryCorrelatedInSelect(){
String sql = "select e1, (select e2 from pm4.g1 where e5 = e1) from pm4.g2"; //$NON-NLS-1$
this.helpResolveSubquery(sql, new String[]{"pm4.g2.e5"}); //$NON-NLS-1$
}
- public void testSubqueryCorrelatedInSelect2(){
+ @Test public void testSubqueryCorrelatedInSelect2(){
String sql = "select e1, (select e2 from pm4.g1 where pm4.g2.e5 = e1) from pm4.g2"; //$NON-NLS-1$
this.helpResolveSubquery(sql, new String[]{"pm4.g2.e5"}); //$NON-NLS-1$
}
- public void testSubqueryCorrelatedInSelect3(){
+ @Test public void testSubqueryCorrelatedInSelect3(){
String sql = "select e1, (select e2 from pm4.g1 Y where X.e5 = Y.e1) from pm4.g2 X"; //$NON-NLS-1$
this.helpResolveSubquery(sql, new String[]{"X.e5"}); //$NON-NLS-1$
}
/* 'e5' is only in pm4.g2 */
- public void testNestedCorrelatedSubqueries(){
+ @Test public void testNestedCorrelatedSubqueries(){
String sql = "select e1, (select e2 from pm1.g1 where e2 = all (select e2 from pm4.g1 where e5 = e1)) from pm4.g2"; //$NON-NLS-1$
this.helpResolveSubquery(sql, new String[]{"pm4.g2.e5"}); //$NON-NLS-1$
}
@@ -2863,7 +2859,7 @@
/**
* 'e5' is in pm4.g2, so it will be resolved to the group aliased as 'Y'
*/
- public void testNestedCorrelatedSubqueries2(){
+ @Test public void testNestedCorrelatedSubqueries2(){
String sql = "select e1, (select e2 from pm4.g2 Y where e2 = all (select e2 from pm4.g1 where e5 = e1)) from pm4.g2 X"; //$NON-NLS-1$
this.helpResolveSubquery(sql, new String[]{"Y.e5"}); //$NON-NLS-1$
}
@@ -2871,7 +2867,7 @@
/**
* 'e5' is in pm4.g2; it will be resolved to the group aliased as 'X'
*/
- public void testNestedCorrelatedSubqueries3(){
+ @Test public void testNestedCorrelatedSubqueries3(){
String sql = "select e1, (select e2 from pm4.g2 Y where e2 = all (select e2 from pm4.g1 where X.e5 = e1)) from pm4.g2 X"; //$NON-NLS-1$
this.helpResolveSubquery(sql, new String[]{"X.e5"}); //$NON-NLS-1$
}
@@ -2879,17 +2875,17 @@
/**
* 'e5' is in X and Y
*/
- public void testNestedCorrelatedSubqueries4(){
+ @Test public void testNestedCorrelatedSubqueries4(){
String sql = "select X.e2 from pm4.g2 Y, pm4.g2 X where X.e2 = all (select e2 from pm4.g1 where e5 = e1)"; //$NON-NLS-1$
helpResolveException(sql, metadata, "Element \"e5\" is ambiguous, it exists in two or more groups."); //$NON-NLS-1$
}
- public void testSubqueryCorrelatedInCriteriaVirtualLayer(){
+ @Test public void testSubqueryCorrelatedInCriteriaVirtualLayer(){
String sql = "select e2 from vm1.g1 where e2 = all (select e2 from vm1.g2 where vm1.g1.e1 = vm1.g2.e1)"; //$NON-NLS-1$
this.helpResolveSubquery(sql, new String[]{"vm1.g1.e1"}); //$NON-NLS-1$
}
- public void testSubqueryCorrelatedInCriteriaVirtualLayer2(){
+ @Test public void testSubqueryCorrelatedInCriteriaVirtualLayer2(){
String sql = "select e2 from vm1.g1 X where e2 = all (select e2 from vm1.g2 where X.e1 = vm1.g2.e1)"; //$NON-NLS-1$
this.helpResolveSubquery(sql, new String[]{"X.e1"}); //$NON-NLS-1$
}
@@ -2898,7 +2894,7 @@
* Although this query makes no sense, the "e1" in the nested criteria is
* NOT a correlated reference
*/
- public void testSubqueryNonCorrelatedInCriteria(){
+ @Test public void testSubqueryNonCorrelatedInCriteria(){
String sql = "select e2 from pm1.g1 where e2 = all (select e2 from pm4.g1)"; //$NON-NLS-1$
this.helpResolveSubquery(sql, new String[0]);
}
@@ -2907,7 +2903,7 @@
* Although this query makes no sense, the "e1" in the nested criteria is
* NOT a correlated reference
*/
- public void testSubqueryNonCorrelatedInCriteria2(){
+ @Test public void testSubqueryNonCorrelatedInCriteria2(){
String sql = "SELECT e1 FROM pm1.g1 WHERE e2 IN (SELECT e2 FROM pm2.g1 WHERE e1 IN (SELECT e1 FROM pm1.g1))"; //$NON-NLS-1$
this.helpResolveSubquery(sql, new String[0]);
}
@@ -2916,7 +2912,7 @@
* Although this query makes no sense, the "e1" in the nested criteria is
* NOT a correlated reference
*/
- public void testSubqueryNonCorrelatedInCriteria3(){
+ @Test public void testSubqueryNonCorrelatedInCriteria3(){
String sql = "SELECT e2 FROM pm2.g1 WHERE e1 IN (SELECT e1 FROM pm1.g1)"; //$NON-NLS-1$
this.helpResolveSubquery(sql, new String[0]);
}
@@ -2926,7 +2922,7 @@
* group in metadata, not the temporary child metadata group defined by the
* outer query.
*/
- public void testSubquery_defect10090(){
+ @Test public void testSubquery_defect10090(){
String sql = "select pm1.g1.e1 from pm1.g1 where pm1.g1.e2 in (select pm1.g1.e2 from pm1.g1 where pm1.g1.e4 = 2.0)"; //$NON-NLS-1$
this.helpResolveSubquery(sql, new String[0]);
}
@@ -2934,18 +2930,18 @@
/**
* Workaround is to alias group in FROM of outer query (aliasing subquery group doesn't work)
*/
- public void testSubquery_defect10090Workaround(){
+ @Test public void testSubquery_defect10090Workaround(){
String sql = "select X.e1 from pm1.g1 X where X.e2 in (select pm1.g1.e2 from pm1.g1 where pm1.g1.e4 = 2.0)"; //$NON-NLS-1$
this.helpResolveSubquery(sql, new String[0]);
}
- public void testSubquery2_defect10090(){
+ @Test public void testSubquery2_defect10090(){
String sql = "select pm1.g1.e1 from pm1.g1 where pm1.g1.e2 in (select X.e2 from pm1.g1 X where X.e4 = 2.0)"; //$NON-NLS-1$
this.helpResolveSubquery(sql, new String[0]);
}
/** test jdbc USER method */
- public void testUser() {
+ @Test public void testUser() {
//String sql = "select intkey from SmallA where user() = 'bqt2'";
// Expected left expression
@@ -2968,14 +2964,14 @@
assertEquals("Did not match expected criteria", expected, actual); //$NON-NLS-1$
}
- public void testCaseExpression1() {
+ @Test public void testCaseExpression1() {
String sql = "SELECT e1, CASE e2 WHEN 0 THEN 20 WHEN 1 THEN 21 WHEN 2 THEN 500 END AS testElement FROM pm1.g1" //$NON-NLS-1$
+" WHERE e1 = CASE WHEN e2 = 0 THEN 'a' WHEN e2 = 1 THEN 'b' ELSE 'c' END"; //$NON-NLS-1$
helpResolve(sql);
}
- public void testCaseExpression2() {
+ @Test public void testCaseExpression2() {
// nested case expressions
String sql = "SELECT CASE e2" + //$NON-NLS-1$
" WHEN 0 THEN CASE e1 " + //$NON-NLS-1$
@@ -2989,13 +2985,13 @@
helpResolve(sql);
}
- public void testCaseExpressionWithNestedFunction() {
+ @Test public void testCaseExpressionWithNestedFunction() {
String sql = "SELECT CASE WHEN e2 < 0 THEN abs(CASE WHEN e2 < 0 THEN -1 ELSE e2 END)" + //$NON-NLS-1$
" ELSE e2 END FROM pm1.g1"; //$NON-NLS-1$
helpResolve(sql);
}
- public void testFunctionWithNestedCaseExpression() {
+ @Test public void testFunctionWithNestedCaseExpression() {
String sql = "SELECT abs(CASE e1 WHEN 'testString1' THEN -13" + //$NON-NLS-1$
" WHEN 'testString2' THEN -5" + //$NON-NLS-1$
" ELSE abs(e2)" + //$NON-NLS-1$
@@ -3003,12 +2999,12 @@
helpResolve(sql);
}
- public void testDefect10809(){
+ @Test public void testDefect10809(){
String sql = "select * from LOB_TESTING_ONE where CLOB_COLUMN LIKE '%fff%'"; //$NON-NLS-1$
helpResolve(helpParse(sql), FakeMetadataFactory.exampleLOB(), AnalysisRecord.createNonRecordingRecord());
}
- public void testNonAutoConversionOfLiteralIntegerToShort() throws Exception {
+ @Test public void testNonAutoConversionOfLiteralIntegerToShort() throws Exception {
// parse
Query command = (Query) QueryParser.getQueryParser().parseCommand("SELECT intkey FROM bqt1.smalla WHERE shortvalue = 5"); //$NON-NLS-1$
@@ -3022,7 +3018,7 @@
assertEquals("Sql is incorrect after resolving", "SELECT intkey FROM bqt1.smalla WHERE shortvalue = 5", command.toString()); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testNonAutoConversionOfLiteralIntegerToShort2() throws Exception {
+ @Test public void testNonAutoConversionOfLiteralIntegerToShort2() throws Exception {
// parse
Query command = (Query) QueryParser.getQueryParser().parseCommand("SELECT intkey FROM bqt1.smalla WHERE 5 = shortvalue"); //$NON-NLS-1$
@@ -3036,42 +3032,42 @@
assertEquals("Sql is incorrect after resolving", "SELECT intkey FROM bqt1.smalla WHERE 5 = shortvalue", command.toString()); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testAliasedOrderBy() {
+ @Test public void testAliasedOrderBy() {
Query resolvedQuery = (Query) helpResolve("SELECT pm1.g1.e1 as y FROM pm1.g1 ORDER BY y"); //$NON-NLS-1$
helpCheckFrom(resolvedQuery, new String[] { "pm1.g1" }); //$NON-NLS-1$
helpCheckSelect(resolvedQuery, new String[] { "y" }); //$NON-NLS-1$
}
- public void testUnaliasedOrderBySucceeds() {
+ @Test public void testUnaliasedOrderBySucceeds() {
helpResolve("SELECT pm1.g1.e1 a, pm1.g1.e1 b FROM pm1.g1 ORDER BY pm1.g1.e1"); //$NON-NLS-1$
}
/**
* the group g1 is not known to the order by clause of a union
*/
- public void testUnionOrderByFail() {
+ @Test public void testUnionOrderByFail() {
helpResolveException("SELECT pm1.g1.e1 FROM pm1.g1 UNION SELECT pm1.g2.e1 FROM pm1.g2 ORDER BY g1.e1", "Error Code:ERR.015.008.0043 Message:Element 'g1.e1' in ORDER BY was not found in SELECT clause."); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testUnionOrderByFail1() {
+ @Test public void testUnionOrderByFail1() {
helpResolveException("SELECT pm1.g1.e1 FROM pm1.g1 UNION SELECT pm1.g2.e1 FROM pm1.g2 ORDER BY pm1.g1.e1", "Error Code:ERR.015.008.0043 Message:Element 'pm1.g1.e1' in ORDER BY was not found in SELECT clause."); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testOrderByPartiallyQualified() {
+ @Test public void testOrderByPartiallyQualified() {
helpResolve("SELECT pm1.g1.e1 FROM pm1.g1 ORDER BY g1.e1"); //$NON-NLS-1$
}
/**
* the group g1 is not known to the order by clause of a union
*/
- public void testUnionOrderBy() {
+ @Test public void testUnionOrderBy() {
helpResolve("SELECT pm1.g1.e1 FROM pm1.g1 UNION SELECT pm1.g2.e1 FROM pm1.g2 ORDER BY e1"); //$NON-NLS-1$
}
/**
* Test for defect 12087 - Insert with implicit conversion from integer to short
*/
- public void testImplConversionBetweenIntAndShort() throws Exception {
+ @Test public void testImplConversionBetweenIntAndShort() throws Exception {
Command command = QueryParser.getQueryParser().parseCommand("Insert into pm1.g1(e1) Values(convert(100, short))"); //$NON-NLS-1$
FakeMetadataFacade metadata = FakeMetadataFactory.example6();
@@ -3104,14 +3100,14 @@
return new FakeMetadataFacade(store);
}
- public void testDefect12968_union() {
+ @Test public void testDefect12968_union() {
helpResolve(
helpParse("SELECT myModel.myTable.myColumn AS myColumn from myModel.myTable UNION " + //$NON-NLS-1$
"SELECT convert(null, string) AS myColumn From myModel2.mySchema.myTable2"), //$NON-NLS-1$
example_12968(), AnalysisRecord.createNonRecordingRecord());
}
- public void testDefect13029_CorrectlySetUpdateProcedureTempGroupIDs() {
+ @Test public void testDefect13029_CorrectlySetUpdateProcedureTempGroupIDs() {
StringBuffer proc = new StringBuffer("CREATE VIRTUAL PROCEDURE") //$NON-NLS-1$
.append("\nBEGIN") //$NON-NLS-1$
.append("\nDECLARE string var1;") //$NON-NLS-1$
@@ -3158,7 +3154,7 @@
}
- public void testUnionQueryWithNull() throws Exception{
+ @Test public void testUnionQueryWithNull() throws Exception{
helpResolve("SELECT NULL, e2 FROM pm1.g2 UNION ALL SELECT e1, e2 FROM pm1.g3"); //$NON-NLS-1$
helpResolve("SELECT e1, e2 FROM pm1.g1 UNION ALL SELECT NULL, e2 FROM pm1.g2 UNION ALL SELECT e1, e2 FROM pm1.g3"); //$NON-NLS-1$
helpResolve("SELECT e1, NULL FROM pm1.g2 UNION ALL SELECT e1, e2 FROM pm1.g3"); //$NON-NLS-1$
@@ -3167,7 +3163,7 @@
helpResolve("SELECT e1, NULL as e2 FROM pm1.g1 UNION ALL SELECT e1, e3 FROM pm1.g2"); //$NON-NLS-1$
}
- public void testUnionQueryWithDiffTypes() throws Exception{
+ @Test public void testUnionQueryWithDiffTypes() throws Exception{
helpResolve("SELECT e1, e3 FROM pm1.g1 UNION ALL SELECT e2, e3 FROM pm1.g2"); //$NON-NLS-1$
helpResolve("SELECT e1, e3 FROM pm1.g1 UNION ALL SELECT e2, e3 FROM pm1.g2 UNION ALL SELECT NULL, e3 FROM pm1.g2"); //$NON-NLS-1$
helpResolve("SELECT e1, e3 FROM pm1.g1 UNION ALL SELECT e3, e3 FROM pm1.g2 UNION ALL SELECT NULL, e3 FROM pm1.g2"); //$NON-NLS-1$
@@ -3182,30 +3178,30 @@
helpResolve("select e2 from pm3.g1 union select e3 from pm3.g1 union select e4 from pm3.g1"); //$NON-NLS-1$
}
- public void testUnionQueryWithDiffTypesFails() throws Exception{
+ @Test public void testUnionQueryWithDiffTypesFails() throws Exception{
helpResolveException("SELECT e1 FROM pm1.g1 UNION (SELECT e2 FROM pm1.g2 UNION SELECT e2 from pm1.g1 order by e2)", "The Expression e2 used in a nested UNION ORDER BY clause cannot be implicitly converted from type integer to type string."); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testNestedUnionQueryWithNull() throws Exception{
+ @Test public void testNestedUnionQueryWithNull() throws Exception{
SetQuery command = (SetQuery)helpResolve("SELECT e2, e3 FROM pm1.g1 UNION (SELECT null, e3 FROM pm1.g2 UNION SELECT null, e3 from pm1.g1)"); //$NON-NLS-1$
assertEquals(DataTypeManager.DefaultDataClasses.INTEGER, ((SingleElementSymbol)command.getProjectedSymbols().get(0)).getType());
}
- public void testSelectIntoNoFrom() {
+ @Test public void testSelectIntoNoFrom() {
helpResolve("SELECT 'a', 19, {b'true'}, 13.999 INTO pm1.g1"); //$NON-NLS-1$
}
- public void testSelectInto() {
+ @Test public void testSelectInto() {
helpResolve("SELECT e1, e2, e3, e4 INTO pm1.g1 FROM pm1.g2"); //$NON-NLS-1$
}
- public void testSelectIntoTempGroup() {
+ @Test public void testSelectIntoTempGroup() {
helpResolve("SELECT 'a', 19, {b'true'}, 13.999 INTO #myTempTable"); //$NON-NLS-1$
helpResolve("SELECT e1, e2, e3, e4 INTO #myTempTable FROM pm1.g1"); //$NON-NLS-1$
}
- public void testSelectIntoInProcNoFrom() {
+ @Test public void testSelectIntoInProcNoFrom() {
StringBuffer procedure = new StringBuffer("CREATE PROCEDURE ") //$NON-NLS-1$
.append("BEGIN\n") //$NON-NLS-1$
.append("SELECT 'a', 19, {b'true'}, 13.999 INTO pm1.g1;\n") //$NON-NLS-1$
@@ -3226,7 +3222,7 @@
FakeMetadataObject.Props.UPDATE_PROCEDURE);
}
- public void testSelectIntoInProc() {
+ @Test public void testSelectIntoInProc() {
StringBuffer procedure = new StringBuffer("CREATE PROCEDURE ") //$NON-NLS-1$
.append("BEGIN\n") //$NON-NLS-1$
.append("SELECT e1, e2, e3, e4 INTO pm1.g1 FROM pm1.g2;\n") //$NON-NLS-1$
@@ -3248,7 +3244,7 @@
}
//baseline test to ensure that a declare assignment cannot contain the declared variable
- public void testDeclareStatement() {
+ @Test public void testDeclareStatement() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer VARIABLES.var1 = VARIABLES.var1;\n"; //$NON-NLS-1$
@@ -3260,7 +3256,7 @@
helpFailUpdateProcedure(procedure, userUpdateStr, FakeMetadataObject.Props.UPDATE_PROCEDURE);
}
- public void testDynamicIntoInProc() {
+ @Test public void testDynamicIntoInProc() {
String userUpdateStr = "UPDATE vm1.g1 SET e1='x'"; //$NON-NLS-1$
StringBuffer procedure = new StringBuffer("CREATE PROCEDURE ") //$NON-NLS-1$
@@ -3273,7 +3269,7 @@
FakeMetadataObject.Props.UPDATE_PROCEDURE);
}
- public void testDynamicStatement() {
+ @Test public void testDynamicStatement() {
String userUpdateStr = "UPDATE vm1.g1 SET e1='x'"; //$NON-NLS-1$
StringBuffer procedure = new StringBuffer("CREATE PROCEDURE ") //$NON-NLS-1$
@@ -3285,7 +3281,7 @@
FakeMetadataObject.Props.UPDATE_PROCEDURE);
}
- public void testDynamicStatementType() {
+ @Test public void testDynamicStatementType() {
String userUpdateStr = "UPDATE vm1.g1 SET e1='x'"; //$NON-NLS-1$
StringBuffer procedure = new StringBuffer("CREATE PROCEDURE ") //$NON-NLS-1$
@@ -3298,47 +3294,47 @@
}
//procedural relational mapping
- public void testProcInVirtualGroup1(){
+ @Test public void testProcInVirtualGroup1(){
String sql = "select e1 from pm1.vsp26 where param1=1 and param2='a'"; //$NON-NLS-1$
helpResolve(sql);
}
- public void testProcInVirtualGroup2(){
+ @Test public void testProcInVirtualGroup2(){
String sql = "select * from pm1.vsp26 as p where param1=1 and param2='a'"; //$NON-NLS-1$
helpResolve(sql);
}
- public void testProcInVirtualGroup3(){
+ @Test public void testProcInVirtualGroup3(){
String sql = "SELECT P.e1 as ve3 FROM pm1.vsp26 as P, pm1.g2 where P.e1=g2.e1 and param1=1 and param2='a'"; //$NON-NLS-1$
helpResolve(sql);
}
- public void testProcInVirtualGroup4(){
+ @Test public void testProcInVirtualGroup4(){
String sql = "SELECT P.e1 as ve3 FROM pm1.vsp26 as P, vm1.g1 where P.e1=g1.e1 and param1=1 and param2='a'"; //$NON-NLS-1$
helpResolve(sql);
}
- public void testProcInVirtualGroup5(){
+ @Test public void testProcInVirtualGroup5(){
String sql = "SELECT * FROM (SELECT p.* FROM pm1.vsp26 as P, vm1.g1 where P.e1=g1.e1) x where param1=1 and param2='a'"; //$NON-NLS-1$
helpResolve(sql);
}
- public void testProcInVirtualGroup6(){
+ @Test public void testProcInVirtualGroup6(){
String sql = "SELECT P.e1 as ve3, P.e2 as ve4 FROM pm1.vsp26 as P where param1=1 and param2='a'"; //$NON-NLS-1$
helpResolve(sql);
}
- public void testProcInVirtualGroup7(){
+ @Test public void testProcInVirtualGroup7(){
String sql = "SELECT P.e2 as ve3, P.e1 as ve4 FROM pm1.vsp47 as P where param1=1 and param2='a'"; //$NON-NLS-1$
helpResolve(sql);
}
- public void testProcInVirtualGroup7a(){
+ @Test public void testProcInVirtualGroup7a(){
String sql = "SELECT P.e2 as ve3, P.e1 as ve4 FROM pm1.vsp47 as P where param1=1"; //$NON-NLS-1$
helpResolve(sql);
}
- public void testMaterializedTransformation() {
+ @Test public void testMaterializedTransformation() {
String userSql = "SELECT MATVIEW.E1 FROM MATVIEW"; //$NON-NLS-1$
QueryMetadataInterface metadata = FakeMetadataFactory.exampleMaterializedView();
@@ -3366,7 +3362,7 @@
}
- public void testMaterializedTransformationLoading() {
+ @Test public void testMaterializedTransformationLoading() {
String userSql = "SELECT MATVIEW.E1 INTO MatTable.MatStage FROM MATVIEW"; //$NON-NLS-1$
QueryMetadataInterface metadata = FakeMetadataFactory.exampleMaterializedView();
@@ -3392,7 +3388,7 @@
}
- public void testMaterializedTransformationNoCache() {
+ @Test public void testMaterializedTransformationNoCache() {
String userSql = "SELECT MATVIEW.E1 FROM MATVIEW OPTION NOCACHE MatView.MatView"; //$NON-NLS-1$
QueryMetadataInterface metadata = FakeMetadataFactory.exampleMaterializedView();
@@ -3416,7 +3412,7 @@
}
//related to defect 14423
- public void testMaterializedTransformationNoCache2() {
+ @Test public void testMaterializedTransformationNoCache2() {
String userSql = "SELECT MATVIEW.E1 FROM MATVIEW OPTION NOCACHE"; //$NON-NLS-1$
QueryMetadataInterface metadata = FakeMetadataFactory.exampleMaterializedView();
@@ -3439,7 +3435,7 @@
assertEquals("Expected catagory mat view", ((QueryAnnotation)annotations.iterator().next()).getCategory(), QueryAnnotation.MATERIALIZED_VIEW); //$NON-NLS-1$
}
- public void testNoCacheInTransformation(){
+ @Test public void testNoCacheInTransformation(){
String userSql = "SELECT VGROUP.E1 FROM VGROUP"; //$NON-NLS-1$
QueryMetadataInterface metadata = FakeMetadataFactory.exampleMaterializedView();
@@ -3454,7 +3450,7 @@
assertEquals("Commands don't match", expectedTransformationSql, transCommand.toString()); //$NON-NLS-1$
}
- public void testProcParamComparison_defect13653() {
+ @Test public void testProcParamComparison_defect13653() {
String userSql = "SELECT * FROM (EXEC mmspTest1.MMSP5('a')) AS a, (EXEC mmsptest1.mmsp6('b')) AS b"; //$NON-NLS-1$
QueryMetadataInterface metadata = FakeMetadataFactory.exampleBQTCached();
@@ -3484,12 +3480,12 @@
assertTrue("Params should be not equal", ! params[0].equals(params[1])); //$NON-NLS-1$
}
- public void testXpathValueValid_defect15088() {
+ @Test public void testXpathValueValid_defect15088() {
String userSql = "SELECT xpathValue('<?xml version=\"1.0\" encoding=\"utf-8\" ?><a><b><c>test</c></b></a>', 'a/b/c')"; //$NON-NLS-1$
helpResolve(userSql, FakeMetadataFactory.exampleBQTCached(), AnalysisRecord.createNonRecordingRecord());
}
- public void testXpathValueInvalid_defect15088() throws Exception {
+ @Test public void testXpathValueInvalid_defect15088() throws Exception {
String userSql = "SELECT xpathValue('<?xml version=\"1.0\" encoding=\"utf-8\" ?><a><b><c>test</c></b></a>', '//*[local-name()=''bookName\"]')"; //$NON-NLS-1$
Command command = helpParse(userSql);
@@ -3501,7 +3497,7 @@
}
}
- public void testNullConstantInSelect() throws Exception {
+ @Test public void testNullConstantInSelect() throws Exception {
String userSql = "SELECT null as x"; //$NON-NLS-1$
Query query = (Query)helpParse(userSql);
@@ -3513,7 +3509,7 @@
assertEquals(DataTypeManager.DefaultDataClasses.STRING, symbol.getType());
}
- public void test11716() throws Exception {
+ @Test public void test11716() throws Exception {
String sql = "SELECT e1 FROM pm1.g1 where e1='1'"; //$NON-NLS-1$
Map externalMetadata = new HashMap();
GroupSymbol inputSet = new GroupSymbol("INPUT"); //$NON-NLS-1$
@@ -3527,7 +3523,7 @@
assertFalse(groups.contains(inputSet));
}
- public void testDefect15872() throws Exception {
+ @Test public void testDefect15872() throws Exception {
String sql = "CREATE VIRTUAL PROCEDURE " //$NON-NLS-1$
+ "BEGIN " //$NON-NLS-1$
+"SELECT * FROM pm1.g1 where model.table.param=e1; " //$NON-NLS-1$
@@ -3547,21 +3543,21 @@
assertNotNull("Input parameter does not have group", inElement.getGroupSymbol()); //$NON-NLS-1$
}
- public void testDefect16894_resolverException_1() {
+ @Test public void testDefect16894_resolverException_1() {
helpResolve("SELECT * FROM (SELECT * FROM Pm1.g1 AS Y) AS X"); //$NON-NLS-1$
}
- public void testDefect16894_resolverException_2() {
+ @Test public void testDefect16894_resolverException_2() {
helpResolve("SELECT * FROM (SELECT * FROM Pm1.g1) AS X"); //$NON-NLS-1$
}
- public void testDefect17385() throws Exception{
+ @Test public void testDefect17385() throws Exception{
String sql = "select e1 as x ORDER BY x"; //$NON-NLS-1$
helpResolveException(sql);
}
// Not support XML query as subquery
-// public void testDefect17743() {
+// @Test public void testDefect17743() {
// CompareCriteria expected = new CompareCriteria();
// ElementSymbol es = new ElementSymbol("node1"); //$NON-NLS-1$
// GroupSymbol gs = new GroupSymbol("doc1"); //$NON-NLS-1$
@@ -3576,12 +3572,12 @@
// }
- public void testValidFullElementNotInQueryGroups() {
+ @Test public void testValidFullElementNotInQueryGroups() {
helpResolveException("select pm1.g1.e1 FROM pm1.g1 g"); //$NON-NLS-1$
}
- public void testUnionInSubquery() {
+ @Test public void testUnionInSubquery() {
String sql = "SELECT StringKey FROM (SELECT BQT2.SmallB.StringKey FROM BQT2.SmallB union SELECT convert(BQT2.SmallB.FloatNum, string) FROM BQT2.SmallB) x"; //$NON-NLS-1$
// parse
@@ -3600,17 +3596,17 @@
}
}
- public void testCommandUpdatingCount1() throws Exception{
+ @Test public void testCommandUpdatingCount1() throws Exception{
Command command = helpResolve("SELECT * FROM pm1.g1 as x, pm1.g1 as y"); //$NON-NLS-1$
assertEquals(0, command.updatingModelCount(metadata));
}
- public void testCommandUpdatingCount2() throws Exception{
+ @Test public void testCommandUpdatingCount2() throws Exception{
Command command = helpResolve("SELECT * FROM doc1"); //$NON-NLS-1$
assertEquals(0, command.updatingModelCount(metadata));
}
- public void testCommandUpdating3() throws Exception{
+ @Test public void testCommandUpdating3() throws Exception{
StringBuffer procedure = new StringBuffer("CREATE PROCEDURE ") //$NON-NLS-1$
.append("BEGIN\n") //$NON-NLS-1$
.append("INSERT INTO pm1.g1 (e1) VALUES (input.e1);\n") //$NON-NLS-1$
@@ -3624,12 +3620,12 @@
assertEquals(2, command.updatingModelCount(metadata));
}
- public void testCommandUpdatingCount5() throws Exception{
+ @Test public void testCommandUpdatingCount5() throws Exception{
Command command = helpResolve("SELECT pm1.g1.e1 FROM pm1.g1 UNION SELECT pm1.g2.e1 FROM pm1.g2 ORDER BY e1"); //$NON-NLS-1$
assertEquals(0, command.updatingModelCount(metadata));
}
- public void testCommandUpdatingCount6() throws Exception{
+ @Test public void testCommandUpdatingCount6() throws Exception{
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "if(INPUT.e1 = 10)\n"; //$NON-NLS-1$
@@ -3646,54 +3642,54 @@
}
/** case 3955 */
- public void testCommandUpdatingCountPhysicalInsert() throws Exception{
+ @Test public void testCommandUpdatingCountPhysicalInsert() throws Exception{
Command command = helpResolve("INSERT INTO pm1.g1 (e2) VALUES (666) "); //$NON-NLS-1$
assertEquals(1, command.updatingModelCount(metadata));
}
/** case 3955 */
- public void testCommandUpdatingCountVirtualInsert() throws Exception{
+ @Test public void testCommandUpdatingCountVirtualInsert() throws Exception{
Command command = helpResolve("INSERT INTO vm1.g1 (e2) VALUES (666) "); //$NON-NLS-1$
assertEquals(2, command.updatingModelCount(metadata));
}
/** case 3955 */
- public void testCommandUpdatingCountPhysicalUpdate() throws Exception{
+ @Test public void testCommandUpdatingCountPhysicalUpdate() throws Exception{
Command command = helpResolve("UPDATE pm1.g1 SET e2=667 WHERE e2=666"); //$NON-NLS-1$
assertEquals(1, command.updatingModelCount(metadata));
}
/** case 3955 */
- public void testCommandUpdatingCountVirtualUpdate() throws Exception{
+ @Test public void testCommandUpdatingCountVirtualUpdate() throws Exception{
Command command = helpResolve("UPDATE vm1.g1 SET e2=667 WHERE e2=666"); //$NON-NLS-1$
assertEquals(2, command.updatingModelCount(metadata));
}
/** case 3955 */
- public void testCommandUpdatingCountPhysicalDelete() throws Exception{
+ @Test public void testCommandUpdatingCountPhysicalDelete() throws Exception{
Command command = helpResolve("DELETE FROM pm1.g1 WHERE e2 = 666 "); //$NON-NLS-1$
assertEquals(1, command.updatingModelCount(metadata));
}
/** case 3955 */
- public void testCommandUpdatingCountVirtualDelete() throws Exception{
+ @Test public void testCommandUpdatingCountVirtualDelete() throws Exception{
Command command = helpResolve("DELETE FROM vm1.g37 WHERE e2 = 666 "); //$NON-NLS-1$
assertEquals(2, command.updatingModelCount(metadata));
}
- public void testCommandUpdatingCountEmbeddedExecs() throws Exception {
+ @Test public void testCommandUpdatingCountEmbeddedExecs() throws Exception {
Command command = helpResolve("SELECT * FROM pm1.g1 WHERE e1 IN ((select e1 from (EXEC pm1.sp1()) x), (select e1 from (EXEC pm1.sp2(1)) x))"); //$NON-NLS-1$
assertEquals(2, command.updatingModelCount(new TempMetadataAdapter(metadata, new TempMetadataStore())));
}
- public void testCommandUpdatingCountEmbeddedExec() throws Exception {
+ @Test public void testCommandUpdatingCountEmbeddedExec() throws Exception {
Command command = helpResolve("SELECT * FROM pm1.g1 WHERE e1 IN (select e1 from (EXEC pm1.sp1()) x)"); //$NON-NLS-1$
assertEquals(2, command.updatingModelCount(new TempMetadataAdapter(metadata, new TempMetadataStore())));
}
- public void testCommandUpdatingCountFromLastStatement() throws Exception {
+ @Test public void testCommandUpdatingCountFromLastStatement() throws Exception {
String procedure = "CREATE VIRTUAL PROCEDURE \n"; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "declare integer x = convert(pm1.sq1.in, integer) + 5;\n"; //$NON-NLS-1$
@@ -3706,7 +3702,7 @@
assertEquals(1, command.updatingModelCount(new TempMetadataAdapter(metadata, new TempMetadataStore())));
}
- public void testCommandUpdatingCountFromMetadata() throws Exception {
+ @Test public void testCommandUpdatingCountFromMetadata() throws Exception {
FakeMetadataFacade metadata = FakeMetadataFactory.example1();
FakeMetadataObject proc = metadata.getStore().findObject("pm1.sp1", FakeMetadataObject.PROCEDURE); //$NON-NLS-1$
proc.putProperty(FakeMetadataObject.Props.UPDATE_COUNT, new Integer(0));
@@ -3724,23 +3720,23 @@
assertEquals(0, command.updatingModelCount(metadata));
}
- public void testParameterError() throws Exception {
+ @Test public void testParameterError() throws Exception {
helpResolveException("EXEC pm1.sp2(1, 2)", metadata, "Error Code:ERR.015.008.0007 Message:Incorrect number of parameters specified on the stored procedure pm1.sp2 - expected 1 but got 2"); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testUnionOfAliasedLiteralsGetsModified() {
+ @Test public void testUnionOfAliasedLiteralsGetsModified() {
String sql = "SELECT 5 AS x UNION ALL SELECT 10 AS x"; //$NON-NLS-1$
Command c = helpResolve(sql);
assertEquals(sql, c.toString());
}
- public void testXMLWithProcSubquery() {
+ @Test public void testXMLWithProcSubquery() {
String sql = "SELECT * FROM xmltest.doc4 WHERE node2 IN (SELECT e1 FROM (EXEC pm1.vsp1()) AS x)"; //$NON-NLS-1$
Command c = helpResolve(sql);
assertEquals(sql, c.toString());
}
- public void testDefect18832() {
+ @Test public void testDefect18832() {
String sql = "SELECT * from (SELECT null as a, e1 FROM pm1.g1) b"; //$NON-NLS-1$
Command c = helpResolve(sql);
List projectedSymbols = c.getProjectedSymbols();
@@ -3750,7 +3746,7 @@
}
}
- public void testDefect18832_2() {
+ @Test public void testDefect18832_2() {
String sql = "SELECT a.*, b.* from (SELECT null as a, e1 FROM pm1.g1) a, (SELECT e1 FROM pm1.g1) b"; //$NON-NLS-1$
Command c = helpResolve(sql);
List projectedSymbols = c.getProjectedSymbols();
@@ -3760,12 +3756,12 @@
}
}
- public void testDefect20113() {
+ @Test public void testDefect20113() {
String sql = "SELECT g1.* from pm1.g1"; //$NON-NLS-1$
helpResolve(sql);
}
- public void testDefect20113_2() {
+ @Test public void testDefect20113_2() {
String sql = "SELECT g7.* from g7"; //$NON-NLS-1$
helpResolve(sql);
}
@@ -3777,7 +3773,7 @@
}
}
- public void testNestedInlineViews() throws Exception {
+ @Test public void testNestedInlineViews() throws Exception {
String sql = "SELECT * FROM (SELECT * FROM (SELECT * FROM pm1.g1) AS Y) AS X"; //$NON-NLS-1$
Command c = helpResolve(sql);
assertEquals(sql, c.toString());
@@ -3785,7 +3781,7 @@
verifyProjectedTypes(c, new Class[] { String.class, Integer.class, Boolean.class, Double.class });
}
- public void testNestedInlineViewsNoStar() throws Exception {
+ @Test public void testNestedInlineViewsNoStar() throws Exception {
String sql = "SELECT e1 FROM (SELECT e1 FROM (SELECT e1 FROM pm1.g1) AS Y) AS X"; //$NON-NLS-1$
Command c = helpResolve(sql);
assertEquals(sql, c.toString());
@@ -3793,14 +3789,14 @@
verifyProjectedTypes(c, new Class[] { String.class });
}
- public void testNestedInlineViewsCount() throws Exception {
+ @Test public void testNestedInlineViewsCount() throws Exception {
String sql = "SELECT COUNT(*) FROM (SELECT * FROM (SELECT * FROM pm1.g1) AS Y) AS X"; //$NON-NLS-1$
Command c = helpResolve(sql);
assertEquals(sql, c.toString());
verifyProjectedTypes(c, new Class[] { Integer.class });
}
- public void testAggOverInlineView() throws Exception {
+ @Test public void testAggOverInlineView() throws Exception {
String sql = "SELECT SUM(x) FROM (SELECT (e2 + 1) AS x FROM pm1.g1) AS g"; //$NON-NLS-1$
Command c = helpResolve(sql);
assertEquals(sql, c.toString());
@@ -3808,7 +3804,7 @@
}
- public void testCaseOverInlineView() throws Exception {
+ @Test public void testCaseOverInlineView() throws Exception {
String sql = "SELECT CASE WHEN x > 0 THEN 1.0 ELSE 2.0 END FROM (SELECT e2 AS x FROM pm1.g1) AS g"; //$NON-NLS-1$
Command c = helpResolve(sql);
assertEquals(sql, c.toString());
@@ -3817,21 +3813,21 @@
}
//procedure - select * from temp table
- public void testDefect20083_1 (){
+ @Test public void testDefect20083_1 (){
helpResolve("EXEC pm1.vsp56()"); //$NON-NLS-1$
}
//procedure - select * from temp table order by
- public void testDefect20083_2 (){
+ @Test public void testDefect20083_2 (){
helpResolve("EXEC pm1.vsp57()"); //$NON-NLS-1$
}
- public void testTypeConversionOverUnion() throws Exception {
+ @Test public void testTypeConversionOverUnion() throws Exception {
String sql = "SELECT * FROM (SELECT e2, e1 FROM pm1.g1 UNION SELECT convert(e2, string), e1 FROM pm1.g1) FOO where e2/2 = 1"; //$NON-NLS-1$
helpResolveException(sql);
}
- public void testVariableDeclarationAfterStatement() throws Exception{
+ @Test public void testVariableDeclarationAfterStatement() throws Exception{
String procedure = "CREATE VIRTUAL PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "select * from pm1.g1 where pm1.g1.e1 = VARIABLES.X;\n"; //$NON-NLS-1$
@@ -3845,7 +3841,7 @@
* same as above, but with an xml query
* @throws Exception
*/
- public void testVariableDeclarationAfterStatement1() throws Exception{
+ @Test public void testVariableDeclarationAfterStatement1() throws Exception{
String procedure = "CREATE VIRTUAL PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "select * from xmltest.doc1 where node1 = VARIABLES.X;\n"; //$NON-NLS-1$
@@ -3855,35 +3851,35 @@
helpResolveException(procedure, "Error Code:ERR.015.008.0019 Message:Unable to resolve element: VARIABLES.X"); //$NON-NLS-1$
}
- public void testCreate() {
+ @Test public void testCreate() {
String sql = "CREATE LOCAL TEMPORARY TABLE temp_table (column1 string)"; //$NON-NLS-1$
Command c = helpResolve(sql);
assertEquals(sql, c.toString());
}
- public void testCreateQualifiedName() {
+ @Test public void testCreateQualifiedName() {
String sql = "CREATE LOCAL TEMPORARY TABLE pm1.g1 (column1 string)"; //$NON-NLS-1$
helpResolveException(sql, "Cannot create temporary table \"pm1.g1\". Local temporary tables must be created with unqualified names."); //$NON-NLS-1$
}
- public void testCreateAlreadyExists() {
+ @Test public void testCreateAlreadyExists() {
String sql = "CREATE LOCAL TEMPORARY TABLE g1 (column1 string)"; //$NON-NLS-1$
helpResolveException(sql, "Cannot create temporary table \"g1\". A table with the same name already exists."); //$NON-NLS-1$
}
- public void testCreateImplicitName() {
+ @Test public void testCreateImplicitName() {
String sql = "CREATE LOCAL TEMPORARY TABLE #g1 (column1 string)"; //$NON-NLS-1$
Command c = helpResolve(sql);
assertEquals(sql, c.toString());
}
- public void testCreateInProc() throws Exception{
+ @Test public void testCreateInProc() throws Exception{
helpResolveException("CREATE VIRTUAL PROCEDURE BEGIN create local temporary table g1(c1 string); end", "Cannot create temporary table \"g1\". A table with the same name already exists.");//$NON-NLS-1$ //$NON-NLS-2$
}
//this was the old virt.agg procedure. It was defined in such a way that relied on the scope leak of #temp
//the exception here is a little weak since there are multiple uses of #temp in the block
- public void testTempTableScope() {
+ @Test public void testTempTableScope() {
String proc = "CREATE VIRTUAL PROCEDURE " //$NON-NLS-1$
+ "BEGIN " //$NON-NLS-1$
+ " DECLARE integer VARIABLES.BITS;" //$NON-NLS-1$
@@ -3902,17 +3898,17 @@
helpResolveException(proc, FakeMetadataFactory.exampleBitwise(), "Group does not exist: #temp"); //$NON-NLS-1$
}
- public void testDrop() {
+ @Test public void testDrop() {
String sql = "DROP TABLE temp_table"; //$NON-NLS-1$
helpResolveException(sql, "Group does not exist: temp_table"); //$NON-NLS-1$
}
- public void testInvalidVirtualProcedure2(){
+ @Test public void testInvalidVirtualProcedure2(){
helpResolveException("EXEC pm1.vsp12()", FakeMetadataFactory.example1Cached(), "Symbol mycursor.e2 is specified with an unknown group context"); //$NON-NLS-1$ //$NON-NLS-2$
}
// variable declared is of special type ROWS_RETURNED
- public void testDeclareRowsUpdated() {
+ @Test public void testDeclareRowsUpdated() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer rows_updated;\n"; //$NON-NLS-1$
@@ -3926,7 +3922,7 @@
}
// validating INPUT element assigned
- public void testAssignInput() {
+ @Test public void testAssignInput() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -3941,7 +3937,7 @@
}
// validating CHANGING element assigned
- public void testAssignChanging() {
+ @Test public void testAssignChanging() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -3956,7 +3952,7 @@
}
// variables cannot be used among insert elements
- public void testVariableInInsert() {
+ @Test public void testVariableInInsert() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -3971,7 +3967,7 @@
}
// variables cannot be used among insert elements
- public void testVariableInInsert2() {
+ @Test public void testVariableInInsert2() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -3986,7 +3982,7 @@
}
//should resolve first to the table's column
- public void testVariableInInsert3() {
+ @Test public void testVariableInInsert3() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE integer e2;\n"; //$NON-NLS-1$
@@ -4000,7 +3996,7 @@
FakeMetadataObject.Props.UPDATE_PROCEDURE);
}
- public void testAmbigousInput() {
+ @Test public void testAmbigousInput() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "select e1;\n"; //$NON-NLS-1$
@@ -4012,7 +4008,7 @@
FakeMetadataObject.Props.UPDATE_PROCEDURE, "Element \"e1\" is ambiguous, it exists in two or more groups."); //$NON-NLS-1$
}
- public void testLoopRedefinition() {
+ @Test public void testLoopRedefinition() {
StringBuffer proc = new StringBuffer("CREATE PROCEDURE") //$NON-NLS-1$
.append("\nBEGIN") //$NON-NLS-1$
.append("\n declare string var1;") //$NON-NLS-1$
@@ -4031,11 +4027,11 @@
FakeMetadataObject.Props.UPDATE_PROCEDURE, "Nested Loop can not use the same cursor name as that of its parent."); //$NON-NLS-1$
}
- public void testLoopRedefinition2(){
+ @Test public void testLoopRedefinition2(){
helpResolveException("EXEC pm1.vsp11()", FakeMetadataFactory.example1Cached(), "Nested Loop can not use the same cursor name as that of its parent."); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testTempGroupElementShouldNotBeResolable() {
+ @Test public void testTempGroupElementShouldNotBeResolable() {
StringBuffer proc = new StringBuffer("CREATE PROCEDURE") //$NON-NLS-1$
.append("\nBEGIN") //$NON-NLS-1$
.append("\n select 1 as a into #temp;") //$NON-NLS-1$
@@ -4048,7 +4044,7 @@
FakeMetadataObject.Props.UPDATE_PROCEDURE, "Symbol #temp.a is specified with an unknown group context"); //$NON-NLS-1$
}
- public void testTempGroupElementShouldNotBeResolable1() {
+ @Test public void testTempGroupElementShouldNotBeResolable1() {
StringBuffer proc = new StringBuffer("CREATE PROCEDURE") //$NON-NLS-1$
.append("\nBEGIN") //$NON-NLS-1$
.append("\n select 1 as a into #temp;") //$NON-NLS-1$
@@ -4061,7 +4057,7 @@
FakeMetadataObject.Props.UPDATE_PROCEDURE, "Symbol #temp.a is specified with an unknown group context"); //$NON-NLS-1$
}
- public void testVariableResolutionWithIntervening() {
+ @Test public void testVariableResolutionWithIntervening() {
StringBuffer proc = new StringBuffer("CREATE VIRTUAL PROCEDURE") //$NON-NLS-1$
.append("\nBEGIN") //$NON-NLS-1$
.append("\n declare string x;") //$NON-NLS-1$
@@ -4073,7 +4069,7 @@
helpResolve(proc.toString());
}
- public void testProcedureScoping() {
+ @Test public void testProcedureScoping() {
StringBuffer proc = new StringBuffer("CREATE PROCEDURE") //$NON-NLS-1$
.append("\nBEGIN") //$NON-NLS-1$
//note that this declare takes presedense over the proc INPUT.e1 and CHANGING.e1 variables
@@ -4106,7 +4102,7 @@
assertEquals("LOOPCURSOR", value.getGroupSymbol().getCanonicalName()); //$NON-NLS-1$
}
- public void testResolveUnqualifiedCriteria() throws Exception{
+ @Test public void testResolveUnqualifiedCriteria() throws Exception{
Criteria criteria = QueryParser.getQueryParser().parseCriteria("e1 = 1"); //$NON-NLS-1$
// resolve
@@ -4118,13 +4114,13 @@
}
}
- public void testSameNameRoot() {
+ @Test public void testSameNameRoot() {
String sql = "select p.e1 from pm1.g1 as pp, pm1.g1 as p"; //$NON-NLS-1$
helpResolve(sql);
}
- public void testDefect23342() throws Exception {
+ @Test public void testDefect23342() throws Exception {
String sql = "CREATE VIRTUAL PROCEDURE " //$NON-NLS-1$
+ "BEGIN " //$NON-NLS-1$
+ "IF (param = '1')" //$NON-NLS-1$
@@ -4143,7 +4139,7 @@
QueryResolver.resolveCommand(command, externalMetadata, false, metadata, AnalysisRecord.createNonRecordingRecord());
}
- public void testProcedureCreate() {
+ @Test public void testProcedureCreate() {
StringBuffer proc = new StringBuffer("CREATE PROCEDURE") //$NON-NLS-1$
.append("\nBEGIN") //$NON-NLS-1$
.append("\n create local temporary table t1 (e1 string);") //$NON-NLS-1$
@@ -4160,7 +4156,7 @@
/**
* it is not ok to redefine the loopCursor
*/
- public void testProcedureCreate1() {
+ @Test public void testProcedureCreate1() {
StringBuffer proc = new StringBuffer("CREATE PROCEDURE") //$NON-NLS-1$
.append("\nBEGIN") //$NON-NLS-1$
.append("\n LOOP ON (SELECT pm1.g1.e1 FROM pm1.g1) AS loopCursor") //$NON-NLS-1$
@@ -4174,7 +4170,7 @@
helpFailUpdateProcedure(proc.toString(), userUpdateStr, FakeMetadataObject.Props.UPDATE_PROCEDURE, "Cannot create temporary table \"loopCursor\". A table with the same name already exists."); //$NON-NLS-1$
}
- public void testProcedureCreateDrop() {
+ @Test public void testProcedureCreateDrop() {
StringBuffer proc = new StringBuffer("CREATE PROCEDURE") //$NON-NLS-1$
.append("\nBEGIN") //$NON-NLS-1$
.append("\n drop table t1;") //$NON-NLS-1$
@@ -4186,7 +4182,7 @@
helpFailUpdateProcedure(proc.toString(), userUpdateStr, FakeMetadataObject.Props.UPDATE_PROCEDURE, "Group does not exist: t1"); //$NON-NLS-1$
}
- public void testProcedureCreateDrop1() {
+ @Test public void testProcedureCreateDrop1() {
StringBuffer proc = new StringBuffer("CREATE PROCEDURE") //$NON-NLS-1$
.append("\nBEGIN") //$NON-NLS-1$
.append("\n create local temporary table t1 (e1 string);") //$NON-NLS-1$
@@ -4198,7 +4194,7 @@
helpResolveUpdateProcedure(proc.toString(), userUpdateStr, FakeMetadataObject.Props.UPDATE_PROCEDURE);
}
- public void testBatchedUpdateResolver() throws Exception {
+ @Test public void testBatchedUpdateResolver() throws Exception {
String update1 = "update pm1.g1 set e1 =1"; //$NON-NLS-1$
String update2 = "update pm2.g1 set e1 =1"; //$NON-NLS-1$
@@ -4210,12 +4206,12 @@
helpResolve(command);
}
- public void testAmbiguousAllInGroup() {
+ @Test public void testAmbiguousAllInGroup() {
String sql = "SELECT g1.* from pm1.g1, pm2.g1"; //$NON-NLS-1$
helpResolveException(sql, metadata, "The symbol g1.* refers to more than one group defined in the FROM clause."); //$NON-NLS-1$
}
- public void testRowsUpdatedInProcedure(){
+ @Test public void testRowsUpdatedInProcedure(){
String sql = "CREATE VIRTUAL PROCEDURE " //$NON-NLS-1$
+ "BEGIN " //$NON-NLS-1$
+"SELECT ROWS_UPDATED; " //$NON-NLS-1$
@@ -4224,7 +4220,7 @@
helpResolveException(sql, metadata, "Element \"ROWS_UPDATED\" is not defined by any relevant group."); //$NON-NLS-1$
}
- public void testXMLQueryWithVariable() {
+ @Test public void testXMLQueryWithVariable() {
String sql = "CREATE VIRTUAL PROCEDURE " //$NON-NLS-1$
+ "BEGIN " //$NON-NLS-1$
+ "declare string x = '1'; " //$NON-NLS-1$
@@ -4243,7 +4239,7 @@
/**
* We could check to see if the expressions are evaluatable to a constant, but that seems unnecessary
*/
- public void testLookupWithoutConstant() throws Exception{
+ @Test public void testLookupWithoutConstant() throws Exception{
String sql = "SELECT lookup('pm1.g1', convert('e3', float), 'e2', e2) FROM pm1.g1"; //$NON-NLS-1$
helpResolveException(sql, metadata, "Error Code:ERR.015.008.0063 Message:The first three arguments for the LOOKUP function must be specified as constants."); //$NON-NLS-1$
@@ -4252,19 +4248,19 @@
/**
* We cannot implicitly convert the argument to double due to lack of precision
*/
- public void testPowerWithBigInteger_Fails() throws Exception {
+ @Test public void testPowerWithBigInteger_Fails() throws Exception {
String sql = "SELECT power(10, 999999999999999999999999999999999999999999999)"; //$NON-NLS-1$
helpResolveException(sql);
}
- public void testPowerWithLong_Fails() throws Exception {
+ @Test public void testPowerWithLong_Fails() throws Exception {
String sql = "SELECT power(10, 999999999999)"; //$NON-NLS-1$
helpResolveException(sql);
}
- public void testCreateAfterImplicitTempTable() {
+ @Test public void testCreateAfterImplicitTempTable() {
StringBuffer proc = new StringBuffer("CREATE PROCEDURE") //$NON-NLS-1$
.append("\nBEGIN") //$NON-NLS-1$
.append("\n select e1 into #temp from pm1.g1;") //$NON-NLS-1$
@@ -4276,7 +4272,7 @@
helpResolveUpdateProcedure(proc.toString(), userUpdateStr, FakeMetadataObject.Props.UPDATE_PROCEDURE);
}
- public void testInsertAfterCreate() {
+ @Test public void testInsertAfterCreate() {
StringBuffer proc = new StringBuffer("CREATE PROCEDURE") //$NON-NLS-1$
.append("\nBEGIN") //$NON-NLS-1$
.append("\n create local temporary table #temp (e1 string, e2 string);") //$NON-NLS-1$
@@ -4288,25 +4284,25 @@
helpResolveUpdateProcedure(proc.toString(), userUpdateStr, FakeMetadataObject.Props.UPDATE_PROCEDURE);
}
- public void testUpdateError() {
+ @Test public void testUpdateError() {
String userUpdateStr = "UPDATE vm1.g2 SET e1='x'"; //$NON-NLS-1$
helpResolveException(userUpdateStr, metadata, "Error Code:ERR.015.008.0009 Message:Update is not allowed on the virtual group vm1.g2: no Update procedure was defined."); //$NON-NLS-1$
}
- public void testInsertError() {
+ @Test public void testInsertError() {
String userUpdateStr = "INSERT into vm1.g2 (e1) values ('x')"; //$NON-NLS-1$
helpResolveException(userUpdateStr, metadata, "Error Code:ERR.015.008.0009 Message:Insert is not allowed on the virtual group vm1.g2: no Insert procedure was defined."); //$NON-NLS-1$
}
- public void testDeleteError() {
+ @Test public void testDeleteError() {
String userUpdateStr = "DELETE from vm1.g2 where e1='x'"; //$NON-NLS-1$
helpResolveException(userUpdateStr, metadata, "Error Code:ERR.015.008.0009 Message:Delete is not allowed on the virtual group vm1.g2: no Delete procedure was defined."); //$NON-NLS-1$
}
- public void testResolveXMLSelect() {
+ @Test public void testResolveXMLSelect() {
String procedure = "CREATE VIRTUAL PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "DECLARE string VARIABLES.X = 1;\n"; //$NON-NLS-1$
@@ -4316,13 +4312,13 @@
helpResolveException(procedure, "Error Code:ERR.015.008.0019 Message:Unable to resolve element: VARIABLES.X"); //$NON-NLS-1$
}
- public void testXMLJoinFail() {
+ @Test public void testXMLJoinFail() {
String query = "select * from xmltest.doc1, xmltest.doc1"; //$NON-NLS-1$
helpResolveException(query, "Error Code:ERR.015.008.0003 Message:Only one XML document may be specified in the FROM clause of a query."); //$NON-NLS-1$
}
- public void testExecProjectedSymbols() {
+ @Test public void testExecProjectedSymbols() {
String query = "exec pm1.sq1()"; //$NON-NLS-1$
StoredProcedure proc = (StoredProcedure)helpResolve(query);
@@ -4337,7 +4333,7 @@
}
}
- public void testExecWithDuplicateNames() {
+ @Test public void testExecWithDuplicateNames() {
FakeMetadataFacade metadata = FakeMetadataFactory.example1();
FakeMetadataStore store = metadata.getStore();
@@ -4356,48 +4352,48 @@
helpResolveException("select * from pm1.sq2", metadata, "Cannot access procedure pm1.sq2 using table semantics since the parameter and result set column names are not all unique."); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testInlineViewNullLiteralInUnion() {
+ @Test public void testInlineViewNullLiteralInUnion() {
String sql = "select e2 from pm1.g1 union all (select x from (select null as x) y)"; //$NON-NLS-1$
helpResolve(sql);
}
- public void testSelectIntoWithDuplicateNames() {
+ @Test public void testSelectIntoWithDuplicateNames() {
String sql = "select 1 as x, 2 as x into #temp"; //$NON-NLS-1$
helpResolveException(sql, "Cannot create group '#temp' with multiple columns named 'x'"); //$NON-NLS-1$
}
- public void testCreateWithDuplicateNames() {
+ @Test public void testCreateWithDuplicateNames() {
String sql = "CREATE LOCAL TEMPORARY TABLE temp_table (column1 string, column1 string)"; //$NON-NLS-1$
helpResolveException(sql, "Cannot create group \'temp_table\' with multiple columns named \'column1\'"); //$NON-NLS-1$
}
- public void testValidateScalarSubqueryTooManyColumns() {
+ @Test public void testValidateScalarSubqueryTooManyColumns() {
helpResolveException("SELECT e2, (SELECT e1, e2 FROM pm1.g1 WHERE e2 = '3') FROM pm1.g2", "There must be exactly one projected symbol of the subquery: (SELECT e1, e2 FROM pm1.g1 WHERE e2 = '3')"); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testXMLQuery4() {
+ @Test public void testXMLQuery4() {
helpResolveException("SELECT * FROM xmltest.doc1 group by a2", "Queries against XML documents can not have a GROUP By clause"); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testXMLQuery5() {
+ @Test public void testXMLQuery5() {
helpResolveException("SELECT * FROM xmltest.doc1 having a2='x'", "Queries against XML documents can not have a HAVING clause"); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testSelectIntoWithOrderBy() {
+ @Test public void testSelectIntoWithOrderBy() {
String sql = "select e1, e2 into #temp from pm1.g1 order by e1 limit 10"; //$NON-NLS-1$
helpResolve(sql);
}
- public void testUnionBranchesWithDifferentElementCounts() {
+ @Test public void testUnionBranchesWithDifferentElementCounts() {
helpResolveException("SELECT e2, e3 FROM pm1.g1 UNION SELECT e2 FROM pm1.g2","Queries combined with the set operator UNION must have the same number of output elements."); //$NON-NLS-1$ //$NON-NLS-2$
helpResolveException("SELECT e2 FROM pm1.g1 UNION SELECT e2, e3 FROM pm1.g2","Queries combined with the set operator UNION must have the same number of output elements."); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testSelectIntoWithNullLiteral() {
+ @Test public void testSelectIntoWithNullLiteral() {
String sql = "select null as x into #temp from pm1.g1"; //$NON-NLS-1$
Query query = (Query)helpResolve(sql);
@@ -4409,7 +4405,7 @@
assertEquals(DataTypeManager.DefaultDataClasses.STRING, id.getType());
}
- public void testInsertWithNullLiteral() {
+ @Test public void testInsertWithNullLiteral() {
String sql = "insert into #temp (x) values (null)"; //$NON-NLS-1$
Insert insert = (Insert)helpResolve(sql);
@@ -4421,25 +4417,25 @@
assertEquals(DataTypeManager.DefaultDataClasses.STRING, id.getType());
}
- public void testInsertWithoutColumnsFails() {
+ @Test public void testInsertWithoutColumnsFails() {
String sql = "Insert into pm1.g1 values (1, 2)"; //$NON-NLS-1$
helpResolveException(sql, "Error Code:ERR.015.008.0010 Message:INSERT statement must have the same number of elements and values specified. This statement has 4 elements and 2 values."); //$NON-NLS-1$
}
- public void testInsertWithoutColumnsFails1() {
+ @Test public void testInsertWithoutColumnsFails1() {
String sql = "Insert into pm1.g1 values (1, 2, 3, 4)"; //$NON-NLS-1$
helpResolveException(sql, "Error Code:ERR.015.008.0041 Message:Expected value of type 'boolean' but '3' is of type 'integer' and no implicit conversion is available."); //$NON-NLS-1$
}
- public void testInsertWithQueryFails() {
+ @Test public void testInsertWithQueryFails() {
String sql = "Insert into pm1.g1 select 1, 2, 3, 4"; //$NON-NLS-1$
helpResolveException(sql, "Cannot convert insert query expression projected symbol '3' of type java.lang.Integer to insert column 'pm1.g1.e3' of type java.lang.Boolean"); //$NON-NLS-1$
}
- public void testInsertWithoutColumnsPasses() {
+ @Test public void testInsertWithoutColumnsPasses() {
String sql = "Insert into pm1.g1 values (1, 2, true, 4)"; //$NON-NLS-1$
helpResolve(sql);
@@ -4447,14 +4443,14 @@
assertEquals(4, command.getVariables().size());
}
- public void testInsertWithoutColumnsUndefinedTemp() {
+ @Test public void testInsertWithoutColumnsUndefinedTemp() {
String sql = "Insert into #temp values (1, 2)"; //$NON-NLS-1$
Insert command = (Insert)helpResolve(sql);
assertEquals(2, command.getVariables().size());
}
- public void testImplicitTempInsertWithNoColumns() {
+ @Test public void testImplicitTempInsertWithNoColumns() {
StringBuffer proc = new StringBuffer("CREATE VIRTUAL PROCEDURE") //$NON-NLS-1$
.append("\nBEGIN") //$NON-NLS-1$
.append("\n create local temporary table #matt (x integer);") //$NON-NLS-1$
@@ -4465,46 +4461,38 @@
String sExpected = "CREATE VIRTUAL PROCEDURE\nBEGIN\nCREATE LOCAL TEMPORARY TABLE #matt (x integer);\nINSERT INTO #matt (#MATT.X) VALUES (1);\nEND\n\tCREATE LOCAL TEMPORARY TABLE #matt (x integer)\n\tINSERT INTO #matt (#MATT.X) VALUES (1)\n"; //$NON-NLS-1$
String sActual = cmd.printCommandTree();
- Assert.assertEquals( sExpected, sActual );
+ assertEquals( sExpected, sActual );
}
- public void testCase6319() throws QueryResolverException, MetaMatrixComponentException {
+ @Test public void testCase6319() throws QueryResolverException, MetaMatrixComponentException {
String sql = "select floatnum from bqt1.smalla group by floatnum having sum(floatnum) between 51.0 and 100.0 "; //$NON-NLS-1$
Query query = (Query)helpParse(sql);
QueryResolver.resolveCommand(query, FakeMetadataFactory.exampleBQTCached());
}
- public void testUniqeNamesWithInlineView() {
+ @Test public void testUniqeNamesWithInlineView() {
helpResolveException("select * from (select count(intNum) a, count(stringKey) b, bqt1.smalla.intkey as b from bqt1.smalla group by bqt1.smalla.intkey) q1 order by q1.a", FakeMetadataFactory.exampleBQTCached(), "Cannot create group 'q1' with multiple columns named 'b'"); //$NON-NLS-1$ //$NON-NLS-2$
}
-
- public void testNumberedOrderBy1_4_fails() throws Exception {
- helpResolveException("SELECT pm1.g1.e1 as a, avg(e2) as a FROM pm1.g1 ORDER BY 1", "Error Code:ERR.015.008.0042 Message:Element 'a' in ORDER BY is ambiguous and may refer to more than one element of SELECT clause."); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- public void testNumberedOrderBy6_fails() throws Exception {
- helpResolveException("SELECT a.e1, b.e1 FROM pm1.g1 AS a, pm1.g1 AS b ORDER BY 2", "Error Code:ERR.015.008.0042 Message:Element 'e1' in ORDER BY is ambiguous and may refer to more than one element of SELECT clause."); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- public void testResolveOldProcRelational() {
+
+ @Test public void testResolveOldProcRelational() {
helpResolveException("SELECT * FROM pm1.g1, (exec pm1.sq2(pm1.g1.e1)) as a", "Symbol pm1.g1.e1 is specified with an unknown group context"); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testResolverOrderOfPrecedence() {
+ @Test public void testResolverOrderOfPrecedence() {
helpResolveException("SELECT pm1.g1.e1, pm1.g1.e2 FROM pm1.g1 CROSS JOIN (pm1.g2 LEFT OUTER JOIN pm2.g1 on pm1.g1.e1 = pm2.g1.e1)", "Symbol pm1.g1.e1 is specified with an unknown group context"); //$NON-NLS-1$ //$NON-NLS-2$
}
/**
* The cross join should parse/resolve with higher precedence
*/
- public void testResolverOrderOfPrecedence_1() {
+ @Test public void testResolverOrderOfPrecedence_1() {
helpResolve("SELECT pm1.g1.e1, pm1.g1.e2 FROM pm1.g1 CROSS JOIN pm1.g2 LEFT OUTER JOIN pm2.g1 on pm1.g1.e1 = pm2.g1.e1"); //$NON-NLS-1$
}
/**
* should be the same as exec with too many params
*/
- public void testCallableStatementTooManyParameters() throws Exception {
+ @Test public void testCallableStatementTooManyParameters() throws Exception {
String sql = "{call pm4.spTest9(?, ?)}"; //$NON-NLS-1$
TestResolver.helpResolveException(sql, FakeMetadataFactory.exampleBQTCached(), "Error Code:ERR.015.008.0007 Message:Incorrect number of parameters specified on the stored procedure pm4.spTest9 - expected 1 but got 2"); //$NON-NLS-1$
@@ -4513,7 +4501,7 @@
/**
* delete procedures should not reference input or changing vars.
*/
- public void testDefect16451() {
+ @Test public void testDefect16451() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure += "BEGIN\n"; //$NON-NLS-1$
procedure += "Select pm1.g1.e2 from pm1.g1 where e1 = input.e1;\n"; //$NON-NLS-1$
@@ -4526,13 +4514,13 @@
FakeMetadataObject.Props.DELETE_PROCEDURE, "Symbol input.e1 is specified with an unknown group context"); //$NON-NLS-1$
}
- public void testInvalidVirtualProcedure3() throws Exception {
+ @Test public void testInvalidVirtualProcedure3() throws Exception {
helpResolveException("EXEC pm1.vsp18()", "Group does not exist: temptable"); //$NON-NLS-1$ //$NON-NLS-2$
}
// variable resolution, variable comapred against
// differrent datatype element for which there is no implicit transformation)
- public void testCreateUpdateProcedure2() {
+ @Test public void testCreateUpdateProcedure2() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure += "BEGIN\n"; //$NON-NLS-1$
procedure += "DECLARE boolean var1;\n"; //$NON-NLS-1$
@@ -4546,7 +4534,7 @@
}
// special variable INPUT compared against invalid type
- public void testInvalidInputInUpdate() {
+ @Test public void testInvalidInputInUpdate() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure += "BEGIN\n"; //$NON-NLS-1$
procedure += "DECLARE integer var1;\n"; //$NON-NLS-1$
@@ -4560,7 +4548,7 @@
FakeMetadataObject.Props.UPDATE_PROCEDURE, "Error Code:ERR.015.008.0041 Message:Cannot set symbol 'pm1.g1.e2' with expected type integer to expression 'INPUT.e1'"); //$NON-NLS-1$
}
- public void testUpdateSetClauseReferenceType() {
+ @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);
@@ -4570,40 +4558,40 @@
assertNotNull(ref.getType());
}
- public void testNoTypeCriteria() {
+ @Test public void testNoTypeCriteria() {
String sql = "select * from pm1.g1 where ? = ?"; //$NON-NLS-1$
helpResolveException(sql, FakeMetadataFactory.example1Cached(), "Error Code:ERR.015.008.0026 Message:Expression '? = ?' has a parameter with non-determinable type information. The use of an explicit convert may be necessary."); //$NON-NLS-1$
}
- public void testReferenceInSelect() {
+ @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());
}
- public void testReferenceInSelect1() {
+ @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());
}
- public void testUnionWithObjectTypeConversion() {
+ @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);
assertEquals(DataTypeManager.DefaultDataClasses.OBJECT, ((SingleElementSymbol)query.getProjectedSymbols().get(0)).getType());
}
- public void testUnionWithSubQuery() {
+ @Test public void testUnionWithSubQuery() {
String sql = "select 1 from pm1.g1 where exists (select 1) union select 2"; //$NON-NLS-1$
SetQuery command = (SetQuery)helpResolve(sql);
assertEquals(1, command.getSubCommands().size());
}
- public void testOrderBy_J658a() {
+ @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$
OrderBy orderBy = resolvedQuery.getOrderBy();
int[] expectedPositions = new int[] {2};
@@ -4613,30 +4601,28 @@
private void helpTestOrderBy(OrderBy orderBy, int[] expectedPositions) {
assertEquals(expectedPositions.length, orderBy.getVariableCount());
for (int i = 0; i < expectedPositions.length; i++) {
- ElementSymbol symbol = (ElementSymbol)orderBy.getVariable(i);
- TempMetadataID tid = (TempMetadataID)symbol.getMetadataID();
- assertEquals(expectedPositions[i], tid.getPosition());
+ assertEquals(expectedPositions[i], orderBy.getExpressionPosition(i));
}
}
- public void testOrderBy_J658b() {
+ @Test public void testOrderBy_J658b() {
Query resolvedQuery = (Query) helpResolve("SELECT pm1.g1.e1, e2, e3 as x, (5+2) as y FROM pm1.g1 ORDER BY e2, e3 "); //$NON-NLS-1$
helpTestOrderBy(resolvedQuery.getOrderBy(), new int[] {1, 2});
}
- public void testOrderBy_J658c() {
+ @Test public void testOrderBy_J658c() {
Query resolvedQuery = (Query) helpResolve("SELECT pm1.g1.e1, e2 as x, e3 as y FROM pm1.g1 ORDER BY x, e3 "); //$NON-NLS-1$
helpTestOrderBy(resolvedQuery.getOrderBy(), new int[] {1, 2});
}
// ambiguous, should fail
- public void testOrderBy_J658d() {
+ @Test public void testOrderBy_J658d() {
helpResolveException("SELECT pm1.g1.e1, e2 as x, e3 as x FROM pm1.g1 ORDER BY x, e1 ", "Error Code:ERR.015.008.0042 Message:Element 'x' in ORDER BY is ambiguous and may refer to more than one element of SELECT clause."); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testOrderBy_J658e() {
+ @Test public void testOrderBy_J658e() {
Query resolvedQuery = (Query) helpResolve("SELECT pm1.g1.e1, e2 as x, e3 as e2 FROM pm1.g1 ORDER BY x, e2 "); //$NON-NLS-1$
helpTestOrderBy(resolvedQuery.getOrderBy(), new int[] {1, 2});
}
- public void testSPOutParamWithExec() {
+ @Test public void testSPOutParamWithExec() {
StoredProcedure proc = (StoredProcedure)helpResolve("exec pm2.spTest8(1)", FakeMetadataFactory.exampleBQTCached(), null);
assertEquals(2, proc.getProjectedSymbols().size());
}
@@ -4645,22 +4631,22 @@
* Note that the call syntax is not quite correct, the output parameter is not in the arg list.
* That hack is handled by the PreparedStatementRequest
*/
- public void testSPOutParamWithCallableStatement() {
+ @Test public void testSPOutParamWithCallableStatement() {
StoredProcedure proc = (StoredProcedure)helpResolve("{call pm2.spTest8(1)}", FakeMetadataFactory.exampleBQTCached(), null);
assertEquals(3, proc.getProjectedSymbols().size());
}
- public void testProcRelationalWithOutParam() {
+ @Test public void testProcRelationalWithOutParam() {
Query proc = (Query)helpResolve("select * from pm2.spTest8 where inkey = 1", FakeMetadataFactory.exampleBQTCached(), null);
assertEquals(3, proc.getProjectedSymbols().size());
}
- public void testSPReturnParamWithNoResultSet() {
+ @Test public void testSPReturnParamWithNoResultSet() {
StoredProcedure proc = (StoredProcedure)helpResolve("exec pm4.spTest9(1)", FakeMetadataFactory.exampleBQTCached(), null);
assertEquals(1, proc.getProjectedSymbols().size());
}
- public void testSecondPassFunctionResolving() {
+ @Test public void testSecondPassFunctionResolving() {
helpResolve("SELECT pm1.g1.e1 FROM pm1.g1 where lower(?) = e1 "); //$NON-NLS-1$
}
@@ -4673,7 +4659,7 @@
* <p>
* SELECT SUM(CASE WHEN e2 BETWEEN 3 AND 5 THEN e2 ELSE -1 END) FROM pm1.g1
*/
- public void testAggregateWithBetweenInCaseInSelect() {
+ @Test public void testAggregateWithBetweenInCaseInSelect() {
String sql = "SELECT SUM(CASE WHEN e2 BETWEEN 3 AND 5 THEN e2 ELSE -1 END) FROM pm1.g1"; //$NON-NLS-1$
helpResolve(sql);
}
@@ -4687,7 +4673,7 @@
* <p>
* SELECT CASE WHEN e2 BETWEEN 3 AND 5 THEN e2 ELSE -1 END FROM pm1.g1
*/
- public void testBetweenInCaseInSelect() {
+ @Test public void testBetweenInCaseInSelect() {
String sql = "SELECT CASE WHEN e2 BETWEEN 3 AND 5 THEN e2 ELSE -1 END FROM pm1.g1"; //$NON-NLS-1$
helpResolve(sql);
}
@@ -4701,21 +4687,39 @@
* <p>
* SELECT * FROM pm1.g1 WHERE e3 = CASE WHEN e2 BETWEEN 3 AND 5 THEN e2 ELSE -1 END
*/
- public void testBetweenInCase() {
+ @Test public void testBetweenInCase() {
String sql = "SELECT * FROM pm1.g1 WHERE e3 = CASE WHEN e2 BETWEEN 3 AND 5 THEN e2 ELSE -1 END"; //$NON-NLS-1$
helpResolve(sql);
}
- public void testOrderByUnrelated() {
+ @Test public void testOrderByUnrelated() {
helpResolve("SELECT pm1.g1.e1, e2 as x, e3 as y FROM pm1.g1 ORDER BY e4"); //$NON-NLS-1$
}
- public void testOrderByUnrelated1() {
+ @Test public void testOrderByUnrelated1() {
helpResolveException("SELECT distinct pm1.g1.e1, e2 as x, e3 as y FROM pm1.g1 ORDER BY e4"); //$NON-NLS-1$
}
- public void testOrderByUnrelated2() {
+ @Test public void testOrderByUnrelated2() {
helpResolveException("SELECT max(e2) FROM pm1.g1 group by e1 ORDER BY e4"); //$NON-NLS-1$
}
+
+ @Test public void testOrderByExpression() {
+ Query query = (Query)helpResolve("select pm1.g1.e1 from pm1.g1 order by e2 || e3 "); //$NON-NLS-1$
+ assertEquals(-1, query.getOrderBy().getExpressionPosition(0));
+ }
+
+ @Test public void testOrderByExpression1() {
+ Query query = (Query)helpResolve("select pm1.g1.e1 || e2 from pm1.g1 order by pm1.g1.e1 || e2 "); //$NON-NLS-1$
+ assertEquals(0, query.getOrderBy().getExpressionPosition(0));
+ }
+
+ @Test public void testOrderByExpression2() {
+ helpResolveException("select pm1.g1.e1 from pm1.g1 union select pm1.g2.e1 from pm1.g2 order by pm1.g1.e1 || 2", "ORDER BY expression '(pm1.g1.e1 || 2)' cannot be used with a set query."); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ @Test public void testOrderByConstantFails() {
+ helpResolveException("select pm1.g1.e1 from pm1.g1 order by 2"); //$NON-NLS-1$
+ }
+
}
\ No newline at end of file
Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/resolver/TestXMLResolver.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/resolver/TestXMLResolver.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/resolver/TestXMLResolver.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -31,7 +31,6 @@
import com.metamatrix.common.types.DataTypeManager;
import com.metamatrix.query.analysis.AnalysisRecord;
-import com.metamatrix.query.parser.ParseInfo;
import com.metamatrix.query.parser.QueryParser;
import com.metamatrix.query.sql.lang.Command;
import com.metamatrix.query.sql.lang.CompareCriteria;
@@ -442,9 +441,7 @@
expected.setOperator(CompareCriteria.EQ);
expected.setRightExpression(new Constant("yyz")); //$NON-NLS-1$
- ParseInfo info = new ParseInfo();
- info.allowDoubleQuotedVariable = true;
- Query query = (Query) TestResolver.helpResolve(QueryParser.getQueryParser().parseCommand("select \"xml\" from xmltest.doc1 where node1 = 'yyz'", info), FakeMetadataFactory.example1Cached(), null); //$NON-NLS-1$
+ Query query = (Query) TestResolver.helpResolve(QueryParser.getQueryParser().parseCommand("select \"xml\" from xmltest.doc1 where node1 = 'yyz'"), FakeMetadataFactory.example1Cached(), null); //$NON-NLS-1$
Criteria actual = query.getCriteria();
assertEquals("Did not match expected criteria", expected, actual); //$NON-NLS-1$
}
Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/rewriter/TestOrderByRewrite.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/rewriter/TestOrderByRewrite.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/rewriter/TestOrderByRewrite.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -22,11 +22,14 @@
package com.metamatrix.query.rewriter;
+import static com.metamatrix.query.rewriter.TestQueryRewriter.*;
+import static org.junit.Assert.*;
+
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
-import junit.framework.TestCase;
+import org.junit.Test;
import com.metamatrix.api.exception.MetaMatrixComponentException;
import com.metamatrix.api.exception.query.QueryParserException;
@@ -40,15 +43,15 @@
import com.metamatrix.query.sql.lang.Query;
import com.metamatrix.query.sql.symbol.ElementSymbol;
import com.metamatrix.query.sql.symbol.ExpressionSymbol;
+import com.metamatrix.query.sql.symbol.SingleElementSymbol;
import com.metamatrix.query.sql.visitor.ElementCollectorVisitor;
-import com.metamatrix.query.sql.visitor.ExpressionSymbolCollector;
import com.metamatrix.query.unittest.FakeMetadataFactory;
import com.metamatrix.query.unittest.FakeMetadataObject;
/**
* Converted from older resolver tests
*/
-public class TestOrderByRewrite extends TestCase {
+public class TestOrderByRewrite {
private static Command getCommand(String sql) throws QueryParserException, QueryResolverException, MetaMatrixComponentException, QueryValidatorException {
Command command = QueryParser.getQueryParser().parseCommand(sql);
@@ -80,19 +83,17 @@
private void helpCheckExpressionsSymbols(OrderBy langObj,
String[] functionsNames) {
- List symbols = new ArrayList();
+ int expCount = 0;
for (Iterator i = langObj.getVariables().iterator(); i.hasNext();) {
- ExpressionSymbolCollector.getSymbols((LanguageObject)i.next(), symbols);
+ SingleElementSymbol ses = (SingleElementSymbol)i.next();
+ if (ses instanceof ExpressionSymbol) {
+ assertEquals("Expression Symbols does not match: ", functionsNames[expCount++], ses.toString()); //$NON-NLS-1$
+ }
}
- assertEquals("Wrong number of Symbols: ", functionsNames.length, symbols.size()); //$NON-NLS-1$
-
- for (int i = 0; i < symbols.size(); i++) {
- ExpressionSymbol symbol = (ExpressionSymbol)symbols.get(i);
- assertEquals("Expression Symbols does not match: ", functionsNames[i], symbol.toString()); //$NON-NLS-1$
- }
+ assertEquals("Wrong number of Symbols: ", functionsNames.length, expCount); //$NON-NLS-1$
}
- public void testNumberedOrderBy1() throws Exception {
+ @Test public void testNumberedOrderBy1() throws Exception {
Query resolvedQuery = (Query) getCommand("SELECT pm1.g1.e1, e2, e3 as x, (5+2) as y FROM pm1.g1 ORDER BY 3, 4, 1, 2"); //$NON-NLS-1$
helpCheckElements(resolvedQuery.getOrderBy(),
new String[] { "pm1.g1.e3", "pm1.g1.e1", "pm1.g1.e2" }, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
@@ -102,7 +103,7 @@
new String[] {});
}
- public void testNumberedOrderBy1_1() throws Exception {
+ @Test public void testNumberedOrderBy1_1() throws Exception {
Query resolvedQuery = (Query) getCommand("SELECT pm1.g1.e1, e2, e3 as x, (5 + e4) FROM pm1.g1 ORDER BY 3, 4, 1, 2"); //$NON-NLS-1$
helpCheckElements(resolvedQuery.getOrderBy(),
new String[] { "pm1.g1.e3", "pm1.g1.e4", "pm1.g1.e1", "pm1.g1.e2" }, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
@@ -112,7 +113,7 @@
new String[] {"(5.0 + e4)"}); //$NON-NLS-1$
}
- public void testNumberedOrderBy1_2() throws Exception {
+ @Test public void testNumberedOrderBy1_2() throws Exception {
Query resolvedQuery = (Query) getCommand("SELECT pm1.g1.e1, e2, concat(e3,'x'), concat(e2, 5) FROM pm1.g1 ORDER BY 3, 4, 1, 2"); //$NON-NLS-1$
helpCheckElements(resolvedQuery.getOrderBy(),
new String[] { "pm1.g1.e3", "pm1.g1.e2", "pm1.g1.e1", "pm1.g1.e2" }, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
@@ -122,7 +123,7 @@
new String[] {"concat(e3, 'x')", "concat(e2, '5')"}); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testNumberedOrderBy1_3() throws Exception {
+ @Test public void testNumberedOrderBy1_3() throws Exception {
Query resolvedQuery = (Query) getCommand("SELECT pm1.g1.e1, avg(e2), e3, concat(e2, 5) FROM pm1.g1 ORDER BY 3, 4, 1, 2"); //$NON-NLS-1$
helpCheckElements(resolvedQuery.getOrderBy(),
new String[] { "pm1.g1.e3", "pm1.g1.e2", "pm1.g1.e1", "pm1.g1.e2" }, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
@@ -132,7 +133,7 @@
new String[] {"concat(e2, '5')", "AVG(e2)"}); //$NON-NLS-1$ //$NON-NLS-2$
}
- public void testNumberedOrderBy1_4() throws Exception {
+ @Test public void testNumberedOrderBy1_4() throws Exception {
String sql = "select e1, (select e2 from pm4.g1) from pm4.g2 X order by 2"; //$NON-NLS-1$
Query resolvedQuery = (Query) getCommand(sql);
@@ -140,140 +141,140 @@
new String[] {"(SELECT e2 FROM pm4.g1)"}); //$NON-NLS-1$
}
- public void testOrderBy1() throws Exception {
+ @Test public void testOrderBy1() throws Exception {
Query resolvedQuery = (Query) getCommand("SELECT pm1.g1.e1, e2, e3 as x, (5+2) as y FROM pm1.g1 ORDER BY x, y, pm1.g1.e1, e2"); //$NON-NLS-1$
helpCheckElements(resolvedQuery.getOrderBy(),
new String[] { "pm1.g1.e3", "pm1.g1.e1", "pm1.g1.e2" }, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
new String[] { "pm1.g1.e3", "pm1.g1.e1", "pm1.g1.e2" }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
- public void testOrderBy2() throws Exception {
+ @Test public void testOrderBy2() throws Exception {
Query resolvedQuery = (Query) getCommand("SELECT * FROM pm1.g1 ORDER BY e1"); //$NON-NLS-1$
helpCheckElements(resolvedQuery.getOrderBy(),
new String[] { "pm1.g1.e1" }, //$NON-NLS-1$
new String[] { "pm1.g1.e1" }); //$NON-NLS-1$
}
- public void testOrderBy3() throws Exception {
+ @Test public void testOrderBy3() throws Exception {
Query resolvedQuery = (Query) getCommand("SELECT * FROM pm1.g1 ORDER BY pm1.g1.e1"); //$NON-NLS-1$
helpCheckElements(resolvedQuery.getOrderBy(),
new String[] { "pm1.g1.e1" }, //$NON-NLS-1$
new String[] { "pm1.g1.e1" }); //$NON-NLS-1$
}
- public void testOrderBy4() throws Exception {
+ @Test public void testOrderBy4() throws Exception {
Query resolvedQuery = (Query) getCommand("SELECT e1 FROM pm1.g1 ORDER BY pm1.g1.e1"); //$NON-NLS-1$
helpCheckElements(resolvedQuery.getOrderBy(),
new String[] { "pm1.g1.e1" }, //$NON-NLS-1$
new String[] { "pm1.g1.e1" }); //$NON-NLS-1$
}
- public void testOrderBy5() throws Exception {
+ @Test public void testOrderBy5() throws Exception {
Query resolvedQuery = (Query) getCommand("SELECT e1 FROM pm1.g1 ORDER BY e1"); //$NON-NLS-1$
helpCheckElements(resolvedQuery.getOrderBy(),
new String[] { "pm1.g1.e1" }, //$NON-NLS-1$
new String[] { "pm1.g1.e1" }); //$NON-NLS-1$
}
- public void testOrderBy6() throws Exception {
+ @Test public void testOrderBy6() throws Exception {
Query resolvedQuery = (Query) getCommand("SELECT e1 FROM pm1.g1 AS x ORDER BY e1"); //$NON-NLS-1$
helpCheckElements(resolvedQuery.getOrderBy(),
new String[] { "x.e1" }, //$NON-NLS-1$
new String[] { "pm1.g1.e1" }); //$NON-NLS-1$
}
- public void testOrderBy7() throws Exception {
+ @Test public void testOrderBy7() throws Exception {
Query resolvedQuery = (Query) getCommand("SELECT e1 FROM pm1.g1 AS x ORDER BY x.e1"); //$NON-NLS-1$
helpCheckElements(resolvedQuery.getOrderBy(),
new String[] { "x.e1" }, //$NON-NLS-1$
new String[] { "pm1.g1.e1" }); //$NON-NLS-1$
}
- public void testOrderBy8() throws Exception {
+ @Test public void testOrderBy8() throws Exception {
Query resolvedQuery = (Query) getCommand("SELECT x.e1 FROM pm1.g1 AS x ORDER BY e1"); //$NON-NLS-1$
helpCheckElements(resolvedQuery.getOrderBy(),
new String[] { "x.e1" }, //$NON-NLS-1$
new String[] { "pm1.g1.e1" }); //$NON-NLS-1$
}
- public void testOrderBy9() throws Exception {
+ @Test public void testOrderBy9() throws Exception {
Query resolvedQuery = (Query) getCommand("SELECT x.e1 FROM pm1.g1 AS x ORDER BY x.e1"); //$NON-NLS-1$
helpCheckElements(resolvedQuery.getOrderBy(),
new String[] { "x.e1" }, //$NON-NLS-1$
new String[] { "pm1.g1.e1" }); //$NON-NLS-1$
}
- public void testOrderBy10() throws Exception {
+ @Test public void testOrderBy10() throws Exception {
Query resolvedQuery = (Query) getCommand("SELECT a.e1, b.e1 FROM pm1.g1 AS a, pm1.g1 AS b ORDER BY a.e1"); //$NON-NLS-1$
helpCheckElements(resolvedQuery.getOrderBy(),
new String[] { "a.e1" }, //$NON-NLS-1$
new String[] { "pm1.g1.e1" }); //$NON-NLS-1$
}
- public void testOrderBy11() throws Exception {
+ @Test public void testOrderBy11() throws Exception {
Query resolvedQuery = (Query) getCommand("SELECT a.e1, b.e1 FROM pm1.g1 AS a, pm1.g1 AS b ORDER BY b.e1"); //$NON-NLS-1$
helpCheckElements(resolvedQuery.getOrderBy(),
new String[] { "b.e1" }, //$NON-NLS-1$
new String[] { "pm1.g1.e1" }); //$NON-NLS-1$
}
- public void testOrderBy12() throws Exception {
+ @Test public void testOrderBy12() throws Exception {
Query resolvedQuery = (Query) getCommand("SELECT a.e1, pm1.g1.e1 FROM pm1.g1 AS a, pm1.g1 ORDER BY a.e1"); //$NON-NLS-1$
helpCheckElements(resolvedQuery.getOrderBy(),
new String[] { "a.e1" }, //$NON-NLS-1$
new String[] { "pm1.g1.e1" }); //$NON-NLS-1$
}
- public void testOrderBy13() throws Exception {
+ @Test public void testOrderBy13() throws Exception {
Query resolvedQuery = (Query) getCommand("SELECT a.e1, pm1.g1.e1 FROM pm1.g1 AS a, pm1.g1 ORDER BY pm1.g1.e1"); //$NON-NLS-1$
helpCheckElements(resolvedQuery.getOrderBy(),
new String[] { "pm1.g1.e1" }, //$NON-NLS-1$
new String[] { "pm1.g1.e1" }); //$NON-NLS-1$
}
- public void testOrderBy14() throws Exception {
+ @Test public void testOrderBy14() throws Exception {
Query resolvedQuery = (Query) getCommand("SELECT a.e1 as x, pm1.g1.e1 as y FROM pm1.g1 AS a, pm1.g1 ORDER BY x"); //$NON-NLS-1$
helpCheckElements(resolvedQuery.getOrderBy(),
new String[] { "a.e1" }, //$NON-NLS-1$
new String[] { "pm1.g1.e1" }); //$NON-NLS-1$
}
- public void testOrderBy15() throws Exception {
+ @Test public void testOrderBy15() throws Exception {
Query resolvedQuery = (Query) getCommand("SELECT a.e1 as x, pm1.g1.e1 as y FROM pm1.g1 AS a, pm1.g1 ORDER BY y"); //$NON-NLS-1$
helpCheckElements(resolvedQuery.getOrderBy(),
new String[] { "pm1.g1.e1" }, //$NON-NLS-1$
new String[] { "pm1.g1.e1" }); //$NON-NLS-1$
}
- public void testNumberedOrderBy2() throws Exception {
+ @Test public void testNumberedOrderBy2() throws Exception {
Query resolvedQuery = (Query) getCommand("SELECT * FROM pm1.g1 ORDER BY 1"); //$NON-NLS-1$
helpCheckElements(resolvedQuery.getOrderBy(),
new String[] { "pm1.g1.e1" }, //$NON-NLS-1$
new String[] { "pm1.g1.e1" }); //$NON-NLS-1$
}
- public void testNumberedOrderBy3() throws Exception {
+ @Test public void testNumberedOrderBy3() throws Exception {
Query resolvedQuery = (Query) getCommand("SELECT * FROM pm1.g1 ORDER BY 1"); //$NON-NLS-1$
helpCheckElements(resolvedQuery.getOrderBy(),
new String[] { "pm1.g1.e1" }, //$NON-NLS-1$
new String[] { "pm1.g1.e1" }); //$NON-NLS-1$
}
- public void testNumberedOrderBy4() throws Exception {
+ @Test public void testNumberedOrderBy4() throws Exception {
Query resolvedQuery = (Query) getCommand("SELECT e1 FROM pm1.g1 ORDER BY 1"); //$NON-NLS-1$
helpCheckElements(resolvedQuery.getOrderBy(),
new String[] { "pm1.g1.e1" }, //$NON-NLS-1$
new String[] { "pm1.g1.e1" }); //$NON-NLS-1$
}
- public void testNumberedOrderBy5() throws Exception {
+ @Test public void testNumberedOrderBy5() throws Exception {
Query resolvedQuery = (Query) getCommand("SELECT x.e1 FROM pm1.g1 AS x ORDER BY 1"); //$NON-NLS-1$
helpCheckElements(resolvedQuery.getOrderBy(),
new String[] { "x.e1" }, //$NON-NLS-1$
new String[] { "pm1.g1.e1" }); //$NON-NLS-1$
}
- public void testNumberedOrderBy8() throws Exception {
+ @Test public void testNumberedOrderBy8() throws Exception {
Query resolvedQuery = (Query) getCommand("SELECT a.e1 as x, pm1.g1.e1 as y FROM pm1.g1 AS a, pm1.g1 ORDER BY 1"); //$NON-NLS-1$
helpCheckElements(resolvedQuery.getOrderBy(),
new String[] { "a.e1" }, //$NON-NLS-1$
@@ -283,7 +284,7 @@
/**
* partially-qualified ORDER BY's with ambiguous short group names
*/
- public void testDefect10729() throws Exception {
+ @Test public void testDefect10729() throws Exception {
Query resolvedQuery = (Query) getCommand("SELECT pm1.g1.e1 FROM pm1.g1 ORDER BY g1.e1"); //$NON-NLS-1$
helpCheckElements(resolvedQuery.getOrderBy(),
new String[] { "pm1.g1.e1" }, //$NON-NLS-1$
@@ -293,18 +294,36 @@
/**
* partially-qualified ORDER BY's with ambiguous short group names
*/
- public void testDefect10729a() throws Exception {
+ @Test public void testDefect10729a() throws Exception {
Query resolvedQuery = (Query) getCommand("SELECT pm1.g1.e1 FROM pm1.g1 ORDER BY e1"); //$NON-NLS-1$
helpCheckElements(resolvedQuery.getOrderBy(),
new String[] { "pm1.g1.e1" }, //$NON-NLS-1$
new String[] { "pm1.g1.e1" } ); //$NON-NLS-1$
}
- public void testAliasedOrderBy_ConstantElement() throws Exception {
+ @Test public void testAliasedOrderBy_ConstantElement() throws Exception {
Query resolvedQuery = (Query) getCommand("SELECT 0 AS SOMEINT, pm1.g1.e1 as y FROM pm1.g1 ORDER BY y, SOMEINT"); //$NON-NLS-1$
helpCheckElements(resolvedQuery.getOrderBy(),
new String[] { "pm1.g1.e1" }, //$NON-NLS-1$
new String[] { "pm1.g1.e1" } ); //$NON-NLS-1$
}
+
+ @Test public void testOrderByExpression() throws Exception {
+ Query resolvedQuery = (Query) getCommand("SELECT 0 AS SOMEINT, pm1.g1.e2 as y FROM pm1.g1 ORDER BY y + SOMEINT, e3"); //$NON-NLS-1$
+ assertEquals("SELECT Y_1.SOMEINT, Y_1.Y FROM (SELECT X_1.SOMEINT, X_1.Y, X_1.E3, (X_1.Y + X_1.SOMEINT) AS EXPR1 FROM (SELECT 0 AS SOMEINT, pm1.g1.e2 AS y, e3 FROM pm1.g1) AS X_1) AS Y_1 ORDER BY Y_1.EXPR1, Y_1.E3", resolvedQuery.toString()); //$NON-NLS-1$
+ }
+
+ @Test public void testRewiteOrderBy() {
+ helpTestRewriteCommand("SELECT 1+1 as a FROM pm1.g1 order by a", "SELECT 2 AS a FROM pm1.g1"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ @Test public void testRewiteOrderBy1() {
+ helpTestRewriteCommand("SELECT 1+1 as a FROM pm1.g1 union select pm1.g2.e1 from pm1.g2 order by a", "SELECT '2' AS a FROM pm1.g1 UNION SELECT pm1.g2.e1 FROM pm1.g2 ORDER BY a"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ @Test public void testOrderByDuplicateRemoval() {
+ String sql = "SELECT pm1.g1.e1, pm1.g1.e1 as c1234567890123456789012345678901234567890, pm1.g1.e2 FROM pm1.g1 ORDER BY c1234567890123456789012345678901234567890, e2, e1 "; //$NON-NLS-1$
+ helpTestRewriteCommand(sql, "SELECT pm1.g1.e1, pm1.g1.e1 AS c1234567890123456789012345678901234567890, pm1.g1.e2 FROM pm1.g1 ORDER BY c1234567890123456789012345678901234567890, pm1.g1.e2"); //$NON-NLS-1$
+ }
}
Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/rewriter/TestQueryRewriter.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/rewriter/TestQueryRewriter.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/rewriter/TestQueryRewriter.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -120,8 +120,7 @@
actual = QueryRewriter.rewriteCriteria(origCrit, null, null, null);
assertEquals("Did not rewrite correctly: ", expectedCrit, actual); //$NON-NLS-1$
} catch(QueryValidatorException e) {
- e.printStackTrace();
- fail("Exception during rewriting (" + e.getClass().getName() + "): " + e.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$
+ throw new RuntimeException(e);
}
return actual;
}
@@ -162,7 +161,7 @@
assertNotNull("Expected a QueryValidatorException but got none.", exception); //$NON-NLS-1$
}
- private Command helpTestRewriteCommand(String original, String expected) {
+ static Command helpTestRewriteCommand(String original, String expected) {
try {
return helpTestRewriteCommand(original, expected, FakeMetadataFactory.example1Cached());
} catch(MetaMatrixException e) {
@@ -170,7 +169,7 @@
}
}
- private Command helpTestRewriteCommand(String original, String expected, QueryMetadataInterface metadata) throws MetaMatrixException {
+ static Command helpTestRewriteCommand(String original, String expected, QueryMetadataInterface metadata) throws MetaMatrixException {
Command command = QueryParser.getQueryParser().parseCommand(original);
QueryResolver.resolveCommand(command, metadata);
Command rewriteCommand = QueryRewriter.rewrite(command, null, metadata, null);
@@ -402,7 +401,8 @@
helpTestRewriteCriteria("PARSEDATE(pm3.g1.e1, 'yyyyMM') = {d'2003-05-01'}", //$NON-NLS-1$
"pm3.g1.e1 = '200305'" ); //$NON-NLS-1$
}
-
+
+ @Ignore(value="we're no longer considering parsedate directly")
@Test public void testRewriteCrit_parseDate2() {
helpTestRewriteCriteria("PARSEDATE(pm3.g1.e1, 'yyyyMM') = {d'2003-05-02'}", //$NON-NLS-1$
"1 = 0" ); //$NON-NLS-1$
@@ -833,7 +833,7 @@
procedure = procedure + "END\n"; //$NON-NLS-1$
procedure = procedure + "END\n"; //$NON-NLS-1$
- String userQuery = "Insert into vm1.g1 (e1, e2) values (\"String\", 1)"; //$NON-NLS-1$
+ String userQuery = "Insert into vm1.g1 (e1, e2) values ('String', 1)"; //$NON-NLS-1$
String rewritProc = "CREATE PROCEDURE\n"; //$NON-NLS-1$
rewritProc = rewritProc + "BEGIN\n"; //$NON-NLS-1$
@@ -860,7 +860,7 @@
procedure = procedure + "END\n"; //$NON-NLS-1$
procedure = procedure + "END\n"; //$NON-NLS-1$
- String userQuery = "Insert into vm1.g1 (e1, e2) values (\"String\", 1)"; //$NON-NLS-1$
+ String userQuery = "Insert into vm1.g1 (e1, e2) values ('String', 1)"; //$NON-NLS-1$
String rewritProc = "CREATE PROCEDURE\n"; //$NON-NLS-1$
rewritProc = rewritProc + "BEGIN\n"; //$NON-NLS-1$
@@ -888,7 +888,7 @@
procedure = procedure + "END\n"; //$NON-NLS-1$
procedure = procedure + "END\n"; //$NON-NLS-1$
- String userQuery = "Insert into vm1.g1 (e1, e2) values (\"String\", 1)"; //$NON-NLS-1$
+ String userQuery = "Insert into vm1.g1 (e1, e2) values ('String', 1)"; //$NON-NLS-1$
String rewritProc = "CREATE PROCEDURE\n"; //$NON-NLS-1$
rewritProc = rewritProc + "BEGIN\n"; //$NON-NLS-1$
@@ -911,7 +911,7 @@
procedure = procedure + "END\n"; //$NON-NLS-1$
procedure = procedure + "END\n"; //$NON-NLS-1$
- String userQuery = "Insert into vm1.g1 (e1, e2) values (\"String\", 1)"; //$NON-NLS-1$
+ String userQuery = "Insert into vm1.g1 (e1, e2) values ('String', 1)"; //$NON-NLS-1$
String rewritProc = "CREATE PROCEDURE\n"; //$NON-NLS-1$
rewritProc = rewritProc + "BEGIN\n"; //$NON-NLS-1$
@@ -929,13 +929,13 @@
String procedure = "CREATE PROCEDURE\n"; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
- procedure = procedure + "IF (CHANGING.e1 = \"false\")\n"; //$NON-NLS-1$
+ procedure = procedure + "IF (CHANGING.e1 = 'false')\n"; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "Select e1 from vm1.g1 where HAS = CRITERIA ON (vm1.g1.e2);\n"; //$NON-NLS-1$
procedure = procedure + "END\n"; //$NON-NLS-1$
procedure = procedure + "END\n"; //$NON-NLS-1$
- String userQuery = "Update vm1.g1 SET e1 = \"String\", e2 =1 where e2 = 10"; //$NON-NLS-1$
+ String userQuery = "Update vm1.g1 SET e1 = 'String', e2 =1 where e2 = 10"; //$NON-NLS-1$
String rewritProc = "CREATE PROCEDURE\n"; //$NON-NLS-1$
rewritProc = rewritProc + "BEGIN\n"; //$NON-NLS-1$
@@ -952,12 +952,12 @@
String procedure = "CREATE PROCEDURE\n"; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
- procedure = procedure + "IF (CHANGING.e1 = \"true\")\n"; //$NON-NLS-1$
+ procedure = procedure + "IF (CHANGING.e1 = 'true')\n"; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "END\n"; //$NON-NLS-1$
procedure = procedure + "END\n"; //$NON-NLS-1$
- String userQuery = "Update vm1.g1 SET e1 = \"String\", e2 =1 where e2 = 10"; //$NON-NLS-1$
+ String userQuery = "Update vm1.g1 SET e1 = 'String', e2 =1 where e2 = 10"; //$NON-NLS-1$
String rewritProc = "CREATE PROCEDURE\n"; //$NON-NLS-1$
rewritProc = rewritProc + "BEGIN\n"; //$NON-NLS-1$
@@ -974,13 +974,13 @@
String procedure = "CREATE PROCEDURE\n"; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
- procedure = procedure + "IF (CHANGING.e1 = \"true\")\n"; //$NON-NLS-1$
+ procedure = procedure + "IF (CHANGING.e1 = 'true')\n"; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "Select e2 from pm1.g1 where TRANSLATE = CRITERIA ON (vm1.g1.e2);\n"; //$NON-NLS-1$
procedure = procedure + "END\n"; //$NON-NLS-1$
procedure = procedure + "END\n"; //$NON-NLS-1$
- String userQuery = "Update vm1.g1 SET e1 = \"String\", e2 =1 where e2 = 10"; //$NON-NLS-1$
+ String userQuery = "Update vm1.g1 SET e1 = 'String', e2 =1 where e2 = 10"; //$NON-NLS-1$
String rewritProc = "CREATE PROCEDURE\n"; //$NON-NLS-1$
rewritProc = rewritProc + "BEGIN\n"; //$NON-NLS-1$
@@ -998,13 +998,13 @@
String procedure = "CREATE PROCEDURE\n"; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
- procedure = procedure + "IF (CHANGING.e1 = \"true\")\n"; //$NON-NLS-1$
+ procedure = procedure + "IF (CHANGING.e1 = 'true')\n"; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
procedure = procedure + "Select e2 from pm1.g1 where TRANSLATE = CRITERIA ON (vm1.g1.e2) with (vm1.g1.e2 = convert(sqrt(pm1.g1.e2), integer));\n"; //$NON-NLS-1$
procedure = procedure + "END\n"; //$NON-NLS-1$
procedure = procedure + "END\n"; //$NON-NLS-1$
- String userQuery = "Update vm1.g1 SET e1 = \"String\", e2 =1 where e2 = 10"; //$NON-NLS-1$
+ String userQuery = "Update vm1.g1 SET e1 = 'String', e2 =1 where e2 = 10"; //$NON-NLS-1$
String rewritProc = "CREATE PROCEDURE\n"; //$NON-NLS-1$
rewritProc = rewritProc + "BEGIN\n"; //$NON-NLS-1$
@@ -1035,7 +1035,7 @@
rewritProc = rewritProc + "DECLARE String var1;\n"; //$NON-NLS-1$
rewritProc = rewritProc + "IF((var1 = 'x') OR (var1 = 'y'))\n"; //$NON-NLS-1$
rewritProc = rewritProc + "BEGIN\n"; //$NON-NLS-1$
- rewritProc = rewritProc + "SELECT pm1.g1.e2, null AS E2_0, FALSE AS E2_1, TRUE AS E1 FROM pm1.g1;\n"; //$NON-NLS-1$
+ rewritProc = rewritProc + "SELECT pm1.g1.e2, null, FALSE, TRUE FROM pm1.g1;\n"; //$NON-NLS-1$
rewritProc = rewritProc + "END\n"; //$NON-NLS-1$
rewritProc = rewritProc + "END"; //$NON-NLS-1$
@@ -1365,7 +1365,7 @@
@Test public void testRewriteProcedure24() {
String procedure = "CREATE PROCEDURE "; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
- procedure = procedure + "UPDATE pm1.g1 SET e2=Input.e2 WHERE TRANSLATE LIKE CRITERIA ON (e1) WITH (e1=concat(pm1.g1.e1, \"%\"));\n"; //$NON-NLS-1$
+ procedure = procedure + "UPDATE pm1.g1 SET e2=Input.e2 WHERE TRANSLATE LIKE CRITERIA ON (e1) WITH (e1=concat(pm1.g1.e1, '%'));\n"; //$NON-NLS-1$
procedure = procedure + "END\n"; //$NON-NLS-1$
String userQuery = "UPDATE vm1.g1 set E2=1 where e2 = 1 and e1 LIKE 'mnopxyz_'"; //$NON-NLS-1$
@@ -1526,7 +1526,7 @@
@Test public void testRewriteRecursive() {
Command c = helpTestRewriteCommand("SELECT e2 FROM vm1.g33", "SELECT e2 FROM vm1.g33"); //$NON-NLS-1$ //$NON-NLS-2$
- Command innerCommand = (Command) c.getSubCommands().get(0);
+ Command innerCommand = c.getSubCommands().get(0);
assertEquals("Inner command not rewritten", "SELECT e2 FROM pm1.g1 WHERE e2 = 2", innerCommand.toString()); //$NON-NLS-1$ //$NON-NLS-2$
@@ -1794,7 +1794,7 @@
procedure = procedure + "END\n"; //$NON-NLS-1$
procedure = procedure + "END\n"; //$NON-NLS-1$
- String userQuery = "Insert into vm1.g1 (e1, e2) values (\"String\", 1)"; //$NON-NLS-1$
+ String userQuery = "Insert into vm1.g1 (e1, e2) values ('String', 1)"; //$NON-NLS-1$
QueryMetadataInterface metadata = FakeMetadataFactory.exampleUpdateProc(FakeMetadataObject.Props.INSERT_PROCEDURE, procedure);
@@ -1821,7 +1821,7 @@
procedure = procedure + "END\n"; //$NON-NLS-1$
procedure = procedure + "END\n"; //$NON-NLS-1$
- String userQuery = "Insert into vm1.g1 (e1, e2) values (\"String\", 1)"; //$NON-NLS-1$
+ String userQuery = "Insert into vm1.g1 (e1, e2) values ('String', 1)"; //$NON-NLS-1$
String rewritProc = "CREATE PROCEDURE\n"; //$NON-NLS-1$
rewritProc = rewritProc + "BEGIN\n"; //$NON-NLS-1$
@@ -1843,7 +1843,7 @@
procedure = procedure + "Select count(*) from pm1.g1;\n"; //$NON-NLS-1$
procedure = procedure + "END\n"; //$NON-NLS-1$
- String userQuery = "Insert into vm1.g1 (e1, e2) values (\"String\", 1)"; //$NON-NLS-1$
+ String userQuery = "Insert into vm1.g1 (e1, e2) values ('String', 1)"; //$NON-NLS-1$
String rewritProc = "CREATE PROCEDURE\n"; //$NON-NLS-1$
rewritProc = rewritProc + "BEGIN\n"; //$NON-NLS-1$
@@ -1998,15 +1998,7 @@
}
}
}
-
- @Test public void testRewiteOrderBy() {
- helpTestRewriteCommand("SELECT 1+1 as a FROM pm1.g1 order by a", "SELECT 2 AS a FROM pm1.g1"); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- @Test public void testRewiteOrderBy1() {
- helpTestRewriteCommand("SELECT 1+1 as a FROM pm1.g1 union select pm1.g2.e1 from pm1.g2 order by a", "SELECT '2' AS a FROM pm1.g1 UNION SELECT pm1.g2.e1 FROM pm1.g2 ORDER BY a"); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
+
/**
* The rewrite creates inline view to do the type conversion.
*
@@ -2032,12 +2024,7 @@
helpTestRewriteCommand(sql, "SELECT 1 AS a"); //$NON-NLS-1$
}
-
- @Test public void testOrderByDuplicateRemoval() {
- String sql = "SELECT pm1.g1.e1, pm1.g1.e1 as c1234567890123456789012345678901234567890 FROM pm1.g1 ORDER BY c1234567890123456789012345678901234567890, e1 "; //$NON-NLS-1$
- helpTestRewriteCommand(sql, "SELECT pm1.g1.e1, pm1.g1.e1 AS c1234567890123456789012345678901234567890 FROM pm1.g1 ORDER BY c1234567890123456789012345678901234567890"); //$NON-NLS-1$
- }
-
+
/**
* Case 4814
*/
@@ -2286,4 +2273,21 @@
helpTestRewriteCriteria(original, parseCriteria("convert(BQT1.SmallA.TimestampValue, time) in ({t'10:00:00'}, {t'11:00:00'})", FakeMetadataFactory.exampleBQTCached()), FakeMetadataFactory.exampleBQTCached()); //$NON-NLS-1$
}
+ @Test public void testRewriteParseDate() {
+ String original = "parsedate(BQT1.SmallA.stringkey, 'yymmdd') = {d'1970-01-01'}"; //$NON-NLS-1$
+ FakeMetadataFacade metadata = FakeMetadataFactory.exampleBQTCached();
+ helpTestRewriteCriteria(original, parseCriteria("convert(parsetimestamp(BQT1.SmallA.stringkey, 'yymmdd'), date) = {d'1970-01-01'}", metadata), metadata); //$NON-NLS-1$
+ }
+
+ @Test public void testRewriteFormatTime() {
+ String original = "formattime(BQT1.SmallA.timevalue, 'hh:mm') = '08:02'"; //$NON-NLS-1$
+ FakeMetadataFacade metadata = FakeMetadataFactory.exampleBQTCached();
+ helpTestRewriteCriteria(original, parseCriteria("formattimestamp(convert(BQT1.SmallA.timevalue, timestamp), 'hh:mm') = '08:02'", metadata), metadata); //$NON-NLS-1$
+ }
+
+ @Test public void testRewriteTimestampAdd() {
+ String original = "timestampadd(SQL_TSI_SECOND, 1, BQT1.SmallA.timevalue) = {t'08:02:00'}"; //$NON-NLS-1$
+ FakeMetadataFacade metadata = FakeMetadataFactory.exampleBQTCached();
+ helpTestRewriteCriteria(original, parseCriteria("convert(timestampadd(SQL_TSI_SECOND, 1, convert(BQT1.SmallA.timevalue, timestamp)), time) = {t'08:02:00'}", metadata), metadata); //$NON-NLS-1$
+ }
}
Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/sql/visitor/TestSQLStringVisitor.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/sql/visitor/TestSQLStringVisitor.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/sql/visitor/TestSQLStringVisitor.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -512,7 +512,7 @@
public void testOption1() {
Option option = new Option();
- helpTest(option, ""); //$NON-NLS-1$
+ helpTest(option, "OPTION"); //$NON-NLS-1$
}
public void testOption2() {
Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/unittest/FakeMetadataFactory.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/unittest/FakeMetadataFactory.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/unittest/FakeMetadataFactory.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1092,10 +1092,10 @@
QueryNode vspqn59 = new QueryNode("vsp59", "CREATE VIRTUAL PROCEDURE BEGIN SELECT * INTO #temp FROM pm5.g3;INSERT INTO #temp (e1, e2) VALUES('integer',1); END"); //$NON-NLS-1$ //$NON-NLS-2$
FakeMetadataObject vsp59 = createVirtualProcedure("pm5.vsp59", pm6, Arrays.asList(new FakeMetadataObject[] { vspp1 }), vspqn59); //$NON-NLS-1$
- QueryNode vspqn60 = new QueryNode("vsp60", "CREATE VIRTUAL PROCEDURE BEGIN create local temporary table temp_table (column1 string);insert into temp_table (column1) values (\"First\");insert into temp_table (column1) values (\"Second\");insert into temp_table (column1) values (\"Third\");select * from temp_table; END"); //$NON-NLS-1$ //$NON-NLS-2$
+ QueryNode vspqn60 = new QueryNode("vsp60", "CREATE VIRTUAL PROCEDURE BEGIN create local temporary table temp_table (column1 string);insert into temp_table (column1) values ('First');insert into temp_table (column1) values ('Second');insert into temp_table (column1) values ('Third');select * from temp_table; END"); //$NON-NLS-1$ //$NON-NLS-2$
FakeMetadataObject vsp60 = createVirtualProcedure("pm1.vsp60", pm1, Arrays.asList(new FakeMetadataObject[] { vspp1 }), vspqn60); //$NON-NLS-1$
- QueryNode vspqn61 = new QueryNode("vsp61", "CREATE VIRTUAL PROCEDURE BEGIN create local temporary table temp_table (column1 string);insert into temp_table (column1) values (\"First\");drop table temp_table;create local temporary table temp_table (column1 string);insert into temp_table (column1) values (\"First\");insert into temp_table (column1) values (\"Second\");insert into temp_table (column1) values (\"Third\");select * from temp_table; END"); //$NON-NLS-1$ //$NON-NLS-2$
+ QueryNode vspqn61 = new QueryNode("vsp61", "CREATE VIRTUAL PROCEDURE BEGIN create local temporary table temp_table (column1 string);insert into temp_table (column1) values ('First');drop table temp_table;create local temporary table temp_table (column1 string);insert into temp_table (column1) values ('First');insert into temp_table (column1) values ('Second');insert into temp_table (column1) values ('Third');select * from temp_table; END"); //$NON-NLS-1$ //$NON-NLS-2$
FakeMetadataObject vsp61 = createVirtualProcedure("pm1.vsp61", pm1, Arrays.asList(new FakeMetadataObject[] { vspp1 }), vspqn61); //$NON-NLS-1$
QueryNode vspqn62 = new QueryNode("vsp62", "CREATE VIRTUAL PROCEDURE BEGIN create local temporary table temp_table (column1 string); select e1 as column1 into temp_table from pm1.g1;select * from temp_table; END"); //$NON-NLS-1$ //$NON-NLS-2$
@@ -1920,7 +1920,7 @@
QueryNode vm1g2n1 = new QueryNode("vm1.g2", "SELECT pm1.g2.e1, pm1.g2.e2, pm1.g2.e3 FROM pm1.g2"); //$NON-NLS-1$ //$NON-NLS-2$
FakeMetadataObject vm1g2 = createUpdatableVirtualGroup("vm1.g2", vm1, vm1g2n1); //$NON-NLS-1$
- QueryNode vm1g3n1 = new QueryNode("vm1.g3", "SELECT CONCAT(e1, \"m\") as x, (e2 +1) as y, Count(*) as e3, e4*50 as e4 FROM pm1.g1"); //$NON-NLS-1$ //$NON-NLS-2$
+ QueryNode vm1g3n1 = new QueryNode("vm1.g3", "SELECT CONCAT(e1, 'm') as x, (e2 +1) as y, Count(*) as e3, e4*50 as e4 FROM pm1.g1"); //$NON-NLS-1$ //$NON-NLS-2$
FakeMetadataObject vm1g3 = createUpdatableVirtualGroup("vm1.g3", vm1, vm1g3n1); //$NON-NLS-1$
QueryNode vm1g4n1 = new QueryNode("vm1.g4", "SELECT * FROM pm1.g1"); //$NON-NLS-1$ //$NON-NLS-2$
@@ -2134,7 +2134,8 @@
DataTypeManager.DefaultDataTypes.BIG_INTEGER, DataTypeManager.DefaultDataTypes.BIG_DECIMAL,
DataTypeManager.DefaultDataTypes.OBJECT };
- List bqt1SmallAe = createElements(bqt1SmallA, elemNames, elemTypes);
+ List<FakeMetadataObject> bqt1SmallAe = createElements(bqt1SmallA, elemNames, elemTypes);
+ bqt1SmallAe.get(1).putProperty(FakeMetadataObject.Props.NATIVE_TYPE, "char"); //$NON-NLS-1$
List bqt1SmallBe = createElements(bqt1SmallB, elemNames, elemTypes);
List bqt1MediumAe = createElements(bqt1MediumA, elemNames, elemTypes);
List bqt1MediumBe = createElements(bqt1MediumB, elemNames, elemTypes);
@@ -4166,9 +4167,9 @@
* @param types Array of element types
* @return List Ordered list of elements in the group
*/
- public static List createElements(FakeMetadataObject group, String[] names, String[] types) {
+ public static List<FakeMetadataObject> createElements(FakeMetadataObject group, String[] names, String[] types) {
String groupRoot = group.getName() + "."; //$NON-NLS-1$
- List elements = new ArrayList();
+ List<FakeMetadataObject> elements = new ArrayList<FakeMetadataObject>();
for(int i=0; i<names.length; i++) {
FakeMetadataObject element = createElement(groupRoot + names[i], group, types[i], i);
Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/validator/TestValidator.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/validator/TestValidator.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/validator/TestValidator.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -492,6 +492,11 @@
new String[] {"StringKey"}, FakeMetadataFactory.exampleBQTCached() ); //$NON-NLS-1$
}
+ public void testInvalidAggregate8() {
+ helpValidate("SELECT max(ObjectValue) FROM BQT1.SmallA GROUP BY StringKey", //$NON-NLS-1$
+ new String[] {"MAX(ObjectValue)"}, FakeMetadataFactory.exampleBQTCached() ); //$NON-NLS-1$
+ }
+
public void testInvalidAggregateIssue190644() {
helpValidate("SELECT e3 + 1 from pm1.g1 GROUP BY e2 + 1 HAVING e2 + 1 = 5", new String[] {"e3"}, FakeMetadataFactory.example1Cached()); //$NON-NLS-1$ //$NON-NLS-2$
}
Copied: branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestConnectorCapabilitiesFinder.java (from rev 1614, trunk/engine/src/test/java/org/teiid/dqp/internal/process/TestConnectorCapabilitiesFinder.java)
===================================================================
--- branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestConnectorCapabilitiesFinder.java (rev 0)
+++ branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestConnectorCapabilitiesFinder.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,76 @@
+/*
+ * 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.dqp.internal.process;
+
+import java.util.Arrays;
+
+import junit.framework.TestCase;
+
+import org.mockito.Mockito;
+
+import com.metamatrix.dqp.message.RequestMessage;
+import com.metamatrix.dqp.service.DataService;
+import com.metamatrix.dqp.service.VDBService;
+import com.metamatrix.query.optimizer.capabilities.BasicSourceCapabilities;
+import com.metamatrix.query.optimizer.capabilities.SourceCapabilities;
+
+/**
+ */
+public class TestConnectorCapabilitiesFinder extends TestCase {
+
+ /**
+ * Constructor for TestConnectorCapabilitiesFinder.
+ * @param name
+ */
+ public TestConnectorCapabilitiesFinder(String name) {
+ super(name);
+ }
+
+ public void testFind() throws Exception {
+ String vdbName = "myvdb"; //$NON-NLS-1$
+ String vdbVersion = "1"; //$NON-NLS-1$
+ String modelName = "model"; //$NON-NLS-1$
+ String functionName = "fakeFunction"; //$NON-NLS-1$
+
+ BasicSourceCapabilities caps = new BasicSourceCapabilities();
+ caps.setFunctionSupport("fakeFunction", true); //$NON-NLS-1$
+ RequestMessage request = new RequestMessage(null);
+ DQPWorkContext workContext = new DQPWorkContext();
+ workContext.setVdbName(vdbName);
+ workContext.setVdbVersion(vdbVersion);
+
+ VDBService vdbService = Mockito.mock(VDBService.class);
+ Mockito.stub(vdbService.getConnectorBindingNames(vdbName, vdbVersion, modelName)).toReturn(Arrays.asList(modelName));
+ DataService dataService = Mockito.mock(DataService.class);
+ BasicSourceCapabilities basicSourceCapabilities = new BasicSourceCapabilities();
+ basicSourceCapabilities.setFunctionSupport(functionName, true);
+ Mockito.stub(dataService.getCapabilities(modelName)).toReturn(basicSourceCapabilities);
+
+ CachedFinder finder = new CachedFinder(dataService, vdbService, request, workContext);
+
+ // Test
+ SourceCapabilities actual = finder.findCapabilities(modelName);
+ assertEquals("Did not get expected capabilities", true, actual.supportsFunction(functionName)); //$NON-NLS-1$
+ }
+
+}
Modified: branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCore.java
===================================================================
--- branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCore.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCore.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -22,8 +22,11 @@
package org.teiid.dqp.internal.process;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
import java.sql.ResultSet;
-import java.util.Map;
import java.util.Properties;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
@@ -34,12 +37,7 @@
import org.junit.Test;
import org.teiid.dqp.internal.datamgr.impl.FakeTransactionService;
import org.teiid.dqp.internal.datamgr.impl.FakeWorkManager;
-import org.teiid.dqp.internal.process.DQPCore;
-import org.teiid.dqp.internal.process.DQPWorkContext;
-import org.teiid.dqp.internal.process.DQPCore.ConnectorCapabilitiesCache;
-import static org.junit.Assert.*;
-
import com.metamatrix.api.exception.query.QueryResolverException;
import com.metamatrix.common.application.ApplicationEnvironment;
import com.metamatrix.common.vdb.api.ModelInfo;
@@ -54,8 +52,6 @@
import com.metamatrix.jdbc.api.ExecutionProperties;
import com.metamatrix.platform.security.api.MetaMatrixSessionID;
import com.metamatrix.platform.security.api.SessionToken;
-import com.metamatrix.query.optimizer.capabilities.BasicSourceCapabilities;
-import com.metamatrix.query.optimizer.capabilities.SourceCapabilities;
import com.metamatrix.query.unittest.FakeMetadataFactory;
@@ -81,17 +77,14 @@
env.bindService(DQPServiceNames.DATA_SERVICE, new AutoGenDataService());
env.bindService(DQPServiceNames.TRANSACTION_SERVICE, new FakeTransactionService());
FakeVDBService vdbService = new FakeVDBService();
+ vdbService.setDefaultPrivate(true);
vdbService.addBinding(vdbName, vdbVersion, "BQT1", "mmuuid:blah", "BQT"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- vdbService.addBinding(vdbName, vdbVersion, "BQT2", "mmuuid:blah", "BQT"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
vdbService.addBinding(vdbName, vdbVersion, "BQT3", "mmuuid:blah", "BQT"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
vdbService.addModel(vdbName, vdbVersion, "BQT3", ModelInfo.PRIVATE, false); //$NON-NLS-1$
env.bindService(DQPServiceNames.VDB_SERVICE, vdbService);
- core = new DQPCore() {
- public ApplicationEnvironment getEnvironment() {
- return env;
- }
- };
+ core = new DQPCore();
+ core.setEnvironment(env);
core.start(new Properties());
core.setWorkManager(new FakeWorkManager());
}
@@ -210,21 +203,6 @@
}
}
- @Test public void testCapabilitesCache() {
- ConnectorCapabilitiesCache cache = new ConnectorCapabilitiesCache();
- DQPWorkContext workContext = new DQPWorkContext();
- workContext.setVdbName("foo"); //$NON-NLS-1$
- workContext.setVdbVersion("1"); //$NON-NLS-1$
- Map<String, SourceCapabilities> vdbCapabilites = cache.getVDBConnectorCapabilities(workContext);
- assertNull(vdbCapabilites.get("model1")); //$NON-NLS-1$
- vdbCapabilites.put("model1", new BasicSourceCapabilities()); //$NON-NLS-1$
- vdbCapabilites = cache.getVDBConnectorCapabilities(workContext);
- assertNotNull(vdbCapabilites.get("model1")); //$NON-NLS-1$
- workContext.setVdbName("bar"); //$NON-NLS-1$
- vdbCapabilites = cache.getVDBConnectorCapabilities(workContext);
- assertNull(vdbCapabilites.get("model1")); //$NON-NLS-1$
- }
-
@Test public void testLookupVisibility() throws Exception {
helpTestVisibilityFails("select lookup('bqt3.smalla', 'intkey', 'stringkey', '?')"); //$NON-NLS-1$
}
@@ -252,7 +230,6 @@
helpTestVisibilityFails(xquery);
}
-
///////////////////////////Helper method///////////////////////////////////
private ResultsMessage helpExecute(String sql, String userName) throws Exception {
return helpExecute(sql, userName, 1, false);
Modified: branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCoreRequestHandling.java
===================================================================
--- branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCoreRequestHandling.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCoreRequestHandling.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -28,6 +28,8 @@
import junit.framework.TestCase;
+import org.teiid.dqp.internal.process.DQPCore.ClientState;
+
import com.metamatrix.api.exception.MetaMatrixException;
import com.metamatrix.dqp.exception.SourceWarning;
import com.metamatrix.dqp.message.AtomicRequestMessage;
@@ -83,7 +85,7 @@
private RequestID addRequest(DQPCore rm, String sessionId, int executionId) {
RequestMessage r0 = new RequestMessage("test command"); //$NON-NLS-1$
RequestID id = new RequestID(sessionId, executionId);
- addRequest(rm, r0, id, null, null); //$NON-NLS-1$
+ addRequest(rm, r0, id, null, null);
return id;
}
@@ -110,7 +112,7 @@
DQPCore rm = new DQPCore();
RequestMessage r0 = new RequestMessage("foo"); //$NON-NLS-1$
RequestID requestID = new RequestID(SESSION_STRING, 1);
- RequestWorkItem workItem = addRequest(rm, r0, requestID, null, null); //$NON-NLS-1$
+ RequestWorkItem workItem = addRequest(rm, r0, requestID, null, null);
assertTrue(workItem.resultsCursor.resultsRequested);
}
@@ -119,7 +121,7 @@
RequestMessage r0 = new RequestMessage("foo"); //$NON-NLS-1$
RequestID requestID = new RequestID(SESSION_STRING, 1);
- RequestWorkItem workItem = addRequest(rm, r0, requestID, null, null); //$NON-NLS-1$
+ RequestWorkItem workItem = addRequest(rm, r0, requestID, null, null);
workItem.addSourceFailureDetails(getSourceFailures("Model1", "Binding1", "Warning1")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
workItem.addSourceFailureDetails(getSourceFailures("Model2", "Binding2", "Warning2")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
@@ -140,7 +142,8 @@
}
RequestWorkItem workItem = new RequestWorkItem(rm, requestMsg, null, null, id, workContext);
workItem.setOriginalCommand(originalCommand);
- rm.addRequest(id, workItem);
+ ClientState state = rm.getClientState(id.getConnectionID(), true);
+ rm.addRequest(id, workItem, state);
return workItem;
}
Modified: branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestDataTierManager.java
===================================================================
--- branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestDataTierManager.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestDataTierManager.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -29,10 +29,10 @@
import java.util.Map;
import java.util.Properties;
+import org.teiid.connector.metadata.runtime.MetadataStore;
+
import junit.framework.TestCase;
-import org.teiid.connector.metadata.runtime.ConnectorMetadata;
-
import com.metamatrix.api.exception.MetaMatrixComponentException;
import com.metamatrix.api.exception.MetaMatrixException;
import com.metamatrix.common.application.ApplicationEnvironment;
@@ -50,6 +50,7 @@
import com.metamatrix.dqp.message.RequestMessage;
import com.metamatrix.dqp.service.DataService;
import com.metamatrix.dqp.service.FakeBufferService;
+import com.metamatrix.dqp.service.FakeMetadataService;
import com.metamatrix.dqp.service.FakeVDBService;
import com.metamatrix.platform.security.api.MetaMatrixSessionID;
import com.metamatrix.platform.security.api.SessionToken;
@@ -108,6 +109,7 @@
dataService,
vdbService,
bs,
+ new FakeMetadataService(),
20,
1000,
1000);
@@ -383,12 +385,13 @@
throw new MetaMatrixComponentException("Force fail on executeRequest for call # " + calls); //$NON-NLS-1$
}
}
- @Override
- public ConnectorMetadata getConnectorMetadata(String vdbName,
- String vdbVersion, String modelName) {
- throw new UnsupportedOperationException();
- }
@Override
+ public MetadataStore getConnectorMetadata(String vdbName,
+ String vdbVersion, String modelName, Properties importProperties)
+ throws MetaMatrixComponentException {
+ throw new UnsupportedOperationException();
+ }
+ @Override
public Collection<WorkerPoolStats> getConnectorStatistics(
String deployedConnectorName)
throws MetaMatrixComponentException {
Modified: branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestMetaDataProcessor.java
===================================================================
--- branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestMetaDataProcessor.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestMetaDataProcessor.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -82,7 +82,7 @@
ApplicationEnvironment env = new ApplicationEnvironment();
FakeVDBService vdbService = new FakeVDBService();
env.bindService(DQPServiceNames.VDB_SERVICE, vdbService);
- MetaDataProcessor mdProc = new MetaDataProcessor(mdSvc, requestMgr, prepPlanCache, env, null);
+ MetaDataProcessor mdProc = new MetaDataProcessor(mdSvc, requestMgr, prepPlanCache, env);
return mdProc.processMessage(requestID, workContext, null, true).getColumnMetadata();
}
@@ -126,19 +126,6 @@
assertEquals(0, metadata.length);
}
- public void testDefect15029() throws Exception {
- String sql = "SELECT * FROM g1"; //$NON-NLS-1$
- QueryMetadataInterface metadata = FakeMetadataFactory.examplePrivatePhysicalModel();
-
- MetadataResult response = helpTestQuery(metadata, sql);
-
- Map[] md = response.getColumnMetadata();
- assertNotNull(md);
- assertEquals(1, md.length);
- assertEquals("e1", md[0].get(ResultsMetadataConstants.ELEMENT_NAME)); //$NON-NLS-1$
- assertEquals("vm1.g1", md[0].get(ResultsMetadataConstants.GROUP_NAME)); //$NON-NLS-1$
- }
-
private MetadataResult helpTestQuery(QueryMetadataInterface metadata, String sql) throws Exception {
FakeVDBService vdbService = new FakeVDBService();
vdbService.addModel("MyVDB", "1", "pm1", ModelInfo.PRIVATE, false); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
@@ -151,7 +138,7 @@
// Initialize components
ApplicationEnvironment env = new ApplicationEnvironment();
env.bindService(DQPServiceNames.VDB_SERVICE, vdbService);
- MetaDataProcessor mdProc = new MetaDataProcessor(mdSvc, new DQPCore(), prepPlanCache, env, null);
+ MetaDataProcessor mdProc = new MetaDataProcessor(mdSvc, new DQPCore(), prepPlanCache, env);
DQPWorkContext workContext = new DQPWorkContext();
workContext.setVdbName("MyVDB"); //$NON-NLS-1$
@@ -195,7 +182,7 @@
while(iter.hasNext()) {
String type = (String) iter.next();
Class typeClass = DataTypeManager.getDataTypeClass(type);
- MetaDataProcessor processor = new MetaDataProcessor(null, null, null, null, null);
+ MetaDataProcessor processor = new MetaDataProcessor(null, null, null, null);
Map columnMetadata = processor.getDefaultColumn("vdb", "1", "t", "c", typeClass); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
verifyColumn(columnMetadata, type);
}
Modified: branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestPreparedStatement.java
===================================================================
--- branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestPreparedStatement.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestPreparedStatement.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -26,7 +26,6 @@
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.HashMap;
import java.util.List;
import org.junit.Test;
@@ -254,7 +253,7 @@
}
};
FakeApplicationEnvironment env = new FakeApplicationEnvironment(metadata, "example1", "1", "pm1", "1", "BINDING"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
- serverRequest.initialize(request, env, BufferManagerFactory.getStandaloneBufferManager(), null, new HashMap(), null, DEBUG, null, workContext, 101024);
+ serverRequest.initialize(request, env, BufferManagerFactory.getStandaloneBufferManager(), null, null, DEBUG, null, workContext, 101024);
serverRequest.setMetadata(capFinder, metadata, null);
serverRequest.processRequest();
Modified: branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestRequest.java
===================================================================
--- branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestRequest.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/TestRequest.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -25,7 +25,6 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
-import java.util.HashMap;
import java.util.List;
import junit.framework.TestCase;
@@ -122,9 +121,9 @@
FakeApplicationEnvironment environment =
new FakeApplicationEnvironment(metadata, VDB, VDB_VERSION, MODEL, BINDING_ID, BINDING_NAME);
- request.initialize(message, environment, null, null, null, null, false, null, workContext, 101024);
+ request.initialize(message, environment, null, null, null, false, null, workContext, 101024);
request.initMetadata();
- request.validateEntitlement(command);
+ request.validateAccess(command);
}
@@ -189,8 +188,8 @@
request = new Request();
}
request.initialize(message, environment, Mockito.mock(BufferManager.class),
- new FakeDataManager(), new HashMap(), null, false, null,
- workContext, 101024);
+ new FakeDataManager(), null, false, null, workContext,
+ 101024);
request.processRequest();
return request;
Modified: branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/validator/TestAuthorizationValidationVisitor.java
===================================================================
--- branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/validator/TestAuthorizationValidationVisitor.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/validator/TestAuthorizationValidationVisitor.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -27,6 +27,8 @@
import java.util.Iterator;
import java.util.Set;
+import org.mockito.Mockito;
+import org.teiid.dqp.internal.process.Request;
import org.teiid.dqp.internal.process.validator.AuthorizationValidationVisitor;
import junit.framework.TestCase;
@@ -34,8 +36,12 @@
import com.metamatrix.api.exception.MetaMatrixComponentException;
import com.metamatrix.api.exception.query.QueryParserException;
import com.metamatrix.api.exception.query.QueryResolverException;
+import com.metamatrix.api.exception.query.QueryValidatorException;
+import com.metamatrix.common.vdb.api.ModelInfo;
import com.metamatrix.dqp.service.AuthorizationService;
import com.metamatrix.dqp.service.FakeAuthorizationService;
+import com.metamatrix.dqp.service.FakeVDBService;
+import com.metamatrix.dqp.service.VDBService;
import com.metamatrix.query.metadata.QueryMetadataInterface;
import com.metamatrix.query.parser.QueryParser;
import com.metamatrix.query.resolver.QueryResolver;
@@ -119,7 +125,7 @@
Command command = parser.parseCommand(sql);
QueryResolver.resolveCommand(command, metadata);
- AuthorizationValidationVisitor visitor = new AuthorizationValidationVisitor(CONN_ID, svc);
+ AuthorizationValidationVisitor visitor = new AuthorizationValidationVisitor(CONN_ID, svc, Mockito.mock(VDBService.class), "foo", "1"); //$NON-NLS-1$ //$NON-NLS-2$
ValidatorReport report = Validator.validate(command, metadata, visitor, true);
if(report.hasItems()) {
ValidatorFailure firstFailure = (ValidatorFailure) report.getItems().iterator().next();
@@ -215,14 +221,6 @@
helpTest(exampleAuthSvc2(), "SELECT e1, e2, e3, e4 INTO pm3.g2 FROM pm2.g1", FakeMetadataFactory.example1Cached(), new String[] {"pm3.g2.e1", "pm3.g2.e2"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
- public void testProcGloballyAccessible() throws Exception {
- AuthorizationValidationVisitor.addGloballyAccessibleProcedure("pm1.sq2"); //$NON-NLS-1$
- helpTest(exampleAuthSvc1(), "EXEC pm1.sq2('xyz')", FakeMetadataFactory.example1Cached(), new String[] {}); //$NON-NLS-1$
-
- AuthorizationValidationVisitor.removeGloballyAccessibleProcedure("pm1.sq2"); //$NON-NLS-1$
- helpTest(exampleAuthSvc1(), "EXEC pm1.sq2('xyz')", FakeMetadataFactory.example1Cached(), new String[] {"pm1.sq2"}); //$NON-NLS-1$//$NON-NLS-2$
- }
-
public void testTempTableSelectInto() throws Exception {
helpTest(exampleAuthSvc1(), "SELECT e1 INTO #temp FROM pm1.g1", FakeMetadataFactory.example1Cached(), new String[] {}); //$NON-NLS-1$
}
@@ -242,4 +240,31 @@
public void testXMLInAccessible() throws Exception {
helpTest(exampleAuthSvc1(), "select * from xmltest.doc1", FakeMetadataFactory.example1Cached(), new String[] {"xmltest.doc1"}); //$NON-NLS-1$ //$NON-NLS-2$
}
+
+ private void helpTestLookupVisibility(boolean visible) throws QueryParserException, QueryValidatorException, MetaMatrixComponentException {
+ FakeVDBService vdbService = new FakeVDBService();
+ String vdbName = "foo"; //$NON-NLS-1$
+ String vdbVersion = "1"; //$NON-NLS-1$
+ String modelName = "pm1"; //$NON-NLS-1$
+ vdbService.addModel(vdbName, vdbVersion, modelName, visible?ModelInfo.PUBLIC:ModelInfo.PRIVATE, false);
+ AuthorizationValidationVisitor mvvv = new AuthorizationValidationVisitor(CONN_ID, Mockito.mock(AuthorizationService.class), vdbService, vdbName, vdbVersion);
+
+ String sql = "select lookup('pm1.g1', 'e1', 'e2', 1)"; //$NON-NLS-1$
+ Command command = QueryParser.getQueryParser().parseCommand(sql);
+ Request.validateWithVisitor(mvvv, FakeMetadataFactory.example1Cached(), command, true);
+ }
+
+ public void testLookupVisibility() throws Exception {
+ helpTestLookupVisibility(true);
+ }
+
+ public void testLookupVisibilityFails() throws Exception {
+ try {
+ helpTestLookupVisibility(false);
+ fail("expected exception"); //$NON-NLS-1$
+ } catch (QueryValidatorException e) {
+ assertEquals("Group does not exist: pm1.g1", e.getMessage()); //$NON-NLS-1$
+ }
+ }
+
}
Deleted: branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/validator/TestModelVisibilityValidationVisitor.java
===================================================================
--- branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/validator/TestModelVisibilityValidationVisitor.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/engine/src/test/java/org/teiid/dqp/internal/process/validator/TestModelVisibilityValidationVisitor.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,67 +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.dqp.internal.process.validator;
-
-import org.teiid.dqp.internal.process.Request;
-import org.teiid.dqp.internal.process.validator.ModelVisibilityValidationVisitor;
-
-import junit.framework.TestCase;
-
-import com.metamatrix.api.exception.MetaMatrixComponentException;
-import com.metamatrix.api.exception.query.QueryParserException;
-import com.metamatrix.api.exception.query.QueryValidatorException;
-import com.metamatrix.common.vdb.api.ModelInfo;
-import com.metamatrix.dqp.service.FakeVDBService;
-import com.metamatrix.query.parser.QueryParser;
-import com.metamatrix.query.sql.lang.Command;
-import com.metamatrix.query.unittest.FakeMetadataFactory;
-
-public class TestModelVisibilityValidationVisitor extends TestCase {
-
- private void helpTestLookupVisibility(boolean visible) throws QueryParserException, QueryValidatorException, MetaMatrixComponentException {
- FakeVDBService vdbService = new FakeVDBService();
- String vdbName = "foo"; //$NON-NLS-1$
- String vdbVersion = "1"; //$NON-NLS-1$
- String modelName = "pm1"; //$NON-NLS-1$
- vdbService.addModel(vdbName, vdbVersion, modelName, visible?ModelInfo.PUBLIC:ModelInfo.PRIVATE, false);
- ModelVisibilityValidationVisitor mvvv = new ModelVisibilityValidationVisitor(vdbService, vdbName, vdbVersion);
-
- String sql = "select lookup('pm1.g1', 'e1', 'e2', 1)"; //$NON-NLS-1$
- Command command = QueryParser.getQueryParser().parseCommand(sql);
- Request.validateWithVisitor(mvvv, FakeMetadataFactory.example1Cached(), command, true);
- }
-
- public void testLookupVisibility() throws Exception {
- helpTestLookupVisibility(true);
- }
-
- public void testLookupVisibilityFails() throws Exception {
- try {
- helpTestLookupVisibility(false);
- fail("expected exception"); //$NON-NLS-1$
- } catch (QueryValidatorException e) {
- assertEquals("Group does not exist: pm1.g1", e.getMessage()); //$NON-NLS-1$
- }
- }
-
-}
Copied: branches/JCA/engine/src/test/java/org/teiid/metadata (from rev 1614, trunk/engine/src/test/java/org/teiid/metadata)
Deleted: branches/JCA/engine/src/test/java/org/teiid/metadata/TestTransformationMetadata.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/metadata/TestTransformationMetadata.java 2009-12-01 21:17:40 UTC (rev 1614)
+++ branches/JCA/engine/src/test/java/org/teiid/metadata/TestTransformationMetadata.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,86 +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 static org.junit.Assert.*;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-
-import org.junit.Test;
-import org.mockito.Mockito;
-import org.teiid.connector.metadata.runtime.Datatype;
-import org.teiid.connector.metadata.runtime.MetadataFactory;
-
-import com.metamatrix.api.exception.query.QueryMetadataException;
-import com.metamatrix.common.types.DataTypeManager;
-import com.metamatrix.common.vdb.api.ModelInfo;
-import com.metamatrix.dqp.service.VDBService;
-import com.metamatrix.metadata.runtime.api.MetadataSource;
-
-public class TestTransformationMetadata {
-
- @Test public void testAmbiguousProc() throws Exception {
- Map<String, Datatype> datatypes = new HashMap<String, Datatype>();
- datatypes.put(DataTypeManager.DefaultDataTypes.STRING, new Datatype());
- MetadataFactory mf = new MetadataFactory("x", datatypes, new Properties()); //$NON-NLS-1$
- mf.addProcedure("y"); //$NON-NLS-1$
- MetadataFactory mf1 = new MetadataFactory("x1", datatypes, new Properties()); //$NON-NLS-1$
- mf1.addProcedure("y"); //$NON-NLS-1$
- CompositeMetadataStore cms = new CompositeMetadataStore(Arrays.asList(mf.getMetadataStore(), mf1.getMetadataStore()), Mockito.mock(MetadataSource.class));
- TransformationMetadata tm = new TransformationMetadata(cms);
- try {
- tm.getStoredProcedureInfoForProcedure("y"); //$NON-NLS-1$
- fail("expected exception"); //$NON-NLS-1$
- } catch (QueryMetadataException e) {
- assertEquals("Procedure 'y' is ambiguous, use the fully qualified name instead", e.getMessage()); //$NON-NLS-1$
- }
- }
-
- @Test public void testAmbiguousTableWithPrivateModel() throws Exception {
- Map<String, Datatype> datatypes = new HashMap<String, Datatype>();
- datatypes.put(DataTypeManager.DefaultDataTypes.STRING, new Datatype());
- MetadataFactory mf = new MetadataFactory("x", datatypes, new Properties()); //$NON-NLS-1$
- mf.addTable("y"); //$NON-NLS-1$
- MetadataFactory mf1 = new MetadataFactory("x1", datatypes, new Properties()); //$NON-NLS-1$
- mf1.addTable("y"); //$NON-NLS-1$
- MetadataSource ms = Mockito.mock(MetadataSource.class);
- Mockito.stub(ms.getName()).toReturn("foo"); //$NON-NLS-1$
- CompositeMetadataStore cms = new CompositeMetadataStore(Arrays.asList(mf.getMetadataStore(), mf1.getMetadataStore()), ms);
- TransformationMetadata tm = new TransformationMetadata(cms);
- Collection result = tm.getGroupsForPartialName("y"); //$NON-NLS-1$
- assertEquals(2, result.size());
-
- VDBService vdbService = Mockito.mock(VDBService.class);
- Mockito.stub(vdbService.getModelVisibility("foo", "1", "x1")).toReturn((int)ModelInfo.PRIVATE); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- Mockito.stub(vdbService.getModelVisibility("foo", "1", "x")).toReturn((int)ModelInfo.PUBLIC); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- tm = new TransformationMetadata(cms, vdbService, "1"); //$NON-NLS-1$
- result = tm.getGroupsForPartialName("y"); //$NON-NLS-1$
- assertEquals(1, result.size());
-
- }
-
-}
Copied: branches/JCA/engine/src/test/java/org/teiid/metadata/TestTransformationMetadata.java (from rev 1614, trunk/engine/src/test/java/org/teiid/metadata/TestTransformationMetadata.java)
===================================================================
--- branches/JCA/engine/src/test/java/org/teiid/metadata/TestTransformationMetadata.java (rev 0)
+++ branches/JCA/engine/src/test/java/org/teiid/metadata/TestTransformationMetadata.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -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.metadata;
+
+import static org.junit.Assert.*;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.teiid.connector.metadata.runtime.Datatype;
+import org.teiid.connector.metadata.runtime.MetadataFactory;
+
+import com.metamatrix.api.exception.query.QueryMetadataException;
+import com.metamatrix.common.types.DataTypeManager;
+import com.metamatrix.common.vdb.api.ModelInfo;
+import com.metamatrix.dqp.service.VDBService;
+import com.metamatrix.metadata.runtime.api.MetadataSource;
+
+public class TestTransformationMetadata {
+
+ @Test public void testAmbiguousProc() throws Exception {
+ Map<String, Datatype> datatypes = new HashMap<String, Datatype>();
+ datatypes.put(DataTypeManager.DefaultDataTypes.STRING, new Datatype());
+ MetadataFactory mf = new MetadataFactory("x", datatypes, new Properties()); //$NON-NLS-1$
+ mf.addProcedure("y"); //$NON-NLS-1$
+ MetadataFactory mf1 = new MetadataFactory("x1", datatypes, new Properties()); //$NON-NLS-1$
+ mf1.addProcedure("y"); //$NON-NLS-1$
+ CompositeMetadataStore cms = new CompositeMetadataStore(Arrays.asList(mf.getMetadataStore(), mf1.getMetadataStore()), Mockito.mock(MetadataSource.class));
+ TransformationMetadata tm = new TransformationMetadata(cms);
+ try {
+ tm.getStoredProcedureInfoForProcedure("y"); //$NON-NLS-1$
+ fail("expected exception"); //$NON-NLS-1$
+ } catch (QueryMetadataException e) {
+ assertEquals("Procedure 'y' is ambiguous, use the fully qualified name instead", e.getMessage()); //$NON-NLS-1$
+ }
+ }
+
+ @Test public void testAmbiguousTableWithPrivateModel() throws Exception {
+ Map<String, Datatype> datatypes = new HashMap<String, Datatype>();
+ datatypes.put(DataTypeManager.DefaultDataTypes.STRING, new Datatype());
+ MetadataFactory mf = new MetadataFactory("x", datatypes, new Properties()); //$NON-NLS-1$
+ mf.addTable("y"); //$NON-NLS-1$
+ MetadataFactory mf1 = new MetadataFactory("x1", datatypes, new Properties()); //$NON-NLS-1$
+ mf1.addTable("y"); //$NON-NLS-1$
+ MetadataSource ms = Mockito.mock(MetadataSource.class);
+ Mockito.stub(ms.getName()).toReturn("foo"); //$NON-NLS-1$
+ CompositeMetadataStore cms = new CompositeMetadataStore(Arrays.asList(mf.getMetadataStore(), mf1.getMetadataStore()), ms);
+ TransformationMetadata tm = new TransformationMetadata(cms);
+ Collection result = tm.getGroupsForPartialName("y"); //$NON-NLS-1$
+ assertEquals(2, result.size());
+
+ VDBService vdbService = Mockito.mock(VDBService.class);
+ Mockito.stub(vdbService.getModelVisibility("foo", "1", "x1")).toReturn((int)ModelInfo.PRIVATE); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ Mockito.stub(vdbService.getModelVisibility("foo", "1", "x")).toReturn((int)ModelInfo.PUBLIC); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ tm = new TransformationMetadata(cms, vdbService, "1"); //$NON-NLS-1$
+ result = tm.getGroupsForPartialName("y"); //$NON-NLS-1$
+ assertEquals(1, result.size());
+
+ }
+
+}
Modified: branches/JCA/hibernate-dialect/pom.xml
===================================================================
--- branches/JCA/hibernate-dialect/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/hibernate-dialect/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -3,7 +3,7 @@
<parent>
<artifactId>teiid</artifactId>
<groupId>org.jboss.teiid</groupId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>teiid-hibernate-dialect</artifactId>
Modified: branches/JCA/jboss-integration/pom.xml
===================================================================
--- branches/JCA/jboss-integration/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/jboss-integration/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -2,13 +2,13 @@
<parent>
<artifactId>teiid</artifactId>
<groupId>org.jboss.teiid</groupId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.jboss.teiid</groupId>
<artifactId>teiid-jboss-integration</artifactId>
<name>teiid-jboss-integration</name>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
<description>JBoss specific integration layer for teiid</description>
<dependencies>
Modified: branches/JCA/metadata/pom.xml
===================================================================
--- branches/JCA/metadata/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/metadata/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -3,7 +3,7 @@
<parent>
<artifactId>teiid</artifactId>
<groupId>org.jboss.teiid</groupId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>teiid-metadata</artifactId>
Modified: branches/JCA/metadata/src/main/java/org/teiid/internal/core/index/BlocksIndexInput.java
===================================================================
--- branches/JCA/metadata/src/main/java/org/teiid/internal/core/index/BlocksIndexInput.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/metadata/src/main/java/org/teiid/internal/core/index/BlocksIndexInput.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -20,7 +20,6 @@
import org.teiid.core.index.IDocument;
import org.teiid.core.index.IEntryResult;
import org.teiid.core.index.IQueryResult;
-import org.teiid.metadata.index.CharOperation;
import com.metamatrix.core.util.LRUCache;
Added: branches/JCA/metadata/src/main/java/org/teiid/internal/core/index/CharOperation.java
===================================================================
--- branches/JCA/metadata/src/main/java/org/teiid/internal/core/index/CharOperation.java (rev 0)
+++ branches/JCA/metadata/src/main/java/org/teiid/internal/core/index/CharOperation.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,202 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2003 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ * MetaMatrix, Inc - repackaging and updates for use as a metadata store
+ *******************************************************************************/
+
+package org.teiid.internal.core.index;
+
+/**
+ * This class is a collection of helper methods to manipulate char arrays.
+ *
+ * @since 2.1
+ */
+public final class CharOperation {
+
+ /**
+ * Answers true if the pattern matches the given name, false otherwise. This
+ * char[] pattern matching accepts wild-cards '*' and '?'.
+ *
+ * When not case sensitive, the pattern is assumed to already be lowercased,
+ * the name will be lowercased character per character as comparing. If name
+ * is null, the answer is false. If pattern is null, the answer is true if
+ * name is not null. <br>
+ * <br>
+ * For example:
+ * <ol>
+ * <li>
+ *
+ * <pre>
+ * pattern = { '?', 'b', '*' }
+ * name = { 'a', 'b', 'c' , 'd' }
+ * isCaseSensitive = true
+ * result => true
+ * </pre>
+ *
+ * </li>
+ * <li>
+ *
+ * <pre>
+ * pattern = { '?', 'b', '?' }
+ * name = { 'a', 'b', 'c' , 'd' }
+ * isCaseSensitive = true
+ * result => false
+ * </pre>
+ *
+ * </li>
+ * <li>
+ *
+ * <pre>
+ * pattern = { 'b', '*' }
+ * name = { 'a', 'b', 'c' , 'd' }
+ * isCaseSensitive = true
+ * result => false
+ * </pre>
+ *
+ * </li>
+ * </ol>
+ *
+ * @param pattern
+ * the given pattern
+ * @param name
+ * the given name
+ * @param isCaseSensitive
+ * flag to know whether or not the matching should be case
+ * sensitive
+ * @return true if the pattern matches the given name, false otherwise
+ *
+ * TODO: this code was derived from eclipse CharOperation.
+ * It also lacks the ability to specify an escape character.
+ *
+ */
+ public static final boolean match(char[] pattern, char[] name,
+ boolean isCaseSensitive) {
+
+ if (name == null)
+ return false; // null name cannot match
+ if (pattern == null)
+ return true; // null pattern is equivalent to '*'
+
+ int patternEnd = pattern.length;
+ int nameEnd = name.length;
+
+ int iPattern = 0;
+ int iName = 0;
+
+ /* check first segment */
+ char patternChar = 0;
+ while ((iPattern < patternEnd)
+ && (patternChar = pattern[iPattern]) != '*') {
+ if (iName == nameEnd)
+ return false;
+ if (isCaseSensitive && patternChar != name[iName]
+ && patternChar != '?') {
+ return false;
+ } else if (!isCaseSensitive
+ && Character.toLowerCase(patternChar) != Character
+ .toLowerCase(name[iName]) && patternChar != '?') {
+ return false;
+ }
+ iName++;
+ iPattern++;
+ }
+ /* check sequence of star+segment */
+ int segmentStart;
+ if (patternChar == '*') {
+ if (patternEnd == 1) {
+ return true;
+ }
+ segmentStart = ++iPattern; // skip star
+ } else {
+ segmentStart = 0; // force iName check
+ }
+ int prefixStart = iName;
+ checkSegment: while (iName < nameEnd) {
+ if (iPattern == patternEnd) {
+ iPattern = segmentStart; // mismatch - restart current
+ // segment
+ iName = ++prefixStart;
+ continue checkSegment;
+ }
+ /* segment is ending */
+ if ((patternChar = pattern[iPattern]) == '*') {
+ segmentStart = ++iPattern; // skip start
+ if (segmentStart == patternEnd) {
+ return true;
+ }
+ prefixStart = iName;
+ continue checkSegment;
+ }
+ /* check current name character */
+ char matchChar = isCaseSensitive ? name[iName] : Character
+ .toLowerCase(name[iName]);
+ if ((isCaseSensitive ? ((matchChar != patternChar) && patternChar != '?')
+ : (matchChar != Character.toLowerCase(patternChar))
+ && patternChar != '?')) {
+ iPattern = segmentStart; // mismatch - restart current
+ // segment
+ iName = ++prefixStart;
+ continue checkSegment;
+ }
+ iName++;
+ iPattern++;
+ }
+
+ return (segmentStart == patternEnd)
+ || (iName == nameEnd && iPattern == patternEnd)
+ || (iPattern == patternEnd - 1 && pattern[iPattern] == '*');
+ }
+
+ /**
+ * Answers true if the given name starts with the given prefix, false otherwise.
+ * isCaseSensitive is used to find out whether or not the comparison should be case sensitive.
+ * <br>
+ * <br>
+ * For example:
+ * <ol>
+ * <li><pre>
+ * prefix = { 'a' , 'B' }
+ * name = { 'a' , 'b', 'b', 'a', 'b', 'a' }
+ * isCaseSensitive = false
+ * result => true
+ * </pre>
+ * </li>
+ * <li><pre>
+ * prefix = { 'a' , 'B' }
+ * name = { 'a' , 'b', 'b', 'a', 'b', 'a' }
+ * isCaseSensitive = true
+ * result => false
+ * </pre>
+ * </li>
+ * </ol>
+ *
+ * @param prefix the given prefix
+ * @param name the given name
+ * @param isCaseSensitive to find out whether or not the comparison should be case sensitive
+ * @return true if the given name starts with the given prefix, false otherwise
+ * @exception NullPointerException if the given name is null or if the given prefix is null
+ */
+ public static final boolean prefixEquals(char[] prefix, char[] name,
+ boolean isCaseSensitive) {
+
+ int max = prefix.length;
+ if (name.length < max)
+ return false;
+
+ for (int i = max; --i >= 0;) {
+ if (prefix[i] == name[i]
+ || (isCaseSensitive && Character.toLowerCase(prefix[i]) == Character
+ .toLowerCase(name[i]))) {
+ continue;
+ }
+ return false;
+ }
+ return true;
+ }
+}
Property changes on: branches/JCA/metadata/src/main/java/org/teiid/internal/core/index/CharOperation.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: branches/JCA/metadata/src/main/java/org/teiid/internal/core/index/IndexBlock.java
===================================================================
--- branches/JCA/metadata/src/main/java/org/teiid/internal/core/index/IndexBlock.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/metadata/src/main/java/org/teiid/internal/core/index/IndexBlock.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -13,7 +13,6 @@
import java.util.Arrays;
-import org.teiid.metadata.index.CharOperation;
/**
Modified: branches/JCA/metadata/src/main/java/org/teiid/internal/core/index/IndexSummary.java
===================================================================
--- branches/JCA/metadata/src/main/java/org/teiid/internal/core/index/IndexSummary.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/metadata/src/main/java/org/teiid/internal/core/index/IndexSummary.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -15,7 +15,6 @@
import java.io.RandomAccessFile;
import java.util.ArrayList;
-import org.teiid.metadata.index.CharOperation;
Deleted: branches/JCA/metadata/src/main/java/org/teiid/metadata/CompositeMetadataStore.java
===================================================================
--- branches/JCA/metadata/src/main/java/org/teiid/metadata/CompositeMetadataStore.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/metadata/src/main/java/org/teiid/metadata/CompositeMetadataStore.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,174 +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 java.util.Collection;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-import org.teiid.connector.metadata.runtime.AbstractMetadataRecord;
-import org.teiid.connector.metadata.runtime.ColumnRecordImpl;
-import org.teiid.connector.metadata.runtime.ModelRecordImpl;
-import org.teiid.connector.metadata.runtime.ProcedureRecordImpl;
-import org.teiid.connector.metadata.runtime.PropertyRecordImpl;
-import org.teiid.connector.metadata.runtime.TableRecordImpl;
-
-import com.metamatrix.api.exception.MetaMatrixComponentException;
-import com.metamatrix.api.exception.query.QueryMetadataException;
-import com.metamatrix.core.MetaMatrixCoreException;
-import com.metamatrix.core.util.StringUtil;
-import com.metamatrix.metadata.runtime.api.MetadataSource;
-import com.metamatrix.query.metadata.MetadataStore;
-
-public class CompositeMetadataStore implements MetadataStore {
-
- private List<? extends MetadataStore> metadataStores;
- private MetadataSource metadataSource;
- private Map<String, MetadataStore> storeMap;
-
- public CompositeMetadataStore(List<? extends MetadataStore> metadataStores, MetadataSource metadataSource) {
- this.metadataStores = metadataStores;
- this.metadataSource = metadataSource;
- this.storeMap = new HashMap<String, MetadataStore>();
- for (MetadataStore metadataStore : metadataStores) {
- for (String model : metadataStore.getModelNames()) {
- storeMap.put(model.toUpperCase(), metadataStore);
- }
- }
- }
-
- @Override
- public Collection<String> getModelNames() {
- return storeMap.keySet();
- }
-
- @Override
- public ModelRecordImpl getModel(String fullName)
- throws QueryMetadataException, MetaMatrixComponentException {
- return getMetadataStore(fullName).getModel(fullName);
- }
-
- @Override
- public ColumnRecordImpl findElement(String fullName)
- throws QueryMetadataException, MetaMatrixComponentException {
- List<String> tokens = StringUtil.getTokens(fullName, TransformationMetadata.DELIMITER_STRING);
- if (tokens.size() < 3) {
- throw new QueryMetadataException(fullName+TransformationMetadata.NOT_EXISTS_MESSAGE);
- }
- return getMetadataStore(tokens.get(0)).findElement(fullName);
- }
-
- @Override
- public TableRecordImpl findGroup(String fullName)
- throws QueryMetadataException, MetaMatrixComponentException {
- List<String> tokens = StringUtil.getTokens(fullName, TransformationMetadata.DELIMITER_STRING);
- if (tokens.size() < 2) {
- throw new QueryMetadataException(fullName+TransformationMetadata.NOT_EXISTS_MESSAGE);
- }
- return getMetadataStore(tokens.get(0)).findGroup(fullName);
- }
-
- @Override
- public Collection<String> getGroupsForPartialName(String partialGroupName)
- throws MetaMatrixComponentException, QueryMetadataException {
- List<String> result = new LinkedList<String>();
- for (MetadataStore store : metadataStores) {
- result.addAll(store.getGroupsForPartialName(partialGroupName));
- }
- return result;
- }
-
- @Override
- public Collection getXMLTempGroups(TableRecordImpl table)
- throws MetaMatrixComponentException {
- return getMetadataStore(table.getModelName()).getXMLTempGroups(table);
- }
-
- @Override
- public ProcedureRecordImpl getStoredProcedure(
- String fullyQualifiedProcedureName)
- throws MetaMatrixComponentException, QueryMetadataException {
- List<String> tokens = StringUtil.getTokens(fullyQualifiedProcedureName, TransformationMetadata.DELIMITER_STRING);
- if (tokens.size() < 2) {
- throw new QueryMetadataException(fullyQualifiedProcedureName+TransformationMetadata.NOT_EXISTS_MESSAGE);
- }
- return getMetadataStore(tokens.get(0)).getStoredProcedure(fullyQualifiedProcedureName);
- }
-
- @Override
- public Collection<? extends AbstractMetadataRecord> findMetadataRecords(char recordType,
- String entityName, boolean isPartialName)
- throws MetaMatrixComponentException {
- LinkedList<AbstractMetadataRecord> result = new LinkedList<AbstractMetadataRecord>();
- for (MetadataStore store : metadataStores) {
- Collection<? extends AbstractMetadataRecord> results = store.findMetadataRecords(recordType, entityName, isPartialName);
- if (!results.isEmpty() && !isPartialName) {
- return results;
- }
- result.addAll(results);
- }
- return result;
- }
-
- public boolean postProcessFindMetadataRecords() {
- for (MetadataStore store : metadataStores) {
- if (store.postProcessFindMetadataRecords()) {
- return true;
- }
- }
- return false;
- }
-
- @Override
- public Collection<AbstractMetadataRecord> findMetadataRecords(String indexName,
- String pattern, boolean isPrefix,
- boolean isCaseSensitive) throws MetaMatrixCoreException {
- LinkedList<AbstractMetadataRecord> result = new LinkedList<AbstractMetadataRecord>();
- for (MetadataStore store : metadataStores) {
- Collection<? extends AbstractMetadataRecord> results = store.findMetadataRecords(indexName, pattern, isPrefix, isCaseSensitive);
- result.addAll(results);
- }
- return result;
- }
-
- @Override
- public Collection<PropertyRecordImpl> getExtensionProperties(AbstractMetadataRecord record)
- throws MetaMatrixComponentException {
- return getMetadataStore(record.getModelName()).getExtensionProperties(record);
- }
-
- public MetadataStore getMetadataStore(String modelName) throws QueryMetadataException {
- MetadataStore store = this.storeMap.get(modelName.toUpperCase());
- if (store == null) {
- throw new QueryMetadataException(modelName+TransformationMetadata.NOT_EXISTS_MESSAGE);
- }
- return store;
- }
-
- public MetadataSource getMetadataSource() {
- return metadataSource;
- }
-
-}
Deleted: branches/JCA/metadata/src/main/java/org/teiid/metadata/ConnectorMetadataStore.java
===================================================================
--- branches/JCA/metadata/src/main/java/org/teiid/metadata/ConnectorMetadataStore.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/metadata/src/main/java/org/teiid/metadata/ConnectorMetadataStore.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,248 +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 java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
-
-import org.teiid.connector.metadata.runtime.AbstractMetadataRecord;
-import org.teiid.connector.metadata.runtime.ColumnRecordImpl;
-import org.teiid.connector.metadata.runtime.ColumnSetRecordImpl;
-import org.teiid.connector.metadata.runtime.ConnectorMetadata;
-import org.teiid.connector.metadata.runtime.MetadataConstants;
-import org.teiid.connector.metadata.runtime.ModelRecordImpl;
-import org.teiid.connector.metadata.runtime.ProcedureParameterRecordImpl;
-import org.teiid.connector.metadata.runtime.ProcedureRecordImpl;
-import org.teiid.connector.metadata.runtime.PropertyRecordImpl;
-import org.teiid.connector.metadata.runtime.TableRecordImpl;
-import org.teiid.metadata.index.IndexConstants;
-
-import com.metamatrix.api.exception.MetaMatrixComponentException;
-import com.metamatrix.api.exception.query.QueryMetadataException;
-import com.metamatrix.core.MetaMatrixCoreException;
-import com.metamatrix.query.metadata.MetadataStore;
-
-public class ConnectorMetadataStore implements MetadataStore {
-
- private ConnectorMetadata metadata;
- private String modelName;
-
- public ConnectorMetadataStore(String modelName, ConnectorMetadata metadata) {
- this.modelName = modelName;
- this.metadata = metadata;
- }
-
- @Override
- public ModelRecordImpl getModel(String fullName)
- throws QueryMetadataException, MetaMatrixComponentException {
- //there's no need to check the name, the CompositeMetadataStore will have already done that
- return metadata.getModel();
- }
-
- @Override
- public ColumnRecordImpl findElement(String fullName)
- throws QueryMetadataException, MetaMatrixComponentException {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public TableRecordImpl findGroup(String fullName)
- throws QueryMetadataException, MetaMatrixComponentException {
- for (TableRecordImpl tableRecordImpl : metadata.getTables()) {
- if (tableRecordImpl.getFullName().equalsIgnoreCase(fullName)) {
- return tableRecordImpl;
- }
- }
- throw new QueryMetadataException(fullName+TransformationMetadata.NOT_EXISTS_MESSAGE);
- }
-
- @Override
- public Collection<String> getGroupsForPartialName(String partialGroupName)
- throws MetaMatrixComponentException, QueryMetadataException {
- Collection<String> results = new LinkedList<String>();
- for (TableRecordImpl tableRecordImpl : metadata.getTables()) {
- if (tableRecordImpl.getFullName().toLowerCase().endsWith(partialGroupName)) {
- results.add(tableRecordImpl.getFullName());
- }
- }
- return results;
- }
-
- @Override
- public Collection<String> getModelNames() {
- return Arrays.asList(modelName);
- }
-
- @Override
- public ProcedureRecordImpl getStoredProcedure(
- String fullyQualifiedProcedureName)
- throws MetaMatrixComponentException, QueryMetadataException {
- for (ProcedureRecordImpl procedureRecordImpl : metadata.getProcedures()) {
- if (procedureRecordImpl.getFullName().equalsIgnoreCase(fullyQualifiedProcedureName)) {
- return procedureRecordImpl;
- }
- }
- throw new QueryMetadataException(fullyQualifiedProcedureName+TransformationMetadata.NOT_EXISTS_MESSAGE);
- }
-
- @Override
- public Collection getXMLTempGroups(TableRecordImpl table)
- throws MetaMatrixComponentException {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public Collection<? extends AbstractMetadataRecord> findMetadataRecords(char recordType,
- String entityName, boolean isPartialName)
- throws MetaMatrixComponentException {
- throw new UnsupportedOperationException();
- }
-
- private Collection<? extends AbstractMetadataRecord> getRecordsByType(
- char recordType) {
- switch (recordType) {
- case MetadataConstants.RECORD_TYPE.CALLABLE:
- return metadata.getProcedures();
- case MetadataConstants.RECORD_TYPE.CALLABLE_PARAMETER: {
- Collection<ProcedureParameterRecordImpl> results = new ArrayList<ProcedureParameterRecordImpl>();
- for (ProcedureRecordImpl procedure : metadata.getProcedures()) {
- results.addAll(procedure.getParameters());
- }
- return results;
- }
- case MetadataConstants.RECORD_TYPE.RESULT_SET: {
- Collection<ColumnSetRecordImpl> results = new ArrayList<ColumnSetRecordImpl>();
- for (ProcedureRecordImpl procedure : metadata.getProcedures()) {
- if (procedure.getResultSet() != null) {
- results.add(procedure.getResultSet());
- }
- }
- return results;
- }
- case MetadataConstants.RECORD_TYPE.ACCESS_PATTERN: {
- Collection<ColumnSetRecordImpl> results = new ArrayList<ColumnSetRecordImpl>();
- for (TableRecordImpl table : metadata.getTables()) {
- results.addAll(table.getAccessPatterns());
- }
- return results;
- }
- case MetadataConstants.RECORD_TYPE.UNIQUE_KEY: {
- Collection<ColumnSetRecordImpl> results = new ArrayList<ColumnSetRecordImpl>();
- for (TableRecordImpl table : metadata.getTables()) {
- results.addAll(table.getUniqueKeys());
- }
- return results;
- }
- case MetadataConstants.RECORD_TYPE.PRIMARY_KEY: {
- Collection<ColumnSetRecordImpl> results = new ArrayList<ColumnSetRecordImpl>();
- for (TableRecordImpl table : metadata.getTables()) {
- if (table.getPrimaryKey() != null) {
- results.add(table.getPrimaryKey());
- }
- }
- return results;
- }
- case MetadataConstants.RECORD_TYPE.FOREIGN_KEY: {
- Collection<ColumnSetRecordImpl> results = new ArrayList<ColumnSetRecordImpl>();
- for (TableRecordImpl table : metadata.getTables()) {
- results.addAll(table.getForeignKeys());
- }
- return results;
- }
- case MetadataConstants.RECORD_TYPE.INDEX: {
- Collection<ColumnSetRecordImpl> results = new ArrayList<ColumnSetRecordImpl>();
- for (TableRecordImpl table : metadata.getTables()) {
- results.addAll(table.getIndexes());
- }
- return results;
- }
- case MetadataConstants.RECORD_TYPE.MODEL:
- return Arrays.asList(metadata.getModel());
- case MetadataConstants.RECORD_TYPE.TABLE:
- return metadata.getTables();
- case MetadataConstants.RECORD_TYPE.COLUMN: {
- Collection<ColumnRecordImpl> results = new ArrayList<ColumnRecordImpl>();
- for (TableRecordImpl table : metadata.getTables()) {
- results.addAll(table.getColumns());
- }
- return results;
- }
- case MetadataConstants.RECORD_TYPE.ANNOTATION: {
- return metadata.getAnnotations();
- }
- case MetadataConstants.RECORD_TYPE.PROPERTY: {
- return metadata.getProperties();
- }
- }
- return Collections.emptyList();
- }
-
- @Override
- public Collection<? extends AbstractMetadataRecord> findMetadataRecords(String indexName,
- String pattern, boolean isPrefix,
- boolean isCaseSensitive) throws MetaMatrixCoreException {
- if (indexName.equalsIgnoreCase(IndexConstants.INDEX_NAME.COLUMNS_INDEX)) {
- return getRecordsByType(MetadataConstants.RECORD_TYPE.COLUMN);
- } else if (indexName.equalsIgnoreCase(IndexConstants.INDEX_NAME.KEYS_INDEX)) {
- List<AbstractMetadataRecord> result = new ArrayList<AbstractMetadataRecord>();
- result.addAll(getRecordsByType(MetadataConstants.RECORD_TYPE.ACCESS_PATTERN));
- result.addAll(getRecordsByType(MetadataConstants.RECORD_TYPE.UNIQUE_KEY));
- result.addAll(getRecordsByType(MetadataConstants.RECORD_TYPE.PRIMARY_KEY));
- result.addAll(getRecordsByType(MetadataConstants.RECORD_TYPE.FOREIGN_KEY));
- result.addAll(getRecordsByType(MetadataConstants.RECORD_TYPE.INDEX));
- return result;
- } else if (indexName.equalsIgnoreCase(IndexConstants.INDEX_NAME.MODELS_INDEX)) {
- return getRecordsByType(MetadataConstants.RECORD_TYPE.MODEL);
- } else if (indexName.equalsIgnoreCase(IndexConstants.INDEX_NAME.PROCEDURES_INDEX)) {
- List<AbstractMetadataRecord> result = new ArrayList<AbstractMetadataRecord>();
- result.addAll(getRecordsByType(MetadataConstants.RECORD_TYPE.CALLABLE));
- result.addAll(getRecordsByType(MetadataConstants.RECORD_TYPE.CALLABLE_PARAMETER));
- result.addAll(getRecordsByType(MetadataConstants.RECORD_TYPE.RESULT_SET));
- return result;
- } else if (indexName.equalsIgnoreCase(IndexConstants.INDEX_NAME.TABLES_INDEX)) {
- return getRecordsByType(MetadataConstants.RECORD_TYPE.TABLE);
- } else if (indexName.equalsIgnoreCase(IndexConstants.INDEX_NAME.ANNOTATION_INDEX)) {
- return getRecordsByType(MetadataConstants.RECORD_TYPE.ANNOTATION);
- }
- return Collections.emptyList();
- }
-
- @Override
- public boolean postProcessFindMetadataRecords() {
- return true;
- }
-
- @Override
- public Collection<PropertyRecordImpl> getExtensionProperties(AbstractMetadataRecord record)
- throws MetaMatrixComponentException {
- if (record.getExtensionProperties() == null) {
- return Collections.emptyList();
- }
- return record.getExtensionProperties();
- }
-
-}
Deleted: branches/JCA/metadata/src/main/java/org/teiid/metadata/QueryMetadataCache.java
===================================================================
--- branches/JCA/metadata/src/main/java/org/teiid/metadata/QueryMetadataCache.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/metadata/src/main/java/org/teiid/metadata/QueryMetadataCache.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,277 +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 java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.teiid.connector.metadata.IndexFile;
-import org.teiid.connector.metadata.MetadataConnectorConstants;
-import org.teiid.connector.metadata.MultiObjectSource;
-import org.teiid.connector.metadata.PropertyFileObjectSource;
-import org.teiid.connector.metadata.runtime.ConnectorMetadata;
-import org.teiid.connector.metadata.runtime.DatatypeRecordImpl;
-import org.teiid.metadata.index.IndexMetadataStore;
-
-import com.metamatrix.api.exception.MetaMatrixComponentException;
-import com.metamatrix.common.log.LogManager;
-import com.metamatrix.common.types.DataTypeManager;
-import com.metamatrix.common.types.DataTypeManager.DefaultDataTypes;
-import com.metamatrix.common.vdb.api.VDBArchive;
-import com.metamatrix.connector.metadata.internal.IObjectSource;
-import com.metamatrix.core.CoreConstants;
-import com.metamatrix.core.MetaMatrixRuntimeException;
-import com.metamatrix.dqp.DQPPlugin;
-import com.metamatrix.dqp.service.DataService;
-import com.metamatrix.dqp.service.VDBService;
-import com.metamatrix.dqp.util.LogConstants;
-import com.metamatrix.metadata.runtime.api.MetadataSource;
-import com.metamatrix.query.metadata.MetadataStore;
-import com.metamatrix.query.metadata.QueryMetadataInterface;
-import com.metamatrix.vdb.runtime.VDBKey;
-
-
-/**
- * This caches QueryMetadataInterface implementations for all vdbs, each implementation has access to
- * metadata for a given vdb and the system vdb.
- * @since 4.2
- */
-public class QueryMetadataCache {
-
- private static class QueryMetadataHolder {
- QueryMetadataInterface qmi;
- }
-
- // vdbID to QueryMetadataInterfaceHolder map
- private Map<VDBKey, QueryMetadataHolder> vdbToQueryMetadata = Collections.synchronizedMap(new HashMap<VDBKey, QueryMetadataHolder>());
- // map between vdbID and CompositeIndexSelector for the vdb (RuntimeSelector for the vdb and system vdb)
- private Map<VDBKey, CompositeMetadataStore> vdbToCompositeSelector = Collections.synchronizedMap(new HashMap<VDBKey, CompositeMetadataStore>());
- // RuntimeIndexSelector for the system vdb
- private final VDBArchive systemVDBSelector;
-
- // boolean for the cache being valid
- private boolean isCacheValid = true;
- private IndexMetadataStore indexMetadataStore;
-
- /**
- * Constructor given a URL to a system vdb.
- * @since 4.2
- */
- public QueryMetadataCache(final URL systemVdbUrl) throws MetaMatrixComponentException {
- try {
- this.systemVDBSelector = new VDBArchive(systemVdbUrl.openStream());
- this.indexMetadataStore = new IndexMetadataStore(this.systemVDBSelector);
- } catch(IOException e) {
- throw new MetaMatrixComponentException(e, DQPPlugin.Util.getString("QueryMetadataCache.Failed_creating_Runtime_Index_Selector._4", CoreConstants.SYSTEM_VDB)); //$NON-NLS-1$
- }
- }
-
- /**
- * Constructor given the contents of a system vdb.
- * @since 4.2
- */
- public QueryMetadataCache(final byte[] systemVdbContent) throws MetaMatrixComponentException {
- try {
- this.systemVDBSelector = new VDBArchive(new ByteArrayInputStream(systemVdbContent));
- this.indexMetadataStore = new IndexMetadataStore(this.systemVDBSelector);
- } catch(IOException e) {
- throw new MetaMatrixComponentException(e, DQPPlugin.Util.getString("QueryMetadataCache.Failed_creating_Runtime_Index_Selector._4", CoreConstants.SYSTEM_VDB)); //$NON-NLS-1$
- }
- }
-
- /**
- * Get the composite selector fot the given vdbName, version.
- */
- private CompositeMetadataStore getCompositeSelector(final String vdbName, final String vdbVersion) {
- // check cache status
- assertIsValidCache();
- VDBKey vdbID = toVdbID(vdbName, vdbVersion);
- return this.vdbToCompositeSelector.get(vdbID);
- }
-
- public IObjectSource getCompositeMetadataObjectSource(String vdbName, String vdbVersion, VDBService vdbService){
- CompositeMetadataStore indexSelector = getCompositeSelector(vdbName, vdbVersion);
-
- // build up sources to be used by the index connector
- IObjectSource indexFile = new IndexFile(indexSelector, vdbName, vdbVersion, vdbService);
-
- PropertyFileObjectSource propertyFileSource = new PropertyFileObjectSource();
- IObjectSource multiObjectSource = new MultiObjectSource(indexFile, MetadataConnectorConstants.PROPERTIES_FILE_EXTENSION,propertyFileSource);
- return multiObjectSource;
- }
-
- /**
- * Look up metadata for the given vdbName, version at the given filecontent.
- * @throws MetaMatrixComponentException
- */
- public QueryMetadataInterface lookupMetadata(final String vdbName, final String vdbVersion, MetadataSource iss, DataService dataService) throws MetaMatrixComponentException {
- assertIsValidCache();
- VDBKey vdbID = toVdbID(vdbName, vdbVersion);
- QueryMetadataHolder qmiHolder = null;
- // Enter a synchronized block to find the holder of a QueryMetadataInterface for a VDB
- synchronized(vdbToQueryMetadata) {
- qmiHolder = vdbToQueryMetadata.get(vdbID);
- if ( qmiHolder == null ) {
- qmiHolder = new QueryMetadataHolder();
- vdbToQueryMetadata.put(vdbID, qmiHolder);
- }
- }
- synchronized (qmiHolder) {
- if (qmiHolder.qmi == null) {
- qmiHolder.qmi = loadMetadata(vdbID, iss, dataService);
- }
- }
- return qmiHolder.qmi;
- }
-
- private void assertIsValidCache() {
- if(!this.isCacheValid) {
- throw new MetaMatrixRuntimeException(DQPPlugin.Util.getString("QueryMetadataCache.cache_not_valid")); //$NON-NLS-1$
- }
- }
-
- private QueryMetadataInterface loadMetadata(final VDBKey vdbID, final MetadataSource runtimeSelector, DataService dataService) throws MetaMatrixComponentException {
- // check cache status
- assertIsValidCache();
-
- List<MetadataStore> metadataStores = new ArrayList<MetadataStore>();
- try {
- metadataStores.add(new IndexMetadataStore(runtimeSelector));
- Set<String> modelNames = runtimeSelector.getConnectorMetadataModelNames();
- if (!modelNames.isEmpty()) {
- for (String modelName : modelNames) {
- ConnectorMetadata connectorMetadata = null;
- String savedMetadata = "/META-INF/" + modelName.toLowerCase() + ".ser"; //$NON-NLS-1$ //$NON-NLS-2$
- if (runtimeSelector.cacheConnectorMetadata()) {
- File f = runtimeSelector.getFile(savedMetadata);
- if (f != null) {
- ObjectInputStream ois = null;
- try {
- ois = new ObjectInputStream(new FileInputStream(f));
- connectorMetadata = (ConnectorMetadata)ois.readObject();
- } catch (Exception e) {
-
- } finally {
- if (ois != null) {
- ois.close();
- }
- }
- }
- }
- if (connectorMetadata == null) {
- connectorMetadata = dataService.getConnectorMetadata(vdbID.getName(), vdbID.getVersion(), modelName);
- }
- if (runtimeSelector.cacheConnectorMetadata()) {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- ObjectOutputStream oos = new ObjectOutputStream(baos);
- oos.writeObject(connectorMetadata);
- oos.close();
- runtimeSelector.saveFile(new ByteArrayInputStream(baos.toByteArray()), savedMetadata);
- }
- metadataStores.add(new ConnectorMetadataStore(modelName, connectorMetadata));
- }
- }
- metadataStores.add(indexMetadataStore);
- } catch (IOException e) {
- throw new MetaMatrixComponentException(e);
- }
- // build a composite selector for the runtimeselectors of this vdb and system vdb
- CompositeMetadataStore composite = new CompositeMetadataStore(metadataStores, runtimeSelector);
- vdbToCompositeSelector.put(vdbID, composite);
- QueryMetadataInterface result = new TransformationMetadata(composite);
- return result;
- }
-
- public Map<String, DatatypeRecordImpl> getBuiltinDatatypes() throws MetaMatrixComponentException {
- Collection<DatatypeRecordImpl> datatypes = this.indexMetadataStore.getDatatypes();
- Map<String, DatatypeRecordImpl> datatypeMap = new HashMap<String, DatatypeRecordImpl>();
- for (String typeName : DataTypeManager.getAllDataTypeNames()) {
- for (DatatypeRecordImpl datatypeRecordImpl : datatypes) {
- if (datatypeRecordImpl.getName().equals("int")) { //$NON-NLS-1$
- datatypeMap.put(DefaultDataTypes.INTEGER, datatypeRecordImpl);
- } else if (datatypeRecordImpl.getName().equals("XMLLiteral")) { //$NON-NLS-1$
- datatypeMap.put(DataTypeManager.DefaultDataTypes.XML, datatypeRecordImpl);
- } else if (datatypeRecordImpl.getName().equals(typeName)) {
- datatypeMap.put(typeName, datatypeRecordImpl);
- }
- }
- }
- return datatypeMap;
- }
-
- /**
- * Clears all state on this cache and also deletes any indexfiles
- * associated with the cache.
- * @since 4.2
- */
- public void clearCache() {
- LogManager.logTrace(LogConstants.CTX_DQP, new Object[] {"QueryMetadataCache Clearing VDB cache"}); //$NON-NLS-1$
- // mark cache invalid
- isCacheValid = false;
- // Clear the holders ...
- vdbToQueryMetadata.clear();
-
- // Clean up the directory for the System VDB ...
- if (this.systemVDBSelector != null) {
- // selector should no longer be used
- this.systemVDBSelector.close();
- }
-
- // Clear the cache of selectors ...
- vdbToCompositeSelector.clear();
- }
-
- /**
- * Remove cache for a given vdb, called when a vdb is actually deleted.
- * Also deletes any temp files associated with the vdb.
- */
- public void removeFromCache(final String vdbName, final String vdbVersion) {
- LogManager.logTrace(LogConstants.CTX_DQP, new Object[] {"QueryMetadataCache Removing vdb from cache", vdbName, vdbVersion}); //$NON-NLS-1$
- if(vdbName != null && vdbVersion != null) {
- final VDBKey vdbID = toVdbID(vdbName, vdbVersion);
- vdbToQueryMetadata.remove(vdbID);
- vdbToCompositeSelector.remove(vdbID);
- }
- }
-
- /**
- * Return unique id for a vdb
- */
- private VDBKey toVdbID(final String vdbName, final String vdbVersion) {
- return new VDBKey(vdbName, vdbVersion);
- }
-
-}
Deleted: branches/JCA/metadata/src/main/java/org/teiid/metadata/RuntimeMetadataPlugin.java
===================================================================
--- branches/JCA/metadata/src/main/java/org/teiid/metadata/RuntimeMetadataPlugin.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/metadata/src/main/java/org/teiid/metadata/RuntimeMetadataPlugin.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,44 +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 java.util.ResourceBundle;
-
-import com.metamatrix.core.BundleUtil;
-
-/**
- * CommonPlugin
- * <p>Used here in <code>metadata.runtime</code> to have access to the new
- * logging framework for <code>LogManager</code>.</p>
- */
-public class RuntimeMetadataPlugin {
-
- /**
- * The plug-in identifier of this plugin
- * (value <code>"com.metamatrix.metadata.runtime"</code>).
- */
- public static final String PLUGIN_ID = "org.teiid.metadata"; //$NON-NLS-1$
-
- public static final BundleUtil Util = new BundleUtil(PLUGIN_ID,
- PLUGIN_ID + ".i18n", ResourceBundle.getBundle(PLUGIN_ID + ".i18n")); //$NON-NLS-1$ //$NON-NLS-2$
-}
Deleted: branches/JCA/metadata/src/main/java/org/teiid/metadata/TransformationMetadata.java
===================================================================
--- branches/JCA/metadata/src/main/java/org/teiid/metadata/TransformationMetadata.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/metadata/src/main/java/org/teiid/metadata/TransformationMetadata.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,1069 +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 java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-import org.teiid.connector.metadata.runtime.AbstractMetadataRecord;
-import org.teiid.connector.metadata.runtime.ColumnRecordImpl;
-import org.teiid.connector.metadata.runtime.ColumnSetRecordImpl;
-import org.teiid.connector.metadata.runtime.DatatypeRecordImpl;
-import org.teiid.connector.metadata.runtime.ForeignKeyRecordImpl;
-import org.teiid.connector.metadata.runtime.MetadataConstants;
-import org.teiid.connector.metadata.runtime.ModelRecordImpl;
-import org.teiid.connector.metadata.runtime.ProcedureParameterRecordImpl;
-import org.teiid.connector.metadata.runtime.ProcedureRecordImpl;
-import org.teiid.connector.metadata.runtime.PropertyRecordImpl;
-import org.teiid.connector.metadata.runtime.TableRecordImpl;
-import org.teiid.connector.metadata.runtime.TransformationRecordImpl;
-import org.teiid.metadata.index.IndexConstants;
-
-import com.metamatrix.api.exception.MetaMatrixComponentException;
-import com.metamatrix.api.exception.query.QueryMetadataException;
-import com.metamatrix.common.types.DataTypeManager;
-import com.metamatrix.core.util.ArgCheck;
-import com.metamatrix.core.util.LRUCache;
-import com.metamatrix.core.util.StringUtil;
-import com.metamatrix.core.vdb.ModelType;
-import com.metamatrix.metadata.runtime.api.MetadataSourceUtil;
-import com.metamatrix.query.mapping.relational.QueryNode;
-import com.metamatrix.query.mapping.xml.MappingDocument;
-import com.metamatrix.query.mapping.xml.MappingLoader;
-import com.metamatrix.query.mapping.xml.MappingNode;
-import com.metamatrix.query.metadata.BasicQueryMetadata;
-import com.metamatrix.query.metadata.StoredProcedureInfo;
-import com.metamatrix.query.metadata.SupportConstants;
-import com.metamatrix.query.sql.lang.SPParameter;
-
-/**
- * Modelers implementation of QueryMetadataInterface that reads columns, groups, models etc.
- * index files for various metadata properties.
- */
-public class TransformationMetadata extends BasicQueryMetadata {
-
- //Fix Me: The following constants come from com.metamatrix.metamodels.relational.NullableType
- private static int NULLABLE = 1;
- private static int NULLABLE_UNKNOWN = 2;
- //Fix Me: The following constants come from com.metamatrix.metamodels.relational.SearchabilityType
- private static int SEARCHABLE = 0;
- private static int ALL_EXCEPT_LIKE = 1;
- private static int LIKE_ONLY = 2;
-
- /** Delimiter character used when specifying fully qualified entity names */
- public static final char DELIMITER_CHAR = IndexConstants.NAME_DELIM_CHAR;
- public static final String DELIMITER_STRING = StringUtil.Constants.EMPTY_STRING + IndexConstants.NAME_DELIM_CHAR;
-
- // error message cached to avoid i18n lookup each time
- public static String NOT_EXISTS_MESSAGE = StringUtil.Constants.SPACE+RuntimeMetadataPlugin.Util.getString("TransformationMetadata.does_not_exist._1"); //$NON-NLS-1$
-
- private final CompositeMetadataStore store;
-
- /*
- * TODO: move caching to jboss cache structure
- */
- private final Map<String, Object> metadataCache = Collections.synchronizedMap(new LRUCache<String, Object>(500));
- private final Map<String, TableRecordImpl> groupCache = Collections.synchronizedMap(new LRUCache<String, TableRecordImpl>(2000));
- private final Map<String, StoredProcedureInfo> procedureCache = Collections.synchronizedMap(new LRUCache<String, StoredProcedureInfo>(200));
- private final Map<String, String> partialNameToFullNameCache = Collections.synchronizedMap(new LRUCache<String, String>(1000));
- private final Map<String, ModelRecordImpl> modelCache = Collections.synchronizedMap(new LRUCache<String, ModelRecordImpl>(100));
-
- /**
- * TransformationMetadata constructor
- * @param context Object containing the info needed to lookup metadta.
- */
- public TransformationMetadata(final CompositeMetadataStore store) {
- ArgCheck.isNotNull(store);
- this.store = store;
- }
-
- //==================================================================================
- // I N T E R F A C E M E T H O D S
- //==================================================================================
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getElementID(java.lang.String)
- */
- public Object getElementID(final String elementName) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isNotEmpty(elementName);
-
- return getMetadataStore().findElement(elementName);
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getGroupID(java.lang.String)
- */
- public Object getGroupID(final String groupName) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isNotEmpty(groupName);
- String upperGroupName = groupName.toUpperCase();
- TableRecordImpl result = this.groupCache.get(upperGroupName);
-
- if (result == null) {
- result = getMetadataStore().findGroup(groupName);
- this.groupCache.put(upperGroupName, result);
- }
- return result;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getGroupsForPartialName(java.lang.String)
- */
- public Collection getGroupsForPartialName(final String partialGroupName)
- throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isNotEmpty(partialGroupName);
-
- String groupName = this.partialNameToFullNameCache.get(partialGroupName);
-
- if (groupName != null) {
- return Arrays.asList(groupName);
- }
-
- String partialName = DELIMITER_CHAR + partialGroupName.toLowerCase();
-
- Collection result = getMetadataStore().getGroupsForPartialName(partialName);
-
- if (result.size() == 1) {
- this.partialNameToFullNameCache.put(partialGroupName, (String)result.iterator().next());
- }
- return result;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getModelID(java.lang.Object)
- */
- public Object getModelID(final Object groupOrElementID) throws MetaMatrixComponentException, QueryMetadataException {
- if (!(groupOrElementID instanceof TableRecordImpl) && !(groupOrElementID instanceof ColumnRecordImpl)) {
- throw createInvalidRecordTypeException(groupOrElementID);
- }
-
- String modelName = ((AbstractMetadataRecord)groupOrElementID).getModelName();
- return getModel(modelName);
- }
-
- private Object getModel(String modelName) throws QueryMetadataException,
- MetaMatrixComponentException {
- modelName = modelName.toUpperCase();
- ModelRecordImpl model = modelCache.get(modelName);
- if (model == null) {
- model = getMetadataStore().getModel(modelName);
- modelCache.put(modelName, model);
- }
- return model;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getFullName(java.lang.Object)
- */
- public String getFullName(final Object metadataID) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(AbstractMetadataRecord.class, metadataID);
- AbstractMetadataRecord metadataRecord = (AbstractMetadataRecord) metadataID;
- return metadataRecord.getFullName();
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getFullElementName(java.lang.String, java.lang.String)
- */
- public String getFullElementName(final String fullGroupName, final String shortElementName)
- throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isNotEmpty(fullGroupName);
- ArgCheck.isNotEmpty(shortElementName);
-
- return fullGroupName + DELIMITER_CHAR + shortElementName;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getShortElementName(java.lang.String)
- */
- public String getShortElementName(final String fullElementName) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isNotEmpty(fullElementName);
- int index = fullElementName.lastIndexOf(DELIMITER_CHAR);
- if(index >= 0) {
- return fullElementName.substring(index+1);
- }
- return fullElementName;
- }
-
- /**
- * Return the text portion of the fullElementName representing a group.
- * That means that this should only return text that is part of the
- * fullElementName and not look up new IDs or do much of anything fancy.
- * This method is used by the resolver to decide which portion of a fully-
- * qualified element name is the group name. It will compare whatever comes
- * back with the actual group names and aliases in the query, which is
- * why it is important not to introduce new metadata here. Also, returning
- * null indicates that no portion of the fullElementName is a
- * group name - that is ok as it will be resolved as an ambiguous element.
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getGroupName(java.lang.String)
- */
- public String getGroupName(final String fullElementName) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isNotEmpty(fullElementName);
-
- int index = fullElementName.lastIndexOf(DELIMITER_CHAR);
- if(index >= 0) {
- return fullElementName.substring(0, index);
- }
- return null;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getElementIDsInGroupID(java.lang.Object)
- */
- public List getElementIDsInGroupID(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(TableRecordImpl.class, groupID);
- return ((TableRecordImpl)groupID).getColumns();
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getGroupIDForElementID(java.lang.Object)
- */
- public Object getGroupIDForElementID(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
- if(elementID instanceof ColumnRecordImpl) {
- ColumnRecordImpl columnRecord = (ColumnRecordImpl) elementID;
- return this.getGroupID(columnRecord.getParentFullName());
- } else if(elementID instanceof ProcedureParameterRecordImpl){
- ProcedureParameterRecordImpl columnRecord = (ProcedureParameterRecordImpl) elementID;
- return this.getGroupID(columnRecord.getParentFullName());
- } else {
- throw createInvalidRecordTypeException(elementID);
- }
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getStoredProcedureInfoForProcedure(java.lang.String)
- */
- public StoredProcedureInfo getStoredProcedureInfoForProcedure(final String fullyQualifiedProcedureName)
- throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isNotEmpty(fullyQualifiedProcedureName);
- String upperGroupName = fullyQualifiedProcedureName.toUpperCase();
- StoredProcedureInfo procInfo = this.procedureCache.get(upperGroupName);
-
- if (procInfo != null) {
- return procInfo;
- }
-
- ProcedureRecordImpl procRecord = getMetadataStore().getStoredProcedure(fullyQualifiedProcedureName);
-
- String procedureFullName = procRecord.getFullName();
-
- // create the storedProcedure info object that would hold procedure's metadata
- procInfo = new StoredProcedureInfo();
- procInfo.setProcedureCallableName(procRecord.getName());
- procInfo.setProcedureID(procRecord);
-
- // modelID for the procedure
- procInfo.setModelID(getModel(procRecord.getModelName()));
-
- // get the parameter metadata info
- for (ProcedureParameterRecordImpl paramRecord : procRecord.getParameters()) {
- String runtimeType = paramRecord.getRuntimeType();
- int direction = this.convertParamRecordTypeToStoredProcedureType(paramRecord.getType());
- // create a parameter and add it to the procedure object
- SPParameter spParam = new SPParameter(paramRecord.getPosition(), direction, paramRecord.getFullName());
- spParam.setMetadataID(paramRecord);
- spParam.setClassType(DataTypeManager.getDataTypeClass(runtimeType));
- procInfo.addParameter(spParam);
- }
-
- // if the procedure returns a resultSet, obtain resultSet metadata
- if(procRecord.getResultSet() != null) {
- ColumnSetRecordImpl resultRecord = procRecord.getResultSet();
- // resultSet is the last parameter in the procedure
- int lastParamIndex = procInfo.getParameters().size() + 1;
- SPParameter param = new SPParameter(lastParamIndex, SPParameter.RESULT_SET, resultRecord.getFullName());
- param.setClassType(java.sql.ResultSet.class);
- param.setMetadataID(resultRecord);
-
- for (ColumnRecordImpl columnRecord : resultRecord.getColumns()) {
- String colType = columnRecord.getRuntimeType();
- param.addResultSetColumn(columnRecord.getFullName(), DataTypeManager.getDataTypeClass(colType), columnRecord);
- }
-
- procInfo.addParameter(param);
- }
-
- // if this is a virtual procedure get the procedure plan
- if(procRecord.isVirtual()) {
- QueryNode queryNode = new QueryNode(procedureFullName, procRecord.getQueryPlan());
- procInfo.setQueryPlan(queryNode);
- }
-
- //subtract 1, to match up with the server
- procInfo.setUpdateCount(procRecord.getUpdateCount() -1);
-
- this.procedureCache.put(upperGroupName, procInfo);
-
- return procInfo;
- }
-
- /**
- * Method to convert the parameter type returned from a ProcedureParameterRecord
- * to the parameter type expected by StoredProcedureInfo
- * @param parameterType
- * @return
- */
- private int convertParamRecordTypeToStoredProcedureType(final int parameterType) {
- switch (parameterType) {
- case MetadataConstants.PARAMETER_TYPES.IN_PARM : return SPParameter.IN;
- case MetadataConstants.PARAMETER_TYPES.OUT_PARM : return SPParameter.OUT;
- case MetadataConstants.PARAMETER_TYPES.INOUT_PARM : return SPParameter.INOUT;
- case MetadataConstants.PARAMETER_TYPES.RETURN_VALUE : return SPParameter.RETURN_VALUE;
- case MetadataConstants.PARAMETER_TYPES.RESULT_SET : return SPParameter.RESULT_SET;
- default :
- return -1;
- }
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getElementType(java.lang.Object)
- */
- public String getElementType(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
- if(elementID instanceof ColumnRecordImpl) {
- return ((ColumnRecordImpl) elementID).getRuntimeType();
- } else if(elementID instanceof ProcedureParameterRecordImpl){
- return ((ProcedureParameterRecordImpl) elementID).getRuntimeType();
- } else {
- throw createInvalidRecordTypeException(elementID);
- }
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getDefaultValue(java.lang.String)
- */
- public Object getDefaultValue(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
- if(elementID instanceof ColumnRecordImpl) {
- return ((ColumnRecordImpl) elementID).getDefaultValue();
- } else if(elementID instanceof ProcedureParameterRecordImpl){
- return ((ProcedureParameterRecordImpl) elementID).getDefaultValue();
- } else {
- throw createInvalidRecordTypeException(elementID);
- }
- }
-
- public Object getMinimumValue(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
- if(elementID instanceof ColumnRecordImpl) {
- return ((ColumnRecordImpl) elementID).getMinValue();
- } else if(elementID instanceof ProcedureParameterRecordImpl){
- return null;
- } else {
- throw createInvalidRecordTypeException(elementID);
- }
- }
-
- public Object getMaximumValue(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
- if(elementID instanceof ColumnRecordImpl) {
- return ((ColumnRecordImpl) elementID).getMaxValue();
- } else if(elementID instanceof ProcedureParameterRecordImpl){
- return null;
- } else {
- throw createInvalidRecordTypeException(elementID);
- }
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#isVirtualGroup(java.lang.Object)
- */
- public boolean isVirtualGroup(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(TableRecordImpl.class, groupID);
- return ((TableRecordImpl) groupID).isVirtual();
- }
-
- /**
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#isProcedureInputElement(java.lang.Object)
- * @since 4.2
- */
- public boolean isProcedure(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
- if(groupID instanceof ProcedureRecordImpl) {
- return true;
- }
- if(groupID instanceof TableRecordImpl){
- return false;
- }
- throw createInvalidRecordTypeException(groupID);
- }
-
- public boolean isVirtualModel(final Object modelID) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(ModelRecordImpl.class, modelID);
- ModelRecordImpl modelRecord = (ModelRecordImpl) modelID;
- return (modelRecord.getModelType() == ModelType.VIRTUAL);
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getVirtualPlan(java.lang.Object)
- */
- public QueryNode getVirtualPlan(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(TableRecordImpl.class, groupID);
-
- TableRecordImpl tableRecord = (TableRecordImpl) groupID;
- if (!tableRecord.isVirtual()) {
- throw new QueryMetadataException(RuntimeMetadataPlugin.Util.getString("TransformationMetadata.QueryPlan_could_not_be_found_for_physical_group__6")+tableRecord.getFullName()); //$NON-NLS-1$
- }
- TransformationRecordImpl select = tableRecord.getSelectTransformation();
- String transQuery = select.getTransformation();
- QueryNode queryNode = new QueryNode(tableRecord.getFullName(), transQuery);
-
- // get any bindings and add them onto the query node
- List bindings = select.getBindings();
- if(bindings != null) {
- for(Iterator bindIter = bindings.iterator();bindIter.hasNext();) {
- queryNode.addBinding((String)bindIter.next());
- }
- }
-
- return queryNode;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getInsertPlan(java.lang.Object)
- */
- public String getInsertPlan(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(TableRecordImpl.class, groupID);
- TableRecordImpl tableRecordImpl = (TableRecordImpl)groupID;
- if (!tableRecordImpl.isVirtual()) {
- throw new QueryMetadataException(RuntimeMetadataPlugin.Util.getString("TransformationMetadata.InsertPlan_could_not_be_found_for_physical_group__8")+tableRecordImpl.getFullName()); //$NON-NLS-1$
- }
- return ((TableRecordImpl)groupID).getInsertPlan();
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getUpdatePlan(java.lang.Object)
- */
- public String getUpdatePlan(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(TableRecordImpl.class, groupID);
- TableRecordImpl tableRecordImpl = (TableRecordImpl)groupID;
- if (!tableRecordImpl.isVirtual()) {
- throw new QueryMetadataException(RuntimeMetadataPlugin.Util.getString("TransformationMetadata.InsertPlan_could_not_be_found_for_physical_group__10")+tableRecordImpl.getFullName()); //$NON-NLS-1$
- }
- return ((TableRecordImpl)groupID).getUpdatePlan();
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getDeletePlan(java.lang.Object)
- */
- public String getDeletePlan(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(TableRecordImpl.class, groupID);
- TableRecordImpl tableRecordImpl = (TableRecordImpl)groupID;
- if (!tableRecordImpl.isVirtual()) {
- throw new QueryMetadataException(RuntimeMetadataPlugin.Util.getString("TransformationMetadata.DeletePlan_could_not_be_found_for_physical_group__12")+tableRecordImpl.getFullName()); //$NON-NLS-1$
- }
- return ((TableRecordImpl)groupID).getDeletePlan();
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#modelSupports(java.lang.Object, int)
- */
- public boolean modelSupports(final Object modelID, final int modelConstant)
- throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(ModelRecordImpl.class, modelID);
-
- switch(modelConstant) {
- default:
- throw new UnsupportedOperationException(RuntimeMetadataPlugin.Util.getString("TransformationMetadata.Unknown_support_constant___12") + modelConstant); //$NON-NLS-1$
- }
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#groupSupports(java.lang.Object, int)
- */
- public boolean groupSupports(final Object groupID, final int groupConstant)
- throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(TableRecordImpl.class, groupID);
- TableRecordImpl tableRecord = (TableRecordImpl) groupID;
-
- switch(groupConstant) {
- case SupportConstants.Group.UPDATE:
- return tableRecord.supportsUpdate();
- default:
- throw new UnsupportedOperationException(RuntimeMetadataPlugin.Util.getString("TransformationMetadata.Unknown_support_constant___12") + groupConstant); //$NON-NLS-1$
- }
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#elementSupports(java.lang.Object, int)
- */
- public boolean elementSupports(final Object elementID, final int elementConstant)
- throws MetaMatrixComponentException, QueryMetadataException {
-
- if(elementID instanceof ColumnRecordImpl) {
- ColumnRecordImpl columnRecord = (ColumnRecordImpl) elementID;
- switch(elementConstant) {
- case SupportConstants.Element.NULL:
- int ntype1 = columnRecord.getNullType();
- return (ntype1 == NULLABLE);
- case SupportConstants.Element.NULL_UNKNOWN:
- int ntype2 = columnRecord.getNullType();
- return (ntype2 == NULLABLE_UNKNOWN);
- case SupportConstants.Element.SEARCHABLE_COMPARE:
- int stype1 = columnRecord.getSearchType();
- return (stype1 == SEARCHABLE || stype1 == ALL_EXCEPT_LIKE);
- case SupportConstants.Element.SEARCHABLE_LIKE:
- int stype2 = columnRecord.getSearchType();
- return (stype2 == SEARCHABLE || stype2 == LIKE_ONLY);
- case SupportConstants.Element.SELECT:
- return columnRecord.isSelectable();
- case SupportConstants.Element.UPDATE:
- return columnRecord.isUpdatable();
- case SupportConstants.Element.DEFAULT_VALUE:
- Object defaultValue = columnRecord.getDefaultValue();
- if(defaultValue == null) {
- return false;
- }
- return true;
- case SupportConstants.Element.AUTO_INCREMENT:
- return columnRecord.isAutoIncrementable();
- case SupportConstants.Element.CASE_SENSITIVE:
- return columnRecord.isCaseSensitive();
- case SupportConstants.Element.SIGNED:
- return columnRecord.isSigned();
- default:
- throw new UnsupportedOperationException(RuntimeMetadataPlugin.Util.getString("TransformationMetadata.Unknown_support_constant___12") + elementConstant); //$NON-NLS-1$
- }
- } else if(elementID instanceof ProcedureParameterRecordImpl) {
- ProcedureParameterRecordImpl columnRecord = (ProcedureParameterRecordImpl) elementID;
- switch(elementConstant) {
- case SupportConstants.Element.NULL:
- int ntype1 = columnRecord.getNullType();
- return (ntype1 == NULLABLE);
- case SupportConstants.Element.NULL_UNKNOWN:
- int ntype2 = columnRecord.getNullType();
- return (ntype2 == NULLABLE_UNKNOWN);
- case SupportConstants.Element.SEARCHABLE_COMPARE:
- case SupportConstants.Element.SEARCHABLE_LIKE:
- return false;
- case SupportConstants.Element.SELECT:
-
- if (columnRecord.getType() == MetadataConstants.PARAMETER_TYPES.IN_PARM) {
- return false;
- }
-
- return true;
- case SupportConstants.Element.UPDATE:
- return false;
- case SupportConstants.Element.DEFAULT_VALUE:
- Object defaultValue = columnRecord.getDefaultValue();
- if(defaultValue == null) {
- return false;
- }
- return true;
- case SupportConstants.Element.AUTO_INCREMENT:
- return false;
- case SupportConstants.Element.CASE_SENSITIVE:
- return false;
- case SupportConstants.Element.SIGNED:
- return true;
- default:
- throw new UnsupportedOperationException(RuntimeMetadataPlugin.Util.getString("TransformationMetadata.Unknown_support_constant___12") + elementConstant); //$NON-NLS-1$
- }
-
- } else {
- throw createInvalidRecordTypeException(elementID);
- }
- }
-
- private IllegalArgumentException createInvalidRecordTypeException(Object elementID) {
- return new IllegalArgumentException(RuntimeMetadataPlugin.Util.getString("TransformationMetadata.Invalid_type", elementID.getClass().getName())); //$NON-NLS-1$
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getMaxSetSize(java.lang.Object)
- */
- public int getMaxSetSize(final Object modelID) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(ModelRecordImpl.class, modelID);
- return ((ModelRecordImpl) modelID).getMaxSetSize();
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getIndexesInGroup(java.lang.Object)
- */
- public Collection getIndexesInGroup(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(TableRecordImpl.class, groupID);
- return ((TableRecordImpl)groupID).getIndexes();
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getUniqueKeysInGroup(java.lang.Object)
- */
- public Collection getUniqueKeysInGroup(final Object groupID)
- throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(TableRecordImpl.class, groupID);
- TableRecordImpl tableRecordImpl = (TableRecordImpl)groupID;
- if (tableRecordImpl.getPrimaryKey() != null) {
- ArrayList<ColumnSetRecordImpl> result = new ArrayList<ColumnSetRecordImpl>(tableRecordImpl.getUniqueKeys());
- result.add(tableRecordImpl.getPrimaryKey());
- return result;
- }
- return tableRecordImpl.getUniqueKeys();
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getForeignKeysInGroup(java.lang.Object)
- */
- public Collection getForeignKeysInGroup(final Object groupID)
- throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(TableRecordImpl.class, groupID);
- return ((TableRecordImpl)groupID).getForeignKeys();
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getPrimaryKeyIDForForeignKeyID(java.lang.Object)
- */
- public Object getPrimaryKeyIDForForeignKeyID(final Object foreignKeyID)
- throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(ForeignKeyRecordImpl.class, foreignKeyID);
- ForeignKeyRecordImpl fkRecord = (ForeignKeyRecordImpl) foreignKeyID;
- return fkRecord.getPrimaryKey();
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getAccessPatternsInGroup(java.lang.Object)
- */
- public Collection getAccessPatternsInGroup(final Object groupID)
- throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(TableRecordImpl.class, groupID);
- return ((TableRecordImpl)groupID).getAccessPatterns();
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getElementIDsInIndex(java.lang.Object)
- */
- public List getElementIDsInIndex(final Object index) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(ColumnSetRecordImpl.class, index);
- return ((ColumnSetRecordImpl)index).getColumns();
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getElementIDsInKey(java.lang.Object)
- */
- public List getElementIDsInKey(final Object key) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(ColumnSetRecordImpl.class, key);
- return ((ColumnSetRecordImpl)key).getColumns();
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getElementIDsInAccessPattern(java.lang.Object)
- */
- public List getElementIDsInAccessPattern(final Object accessPattern)
- throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(ColumnSetRecordImpl.class, accessPattern);
- return ((ColumnSetRecordImpl)accessPattern).getColumns();
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#isXMLGroup(java.lang.Object)
- */
- public boolean isXMLGroup(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(TableRecordImpl.class, groupID);
-
- TableRecordImpl tableRecord = (TableRecordImpl) groupID;
- if(tableRecord.getTableType() == MetadataConstants.TABLE_TYPES.DOCUMENT_TYPE) {
- return true;
- }
- return false;
- }
-
- /**
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#hasMaterialization(java.lang.Object)
- * @since 4.2
- */
- public boolean hasMaterialization(final Object groupID) throws MetaMatrixComponentException,
- QueryMetadataException {
- ArgCheck.isInstanceOf(TableRecordImpl.class, groupID);
- TableRecordImpl tableRecord = (TableRecordImpl) groupID;
- return tableRecord.isMaterialized();
- }
-
- /**
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getMaterialization(java.lang.Object)
- * @since 4.2
- */
- public Object getMaterialization(final Object groupID) throws MetaMatrixComponentException,
- QueryMetadataException {
- ArgCheck.isInstanceOf(TableRecordImpl.class, groupID);
- TableRecordImpl tableRecord = (TableRecordImpl) groupID;
- if(tableRecord.isMaterialized()) {
- return this.getGroupID(tableRecord.getMaterializedTableName());
- }
- return null;
- }
-
- /**
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getMaterializationStage(java.lang.Object)
- * @since 4.2
- */
- public Object getMaterializationStage(final Object groupID) throws MetaMatrixComponentException,
- QueryMetadataException {
- ArgCheck.isInstanceOf(TableRecordImpl.class, groupID);
- TableRecordImpl tableRecord = (TableRecordImpl) groupID;
- if(tableRecord.isMaterialized()) {
- return this.getGroupID(tableRecord.getMaterializedStageTableName());
- }
- return null;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getMappingNode(java.lang.Object)
- */
- public MappingNode getMappingNode(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(TableRecordImpl.class, groupID);
-
- TableRecordImpl tableRecord = (TableRecordImpl) groupID;
- final String groupName = tableRecord.getFullName();
- if(tableRecord.isVirtual()) {
- // get the transform record for this group
- TransformationRecordImpl transformRecord = null;
- // Query the index files
- Collection results = getMetadataStore().findMetadataRecords(MetadataConstants.RECORD_TYPE.MAPPING_TRANSFORM,groupName,false);
- int resultSize = results.size();
- if(resultSize == 1) {
- // get the columnset record for this result
- transformRecord = (TransformationRecordImpl) results.iterator().next();
- } else {
- if(resultSize == 0) {
- throw new QueryMetadataException(RuntimeMetadataPlugin.Util.getString("TransformationMetadata.Could_not_find_transformation_record_for_the_group__1")+groupName); //$NON-NLS-1$
- }
- // there should be only one for a fully qualified elementName
- if(resultSize > 1) {
- throw new MetaMatrixComponentException(RuntimeMetadataPlugin.Util.getString("TransformationMetadata.Multiple_transformation_records_found_for_the_group___1")+groupName); //$NON-NLS-1$
- }
- }
- // get mappin transform
- String document = transformRecord.getTransformation();
- InputStream inputStream = new ByteArrayInputStream(document.getBytes());
- MappingLoader reader = new MappingLoader();
- MappingDocument mappingDoc = null;
- try{
- mappingDoc = reader.loadDocument(inputStream);
- mappingDoc.setName(groupName);
- } catch (Exception e){
- throw new MetaMatrixComponentException(e, RuntimeMetadataPlugin.Util.getString("TransformationMetadata.Error_trying_to_read_virtual_document_{0},_with_body__n{1}_1", groupName, mappingDoc)); //$NON-NLS-1$
- } finally {
- try {
- inputStream.close();
- } catch(Exception e) {}
- }
- return (MappingDocument)mappingDoc.clone();
- }
-
- return null;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getVirtualDatabaseName()
- */
- public String getVirtualDatabaseName() throws MetaMatrixComponentException, QueryMetadataException {
- return this.getMetadataStore().getMetadataSource().getName();
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getXMLTempGroups(java.lang.Object)
- */
- public Collection getXMLTempGroups(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(TableRecordImpl.class, groupID);
- TableRecordImpl tableRecord = (TableRecordImpl) groupID;
-
- int tableType = tableRecord.getTableType();
- if(tableType == MetadataConstants.TABLE_TYPES.DOCUMENT_TYPE) {
- return getMetadataStore().getXMLTempGroups(tableRecord);
- }
- return Collections.EMPTY_SET;
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getCardinality(java.lang.Object)
- */
- public int getCardinality(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(TableRecordImpl.class, groupID);
- return ((TableRecordImpl) groupID).getCardinality();
- }
-
- /* (non-Javadoc)
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getXMLSchemas(java.lang.Object)
- */
- public List getXMLSchemas(final Object groupID) throws MetaMatrixComponentException, QueryMetadataException {
-
- ArgCheck.isInstanceOf(TableRecordImpl.class, groupID);
- TableRecordImpl tableRecord = (TableRecordImpl) groupID;
-
- // lookup transformation record for the group
- String groupName = tableRecord.getFullName();
- TransformationRecordImpl transformRecord = null;
-
- // Query the index files
- Collection results = getMetadataStore().findMetadataRecords(MetadataConstants.RECORD_TYPE.MAPPING_TRANSFORM,groupName,false);
- int resultSize = results.size();
- if(resultSize == 1) {
- // get the columnset record for this result
- transformRecord = (TransformationRecordImpl) results.iterator().next();
- } else {
- if(resultSize == 0) {
- throw new QueryMetadataException(RuntimeMetadataPlugin.Util.getString("TransformationMetadata.Could_not_find_transformation_record_for_the_group__1")+groupName); //$NON-NLS-1$
- }
- // there should be only one for a fully qualified elementName
- if(resultSize > 1) {
- throw new MetaMatrixComponentException(RuntimeMetadataPlugin.Util.getString("TransformationMetadata.Multiple_transformation_records_found_for_the_group___1")+groupName); //$NON-NLS-1$
- }
- }
-
- // get the schema Paths
- List<String> schemaPaths = transformRecord.getSchemaPaths();
-
- List<String> schemas = new LinkedList<String>();
-
- File f = new File(transformRecord.getResourcePath());
- String path = f.getParent();
-
- for (String string : schemaPaths) {
- String schema = getCharacterVDBResource(string);
-
- if (schema == null) {
- schema = getCharacterVDBResource(path + File.separator + string);
- }
-
- if (schema == null) {
- throw new MetaMatrixComponentException(RuntimeMetadataPlugin.Util.getString("TransformationMetadata.Error_trying_to_read_schemas_for_the_document/table____1")+groupName); //$NON-NLS-1$
- }
- }
-
- return schemas;
- }
-
- public String getNameInSource(final Object metadataID) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(AbstractMetadataRecord.class, metadataID);
- return ((AbstractMetadataRecord) metadataID).getNameInSource();
- }
-
- public int getElementLength(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
- if(elementID instanceof ColumnRecordImpl) {
- return ((ColumnRecordImpl) elementID).getLength();
- } else if(elementID instanceof ProcedureParameterRecordImpl){
- return ((ProcedureParameterRecordImpl) elementID).getLength();
- } else {
- throw createInvalidRecordTypeException(elementID);
- }
- }
-
- public int getPosition(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
- if(elementID instanceof ColumnRecordImpl) {
- return ((ColumnRecordImpl) elementID).getPosition();
- } else if(elementID instanceof ProcedureParameterRecordImpl) {
- return ((ProcedureParameterRecordImpl) elementID).getPosition();
- } else {
- throw createInvalidRecordTypeException(elementID);
- }
- }
-
- public int getPrecision(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
- if(elementID instanceof ColumnRecordImpl) {
- return ((ColumnRecordImpl) elementID).getPrecision();
- } else if(elementID instanceof ProcedureParameterRecordImpl) {
- return ((ProcedureParameterRecordImpl) elementID).getPrecision();
- } else {
- throw createInvalidRecordTypeException(elementID);
- }
- }
-
- public int getRadix(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
- if(elementID instanceof ColumnRecordImpl) {
- return ((ColumnRecordImpl) elementID).getRadix();
- } else if(elementID instanceof ProcedureParameterRecordImpl) {
- return ((ProcedureParameterRecordImpl) elementID).getRadix();
- } else {
- throw createInvalidRecordTypeException(elementID);
- }
- }
-
- public String getFormat(Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
- if(elementID instanceof ColumnRecordImpl) {
- return ((ColumnRecordImpl) elementID).getFormat();
- }
- throw createInvalidRecordTypeException(elementID);
- }
-
- public int getScale(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
- if(elementID instanceof ColumnRecordImpl) {
- return ((ColumnRecordImpl) elementID).getScale();
- } else if(elementID instanceof ProcedureParameterRecordImpl) {
- return ((ProcedureParameterRecordImpl) elementID).getScale();
- } else {
- throw createInvalidRecordTypeException(elementID);
- }
- }
-
- public int getDistinctValues(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
- if(elementID instanceof ColumnRecordImpl) {
- return ((ColumnRecordImpl) elementID).getDistinctValues();
- } else if(elementID instanceof ProcedureParameterRecordImpl) {
- return -1;
- } else {
- throw createInvalidRecordTypeException(elementID);
- }
- }
-
- public int getNullValues(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
- if(elementID instanceof ColumnRecordImpl) {
- return ((ColumnRecordImpl) elementID).getNullValues();
- } else if(elementID instanceof ProcedureParameterRecordImpl) {
- return -1;
- } else {
- throw createInvalidRecordTypeException(elementID);
- }
- }
-
- public String getNativeType(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
- if(elementID instanceof ColumnRecordImpl) {
- return ((ColumnRecordImpl) elementID).getNativeType();
- } else if(elementID instanceof ProcedureParameterRecordImpl) {
- return null;
- } else {
- throw createInvalidRecordTypeException(elementID);
- }
- }
-
- /*
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getExtensionProperties(java.lang.Object)
- */
- public Properties getExtensionProperties(final Object metadataID) throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(AbstractMetadataRecord.class, metadataID);
- AbstractMetadataRecord metadataRecord = (AbstractMetadataRecord) metadataID;
- if (metadataRecord.getProperties() == null) {
- Properties p = new Properties();
- Collection<PropertyRecordImpl> props = getMetadataStore().getExtensionProperties(metadataRecord);
- for (PropertyRecordImpl propertyRecordImpl : props) {
- p.setProperty(propertyRecordImpl.getPropertyName(), propertyRecordImpl.getPropertyValue());
- }
- metadataRecord.setProperties(p);
- }
- return metadataRecord.getProperties();
- }
-
- /**
- * @see com.metamatrix.query.metadata.BasicQueryMetadata#getBinaryVDBResource(java.lang.String)
- * @since 4.3
- */
- public byte[] getBinaryVDBResource(String resourcePath) throws MetaMatrixComponentException,
- QueryMetadataException {
- String content = this.getCharacterVDBResource(resourcePath);
- if(content != null) {
- return content.getBytes();
- }
- return null;
- }
-
- /**
- * @see com.metamatrix.query.metadata.BasicQueryMetadata#getCharacterVDBResource(java.lang.String)
- * @since 4.3
- */
- public String getCharacterVDBResource(String resourcePath) throws MetaMatrixComponentException,
- QueryMetadataException {
- return MetadataSourceUtil.getFileContentAsString(resourcePath, this.getMetadataStore().getMetadataSource());
- }
-
- protected CompositeMetadataStore getMetadataStore() {
- return this.store;
- }
-
- /**
- * @see com.metamatrix.query.metadata.BasicQueryMetadata#getVDBResourcePaths()
- * @since 4.3
- */
- public String[] getVDBResourcePaths() throws MetaMatrixComponentException,
- QueryMetadataException {
- return getMetadataStore().getMetadataSource().getEntries().toArray(new String[0]);
- }
-
- /**
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getModeledType(java.lang.Object)
- * @since 5.0
- */
- public String getModeledType(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
- DatatypeRecordImpl record = getDatatypeRecord(elementID);
- if (record != null) {
- return record.getDatatypeID();
- }
- return null;
- }
-
- /**
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getModeledBaseType(java.lang.Object)
- * @since 5.0
- */
- public String getModeledBaseType(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
- DatatypeRecordImpl record = getDatatypeRecord(elementID);
- if (record != null) {
- return record.getBasetypeID();
- }
- return null;
- }
-
- /**
- * @see com.metamatrix.query.metadata.QueryMetadataInterface#getModeledPrimitiveType(java.lang.Object)
- * @since 5.0
- */
- public String getModeledPrimitiveType(final Object elementID) throws MetaMatrixComponentException, QueryMetadataException {
- DatatypeRecordImpl record = getDatatypeRecord(elementID);
- if (record != null) {
- return record.getPrimitiveTypeID();
- }
- return null;
- }
-
- private DatatypeRecordImpl getDatatypeRecord(final Object elementID) {
- if (elementID instanceof ColumnRecordImpl) {
- return ((ColumnRecordImpl)elementID).getDatatype();
- } else if (elementID instanceof ProcedureParameterRecordImpl) {
- return ((ProcedureParameterRecordImpl)elementID).getDatatype();
- } else {
- throw createInvalidRecordTypeException(elementID);
- }
- }
-
- @Override
- public Object addToMetadataCache(Object metadataID, String key, Object value)
- throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(AbstractMetadataRecord.class, metadataID);
- key = getCacheKey(key, (AbstractMetadataRecord)metadataID);
- return this.metadataCache.put(key, value);
- }
-
- @Override
- public Object getFromMetadataCache(Object metadataID, String key)
- throws MetaMatrixComponentException, QueryMetadataException {
- ArgCheck.isInstanceOf(AbstractMetadataRecord.class, metadataID);
- key = getCacheKey(key, (AbstractMetadataRecord)metadataID);
- return this.metadataCache.get(key);
- }
-
- private String getCacheKey(String key, AbstractMetadataRecord record) {
- return record.getRecordType() + "/" + record.getFullName() + "/" + key; //$NON-NLS-1$ //$NON-NLS-2$
- }
-
-}
\ No newline at end of file
Deleted: branches/JCA/metadata/src/main/java/org/teiid/metadata/index/CharOperation.java
===================================================================
--- branches/JCA/metadata/src/main/java/org/teiid/metadata/index/CharOperation.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/metadata/src/main/java/org/teiid/metadata/index/CharOperation.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,202 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- * MetaMatrix, Inc - repackaging and updates for use as a metadata store
- *******************************************************************************/
-
-package org.teiid.metadata.index;
-
-/**
- * This class is a collection of helper methods to manipulate char arrays.
- *
- * @since 2.1
- */
-public final class CharOperation {
-
- /**
- * Answers true if the pattern matches the given name, false otherwise. This
- * char[] pattern matching accepts wild-cards '*' and '?'.
- *
- * When not case sensitive, the pattern is assumed to already be lowercased,
- * the name will be lowercased character per character as comparing. If name
- * is null, the answer is false. If pattern is null, the answer is true if
- * name is not null. <br>
- * <br>
- * For example:
- * <ol>
- * <li>
- *
- * <pre>
- * pattern = { '?', 'b', '*' }
- * name = { 'a', 'b', 'c' , 'd' }
- * isCaseSensitive = true
- * result => true
- * </pre>
- *
- * </li>
- * <li>
- *
- * <pre>
- * pattern = { '?', 'b', '?' }
- * name = { 'a', 'b', 'c' , 'd' }
- * isCaseSensitive = true
- * result => false
- * </pre>
- *
- * </li>
- * <li>
- *
- * <pre>
- * pattern = { 'b', '*' }
- * name = { 'a', 'b', 'c' , 'd' }
- * isCaseSensitive = true
- * result => false
- * </pre>
- *
- * </li>
- * </ol>
- *
- * @param pattern
- * the given pattern
- * @param name
- * the given name
- * @param isCaseSensitive
- * flag to know whether or not the matching should be case
- * sensitive
- * @return true if the pattern matches the given name, false otherwise
- *
- * TODO: this code was derived from eclipse CharOperation.
- * It also lacks the ability to specify an escape character.
- *
- */
- public static final boolean match(char[] pattern, char[] name,
- boolean isCaseSensitive) {
-
- if (name == null)
- return false; // null name cannot match
- if (pattern == null)
- return true; // null pattern is equivalent to '*'
-
- int patternEnd = pattern.length;
- int nameEnd = name.length;
-
- int iPattern = 0;
- int iName = 0;
-
- /* check first segment */
- char patternChar = 0;
- while ((iPattern < patternEnd)
- && (patternChar = pattern[iPattern]) != '*') {
- if (iName == nameEnd)
- return false;
- if (isCaseSensitive && patternChar != name[iName]
- && patternChar != '?') {
- return false;
- } else if (!isCaseSensitive
- && Character.toLowerCase(patternChar) != Character
- .toLowerCase(name[iName]) && patternChar != '?') {
- return false;
- }
- iName++;
- iPattern++;
- }
- /* check sequence of star+segment */
- int segmentStart;
- if (patternChar == '*') {
- if (patternEnd == 1) {
- return true;
- }
- segmentStart = ++iPattern; // skip star
- } else {
- segmentStart = 0; // force iName check
- }
- int prefixStart = iName;
- checkSegment: while (iName < nameEnd) {
- if (iPattern == patternEnd) {
- iPattern = segmentStart; // mismatch - restart current
- // segment
- iName = ++prefixStart;
- continue checkSegment;
- }
- /* segment is ending */
- if ((patternChar = pattern[iPattern]) == '*') {
- segmentStart = ++iPattern; // skip start
- if (segmentStart == patternEnd) {
- return true;
- }
- prefixStart = iName;
- continue checkSegment;
- }
- /* check current name character */
- char matchChar = isCaseSensitive ? name[iName] : Character
- .toLowerCase(name[iName]);
- if ((isCaseSensitive ? ((matchChar != patternChar) && patternChar != '?')
- : (matchChar != Character.toLowerCase(patternChar))
- && patternChar != '?')) {
- iPattern = segmentStart; // mismatch - restart current
- // segment
- iName = ++prefixStart;
- continue checkSegment;
- }
- iName++;
- iPattern++;
- }
-
- return (segmentStart == patternEnd)
- || (iName == nameEnd && iPattern == patternEnd)
- || (iPattern == patternEnd - 1 && pattern[iPattern] == '*');
- }
-
- /**
- * Answers true if the given name starts with the given prefix, false otherwise.
- * isCaseSensitive is used to find out whether or not the comparison should be case sensitive.
- * <br>
- * <br>
- * For example:
- * <ol>
- * <li><pre>
- * prefix = { 'a' , 'B' }
- * name = { 'a' , 'b', 'b', 'a', 'b', 'a' }
- * isCaseSensitive = false
- * result => true
- * </pre>
- * </li>
- * <li><pre>
- * prefix = { 'a' , 'B' }
- * name = { 'a' , 'b', 'b', 'a', 'b', 'a' }
- * isCaseSensitive = true
- * result => false
- * </pre>
- * </li>
- * </ol>
- *
- * @param prefix the given prefix
- * @param name the given name
- * @param isCaseSensitive to find out whether or not the comparison should be case sensitive
- * @return true if the given name starts with the given prefix, false otherwise
- * @exception NullPointerException if the given name is null or if the given prefix is null
- */
- public static final boolean prefixEquals(char[] prefix, char[] name,
- boolean isCaseSensitive) {
-
- int max = prefix.length;
- if (name.length < max)
- return false;
-
- for (int i = max; --i >= 0;) {
- if (prefix[i] == name[i]
- || (isCaseSensitive && Character.toLowerCase(prefix[i]) == Character
- .toLowerCase(name[i]))) {
- continue;
- }
- return false;
- }
- return true;
- }
-}
Modified: branches/JCA/metadata/src/main/java/org/teiid/metadata/index/IndexConstants.java
===================================================================
--- branches/JCA/metadata/src/main/java/org/teiid/metadata/index/IndexConstants.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/metadata/src/main/java/org/teiid/metadata/index/IndexConstants.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -22,7 +22,6 @@
package org.teiid.metadata.index;
-import org.teiid.connector.metadata.runtime.MetadataConstants;
/**
* IndexConstants
Added: branches/JCA/metadata/src/main/java/org/teiid/metadata/index/IndexMetadataFactory.java
===================================================================
--- branches/JCA/metadata/src/main/java/org/teiid/metadata/index/IndexMetadataFactory.java (rev 0)
+++ branches/JCA/metadata/src/main/java/org/teiid/metadata/index/IndexMetadataFactory.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,493 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * See the COPYRIGHT.txt file distributed with this work for information
+ * regarding copyright ownership. Some portions may be licensed
+ * to Red Hat, Inc. under one or more contributor license agreements.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA.
+ */
+
+package org.teiid.metadata.index;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.teiid.connector.metadata.runtime.AbstractMetadataRecord;
+import org.teiid.connector.metadata.runtime.Column;
+import org.teiid.connector.metadata.runtime.ColumnSet;
+import org.teiid.connector.metadata.runtime.Datatype;
+import org.teiid.connector.metadata.runtime.ForeignKey;
+import org.teiid.connector.metadata.runtime.KeyRecord;
+import org.teiid.connector.metadata.runtime.MetadataStore;
+import org.teiid.connector.metadata.runtime.ProcedureParameter;
+import org.teiid.connector.metadata.runtime.ProcedureRecordImpl;
+import org.teiid.connector.metadata.runtime.Schema;
+import org.teiid.connector.metadata.runtime.Table;
+import org.teiid.core.index.IEntryResult;
+import org.teiid.internal.core.index.Index;
+import org.teiid.metadata.TransformationMetadata;
+
+import com.metamatrix.api.exception.query.QueryMetadataException;
+import com.metamatrix.core.MetaMatrixCoreException;
+import com.metamatrix.core.MetaMatrixRuntimeException;
+import com.metamatrix.core.id.UUID;
+import com.metamatrix.core.util.ArgCheck;
+import com.metamatrix.core.util.StringUtil;
+import com.metamatrix.metadata.runtime.api.MetadataSource;
+
+/**
+ * Loads MetadataRecords from index files.
+ */
+public class IndexMetadataFactory {
+
+ private Index[] indexes;
+ private Map<String, Datatype> datatypeCache;
+ private Map<String, KeyRecord> primaryKeyCache = new HashMap<String, KeyRecord>();
+ private Map<String, Table> tableCache = new HashMap<String, Table>();
+ private MetadataStore store = new MetadataStore();
+
+ public IndexMetadataFactory(MetadataSource source) throws IOException {
+ ArrayList<Index> tmp = new ArrayList<Index>();
+ for (String fileName : source.getEntries()) {
+ if (SimpleIndexUtil.isIndexFile(fileName)) {
+ File f = source.getFile(fileName);
+ tmp.add( new Index(f.getAbsolutePath(), true) );
+ }
+ }
+ this.indexes = tmp.toArray(new Index[tmp.size()]);
+ getDatatypeCache();
+ getModels();
+ getTables();
+ getProcedures();
+ }
+
+ public MetadataStore getMetadataStore() {
+ return store;
+ }
+
+ public void getModels() {
+ Collection<Schema> records = findMetadataRecords(MetadataConstants.RECORD_TYPE.MODEL, null, false);
+ for (Schema modelRecord : records) {
+ store.addSchema(modelRecord);
+ }
+ }
+
+ public void getTables() {
+ for (Schema model : store.getSchemas().values()) {
+ List<Table> records = findMetadataRecords(MetadataConstants.RECORD_TYPE.TABLE, model.getName() + IndexConstants.NAME_DELIM_CHAR + IndexConstants.RECORD_STRING.MATCH_CHAR, true);
+ //load non-materialized first, so that the uuid->table cache is populated
+ Collections.sort(records, new Comparator<Table>() {
+ @Override
+ public int compare(Table o1, Table o2) {
+ if (!o1.isMaterialized()) {
+ return -1;
+ }
+ if (!o2.isMaterialized()) {
+ return 1;
+ }
+ return 0;
+ }
+ });
+ for (Table tableRecord : records) {
+ tableCache.put(tableRecord.getUUID(), tableRecord);
+ List<Column> columns = new ArrayList<Column>(findChildRecords(tableRecord, MetadataConstants.RECORD_TYPE.COLUMN));
+ for (Column columnRecordImpl : columns) {
+ columnRecordImpl.setDatatype(getDatatypeCache().get(columnRecordImpl.getDatatypeUUID()));
+ columnRecordImpl.setParent(tableRecord);
+ }
+ Collections.sort(columns);
+ tableRecord.setColumns(columns);
+ tableRecord.setAccessPatterns(findChildRecords(tableRecord, MetadataConstants.RECORD_TYPE.ACCESS_PATTERN));
+ Map<String, Column> uuidColumnMap = new HashMap<String, Column>();
+ for (Column columnRecordImpl : columns) {
+ uuidColumnMap.put(columnRecordImpl.getUUID(), columnRecordImpl);
+ }
+ for (KeyRecord columnSetRecordImpl : tableRecord.getAccessPatterns()) {
+ loadColumnSetRecords(columnSetRecordImpl, uuidColumnMap);
+ columnSetRecordImpl.setParent(tableRecord);
+ }
+ tableRecord.setForiegnKeys(findChildRecords(tableRecord, MetadataConstants.RECORD_TYPE.FOREIGN_KEY));
+ for (ForeignKey foreignKeyRecord : tableRecord.getForeignKeys()) {
+ foreignKeyRecord.setPrimaryKey(getPrimaryKey(foreignKeyRecord.getUniqueKeyID()));
+ loadColumnSetRecords(foreignKeyRecord, uuidColumnMap);
+ foreignKeyRecord.setParent(tableRecord);
+ }
+ tableRecord.setUniqueKeys(findChildRecords(tableRecord, MetadataConstants.RECORD_TYPE.UNIQUE_KEY));
+ for (KeyRecord columnSetRecordImpl : tableRecord.getUniqueKeys()) {
+ loadColumnSetRecords(columnSetRecordImpl, uuidColumnMap);
+ columnSetRecordImpl.setParent(tableRecord);
+ }
+ tableRecord.setIndexes(findChildRecords(tableRecord, MetadataConstants.RECORD_TYPE.INDEX));
+ for (KeyRecord columnSetRecordImpl : tableRecord.getIndexes()) {
+ loadColumnSetRecords(columnSetRecordImpl, uuidColumnMap);
+ columnSetRecordImpl.setParent(tableRecord);
+ }
+ if (tableRecord.getPrimaryKey() != null) {
+ KeyRecord primaryKey = getPrimaryKey(tableRecord.getPrimaryKey().getUUID());
+ loadColumnSetRecords(primaryKey, uuidColumnMap);
+ primaryKey.setParent(tableRecord);
+ tableRecord.setPrimaryKey(primaryKey);
+ }
+ String groupUUID = tableRecord.getUUID();
+ if (tableRecord.isVirtual()) {
+ TransformationRecordImpl update = (TransformationRecordImpl)getRecordByType(groupUUID, MetadataConstants.RECORD_TYPE.UPDATE_TRANSFORM,false);
+ if (update != null) {
+ tableRecord.setUpdatePlan(update.getTransformation());
+ }
+ TransformationRecordImpl insert = (TransformationRecordImpl)getRecordByType(groupUUID, MetadataConstants.RECORD_TYPE.INSERT_TRANSFORM,false);
+ if (insert != null) {
+ tableRecord.setInsertPlan(insert.getTransformation());
+ }
+ TransformationRecordImpl delete = (TransformationRecordImpl)getRecordByType(groupUUID, MetadataConstants.RECORD_TYPE.DELETE_TRANSFORM,false);
+ if (delete != null) {
+ tableRecord.setDeletePlan(delete.getTransformation());
+ }
+ TransformationRecordImpl select = (TransformationRecordImpl)getRecordByType(groupUUID, MetadataConstants.RECORD_TYPE.SELECT_TRANSFORM,false);
+ // this group may be an xml document
+ if(select == null) {
+ select = (TransformationRecordImpl)getRecordByType(groupUUID, MetadataConstants.RECORD_TYPE.MAPPING_TRANSFORM,false);
+ }
+ if (select != null) {
+ tableRecord.setSelectTransformation(select.getTransformation());
+ tableRecord.setBindings(select.getBindings());
+ tableRecord.setSchemaPaths(select.getSchemaPaths());
+ tableRecord.setResourcePath(select.getResourcePath());
+ }
+ }
+ if (tableRecord.isMaterialized()) {
+ tableRecord.setMaterializedStageTable(tableCache.get(tableRecord.getMaterializedStageTable().getUUID()));
+ tableRecord.setMaterializedTable(tableCache.get(tableRecord.getMaterializedTable().getUUID()));
+ }
+ model.addTable(tableRecord);
+ }
+ }
+ }
+
+ private KeyRecord getPrimaryKey(String uuid) {
+ KeyRecord pk = this.primaryKeyCache.get(uuid);
+ if (pk == null) {
+ pk = (KeyRecord)this.getRecordByType(uuid, MetadataConstants.RECORD_TYPE.PRIMARY_KEY);
+ this.primaryKeyCache.put(uuid, pk);
+ }
+ return pk;
+ }
+
+ public Map<String, Datatype> getDatatypeCache() {
+ if (this.datatypeCache == null) {
+ this.datatypeCache = new HashMap<String, Datatype>();
+ Collection<Datatype> dataTypes = findMetadataRecords(MetadataConstants.RECORD_TYPE.DATATYPE, null, false);
+ for (Datatype datatypeRecordImpl : dataTypes) {
+ datatypeCache.put(datatypeRecordImpl.getUUID(), datatypeRecordImpl);
+ this.store.addDatatype(datatypeRecordImpl);
+ }
+ }
+ return datatypeCache;
+ }
+
+ private Column findElement(String fullName) {
+ Column columnRecord = (Column)getRecordByType(fullName, MetadataConstants.RECORD_TYPE.COLUMN);
+ columnRecord.setDatatype(getDatatypeCache().get(columnRecord.getDatatypeUUID()));
+ return columnRecord;
+ }
+
+ private AbstractMetadataRecord getRecordByType(final String entityName, final char recordType) {
+ return getRecordByType(entityName, recordType, true);
+ }
+
+ private AbstractMetadataRecord getRecordByType(final String entityName, final char recordType, boolean mustExist) {
+ // Query the index files
+ final Collection results = findMetadataRecords(recordType,entityName,false);
+
+ int resultSize = results.size();
+ if(resultSize == 1) {
+ // get the columnset record for this result
+ return (AbstractMetadataRecord) results.iterator().next();
+ }
+ if(resultSize == 0) {
+ if (mustExist) {
+ // there should be only one for the UUID
+ throw new MetaMatrixRuntimeException(entityName+TransformationMetadata.NOT_EXISTS_MESSAGE);
+ }
+ return null;
+ }
+ throw new MetaMatrixRuntimeException(RuntimeMetadataPlugin.Util.getString("TransformationMetadata.0", entityName)); //$NON-NLS-1$
+ }
+
+ public void getProcedures() {
+ for (Schema model : store.getSchemas().values()) {
+ Collection<ProcedureRecordImpl> procedureRecordImpls = findMetadataRecords(MetadataConstants.RECORD_TYPE.CALLABLE, model.getName() + IndexConstants.NAME_DELIM_CHAR + IndexConstants.RECORD_STRING.MATCH_CHAR, true);
+ for (ProcedureRecordImpl procedureRecord : procedureRecordImpls) {
+ // get the parameter metadata info
+ for (int i = 0; i < procedureRecord.getParameters().size(); i++) {
+ ProcedureParameter paramRecord = (ProcedureParameter) this.getRecordByType(procedureRecord.getParameters().get(i).getUUID(), MetadataConstants.RECORD_TYPE.CALLABLE_PARAMETER);
+ paramRecord.setDatatype(getDatatypeCache().get(paramRecord.getDatatypeUUID()));
+ procedureRecord.getParameters().set(i, paramRecord);
+ paramRecord.setProcedure(procedureRecord);
+ }
+
+ ColumnSet<ProcedureRecordImpl> result = procedureRecord.getResultSet();
+ if(result != null) {
+ ColumnSet<ProcedureRecordImpl> resultRecord = (ColumnSet<ProcedureRecordImpl>) getRecordByType(result.getUUID(), MetadataConstants.RECORD_TYPE.RESULT_SET, false);
+ if (resultRecord != null) {
+ resultRecord.setParent(procedureRecord);
+ resultRecord.setName("RSParam"); //$NON-NLS-1$
+ loadColumnSetRecords(resultRecord, null);
+ procedureRecord.setResultSet(resultRecord);
+ }
+ //it is ok to be null here. it will happen when a
+ //virtual stored procedure is created from a
+ //physical stored procedure without a result set
+ //TODO: find a better fix for this
+ }
+
+ // if this is a virtual procedure get the procedure plan
+ if(procedureRecord.isVirtual()) {
+ TransformationRecordImpl transformRecord = (TransformationRecordImpl)getRecordByType(procedureRecord.getUUID(), MetadataConstants.RECORD_TYPE.PROC_TRANSFORM, false);
+ if(transformRecord != null) {
+ procedureRecord.setQueryPlan(transformRecord.getTransformation());
+ }
+ }
+ model.addProcedure(procedureRecord);
+ }
+ }
+ }
+
+ /**
+ * Finds children by parent uuid - note that this is not the best way to query for columns,
+ * but it removes the need to store the parent uuid
+ * @param parentRecord
+ * @param childRecordType
+ * @return
+ */
+ private List findChildRecords(final AbstractMetadataRecord parentRecord, final char childRecordType) {
+ // construct the pattern string
+ String patternStr = getUUIDMatchPattern(childRecordType, parentRecord.getUUID(), true);
+ // Query the model index files
+ IEntryResult[] results = queryIndex(childRecordType, patternStr.toCharArray(), false, true, false);
+
+ return loadRecords(results);
+ }
+
+ private void loadColumnSetRecords(ColumnSet<?> indexRecord, Map<String, Column> columns) {
+ for (int i = 0; i < indexRecord.getColumns().size(); i++) {
+ String uuid = indexRecord.getColumns().get(i).getUUID();
+ Column c = null;
+ if (columns != null) {
+ c = columns.get(uuid);
+ } else {
+ c = findElement(uuid);
+ }
+ indexRecord.getColumns().set(i, c);
+ c.setParent(indexRecord);
+ }
+ }
+
+ private List findMetadataRecords(final char recordType,
+ final String entityName, final boolean isPartialName) {
+ IEntryResult[] results = queryIndex(recordType, entityName, isPartialName);
+ List<AbstractMetadataRecord> records = loadRecords(results);
+ return records;
+ }
+
+ private List<AbstractMetadataRecord> loadRecords(
+ IEntryResult[] results) {
+ List<AbstractMetadataRecord> records = RecordFactory.getMetadataRecord(results);
+
+ for (AbstractMetadataRecord metadataRecord : records) {
+ String uuid = metadataRecord.getUUID();
+
+ String prefixString = getUUIDMatchPattern(MetadataConstants.RECORD_TYPE.ANNOTATION, uuid, false);
+ IEntryResult[] annotations = queryIndex(MetadataConstants.RECORD_TYPE.ANNOTATION, prefixString.toCharArray(), false, true, true);
+ if (annotations.length > 0) {
+ metadataRecord.setAnnotation(RecordFactory.createAnnotationRecord(annotations[0].getWord()));
+ }
+
+ prefixString = String.valueOf(MetadataConstants.RECORD_TYPE.PROPERTY) + IndexConstants.RECORD_STRING.RECORD_DELIMITER + uuid.trim() + IndexConstants.RECORD_STRING.RECORD_DELIMITER;
+ IEntryResult[] properties = queryIndex(MetadataConstants.RECORD_TYPE.PROPERTY, prefixString.toCharArray(), true, true, true);
+ metadataRecord.setProperties(RecordFactory.createPropertyRecord(properties));
+ }
+ return records;
+ }
+
+ /**
+ * Return the pattern match string that could be used to match a UUID in
+ * an index record. All index records contain a header portion of the form:
+ * recordType|pathInModel|UUID|nameInSource|parentObjectID|
+ * @param uuid The UUID for which the pattern match string is to be constructed.
+ * @return The pattern match string of the form: recordType|*|uuid|*
+ */
+ private String getUUIDMatchPattern(final char recordType, String uuid, boolean parent) {
+ ArgCheck.isNotNull(uuid);
+ // construct the pattern string
+ String patternStr = String.valueOf(recordType) + IndexConstants.RECORD_STRING.RECORD_DELIMITER + IndexConstants.RECORD_STRING.MATCH_CHAR + IndexConstants.RECORD_STRING.RECORD_DELIMITER;
+ if (parent) {
+ for (int i = 0; i < 3; i++) {
+ patternStr += String.valueOf(IndexConstants.RECORD_STRING.MATCH_CHAR) + IndexConstants.RECORD_STRING.RECORD_DELIMITER;
+ }
+ }
+ patternStr += uuid.toLowerCase() + IndexConstants.RECORD_STRING.RECORD_DELIMITER + IndexConstants.RECORD_STRING.MATCH_CHAR;
+ return patternStr;
+ }
+
+ /**
+ * @see com.metamatrix.modeler.core.index.IndexSelector#getIndexes()
+ * @since 4.2
+ */
+ public synchronized Index[] getIndexes() {
+ return this.indexes;
+ }
+
+ /**
+ * Return all index file records that match the specified entity name
+ * @param indexName
+ * @param entityName the name to match
+ * @param isPartialName true if the entity name is a partially qualified
+ * @return results
+ * @throws QueryMetadataException
+ */
+ private IEntryResult[] queryIndex(final char recordType, final String entityName, final boolean isPartialName) {
+
+ IEntryResult[] results = null;
+
+ // Query based on UUID
+ if (StringUtil.startsWithIgnoreCase(entityName,UUID.PROTOCOL)) {
+ String patternString = null;
+ if (recordType == MetadataConstants.RECORD_TYPE.DATATYPE) {
+ patternString = getDatatypeUUIDMatchPattern(entityName);
+ } else {
+ patternString = getUUIDMatchPattern(recordType,entityName, false);
+ }
+ results = queryIndex(recordType, patternString.toCharArray(), false, true, true);
+ }
+
+ // Query based on partially qualified name
+ else if (isPartialName) {
+ String patternString = getMatchPattern(recordType,entityName);
+ results = queryIndex(recordType, patternString.toCharArray(), false, true, false);
+ }
+
+ // Query based on fully qualified name
+ else {
+ String prefixString = getPrefixPattern(recordType,entityName);
+ results = queryIndex(recordType, prefixString.toCharArray(), true, true, true);
+ }
+
+ return results;
+ }
+
+ /**
+ * Return the pattern match string that could be used to match a UUID in
+ * a datatype index record. The RECORD_TYPE.DATATYPE records contain a header portion of the form:
+ * recordType|datatypeID|basetypeID|fullName|objectID|nameInSource|...
+ * @param uuid The UUID for which the pattern match string is to be constructed.
+ * @return The pattern match string of the form: recordType|*|*|*|uuid|*
+ */
+ private String getDatatypeUUIDMatchPattern(final String uuid) {
+ ArgCheck.isNotNull(uuid);
+ String uuidString = uuid;
+ if (StringUtil.startsWithIgnoreCase(uuid,UUID.PROTOCOL)) {
+ uuidString = uuid.toLowerCase();
+ }
+ // construct the pattern string
+ String patternStr = "" //$NON-NLS-1$
+ + MetadataConstants.RECORD_TYPE.DATATYPE //recordType
+ + IndexConstants.RECORD_STRING.RECORD_DELIMITER
+ + IndexConstants.RECORD_STRING.MATCH_CHAR //datatypeID
+ + IndexConstants.RECORD_STRING.RECORD_DELIMITER
+ + IndexConstants.RECORD_STRING.MATCH_CHAR //basetypeID
+ + IndexConstants.RECORD_STRING.RECORD_DELIMITER
+ + IndexConstants.RECORD_STRING.MATCH_CHAR //fullName
+ + IndexConstants.RECORD_STRING.RECORD_DELIMITER
+ + uuidString //objectID
+ + IndexConstants.RECORD_STRING.RECORD_DELIMITER
+ + IndexConstants.RECORD_STRING.MATCH_CHAR;
+ return patternStr;
+ }
+
+ /**
+ * Return the prefix match string that could be used to exactly match a fully
+ * qualified entity name in an index record. All index records
+ * contain a header portion of the form:
+ * recordType|pathInModel|UUID|nameInSource|parentObjectID|
+ * @param name The fully qualified name for which the prefix match
+ * string is to be constructed.
+ * @return The pattern match string of the form: recordType|name|
+ */
+ private String getPrefixPattern(final char recordType, final String name) {
+
+ // construct the pattern string
+ String patternStr = "" //$NON-NLS-1$
+ + recordType
+ + IndexConstants.RECORD_STRING.RECORD_DELIMITER;
+ if(name != null) {
+ patternStr = patternStr + name.trim().toUpperCase() + IndexConstants.RECORD_STRING.RECORD_DELIMITER;
+ }
+
+ return patternStr;
+ }
+
+ /**
+ * Return the pattern match string that could be used to match a
+ * partially/fully qualified entity name in an index record. All index records
+ * contain a header portion of the form:
+ * recordType|pathInModel|UUID|nameInSource|parentObjectID|
+ * @param name The partially/fully qualified name for which
+ * the pattern match string is to be constructed.
+ * @return The pattern match string of the form: recordType|*name|*
+ */
+ private String getMatchPattern(final char recordType, final String name) {
+ ArgCheck.isNotNull(name);
+
+ // construct the pattern string
+ String patternStr = "" //$NON-NLS-1$
+ + recordType
+ + IndexConstants.RECORD_STRING.RECORD_DELIMITER
+ + IndexConstants.RECORD_STRING.MATCH_CHAR;
+ if(name != null) {
+ patternStr = patternStr + name.trim().toUpperCase()
+ + IndexConstants.RECORD_STRING.RECORD_DELIMITER
+ + IndexConstants.RECORD_STRING.MATCH_CHAR;
+ }
+ return patternStr;
+ }
+
+ /**
+ * Return all index file records that match the specified record pattern.
+ * @param indexes the array of MtkIndex instances to query
+ * @param pattern
+ * @return results
+ * @throws QueryMetadataException
+ */
+ private IEntryResult[] queryIndex(char recordType, final char[] pattern, boolean isPrefix, boolean isCaseSensitive, boolean returnFirstMatch) {
+ // The the index file name for the record type
+ final String indexName = SimpleIndexUtil.getIndexFileNameForRecordType(recordType);
+ Index[] search = SimpleIndexUtil.getIndexes(indexName, this.getIndexes());
+
+ try {
+ return SimpleIndexUtil.queryIndex(null, search, pattern, isPrefix, isCaseSensitive, returnFirstMatch);
+ } catch (MetaMatrixCoreException e) {
+ throw new MetaMatrixRuntimeException(e);
+ }
+ }
+
+}
Property changes on: branches/JCA/metadata/src/main/java/org/teiid/metadata/index/IndexMetadataFactory.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Deleted: branches/JCA/metadata/src/main/java/org/teiid/metadata/index/IndexMetadataStore.java
===================================================================
--- branches/JCA/metadata/src/main/java/org/teiid/metadata/index/IndexMetadataStore.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/metadata/src/main/java/org/teiid/metadata/index/IndexMetadataStore.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,593 +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.index;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.teiid.connector.metadata.runtime.AbstractMetadataRecord;
-import org.teiid.connector.metadata.runtime.ColumnRecordImpl;
-import org.teiid.connector.metadata.runtime.ColumnSetRecordImpl;
-import org.teiid.connector.metadata.runtime.DatatypeRecordImpl;
-import org.teiid.connector.metadata.runtime.ForeignKeyRecordImpl;
-import org.teiid.connector.metadata.runtime.MetadataConstants;
-import org.teiid.connector.metadata.runtime.ModelRecordImpl;
-import org.teiid.connector.metadata.runtime.ProcedureParameterRecordImpl;
-import org.teiid.connector.metadata.runtime.ProcedureRecordImpl;
-import org.teiid.connector.metadata.runtime.PropertyRecordImpl;
-import org.teiid.connector.metadata.runtime.TableRecordImpl;
-import org.teiid.connector.metadata.runtime.TransformationRecordImpl;
-import org.teiid.core.index.IEntryResult;
-import org.teiid.internal.core.index.Index;
-import org.teiid.metadata.RuntimeMetadataPlugin;
-import org.teiid.metadata.TransformationMetadata;
-
-import com.metamatrix.api.exception.MetaMatrixComponentException;
-import com.metamatrix.api.exception.query.QueryMetadataException;
-import com.metamatrix.core.MetaMatrixCoreException;
-import com.metamatrix.core.MetaMatrixRuntimeException;
-import com.metamatrix.core.id.UUID;
-import com.metamatrix.core.util.ArgCheck;
-import com.metamatrix.core.util.StringUtil;
-import com.metamatrix.metadata.runtime.api.MetadataSource;
-import com.metamatrix.query.metadata.MetadataStore;
-
-/**
- * Loads MetadataRecords from index files.
- * Only datatypes are directly cached.
- */
-public class IndexMetadataStore implements MetadataStore {
-
- private Index[] indexes;
- private Map<String, DatatypeRecordImpl> datatypeCache;
-
- public IndexMetadataStore(MetadataSource source) throws IOException {
- ArrayList<Index> tmp = new ArrayList<Index>();
- for (String fileName : source.getEntries()) {
- if (SimpleIndexUtil.isIndexFile(fileName)) {
- File f = source.getFile(fileName);
- tmp.add( new Index(f.getAbsolutePath(), true) );
- }
- }
- this.indexes = tmp.toArray(new Index[tmp.size()]);
- }
-
- @Override
- public boolean postProcessFindMetadataRecords() {
- return false;
- }
-
- @Override
- public Collection<String> getModelNames() {
- Collection<ModelRecordImpl> records;
- try {
- records = findMetadataRecords(MetadataConstants.RECORD_TYPE.MODEL, null, false);
- } catch (MetaMatrixComponentException e) {
- throw new MetaMatrixRuntimeException(e);
- }
- List<String> result = new ArrayList<String>(records.size());
- for (ModelRecordImpl modelRecord : records) {
- result.add(modelRecord.getName());
- }
- return result;
- }
-
- public ModelRecordImpl getModel(String name) throws QueryMetadataException, MetaMatrixComponentException {
- return (ModelRecordImpl)getRecordByType(name, MetadataConstants.RECORD_TYPE.MODEL);
- }
-
- @Override
- public TableRecordImpl findGroup(String groupName) throws QueryMetadataException, MetaMatrixComponentException {
- TableRecordImpl tableRecord = (TableRecordImpl)getRecordByType(groupName, MetadataConstants.RECORD_TYPE.TABLE);
- List<ColumnRecordImpl> columns = new ArrayList<ColumnRecordImpl>(findChildRecords(tableRecord, MetadataConstants.RECORD_TYPE.COLUMN, true));
- for (ColumnRecordImpl columnRecordImpl : columns) {
- columnRecordImpl.setDatatype(getDatatypeCache().get(columnRecordImpl.getDatatypeUUID()));
- }
- Collections.sort(columns);
- tableRecord.setColumns(columns);
- tableRecord.setAccessPatterns(findChildRecords(tableRecord, MetadataConstants.RECORD_TYPE.ACCESS_PATTERN, true));
- Map<String, ColumnRecordImpl> uuidColumnMap = new HashMap<String, ColumnRecordImpl>();
- for (ColumnRecordImpl columnRecordImpl : columns) {
- uuidColumnMap.put(columnRecordImpl.getUUID(), columnRecordImpl);
- }
- for (ColumnSetRecordImpl columnSetRecordImpl : tableRecord.getAccessPatterns()) {
- loadColumnSetRecords(columnSetRecordImpl, uuidColumnMap);
- }
- tableRecord.setForiegnKeys(findChildRecords(tableRecord, MetadataConstants.RECORD_TYPE.FOREIGN_KEY, true));
- for (ForeignKeyRecordImpl foreignKeyRecord : tableRecord.getForeignKeys()) {
- (foreignKeyRecord).setPrimaryKey((ColumnSetRecordImpl)this.getRecordByType(foreignKeyRecord.getUniqueKeyID(), MetadataConstants.RECORD_TYPE.PRIMARY_KEY));
- loadColumnSetRecords(foreignKeyRecord, uuidColumnMap);
- }
- tableRecord.setUniqueKeys(findChildRecords(tableRecord, MetadataConstants.RECORD_TYPE.UNIQUE_KEY, true));
- for (ColumnSetRecordImpl columnSetRecordImpl : tableRecord.getUniqueKeys()) {
- loadColumnSetRecords(columnSetRecordImpl, uuidColumnMap);
- }
- if (tableRecord.getPrimaryKeyID() != null) {
- ColumnSetRecordImpl primaryKey = (ColumnSetRecordImpl)getRecordByType(tableRecord.getPrimaryKeyID(), MetadataConstants.RECORD_TYPE.PRIMARY_KEY);
- loadColumnSetRecords(primaryKey, uuidColumnMap);
- tableRecord.setPrimaryKey(primaryKey);
- }
- if (tableRecord.isVirtual()) {
- TransformationRecordImpl update = (TransformationRecordImpl)getRecordByType(groupName, MetadataConstants.RECORD_TYPE.UPDATE_TRANSFORM,false);
- if (update != null) {
- tableRecord.setUpdatePlan(update.getTransformation());
- }
- TransformationRecordImpl insert = (TransformationRecordImpl)getRecordByType(groupName, MetadataConstants.RECORD_TYPE.INSERT_TRANSFORM,false);
- if (insert != null) {
- tableRecord.setInsertPlan(insert.getTransformation());
- }
- TransformationRecordImpl delete = (TransformationRecordImpl)getRecordByType(groupName, MetadataConstants.RECORD_TYPE.DELETE_TRANSFORM,false);
- if (delete != null) {
- tableRecord.setDeletePlan(delete.getTransformation());
- }
- TransformationRecordImpl select = (TransformationRecordImpl)getRecordByType(groupName, MetadataConstants.RECORD_TYPE.SELECT_TRANSFORM,false);
- // this group may be an xml document
- if(select == null) {
- select = (TransformationRecordImpl)getRecordByType(groupName, MetadataConstants.RECORD_TYPE.MAPPING_TRANSFORM,false);
- }
- tableRecord.setSelectTransformation(select);
- }
- if (tableRecord.isMaterialized()) {
- tableRecord.setMaterializedStageTableName(getRecordByType(tableRecord.getMaterializedStageTableID(), MetadataConstants.RECORD_TYPE.TABLE).getFullName());
- tableRecord.setMaterializedTableName(getRecordByType(tableRecord.getMaterializedTableID(), MetadataConstants.RECORD_TYPE.TABLE).getFullName());
- }
- return tableRecord;
- }
-
- private Map<String, DatatypeRecordImpl> getDatatypeCache() throws MetaMatrixComponentException {
- if (this.datatypeCache == null) {
- this.datatypeCache = new HashMap<String, DatatypeRecordImpl>();
- Collection<DatatypeRecordImpl> dataTypes = findMetadataRecords(MetadataConstants.RECORD_TYPE.DATATYPE, null, false);
- for (DatatypeRecordImpl datatypeRecordImpl : dataTypes) {
- datatypeCache.put(datatypeRecordImpl.getUUID(), datatypeRecordImpl);
- }
- }
- return datatypeCache;
- }
-
- public Collection<DatatypeRecordImpl> getDatatypes() throws MetaMatrixComponentException {
- return getDatatypeCache().values();
- }
-
- @Override
- public ColumnRecordImpl findElement(String fullName) throws QueryMetadataException, MetaMatrixComponentException {
- ColumnRecordImpl columnRecord = (ColumnRecordImpl)getRecordByType(fullName, MetadataConstants.RECORD_TYPE.COLUMN);
- columnRecord.setDatatype(getDatatypeCache().get(columnRecord.getDatatypeUUID()));
- return columnRecord;
- }
-
- @Override
- public Collection<String> getGroupsForPartialName(String partialGroupName)
- throws MetaMatrixComponentException, QueryMetadataException {
- // Query the index files
- Collection<String> tableRecords = findMetadataRecords(MetadataConstants.RECORD_TYPE.TABLE,partialGroupName,true);
-
- // Extract the fully qualified names to return
- final Collection tableNames = new ArrayList(tableRecords.size());
- for(Iterator recordIter = tableRecords.iterator();recordIter.hasNext();) {
- // get the table record for this result
- TableRecordImpl tableRecord = (TableRecordImpl) recordIter.next();
- tableNames.add(tableRecord.getFullName());
- }
- return tableNames;
- }
-
- private AbstractMetadataRecord getRecordByType(final String entityName, final char recordType) throws MetaMatrixComponentException, QueryMetadataException {
- return getRecordByType(entityName, recordType, true);
- }
-
- private AbstractMetadataRecord getRecordByType(final String entityName, final char recordType, boolean mustExist) throws MetaMatrixComponentException, QueryMetadataException {
- // Query the index files
- final Collection results = findMetadataRecords(recordType,entityName,false);
-
- int resultSize = results.size();
- if(resultSize == 1) {
- // get the columnset record for this result
- return (AbstractMetadataRecord) results.iterator().next();
- }
- if(resultSize == 0) {
- if (mustExist) {
- // there should be only one for the UUID
- throw new QueryMetadataException(entityName+TransformationMetadata.NOT_EXISTS_MESSAGE);
- }
- return null;
- }
- throw new QueryMetadataException(RuntimeMetadataPlugin.Util.getString("TransformationMetadata.0", entityName)); //$NON-NLS-1$
- }
-
- @Override
- public ProcedureRecordImpl getStoredProcedure(
- String fullyQualifiedProcedureName)
- throws MetaMatrixComponentException, QueryMetadataException {
- ProcedureRecordImpl procedureRecord = (ProcedureRecordImpl)getRecordByType(fullyQualifiedProcedureName, MetadataConstants.RECORD_TYPE.CALLABLE);
-
- procedureRecord.setParameters(new ArrayList<ProcedureParameterRecordImpl>(procedureRecord.getParameterIDs().size()));
-
- // get the parameter metadata info
- for (String paramID : procedureRecord.getParameterIDs()) {
- ProcedureParameterRecordImpl paramRecord = (ProcedureParameterRecordImpl) this.getRecordByType(paramID, MetadataConstants.RECORD_TYPE.CALLABLE_PARAMETER);
- paramRecord.setDatatype(getDatatypeCache().get(paramRecord.getDatatypeUUID()));
- procedureRecord.getParameters().add(paramRecord);
- }
-
- String resultID = procedureRecord.getResultSetID();
- if(resultID != null) {
- try {
- ColumnSetRecordImpl resultRecord = (ColumnSetRecordImpl) this.getRecordByType(resultID, MetadataConstants.RECORD_TYPE.RESULT_SET);
- loadColumnSetRecords(resultRecord, null);
- procedureRecord.setResultSet(resultRecord);
- } catch (QueryMetadataException e) {
- //it is ok to fail here. it will happen when a
- //virtual stored procedure is created from a
- //physical stored procedrue without a result set
- //TODO: find a better fix for this
- }
- }
-
- // if this is a virtual procedure get the procedure plan
- if(procedureRecord.isVirtual()) {
- TransformationRecordImpl transformRecord = (TransformationRecordImpl)getRecordByType(fullyQualifiedProcedureName, MetadataConstants.RECORD_TYPE.PROC_TRANSFORM, false);
- if(transformRecord != null) {
- procedureRecord.setQueryPlan(transformRecord.getTransformation());
- }
- }
-
- return procedureRecord;
- }
-
- @Override
- public Collection getXMLTempGroups(TableRecordImpl table) throws MetaMatrixComponentException {
- // Query the index files
- final Collection results = findChildRecords(table, MetadataConstants.RECORD_TYPE.TABLE, false);
- Collection tempGroups = new HashSet(results.size());
- for(Iterator resultIter = results.iterator();resultIter.hasNext();) {
- TableRecordImpl record = (TableRecordImpl) resultIter.next();
- if(record.getTableType() == MetadataConstants.TABLE_TYPES.XML_STAGING_TABLE_TYPE) {
- tempGroups.add(record);
- }
- }
- return tempGroups;
- }
-
- private Collection findChildRecords(final AbstractMetadataRecord parentRecord, final char childRecordType, boolean filter) throws MetaMatrixComponentException {
- IEntryResult[] results = queryIndexByParentPath(childRecordType, parentRecord.getFullName());
- Collection records = RecordFactory.getMetadataRecord(results);
-
- if (filter) {
- final String groupUUID = parentRecord.getUUID();
-
- for( Iterator resultsIter = records.iterator(); resultsIter.hasNext(); ) {
- AbstractMetadataRecord record = (AbstractMetadataRecord) resultsIter.next();
- String parentUUID = record.getParentUUID();
-
- if(parentUUID == null || !parentUUID.equalsIgnoreCase(groupUUID)) {
- resultsIter.remove();
- }
- }
- }
-
- return records;
- }
-
- private void loadColumnSetRecords(ColumnSetRecordImpl indexRecord, Map<String, ColumnRecordImpl> columns)
- throws MetaMatrixComponentException, QueryMetadataException {
- List uuids = indexRecord.getColumnIDs();
- List<ColumnRecordImpl> columnRecords = new ArrayList<ColumnRecordImpl>(uuids.size());
-
- for (Iterator uuidIter = uuids.iterator(); uuidIter.hasNext();) {
- String uuid = (String) uuidIter.next();
- if (columns != null) {
- columnRecords.add(columns.get(uuid));
- } else {
- columnRecords.add(findElement(uuid));
- }
- }
- indexRecord.setColumns(columnRecords);
- }
-
- @Override
- public Collection findMetadataRecords(final char recordType,
- final String entityName, final boolean isPartialName)
- throws MetaMatrixComponentException {
- IEntryResult[] results = queryIndex(recordType, entityName, isPartialName);
- Collection records = RecordFactory.getMetadataRecord(results);;
-
- if(StringUtil.startsWithIgnoreCase(entityName,UUID.PROTOCOL)) {
- // Filter out ColumnRecord instances that do not match the specified uuid.
- // Due to the pattern matching used to query index files if an index record
- // matched the specified uuid string anywhere in that record it would be returned
- // in the results (for example, if the parent ObjectID in the index record
- // matched the specified uuid).
- if (entityName != null && records != null) {
- for (final Iterator iter = records.iterator(); iter.hasNext();) {
- final AbstractMetadataRecord record = (AbstractMetadataRecord)iter.next();
- if (record == null || !entityName.equals(record.getUUID())) {
- iter.remove();
- }
- }
- }
- }
-
- return records;
- }
-
- @Override
- public Collection<AbstractMetadataRecord> findMetadataRecords(String indexName,
- String pattern, boolean isPrefix,
- boolean isCaseSensitive) throws MetaMatrixCoreException {
- IEntryResult[] results = SimpleIndexUtil.queryIndex(null, SimpleIndexUtil.getIndexes(indexName, this), pattern==null?null:pattern.toCharArray(), isPrefix, isCaseSensitive, false);
- return RecordFactory.getMetadataRecord(results);
- }
-
- @Override
- public Collection<PropertyRecordImpl> getExtensionProperties(AbstractMetadataRecord metadataRecord) throws MetaMatrixComponentException {
- // find the entities properties records
- String uuid = metadataRecord.getUUID();
- String prefixString = getUUIDPrefixPattern(MetadataConstants.RECORD_TYPE.PROPERTY, uuid);
-
- IEntryResult[] results = queryIndex(MetadataConstants.RECORD_TYPE.PROPERTY, prefixString.toCharArray(), true, true, true);
-
- return RecordFactory.getMetadataRecord(results);
- }
-
- /**
- * Return the pattern match string that could be used to match a UUID in
- * an index record. All index records contain a header portion of the form:
- * recordType|pathInModel|UUID|nameInSource|parentObjectID|
- * @param uuid The UUID for which the pattern match string is to be constructed.
- * @return The pattern match string of the form: recordType|*|uuid|*
- */
- private String getUUIDMatchPattern(final char recordType, final String uuid) {
- ArgCheck.isNotNull(uuid);
- String uuidString = uuid;
- if (StringUtil.startsWithIgnoreCase(uuid,UUID.PROTOCOL)) {
- uuidString = uuid.toLowerCase();
- }
- // construct the pattern string
- String patternStr = "" //$NON-NLS-1$
- + recordType
- + IndexConstants.RECORD_STRING.RECORD_DELIMITER
- + IndexConstants.RECORD_STRING.MATCH_CHAR
- + IndexConstants.RECORD_STRING.RECORD_DELIMITER
- + uuidString
- + IndexConstants.RECORD_STRING.RECORD_DELIMITER
- + IndexConstants.RECORD_STRING.MATCH_CHAR;
- return patternStr;
- }
-
- private String getUUIDPrefixPattern(final char recordType, final String uuid) {
-
- // construct the pattern string
- String patternStr = "" //$NON-NLS-1$
- + recordType
- + IndexConstants.RECORD_STRING.RECORD_DELIMITER;
- if(uuid != null) {
- patternStr = patternStr + uuid.trim() + IndexConstants.RECORD_STRING.RECORD_DELIMITER;
- }
-
- return patternStr;
- }
-
- /**
- * @see com.metamatrix.modeler.core.index.IndexSelector#getIndexes()
- * @since 4.2
- */
- public synchronized Index[] getIndexes() {
- return this.indexes;
- }
-
- /**
- * Return the array of MtkIndex instances representing temporary indexes
- * @param selector
- * @return
- * @throws QueryMetadataException
- */
- private Index[] getIndexes(final char recordType) throws MetaMatrixComponentException {
- // The the index file name for the record type
- try {
- final String indexName = SimpleIndexUtil.getIndexFileNameForRecordType(recordType);
- return SimpleIndexUtil.getIndexes(indexName, this);
- } catch(Exception e) {
- throw new MetaMatrixComponentException(e, RuntimeMetadataPlugin.Util.getString("TransformationMetadata.Error_trying_to_obtain_index_file_using_IndexSelector_1",this)); //$NON-NLS-1$
- }
- }
-
- /**
- * Return all index file records that match the specified entity name
- * @param indexName
- * @param entityName the name to match
- * @param isPartialName true if the entity name is a partially qualified
- * @return results
- * @throws QueryMetadataException
- */
- private IEntryResult[] queryIndexByParentPath(final char recordType, final String parentFullName) throws MetaMatrixComponentException {
-
- // Query based on fully qualified name
- String prefixString = getParentPrefixPattern(recordType,parentFullName);
-
- // Query the model index files
- IEntryResult[] results = queryIndex(recordType, prefixString.toCharArray(), true, true, false);
-
- return results;
- }
-
- /**
- * Return all index file records that match the specified entity name
- * @param indexName
- * @param entityName the name to match
- * @param isPartialName true if the entity name is a partially qualified
- * @return results
- * @throws QueryMetadataException
- */
- private IEntryResult[] queryIndex(final char recordType, final String entityName, final boolean isPartialName) throws MetaMatrixComponentException {
-
- IEntryResult[] results = null;
-
- // Query based on UUID
- if (StringUtil.startsWithIgnoreCase(entityName,UUID.PROTOCOL)) {
- String patternString = null;
- if (recordType == MetadataConstants.RECORD_TYPE.DATATYPE) {
- patternString = getDatatypeUUIDMatchPattern(entityName);
- } else {
- patternString = getUUIDMatchPattern(recordType,entityName);
- }
- results = queryIndex(recordType, patternString.toCharArray(), false, true, true);
- }
-
- // Query based on partially qualified name
- else if (isPartialName) {
- String patternString = getMatchPattern(recordType,entityName);
- results = queryIndex(recordType, patternString.toCharArray(), false, true, false);
- }
-
- // Query based on fully qualified name
- else {
- String prefixString = getPrefixPattern(recordType,entityName);
- results = queryIndex(recordType, prefixString.toCharArray(), true, true, true);
- }
-
- return results;
- }
-
- /**
- * Return the pattern match string that could be used to match a UUID in
- * a datatype index record. The RECORD_TYPE.DATATYPE records contain a header portion of the form:
- * recordType|datatypeID|basetypeID|fullName|objectID|nameInSource|...
- * @param uuid The UUID for which the pattern match string is to be constructed.
- * @return The pattern match string of the form: recordType|*|*|*|uuid|*
- */
- private String getDatatypeUUIDMatchPattern(final String uuid) {
- ArgCheck.isNotNull(uuid);
- String uuidString = uuid;
- if (StringUtil.startsWithIgnoreCase(uuid,UUID.PROTOCOL)) {
- uuidString = uuid.toLowerCase();
- }
- // construct the pattern string
- String patternStr = "" //$NON-NLS-1$
- + MetadataConstants.RECORD_TYPE.DATATYPE //recordType
- + IndexConstants.RECORD_STRING.RECORD_DELIMITER
- + IndexConstants.RECORD_STRING.MATCH_CHAR //datatypeID
- + IndexConstants.RECORD_STRING.RECORD_DELIMITER
- + IndexConstants.RECORD_STRING.MATCH_CHAR //basetypeID
- + IndexConstants.RECORD_STRING.RECORD_DELIMITER
- + IndexConstants.RECORD_STRING.MATCH_CHAR //fullName
- + IndexConstants.RECORD_STRING.RECORD_DELIMITER
- + uuidString //objectID
- + IndexConstants.RECORD_STRING.RECORD_DELIMITER
- + IndexConstants.RECORD_STRING.MATCH_CHAR;
- return patternStr;
- }
-
- /**
- * Return the prefix match string that could be used to exactly match a fully
- * qualified entity name in an index record. All index records
- * contain a header portion of the form:
- * recordType|pathInModel|UUID|nameInSource|parentObjectID|
- * @param name The fully qualified name for which the prefix match
- * string is to be constructed.
- * @return The pattern match string of the form: recordType|name|
- */
- private String getParentPrefixPattern(final char recordType, final String name) {
-
- // construct the pattern string
- String patternStr = "" //$NON-NLS-1$
- + recordType
- + IndexConstants.RECORD_STRING.RECORD_DELIMITER;
- if(name != null) {
- patternStr = patternStr + name.trim().toUpperCase()+ TransformationMetadata.DELIMITER_CHAR;
- }
-
- return patternStr;
- }
-
- /**
- * Return the prefix match string that could be used to exactly match a fully
- * qualified entity name in an index record. All index records
- * contain a header portion of the form:
- * recordType|pathInModel|UUID|nameInSource|parentObjectID|
- * @param name The fully qualified name for which the prefix match
- * string is to be constructed.
- * @return The pattern match string of the form: recordType|name|
- */
- private String getPrefixPattern(final char recordType, final String name) {
-
- // construct the pattern string
- String patternStr = "" //$NON-NLS-1$
- + recordType
- + IndexConstants.RECORD_STRING.RECORD_DELIMITER;
- if(name != null) {
- patternStr = patternStr + name.trim().toUpperCase() + IndexConstants.RECORD_STRING.RECORD_DELIMITER;
- }
-
- return patternStr;
- }
-
- /**
- * Return the pattern match string that could be used to match a
- * partially/fully qualified entity name in an index record. All index records
- * contain a header portion of the form:
- * recordType|pathInModel|UUID|nameInSource|parentObjectID|
- * @param name The partially/fully qualified name for which
- * the pattern match string is to be constructed.
- * @return The pattern match string of the form: recordType|*name|*
- */
- private String getMatchPattern(final char recordType, final String name) {
- ArgCheck.isNotNull(name);
-
- // construct the pattern string
- String patternStr = "" //$NON-NLS-1$
- + recordType
- + IndexConstants.RECORD_STRING.RECORD_DELIMITER
- + IndexConstants.RECORD_STRING.MATCH_CHAR;
- if(name != null) {
- patternStr = patternStr + name.trim().toUpperCase()
- + IndexConstants.RECORD_STRING.RECORD_DELIMITER
- + IndexConstants.RECORD_STRING.MATCH_CHAR;
- }
- return patternStr;
- }
-
- /**
- * Return all index file records that match the specified record pattern.
- * @param indexes the array of MtkIndex instances to query
- * @param pattern
- * @return results
- * @throws QueryMetadataException
- */
- private IEntryResult[] queryIndex(char recordType, final char[] pattern, boolean isPrefix, boolean isCaseSensitive, boolean returnFirstMatch) throws MetaMatrixComponentException {
- try {
- return SimpleIndexUtil.queryIndex(null, getIndexes(recordType), pattern, isPrefix, isCaseSensitive, returnFirstMatch);
- } catch (MetaMatrixCoreException e) {
- throw new MetaMatrixComponentException(e, e.getMessage());
- }
- }
-
-}
Added: branches/JCA/metadata/src/main/java/org/teiid/metadata/index/MetadataConstants.java
===================================================================
--- branches/JCA/metadata/src/main/java/org/teiid/metadata/index/MetadataConstants.java (rev 0)
+++ branches/JCA/metadata/src/main/java/org/teiid/metadata/index/MetadataConstants.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,293 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * See the COPYRIGHT.txt file distributed with this work for information
+ * regarding copyright ownership. Some portions may be licensed
+ * to Red Hat, Inc. under one or more contributor license agreements.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA.
+ */
+
+package org.teiid.metadata.index;
+
+import com.metamatrix.core.util.StringUtil;
+
+/**
+ * MetadataConstants are all the constant values used to identify all the valid values for a multi-value attribute.
+ * All assigned short values start with 1. Therefore, when the get...TypeName(type) method is called, the
+ * method needs to subtract 1 from the argument.
+ */
+public final class MetadataConstants {
+
+ /** Definition of not defined long type. */
+ public static final long NOT_DEFINED_LONG = Long.MIN_VALUE;
+ /** Definition of not defined int type. */
+ public static final int NOT_DEFINED_INT = Integer.MIN_VALUE;
+ /** Definition of not defined short type. */
+ public static final short NOT_DEFINED_SHORT = Short.MIN_VALUE;
+
+ public final static String BLANK = StringUtil.Constants.EMPTY_STRING;
+
+ //properties
+ public static final String VERSION_DATE = "versionDate"; //$NON-NLS-1$
+
+ /**
+ * These types are associated with a KEY, indicating the type of matching that can be performed on it.
+ */
+ public final static class MATCH_TYPES {
+ public final static short FULL_MATCH = 0;
+ public final static short PARTIAL_MATCH = 1;
+ public final static short NEITHER_MATCH = 2;
+ public final static short NA = 3;
+ public final static String[] TYPE_NAMES = { "Full", //$NON-NLS-1$
+ "Partial", //$NON-NLS-1$
+ "Neither", //$NON-NLS-1$
+ "N/A" }; //$NON-NLS-1$
+ }
+
+ public final static String getMatchTypeName(short type) {
+ return MATCH_TYPES.TYPE_NAMES[type];
+ }
+
+
+ /**
+ * These types indicate the type of KEY it is.
+ * The values must be kept consistent with the values referenced in
+ * KeyTypeEnumeration.properties in connector.metadata
+ */
+ public final static class KEY_TYPES {
+ public final static short PRIMARY_KEY = 0;
+ public final static short FOREIGN_KEY = 1;
+ public final static short UNIQUE_KEY = 2;
+ public final static short NON_UNIQUE_KEY = 3;
+ public final static short ACCESS_PATTERN = 4;
+ public final static short INDEX = 5;
+ public final static String[] TYPE_NAMES = { "Primary", //$NON-NLS-1$
+ "Foreign", //$NON-NLS-1$
+ "Unique", //$NON-NLS-1$
+ "NonUnique", //$NON-NLS-1$
+ "AccessPattern", //$NON-NLS-1$
+ "Index" }; //$NON-NLS-1$
+ }
+ public final static String getKeyTypeName(short type) {
+ return KEY_TYPES.TYPE_NAMES[type];
+ }
+
+ /**
+ * These types indicate the type of COLUMN_SET it is.
+ * The values must be kept consistent with the values referenced in
+ * KeyTypeEnumeration.properties in connector.metadata
+ */
+ public final static class COLUMN_SET_TYPES {
+ public final static short FOREIGN_KEY = 0;
+ public final static short UNIQUE_KEY = 1;
+ public final static short ACCESS_PATTERN = 2;
+ public final static short INDEX = 3;
+ public final static short PROCEDURE_RESULT = 4;
+ public final static short TABLE = 5;
+ public final static String[] TYPE_NAMES = { "Foreign", //$NON-NLS-1$
+ "Unique", //$NON-NLS-1$
+ "AccessPattern", //$NON-NLS-1$
+ "Index", //$NON-NLS-1$
+ "Procedure_Result", //$NON-NLS-1$
+ "Table"}; //$NON-NLS-1$
+ }
+ public final static String getColumnSetTypeName(short type) {
+ return KEY_TYPES.TYPE_NAMES[type];
+ }
+
+ /**
+ * These types indicate the type of PROCEDURE it is.
+ * The values must be kept consistent with the values referenced in
+ * ProcTypeEnumeration.properties in connector.metadata
+ */
+ public final static class PROCEDURE_TYPES {
+ public final static short FUNCTION = 0;
+ public final static short STORED_PROCEDURE = 1;
+ public final static short STORED_QUERY = 2;
+ public final static String[] TYPE_NAMES = { "Function", //$NON-NLS-1$
+ "StoredProc", //$NON-NLS-1$
+ "StoredQuery" }; //$NON-NLS-1$
+ }
+ public final static String getProcedureTypeName(short type) {
+ return PROCEDURE_TYPES.TYPE_NAMES[type];
+ }
+
+ /**
+ * These types indicate the type of TRANSFORMATION it it.
+ */
+ public final static class SQL_TRANSFORMATION_TYPES {
+ public final static short MAPPING_DEFN = 0;
+ public final static short QUERY_PLAN_SELECT_QUERY = 1;
+ public final static short QUERY_PLAN_INSERT_QUERY = 2;
+ public final static short QUERY_PLAN_UPDATE_QUERY = 3;
+ public final static short QUERY_PLAN_DELETE_QUERY = 4;
+ public final static short QUERY_PLAN_STORED_QUERY = 5;
+ public final static String[] TYPE_NAMES = { "MappingDefn", //$NON-NLS-1$
+ "QueryPlanSelectQuery", //$NON-NLS-1$
+ "QueryPlanInsertQuery", //$NON-NLS-1$
+ "QueryPlanUpdateQuery", //$NON-NLS-1$
+ "QueryPlanDeleteQuery", //$NON-NLS-1$
+ "QueryPlanStoredQuery"}; //$NON-NLS-1$
+ }
+ public final static String getSqlTransformationTypeName(short type) {
+ return SQL_TRANSFORMATION_TYPES.TYPE_NAMES[type];
+ }
+
+ /**
+ * These types indicate the type of PROCEDURE_PARAMETER it is.
+ * The values must be kept consistent with the DirectionKind enumeration in the relational
+ * metamodel and the values referenced in ProcParamDirectionEnumeration.properties in connector.metadata
+ */
+ public final static class PARAMETER_TYPES {
+ public final static short IN_PARM = 0;
+ public final static short OUT_PARM = 1;
+ public final static short INOUT_PARM = 2;
+ public final static short RETURN_VALUE = 3;
+ public final static short RESULT_SET = 4;
+ public final static String[] TYPE_NAMES = { "In", //$NON-NLS-1$
+ "Out", //$NON-NLS-1$
+ "InOut", //$NON-NLS-1$
+ "ReturnValue", //$NON-NLS-1$
+ "ResultSet" }; //$NON-NLS-1$
+ }
+ public final static String getParameterTypeName(short type) {
+ return PARAMETER_TYPES.TYPE_NAMES[type];
+ }
+
+ /**
+ * These types are associated with the Element having valid search types.
+ * The values must be kept consistent with the SearchabilityType enumeration in the relational
+ * metamodel and the values referenced in SearchTypeEnumeration.properties in connector.metadata
+ */
+ public final static class SEARCH_TYPES {
+ public final static short SEARCHABLE = 0;
+ public final static short ALLEXCEPTLIKE = 1;
+ public final static short LIKE_ONLY = 2;
+ public final static short UNSEARCHABLE = 3;
+ public final static String[] TYPE_NAMES = { "Searchable", //$NON-NLS-1$
+ "All Except Like", //$NON-NLS-1$
+ "Like Only", //$NON-NLS-1$
+ "Unsearchable" }; //$NON-NLS-1$
+ }
+ public final static String getSearchTypeName(short type) {
+ return SEARCH_TYPES.TYPE_NAMES[type];
+ }
+
+ /**
+ * A DataType object will be identified as being of one of these types.
+ * The values must be kept consistent with the values referenced in
+ * DatatypeTypeEnumeration.properties in connector.metadata
+ */
+ public final static class DATATYPE_TYPES {
+ public final static short BASIC = 0;
+ public final static short USER_DEFINED = 1;
+ public final static short RESULT_SET = 2;
+ public final static String[] TYPE_NAMES = { "Basic", //$NON-NLS-1$
+ "UserDefined", //$NON-NLS-1$
+ "ResultSet" }; //$NON-NLS-1$
+ }
+ public final static String getDataTypeTypeName(short type) {
+ return DATATYPE_TYPES.TYPE_NAMES[type];
+ }
+
+ /**
+ * User defined DataType objects will be categorized by a variety
+ * The values must be kept consistent with the XSDVariety enumeration in the xsd
+ * metamodel and the values referenced in DatatypeVarietyEnumeration.properties in
+ * connector.metadata
+ */
+ public final static class DATATYPE_VARIETIES {
+ public final static short ATOMIC = 0;
+ public final static short LIST = 1;
+ public final static short UNION = 2;
+ public final static short COMPLEX = 3;
+ public final static String[] TYPE_NAMES = { "Atomic", //$NON-NLS-1$
+ "List", //$NON-NLS-1$
+ "Union", //$NON-NLS-1$
+ "Complex" }; //$NON-NLS-1$
+ }
+ public final static String getDataTypeVarietyName(short type) {
+ return DATATYPE_VARIETIES.TYPE_NAMES[type];
+ }
+
+ /**
+ * These types represent the type of table a Group is.
+ */
+ public final static class TABLE_TYPES {
+ public static final short TABLE_TYPE = 0;
+ public static final short VIEW_TYPE = 1;
+ public static final short DOCUMENT_TYPE = 2;
+ public static final short XML_MAPPING_CLASS_TYPE = 3;
+ public static final short XML_STAGING_TABLE_TYPE = 4;
+ public static final short MATERIALIZED_TYPE = 5;
+ public final static String[] TYPE_NAMES = { "Table", //$NON-NLS-1$
+ "View", //$NON-NLS-1$
+ "Document", //$NON-NLS-1$
+ "XmlMappingClass", //$NON-NLS-1$
+ "XmlStagingTable", //$NON-NLS-1$
+ "MaterializedTable" }; //$NON-NLS-1$
+ }
+ public final static String getTableTypeName(short type) {
+ return TABLE_TYPES.TYPE_NAMES[type];
+ }
+
+ /**
+ * These types are associated with a DataType or an Element needing the indication of null types.
+ * The values must be kept consistent with the NullableType enumeration in the relational
+ * metamodel and the values referenced in NullTypeEnumeration.properties in connector.metadata
+ */
+ public final static class NULL_TYPES {
+ public static final short NOT_NULL = 0;
+ public static final short NULLABLE = 1;
+ public static final short UNKNOWN = 2;
+ public final static String[] TYPE_NAMES = { "No Nulls", //$NON-NLS-1$
+ "Nullable", //$NON-NLS-1$
+ "Unknown" }; //$NON-NLS-1$
+ }
+ //Record type Constants
+ public static class RECORD_TYPE {
+ public final static char MODEL = 'A';
+ public final static char TABLE = 'B';
+ public final static char RESULT_SET = 'C';
+ public final static char JOIN_DESCRIPTOR = 'D';
+ public final static char CALLABLE = 'E';
+ public final static char CALLABLE_PARAMETER = 'F';
+ public final static char COLUMN = 'G';
+ public final static char ACCESS_PATTERN = 'H';
+ public final static char UNIQUE_KEY = 'I';
+ public final static char FOREIGN_KEY = 'J';
+ public final static char PRIMARY_KEY = 'K';
+ public final static char INDEX = 'L';
+ public final static char DATATYPE = 'M';
+ //public final static char DATATYPE_ELEMENT = 'N';
+ //public final static char DATATYPE_FACET = 'O';
+ public final static char SELECT_TRANSFORM = 'P';
+ public final static char INSERT_TRANSFORM = 'Q';
+ public final static char UPDATE_TRANSFORM = 'R';
+ public final static char DELETE_TRANSFORM = 'S';
+ public final static char PROC_TRANSFORM = 'T';
+ public final static char MAPPING_TRANSFORM = 'U';
+ public final static char VDB_ARCHIVE = 'V';
+ public final static char ANNOTATION = 'W';
+ public final static char PROPERTY = 'X';
+ public final static char FILE = 'Z';
+ public final static char RECORD_CONTINUATION = '&';
+ }
+
+ public final static String getNullTypeName(short type) {
+ return NULL_TYPES.TYPE_NAMES[type];
+ }
+}
\ No newline at end of file
Property changes on: branches/JCA/metadata/src/main/java/org/teiid/metadata/index/MetadataConstants.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: branches/JCA/metadata/src/main/java/org/teiid/metadata/index/ModelFileUtil.java
===================================================================
--- branches/JCA/metadata/src/main/java/org/teiid/metadata/index/ModelFileUtil.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/metadata/src/main/java/org/teiid/metadata/index/ModelFileUtil.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -30,7 +30,6 @@
import java.util.zip.ZipException;
import java.util.zip.ZipFile;
-import org.teiid.metadata.RuntimeMetadataPlugin;
import com.metamatrix.common.log.LogManager;
@@ -42,11 +41,6 @@
public class ModelFileUtil {
- public interface XmiHeaderCache {
- XMIHeader getCachedXmiHeader(File resource);
- void setXmiHeaderToCache(File resource, XMIHeader header);
- }
-
public static final String MANIFEST_MODEL_NAME = "MetaMatrix-VdbManifestModel.xmi"; //$NON-NLS-1$
public static final String DOT_PROJECT = ".project"; //$NON-NLS-1$
public static final String FILE_COLON = "file:"; //$NON-NLS-1$
@@ -57,12 +51,6 @@
public static final String EXTENSION_ECORE = "ecore"; //$NON-NLS-1$
public static final String EXTENSION_WSDL = "wsdl"; //$NON-NLS-1$
- private static XmiHeaderCache CACHE;
-
- public static void setCache(XmiHeaderCache cache) {
- ModelFileUtil.CACHE = cache;
- }
-
/**
* Return true if the File represents a MetaMatrix model file or an xsd file
* this method does not check if the file exists in a project with
@@ -196,23 +184,11 @@
*/
public static XMIHeader getXmiHeader( final File resource ) {
if (resource != null && resource.isFile() && resource.exists() && resource.canRead() ) {
- //check cache
- if(CACHE != null) {
- XMIHeader header = CACHE.getCachedXmiHeader(resource);
- if(header != null) {
- return header;
- }
- }
-
if(isVdbArchiveFile(resource)) {
return getXmiHeaderForVdbArchive(resource);
}
try {
XMIHeader header = XMIHeaderReader.readHeader(resource);
- //add to cache
- if(CACHE != null) {
- CACHE.setXmiHeaderToCache(resource, header);
- }
return header;
} catch (MetaMatrixCoreException e) {
LogManager.logWarning(RuntimeMetadataPlugin.PLUGIN_ID, e, e.getMessage());
Modified: branches/JCA/metadata/src/main/java/org/teiid/metadata/index/RecordFactory.java
===================================================================
--- branches/JCA/metadata/src/main/java/org/teiid/metadata/index/RecordFactory.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/metadata/src/main/java/org/teiid/metadata/index/RecordFactory.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -23,25 +23,24 @@
package org.teiid.metadata.index;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
+import java.util.LinkedHashMap;
import java.util.List;
-import org.teiid.connector.metadata.FileRecordImpl;
import org.teiid.connector.metadata.runtime.AbstractMetadataRecord;
-import org.teiid.connector.metadata.runtime.AnnotationRecordImpl;
-import org.teiid.connector.metadata.runtime.ColumnRecordImpl;
-import org.teiid.connector.metadata.runtime.ColumnSetRecordImpl;
-import org.teiid.connector.metadata.runtime.DatatypeRecordImpl;
-import org.teiid.connector.metadata.runtime.ForeignKeyRecordImpl;
-import org.teiid.connector.metadata.runtime.MetadataConstants;
-import org.teiid.connector.metadata.runtime.ModelRecordImpl;
-import org.teiid.connector.metadata.runtime.ProcedureParameterRecordImpl;
+import org.teiid.connector.metadata.runtime.Column;
+import org.teiid.connector.metadata.runtime.ColumnSet;
+import org.teiid.connector.metadata.runtime.Datatype;
+import org.teiid.connector.metadata.runtime.ForeignKey;
+import org.teiid.connector.metadata.runtime.KeyRecord;
+import org.teiid.connector.metadata.runtime.Schema;
+import org.teiid.connector.metadata.runtime.ProcedureParameter;
import org.teiid.connector.metadata.runtime.ProcedureRecordImpl;
-import org.teiid.connector.metadata.runtime.PropertyRecordImpl;
-import org.teiid.connector.metadata.runtime.TableRecordImpl;
-import org.teiid.connector.metadata.runtime.TransformationRecordImpl;
+import org.teiid.connector.metadata.runtime.Table;
+import org.teiid.connector.metadata.runtime.BaseColumn.NullType;
+import org.teiid.connector.metadata.runtime.Column.SearchType;
+import org.teiid.connector.metadata.runtime.Datatype.Variety;
import org.teiid.core.index.IEntryResult;
import org.teiid.internal.core.index.EntryResult;
import org.teiid.internal.core.index.IIndexConstants;
@@ -149,8 +148,8 @@
* @param queryResult
* @param container Container reference to be set on the record
*/
- public static Collection getMetadataRecord(final IEntryResult[] queryResult) {
- final Collection records = new ArrayList(queryResult.length);
+ public static List<AbstractMetadataRecord> getMetadataRecord(final IEntryResult[] queryResult) {
+ final List records = new ArrayList(queryResult.length);
for (int i = 0; i < queryResult.length; i++) {
final AbstractMetadataRecord record = getMetadataRecord(queryResult[i].getWord());
if (record != null) {
@@ -176,11 +175,11 @@
case MetadataConstants.RECORD_TYPE.CALLABLE: return createProcedureRecord(record);
case MetadataConstants.RECORD_TYPE.CALLABLE_PARAMETER: return createProcedureParameterRecord(record);
case MetadataConstants.RECORD_TYPE.COLUMN: return createColumnRecord(record);
- case MetadataConstants.RECORD_TYPE.ACCESS_PATTERN:
- case MetadataConstants.RECORD_TYPE.INDEX:
- case MetadataConstants.RECORD_TYPE.RESULT_SET:
- case MetadataConstants.RECORD_TYPE.UNIQUE_KEY:
- case MetadataConstants.RECORD_TYPE.PRIMARY_KEY: return createColumnSetRecord(record);
+ case MetadataConstants.RECORD_TYPE.ACCESS_PATTERN: return createColumnSetRecord(record, new KeyRecord(KeyRecord.Type.AccessPattern));
+ case MetadataConstants.RECORD_TYPE.INDEX: return createColumnSetRecord(record, new KeyRecord(KeyRecord.Type.Index));
+ case MetadataConstants.RECORD_TYPE.RESULT_SET: return createColumnSetRecord(record, new ColumnSet());
+ case MetadataConstants.RECORD_TYPE.UNIQUE_KEY: return createColumnSetRecord(record, new KeyRecord(KeyRecord.Type.Unique));
+ case MetadataConstants.RECORD_TYPE.PRIMARY_KEY: return createColumnSetRecord(record, new KeyRecord(KeyRecord.Type.Primary));
case MetadataConstants.RECORD_TYPE.FOREIGN_KEY: return createForeignKeyRecord(record);
case MetadataConstants.RECORD_TYPE.DATATYPE: return createDatatypeRecord(record);
case MetadataConstants.RECORD_TYPE.SELECT_TRANSFORM:
@@ -189,9 +188,6 @@
case MetadataConstants.RECORD_TYPE.DELETE_TRANSFORM:
case MetadataConstants.RECORD_TYPE.MAPPING_TRANSFORM:
case MetadataConstants.RECORD_TYPE.PROC_TRANSFORM: return createTransformationRecord(record);
- case MetadataConstants.RECORD_TYPE.ANNOTATION: return createAnnotationRecord(record);
- case MetadataConstants.RECORD_TYPE.PROPERTY: return createPropertyRecord(record);
- case MetadataConstants.RECORD_TYPE.FILE: return createFileRecord(record);
default:
throw new IllegalArgumentException("Invalid record type for creating MetadataRecord "+record[0]); //$NON-NLS-1$
}
@@ -313,10 +309,10 @@
/**
* Create a ModelRecord instance from the specified index record
*/
- public static ModelRecordImpl createModelRecord(final char[] record) {
+ public static Schema createModelRecord(final char[] record) {
final String str = new String(record);
final List tokens = StringUtil.split(str,String.valueOf(IndexConstants.RECORD_STRING.RECORD_DELIMITER));
- final ModelRecordImpl model = new ModelRecordImpl();
+ final Schema model = new Schema();
// The tokens are the standard header values
int tokenIndex = 0;
@@ -325,10 +321,10 @@
(String)tokens.get(tokenIndex++));
// The next token is the max set size
- model.setMaxSetSize( Integer.parseInt((String)tokens.get(tokenIndex++)) );
+ tokenIndex++;
// The next token is the model type
- model.setModelType( Integer.parseInt((String)tokens.get(tokenIndex++)) );
+ model.setPhysical(Integer.parseInt((String)tokens.get(tokenIndex++)) == 0);
// The next token is the primary metamodel Uri
model.setPrimaryMetamodelUri(getObjectValue((String)tokens.get(tokenIndex++)));
@@ -336,11 +332,6 @@
// The next token are the supports flags
char[] supportFlags = ((String)tokens.get(tokenIndex++)).toCharArray();
model.setVisible(getBooleanValue(supportFlags[0]));
- model.setSupportsDistinct(getBooleanValue(supportFlags[1]));
- model.setSupportsJoin(getBooleanValue(supportFlags[2]));
- model.setSupportsOrderBy(getBooleanValue(supportFlags[3]));
- model.setSupportsOuterJoin(getBooleanValue(supportFlags[4]));
- model.setSupportsWhereAll(getBooleanValue(supportFlags[5]));
// The next tokens are footer values - the footer will contain the version number for the index record
setRecordFooterValues(model, tokens, tokenIndex);
@@ -360,15 +351,8 @@
int indexVersion = getIndexVersion(record);
// The tokens are the standard header values
- int tokenIndex = 0;
+ int tokenIndex = 2;
- char recordType = ((String)tokens.get(tokenIndex++)).charAt(0);
-
- // The next token is the transformation type
- transform.setTransformationType(getObjectValue(getTransformTypeForRecordType(recordType)));
- // The next token is the name of the transformed object
- transform.setFullName(getObjectValue(((String)tokens.get(tokenIndex++))));
-
// The next token is the UUID of the transformed object
getObjectValue((String)tokens.get(tokenIndex++));
@@ -394,19 +378,6 @@
return transform;
}
- protected static String getTransformTypeForRecordType(final char recordType) {
- switch (recordType) {
- case MetadataConstants.RECORD_TYPE.SELECT_TRANSFORM: return TransformationRecordImpl.Types.SELECT;
- case MetadataConstants.RECORD_TYPE.INSERT_TRANSFORM: return TransformationRecordImpl.Types.INSERT;
- case MetadataConstants.RECORD_TYPE.UPDATE_TRANSFORM: return TransformationRecordImpl.Types.UPDATE;
- case MetadataConstants.RECORD_TYPE.DELETE_TRANSFORM: return TransformationRecordImpl.Types.DELETE;
- case MetadataConstants.RECORD_TYPE.PROC_TRANSFORM: return TransformationRecordImpl.Types.PROCEDURE;
- case MetadataConstants.RECORD_TYPE.MAPPING_TRANSFORM: return TransformationRecordImpl.Types.MAPPING;
- default:
- throw new IllegalArgumentException("Invalid record type, for key " + recordType); //$NON-NLS-1$
- }
- }
-
protected static short getKeyTypeForRecordType(final char recordType) {
switch (recordType) {
case MetadataConstants.RECORD_TYPE.UNIQUE_KEY: return MetadataConstants.KEY_TYPES.UNIQUE_KEY;
@@ -423,10 +394,10 @@
/**
* Create a TableRecord instance from the specified index record
*/
- public static TableRecordImpl createTableRecord(final char[] record) {
+ public static Table createTableRecord(final char[] record) {
final String str = new String(record);
final List tokens = StringUtil.split(str,String.valueOf(IndexConstants.RECORD_STRING.RECORD_DELIMITER));
- final TableRecordImpl table = new TableRecordImpl();
+ final Table table = new Table();
// Extract the index version information from the record
int indexVersion = getIndexVersion(record);
@@ -441,7 +412,7 @@
table.setCardinality( Integer.parseInt((String)tokens.get(tokenIndex++)) );
// The next token is the tableType
- table.setTableType( Integer.parseInt((String)tokens.get(tokenIndex++)) );
+ table.setTableType(Table.Type.values()[Integer.parseInt((String)tokens.get(tokenIndex++))]);
// The next token are the supports flags
char[] supportFlags = ((String)tokens.get(tokenIndex++)).toCharArray();
@@ -452,20 +423,28 @@
table.setMaterialized(getBooleanValue(supportFlags[3]));
}
- // The next token are the UUIDs for the column references
- List uuids = getIDs((String)tokens.get(tokenIndex++), indexVersion);
- table.setColumnIDs(uuids);
+ // The next token are the UUIDs for the column references (no longer stored on the record)
+ tokenIndex++;
// The next token is the UUID of the primary key
- table.setPrimaryKeyID(getObjectValue((String)tokens.get(tokenIndex++)));
+ String id = getObjectValue((String)tokens.get(tokenIndex++));
+ if (id != null) {
+ KeyRecord pk = new KeyRecord(KeyRecord.Type.Primary);
+ pk.setUUID(id);
+ table.setPrimaryKey(pk);
+ }
tokenIndex+=4; //skip reading uuids for associated records
if(includeMaterializationFlag(indexVersion)) {
// The next token are the UUIDs for the materialized table ID
- table.setMaterializedTableID((String)tokens.get(tokenIndex++));
+ Table matTable = new Table();
+ matTable.setUUID((String)tokens.get(tokenIndex++));
+ table.setMaterializedTable(matTable);
// The next token are the UUID for the materialized stage table ID
- table.setMaterializedStageTableID((String)tokens.get(tokenIndex++));
+ matTable = new Table();
+ matTable.setUUID((String)tokens.get(tokenIndex++));
+ table.setMaterializedStageTable(matTable);
}
// The next tokens are footer values
@@ -474,13 +453,23 @@
return table;
}
+ private static List<Column> createColumns(List<String> uuids) {
+ List<Column> columns = new ArrayList<Column>(uuids.size());
+ for (String uuid : uuids) {
+ Column column = new Column();
+ column.setUUID(uuid);
+ columns.add(column);
+ }
+ return columns;
+ }
+
/**
* Create a ColumnRecord instance from the specified index record
*/
- public static ColumnRecordImpl createColumnRecord(final char[] record) {
+ public static Column createColumnRecord(final char[] record) {
final String str = new String(record);
final List tokens = StringUtil.split(str,String.valueOf(IndexConstants.RECORD_STRING.RECORD_DELIMITER));
- final ColumnRecordImpl column = new ColumnRecordImpl();
+ final Column column = new Column();
// Extract the index version information from the record
int indexVersion = getIndexVersion(record);
@@ -500,15 +489,12 @@
column.setSigned(getBooleanValue(supportFlags[4]));
column.setCurrency(getBooleanValue(supportFlags[5]));
column.setFixedLength(getBooleanValue(supportFlags[6]));
- if (includeInputParameterFlag(indexVersion)) {
- column.setTransformationInputParameter(getBooleanValue(supportFlags[7]));
- }
// The next token is the search type
- column.setNullType( Integer.parseInt((String)tokens.get(tokenIndex++)) );
+ column.setNullType(NullType.values()[Integer.parseInt((String)tokens.get(tokenIndex++))]);
// The next token is the search type
- column.setSearchType( Integer.parseInt((String)tokens.get(tokenIndex++)) );
+ column.setSearchType(SearchType.values()[3 - Integer.parseInt((String)tokens.get(tokenIndex++))]);
// The next token is the length
column.setLength( Integer.parseInt((String)tokens.get(tokenIndex++)) );
@@ -567,10 +553,9 @@
/**
* Create a ColumnSetRecord instance from the specified index record
*/
- public static ColumnSetRecordImpl createColumnSetRecord(final char[] record) {
+ public static ColumnSet createColumnSetRecord(final char[] record, ColumnSet columnSet) {
final String str = new String(record);
final List tokens = StringUtil.split(str,String.valueOf(IndexConstants.RECORD_STRING.RECORD_DELIMITER));
- final ColumnSetRecordImpl columnSet = new ColumnSetRecordImpl(getKeyTypeForRecordType(record[0]));
// Extract the index version information from the record
int indexVersion = getIndexVersion(record);
@@ -583,7 +568,7 @@
// The next token are the UUIDs for the column references
List uuids = getIDs((String)tokens.get(tokenIndex++), indexVersion);
- columnSet.setColumnIDs(uuids);
+ columnSet.setColumns(createColumns(uuids));
if (record[0] == MetadataConstants.RECORD_TYPE.UNIQUE_KEY || record[0] == MetadataConstants.RECORD_TYPE.PRIMARY_KEY) {
//read the values from the index to update the tokenindex, but we don't actually use them.
@@ -598,10 +583,10 @@
/**
* Create a ForeignKeyRecord instance from the specified index record
*/
- public static ForeignKeyRecordImpl createForeignKeyRecord(final char[] record) {
+ public static ForeignKey createForeignKeyRecord(final char[] record) {
final String str = new String(record);
final List tokens = StringUtil.split(str,String.valueOf(IndexConstants.RECORD_STRING.RECORD_DELIMITER));
- final ForeignKeyRecordImpl fkRecord = new ForeignKeyRecordImpl();
+ final ForeignKey fkRecord = new ForeignKey();
// Extract the index version information from the record
int indexVersion = getIndexVersion(record);
@@ -614,7 +599,7 @@
// The next token are the UUIDs for the column references
List uuids = getIDs((String)tokens.get(tokenIndex++), indexVersion);
- fkRecord.setColumnIDs(uuids);
+ fkRecord.setColumns(createColumns(uuids));
// The next token is the UUID of the unique key
fkRecord.setUniqueKeyID(getObjectValue((String)tokens.get(tokenIndex++)));
@@ -628,10 +613,10 @@
/**
* Create a DatatypeRecord instance from the specified index record
*/
- public static DatatypeRecordImpl createDatatypeRecord(final char[] record) {
+ public static Datatype createDatatypeRecord(final char[] record) {
final String str = new String(record);
final List tokens = StringUtil.split(str,String.valueOf(IndexConstants.RECORD_STRING.RECORD_DELIMITER));
- final DatatypeRecordImpl dt = new DatatypeRecordImpl();
+ final Datatype dt = new Datatype();
// Extract the index version information from the record
int indexVersion = getIndexVersion(record);
@@ -640,34 +625,43 @@
int tokenIndex = 0;
// Set the record type
- dt.setRecordType(((String)tokens.get(tokenIndex++)).toCharArray()[0]);
+ tokenIndex++;
// Set the datatype and basetype identifiers
dt.setDatatypeID(getObjectValue((String)tokens.get(tokenIndex++)));
dt.setBasetypeID(getObjectValue((String)tokens.get(tokenIndex++)));
// Set the fullName/objectID/nameInSource
- dt.setFullName((String)tokens.get(tokenIndex++));
+ String fullName = (String)tokens.get(tokenIndex++);
+ int indx = fullName.lastIndexOf(Datatype.URI_REFERENCE_DELIMITER);
+ if (indx > -1) {
+ fullName = fullName.substring(indx+1);
+ } else {
+ indx = fullName.lastIndexOf(AbstractMetadataRecord.NAME_DELIM_CHAR);
+ if (indx > -1) {
+ fullName = fullName.substring(indx+1);
+ }
+ }
+ dt.setName(fullName);
dt.setUUID(getObjectValue((String)tokens.get(tokenIndex++)));
dt.setNameInSource(getObjectValue((String)tokens.get(tokenIndex++)));
// Set the variety type and its properties
- dt.setVarietyType( Short.parseShort((String)tokens.get(tokenIndex++)) );
- List props = getIDs((String)tokens.get(tokenIndex++), indexVersion);
- dt.setVarietyProps(props);
+ dt.setVarietyType(Variety.values()[Short.parseShort((String)tokens.get(tokenIndex++))]);
+ getIDs((String)tokens.get(tokenIndex++), indexVersion);
// Set the runtime and java class names
dt.setRuntimeTypeName(getObjectValue((String)tokens.get(tokenIndex++)));
dt.setJavaClassName(getObjectValue((String)tokens.get(tokenIndex++)));
// Set the datatype type
- dt.setType( Short.parseShort((String)tokens.get(tokenIndex++)) );
+ dt.setType(Datatype.Type.values()[Short.parseShort((String)tokens.get(tokenIndex++))]);
// Set the search type
- dt.setSearchType( Short.parseShort((String)tokens.get(tokenIndex++)) );
+ dt.setSearchType(SearchType.values()[3 - Integer.parseInt((String)tokens.get(tokenIndex++))]);
// Set the null type
- dt.setNullType( Short.parseShort((String)tokens.get(tokenIndex++)) );
+ dt.setNullType(NullType.values()[Integer.parseInt((String)tokens.get(tokenIndex++))]);
// Set the boolean flags
char[] booleanValues = ((String)tokens.get(tokenIndex++)).toCharArray();
@@ -727,11 +721,22 @@
procRd.setVirtual(getBooleanValue(booleanValues[1]));
// The next token are the UUIDs for the param references
- List uuids = getIDs((String)tokens.get(tokenIndex++), indexVersion);
- procRd.setParameterIDs(uuids);
+ List<String> uuids = getIDs((String)tokens.get(tokenIndex++), indexVersion);
+ List<ProcedureParameter> columns = new ArrayList<ProcedureParameter>(uuids.size());
+ for (String uuid : uuids) {
+ ProcedureParameter column = new ProcedureParameter();
+ column.setUUID(uuid);
+ columns.add(column);
+ }
+ procRd.setParameters(columns);
// The next token is the UUID of the resultSet object
- procRd.setResultSetID(getObjectValue((String)tokens.get(tokenIndex++)));
+ String rsId = getObjectValue((String)tokens.get(tokenIndex++));
+ if (rsId != null) {
+ ColumnSet cs = new ColumnSet();
+ cs.setUUID(rsId);
+ procRd.setResultSet(cs);
+ }
if (includeProcedureUpdateCount(indexVersion)) {
procRd.setUpdateCount(Integer.parseInt((String)tokens.get(tokenIndex++)));
@@ -747,11 +752,11 @@
* Create a ProcedureParameterRecord instance from the specified index record
* header|defaultValue|dataType|length|radix|scale|nullType|precision|paramType|footer|
*/
- public static ProcedureParameterRecordImpl createProcedureParameterRecord(final char[] record) {
+ public static ProcedureParameter createProcedureParameterRecord(final char[] record) {
final String str = new String(record);
final List tokens = StringUtil.split(str,String.valueOf(IndexConstants.RECORD_STRING.RECORD_DELIMITER));
- final ProcedureParameterRecordImpl paramRd = new ProcedureParameterRecordImpl();
+ final ProcedureParameter paramRd = new ProcedureParameter();
// The tokens are the standard header values
int tokenIndex = 0;
@@ -780,7 +785,7 @@
paramRd.setScale(Integer.parseInt((String)tokens.get(tokenIndex++)) );
// The next token is the null type
- paramRd.setNullType(Integer.parseInt((String)tokens.get(tokenIndex++)) );
+ paramRd.setNullType(NullType.values()[Integer.parseInt((String)tokens.get(tokenIndex++))]);
// The next token is the precision
paramRd.setPrecision(Integer.parseInt((String)tokens.get(tokenIndex++)) );
@@ -788,8 +793,26 @@
// The next token is the position
paramRd.setPosition(Integer.parseInt((String)tokens.get(tokenIndex++)) );
- // The next token is parameter type
- paramRd.setType(Short.parseShort((String)tokens.get(tokenIndex++)));
+ // The next token is parameter type
+ ProcedureParameter.Type type = null;
+ switch (Short.parseShort((String)tokens.get(tokenIndex++))) {
+ case MetadataConstants.PARAMETER_TYPES.IN_PARM:
+ type = ProcedureParameter.Type.In;
+ break;
+ case MetadataConstants.PARAMETER_TYPES.INOUT_PARM:
+ type = ProcedureParameter.Type.InOut;
+ break;
+ case MetadataConstants.PARAMETER_TYPES.OUT_PARM:
+ type = ProcedureParameter.Type.Out;
+ break;
+ case MetadataConstants.PARAMETER_TYPES.RESULT_SET:
+ type = ProcedureParameter.Type.ResultSet;
+ break;
+ case MetadataConstants.PARAMETER_TYPES.RETURN_VALUE:
+ type = ProcedureParameter.Type.ReturnValue;
+ break;
+ }
+ paramRd.setType(type);
// The next token is flag for parameter optional prop
char[] flags = ((String)tokens.get(tokenIndex++)).toCharArray();
@@ -804,19 +827,15 @@
/**
* Create a AnnotationRecord instance from the specified index record
*/
- public static AnnotationRecordImpl createAnnotationRecord(final char[] record) {
+ public static String createAnnotationRecord(final char[] record) {
final String str = new String(record);
final List tokens = StringUtil.split(str,String.valueOf(IndexConstants.RECORD_STRING.RECORD_DELIMITER));
- final AnnotationRecordImpl annotation = new AnnotationRecordImpl();
// Extract the index version information from the record
int indexVersion = getIndexVersion(record);
// The tokens are the standard header values
- int tokenIndex = 0;
- setRecordHeaderValues(annotation, (String)tokens.get(tokenIndex++), (String)tokens.get(tokenIndex++),
- (String)tokens.get(tokenIndex++), (String)tokens.get(tokenIndex++),
- (String)tokens.get(tokenIndex++), (String)tokens.get(tokenIndex++));
+ int tokenIndex = 6;
if(includeAnnotationProperties(indexVersion)) {
// The next token are the properties, ignore it not going to be read any way
@@ -824,75 +843,32 @@
}
// The next token is the description
- annotation.setDescription((String)tokens.get(tokenIndex++));
-
- // The next tokens are footer values
- setRecordFooterValues(annotation, tokens, tokenIndex);
-
- return annotation;
+ return (String)tokens.get(tokenIndex++);
}
/**
* Create a PropertyRecord instance from the specified index record
*/
- public static PropertyRecordImpl createPropertyRecord(final char[] record) {
- final String str = new String(record);
- final List tokens = StringUtil.split(str,String.valueOf(IndexConstants.RECORD_STRING.RECORD_DELIMITER));
- final PropertyRecordImpl property = new PropertyRecordImpl();
-
- int indexVersion = getIndexVersion(record);
-
- // The tokens are the standard header values
- int tokenIndex = 0;
-
- // The next token is the record type
- String recordType = (String)tokens.get(tokenIndex++);
- property.setRecordType(recordType.toCharArray()[0]);
-
- // The next token is the object ID
- String objectID = (String)tokens.get(tokenIndex++);
- property.setUUID(getObjectValue(objectID));
-
- // The next token is the property name
- property.setPropertyName( (String)tokens.get(tokenIndex++) );
-
- // The next token is the property value
- property.setPropertyValue((String)tokens.get(tokenIndex++));
+ public static LinkedHashMap<String, String> createPropertyRecord(IEntryResult[] records) {
+ if (records == null || records.length == 0) {
+ return null;
+ }
+ LinkedHashMap<String, String> result = new LinkedHashMap<String, String>();
- // for newer records
- if(!includeAnnotationProperties(indexVersion)) {
- // The next token is extension boolean
- tokenIndex++;
- }
+ for (IEntryResult iEntryResult : records) {
+ final String str = new String(iEntryResult.getWord());
+ final List tokens = StringUtil.split(str,String.valueOf(IndexConstants.RECORD_STRING.RECORD_DELIMITER));
- // The next tokens are footer values
- setRecordFooterValues(property, tokens, tokenIndex);
+ // The tokens are the standard header values
+ int tokenIndex = 2;
- return property;
+ result.put( (String)tokens.get(tokenIndex++), (String)tokens.get(tokenIndex++));
+ }
+
+ return result;
}
/**
- * Create a FileRecord instance from the specified index record
- */
- public static FileRecordImpl createFileRecord(final char[] record) {
- final String str = new String(record);
- final List tokens = StringUtil.split(str,String.valueOf(IndexConstants.RECORD_STRING.RECORD_DELIMITER));
- final FileRecordImpl file = new FileRecordImpl();
-
- // The tokens are the standard header values
- int tokenIndex = 0;
-
- // The next token is the record type
- String recordType = (String)tokens.get(tokenIndex++);
- file.setRecordType(recordType.toCharArray()[0]);
-
- // The next token is the relative path to the file in vdb
- file.setPathInVdb((String)tokens.get(tokenIndex++) );
-
- return file;
- }
-
- /**
* Search for and return the version number associated with this record.
* If no version information is found encoded in the record then the
* version number of NONVERSIONED_RECORD_INDEX_VERSION will be returned.
@@ -930,7 +906,7 @@
return false;
}
- public static List getIDs(final String values, final int indexVersionNumber) {
+ public static List<String> getIDs(final String values, final int indexVersionNumber) {
if (StringUtil.isEmpty(values)) {
return Collections.EMPTY_LIST;
}
@@ -1051,15 +1027,27 @@
* be the order of the arguments in method signature.
*/
private static void setRecordHeaderValues(final AbstractMetadataRecord record, final String recordType,
- final String upperName, final String objectID, final String fullName,
+ final String upperName, final String objectID, String fullName,
final String nameInSource,
final String parentObjectID) {
- record.setRecordType(recordType.toCharArray()[0]);
record.setUUID(getObjectValue(objectID));
- record.setFullName(fullName);
+ if (fullName != null) {
+ String name = fullName;
+ if (record instanceof Column || record instanceof ProcedureParameter || record instanceof KeyRecord) { //take only the last part
+ int index = fullName.lastIndexOf(IndexConstants.NAME_DELIM_CHAR);
+ if (index > 0) {
+ name = fullName.substring(index + 1);
+ }
+ } else { //remove model name
+ int index = fullName.indexOf(IndexConstants.NAME_DELIM_CHAR);
+ if (index > 0) {
+ name = fullName.substring(index + 1);
+ }
+ }
+ record.setName(name);
+ }
record.setNameInSource(getObjectValue(nameInSource));
- record.setParentUUID(getObjectValue(parentObjectID));
}
/**
@@ -1074,7 +1062,9 @@
((TransformationRecordImpl)record).setResourcePath(getOptionalToken(tokens, tokenIndex));
}
tokenIndex++;
- record.setName(getOptionalToken(tokens, tokenIndex++));
+ if (record.getName() == null) {
+ record.setName(getOptionalToken(tokens, tokenIndex++));
+ }
//placeholder for index version
getOptionalToken(tokens, tokenIndex++);
}
Added: branches/JCA/metadata/src/main/java/org/teiid/metadata/index/RuntimeMetadataPlugin.java
===================================================================
--- branches/JCA/metadata/src/main/java/org/teiid/metadata/index/RuntimeMetadataPlugin.java (rev 0)
+++ branches/JCA/metadata/src/main/java/org/teiid/metadata/index/RuntimeMetadataPlugin.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,44 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * See the COPYRIGHT.txt file distributed with this work for information
+ * regarding copyright ownership. Some portions may be licensed
+ * to Red Hat, Inc. under one or more contributor license agreements.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA.
+ */
+
+package org.teiid.metadata.index;
+
+import java.util.ResourceBundle;
+
+import com.metamatrix.core.BundleUtil;
+
+/**
+ * CommonPlugin
+ * <p>Used here in <code>metadata.runtime</code> to have access to the new
+ * logging framework for <code>LogManager</code>.</p>
+ */
+public class RuntimeMetadataPlugin {
+
+ /**
+ * The plug-in identifier of this plugin
+ * (value <code>"com.metamatrix.metadata.runtime"</code>).
+ */
+ public static final String PLUGIN_ID = "org.teiid.metadata"; //$NON-NLS-1$
+
+ public static final BundleUtil Util = new BundleUtil(PLUGIN_ID,
+ PLUGIN_ID + ".i18n", ResourceBundle.getBundle(PLUGIN_ID + ".i18n")); //$NON-NLS-1$ //$NON-NLS-2$
+}
Property changes on: branches/JCA/metadata/src/main/java/org/teiid/metadata/index/RuntimeMetadataPlugin.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: branches/JCA/metadata/src/main/java/org/teiid/metadata/index/SimpleIndexUtil.java
===================================================================
--- branches/JCA/metadata/src/main/java/org/teiid/metadata/index/SimpleIndexUtil.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/metadata/src/main/java/org/teiid/metadata/index/SimpleIndexUtil.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -27,7 +27,6 @@
import java.util.ArrayList;
import java.util.List;
-import org.teiid.connector.metadata.runtime.MetadataConstants;
import org.teiid.core.index.IEntryResult;
import org.teiid.internal.core.index.Index;
@@ -248,10 +247,9 @@
* @throws MetamatrixCoreException If there is an error looking up indexes
* @since 4.2
*/
- public static Index[] getIndexes(final String indexName, final IndexMetadataStore selector) {
+ public static Index[] getIndexes(final String indexName, Index[] indexes) {
ArgCheck.isNotEmpty(indexName);
// The the index file name for the record type
- final Index[] indexes = selector.getIndexes();
final List<Index> tmp = new ArrayList<Index>(indexes.length);
for (int i = 0; i < indexes.length; i++) {
Index coreIndex = indexes[i];
Added: branches/JCA/metadata/src/main/java/org/teiid/metadata/index/TransformationRecordImpl.java
===================================================================
--- branches/JCA/metadata/src/main/java/org/teiid/metadata/index/TransformationRecordImpl.java (rev 0)
+++ branches/JCA/metadata/src/main/java/org/teiid/metadata/index/TransformationRecordImpl.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,130 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * See the COPYRIGHT.txt file distributed with this work for information
+ * regarding copyright ownership. Some portions may be licensed
+ * to Red Hat, Inc. under one or more contributor license agreements.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA.
+ */
+
+package org.teiid.metadata.index;
+
+import java.util.List;
+
+import org.teiid.connector.metadata.runtime.AbstractMetadataRecord;
+
+/**
+ * TransformationRecordImpl
+ */
+public class TransformationRecordImpl extends AbstractMetadataRecord {
+
+ public static interface Types {
+ public static final String MAPPING = "Mapping"; //$NON-NLS-1$
+ public static final String SELECT = "Select"; //$NON-NLS-1$
+ public static final String INSERT = "Insert"; //$NON-NLS-1$
+ public static final String UPDATE = "Update"; //$NON-NLS-1$
+ public static final String DELETE = "Delete"; //$NON-NLS-1$
+ public static final String PROCEDURE = "Procedure"; //$NON-NLS-1$
+ }
+
+ private String transformation;
+ private String transformationType;
+ private List bindings;
+ private List schemaPaths;
+ private String resourcePath;
+
+ /**
+ * @see com.metamatrix.modeler.core.metadata.runtime.TransformationRecord#getTransformation()
+ */
+ public String getTransformation() {
+ return transformation;
+ }
+
+ /*
+ * @see com.metamatrix.modeler.core.metadata.runtime.TransformationRecord#getBindings()
+ */
+ public List getBindings() {
+ return this.bindings;
+ }
+
+ /*
+ * @see com.metamatrix.modeler.core.metadata.runtime.TransformationRecord#getSchemaPaths()
+ */
+ public List getSchemaPaths() {
+ return schemaPaths;
+ }
+
+ /*
+ * @see com.metamatrix.modeler.core.metadata.runtime.TransformationRecord#getTransformationType()
+ */
+ public String getTransformationType() {
+ return transformationType;
+ }
+
+ /**
+ * @see com.metamatrix.modeler.core.metadata.runtime.TransformationRecord#getType()
+ */
+ public String getType() {
+ return this.transformationType;
+ }
+
+ // ==================================================================================
+ // P U B L I C M E T H O D S
+ // ==================================================================================
+
+ /**
+ * @param string
+ */
+ public void setTransformation(final String string) {
+ transformation = string;
+ }
+
+ /**
+ * @param string
+ */
+ public void setTransformationType(String string) {
+ transformationType = string;
+ }
+
+ /**
+ * @param collection
+ */
+ public void setBindings(List bindings) {
+ this.bindings = bindings;
+ }
+
+ /**
+ * @param collection
+ */
+ public void setSchemaPaths(List collection) {
+ schemaPaths = collection;
+ }
+
+ /**
+ * @return
+ */
+ public String getResourcePath() {
+ return resourcePath;
+ }
+
+ /**
+ * @param path
+ */
+ public void setResourcePath(String path) {
+ resourcePath = path;
+ }
+
+}
\ No newline at end of file
Property changes on: branches/JCA/metadata/src/main/java/org/teiid/metadata/index/TransformationRecordImpl.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: branches/JCA/metadata/src/main/java/org/teiid/metadata/index/VDBMetadataFactory.java
===================================================================
--- branches/JCA/metadata/src/main/java/org/teiid/metadata/index/VDBMetadataFactory.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/metadata/src/main/java/org/teiid/metadata/index/VDBMetadataFactory.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -23,44 +23,44 @@
package org.teiid.metadata.index;
import java.io.File;
-import java.io.FileInputStream;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import org.teiid.connector.metadata.runtime.MetadataStore;
import org.teiid.metadata.CompositeMetadataStore;
import org.teiid.metadata.TransformationMetadata;
import com.metamatrix.common.vdb.api.VDBArchive;
import com.metamatrix.core.MetaMatrixRuntimeException;
+import com.metamatrix.core.util.LRUCache;
import com.metamatrix.metadata.runtime.api.MetadataSource;
-import com.metamatrix.query.metadata.MetadataStore;
import com.metamatrix.query.metadata.QueryMetadataInterface;
public class VDBMetadataFactory {
+ public static LRUCache<URL, QueryMetadataInterface> VDB_CACHE = new LRUCache<URL, QueryMetadataInterface>(10);
+
public static QueryMetadataInterface getVDBMetadata(String vdbFile) {
- MetadataSource source;
try {
- source = new VDBArchive(new FileInputStream(vdbFile));
+ return getVDBMetadata(new File(vdbFile).toURI().toURL());
} catch (IOException e) {
throw new MetaMatrixRuntimeException(e);
}
- IndexMetadataStore selector;
- try {
- selector = new IndexMetadataStore(source);
- } catch (IOException e) {
- throw new MetaMatrixRuntimeException(e);
- }
- return new TransformationMetadata(new CompositeMetadataStore(Arrays.asList(selector), source));
}
public static QueryMetadataInterface getVDBMetadata(URL vdbURL) throws IOException {
+ QueryMetadataInterface vdb = VDB_CACHE.get(vdbURL);
+ if (vdb != null) {
+ return vdb;
+ }
MetadataSource source = new VDBArchive(vdbURL.openStream());
- IndexMetadataStore selector = new IndexMetadataStore(source);
- return new TransformationMetadata(new CompositeMetadataStore(Arrays.asList(selector), source));
+ IndexMetadataFactory selector = new IndexMetadataFactory(source);
+ vdb = new TransformationMetadata(new CompositeMetadataStore(Arrays.asList(selector.getMetadataStore()), source));
+ VDB_CACHE.put(vdbURL, vdb);
+ return vdb;
}
public static QueryMetadataInterface getVDBMetadata(String[] vdbFile) {
@@ -73,7 +73,7 @@
if (i == 0) {
source = tempSource;
}
- selectors.add(new IndexMetadataStore(tempSource));
+ selectors.add(new IndexMetadataFactory(tempSource).getMetadataStore());
} catch (IOException e) {
throw new MetaMatrixRuntimeException(e);
}
Modified: branches/JCA/metadata/src/main/resources/System.vdb
===================================================================
(Binary files differ)
Modified: branches/JCA/metadata/src/main/resources/org/teiid/metadata/i18n.properties
===================================================================
--- branches/JCA/metadata/src/main/resources/org/teiid/metadata/i18n.properties 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/metadata/src/main/resources/org/teiid/metadata/i18n.properties 2009-12-02 23:40:40 UTC (rev 1616)
@@ -24,1101 +24,4 @@
# Note: All new messages should have been looked up before being logged! DON'T use I18nLogManager!
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-# ==========================================
-# Error Messages for the Metadata Package (008)
-# ==========================================
-#
-# example ERR.008.001.0001=Test Error Message for Metadata Package
-
-# ================== GENERIC METADATA MESSAGES ==================
-# generic (000)
-ERR.008.000.0001 = Error closing connection
-ERR.008.000.0002 = Error processing event
-ERR.008.000.0003 = Error loading configuration.
-ERR.008.000.0004 = Error creating unique id
-ERR.008.000.0005 = Attempt to compare null
-ERR.008.000.0006 = Error rolling back.
-ERR.008.000.0007 = Error executing query: {0}
-ERR.008.000.0008 = Error closing statement
-ERR.008.000.0009 = Error preparing statement: {0}
-ERR.008.000.0010 = Unable to commit transaction
-ERR.008.000.0011 = Unable to rollback transaction
-ERR.008.000.0012 = Unable to close transaction
-
-# ================== METADATA RUNTIME MESSAGES ==================
-# runtime (001)
-ERR.008.001.0001 = VDB name can not be null.
-ERR.008.001.0002 = Error obtaining active VDB ID for {0}
-ERR.008.001.0003 = There is no available virtual database with name: {0} and version: {1}
-ERR.008.001.0004 = RuntimeMetadata: failed setVDBStatus for vdb {0}
-ERR.008.001.0005 = Error obtaining active VDB
-ERR.008.001.0006 = Error obtaining VDB {0}
-ERR.008.001.0007 = Error obtaining active VDB IDs.
-ERR.008.001.0008 = Error obtaining MetaBase info.
-ERR.008.001.0009 = Error obtaining Models for VDB {0}
-ERR.008.001.0010 = Can not find modelID with name: {0} in VDB {1}
-ERR.008.001.0011 = Error obtaining runtime types.
-ERR.008.001.0012 = Error obtaining all data types.
-ERR.008.001.0013 = Error adding listener. Creating NoOpMessageBus.
-ERR.008.001.0014 = Unable to load the MetadataSupplier class "{0}". No dynamic runtime metadata loading will be available.
-ERR.008.001.0015 = Unable to instantiate the MetadataSupplier class "{0}". No dynamic runtime metadata loading will be available.
-ERR.008.001.0016 = Unable to access the MetadataSupplier class "{0}". No dynamic runtime metadata loading will be available.
-ERR.008.001.0017 = Error initializing transaction manager.
-ERR.008.001.0018 = The model name string may not be null
-ERR.008.001.0019 = The VirtualDatabaseID reference may not be null
-ERR.008.001.0020 = The model name string may not be zero-length
-ERR.008.001.0021 = The ModelID reference may not be null
-ERR.008.001.0022 = The VirtualDatabaseLoader reference may not be null
-ERR.008.001.0023 = The group name string may not be null
-ERR.008.001.0024 = The group name string may not be zero-length
-ERR.008.001.0025 = A model with name "{0}" cannot be found in the VDB "{1}"
-ERR.008.001.0026 = deleteVDBMarkedForDelete: Unable to delete VDB: {0}
-ERR.008.001.0027 = deleteVDBsMarkedForDelete(sessionID<{0}>) no sessions logged in: Unable to delete VDB: {1}
-ERR.008.001.0028 = Error getting sessions logged in to VDB version: {0} {1}
-ERR.008.001.0029 = Can''t delete Entitlements for VDB {0} version {1}
-ERR.008.001.0030 = Can''t delete the {0} Entitlements for VDB {1} version {2}
-ERR.008.001.0031 = Model is null in VDBMetadata, ID <{0}>
-ERR.008.001.0032 = GroupID is null in VDBMetadata, ID <{0}> under Model: <{1}>
-ERR.008.001.0033 = Resource {0} could not be found or loaded in order to know what type of model classes to entitle.
-
-# runtime.api (002)
-
-# runtime.event (003)
-
-# runtime.exception (004)
-
-# runtime.model (005)
-ERR.008.005.0001 = Invalid element full name.
-ERR.008.005.0002 = Invalid group full name.
-ERR.008.005.0003 = Invalid key full name.
-ERR.008.005.0004 = Unable to create an ID object with a null full name.
-ERR.008.005.0005 = Unable to create an ID object with a zero-length name.
-# ERR.008.005.0006 = Attempt to compare null
-ERR.008.005.0007 = Unable to create a basic object with a null ID
-ERR.008.005.0008 = Class Cast : Attempt to compare {0} to {1}
-ERR.008.005.0009 = Cannot clone this immutable object.
-ERR.008.005.0010 = The list of group names may not be null
-ERR.008.005.0011 = The list of group names may not be empty
-ERR.008.005.0012 = The list of group name may not be null
-ERR.008.005.0013 = The String builder method reference may not be null
-ERR.008.005.0014 = The VirtualDatabaseID reference may not be null
-ERR.008.005.0015 = The ModelID reference may not be null
-ERR.008.005.0016 = Invalid model full name {0}
-ERR.008.005.0017 = Invalid procedure full name.
-ERR.008.005.0018 = The fullnameWithinModel String may not be null
-ERR.008.005.0019 = The fullnameWithinModel String may not be zero-length
-ERR.008.005.0020 = The GroupID reference may not be null
-ERR.008.005.0021 = The name String may not be null
-ERR.008.005.0022 = The name dataTypeName may not be null
-ERR.008.005.0023 = The name String may not be zero-length
-ERR.008.005.0024 = The name dataTypeName may not be zero-length
-ERR.008.005.0025 = The DataType reference may not be null
-ERR.008.005.0026 = The Key reference may not be null
-ERR.008.005.0027 = The Element[] reference may not be null
-ERR.008.005.0028 = The Group reference may not be null
-ERR.008.005.0029 = The Element reference may not be null
-ERR.008.005.0030 = The Group reference must be an instance of BasicGroup
-ERR.008.005.0031 = The Element reference must be an instance of BasicElement
-ERR.008.005.0032 = Group {0} not found in the RuntimeMetadata.
-ERR.008.005.0033 = Key {0} not found in the RuntimeMetadata.
-ERR.008.005.0034 = Element {0} not found in the RuntimeMetadata.
-ERR.008.005.0035 = Model {0} not found in the RuntimeMetadata.
-ERR.008.005.0036 = Procedure {0} not found in the RuntimeMetadata.
-ERR.008.005.0037 = UnsupportedOperation : getMetaBaseInfo is not supported in MetadataCache
-ERR.008.005.0038 = UnsupportedOperation : getVirtualDatabaseID is not supported in MetadataCache
-ERR.008.005.0039 = Error obtaining elements in key.
-ERR.008.005.0040 = Error obtaining procedures.
-ERR.008.005.0041 = Error obtaining key.
-ERR.008.005.0042 = Error obtaining keys in model.
-ERR.008.005.0043 = Error obtaining keys in group.
-ERR.008.005.0044 = UnsupportedOperation : getVirtualDatabases is not supported in MetadataCache
-ERR.008.005.0045 = Can not find VDB with ID {0} and UUID {1}
-ERR.008.005.0046 = Can not find VDB {0}
-ERR.008.005.0047 = Error obtaining data types.
-ERR.008.005.0048 = Incomplete group name "{0}"
-ERR.008.005.0049 = Error creating KeyID for {0}
-ERR.008.005.0050 = Error creating ElementID for {0}
-ERR.008.005.0051 = Error creating ModelID for {0}
-ERR.008.005.0052 = Error creating ProcedureID for {0}
-ERR.008.005.0053 = Error obtaining properties.
-ERR.008.005.0054 = Error obtaining groupIDs for model.
-ERR.008.005.0055 = Error obtaining loaded groupIDs for model.
-ERR.008.005.0056 = Error obtaining groupIDs with the pattern {0}
-ERR.008.005.0057 = UnsupportedOperation : loadGroups is not supported in MetadataCache
-ERR.008.005.0058 = Error obtaining groupIDs that end with {0}
-ERR.008.005.0059 = Error obtaining XML Schema for {0}
-ERR.008.005.0060 = Error obtaining group.
-ERR.008.005.0061 = Error obtaining VDB.
-ERR.008.005.0062 = Error obtaining models.
-ERR.008.005.0063 = Error initializing object cache.
-ERR.008.005.0064 = Error loading built-in types.
-ERR.008.005.0065 = Error loading xml file: {0}
-ERR.008.005.0066 = Failed loading xml files into Runtime Metadata for VDB {0}
-ERR.008.005.0067 = There are unresolved references. See error log.
-ERR.008.005.0068 = Error inserting objects.
-ERR.008.005.0069 = Error creating VDB: {0}
-ERR.008.005.0070 = The virtual database is not fully created yet.
-ERR.008.005.0071 = Error setting VDB status.
-ERR.008.005.0072 = Error setting VDB: {0} active.
-ERR.008.005.0073 = Error broadcasting VDB changes.
-ERR.008.005.0074 = Virtual Database: {0} can not be deleted because it is not marked for deletion.
-ERR.008.005.0075 = Error deleting VDB.
-ERR.008.005.0076 = Error deleting VDB: {0}
-ERR.008.005.0077 = Error obtaining RT connector binding name.
-ERR.008.005.0078 = Error setting connector binding names.
-ERR.008.005.0079 = Error setting status.
-ERR.008.005.0080 = Error obtaining RT visibility levels.
-ERR.008.005.0081 = Error setting visibility levels.
-ERR.008.005.0082 = Error setting visibility levels updating system models
-ERR.008.005.0083 = Error adding Schemas
-ERR.008.005.0084 = Unable to resolve connection for Schema Insert.
-ERR.008.005.0085 = Error inserting Schema
-ERR.008.005.0086 = Error obtaining all model IDs.
-ERR.008.005.0087 = The VirtualDatabaseID reference may not be null
-ERR.008.005.0088 = The MetadataCache reference may not be null
-ERR.008.005.0089 = The MetadataSupplier reference may not be null
-ERR.008.005.0090 = Incomplete group name "{0}"
-ERR.008.005.0091 = The valid fullname string may not be null
-ERR.008.005.0092 = The test fullname string may not be null
-ERR.008.005.0093 = The ModelID reference may not be null
-ERR.008.005.0094 = The UpdateController reference may not be null
-ERR.008.005.0095 = The MetadataSupplier reference may not be null
-ERR.008.005.0096 = The VirtualDatabaseID reference may not be null
-ERR.008.005.0097 = The BasicModel reference may not be null
-ERR.008.005.0098 = Virtual Database already contains model "{0}"
-ERR.008.005.0099 = Unable to obtain connection to add relational model to VDB {0}
-ERR.008.005.0100 = Error adding relational model to VDB {0}
-ERR.008.005.0101 = The UpdateController reference may not be null
-ERR.008.005.0102 = The VirtualDatabaseID reference may not be null
-ERR.008.005.0103 = The ModelID reference may not be null
-ERR.008.005.0104 = Unable to obtain connection to add relational objects to VDB {0}
-ERR.008.005.0105 = Unable to obtain connection to delete relational objects from VDB
-ERR.008.005.0106 = Error updating the status of {0} for VDB {1}
-ERR.008.005.0107 = Error reading the status of {0} for VDB {1}
-ERR.008.005.0108 = Model {0} in virtual database {1} has a status of "{2}" and cannot be accessed at this time.
-ERR.008.005.0109 = Unable to obtain connection to delete relational objects from VDB {0}
-ERR.008.005.0110 = The model name string may not be null
-ERR.008.005.0111 = The model name string may not be zero-length
-ERR.008.005.0112 = The VirtualDatabaseLoader reference may not be null
-ERR.008.005.0113 = No VirtualDatabaseLoaderProperties returned for model {0}
-ERR.008.005.0114 = The group name string may not be null
-ERR.008.005.0115 = The group name string may not be zero-length
-ERR.008.005.0116 = The VirtualDatabaseMetadata must be an instance of BasicVirtualDatabaseMetadata
-ERR.008.005.0117 = The KeyID reference may not be null
-ERR.008.005.0118 = The List reference may not be null
-ERR.008.005.0119 = A model with the name, "{0}", does not exist for VDB, "{1}"
-ERR.008.005.0120 = Cannot create a ModelID with the name, "{0}". A model by that name already exists for VDB, "{1}"
-ERR.008.005.0121 = Cannot create a GroupID with the name, "{0}". A group by that name already exists for VDB, "{1}"
-ERR.008.005.0122 = The specified name, "{0}", is invalid: {1}
-
-
-# runtime.spi (006)
-ERR.008.006.0001 = Error obtaining connection for {0}
-ERR.008.006.0002 = The connection is not the appropriate type ("{0}")
-ERR.008.006.0003 = JDBC error while processing query: {0}
-ERR.008.006.0004 = Error processing results for query: {0}
-ERR.008.006.0005 = Error getting query plan for procedure using:{0}
-ERR.008.006.0006 = Unexpected Error getting Procedures
-ERR.008.006.0007 = The specified status, "{0}", is not one of the allowable values.
-ERR.008.006.0008 = The virtual database: {0} is already marked for deletion. It can not be set to other status.
-ERR.008.006.0009 = Error inserting models
-ERR.008.006.0010 = Error inserting groups
-ERR.008.006.0011 = Element: {0} does not have data type
-ERR.008.006.0012 = Unable to find a valid DataType with name "{0}"
-ERR.008.006.0013 = Error inserting elements
-ERR.008.006.0014 = Error inserting models
-ERR.008.006.0015 = Error inserting procedures
-ERR.008.006.0016 = Error inserting key elements
-ERR.008.006.0017 = Parameter: {0} does not have data type
-ERR.008.006.0018 = Error inserting parameters
-ERR.008.006.0019 = Error inserting properties
-ERR.008.006.0020 = Runtime type for type: {0} is not defined.
-ERR.008.006.0021 = Error inserting data types
-ERR.008.006.0022 = Error inserting data type elements
-ERR.008.006.0023 = Error inserting database: {0}
-ERR.008.006.0024 = Error deleting model : {0}
-ERR.008.006.0025 = Error deleting group : {0}
-ERR.008.006.0026 = Error deleting properties
-ERR.008.006.0027 = UnsupportedOperation : loadGroups is not supported for JDBCConnector
-ERR.008.006.0028 = Error inserting query plan: {0}
-ERR.008.006.0029 = Error processing document schema: Schema may not be null
-ERR.008.006.0030 = Error processing document schema: IDs may not be null {0} - {1}
-ERR.008.006.0031 = Error inserting schema: {0}
-ERR.008.006.0032 = Current system vdb is not active.
-ERR.008.006.0033 = Error obtaining all required models in order to update system models.
-ERR.008.006.0034 = Can not resolve RuntimeType for
-ERR.008.006.0035 = Error processing query: {0}
-ERR.008.006.0036 = There is no XML Schema in runtime metadata for {0}
-ERR.008.006.0037 = Referenced key {0} is not resolved.
-ERR.008.006.0038 = Error setting state to {0} for virtual database: {1}
-ERR.008.006.0039 = Error updating connector binding names for VDB {0}
-ERR.008.006.0040 = Error setting visibility levels for VDB {0}
-ERR.008.006.0041 = Error updating VDB {0}
-ERR.008.006.0042 = Error updating VDB models for vdb {0}
-ERR.008.006.0043 = Error updating VDB version for VDB {0}
-ERR.008.006.0044 = Error inserting VDB models for vdb {0}
-ERR.008.006.0045 = Error converting String to Date.
-ERR.008.006.0046 = Error parsing multiplicity: {0}
-ERR.008.006.0047 = Can not find dataType with uid {0} for element {1}
-ERR.008.006.0048 = Error creating objects.
-ERR.008.006.0049 = SearchType: {0} is not supported.
-ERR.008.006.0050 = Error obtaining multiplicity: {0}
-ERR.008.006.0051 = DataTypeType: {0} is not supported.
-ERR.008.006.0052 = NullType: {0} is not supported.
-ERR.008.006.0053 = Can not resolve runtime type {0}
-ERR.008.006.0054 = Error creating properties.
-ERR.008.006.0055 = Property value {0} not an instance of Boolean or String
-ERR.008.006.0056 = Unresolved dataType reference: {0}
-ERR.008.006.0057 = Unresolved element reference in key: {0}
-ERR.008.006.0058 = Unresolved foreign key reference in primary key: {0}
-ERR.008.006.0059 = Unresolved query reference in group: {0}
-ERR.008.006.0060 = Unresolved mapping reference in document element: {0}
-ERR.008.006.0061 = Error getting all data types.
-ERR.008.006.0062 = Error getting runtime type for {0}
-ERR.008.006.0063 = Can not get built-in type for {0}
-ERR.008.006.0064 = Error updating the model name for ModelID "{0}" with UID {1}
-ERR.008.006.0065 = Error updating the group path for GroupID "{0}" with UID {1}
-
-# runtime.util (007)
-ERR.008.007.0001 = One or more files are not found.
-ERR.008.007.0002 = Error saving input stream to file for key {0}
-ERR.008.007.0003 = Error saving input stream from file for key {0}
-
-# ================== METADATA SEARCHBASE MESSAGES ==================
-# searchbase (008)
-ERR.008.008.0001 = Searchbase Error processing element : {0}
-ERR.008.008.0002 = Error adding data type model for target {0}
-ERR.008.008.0003 = Searchbase Error establishing sb_publish connection pool
-ERR.008.008.0004 = Unable to get connection, target {0} is invalid and not known to the searchbase.
-
-# searchbase.api (009)
-
-# searchbase.apiimpl (010)
-
-# searchbase.command (011)
-
-# searchbase.exception (012)
-
-# searchbase.jdbc (013)
-
-# searchbase.processor (014)
-
-# searchbase.tool (015)
-
-# searchbase.transform (016)
-
-# searchbase.transform.xml (017)
-
-# searchbase.util (018)
-
-# searchbase.xmi (019)
-# ================== METADATA SERVER MESSAGES ==================
-# server.api (020)
-ERR.008.020.0001 = The entryUUIDs may not be null
-ERR.008.020.0002 = The entryUUID may not be null
-ERR.008.020.0003 = The UUID string may not be zero-length
-ERR.008.020.0004 = The version may not be null
-ERR.008.020.0005 = The getInfoCriteriaType may not be null, see GetInfoCriteria
-ERR.008.020.0006 = The getInfoCriteriaType string may not be zero-length, see GetInfoCriteria
-ERR.008.020.0007 = The searchCriteriaStatement may not be null
-ERR.008.020.0008 = The searchCriteriaStatement string may not be zero-length
-ERR.008.020.0009 = Search type {0} is not supported.
-ERR.008.020.0010 = The criteria may not be null, call getInfo to first obtain a criteria object.
-ERR.008.020.0011 = The version may not be null
-ERR.008.020.0012 = VersionLabel is not supported, must use a VersionRule or VersionName to specify the version.
-ERR.008.020.0013 = The from VersionIdentifier may not be null
-ERR.008.020.0014 = The to VersionIdentifier may not be null
-ERR.008.020.0015 = The from Date may not be null
-ERR.008.020.0016 = The to Date may not be null
-ERR.008.020.0017 = The dtcUUID may not be null
-ERR.008.020.0018 = The dtcUUID string may not be zero-length
-ERR.008.020.0019 = The parentUUID may not be null
-ERR.008.020.0020 = The parentUUID string may not be zero-length
-ERR.008.020.0021 = The userName may not be null
-ERR.008.020.0022 = The userName string may not be zero-length
-ERR.008.020.0023 = The projectUUID may not be null
-ERR.008.020.0024 = The projectUUID string may not be zero-length
-ERR.008.020.0025 = The map of primaryModelUUID and Versions may not be null
-ERR.008.020.0026 = The fileName string may not be null
-ERR.008.020.0027 = The fileName string may not be zero-length
-ERR.008.020.0028 = The creationDate string may not be null
-ERR.008.020.0029 = The content may not be null
-ERR.008.020.0030 = The fileType string may not be null
-ERR.008.020.0031 = The fileType string may not be zero-length
-ERR.008.020.0032 = Cannot name a file a reserved word.
-ERR.008.020.0033 = The lastModifiedDate string may not be null
-ERR.008.020.0034 = The folderName string may not be null
-ERR.008.020.0035 = The folderName string may not be zero-length
-ERR.008.020.0036 = The versionRollbackTo string may not be null
-ERR.008.020.0037 = The versionRollbackTo string may not be zero-length
-ERR.008.020.0038 = The newParentUUID string may not be null
-ERR.008.020.0039 = The newParentUUID string may not be zero-length
-ERR.008.020.0040 = The copy operation is not supported in the Toolkit
-ERR.008.020.0041 = The entry may not be null
-ERR.008.020.0042 = he updatedProperties may not be null
-ERR.008.020.0043 = The label string may not be null
-ERR.008.020.0044 = The label string may not be zero-length
-ERR.008.020.0045 = The UUID version list may not be null
-ERR.008.020.0046 = The resourceNames may not be null
-ERR.008.020.0047 = The first EntryInfo reference may not be null
-ERR.008.020.0048 = The second EntryInfo reference may not be null
-ERR.008.020.0049 = The name of the first EntryInfo reference may not be null
-ERR.008.020.0050 = The name of the second EntryInfo reference may not be null
-ERR.008.020.0051 = The entry UUID String reference may not be null.
-ERR.008.020.0052 = The entry UUID String reference may not be zero-length.
-ERR.008.020.0053 = The from VersionIdentifier may not be null
-ERR.008.020.0054 = The to VersionIdentifier may not be null
-ERR.008.020.0055 = The from Date may not be null
-ERR.008.020.0056 = The to Date may not be null
-ERR.008.020.0057 = Connection parameters cannot be null
-ERR.008.020.0058 = Method not implemented
-ERR.008.020.0059 = The label String reference may not be null.
-ERR.008.020.0060 = The label String reference may not be zero-length.
-ERR.008.020.0061 = The name String reference may not be null.
-ERR.008.020.0062 = The name String reference may not be zero-length.
-ERR.008.020.0063 = The rule String reference may not be null.
-ERR.008.020.0064 = The rule String reference may not be zero-length.
-
-# server.api.dtc (021)
-ERR.008.021.0001 = The root Document reference may not be null
-ERR.008.021.0002 = The InputStream reference may not be null
-ERR.008.021.0003 = Error loading the XMI document from the specified stream
-ERR.008.021.0004 = The dtcUUID may not be null
-ERR.008.021.0005 = The dtcUUID may not be zero length
-ERR.008.021.0006 = The dtcName may not be null
-ERR.008.021.0007 = The dtcName may not be zero length
-ERR.008.021.0008 = The projectUUID may not be null
-ERR.008.021.0009 = The projectUUID may not be zero length
-ERR.008.021.0010 = The entryInfos may not be null
-
-# server.api.event (022)
-
-# server.api.exception (023)
-ERR.008.023.0001 = Entry "{0}" is currently locked by user "{1}".
-ERR.008.023.0002 = Entry "{0}" is not currently locked.
-ERR.008.023.0003 = No version was found in the directory for entry "{0}".
-ERR.008.023.0004 = Entry "{0}" is currently locked by the current user.
-ERR.008.023.0005 = Folder copy is not supported.
-ERR.008.023.0006 = Need to recover entry "{0}" before it can be checked out.
-ERR.008.023.0007 = Entry "{0}" already exist with uuid "{1}".
-ERR.008.023.0008 = Entry does not exist for UUID "{0}" .
-ERR.008.023.0009 = A RuntimeMetadata Configuration In Progress does not exist for UUID "{0}" .
-ERR.008.023.0010 = There already exist a file or folder in this location with the name "{0}".
-ERR.008.023.0011 = The model "{0}" cannot be deleted, it is involved in making deployable configuration "{1}".
-ERR.008.023.0012 = Label "{0}" already exist for entry "{1}".
-ERR.008.023.0013 = The user "{0}" is not authorized to perform "{1}" on entry "{2}".
-ERR.008.023.0014 = The license prevents additional physical models from being added to the repository. No entry or entries added.
-
-# server.apiimpl (024)
-ERR.008.024.0001 = The name may not be null.
-ERR.008.024.0002 = The name may not be zero-length.
-ERR.008.024.0003 = The UUID may not be null.
-ERR.008.024.0004 = The UUID may not be zero-length.
-ERR.008.024.0005 = The file type may not be null.
-ERR.008.024.0006 = The file type may not be zero-length.
-ERR.008.024.0007 = The version may not be null.
-ERR.008.024.0008 = The version may not be zero-length.
-ERR.008.024.0009 = Context properties were not found in the sessions properties for initializaing MetadataServerAPI.
-ERR.008.024.0010 = {0} session exception
-ERR.008.024.0011 = {0} remote exception
-ERR.008.024.0012 = {0} naming exception
-ERR.008.024.0013 = {0} create exception
-ERR.008.024.0014 = Error in MetadataServer add message bus listener for class event {0}
-ERR.008.024.0015 = Illegal Argument in MetadataServerConnectionImpl add Event Listener: listener cannot be null
-ERR.008.024.0016 = The MetadataServerConnection is closed and may not be used.
-ERR.008.024.0017 = Invalid session when trying to submit request.
-ERR.008.024.0018 = Unable to complete directory request.
-ERR.008.024.0019 = Invalid Component when trying to submit request.
-ERR.008.024.0020 = Invalid session when trying to submit request.
-ERR.008.024.0021 = Exception occured when trying to submit request.
-ERR.008.024.0022 = Invalid Session
-ERR.008.024.0023 = The EventBroker reference may not be null
-ERR.008.024.0024 = The listener reference may not be null
-ERR.008.024.0025 = Unable to find EventObjectListener for {0}
-ERR.008.024.0026 = EntryAddCriteria may not be null
-ERR.008.024.0027 = The number of spaces to indent must be positive
-ERR.008.024.0028 = The request ID may not be null
-ERR.008.024.0029 = The session token may not be null
-ERR.008.024.0030 = The session token may not be zero-length
-ERR.008.024.0031 = This builder already has an unclosed document
-ERR.008.024.0032 = The username may not be null
-ERR.008.024.0033 = The username may not be zero-length
-ERR.008.024.0034 = Criteria object of type {0} is not supported.
-ERR.008.024.0035 = The criteria may not be null
-ERR.008.024.0036 = Unable to create inputstream for the file {0}
-ERR.008.024.0037 = Unable to load inputstream into byte array for entry {0}
-ERR.008.024.0038 = The history criteria may not be null
-ERR.008.024.0039 = The entry UUID list may not be null
-ERR.008.024.0040 = The UUID string may not be null
-ERR.008.024.0041 = The UUID string may not be zero-length
-ERR.008.024.0042 = The version string may not be null
-ERR.008.024.0043 = The version string may not be zero-length
-ERR.008.024.0044 = The content List may not be null
-ERR.008.024.0045 = The content InputStream may not be null
-ERR.008.024.0046 = The fileName string may not be null
-ERR.008.024.0047 = The fileName string may not be zero-length
-ERR.008.024.0048 = The fileType string may not be null
-ERR.008.024.0049 = The fileType string may not be zero-length
-ERR.008.024.0050 = RequestBuilder Error: Cannot use addFile method for the file type {0}
-ERR.008.024.0051 = Invalid criteria, no method was defined for this criteria.
-ERR.008.024.0052 = The Action string may not be null
-ERR.008.024.0053 = The Target string may not be null
-ERR.008.024.0054 = The new location string may not be null
-ERR.008.024.0055 = The folderName string may not be null
-ERR.008.024.0056 = The folderName string may not be zero-length
-ERR.008.024.0057 = The entry may not be null
-ERR.008.024.0058 = The new entry UUID string may not be null
-ERR.008.024.0059 = The new entry UUID string may not be zero-length
-ERR.008.024.0060 = The new parent UUID string may not be null
-ERR.008.024.0061 = The new parent UUID string may not be zero-length
-ERR.008.024.0062 = The version identifier may not be null
-ERR.008.024.0063 = Unable to convert XML to string for the request message.
-ERR.008.024.0064 = Unable to parse the response message.
-ERR.008.024.0065 = Unable to convert the response content InputStream into a byte array.
-ERR.008.024.0066 = Object type {0} is not supported for content.
-
-# server.apiimpl.dtc (025)
-ERR.008.025.0001 = The ObjectDefinition reference may not be null
-ERR.008.025.0002 = The DirectoryServiceProxy may not be null
-ERR.008.025.0003 = The DTCEditorImpl reference may not be null
-ERR.008.025.0004 = The TreeNode reference may not be null
-ERR.008.025.0005 = The referenced object is not a BasicTreeNode
-ERR.008.025.0006 = The PropertiedObject reference may not be null
-ERR.008.025.0007 = The referenced object is not a TreeNode
-ERR.008.025.0008 = The referenced object is not of type DTCDefinition
-ERR.008.025.0009 = The referenced object is not of type FolderDefinition
-
-# server.directory.api.exception (026)
-# server.directory.api.service (027)
-# server.directory.dtc (028)
-ERR.008.028.0001 = The dtcUUID may not be null
-ERR.008.028.0002 = The dtcUUID may not be zero length
-ERR.008.028.0003 = The dtcName may not be null
-ERR.008.028.0004 = The dtcName may not be zero length
-ERR.008.028.0005 = The projectUUID may not be null
-ERR.008.028.0006 = The projectUUID may not be zero length
-ERR.008.028.0007 = The entryInfos may not be null
-ERR.008.028.0008 = DTC In Progress has not completed, the content that manages the list of models has not been saved.
-ERR.008.028.0009 = No project file found in the repository for UUID: {0} version: {1}
-ERR.008.028.0010 = Project Model Content Error, project model {0} in the repository does not contain any content to determine model imports.
-ERR.008.028.0011 = Project Model Import Error, project model {0} in the repository does not contain any model imports.
-ERR.008.028.0012 = Connection is closed, cannot validate DTC {0}
-ERR.008.028.0013 = Unable to complete DTC Validation
-ERR.008.028.0014 = Unable to update the DTC from "Validating" to "InValid" status.
-ERR.008.028.0015 = Unable to notify of DTC validation
-ERR.008.028.0016 = Configuration Validation Error, unable to obtain models for validation.
-ERR.008.028.0017 = Configuration Validation Error, no models were found in the repository based on the request.
-ERR.008.028.0018 = Configuration Validation Error, unable to obtain model UUID {0} for validation.
-ERR.008.028.0019 = Configuration Validation Error, model {0} in the repository does not contain any content.
-ERR.008.028.0020 = Error obtaining model dependencies for validation.
-ERR.008.028.0021 = Configuration Validation Error, unable to load XMIDocument models for validation.
-ERR.008.028.0022 = Error obtaining dependent model for validation.
-ERR.008.028.0023 = Configuration Validation Error, model {0} has been included more than once in the validation. Check the internal model names for duplicates.
-ERR.008.028.0024 = Configuration Validation Error, problem obtaining file for uuid {0}.
-ERR.008.028.0025 = Configuration Validation Error, problem obtaining file {0}, the content is empty.
-ERR.008.028.0026 = Configuration Validation Error, unable to obtain model from repository for uuid {0}
-ERR.008.028.0027 = The MessageList reference may not be null.
-ERR.008.028.0028 = Exception during validation: {0}
-ERR.008.028.0029 = Aborted creation of Runtime Metadata Configuration due to validation errors.
-ERR.008.028.0030 = Configuration Validation Error, unable to create the Runtime Metadata Configuration Document.
-ERR.008.028.0031 = Validation Error Message: {0} {1}
-ERR.008.028.0032 = Cannot validate a null object.
-ERR.008.028.0033 = Error when attempting to perform validation process on object: {0}
-ERR.008.028.0034 = Unable to create the object ID for entry " + name + " using uuid
-ERR.008.028.0035 = Method not implemented
-
-# server.directory.service (029)
-ERR.008.029.0001 = Error initializing service for {0}
-ERR.008.029.0002 = Resource property "{0}" for Resource Name "{1}" is null.
-ERR.008.029.0003 = This DirectoryService is closed and cannot be used any longer
-ERR.008.029.0004 = The message reference may not be null
-ERR.008.029.0005 = Error submitting message {0}
-ERR.008.029.0006 = Error adding listener to message bus.
-ERR.008.029.0007 = Unable to get proxy for Authorization service.
-ERR.008.029.0008 = Invalid message request, {0} is not a valid method request.
-ERR.008.029.0009 = Error executing transaction {0}
-ERR.008.029.0010 = Error rolling back transaction for request {0}
-ERR.008.029.0011 = Invalid object passed for notify changes : Class {0} is invalid.
-ERR.008.029.0012 = Sending "CREATE" event for target: {0}
-ERR.008.029.0013 = Sending "DELETE" event for target: {0}
-ERR.008.029.0014 = Sending "CHANGE" event for target: {0}
-ERR.008.029.0015 = Error publishing changes.
-ERR.008.029.0016 = Unable to get user authorization for resources. The user principal "{0}" is not valid.
-ERR.008.029.0017 = Error getting user authorization for resources.
-ERR.008.029.0018 = Unable to filter directory response for {0} access. The user session "{1}" is not valid.
-ERR.008.029.0019 = Error filtering directory response for {0} access.
-ERR.008.029.0020 = Unable to check directory access. The user session "{0}" is not valid.
-ERR.008.029.0021 = Error checking directory access.
-ERR.008.029.0022 = getEntryInfo got fault: {0}
-
-# server.directory.spi (030)
-ERR.008.030.0001 = Unable to parse the requested document.
-ERR.008.030.0002 = The number of request in a request message body must be one, the number in the current body is {0}
-ERR.008.030.0003 = Invalid request node {0}
-ERR.008.030.0004 = Error building request message.
-ERR.008.030.0005 = Error building response message.
-
-# server.directory.spi.jdbc (031)
-ERR.008.031.0001 = The connection is not the appropriate type ("{0}")
-ERR.008.031.0002 = Installation Error - No Root Entry exist in the Directory
-ERR.008.031.0003 = No entry is found at location {0} to filter from.
-ERR.008.031.0004 = Request DTC in Progress {0} does not exist in order to delete.
-ERR.008.031.0005 = Request for DTC in Progress does not contain either a DTC uuid or Parent UUID
-ERR.008.031.0006 = Error inserting lock for entry {0} and version {1}
-ERR.008.031.0007 = No parent entry was found for the specified UUID {0}
-ERR.008.031.0008 = Parent location was not specified.
-ERR.008.031.0009 = UUID for the destination entry was not specified.
-ERR.008.031.0010 = Unable to add Dependency for entry {1}
-ERR.008.031.0011 = Parent entry may not be null when adding dependencies
-ERR.008.031.0012 = Unable to add dependencies. No child entry found for UUID {0} and version {1}
-ERR.008.031.0013 = Error reading basic entry information.
-ERR.008.031.0014 = No file content for UUID {0} version {1}
-ERR.008.031.0015 = Failed to execute the query "{0}"
-ERR.008.031.0016 = Unable to execute the query ("{0}") and/or process the results
-ERR.008.031.0017 = No Entry Found for UUID: {0}
-ERR.008.031.0018 = No Entry Found for UUID: {0} when checking isDeleted flag.
-ERR.008.031.0019 = Installation Problem, no type found for: {0} using SQL: {1}
-ERR.008.031.0020 = Unable to close the statement for query {0}
-ERR.008.031.0021 = Unable to insert new entry {0} for user {1}
-ERR.008.031.0022 = Unable to insert directory lock on UUID {0} for user {1}
-ERR.008.031.0023 = Unable to insert new version for entry {0} for user {1}
-ERR.008.031.0024 = Unable to insert label UUID {0} for user {1}
-ERR.008.031.0025 = Error inserting file data.
-ERR.008.031.0026 = Failed to execute the query {0}
-ERR.008.031.0027 = Programming Error: Inserting file data for platform {0} is not supported.
-ERR.008.031.0028 = No file found for version id {0}
-ERR.008.031.0029 = Error inserting file into directory using SQL statement: {0}
-ERR.008.031.0030 = JDBC error while inserting file data: {0}
-ERR.008.031.0031 = Unable to insert file dependencies for {0}
-ERR.008.031.0032 = Unable to insert orphaned dependencies for parent uuid {0} and child {1}
-ERR.008.031.0033 = JDBC error while inserting file data:
-ERR.008.031.0034 = Unable to remove lock for entry {0} for user {1}
-ERR.008.031.0035 = Unable to remove entry {0}
-ERR.008.031.0036 = Unable to remove versions for entry ID {0}
-ERR.008.031.0037 = Error deleting versions for entryID {0}
-ERR.008.031.0038 = Error deleting label {0} for UUID {1}
-ERR.008.031.0039 = Error deleting labels for UUID {0}
-ERR.008.031.0040 = Error deleting file for {0}
-ERR.008.031.0041 = Unable to remove DTC in progress {0}
-ERR.008.031.0042 = Unable to remove Orphaned Dependencies for uuid: {0}
-ERR.008.031.0043 = Unable to move Orphaned Dependencies for uuid: {0}
-ERR.008.031.0044 = Unable to set state for DTC in progress {0}
-ERR.008.031.0045 = No file found for uuid {0}
-ERR.008.031.0046 = Unable to update DTC in progress {0}
-ERR.008.031.0047 = Error rollback for {0}
-ERR.008.031.0048 = Error deleting entry {0}
-
-# server.resource (032)
-ERR.008.032.0001 = The parent of uuid {0} had fault: {1}
-ERR.008.032.0002 = Error submitting request
-ERR.008.032.0003 = Error creating DirectoryServiceProxy, {0}
-ERR.008.032.0004 = Failed to create MetaBase AuthorizationPermission for uuid: {0} at path: {1}
-ERR.008.032.0005 = Failed to delete MetaBase AuthorizationPermission for uuid: {0} at path: {1}
-ERR.008.032.0006 = Unable to parse the request message.
-ERR.008.032.0007 = The number of request in a request message body must be one, the number in the current body is {0}
-ERR.008.032.0008 = Invalid request node {0}
-ERR.008.032.0009 = Error building request message.
-ERR.008.032.0010 = Error building response message.
-ERR.008.032.0011 = Invalid message request, {0} is not a valid method request.
-ERR.008.032.0012 = Error obtaining resource information.
-
-# server.searchbase.api.service (033)
-
-# server.searchbase.service (034)
-ERR.008.034.0001 = Error initializing service for {0}
-ERR.008.034.0002 = The message reference may not be null
-ERR.008.034.0003 = Error submitting message {0}
-ERR.008.034.0004 = SearchbaseService error parsing for Searchbase commands.
-ERR.008.034.0005 = Error building target response message in Searchbase Service.
-
-# server.serverapi (035)
-ERR.008.035.0001 = invalid status: {0}
-
-# server.serverapi.beans (036)
-ERR.008.036.0001 = Error creating MetadataServerAPIBean, Exception: {0}
-ERR.008.036.0002 = License violation: Max number of {0} connections exceded, license only allows {1} connections.
-ERR.008.036.0003 = Error validating licenses for {0}
-ERR.008.036.0004 = Could not connect to a SessionService.
-ERR.008.036.0005 = SessionService error: Could not connectToProduct for {0}
-ERR.008.036.0006 = Metadata Server API Bean error parsing for Searchbase commands
-ERR.008.036.0007 = Can not find a handler to hanle the request.
-ERR.008.036.0008 = DirectoryServiceProxy couldn''t be instantiated.
-ERR.008.036.0009 = SearchbaseServiceProxy couldn''t be instantiated.
-ERR.008.036.0010 = Session "{0}" is not valid
-ERR.008.036.0011 = Unable to find a valid Session Service
-ERR.008.036.0012 = Unknown Session Service exception.
-
-# server.serverapi.beans.metadataserverapi (037)
-# server.serverapi.exception (038)
-# server.service (039)
-# server.util (040)
-ERR.008.040.0001 = The project name String may not be null.
-ERR.008.040.0002 = The project version String may not be null.
-ERR.008.040.0003 = The username String may not be null.
-ERR.008.040.0004 = The dtcName String may not be null.
-ERR.008.040.0005 = Object type {0} not supported for object conversion.
-ERR.008.040.0006 = File {0} is not found
-
-# ================== METADATA TRANSFORM MESSAGES ==================
-# transform (041)
-ERR.008.041.0007 = There was an error creating a Templates object from the XSLT source: {0}
-ERR.008.041.0008 = Unable to create an XSLT TransformerFactory instance.
-
-# ==========================================
-# LOG Messages for the Metadata Package (008)
-# ==========================================
-#
-# example: MSG.008.001.0001=Test Message for Metadata Package
-
-# ================== GENERIC METADATA MESSAGES ==================
-# generic (000)
-MSG.008.000.0001 = Properties successfully loaded.
-
-# ================== METADATA RUNTIME MESSAGES ==================
-# runtime (001)
-MSG.008.001.0001 = Transaction Mgr successfully initialized.
-MSG.008.001.0002 = Messagebus successfully initialized.
-MSG.008.001.0003 = Update controller successfully initialized.
-
-# runtime.api (002)
-
-# runtime.event (003)
-
-# runtime.exception (004)
-
-# runtime.model (005)
-MSG.008.005.0001 = Cache successfully initialized.
-MSG.008.005.0002 = creating vdb: {0}
-MSG.008.005.0003 = created vdb: {0}
-MSG.008.005.0004 = Can not find schema "{0}"
-MSG.008.005.0005 = WrappedCache successfully initialized.
-
-# runtime.spi (006)
-MSG.008.006.0001 = Deleted DaLogManager.logTracetaType with DBID {0}
-MSG.008.006.0002 = There is only one system virtual database, or the other one is incomplete. Nothing is done.
-MSG.008.006.0003 = Unable to resolve parent datatype for {0}
-MSG.008.006.0004 = Getting VDB: {0} with version: {1} and uid: {2}
-MSG.008.006.0005 = Got VDB ID: {0} with version: {1} and uid: {2}
-MSG.008.006.0006 = No VDB ID could be found for {0}
-
-# runtime.util (007)
-
-# ================== METADATA SEARCHBASE MESSAGES ==================
-# searchbase (008)
-MSG.008.008.0001 = Unable to add Command due to missing target ({0}) {1}
-MSG.008.008.0002 = Adding Connection Pool for target : {0}
-MSG.008.008.0003 = SearchbaseManager : Begin Lazy Init for Public SB Targets
-MSG.008.008.0004 = Config External SearchBase {0}
-MSG.008.008.0005 = Config External SearchBase {0} is a valid target and already defined
-MSG.008.008.0006 = SearchbaseManager created connection pool for target : {0}
-MSG.008.008.0007 = SearchbaseManager getConnection for target {0}
-MSG.008.008.0008 = SearchbaseManager : Invalid Connection Property. NULL value for {0}
-
-# searchbase.api (009)
-
-# searchbase.apiimpl (010)
-
-# searchbase.command (011)
-
-# searchbase.exception (012)
-
-# searchbase.jdbc (013)
-
-# searchbase.processor (014)
-
-# searchbase.tool (015)
-
-# searchbase.transform (016)
-
-# searchbase.transform.xml (017)
-
-# searchbase.util (018)
-
-# searchbase.xmi (019)
-
-# ================== METADATA SERVER MESSAGES ==================
-# server.api (020)
-# server.api.dtc (021)
-# server.api.event (022)
-# server.api.exception (023)
-# server.apiimpl (024)
-MSG.008.024.0001 = Searchbase found no public targets.
-MSG.008.024.0002 = GetResponses from response message: \n {0}
-MSG.008.024.0003 = GetResponse from response message: \n {0}
-
-# server.apiimpl.dtc (025)
-# server.directory.api.exception (026)
-# server.directory.api.service (027)
-MSG.008.027.0001 = RMI Error in DirectoryServiceProxy.
-
-# server.directory.dtc (028)
-MSG.008.028.0001 = Inserting DTC In Progress for UUID {0} and name {1}
-MSG.008.028.0002 = DTC Validation Project {0} uuid: {1}
-MSG.008.028.0003 = Starting DTC Validation
-MSG.008.028.0004 = ***** Validation succeeded
-MSG.008.028.0005 = ***** Validation failed
-MSG.008.028.0006 = Model Count to be Validated
-MSG.008.028.0007 = \tNumber of primary models: {0}
-MSG.008.028.0008 = \tNumber of secondary models: {0}
-MSG.008.028.0009 = \t --------
-MSG.008.028.0010 = \tTotal Number of Models: {0}\n
-MSG.008.028.0011 = Models are valid and will be auto deployed.
-MSG.008.028.0012 = Models are VALID, but WILL NOT be auto deployed.
-MSG.008.028.0013 = Models are INVALID and will not be deployed.
-MSG.008.028.0014 = Found {0} models requested in DTC for validation.
-MSG.008.028.0015 = DTC Validation found {0} models to make up the DTC.
-MSG.008.028.0016 = Completed Validating DTC and is DTC valid:
-MSG.008.028.0017 = Exception during validation
-MSG.008.028.0018 = Validating model {0}
-
-# server.directory.service (029)
-# MSG.008.029.0001 = Initialized directory service for {0}
-# MSG.008.029.0002 = Resource property "{0}" for Resource Name "{1}" is null.
-# MSG.008.029.0003 = {0} : closing
-# MSG.008.029.0004 = {0} : closed
-# MSG.008.029.0005 = Submitting message request {0}
-# MSG.008.029.0006 = Unable to add physical model(s) because maximum in license would be exceeded
-# MSG.008.029.0007 = Filtering {0} access by {1} to: {2}
-# MSG.008.029.0008 = Allowed {0} access by {1} to entries: {2}
-# MSG.008.029.0009 = Dissalowed {0} access by {1} to entries: {2}
-# MSG.008.029.0010 = UUID: {0} Path: {1} Requested Actions: {2}
-# MSG.008.029.0011 = assembleFullPath for entryInfo: {0}
-# MSG.008.029.0012 = assembleFullPath for: {0} : {1}
-# MSG.008.029.0013 = checkAuthAdd: Searching: {0} - {1}
-# MSG.008.029.0014 = checkAuthAdd: FOUND: {0} - {1}
-
-
-# server.resource (032)
-MSG.008.032.0001 = Unable to initialize DirectoryResourceResolverEnvironment: Couldn''t get proxy for Directory service. Will attempt again on demand.
-MSG.008.032.0002 = Error registering MetaBaseResourceResolver for Directory service events. Will attempt again on demand.
-MSG.008.032.0003 = Unable to get the children of "{0}" from Directory service: Couldn''t get proxy. Will attempt again on demand.
-MSG.008.032.0004 = Unable to get the children of <root> from Directory service: Couldn''t get proxy. Will attempt again on demand.
-MSG.008.032.0005 = Unable to get the parent info for "{0}" from Directory service: Couldn''t submit request. Will attempt again on demand.
-MSG.008.032.0006 = Unable to get the parent info for <root> from Directory service: Couldn''t submit request. Will attempt again on demand.
-MSG.008.032.0007 = Got back null for parent of uuid: {0}
-MSG.008.032.0008 = Got back same uuid: {0} for parent of uuid: {1}
-MSG.008.032.0009 = Unable to get the children info for "{0}" from Directory service: Couldn''t submit request. Will attempt again on demand.
-MSG.008.032.0010 = Unable to get the children info for <root> from Directory service: Couldn''t submit request. Will attempt again on demand.
-MSG.008.032.0011 = Unable to get the path for "{0}" from Directory service: Couldn''t get proxy. Will attempt again on demand.
-MSG.008.032.0012 = Unable to get the path for <root> from Directory service: Couldn''t get proxy. Will attempt again on demand.
-
-
-UpdateController.VDB_File_already_exist_in_extension_modules_25=VDB File {0} already exist in extension modules
-UpdateController.VDB_File_does_not_exist_in_extension_modules_1=VDB File {0} does not exist in extension modules
-
-# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-# Note: All new messages should have been looked up before being logged! DON'T use I18nLogManager!
-# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-VDBDefinition.Model_is_at_a_nondeployable_severity_state=Model {0} is at a nondeployable severity state of {1}
-VDBDefinition.Problem_closing_context_editor=Problem closing VDB context editor when processing vdb {0}
-
-MetadataCache.Model_is_at_a_nondeployable_severity_state=Model {0} is at a nondeployable severity state of {1}
-MetadataCache.VDB_is_at_a_nondeployable_severity_state=VDB {0} is at a nondeployable severity state of {1}
-
-RuntimeMetadataCatalog.Error_adding_listener=Unable to add listener for runtimemetadata events
-RuntimeMetadataCatalog.No_connector_binding_found=Connector Binding with routing ID {0} was not found in the configuration.
-RuntimeMetadataCatalog.System_cache_initialized=System vdb cache is initialized.
-RuntimeMetadataCatalog.VDB_cache_initialized=VDB cache is initialized for {0}.
-
-VDBDefXMLHelper.Unexpected_header_element=The element {0} is not the header element.
-
-
-VDBDefnFactory.VDBDefn_file_doesnt_exist= VDBDefn file {0} does not exist.
-VDBDefnFactory.VDBDefn_file_not_readable=VDBDefn file {0} can not be read.
-VDBDefnFactory.Unable_to_read_file=Unable to read the Document from file {0} inputStream.
-VDBDefnFactory.VDB_version_not_found=VDB: {0}, version: {1} was not found.
-VDBDefnFactory.Load_vdb_models=Loading Models for VDB {0}
-VDBDefnFactory.No_connector_binding_found=Error Exporting: Connector binding {0} not found.
-VDBDefnFactory.Unable_to_defn_file=Unable to read the VDB Definition file.
-VDBDefnFactory.Model_not_found=The model ''{0}'' was not found in the selected VDB. You must use ''New VDB Version...'' to interactively deploy a new version.
-
-VDBDeleteUtility.1=VDB {0} has been deleted.
-VDBDeleteUtility.2=Authorization polices have been deleted for VDB name= {0} and version= {1}.
-
-
-VDBDefnImportExport.Invalid_properties=Properties must not be null.
-VDBDefnImportExport.Invalid_property={0} property must be specified to export a VDB.
-
-VDBDefnImportExport.0=The # of VMs are {0} and they are: {1}
-VDBDefnImportExport.1=No VMs specified for binding deployment
-VDBDefnImportExport.2=Error: VDB {0} was imported, but unable to migrate entitlements due to no MetaMatrix server is running.
-VDBDefnImportExport.Exporting_vdb_version=Exporting VDB {0} Version {1}
-VDBDefnImportExport.Exporting_vdb=Exporting VDB {0} Version Not Specified
-VDBDefnImportExport.3= Error migrating entitlements.
-
-VDBCreation.0=VM {0} is not deployed and will not have the connector deployed to it.
-VDBCreation.2=Deploy existing binding {0} to VM {1} for PSC {2}
-VDBCreation.3=Deploy created binding {0} to VM {1} for PSC {2}
-VDBCreation.4=No VM deployed and therefore no bindngs can be deployed
-VDBCreation.5=Deploying binding {0} to VM {1} in list
-VDBCreation.7=ConnectorBinding {0} will be updated.
-VDBCreation.11=Creating PSC {0} to deploy binding {1}
-VDBDefnImport.Failed_license_check=Failed to add source. You have reached the limit of sources per VDB defined in your MetaMatrix license. Number of sources in VDB: {0}.
-
-VDBCreation.Invalid_VDB_name=VDB Name must be specified.
-VDBCreation.Does_connectorbinding_exist=Does ConnectorBinding ''{0}'' exist?
-VDBCreation.Connectorbinding_exist=ConnectorBinding ''{0}'' already exist.
-VDBCreation.Connectorbinding_will_be_added=ConnectorBinding ''{0}'' will be added.
-VDBCreation.Invalid_VDB_model=The VDBModel definition must not be null.
-VDBCreation.Invalid_VDB_defintion=The VDB definition must not be null.
-VDBCreation.No_name_defined=No {0} is defined in properties.
-VDBCreation.No_model_found_in_VDB=Model {0} NOT found in the VDB inputstream.
-VDBCreation.Error_importing_vdbfile= Error importing vdb file {0}
-VDBCreation.Error_deploying_binding=Error deploying connectorbinding {0}, it was not deployed after deploying the psc {1}
-VDBCreation.Connectorbinding_created=ConnectorBinding ''{0}'' was created.
-VDBCreation.Warning_binding_does_not_exist=<** Warning **> ConnectorBinding {0} does not exist in the configuration and may not have been created.
-VDBCreation.No_type_passed_and_bindingtype_not_found=There was no connector type passed for binding {0} and the referenced type {1} was not found.
-
-RuntimeMetadataAdminAPIImpl.Can_t_delete_VDB_in_state_{0}=Can''t delete a VDB that''s in state:
-RuntimeMetadataAdminAPIImpl.Unable_to_set_connector_bindings.=Unable to set connector bindings.
-RuntimeMetadataAdminAPIImpl.Can__t_set_VDB_state_from_{0}_to_{1}=Can''t set VDB state from: {0} to: {1}
-RuntimeMetadataAdminAPIImpl.The_resource_for_this_permission_does_not_exist_in_the_target_VDB.=The resource for this permission does not exist in the target VDB.
-RuntimeMetadataAdminAPIImpl.Migrated=Migrated
-RuntimeMetadataAdminAPIImpl.VDB_null=VDB may not be null.
-RuntimeMetadataAdminAPIImpl.This_resource_exists_in_the_target_VDB_but_not_in_the_source_VDB.=This resource exists in the target VDB but not in the source VDB.
-RuntimeMetadataAdminAPIImpl.Error_getting_VDBDefn_for_{0}=Error getting VDBDefn for {0}
-RuntimeMetadataAdminAPIImpl.materializationUserName_null=materializationUserName may not be null or empty.
-RuntimeMetadataAdminAPIImpl.VDB_has_no_materialziation=Unable to create materialization scripts. VDB has no materialization model.
-RuntimeMetadataAdminAPIImpl.materializationUserPwd_null=materializationUserPwd may not be null or empty.
-RuntimeMetadataAdminAPIImpl.Expected_integer_for_port {0}=Expected integer for port in serverVMs argument, got {0}.
-RuntimeMetadataAdminAPIImpl.metamatrixUserName_null=metamatrixUserName may not be null or empty.
-RuntimeMetadataAdminAPIImpl.DirectoryService_is_not_available=DirectoryService is not available, unable to ping.
-RuntimeMetadataAdminAPIImpl.Failed_migration=Failed
-RuntimeMetadataAdminAPIImpl.Succeeded_migration=Succeeded
-RuntimeMetadataAdminAPIImpl.metamatrixPwd_null=metamatrixPwd may not be null or empty.
-RuntimeMetadataAdminAPIImpl.Connector_has_no_URL=Unable to create materializatin scripts. Connector has no URL property.
-RuntimeMetadataAdminAPIImpl.MetaMatrix_host_null=The MetaMatrix host name may not be null.
-RuntimeMetadataAdminAPIImpl.Unable_to_encrypt_pwd=Unable to encrypt connection property passwords for VDB {0}
-RuntimeMetadataAdminAPIImpl.Migrated_entitlement_policy_with_no_permissions=Migrated entitlement policy with no permissions on any resources.
-RuntimeMetadataAdminAPIImpl.Error_creating_DirectoryServiceProxy:_{0}=Failed to create Directory Service for Session id =\"{0}\"
-RuntimeMetadataAdminAPIImpl.Unable_to_determine_ssl_mode=Error trying to determine ssl mode for server.
-
-# runtime metadata admin helper
-ERR.018.001.0003 = Cannot get VDB Definition from MetadataDirectory.
-ERR.018.001.0004 = Error retrieving policies for Realm <{0}>: {1}.
-ERR.018.001.0005 = Error getting permission iterator from sourcePolicy.
-ERR.018.001.0006 = Error migrating entitlements.
-ERR.018.001.0008 = Error importing VDB Definition {0}.
-ERR.018.001.0010 = Error obtaining all VDB Definitions to build directory tree.
-ERR.018.001.0013 = Error submitting request.
-ERR.018.001.0051 = Cannot get VDB metadata for VDB ID <{0}>
-ERR.018.001.0052 = Cannot get all data node paths for VDB ID <{0}>
-ERR.018.001.0053 = Cannot get Models for VDB ID <{0}>
-ERR.018.001.0054 = Cannot get VDB ID for VDB name <{0}> and version <{1}>
-ERR.018.001.0055 = An error occured in the Authorization service.
-ERR.018.001.0063 = Unable to convert uuid string to object: <{0}>
-
-TransformationMetadata.Unknown_support_constant___12=Unknown support constant:
-TransformationMetadata.error_intialize_selector=Error trying to initialize the index selector.
-TransformationMetadata.Error_trying_to_obtain_index_file_using_IndexSelector_1=Error trying to obtain index file using IndexSelector {0}
-TransformationMetadata.Model_name_ambiguous,more_than_one_model_exist_with_the_name__2=Model name ambiguous, more than one model exists with the name
-TransformationMetadata.The_metadataID_passed_does_not_match_a_index_record._1=The metadataID passed does not match an index record
-TransformationMetadata.Expected_id_of_the_type_key_record_as_the_argument_2=Expected ID of the type key record as the argument
-TransformationMetadata.Expected_id_of_the_type_accesspattern_record_as_the_argument_3=Expected ID of the type accesspattern record as the argument
-TransformationMetadata.No_known_index_file_type_associated_with_the_recordType_1=No known index file type associated with the recordType
-InputSetUmlAspect.Invalid_show_mask_for_getSignature=Invalid show mask for getSignature
-InputSetUmlAspect.Signature_set=Signature set to
-InputParameterUmlAspect.Invalid_show_mask_for_getSignature=Invalid show mask for getSignature
-InputParameterUmlAspect.Signature_set=Signature set to
-MappingClassUmlAspect.Invalid_show_mask_for_getSignature=Invalid show mask for getSignature
-MappingClassUmlAspect.Signature_set=Signature set to
-MappingClassColumnUmlAspect.Invalid_show_mask_for_getSignature=Invalid show mask for getSignature
-MappingClassTransformationRule.Non-Query_NonUnion_transformation=The transformation defining a mapping class ''{0}'' can only be of type QUERY, UNION, INTERSECT or EXCEPT
-MappingClassTransformationRule.No_INPUT_Parameters_In_Criteria=Query defining the mapping class {0} does not use INPUT parameters in its criteria.
-
-MappingClassTransformationRule.Mapping_Class_Is_Null_For_{0}_0=Recursion root mapping class not found for {0} class
-MappingClassTransformationRule.Mismatch_Number_Of_Column_{0}_AND_{1}_1=Mismatch number of columns between mapping class {0} and {1}
-MappingClassTransformationRule.Mismatch_Number_Column_Name_{0}_AND_{1}_2=Mismatch column name between mapping class {0} and {1}
-MappingClassTransformationRule.Mismatch_Column_Type_{0}_AND_{1}_3=Column type mismatch between recursion root mapping class {0} and recursion child mapping class {1}
-
-MappingClassColumnUmlAspect.Signature_set=Signature set to
-TransformationMappingValidationRule.Sql_transformation_in_the_model__1=Sql transformation in the model
-TransformationMappingValidationRule._does_not_have_targets_mapped_for_source_element/s__2=\ does not have targets mapped for source element/s
-TransformationMappingValidationRule.Sql_transformation_in_the_model__3=Sql transformation in the model
-TransformationMappingValidationRule._does_not_have_target_elements._4=\ does not have target elements.
-TransformationMappingValidationRule.Sql_transformation_in_the_model__5=Sql transformation in the model
-TransformationMappingValidationRule._cannot_have_multiple_targets_mapped_for_source_element/s__6=\ cannot have multiple targets mapped for source element/s
-TransformationMappingValidationRule.Sql_transformation_in_the_model__7=Sql transformation in the model
-TransformationMappingValidationRule._cannot_have_multiple_target_elements._8=\ cannot have multiple target elements.
-TransformationMetadata.GroupID_ambiguous_there_are_multiple_virtual_plans_available_for_this_groupID__1=GroupID ambiguous, there are multiple virtual plans available for this groupID
-TransformationMetadata.GroupID_ambiguous_there_are_multiple_insert_plans_available_for_this_groupID__2=GroupID ambiguous, there are multiple insert plans available for this groupID
-TransformationMetadata.GroupID_ambiguous_there_are_multiple_update_plans_available_for_this_groupID__3=GroupID ambiguous, there are multiple update plans available for this groupID
-TransformationMetadata.GroupID_ambiguous_there_are_multiple_delete_plans_available_for_this_groupID__4=GroupID ambiguous, there are multiple delete plans available for this groupID
-MappingClassSetSqlAspect.MappingClasses_sql_name=MappingClasses
-TransformationMetadata.Failed_to_create_index_files_for_non-indexed_model_resources__1=Failed to create index files for non-indexed model resources :
-TransformationMetadata.Procedure_ambiguous_there_are_multiple_procedure_plans_available_for_this_name___4=Procedure ambiguous, there are multiple procedure plans available for this name:
-SqlTransformationMappingRootValidationRule.Join_type_mismatch_in_crit=Implicit runtime type conversion in join criteria ''{0}'': left type is ''{1}'', right type is ''{2}''.
-TransformationPlugin.noFunctionDefinitionFileMessage=Unable to find the Function Definition file at {0}
-
-#-----------------TransformationHelper-----------------
-TransformationHelper.changeSelectSqlTxnDescription=Change SQL SELECT for transformation {0}
-TransformationHelper.changeInsertSqlTxnDescription=Change SQL INSERT for transformation {0}
-TransformationHelper.changeUpdateSqlTxnDescription=Change SQL UPDATE for transformation {0}
-TransformationHelper.changeDeleteSqlTxnDescription=Change SQL DELETE for transformation {0}
-TransformationHelper.removeTargetAttributesError=Error Removing attribute from Target {0}
-
-TransformationHelper.addSrcTxnDescription=Add transformation source for transformation {0}
-TransformationHelper.addSrcAliasTxnDescription=Add transformation source alias for source {0}
-TransformationHelper.removeSrcTxnDescription=Remove transformation source for transformation {0}
-TransformationHelper.removeSrcAliasTxnDescription=Remove transformation source alias for source {0}
-
-TransformationHelper.getTransformationError=Error getting Transformation for target virtual group {0}
-TransformationHelper.createTransformationError=Error creating Transformation for target virtual group {0}
-TransformationHelper.addTransSourceError=Error adding Transformation Source for transformation mapping root {0}
-TransformationHelper.removeTransSourceError=Error removing Transformation Source for transformation mapping root {0}
-TransformationHelper.addTransSourceAliasError=Error adding Transformation Source Alias for transformation mapping root {0}
-TransformationHelper.removeTransSourceAliasError=Error removing Transformation Source Alias for transformation mapping root {0}
-TransformationHelper.sqlColumnRenameError=Error renaming SqlColumn {0}
-TransformationHelper.createProcResultSetError=Error creating ResultSet for Procedure {0}
-TransformationHelper.getProcResultSetDescriptorError=Error getting ResultSet Descriptor for Procedure {0}
-TreeMappingRootSqlAspect.could_not_get_resource_for_xmldoc=Could not get resource for {0}
-
-#-----------------TransformationMappingHelper-----------------
-TransformationMappingHelper.addAttributesTransactionDescription=Add attributes to Target {0}
-TransformationMappingHelper.addAttributesBeginTransactionError=Error starting transaction to Add attributes to Target {0}
-TransformationMappingHelper.addAttributesCommitTransactionError=Error committing transaction to Add attributes to Target {0}
-TransformationMappingHelper.reconcileMappingsTransactionDescription=Reconcile mappings for Target {0}
-TransformationMappingHelper.reconcileMappingsBeginTransactionError=Error starting transaction to Reconcile mappings for Target {0}
-TransformationMappingHelper.reconcileMappingsCommitTransactionError=Error committing transaction to Reconcile mappings for Target {0}
-TransformationMappingHelper.createNewAttrError=Error creating new attribute for group {0}
-TransformationMappingHelper.moveTargetAttrError=Error moving attribute for group {0}
-TransformationMappingHelper.containerNotFoundError=Error getting Container from ModelerCore
-TransformationMappingHelper.getChildDescriptorError=Error getting Child descriptors for {0}
-TransformationMappingHelper.errorCreatingAttribute=Error creating new attribute with name {0}
-TransformationMappingHelper.errorDeletingAttribute=Error deleting attribute {0}
-TransformationMappingHelper.errorDeletingAttributes=Error deleting attribute(s)
-
-#-----------------AttributeMappingHelper-----------------
-AttributeMappingHelper.removeAttrMappingError=Error removing attribute mapping {0}
-
-#-----------------TransformationSqlHelper-----------------
-TransformationSqlHelper.elementIDNotFoundError=Error finding the element ID for {0}
-TransformationSqlHelper.groupIDNotFoundError=Error finding the group ID for {0}
-
-#-----------------TransformationValidator-----------------
-TransformationValidator.getProcExternalMetadataError=Error getting External Metadata Map for target virtual group {0}
-TransformationValidator.errorTargetIsSourceMsg= Error: Invalid source table - {0}.\nReason: Target cannot be a source to itself.
-TransformationValidator.QMI_of_unexpected_type=Expected the QueryMetadataInterface instance to be of type TransformationMetadataFacade or VdbMetadata
-
-TransformationMetadata.Could_not_find_query_plan_for_the_group__5=Could not find query plan for the group
-TransformationMetadata.QueryPlan_could_not_be_found_for_physical_group__6=QueryPlan could not be found for physical group
-TransformationMetadata.InsertPlan_could_not_be_found_for_physical_group__8=InsertPlan could not be found for physical group
-TransformationMetadata.InsertPlan_could_not_be_found_for_physical_group__10=InsertPlan could not be found for physical group
-TransformationMetadata.DeletePlan_could_not_be_found_for_physical_group__12=DeletePlan could not be found for physical group
-TransformationMappingValidationRule.Sql_transformation_in_the_model_contains_the_unresolved_reference_1=Sql transformation in the model {0} contains the unresolved reference {1}
-TransformationValidator.Error_in_the_Sql_tranformation_for_1=No Sql Transformation defined for {0}
-SqlTransformationMappingRootValidationRule.Virtual_stored_procedures_should_always_return_a_resultSet._1=Virtual stored procedures should always return a ResultSet.
-SqlTransformationMappingRootValidationRule.A_virtual_stored_procedure_can_only_define_IN_parameters._2=A virtual stored procedure can only define IN parameters.
-SqlTransformationMappingRootValidationRule.Virtual_stored_procedures_transformation_definition_cannot_be_an_updateProcedure._3=The transformation for a virtual stored procedures cannot be an update procedure.
-SqlTransformationMappingRootValidationRule.Virtual_stored_procedures_defined_by_an_Insert,_Update_or_Delete_statement_must_define_return_a_resultSet_with_one_column_of_type_int._4=Virtual stored procedures defined by an Insert, Update or Delete statement must define return a resultSet with one column of type int.
-TransformationHelper.Error_adding_model_import_to_{0}_1=Error adding model import to {0}
-TransformationHelper.Error_removing_Model_Import_from_{0}_1=Error removing Model Import from {0}
-TransformationMetadata.Could_not_find_transformation_record_for_the_group__1=Could not find transformation record for the group
-XmlDocumentValidationRule.Error_trying_to_collect_XmlElements_in_an_XmlDocument__1=Error trying to collect XmlElements in an XmlDocument
-XmlDocumentValidationRule.Error_trying_to_collect_XmlElements_in_an_XmlDocument__2=Error trying to collect XmlElements in an XmlDocument
-XmlDocumentValidationRule.The_option_of_a_Choice_must_either_have_the_criteria_defined,_or_be_the_default._3=The option of a Choice must either have the criteria defined or be the default.
-XmlDocumentValidationRule.Error_trying_validate_choice_criteria__14=Error trying validate choice criteria
-XmlDocumentValidationRule.Recursion_not_allowed_on_compositor=Mapping classes bound to an xml element of type sequence, choice, or all cannot be marked for recursion
-XmlDocumentValidationRule.__15=\
-XmlDocumentValidationRule.0=The group ''{0}'' referenced in the choice criteria on the ''{1}'' is not among the mapping classes in the context of the choice.
-XmlDocumentValidationRule.Column_and_element_types_possibly_not_compatible=The mapping column ''{0}'' of type ''{1}'' and the document element ''{2}'' of type ''{3}'' are potentially incompatible.
-XmlDocumentValidationRule.Column_and_element_types_not_compatible=The mapping column ''{0}'' of type ''{1}'' and the document element ''{2}'' of type ''{3}'' are not compatible.
-TransformationMetadata.Error_trying_to_read_schemas_for_the_document/table____1=Error trying to read schemas for the document/table :
-SqlTransformationMappingRootValidationRule.Translate/Has_Criteria_on_an_insert_procedure_would_always_evaluate_to_false._3=Translate/Has Criteria on an insert procedure would always evaluate to false.
-TransformationValidator.The_transformation_contains_Reference_Symbols_(_),_which_is_not_allowed,_replace___with_a_constant,_element,_or_parameter_name._1=The transformation contains Reference Symbols (?), which is not allowed. Replace ? with a constant, element, or parameter name.
-SqlTransformationMappingRootValidationRule.Sql_Transform_defining_the_virtual_procedure_{0}_does_not_use_any_of_the_parameters_defined_on_the_procedure._1=The SQL defining the virtual procedure {0} does not use any of the parameters defined on the procedure.
-TransformationMetadata.Multiple_transformation_records_found_for_the_group___1=Multiple transformation records found for the group:
-InputParameterSqlAspect.Length_cannot_be_set_on_an_InputParameter_1=Length cannot be set on an InputParameter
-InputParameterSqlAspect.NullType_cannot_be_set_on_an_InputParameter_2=NullType cannot be set on an InputParameter
-MappingClassColumnSqlAspect.Length_cannot_be_set_on_a_MappingClassColumn_1=Length cannot be set on a MappingClassColumn
-MappingClassColumnSqlAspect.NullType_cannot_be_set_on_a_MappingClassColumn_2=NullType cannot be set on a MappingClassColumn
-TransformationValidator.Only_update_procedures_are_allowed_in_the_INSERT/UPDATE/DELETE_tabs._1=Only update procedures are allowed in the Insert/Update/Delete tabs.
-TransformationValidator.Query_defining_a_virtual_group_can_only_be_of_type_Select_or_Exec._1=The query defining a virtual group can only be of type Select or Exec.
-TransformationValidator.Query_defining_a_virtual_procedure_can_only_be_of_type_Virtual_procedure._2=The query defining a virtual procedure can only be of type Virtual procedure.
-TransformationValidator.Query_defining_an_operation_can_only_be_of_type_Virtual_procedure._1=The query defining an operation can only be of type Virtual procedure.
-SqlTransformationMappingRootValidationRule.The_transformation_on_the_updatable_virtual_group_{0},_allows_Insert/Update/Delete_but_does_not_define_the_necessary_transformation._1=The transformation on the updatable virtual group {0} allows Insert/Update/Delete but does not define the necessary transformation(s).
-XmlDocumentValidationRule.This_entity_{0}_is_fixed_or_default_and_should_not_have_a_mapping_attribute_defined_in_MappingClasses_1="{0}" has a fixed or default value and should not be mapped.
-XmlDocumentValidationRule.The_entity_{0}_has_been_selected_to_be_excluded_from_the_Document,_but_has_a_mapping_attribute_defined_in_MappingClasses_2="{0}" is excluded from the Document, but is still mapped.
-XmlDocumentValidationRule.The_entity_{0}_has_a_min_occurs_of_zero,_but_has_a_mapping_attribute_defined_in_MappingClasses_3="{0}" references an XML Schema component that has a min occurs of zero, and may not appear in a result document.
-XmlDocumentValidationRule.The_element_{0}_has_a_max_occurs_of_one,_but_is_mapped_to_a_MappingClass="{0}" references an XML Schema component that has a max occurs of one, but may occur more than once in a result document.
-XmlDocumentValidationRule.The_entity_{0}__s_schema_component_reference_is_nullable,_but_has_a_mapping_attribute_defined_in_MappingClasses._5="{0}" references an XML Schema component that is nullable and is mapped.
-XmlDocumentValidationRule.The_entity_{0}_having_element/attribute_children_may_not_have_a_mapping_attribute_defined_in_MappingClasses._6="{0}" has element/attribute children that may not be mapped with a MappingClass.
-XmlDocumentValidationRule.The_attribute_{0}_references_a_prohibited_schema_attribute._7=The attribute "{0}" references a prohibited schema attribute.
-XmlDocumentValidationRule.The_entity_{0}_has_been_selected_to_be_excluded_from_the_Document,_but_the_neither_the_entity_nor_its_parent_are_optional._9="{0}" is excluded from the Document, but the neither the entity nor its parent are optional.
-XmlDocumentValidationRule.The_document_element/attribute_{0}_doesn__t_reference_a_schema_component._10="{0}" does not reference a schema component.
-XmlDocumentValidationRule.The_entity_{0},_may_be_violating_maxOccurs_specified_by_the_schema._1="{0}" may cause a result document to violate the referenced XML Schema component's maxOccurs.
-SqlTransformationMappingRootValidationRule.Sql_transformation_in_the_model_{0},_has_no_target_tables/groups._1=The SQL transformation (in model {0}) has no target tables/groups.
-SqlTransformationMappingRootValidationRule.there_are_source_parameters_that_are_not_mapped_to_a_virtual_column=There are {0} in/in-out parameters from source procedures that are not mapped to a virtual group attribute
-SqlTransformationMappingRootValidationRule.Sql_transformation_in_the_model_{0},_cannot_not_have_multiple_target_tables/groups._2=The SQL transformation (in model {0}) cannot not have multiple target tables/groups.
-SqlTransformationMappingRootValidationRule.The_transformation_defining_an_updatable_virtual_group_should_be_include_atleast_one_updatable_source_group._1=The transformation defining an updatable virtual group should include at least one updatable source.
-SqlTransformationMappingRootValidationRule.The_number_of_columns/elements_in_{0}_are_less_than_the_number_defined_in_the_sql_transformation._1=The number of columns/elements in {0} are less than the number defined in the SQL transformation.
-SqlTransformationMappingRootValidationRule.The_number_of_columns/elements_in_{0}_are_greater_than_the_number_defined_in_the_sql_transformation._2=The number of columns/elements in {0} are greater than the number defined in the SQL transformation.
-SqlTransformationMappingRootValidationRule.The_target_attribute_matches_no_symbol_in_the_query_{0}._1=The target attribute {0} does not match the corresponding symbol name in the query.
-SqlTransformationMappingRootValidationRule.parameter_in_procedure_is_not_mapped_to_a_virtual_column=The IN/IN_OUT parameter {0} in procedure {1} is not mapped to a column in {2}
-SqlTransformationMappingRootValidationRule.InputParam_In_Mapping_Class_Transform=INPUT parameters cannot be used in the SELECT clause of the transformation defining the mapping class ''{0}''
-SqlTransformationMappingRootValidationRule.invalid_source_for_target=''{0}'' is not a valid transformation source for ''{1}''.
-SqlTransformationMappingRootValidationRule.invalid_target_for_source=''{0}'' is not a valid transformation target for ''{1}''.
-SqlTransformationMappingRootSqlAspect.EObject_has_not_resourceset_reference=The EObject {0} has no resource set reference
-SqlTransformationMappingRootValidationRule.The_datatype_type_of_the_column_{0}_does_not_match_the_source_column_type._1=The column ''{0}'' with runtime type ''{1}'' does not match the runtime type ''{2}'' from the query transformation.
-SqlTransformationMappingRootValidationRule.The_datatype_type_of_the_column_{0}_is_not_set_or_cannot_be_resolved_in_the_workspace._1=The datatype type of the column ''{0}'' is not set or cannot be resolved in the workspace.
-SqlTransformationMappingRootValidationRule.all_virtual_group_attributes_for_parameters_must_be_in_an_access_pattern=All virtual group attributes mapped to source procedure input parameters must be specified in a single virtual access pattern
-SqlTransformationMappingRootValidationRule.The_Nullable_value_of_virtual_group_attribute_{0}_doesn____t_match_that_of_the_attribute_it_mapps_to_in_query_transform._1=The Nullable value of virtual group attribute {0} doesn\'\'t match that of the attribute it maps to in the SQL query transform.
-SqlTransformationMappingRootValidationRule.The_insert_procedure_for_the_virtualGroup_{0}_does____not_execute_an_insert._1=The insert procedure for the virtualGroup {0} does not execute an insert.
-SqlTransformationMappingRootValidationRule.The_update_procedure_for_the_virtualGroup_{0}_does____not_execute_an_update._2=The update procedure for the virtualGroup {0} does not execute an update.
-SqlTransformationMappingRootValidationRule.The_delete_procedure_for_the_virtualGroup_{0}_does____not_execute_an_delete._3=The delete procedure for the virtualGroup {0} does not execute a delete.
-SqlTransformationMappingRootValidationRule.The_virtual_group_{0}_cannot_be_involved_as_an_input_to_the_transformation_defining_it._1=The virtual group {0} cannot use itself as a source.
-SqlTransformationMappingRootValidationRule.The_insert_procedure_for_the_virtualGroup_{0},_is_trying_to_execute_an_insert_against_itself._1=The insert procedure for {0} is trying to execute an insert against itself.
-SqlTransformationMappingRootValidationRule.The_update_procedure_for_the_virtualGroup_{0},_is_trying_to_execute_an_update_against_itself._2=The update procedure for {0} is trying to execute an update against itself.
-SqlTransformationMappingRootValidationRule.The_delete_procedure_for_the_virtualGroup_{0},_is_trying_to_execute_an_delete_against_itself._3=The delete procedure for {0} is trying to execute an delete against itself.
-InputParameterValidationRule.The_inputParameter_{0}_on_the_inputSet_of_the_MappingClass_{1}_is_not_bound_to_any_mappingClass_column._1=The input parameter {0} in the input set of the MappingClass {1} is not bound to a mapping class column.
-InputParameterValidationRule.Invalid_binding=The input parameter {0} in the input set of the MappingClass {1} is bound to an invalid mapping class column.
-TransformationMetadata.Multiple_annotation_records_found_for_the_entity_{0}_1=Multiple annotation records found for the entity {0}
-TransformationMetadata.No_metadata_info_available_for_the_index_with_UUID_{0}._1=No metadata info available for the index with UUID {0}.
-TransformationMetadata.Ambigous_index_with_UUID_{0},_found_multiple_indexes_with_the_given_UUID._2=Ambigous index with UUID {0}, found multiple indexes with the given UUID.
-TransformationValidator.Invalid_transformation_type,_only_allowed_transformations_are_select,_insert,_update,_delete_transforms._1=Invalid transformation type, only allowed transformations are select, insert, update, delete transforms.
-SqlTransformationMappingRootValidationRule.A_circular_dependency_exists_between_this_tranformation_and_the_source_group_0_1=A circular dependency exists between this transformation and virtual group {0}
-ModelerMetadata.Resolving_entity_{0}_using_index_files_1=Resolving entity {0} using index files
-ModelerMetadata.Resolving_entity_{0}_by_navigating_the_workspace_1=Resolving entity {0} by navigating the workspace
-ModelerMetadata.Found_{0}_records_for_the_entity_{1}_1=Found {0} records for the entity {1}
-TransformationMetadata.does_not_exist._1=does not exist.
-TransformationMetadata.0={0} ambiguous, more than one entity matching the same name
-TransformationMetadata.Group(0}_does_not_have_elements=Group ''{0}'' does not have any elements.
-TransformationMetadata.Error_trying_to_read_virtual_document_{0},_with_body__n{1}_1=Error trying to read virtual document {0}, with body \n{1}
-TransformationValidator.Found_problems_validating_transformation_defining_{0},_re-validate_in_the_transformation_editor._1=Found problems validating transformation defining {0}, re-validate in the transformation editor.
-SqlTransformationMappingRootValidationRule.0=Group name ''{0}'' used in the OPTION MAKEDEP/MAKENOTDEP clause is not a fully qualified group, check if it is an alias name.
-SqlTransformationMappingRootValidationRule.1=Cannot use Virtual Group ''{0}'' in the OPTION MAKEDEP/MAKENOTDEP clause.
-SqlTransformationMappingRootValidationRule.10=Transformation query has an empty OPTION NOCACHE clause, no materialized virtual groups found among the groups in the FROM clause.
-SqlTransformationMappingRootValidationRule.2=Group name ''{0}'' used in the OPTION MAKEDEP/MAKENOTDEP clause could not be found in any dependent transformations.
-SqlTransformationMappingRootValidationRule.3=Group name ''{0}'' used in the OPTION NOCACHE clause is not a fully qualified group, check if it is an alias name.
-SqlTransformationMappingRootValidationRule.4=Cannot use Virtual Group ''{0}'' in the OPTION NOCACHE clause.
-SqlTransformationMappingRootValidationRule.5=Group name ''{0}'' used in the OPTION NOCACHE clause could not be found in any dependent transformations.
-SqlTransformationMappingRootValidationRule.6=Possible cross-join: Group/s ''{0}'' are not joined either directly or transitively to other groups through a join criteria. Check all queries in the transformation.
-SqlTransformationMappingRootValidationRule.7=Group name ''{0}'' in the OPTION NOCACHE clause ambiguous, matches short name of more than one group in the FROM clause of the query.
-SqlTransformationMappingRootValidationRule.8=Group name ''{0}'' in the OPTION NOCACHE clause ambiguous, matches alias name of more than one group in the FROM clause of the query.
-SqlTransformationMappingRootValidationRule.9=Group name ''{0}'' in the OPTION NOCACHE clause does not match any materialized virtual group name or alias in the FROM clause of the query.
-SqlTransformationMappingRootValidationRule.11=Group name ''{0}'' in the OPTION NOCACHE clause ambiguous, matches partial name of more than one group in the FROM clause of the query.
-SqlTransformationMappingRootValidationRule.no_valid_target=The sql transformation does not have a valid target.
-SqlTransformationMappingRootValidationRule.no_valid_source=The sql transformation does not have a valid source.
-SqlTransformationMappingRootValidationRule.xml_doc_mapped_at_root_for_web_service=The XML document source may return multiple documents. That is not supported by web service per the WS-I profile.
-SqlTransformationMappingRootSqlAspect.0=The transformation mapping root {0} does not have a target table.
-SqlTransformationMappingRootSqlAspect.EObject_has_no_resource_reference=The EObject {0} has no resource reference
-TreeMappingRootSqlAspect.0=The tree mapping root {0} does not have a target document.
-TransformationMetadata.Invalid_type=Invalid type: {0}.
-ServerRuntimeMetadata.invalid_selector=The metadata instace is using an invalid index selector.
-MappingDocumentFormatter.Unable_to_determine_schema_in_the_workspace_for_XsdComponent_{0}_when_deriving_Namespace_Prefix_1=Unable to determine schema in the workspace for XsdComponent {0} when deriving Namespace Prefix
-_UI_InputParameter_type = Input Parameter
-_UI_InputSet_type = Input Set
-_UI_MappingClass_type = Mapping Class
-_UI_MappingClassColumn_type = Mapping Class Column
-_UI_StagingTable_type = Staging Table
-TransformationMetadata.Unable_to_determine_fullname_for_element__1=Unable to determine fullname for element
-ProcedureParameterValidationHelper.Additional_Assignment=View parameter ''{0}'' has more than 1 valid assignment: ''{1}''.
-ProcedureParameterValidationHelper.Required_view_parameter=Required view parameter ''{0}'' does not have a valid assignment.
-ProcedureParameterValidationHelper.Required_procedure_parameter=Required procedure parameter ''{0}'' does not have a valid assignment.
-ProcedureParameterValidationHelper.Invalid_Assignment=Parameter ''{0}'' has an invalid assignment: ''{1}''.
-ProcedureParameterValidationHelper.Non-selectable_column=Non-selectable column ''{0}'' must have a Default Value, be set to Nullable, or set as Auto Incremented.
-ProcedureParameterValidationHelper.No_default_for_mapping_class_parameter=The mapping class column ''{0}'' is non-selectable, but does not have a default value. A null value will be used if the column is used as a procedure parameter.
-SqlTransformationMappingRootValidationRule.STRING_BASED_FUNCTION_ONE_BASED =In 5.0 SP1, the SUBSTRING, LOCATE, and INSERT functions changed from 0-based to 1-based to match the JDBC and ODBC specifications. Please verify they are used correctly in the transformation.
-XQueryTransformationMappingRootSqlAspect.0=The transformation mapping root {0} does not have a target.
-
+TransformationMetadata.0={0} ambiguous, more than one entity matching the same name
\ No newline at end of file
Deleted: branches/JCA/metadata/src/main/system-models/SystemPhysical.xmi
===================================================================
--- branches/JCA/metadata/src/main/system-models/SystemPhysical.xmi 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/metadata/src/main/system-models/SystemPhysical.xmi 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,1263 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:diagram="http://www.metamatrix.com/metamodels/Diagram" xmlns:mmcore="http://www.metamatrix.com/metamodels/Core" xmlns:relational="http://www.metamatrix.com/metamodels/Relational">
- <mmcore:ModelAnnotation xmi:uuid="mmuuid:6d490541-276b-1de6-8a38-9d76e1f90f2e" description="SystemPhysical" primaryMetamodelUri="http://www.metamatrix.com/metamodels/Relational" modelType="PHYSICAL" visible="false" ProducerName="MetaMatrix" ProducerVersion="5.5">
- <modelImports xmi:uuid="mmuuid:85e82a80-c843-1f03-a301-eb60b4891b42" name="SimpleDatatypes-instance" modelLocation="http://www.metamatrix.com/metamodels/SimpleDatatypes-instance" modelType="PHYSICAL" primaryMetamodelUri="http://www.eclipse.org/xsd/2002/XSD"/>
- <modelImports xmi:uuid="mmuuid:85e82a81-c843-1f03-a301-eb60b4891b42" name="XMLSchema" modelLocation="http://www.w3.org/2001/XMLSchema" modelType="PHYSICAL" primaryMetamodelUri="http://www.eclipse.org/xsd/2002/XSD"/>
- </mmcore:ModelAnnotation>
- <mmcore:AnnotationContainer xmi:uuid="mmuuid:5dfe9841-60a7-1ed2-a91e-94785e58cb05">
- <annotations xmi:uuid="mmuuid:5dfe9840-60a7-1ed2-a91e-94785e58cb05" description="Each VDB will see only one record in this table, and that record will represent its own VDB." annotatedObject="mmuuid/f1ca5240-c9c7-1ede-943a-ad14f214907c"/>
- <annotations xmi:uuid="mmuuid:6b0c4500-60a7-1ed2-a91e-94785e58cb05" description="The name of the object." annotatedObject="mmuuid/6efe5240-2506-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:6ce54ac0-60a7-1ed2-a91e-94785e58cb05" description="The name of the object as known to the underlying source." annotatedObject="mmuuid/70c815c0-2506-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:6dd96ec0-60a7-1ed2-a91e-94785e58cb05" description="The type of the object." annotatedObject="mmuuid/7291d940-2506-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:7ae71b80-60a7-1ed2-a91e-94785e58cb05" description="The name of the object." annotatedObject="mmuuid/81788bc0-2506-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:7bcbfd40-60a7-1ed2-a91e-94785e58cb05" description="The name of the object as known to the underlying source." annotatedObject="mmuuid/83519180-2506-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:7db44540-60a7-1ed2-a91e-94785e58cb05" description="The fully qualified name of the object." annotatedObject="mmuuid/851b5500-2506-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:7f8d4b00-60a7-1ed2-a91e-94785e58cb05" description="The type of the object." annotatedObject="mmuuid/88164580-2506-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:88d9aa00-60a7-1ed2-a91e-94785e58cb05" description="The name of the object." annotatedObject="mmuuid/93697100-2506-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:8ab2afc0-60a7-1ed2-a91e-94785e58cb05" description="The name of the object as known to the underlying source." annotatedObject="mmuuid/95333480-2506-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:8f58df40-60a7-1ed2-a91e-94785e58cb05" description="The fully qualified name of the object." annotatedObject="mmuuid/98c6bb80-2506-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:91412741-60a7-1ed2-a91e-94785e58cb05" description="The type of the object." annotatedObject="mmuuid/9a907f00-2506-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:ac416280-60a7-1ed2-a91e-94785e58cb05" description="The name of the object." annotatedObject="mmuuid/bdca70c0-2506-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:ad264440-60a7-1ed2-a91e-94785e58cb05" description="The name of the object as known to the underlying source." annotatedObject="mmuuid/befb9dc0-2506-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:b0e79200-60a7-1ed2-a91e-94785e58cb05" description="The fully qualified name of the object." annotatedObject="mmuuid/c15df7c0-2506-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:b2c097c0-60a7-1ed2-a91e-94785e58cb05" description="The type of the object." annotatedObject="mmuuid/c28f24c0-2506-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:b85aeb40-60a7-1ed2-a91e-94785e58cb05" description="The name of the object." annotatedObject="mmuuid/c9b632c0-2506-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:b94f0f40-60a7-1ed2-a91e-94785e58cb05" description="The name of the object as known to the underlying source." annotatedObject="mmuuid/cb7ff640-2506-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:bd011ac0-60a7-1ed2-a91e-94785e58cb05" description="The fully qualified name of the object." annotatedObject="mmuuid/cd49b9c0-2506-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:bdf53ec0-60a7-1ed2-a91e-94785e58cb05" description="The type of the object." annotatedObject="mmuuid/cf137d40-2506-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:c29b6e40-60a7-1ed2-a91e-94785e58cb05" description="The name of the object." annotatedObject="mmuuid/d5095e40-2506-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:c4747400-60a7-1ed2-a91e-94785e58cb05" description="The name of the object as known to the underlying source." annotatedObject="mmuuid/d6e26400-2506-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:c7419dc0-60a7-1ed2-a91e-94785e58cb05" description="The fully qualified name of the object." annotatedObject="mmuuid/d944be01-2506-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:c835c1c0-60a7-1ed2-a91e-94785e58cb05" description="The type of the object." annotatedObject="mmuuid/db0e8180-2506-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:cdc0d300-60a7-1ed2-a91e-94785e58cb05" description="The name of the object." annotatedObject="mmuuid/e2358f80-2506-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:cfa91b00-60a7-1ed2-a91e-94785e58cb05" description="The name of the object as known to the underlying source." annotatedObject="mmuuid/e3ff5300-2506-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:d2670280-60a7-1ed2-a91e-94785e58cb05" description="The fully qualified name of the object." annotatedObject="mmuuid/e5c91681-2506-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:d35b2680-60a7-1ed2-a91e-94785e58cb05" description="The type of the object." annotatedObject="mmuuid/e792da00-2506-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:d9da5bc0-60a7-1ed2-a91e-94785e58cb05" description="The name of the object." annotatedObject="mmuuid/ef527e80-2506-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:dace7fc0-60a7-1ed2-a91e-94785e58cb05" description="The name of the object as known to the underlying source." annotatedObject="mmuuid/f11c4200-2506-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:dd9ba980-60a7-1ed2-a91e-94785e58cb05" description="The fully qualified name of the object." annotatedObject="mmuuid/f37e9c00-2506-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:df74af40-60a7-1ed2-a91e-94785e58cb05" description="The type of the object." annotatedObject="mmuuid/f4afc900-2506-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:e41adec0-60a7-1ed2-a91e-94785e58cb05" description="The name of the object." annotatedObject="mmuuid/faa5aa00-2506-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:e50f02c0-60a7-1ed2-a91e-94785e58cb05" description="The name of the object as known to the underlying source." annotatedObject="mmuuid/fc6f6d80-2506-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:e7dc2c80-60a7-1ed2-a91e-94785e58cb05" description="The fully qualified name of the object." annotatedObject="mmuuid/fe393101-2506-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:e8c10e40-60a7-1ed2-a91e-94785e58cb05" description="The type of the object." annotatedObject="mmuuid/001236c0-2507-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:0876bb40-60a8-1ed2-a91e-94785e58cb05" description="The name of the object." annotatedObject="mmuuid/086a71c0-2507-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:095b9d00-60a8-1ed2-a91e-94785e58cb05" description="The name of the object as known to the underlying source." annotatedObject="mmuuid/099b9ec0-2507-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:0d1ceac0-60a8-1ed2-a91e-94785e58cb05" description="The fully qualified name of the object." annotatedObject="mmuuid/0d2f25c0-2507-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:0e01cc80-60a8-1ed2-a91e-94785e58cb05" description="The type of the object." annotatedObject="mmuuid/0ef8e940-2507-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:12b73e40-60a8-1ed2-a91e-94785e58cb05" description="The name of the object." annotatedObject="mmuuid/14eeca40-2507-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:139c2000-60a8-1ed2-a91e-94785e58cb05" description="The name of the object as known to the underlying source." annotatedObject="mmuuid/161ff740-2507-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:18424f80-60a8-1ed2-a91e-94785e58cb05" description="The fully qualified name of the object." annotatedObject="mmuuid/19b37e40-2507-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:19367380-60a8-1ed2-a91e-94785e58cb05" description="The type of the object." annotatedObject="mmuuid/1b7d41c0-2507-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:1ddca300-60a8-1ed2-a91e-94785e58cb05" description="The name of the object." annotatedObject="mmuuid/20da8c40-2507-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:1ed0c700-60a8-1ed2-a91e-94785e58cb05" description="The name of the object as known to the underlying source." annotatedObject="mmuuid/220bb940-2507-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:20a9ccc1-60a8-1ed2-a91e-94785e58cb05" description="The fully qualified name of the object." annotatedObject="mmuuid/23d57cc1-2507-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:2282d280-60a8-1ed2-a91e-94785e58cb05" description="The type of the object." annotatedObject="mmuuid/259f4040-2507-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:254ffc40-60a8-1ed2-a91e-94785e58cb05" description="The type of the object." annotatedObject="mmuuid/3b92ff80-2fd0-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:3436aec0-60a8-1ed2-a91e-94785e58cb05" description="The variety of datatype. Value is one of the following: 1=Atomic, 2=List, 3=Union, 4=Complex" annotatedObject="mmuuid/3b23ac80-2507-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:3703d881-60a8-1ed2-a91e-94785e58cb05" description="The type of the object." annotatedObject="mmuuid/3f4fca00-2507-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:39d10240-60a8-1ed2-a91e-94785e58cb05" description="The fully qualified name of the object." annotatedObject="mmuuid/41b22400-2507-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:3c9e2c00-60a8-1ed2-a91e-94785e58cb05" description="The type of the object." annotatedObject="mmuuid/45de4180-2507-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:3f6b55c0-60a8-1ed2-a91e-94785e58cb05" description="The fully qualified name of the object." annotatedObject="mmuuid/48409b80-2507-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:42293d40-60a8-1ed2-a91e-94785e58cb05" description="The type of the object." annotatedObject="mmuuid/4c6cb901-2507-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:44f66700-60a8-1ed2-a91e-94785e58cb05" description="The fully qualified name of the object." annotatedObject="mmuuid/4f67a980-2507-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:48b7b4c0-60a8-1ed2-a91e-94785e58cb05" description="The type of the object." annotatedObject="mmuuid/53a30940-2507-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:4a90ba80-60a8-1ed2-a91e-94785e58cb05" description="The fully qualified name of the object." annotatedObject="mmuuid/56056340-2507-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:4d5de440-60a8-1ed2-a91e-94785e58cb05" description="The type of the object." annotatedObject="mmuuid/5a3180c0-2507-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:502b0e00-60a8-1ed2-a91e-94785e58cb05" description="The fully qualified name of the object." annotatedObject="mmuuid/5c93dac0-2507-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:756bcc40-60a8-1ed2-a91e-94785e58cb05" description="The name of the object." annotatedObject="mmuuid/4ded1d80-2dc5-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:7744d200-60a8-1ed2-a91e-94785e58cb05" description="The name of the object as known to the underlying source." annotatedObject="mmuuid/504f7780-2dc5-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:7a11fbc0-60a8-1ed2-a91e-94785e58cb05" description="The fully qualified name of the object." annotatedObject="mmuuid/53e2fe80-2dc5-1ed0-a220-9c522c08a85a"/>
- <annotations xmi:uuid="mmuuid:7b061fc0-60a8-1ed2-a91e-94785e58cb05" description="The type of the object." annotatedObject="mmuuid/56455880-2dc5-1ed0-a220-9c522c08a85a"/>
- </mmcore:AnnotationContainer>
- <relational:BaseTable xmi:uuid="mmuuid:6c9bf840-2506-1ed0-a220-9c522c08a85a" name="MODELS" nameInSource="MODELS.INDEX" system="true" supportsUpdate="false">
- <columns xmi:uuid="mmuuid:6d348ec0-2506-1ed0-a220-9c522c08a85a" name="UUID" nameInSource="UUID" length="50" nullable="NO_NULLS" caseSensitive="false" signed="false" uniqueKeys="mmuuid/7e7d9b40-2506-1ed0-a220-9c522c08a85a">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:6efe5240-2506-1ed0-a220-9c522c08a85a" name="NAME" nameInSource="Name" length="255" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:70c815c0-2506-1ed0-a220-9c522c08a85a" name="NAME_IN_SOURCE" nameInSource="NameInSource" length="255" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:7291d940-2506-1ed0-a220-9c522c08a85a" name="OBJECT_TYPE" nameInSource="RecordType" length="1" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.metamatrix.com/metamodels/SimpleDatatypes-instance#char"/>
- </columns>
- <columns xmi:uuid="mmuuid:73c30640-2506-1ed0-a220-9c522c08a85a" name="MAX_SET_SIZE" nameInSource="MaxSetSize" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:758cc9c0-2506-1ed0-a220-9c522c08a85a" name="IS_VISIBLE" nameInSource="isVisible" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#boolean"/>
- </columns>
- <columns xmi:uuid="mmuuid:59189880-3854-1ed0-a220-9c522c08a85a" name="IS_PHYSICAL" nameInSource="isPhysical" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#boolean"/>
- </columns>
- <columns xmi:uuid="mmuuid:76bdf6c0-2506-1ed0-a220-9c522c08a85a" name="SUPPORTS_DISTINCT" nameInSource="supportsDistinct" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#boolean"/>
- </columns>
- <columns xmi:uuid="mmuuid:7887ba40-2506-1ed0-a220-9c522c08a85a" name="SUPPORTS_JOIN" nameInSource="supportsJoin" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#boolean"/>
- </columns>
- <columns xmi:uuid="mmuuid:79b8e740-2506-1ed0-a220-9c522c08a85a" name="SUPPORTS_ORDER_BY" nameInSource="supportsOrderBy" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#boolean"/>
- </columns>
- <columns xmi:uuid="mmuuid:7b82aac0-2506-1ed0-a220-9c522c08a85a" name="SUPPORTS_OUTER_JOIN" nameInSource="supportsOuterJoin" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#boolean"/>
- </columns>
- <columns xmi:uuid="mmuuid:7cb3d7c0-2506-1ed0-a220-9c522c08a85a" name="SUPPORTS_WHERE_ALL" nameInSource="supportsWhereAll" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#boolean"/>
- </columns>
- <columns xmi:uuid="mmuuid:aad46340-385c-1ed0-a220-9c522c08a85a" name="MODEL_TYPE" nameInSource="ModelType" length="15" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:bdf33500-e39b-1ee5-b836-ce1850f9b1e5" name="PRIMARY_METAMODEL_URI" nameInSource="PrimaryMetamodelUri" length="255" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <primaryKey xmi:uuid="mmuuid:7e7d9b40-2506-1ed0-a220-9c522c08a85a" name="PK_MODELS" columns="mmuuid/6d348ec0-2506-1ed0-a220-9c522c08a85a"/>
- </relational:BaseTable>
- <relational:BaseTable xmi:uuid="mmuuid:7faec840-2506-1ed0-a220-9c522c08a85a" name="TABLES" nameInSource="TABLES.INDEX" system="true" supportsUpdate="false">
- <columns xmi:uuid="mmuuid:80475ec0-2506-1ed0-a220-9c522c08a85a" name="UUID" nameInSource="UUID" length="50" nullable="NO_NULLS" caseSensitive="false" signed="false" uniqueKeys="mmuuid/906e8080-2506-1ed0-a220-9c522c08a85a">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:81788bc0-2506-1ed0-a220-9c522c08a85a" name="NAME" nameInSource="Name" length="255" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:83519180-2506-1ed0-a220-9c522c08a85a" name="NAME_IN_SOURCE" nameInSource="NameInSource" length="255" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:851b5500-2506-1ed0-a220-9c522c08a85a" name="PATH" nameInSource="PathString" length="2048" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:86e51880-2506-1ed0-a220-9c522c08a85a" name="TABLE_TYPE" nameInSource="TableType" length="20" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:88164580-2506-1ed0-a220-9c522c08a85a" name="OBJECT_TYPE" nameInSource="RecordType" length="1" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.metamatrix.com/metamodels/SimpleDatatypes-instance#char"/>
- </columns>
- <columns xmi:uuid="mmuuid:89e00900-2506-1ed0-a220-9c522c08a85a" name="FULLNAME" nameInSource="FullName" length="2048" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:8b113600-2506-1ed0-a220-9c522c08a85a" name="CARDINALITY" nameInSource="Cardinality" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:8cdaf980-2506-1ed0-a220-9c522c08a85a" name="IS_VIRTUAL" nameInSource="isVirtual" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#boolean"/>
- </columns>
- <columns xmi:uuid="mmuuid:bc4284c0-382c-1ed0-a220-9c522c08a85a" name="IS_PHYSICAL" nameInSource="isPhysical" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#boolean"/>
- </columns>
- <columns xmi:uuid="mmuuid:8e0c2680-2506-1ed0-a220-9c522c08a85a" name="SUPPORTS_UPDATE" nameInSource="supportsUpdate" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#boolean"/>
- </columns>
- <columns xmi:uuid="mmuuid:8fd5ea00-2506-1ed0-a220-9c522c08a85a" name="MODEL_NAME" nameInSource="ModelName" length="255" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:bdd39080-79c2-1edb-8406-b71b8efe0994" name="IS_SYSTEM" nameInSource="isSystem" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#boolean"/>
- </columns>
- <columns xmi:uuid="mmuuid:d4663f00-04bc-101e-861a-a893857ac5a5" name="IS_MATERIALIZED" nameInSource="isMaterialized" nullable="NO_NULLS" defaultValue="false" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#boolean"/>
- </columns>
- <primaryKey xmi:uuid="mmuuid:906e8080-2506-1ed0-a220-9c522c08a85a" name="PK_TABLES" columns="mmuuid/80475ec0-2506-1ed0-a220-9c522c08a85a"/>
- </relational:BaseTable>
- <relational:BaseTable xmi:uuid="mmuuid:919fad80-2506-1ed0-a220-9c522c08a85a" name="COLUMNS" nameInSource="COLUMNS.INDEX" system="true" supportsUpdate="false">
- <columns xmi:uuid="mmuuid:92384400-2506-1ed0-a220-9c522c08a85a" name="UUID" nameInSource="UUID" length="50" nullable="NO_NULLS" caseSensitive="false" signed="false" uniqueKeys="mmuuid/b7d48fc0-2506-1ed0-a220-9c522c08a85a">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:93697100-2506-1ed0-a220-9c522c08a85a" name="NAME" nameInSource="Name" length="255" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:95333480-2506-1ed0-a220-9c522c08a85a" name="NAME_IN_SOURCE" nameInSource="NameInSource" length="255" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:96fcf800-2506-1ed0-a220-9c522c08a85a" name="MODEL_NAME" nameInSource="ModelName" length="255" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:96fcf801-2506-1ed0-a220-9c522c08a85a" name="PARENT_NAME" nameInSource="ParentFullName" length="255" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:c7728540-3bb8-1ed0-a220-9c522c08a85a" name="PARENT_PATH" nameInSource="ParentPathString" length="2048" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:97958e80-2506-1ed0-a220-9c522c08a85a" name="PARENT_UUID" nameInSource="ParentUUID" length="50" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:98c6bb80-2506-1ed0-a220-9c522c08a85a" name="PATH" nameInSource="PathString" length="2048" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:8292aa00-2906-1ed0-a220-9c522c08a85a" name="POSITION" nameInSource="Position" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:9a907f00-2506-1ed0-a220-9c522c08a85a" name="OBJECT_TYPE" nameInSource="RecordType" length="1" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.metamatrix.com/metamodels/SimpleDatatypes-instance#char"/>
- </columns>
- <columns xmi:uuid="mmuuid:9c5a4280-2506-1ed0-a220-9c522c08a85a" name="FULLNAME" nameInSource="FullName" length="2048" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:9e240600-2506-1ed0-a220-9c522c08a85a" name="CHAR_OCTET_LENGTH" nameInSource="CharOctetLength" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:9f553300-2506-1ed0-a220-9c522c08a85a" name="RUNTIME_TYPE_NAME" nameInSource="RuntimeType" length="100" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:b9eaf340-3a68-1ed0-a220-9c522c08a85a" name="DATATYPE_UUID" nameInSource="DatatypeUUID" length="50" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:a11ef680-2506-1ed0-a220-9c522c08a85a" name="DEFAULT_VALUE" nameInSource="DefaultValue" length="255" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:a2502380-2506-1ed0-a220-9c522c08a85a" name="FORMAT" nameInSource="Format" length="255" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:a54b1400-2506-1ed0-a220-9c522c08a85a" name="MAX_VALUE" nameInSource="MaxValue" length="255" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:a67c4100-2506-1ed0-a220-9c522c08a85a" name="MIN_VALUE" nameInSource="MinValue" length="255" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:a8460480-2506-1ed0-a220-9c522c08a85a" name="NULL_TYPE" nameInSource="NullType" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:a3815080-2506-1ed0-a220-9c522c08a85a" name="LENGTH" nameInSource="Length" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:a9773180-2506-1ed0-a220-9c522c08a85a" name="PRECISION" nameInSource="Precision" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:aaa85e80-2506-1ed0-a220-9c522c08a85a" name="SCALE" nameInSource="Scale" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:661f5600-3bfa-1ed0-a220-9c522c08a85a" name="RADIX" nameInSource="Radix" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:ac816440-2506-1ed0-a220-9c522c08a85a" name="SEARCH_TYPE" nameInSource="SearchType" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:adb29140-2506-1ed0-a220-9c522c08a85a" name="IS_AUTO_INCREMENTED" nameInSource="isAutoIncrementable" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#boolean"/>
- </columns>
- <columns xmi:uuid="mmuuid:aee3be40-2506-1ed0-a220-9c522c08a85a" name="IS_CASE_SENSITIVE" nameInSource="isCaseSensitive" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#boolean"/>
- </columns>
- <columns xmi:uuid="mmuuid:b0ad81c0-2506-1ed0-a220-9c522c08a85a" name="IS_CURRENCY" nameInSource="isCurrency" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#boolean"/>
- </columns>
- <columns xmi:uuid="mmuuid:b1deaec0-2506-1ed0-a220-9c522c08a85a" name="IS_LENGTH_FIXED" nameInSource="isFixedLength" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#boolean"/>
- </columns>
- <columns xmi:uuid="mmuuid:b30fdbc0-2506-1ed0-a220-9c522c08a85a" name="IS_SELECTABLE" nameInSource="isSelectable" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#boolean"/>
- </columns>
- <columns xmi:uuid="mmuuid:b57235c0-2506-1ed0-a220-9c522c08a85a" name="IS_SIGNED" nameInSource="isSigned" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#boolean"/>
- </columns>
- <columns xmi:uuid="mmuuid:b6a362c0-2506-1ed0-a220-9c522c08a85a" name="SUPPORTS_UPDATES" nameInSource="isUpdatable" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#boolean"/>
- </columns>
- <primaryKey xmi:uuid="mmuuid:b7d48fc0-2506-1ed0-a220-9c522c08a85a" name="PK_COLUMNS" columns="mmuuid/92384400-2506-1ed0-a220-9c522c08a85a"/>
- </relational:BaseTable>
- <relational:BaseTable xmi:uuid="mmuuid:bacf8040-2506-1ed0-a220-9c522c08a85a" name="PRIMARY_KEYS" nameInSource="KEYS.INDEX#K" system="true" supportsUpdate="false">
- <columns xmi:uuid="mmuuid:bacf8041-2506-1ed0-a220-9c522c08a85a" name="UUID" nameInSource="UUID" length="50" nullable="NO_NULLS" caseSensitive="false" signed="false" uniqueKeys="mmuuid/c58a1540-2506-1ed0-a220-9c522c08a85a">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:bc9943c0-2506-1ed0-a220-9c522c08a85a" name="UUID_OF_TABLE" nameInSource="ParentUUID" length="50" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:bdca70c0-2506-1ed0-a220-9c522c08a85a" name="NAME" nameInSource="Name" length="255" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:befb9dc0-2506-1ed0-a220-9c522c08a85a" name="NAME_IN_SOURCE" nameInSource="NameInSource" length="255" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:c0c56140-2506-1ed0-a220-9c522c08a85a" name="MODEL_NAME" nameInSource="ModelName" length="255" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:c0c56141-2506-1ed0-a220-9c522c08a85a" name="TABLE_NAME" nameInSource="ParentFullName" length="255" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:c15df7c0-2506-1ed0-a220-9c522c08a85a" name="PATH" nameInSource="PathString" length="2048" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:c28f24c0-2506-1ed0-a220-9c522c08a85a" name="OBJECT_TYPE" nameInSource="RecordType" length="1" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.metamatrix.com/metamodels/SimpleDatatypes-instance#char"/>
- </columns>
- <columns xmi:uuid="mmuuid:c458e840-2506-1ed0-a220-9c522c08a85a" name="FULLNAME" nameInSource="FullName" length="2048" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <primaryKey xmi:uuid="mmuuid:c58a1540-2506-1ed0-a220-9c522c08a85a" name="PK_PRIMARY_KEYS" columns="mmuuid/bacf8041-2506-1ed0-a220-9c522c08a85a"/>
- </relational:BaseTable>
- <relational:BaseTable xmi:uuid="mmuuid:c6bb4240-2506-1ed0-a220-9c522c08a85a" name="UNIQUE_KEYS" nameInSource="KEYS.INDEX#I" system="true" supportsUpdate="false">
- <columns xmi:uuid="mmuuid:c6bb4241-2506-1ed0-a220-9c522c08a85a" name="UUID" nameInSource="UUID" length="50" nullable="NO_NULLS" caseSensitive="false" signed="false" uniqueKeys="mmuuid/d20e6dc0-2506-1ed0-a220-9c522c08a85a">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:c88505c0-2506-1ed0-a220-9c522c08a85a" name="UUID_OF_TABLE" nameInSource="ParentUUID" length="50" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:c9b632c0-2506-1ed0-a220-9c522c08a85a" name="NAME" nameInSource="Name" length="255" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:cb7ff640-2506-1ed0-a220-9c522c08a85a" name="NAME_IN_SOURCE" nameInSource="NameInSource" length="255" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:ccb12340-2506-1ed0-a220-9c522c08a85a" name="MODEL_NAME" nameInSource="ModelName" length="255" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:ccb12341-2506-1ed0-a220-9c522c08a85a" name="TABLE_NAME" nameInSource="ParentFullName" length="255" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:cd49b9c0-2506-1ed0-a220-9c522c08a85a" name="PATH" nameInSource="PathString" length="2048" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:cf137d40-2506-1ed0-a220-9c522c08a85a" name="OBJECT_TYPE" nameInSource="RecordType" length="1" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.metamatrix.com/metamodels/SimpleDatatypes-instance#char"/>
- </columns>
- <columns xmi:uuid="mmuuid:d044aa40-2506-1ed0-a220-9c522c08a85a" name="FULLNAME" nameInSource="FullName" length="2048" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <primaryKey xmi:uuid="mmuuid:d20e6dc0-2506-1ed0-a220-9c522c08a85a" name="PK_UNIQUE_KEYS" columns="mmuuid/c6bb4241-2506-1ed0-a220-9c522c08a85a"/>
- </relational:BaseTable>
- <relational:BaseTable xmi:uuid="mmuuid:d33f9ac0-2506-1ed0-a220-9c522c08a85a" name="INDEXES" nameInSource="KEYS.INDEX#L" system="true" supportsUpdate="false">
- <columns xmi:uuid="mmuuid:d3d83140-2506-1ed0-a220-9c522c08a85a" name="UUID" nameInSource="UUID" length="50" nullable="NO_NULLS" caseSensitive="false" signed="false" uniqueKeys="mmuuid/de097200-2506-1ed0-a220-9c522c08a85a">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:d5095e40-2506-1ed0-a220-9c522c08a85a" name="NAME" nameInSource="Name" length="255" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:d6e26400-2506-1ed0-a220-9c522c08a85a" name="NAME_IN_SOURCE" nameInSource="NameInSource" length="255" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:d8ac2780-2506-1ed0-a220-9c522c08a85a" name="MODEL_NAME" nameInSource="ModelName" length="255" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:d944be00-2506-1ed0-a220-9c522c08a85a" name="TABLE_NAME" nameInSource="ParentFullName" length="255" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:d944be01-2506-1ed0-a220-9c522c08a85a" name="PATH" nameInSource="PathString" length="2048" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:db0e8180-2506-1ed0-a220-9c522c08a85a" name="OBJECT_TYPE" nameInSource="RecordType" length="1" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.metamatrix.com/metamodels/SimpleDatatypes-instance#char"/>
- </columns>
- <columns xmi:uuid="mmuuid:dcd84500-2506-1ed0-a220-9c522c08a85a" name="FULLNAME" nameInSource="FullName" length="2048" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <primaryKey xmi:uuid="mmuuid:de097200-2506-1ed0-a220-9c522c08a85a" name="PK_INDEXES" columns="mmuuid/d3d83140-2506-1ed0-a220-9c522c08a85a"/>
- </relational:BaseTable>
- <relational:BaseTable xmi:uuid="mmuuid:df3a9f00-2506-1ed0-a220-9c522c08a85a" name="ACCESS_PATTERNS" nameInSource="KEYS.INDEX#H" system="true" supportsUpdate="false">
- <columns xmi:uuid="mmuuid:dfd33580-2506-1ed0-a220-9c522c08a85a" name="UUID" nameInSource="UUID" length="50" nullable="NO_NULLS" caseSensitive="false" signed="false" uniqueKeys="mmuuid/ea8dca80-2506-1ed0-a220-9c522c08a85a">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:e1046280-2506-1ed0-a220-9c522c08a85a" name="UUID_OF_TABLE" nameInSource="ParentUUID" length="50" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:e2358f80-2506-1ed0-a220-9c522c08a85a" name="NAME" nameInSource="Name" length="255" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:e3ff5300-2506-1ed0-a220-9c522c08a85a" name="NAME_IN_SOURCE" nameInSource="NameInSource" length="255" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:e5308000-2506-1ed0-a220-9c522c08a85a" name="MODEL_NAME" nameInSource="ModelName" length="255" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:e5c91680-2506-1ed0-a220-9c522c08a85a" name="TABLE_NAME" nameInSource="ParentFullName" length="255" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:e5c91681-2506-1ed0-a220-9c522c08a85a" name="PATH" nameInSource="PathString" length="2048" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:e792da00-2506-1ed0-a220-9c522c08a85a" name="OBJECT_TYPE" nameInSource="RecordType" length="1" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.metamatrix.com/metamodels/SimpleDatatypes-instance#char"/>
- </columns>
- <columns xmi:uuid="mmuuid:e8c40700-2506-1ed0-a220-9c522c08a85a" name="FULLNAME" nameInSource="FullName" length="2048" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <primaryKey xmi:uuid="mmuuid:ea8dca80-2506-1ed0-a220-9c522c08a85a" name="PK_ACCESS_PATTERNS" columns="mmuuid/dfd33580-2506-1ed0-a220-9c522c08a85a"/>
- </relational:BaseTable>
- <relational:BaseTable xmi:uuid="mmuuid:ebbef780-2506-1ed0-a220-9c522c08a85a" name="FOREIGN_KEYS" nameInSource="KEYS.INDEX#J" system="true" supportsUpdate="false">
- <columns xmi:uuid="mmuuid:ebbef781-2506-1ed0-a220-9c522c08a85a" name="UUID" nameInSource="UUID" length="50" nullable="NO_NULLS" caseSensitive="false" signed="false" uniqueKeys="mmuuid/f7aab980-2506-1ed0-a220-9c522c08a85a">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:ed88bb00-2506-1ed0-a220-9c522c08a85a" name="UUID_OF_TABLE" nameInSource="ParentUUID" length="50" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:ef527e80-2506-1ed0-a220-9c522c08a85a" name="NAME" nameInSource="Name" length="255" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:f11c4200-2506-1ed0-a220-9c522c08a85a" name="NAME_IN_SOURCE" nameInSource="NameInSource" length="255" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:f2e60580-2506-1ed0-a220-9c522c08a85a" name="MODEL_NAME" nameInSource="ModelName" length="255" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:f2e60581-2506-1ed0-a220-9c522c08a85a" name="TABLE_NAME" nameInSource="ParentFullName" length="255" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:f37e9c00-2506-1ed0-a220-9c522c08a85a" name="PATH" nameInSource="PathString" length="2048" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:f4afc900-2506-1ed0-a220-9c522c08a85a" name="OBJECT_TYPE" nameInSource="RecordType" length="1" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.metamatrix.com/metamodels/SimpleDatatypes-instance#char"/>
- </columns>
- <columns xmi:uuid="mmuuid:f6798c80-2506-1ed0-a220-9c522c08a85a" name="FULLNAME" nameInSource="FullName" length="2048" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:1dd99d00-bfa3-1edb-a31f-f0e78084902c" name="UUID_OF_PRIMARY_KEY" nameInSource="UniqueKeyID" length="50" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <primaryKey xmi:uuid="mmuuid:f7aab980-2506-1ed0-a220-9c522c08a85a" name="PK_FOREIGN_KEYS" columns="mmuuid/ebbef781-2506-1ed0-a220-9c522c08a85a"/>
- </relational:BaseTable>
- <relational:BaseTable xmi:uuid="mmuuid:f8dbe680-2506-1ed0-a220-9c522c08a85a" name="PROCS" nameInSource="PROCEDURES.INDEX#E" system="true" supportsUpdate="false">
- <columns xmi:uuid="mmuuid:f9747d00-2506-1ed0-a220-9c522c08a85a" name="UUID" nameInSource="UUID" length="50" nullable="NO_NULLS" caseSensitive="false" signed="false" uniqueKeys="mmuuid/056f8140-2507-1ed0-a220-9c522c08a85a">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:faa5aa00-2506-1ed0-a220-9c522c08a85a" name="NAME" nameInSource="Name" length="255" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:fc6f6d80-2506-1ed0-a220-9c522c08a85a" name="NAME_IN_SOURCE" nameInSource="NameInSource" length="255" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:fe393100-2506-1ed0-a220-9c522c08a85a" name="MODEL_NAME" nameInSource="ModelName" length="255" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:fe393101-2506-1ed0-a220-9c522c08a85a" name="PATH" nameInSource="PathString" length="2048" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:001236c0-2507-1ed0-a220-9c522c08a85a" name="OBJECT_TYPE" nameInSource="RecordType" length="1" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.metamatrix.com/metamodels/SimpleDatatypes-instance#char"/>
- </columns>
- <columns xmi:uuid="mmuuid:014363c0-2507-1ed0-a220-9c522c08a85a" name="FULLNAME" nameInSource="FullName" length="2048" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:030d2740-2507-1ed0-a220-9c522c08a85a" name="FUNCTION" nameInSource="isFunction" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#boolean"/>
- </columns>
- <columns xmi:uuid="mmuuid:043e5440-2507-1ed0-a220-9c522c08a85a" name="RESULT_SET_UUID" nameInSource="ResultSetID" length="50" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:50835100-81e2-1edb-b82b-a644fce32f4b" name="PROC_TYPE" nameInSource="Type" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#short"/>
- </columns>
- <primaryKey xmi:uuid="mmuuid:056f8140-2507-1ed0-a220-9c522c08a85a" name="PK_PROCS" columns="mmuuid/f9747d00-2506-1ed0-a220-9c522c08a85a"/>
- </relational:BaseTable>
- <relational:BaseTable xmi:uuid="mmuuid:06a0ae40-2507-1ed0-a220-9c522c08a85a" name="PROC_PARAMS" nameInSource="PROCEDURES.INDEX#F" system="true" supportsUpdate="false">
- <columns xmi:uuid="mmuuid:073944c0-2507-1ed0-a220-9c522c08a85a" name="UUID" nameInSource="UUID" length="50" nullable="NO_NULLS" caseSensitive="false" signed="false" uniqueKeys="mmuuid/115b4340-2507-1ed0-a220-9c522c08a85a">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:086a71c0-2507-1ed0-a220-9c522c08a85a" name="NAME" nameInSource="Name" length="255" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:099b9ec0-2507-1ed0-a220-9c522c08a85a" name="NAME_IN_SOURCE" nameInSource="NameInSource" length="255" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:0b656240-2507-1ed0-a220-9c522c08a85a" name="MODEL_NAME" nameInSource="ModelName" length="255" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:0b656241-2507-1ed0-a220-9c522c08a85a" name="PROC_NAME" nameInSource="ParentFullName" length="255" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:0bfdf8c0-2507-1ed0-a220-9c522c08a85a" name="PROC_UUID" nameInSource="ParentUUID" length="50" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:0d2f25c0-2507-1ed0-a220-9c522c08a85a" name="PATH" nameInSource="PathString" length="2048" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:0ef8e940-2507-1ed0-a220-9c522c08a85a" name="OBJECT_TYPE" nameInSource="RecordType" length="1" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.metamatrix.com/metamodels/SimpleDatatypes-instance#char"/>
- </columns>
- <columns xmi:uuid="mmuuid:102a1640-2507-1ed0-a220-9c522c08a85a" name="FULLNAME" nameInSource="FullName" length="2048" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:d8b8fb80-79e8-1edb-8406-b71b8efe0994" name="POSITION" nameInSource="Position" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:fd097580-7bd9-1edb-8406-b71b8efe0994" name="DIRECTION" nameInSource="Type" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#short"/>
- </columns>
- <columns xmi:uuid="mmuuid:cdfc6900-825f-1edb-b82b-a644fce32f4b" name="RUNTIME_TYPE_NAME" nameInSource="RuntimeType" length="25" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:758a7f40-82bf-1edb-b82b-a644fce32f4b" name="DATATYPE_UUID" nameInSource="DatatypeUUID" length="50" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:7489af80-84cc-1edb-b82b-a644fce32f4b" name="LENGTH" nameInSource="Length" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:7c592480-8566-1edb-b82b-a644fce32f4b" name="NULL_TYPE" nameInSource="NullType" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:343a2440-85c2-1edb-b82b-a644fce32f4b" name="RADIX" nameInSource="Radix" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:393d6080-85c5-1edb-b82b-a644fce32f4b" name="SCALE" nameInSource="Scale" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:dae5b540-85ca-1edb-b82b-a644fce32f4b" name="PRECISION" nameInSource="Precision" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:df8271c0-d2e0-1edb-9223-85de9ced5f1c" name="IS_OPTIONAL" nameInSource="isOptional" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#boolean"/>
- </columns>
- <primaryKey xmi:uuid="mmuuid:115b4340-2507-1ed0-a220-9c522c08a85a" name="PK_PROC_PARAMS" columns="mmuuid/073944c0-2507-1ed0-a220-9c522c08a85a"/>
- </relational:BaseTable>
- <relational:BaseTable xmi:uuid="mmuuid:132506c0-2507-1ed0-a220-9c522c08a85a" name="PROC_RESULT_SETS" nameInSource="PROCEDURES.INDEX#C" system="true" supportsUpdate="false">
- <columns xmi:uuid="mmuuid:132506c1-2507-1ed0-a220-9c522c08a85a" name="UUID" nameInSource="UUID" length="50" nullable="NO_NULLS" caseSensitive="false" signed="false" uniqueKeys="mmuuid/1ddf9bc0-2507-1ed0-a220-9c522c08a85a">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:14eeca40-2507-1ed0-a220-9c522c08a85a" name="NAME" nameInSource="Name" length="255" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:161ff740-2507-1ed0-a220-9c522c08a85a" name="NAME_IN_SOURCE" nameInSource="NameInSource" length="255" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:17e9bac0-2507-1ed0-a220-9c522c08a85a" name="MODEL_NAME" nameInSource="ModelName" length="255" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:18825140-2507-1ed0-a220-9c522c08a85a" name="PROC_NAME" nameInSource="ParentFullName" length="255" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:18825141-2507-1ed0-a220-9c522c08a85a" name="PROC_UUID" nameInSource="ParentUUID" length="50" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:19b37e40-2507-1ed0-a220-9c522c08a85a" name="PATH" nameInSource="PathString" length="2048" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:1b7d41c0-2507-1ed0-a220-9c522c08a85a" name="OBJECT_TYPE" nameInSource="RecordType" length="1" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.metamatrix.com/metamodels/SimpleDatatypes-instance#char"/>
- </columns>
- <columns xmi:uuid="mmuuid:1cae6ec0-2507-1ed0-a220-9c522c08a85a" name="FULLNAME" nameInSource="FullName" length="2048" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <primaryKey xmi:uuid="mmuuid:1ddf9bc0-2507-1ed0-a220-9c522c08a85a" name="PK_PROC_RESULT_SETS" columns="mmuuid/132506c1-2507-1ed0-a220-9c522c08a85a"/>
- </relational:BaseTable>
- <relational:BaseTable xmi:uuid="mmuuid:1f10c8c0-2507-1ed0-a220-9c522c08a85a" name="DATATYPES" nameInSource="DATATYPES.INDEX" system="true" supportsUpdate="false">
- <columns xmi:uuid="mmuuid:1fa95f40-2507-1ed0-a220-9c522c08a85a" name="UUID" nameInSource="UUID" length="50" nullable="NO_NULLS" caseSensitive="false" signed="false" uniqueKeys="mmuuid/3c54d980-2507-1ed0-a220-9c522c08a85a">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:20da8c40-2507-1ed0-a220-9c522c08a85a" name="NAME" nameInSource="Name" length="100" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:220bb940-2507-1ed0-a220-9c522c08a85a" name="NAME_IN_SOURCE" nameInSource="NameInSource" length="100" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:23d57cc0-2507-1ed0-a220-9c522c08a85a" name="MODEL_NAME" nameInSource="ModelName" length="255" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:23d57cc1-2507-1ed0-a220-9c522c08a85a" name="PATH" nameInSource="PathString" length="2048" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:259f4040-2507-1ed0-a220-9c522c08a85a" name="OBJECT_TYPE" nameInSource="RecordType" length="1" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.metamatrix.com/metamodels/SimpleDatatypes-instance#char"/>
- </columns>
- <columns xmi:uuid="mmuuid:26d06d40-2507-1ed0-a220-9c522c08a85a" name="FULLNAME" nameInSource="FullName" length="2048" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:28a97300-2507-1ed0-a220-9c522c08a85a" name="URL" nameInSource="DatatypeID" length="2048" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:3b92ff80-2fd0-1ed0-a220-9c522c08a85a" name="TYPE" nameInSource="Type" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#short"/>
- </columns>
- <columns xmi:uuid="mmuuid:29daa000-2507-1ed0-a220-9c522c08a85a" name="BASETYPE_URL" nameInSource="BasetypeID" length="2048" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:f34840c0-319e-1ed0-a220-9c522c08a85a" name="BASETYPE_NAME" nameInSource="BasetypeName" length="100" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:2ba46380-2507-1ed0-a220-9c522c08a85a" name="JAVA_CLASS_NAME" nameInSource="JavaClassName" length="500" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:2cd59080-2507-1ed0-a220-9c522c08a85a" name="LENGTH" nameInSource="Length" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:2e9f5400-2507-1ed0-a220-9c522c08a85a" name="NULL_TYPE" nameInSource="NullType" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#short"/>
- </columns>
- <columns xmi:uuid="mmuuid:33fc9e80-2507-1ed0-a220-9c522c08a85a" name="SEARCH_TYPE" nameInSource="SearchType" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#short"/>
- </columns>
- <columns xmi:uuid="mmuuid:2fd08100-2507-1ed0-a220-9c522c08a85a" name="PRECISION" nameInSource="PrecisionLength" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:3101ae00-2507-1ed0-a220-9c522c08a85a" name="SCALE" nameInSource="Scale" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:3232db00-2507-1ed0-a220-9c522c08a85a" name="RADIX" nameInSource="Radix" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:352dcb80-2507-1ed0-a220-9c522c08a85a" name="IS_AUTO_INCREMENTED" nameInSource="isAutoIncrement" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#boolean"/>
- </columns>
- <columns xmi:uuid="mmuuid:365ef880-2507-1ed0-a220-9c522c08a85a" name="IS_CASE_SENSITIVE" nameInSource="isCaseSensitive" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#boolean"/>
- </columns>
- <columns xmi:uuid="mmuuid:3828bc00-2507-1ed0-a220-9c522c08a85a" name="IS_SIGNED" nameInSource="isSigned" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#boolean"/>
- </columns>
- <columns xmi:uuid="mmuuid:d915e980-3001-1ed0-a220-9c522c08a85a" name="IS_BUILTIN" nameInSource="isBuiltin" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#boolean"/>
- </columns>
- <columns xmi:uuid="mmuuid:3959e900-2507-1ed0-a220-9c522c08a85a" name="RUNTIME_TYPE_NAME" nameInSource="RuntimeTypeName" length="25" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:3b23ac80-2507-1ed0-a220-9c522c08a85a" name="VARIETY" nameInSource="VarietyType" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#short"/>
- </columns>
- <primaryKey xmi:uuid="mmuuid:3c54d980-2507-1ed0-a220-9c522c08a85a" name="PK_DATATYPES" columns="mmuuid/1fa95f40-2507-1ed0-a220-9c522c08a85a"/>
- </relational:BaseTable>
- <relational:BaseTable xmi:uuid="mmuuid:3eb73380-2507-1ed0-a220-9c522c08a85a" name="SELECT_TRANS" nameInSource="SELECT_TRANSFORM.INDEX" system="true" supportsUpdate="false">
- <columns xmi:uuid="mmuuid:3f4fca00-2507-1ed0-a220-9c522c08a85a" name="OBJECT_TYPE" nameInSource="RecordType" length="1" nullable="NO_NULLS" caseSensitive="false" signed="false" uniqueKeys="mmuuid/44ad1480-2507-1ed0-a220-9c522c08a85a">
- <type href="http://www.metamatrix.com/metamodels/SimpleDatatypes-instance#char"/>
- </columns>
- <columns xmi:uuid="mmuuid:4080f700-2507-1ed0-a220-9c522c08a85a" name="TRANSFORMED_UUID" nameInSource="UUID" length="50" nullable="NO_NULLS" caseSensitive="false" signed="false" uniqueKeys="mmuuid/44ad1480-2507-1ed0-a220-9c522c08a85a">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:41b22400-2507-1ed0-a220-9c522c08a85a" name="TRANSFORMED_PATH" nameInSource="PathString" length="2048" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:437be780-2507-1ed0-a220-9c522c08a85a" name="TRANSFORMATION" nameInSource="Transformation" length="999999" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <primaryKey xmi:uuid="mmuuid:44ad1480-2507-1ed0-a220-9c522c08a85a" name="PK_SELECT_TRANS" columns="mmuuid/3f4fca00-2507-1ed0-a220-9c522c08a85a mmuuid/4080f700-2507-1ed0-a220-9c522c08a85a"/>
- </relational:BaseTable>
- <relational:BaseTable xmi:uuid="mmuuid:4545ab00-2507-1ed0-a220-9c522c08a85a" name="INSERT_TRANS" nameInSource="INSERT_TRANSFORM.INDEX" system="true" supportsUpdate="false">
- <columns xmi:uuid="mmuuid:45de4180-2507-1ed0-a220-9c522c08a85a" name="OBJECT_TYPE" nameInSource="RecordType" length="1" nullable="NO_NULLS" caseSensitive="false" signed="false" uniqueKeys="mmuuid/4b3b8c00-2507-1ed0-a220-9c522c08a85a">
- <type href="http://www.metamatrix.com/metamodels/SimpleDatatypes-instance#char"/>
- </columns>
- <columns xmi:uuid="mmuuid:470f6e80-2507-1ed0-a220-9c522c08a85a" name="TRANSFORMED_UUID" nameInSource="UUID" length="50" nullable="NO_NULLS" caseSensitive="false" signed="false" uniqueKeys="mmuuid/4b3b8c00-2507-1ed0-a220-9c522c08a85a">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:48409b80-2507-1ed0-a220-9c522c08a85a" name="TRANSFORMED_PATH" nameInSource="PathString" length="2048" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:4a0a5f00-2507-1ed0-a220-9c522c08a85a" name="TRANSFORMATION" nameInSource="Transformation" length="999999" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <primaryKey xmi:uuid="mmuuid:4b3b8c00-2507-1ed0-a220-9c522c08a85a" name="PK_INSERT_TRANS" columns="mmuuid/45de4180-2507-1ed0-a220-9c522c08a85a mmuuid/470f6e80-2507-1ed0-a220-9c522c08a85a"/>
- </relational:BaseTable>
- <relational:BaseTable xmi:uuid="mmuuid:4c6cb900-2507-1ed0-a220-9c522c08a85a" name="UPDATE_TRANS" nameInSource="UPDATE_TRANSFORM.INDEX" system="true" supportsUpdate="false">
- <columns xmi:uuid="mmuuid:4c6cb901-2507-1ed0-a220-9c522c08a85a" name="OBJECT_TYPE" nameInSource="RecordType" length="1" nullable="NO_NULLS" caseSensitive="false" signed="false" uniqueKeys="mmuuid/5271dc40-2507-1ed0-a220-9c522c08a85a">
- <type href="http://www.metamatrix.com/metamodels/SimpleDatatypes-instance#char"/>
- </columns>
- <columns xmi:uuid="mmuuid:4d9de600-2507-1ed0-a220-9c522c08a85a" name="TRANSFORMED_UUID" nameInSource="UUID" length="50" nullable="NO_NULLS" caseSensitive="false" signed="false" uniqueKeys="mmuuid/5271dc40-2507-1ed0-a220-9c522c08a85a">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:4f67a980-2507-1ed0-a220-9c522c08a85a" name="TRANSFORMED_PATH" nameInSource="PathString" length="2048" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:51316d00-2507-1ed0-a220-9c522c08a85a" name="TRANSFORMATION" nameInSource="Transformation" length="999999" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <primaryKey xmi:uuid="mmuuid:5271dc40-2507-1ed0-a220-9c522c08a85a" name="PK_UPDATE_TRANS" columns="mmuuid/4c6cb901-2507-1ed0-a220-9c522c08a85a mmuuid/4d9de600-2507-1ed0-a220-9c522c08a85a"/>
- </relational:BaseTable>
- <relational:BaseTable xmi:uuid="mmuuid:530a72c0-2507-1ed0-a220-9c522c08a85a" name="DELETE_TRANS" nameInSource="DELETE_TRANSFORM.INDEX" system="true" supportsUpdate="false">
- <columns xmi:uuid="mmuuid:53a30940-2507-1ed0-a220-9c522c08a85a" name="OBJECT_TYPE" nameInSource="RecordType" length="1" nullable="NO_NULLS" caseSensitive="false" signed="false" uniqueKeys="mmuuid/590053c0-2507-1ed0-a220-9c522c08a85a">
- <type href="http://www.metamatrix.com/metamodels/SimpleDatatypes-instance#char"/>
- </columns>
- <columns xmi:uuid="mmuuid:54d43640-2507-1ed0-a220-9c522c08a85a" name="TRANSFORMED_UUID" nameInSource="UUID" length="50" nullable="NO_NULLS" caseSensitive="false" signed="false" uniqueKeys="mmuuid/590053c0-2507-1ed0-a220-9c522c08a85a">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:56056340-2507-1ed0-a220-9c522c08a85a" name="TRANSFORMED_PATH" nameInSource="PathString" length="2048" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:57cf26c0-2507-1ed0-a220-9c522c08a85a" name="TRANSFORMATION" nameInSource="Transformation" length="999999" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <primaryKey xmi:uuid="mmuuid:590053c0-2507-1ed0-a220-9c522c08a85a" name="PK_DELETE_TRANS" columns="mmuuid/53a30940-2507-1ed0-a220-9c522c08a85a mmuuid/54d43640-2507-1ed0-a220-9c522c08a85a"/>
- </relational:BaseTable>
- <relational:BaseTable xmi:uuid="mmuuid:5998ea40-2507-1ed0-a220-9c522c08a85a" name="PROC_TRANS" nameInSource="PROC_TRANSFORM.INDEX" system="true" supportsUpdate="false">
- <columns xmi:uuid="mmuuid:5a3180c0-2507-1ed0-a220-9c522c08a85a" name="OBJECT_TYPE" nameInSource="RecordType" length="1" nullable="NO_NULLS" caseSensitive="false" signed="false" uniqueKeys="mmuuid/5f8ecb40-2507-1ed0-a220-9c522c08a85a">
- <type href="http://www.metamatrix.com/metamodels/SimpleDatatypes-instance#char"/>
- </columns>
- <columns xmi:uuid="mmuuid:5b62adc0-2507-1ed0-a220-9c522c08a85a" name="TRANSFORMED_UUID" nameInSource="UUID" length="50" nullable="NO_NULLS" caseSensitive="false" signed="false" uniqueKeys="mmuuid/5f8ecb40-2507-1ed0-a220-9c522c08a85a">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:5c93dac0-2507-1ed0-a220-9c522c08a85a" name="TRANSFORMED_PATH" nameInSource="PathString" length="2048" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:5e5d9e40-2507-1ed0-a220-9c522c08a85a" name="TRANSFORMATION" nameInSource="Transformation" length="999999" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <primaryKey xmi:uuid="mmuuid:5f8ecb40-2507-1ed0-a220-9c522c08a85a" name="PK_PROC_TRANS" columns="mmuuid/5a3180c0-2507-1ed0-a220-9c522c08a85a mmuuid/5b62adc0-2507-1ed0-a220-9c522c08a85a"/>
- </relational:BaseTable>
- <relational:BaseTable xmi:uuid="mmuuid:602761c0-2507-1ed0-a220-9c522c08a85a" name="ANNOTATIONS" nameInSource="ANNOTATION.INDEX" system="true" supportsUpdate="false">
- <columns xmi:uuid="mmuuid:60bff840-2507-1ed0-a220-9c522c08a85a" name="ANNOTATED_UUID" nameInSource="UUID" length="50" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:60bff841-2507-1ed0-a220-9c522c08a85a" name="DESCRIPTION" nameInSource="Description" length="255" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- </relational:BaseTable>
- <relational:BaseTable xmi:uuid="mmuuid:61588ec0-2507-1ed0-a220-9c522c08a85a" name="PROPERTIES" nameInSource="PROPERTIES.INDEX" system="true" supportsUpdate="false">
- <columns xmi:uuid="mmuuid:61588ec1-2507-1ed0-a220-9c522c08a85a" name="PROPERTIED_UUID" nameInSource="UUID" length="50" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:61f12540-2507-1ed0-a220-9c522c08a85a" name="PROP_NAME" nameInSource="PropertyName" length="255" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:61f12541-2507-1ed0-a220-9c522c08a85a" name="PROP_VALUE" nameInSource="PropertyValue" length="255" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- </relational:BaseTable>
- <relational:BaseTable xmi:uuid="mmuuid:cede7b00-2f00-1ed0-a220-9c522c08a85a" name="DATATYPE_TYPE_ENUM" nameInSource="DatatypeTypeEnumeration.properties" system="true" supportsUpdate="false">
- <columns xmi:uuid="mmuuid:cf8653c0-2f00-1ed0-a220-9c522c08a85a" name="CODE" nameInSource="Key" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:d01eea40-2f00-1ed0-a220-9c522c08a85a" name="NAME" nameInSource="Value" length="20" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- </relational:BaseTable>
- <relational:BaseTable xmi:uuid="mmuuid:eb50a080-2f26-1ed0-a220-9c522c08a85a" name="DATATYPE_VARIETY_ENUM" nameInSource="DatatypeVarietyEnumeration.properties" system="true" supportsUpdate="false">
- <columns xmi:uuid="mmuuid:ebe93700-2f26-1ed0-a220-9c522c08a85a" name="CODE" nameInSource="Key" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:ec81cd80-2f26-1ed0-a220-9c522c08a85a" name="NAME" nameInSource="Value" length="20" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- </relational:BaseTable>
- <relational:BaseTable xmi:uuid="mmuuid:d7ca13c0-2fad-1ed0-a220-9c522c08a85a" name="KEY_TYPE_ENUM" nameInSource="KeyTypeEnumeration.properties" system="true" supportsUpdate="false">
- <columns xmi:uuid="mmuuid:d7ca13c1-2fad-1ed0-a220-9c522c08a85a" name="CODE" nameInSource="Key" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:d862aa40-2fad-1ed0-a220-9c522c08a85a" name="NAME" nameInSource="Value" length="20" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- </relational:BaseTable>
- <relational:BaseTable xmi:uuid="mmuuid:9a28e580-393c-1ed0-a220-9c522c08a85a" name="MODEL_TYPE_ENUM" nameInSource="ModelTypeEnumeration.properties" system="true" supportsUpdate="false">
- <columns xmi:uuid="mmuuid:9ac17c00-393c-1ed0-a220-9c522c08a85a" name="CODE" nameInSource="Key" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:9ac17c01-393c-1ed0-a220-9c522c08a85a" name="NAME" nameInSource="Value" length="20" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- </relational:BaseTable>
- <relational:BaseTable xmi:uuid="mmuuid:b9315540-2c88-1ed0-a220-9c522c08a85a" name="NULL_TYPE_ENUM" nameInSource="NullTypeEnumeration.properties" system="true" supportsUpdate="false">
- <columns xmi:uuid="mmuuid:096da8c0-2c8d-1ed0-a220-9c522c08a85a" name="CODE" nameInSource="Key" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:05801380-2c90-1ed0-a220-9c522c08a85a" name="NAME" nameInSource="Value" length="20" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- </relational:BaseTable>
- <relational:BaseTable xmi:uuid="mmuuid:7cf72d00-2fb4-1ed0-a220-9c522c08a85a" name="PROC_TYPE_ENUM" nameInSource="ProcTypeEnumeration.properties" system="true" supportsUpdate="false">
- <columns xmi:uuid="mmuuid:7cf72d01-2fb4-1ed0-a220-9c522c08a85a" name="CODE" nameInSource="Key" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:7d8fc380-2fb4-1ed0-a220-9c522c08a85a" name="NAME" nameInSource="Value" length="20" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- </relational:BaseTable>
- <relational:BaseTable xmi:uuid="mmuuid:5eb76440-2d9d-1ed0-a220-9c522c08a85a" name="PROC_PARAM_TYPE_ENUM" nameInSource="ProcParamDirectionEnumeration.properties" system="true" supportsUpdate="false">
- <columns xmi:uuid="mmuuid:5eb76441-2d9d-1ed0-a220-9c522c08a85a" name="CODE" nameInSource="Key" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:5f4ffac0-2d9d-1ed0-a220-9c522c08a85a" name="NAME" nameInSource="Value" length="20" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- </relational:BaseTable>
- <relational:BaseTable xmi:uuid="mmuuid:7851fe40-2c9b-1ed0-a220-9c522c08a85a" name="SEARCH_TYPE_ENUM" nameInSource="SearchTypeEnumeration.properties" system="true" supportsUpdate="false">
- <columns xmi:uuid="mmuuid:78ea94c0-2c9b-1ed0-a220-9c522c08a85a" name="CODE" nameInSource="Key" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:79832b40-2c9b-1ed0-a220-9c522c08a85a" name="NAME" nameInSource="Value" length="20" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- </relational:BaseTable>
- <relational:BaseTable xmi:uuid="mmuuid:488fd300-2dc5-1ed0-a220-9c522c08a85a" name="ALL_KEYS" nameInSource="KEYS.INDEX" system="true" supportsUpdate="false">
- <columns xmi:uuid="mmuuid:49286980-2dc5-1ed0-a220-9c522c08a85a" name="UUID" nameInSource="UUID" length="50" nullable="NO_NULLS" caseSensitive="false" signed="false" uniqueKeys="mmuuid/5a717600-2dc5-1ed0-a220-9c522c08a85a">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:4b8ac380-2dc5-1ed0-a220-9c522c08a85a" name="UUID_OF_TABLE" nameInSource="ParentUUID" length="50" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:4ded1d80-2dc5-1ed0-a220-9c522c08a85a" name="NAME" nameInSource="Name" length="255" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:504f7780-2dc5-1ed0-a220-9c522c08a85a" name="NAME_IN_SOURCE" nameInSource="NameInSource" length="255" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:52b1d180-2dc5-1ed0-a220-9c522c08a85a" name="MODEL_NAME" nameInSource="ModelName" length="255" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:534a6800-2dc5-1ed0-a220-9c522c08a85a" name="TABLE_NAME" nameInSource="ParentFullName" length="255" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:53e2fe80-2dc5-1ed0-a220-9c522c08a85a" name="PATH" nameInSource="PathString" length="2048" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:56455880-2dc5-1ed0-a220-9c522c08a85a" name="OBJECT_TYPE" nameInSource="RecordType" length="1" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.metamatrix.com/metamodels/SimpleDatatypes-instance#char"/>
- </columns>
- <columns xmi:uuid="mmuuid:58a7b280-2dc5-1ed0-a220-9c522c08a85a" name="FULLNAME" nameInSource="FullName" length="2048" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:7d182900-8298-1edb-b82b-a644fce32f4b" name="KEY_TYPE" nameInSource="Type" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#short"/>
- </columns>
- <primaryKey xmi:uuid="mmuuid:5a717600-2dc5-1ed0-a220-9c522c08a85a" name="PK_PRIMARY_KEYS" columns="mmuuid/49286980-2dc5-1ed0-a220-9c522c08a85a"/>
- </relational:BaseTable>
- <relational:BaseTable xmi:uuid="mmuuid:6cb35480-c650-1edb-a31f-f0e78084902c" name="TABLE_TYPE_ENUM" nameInSource="TableTypeEnumeration.properties" system="true">
- <columns xmi:uuid="mmuuid:9d7e8040-c663-1edb-a31f-f0e78084902c" name="CODE" nameInSource="Key" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:9e636200-c663-1edb-a31f-f0e78084902c" name="NAME" nameInSource="Value" length="20" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- </relational:BaseTable>
- <relational:BaseTable xmi:uuid="mmuuid:57d5f780-c66d-1edb-a31f-f0e78084902c" name="KEY_COLUMNS" nameInSource="KEYS.INDEX(getColumnIdEntries)" system="true">
- <columns xmi:uuid="mmuuid:9c22c100-c688-1edb-a31f-f0e78084902c" name="KEY_UUID" nameInSource="UUID" length="50" nullable="NO_NULLS" caseSensitive="false" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:7fd55300-c68d-1edb-a31f-f0e78084902c" name="KEY_TYPE" nameInSource="Type" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#short"/>
- </columns>
- <columns xmi:uuid="mmuuid:32e3b980-c690-1edb-a31f-f0e78084902c" name="COLUMN_UUID" nameInSource="getColumnIdEntries.getUUID" length="50" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:139f9a40-b8b1-1f03-bc32-a70ec9674d30" name="COLUMN_POSITION" nameInSource="getColumnIdEntries.getPosition" length="50" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- </relational:BaseTable>
- <diagram:DiagramContainer xmi:uuid="mmuuid:87086d80-d55f-1eda-b235-cf50afc035e1" name="">
- <diagram xmi:uuid="mmuuid:852f67c0-d55f-1eda-b235-cf50afc035e1" type="packageDiagramType" target="mmuuid/6d490541-276b-1de6-8a38-9d76e1f90f2e">
- <diagramEntity xmi:uuid="mmuuid:6f8ce4c0-e9ae-1eda-b235-cf50afc035e1" xPosition="20" yPosition="20" height="559" width="229"/>
- <diagramEntity xmi:uuid="mmuuid:7165ea80-e9ae-1eda-b235-cf50afc035e1" xPosition="274" yPosition="20" height="253" width="202"/>
- <diagramEntity xmi:uuid="mmuuid:7165ea8b-e9ae-1eda-b235-cf50afc035e1" xPosition="528" yPosition="20" height="145" width="216"/>
- <diagramEntity xmi:uuid="mmuuid:7165ea90-e9ae-1eda-b235-cf50afc035e1" xPosition="782" yPosition="20" height="145" width="212"/>
- <diagramEntity xmi:uuid="mmuuid:7165ea95-e9ae-1eda-b235-cf50afc035e1" xPosition="1036" yPosition="20" height="145" width="169"/>
- <diagramEntity xmi:uuid="mmuuid:725a0e83-e9ae-1eda-b235-cf50afc035e1" xPosition="1290" yPosition="20" height="145" width="165"/>
- <diagramEntity xmi:uuid="mmuuid:725a0e88-e9ae-1eda-b235-cf50afc035e1" xPosition="1544" yPosition="20" height="145" width="190"/>
- <diagramEntity xmi:uuid="mmuuid:725a0e8d-e9ae-1eda-b235-cf50afc035e1" xPosition="1798" yPosition="20" height="649" width="230"/>
- <diagramEntity xmi:uuid="mmuuid:733ef057-e9ae-1eda-b235-cf50afc035e1" xPosition="2052" yPosition="20" height="145" width="193"/>
- <diagramEntity xmi:uuid="mmuuid:74331441-e9ae-1eda-b235-cf50afc035e1" xPosition="2306" yPosition="20" height="145" width="189"/>
- <diagramEntity xmi:uuid="mmuuid:74331446-e9ae-1eda-b235-cf50afc035e1" xPosition="274" yPosition="283" height="289" width="219"/>
- <diagramEntity xmi:uuid="mmuuid:74331453-e9ae-1eda-b235-cf50afc035e1" xPosition="528" yPosition="175" height="145" width="179"/>
- <diagramEntity xmi:uuid="mmuuid:75273844-e9ae-1eda-b235-cf50afc035e1" xPosition="782" yPosition="175" height="145" width="175"/>
- <diagramEntity xmi:uuid="mmuuid:760c1a02-e9ae-1eda-b235-cf50afc035e1" xPosition="1036" yPosition="175" height="145" width="190"/>
- <diagramEntity xmi:uuid="mmuuid:760c1a07-e9ae-1eda-b235-cf50afc035e1" xPosition="1290" yPosition="175" height="253" width="190"/>
- <diagramEntity xmi:uuid="mmuuid:77003e0a-e9ae-1eda-b235-cf50afc035e1" xPosition="1544" yPosition="175" height="145" width="184"/>
- <diagramEntity xmi:uuid="mmuuid:77003e0f-e9ae-1eda-b235-cf50afc035e1" xPosition="1544" yPosition="330" height="145" width="194"/>
- <diagramEntity xmi:uuid="mmuuid:77f46201-e9ae-1eda-b235-cf50afc035e1" xPosition="1544" yPosition="485" height="145" width="190"/>
- <diagramEntity xmi:uuid="mmuuid:77f46206-e9ae-1eda-b235-cf50afc035e1" xPosition="1544" yPosition="640" height="145" width="204"/>
- <diagramEntity xmi:uuid="mmuuid:77f4620b-e9ae-1eda-b235-cf50afc035e1" xPosition="1798" yPosition="679" height="145" width="187"/>
- <diagramEntity xmi:uuid="mmuuid:78d943c4-e9ae-1eda-b235-cf50afc035e1" xPosition="2052" yPosition="175" height="145" width="177"/>
- <diagramEntity xmi:uuid="mmuuid:78d943c9-e9ae-1eda-b235-cf50afc035e1" xPosition="2306" yPosition="175" height="469" width="230"/>
- <diagramEntity xmi:uuid="mmuuid:79cd67d1-e9ae-1eda-b235-cf50afc035e1" xPosition="20" yPosition="589" height="145" width="178"/>
- <diagramEntity xmi:uuid="mmuuid:7ab24980-e9ae-1eda-b235-cf50afc035e1" xPosition="274" yPosition="582" height="145" width="174"/>
- <diagramEntity xmi:uuid="mmuuid:7ab24985-e9ae-1eda-b235-cf50afc035e1" xPosition="528" yPosition="330" height="145" width="195"/>
- <diagramEntity xmi:uuid="mmuuid:7ba66d80-e9ae-1eda-b235-cf50afc035e1" xPosition="782" yPosition="330" height="145" width="203"/>
- <diagramEntity xmi:uuid="mmuuid:7ba66d85-e9ae-1eda-b235-cf50afc035e1" xPosition="1036" yPosition="330" height="235" width="230"/>
- <diagramEntity xmi:uuid="mmuuid:7c9a9182-e9ae-1eda-b235-cf50afc035e1" xPosition="1290" yPosition="438" height="217" width="217"/>
- <diagramEntity xmi:uuid="mmuuid:7d7f7340-e9ae-1eda-b235-cf50afc035e1" xPosition="1290" yPosition="665" height="145" width="188"/>
- <diagramEntity xmi:uuid="mmuuid:7d7f7345-e9ae-1eda-b235-cf50afc035e1" xPosition="1544" yPosition="795" height="145" width="184"/>
- <diagramEntity xmi:uuid="mmuuid:7e739740-e9ae-1eda-b235-cf50afc035e1" xPosition="1798" yPosition="834" height="145" width="205"/>
- <diagramEntity xmi:uuid="mmuuid:7e739745-e9ae-1eda-b235-cf50afc035e1" xPosition="2052" yPosition="330" height="163" width="204"/>
- <diagramEntity xmi:uuid="mmuuid:7f67bb45-e9ae-1eda-b235-cf50afc035e1" xPosition="2052" yPosition="503" height="145" width="213"/>
- <diagramEntity xmi:uuid="mmuuid:7f67bb4a-e9ae-1eda-b235-cf50afc035e1" xPosition="2306" yPosition="654" height="145" width="200"/>
- <diagramEntity xmi:uuid="mmuuid:804c9d04-e9ae-1eda-b235-cf50afc035e1" xPosition="20" yPosition="744" height="163" width="227"/>
- <diagramEntity xmi:uuid="mmuuid:804c9d0a-e9ae-1eda-b235-cf50afc035e1" xPosition="274" yPosition="737" height="307" width="201"/>
- <diagramEntity xmi:uuid="mmuuid:8140c10d-e9ae-1eda-b235-cf50afc035e1" xPosition="528" yPosition="485" height="127" width="210"/>
- <diagramEntity xmi:uuid="mmuuid:8225a2c3-e9ae-1eda-b235-cf50afc035e1" xPosition="782" yPosition="485" height="145" width="201"/>
- <diagramEntity xmi:uuid="mmuuid:8319c6cc-e9ae-1eda-b235-cf50afc035e1" name="MODELS" modelObject="mmuuid/6c9bf840-2506-1ed0-a220-9c522c08a85a" xPosition="246" yPosition="20" height="295" width="241"/>
- <diagramEntity xmi:uuid="mmuuid:84f2cc81-e9ae-1eda-b235-cf50afc035e1" name="TABLES" modelObject="mmuuid/7faec840-2506-1ed0-a220-9c522c08a85a" xPosition="472" yPosition="20" height="280" width="197"/>
- <diagramEntity xmi:uuid="mmuuid:84f2cc8f-e9ae-1eda-b235-cf50afc035e1" name="COLUMNS" modelObject="mmuuid/919fad80-2506-1ed0-a220-9c522c08a85a" xPosition="698" yPosition="20" height="550" width="214"/>
- <diagramEntity xmi:uuid="mmuuid:86db1489-e9ae-1eda-b235-cf50afc035e1" name="PRIMARY_KEYS" modelObject="mmuuid/bacf8040-2506-1ed0-a220-9c522c08a85a" xPosition="924" yPosition="20" height="220" width="197"/>
- <diagramEntity xmi:uuid="mmuuid:87bff640-e9ae-1eda-b235-cf50afc035e1" name="UNIQUE_KEYS" modelObject="mmuuid/c6bb4240-2506-1ed0-a220-9c522c08a85a" xPosition="1150" yPosition="20" height="220" width="197"/>
- <diagramEntity xmi:uuid="mmuuid:87bff64b-e9ae-1eda-b235-cf50afc035e1" name="INDEXES" modelObject="mmuuid/d33f9ac0-2506-1ed0-a220-9c522c08a85a" xPosition="1376" yPosition="20" height="205" width="197"/>
- <diagramEntity xmi:uuid="mmuuid:88b41a49-e9ae-1eda-b235-cf50afc035e1" name="ACCESS_PATTERNS" modelObject="mmuuid/df3a9f00-2506-1ed0-a220-9c522c08a85a" xPosition="20" yPosition="264" height="220" width="197"/>
- <diagramEntity xmi:uuid="mmuuid:8998fc0a-e9ae-1eda-b235-cf50afc035e1" name="FOREIGN_KEYS" modelObject="mmuuid/ebbef780-2506-1ed0-a220-9c522c08a85a" xPosition="246" yPosition="309" height="235" width="219"/>
- <diagramEntity xmi:uuid="mmuuid:8a8d200a-e9ae-1eda-b235-cf50afc035e1" name="PROCS" modelObject="mmuuid/f8dbe680-2506-1ed0-a220-9c522c08a85a" xPosition="472" yPosition="309" height="235" width="197"/>
- <diagramEntity xmi:uuid="mmuuid:8b81440a-e9ae-1eda-b235-cf50afc035e1" name="PROC_PARAMS" modelObject="mmuuid/06a0ae40-2507-1ed0-a220-9c522c08a85a" xPosition="472" yPosition="553" height="370" width="208"/>
- <diagramEntity xmi:uuid="mmuuid:8c6625c8-e9ae-1eda-b235-cf50afc035e1" name="PROC_RESULT_SETS" modelObject="mmuuid/132506c0-2507-1ed0-a220-9c522c08a85a" xPosition="698" yPosition="579" height="220" width="197"/>
- <diagramEntity xmi:uuid="mmuuid:8d5a49c0-e9ae-1eda-b235-cf50afc035e1" name="DATATYPES" modelObject="mmuuid/1f10c8c0-2507-1ed0-a220-9c522c08a85a" xPosition="924" yPosition="249" height="445" width="211"/>
- <diagramEntity xmi:uuid="mmuuid:8e4e6dc6-e9ae-1eda-b235-cf50afc035e1" name="SELECT_TRANS" modelObject="mmuuid/3eb73380-2507-1ed0-a220-9c522c08a85a" xPosition="1150" yPosition="249" height="145" width="218"/>
- <diagramEntity xmi:uuid="mmuuid:8f334f80-e9ae-1eda-b235-cf50afc035e1" name="INSERT_TRANS" modelObject="mmuuid/4545ab00-2507-1ed0-a220-9c522c08a85a" xPosition="1376" yPosition="234" height="145" width="218"/>
- <diagramEntity xmi:uuid="mmuuid:8f334f86-e9ae-1eda-b235-cf50afc035e1" name="UPDATE_TRANS" modelObject="mmuuid/4c6cb900-2507-1ed0-a220-9c522c08a85a" xPosition="1376" yPosition="388" height="145" width="218"/>
- <diagramEntity xmi:uuid="mmuuid:90277385-e9ae-1eda-b235-cf50afc035e1" name="DELETE_TRANS" modelObject="mmuuid/530a72c0-2507-1ed0-a220-9c522c08a85a" xPosition="20" yPosition="493" height="145" width="218"/>
- <diagramEntity xmi:uuid="mmuuid:910c5542-e9ae-1eda-b235-cf50afc035e1" name="PROC_TRANS" modelObject="mmuuid/5998ea40-2507-1ed0-a220-9c522c08a85a" xPosition="246" yPosition="553" height="145" width="218"/>
- <diagramEntity xmi:uuid="mmuuid:92007942-e9ae-1eda-b235-cf50afc035e1" name="ANNOTATIONS" modelObject="mmuuid/602761c0-2507-1ed0-a220-9c522c08a85a" xPosition="246" yPosition="707" height="118" width="191"/>
- <diagramEntity xmi:uuid="mmuuid:92f49d40-e9ae-1eda-b235-cf50afc035e1" name="PROPERTIES" modelObject="mmuuid/61588ec0-2507-1ed0-a220-9c522c08a85a" xPosition="246" yPosition="804" height="103" width="193"/>
- <diagramEntity xmi:uuid="mmuuid:92f49d44-e9ae-1eda-b235-cf50afc035e1" name="DATATYPE_TYPE_ENUM" modelObject="mmuuid/cede7b00-2f00-1ed0-a220-9c522c08a85a" xPosition="246" yPosition="916" height="88" width="173"/>
- <diagramEntity xmi:uuid="mmuuid:93d97f02-e9ae-1eda-b235-cf50afc035e1" name="DATATYPE_VARIETY_ENUM" modelObject="mmuuid/eb50a080-2f26-1ed0-a220-9c522c08a85a" xPosition="472" yPosition="932" height="88" width="194"/>
- <diagramEntity xmi:uuid="mmuuid:93d97f05-e9ae-1eda-b235-cf50afc035e1" name="KEY_TYPE_ENUM" modelObject="mmuuid/d7ca13c0-2fad-1ed0-a220-9c522c08a85a" xPosition="698" yPosition="823" height="88" width="135"/>
- <diagramEntity xmi:uuid="mmuuid:94cda302-e9ae-1eda-b235-cf50afc035e1" name="MODEL_TYPE_ENUM" modelObject="mmuuid/9a28e580-393c-1ed0-a220-9c522c08a85a" xPosition="924" yPosition="703" height="88" width="153"/>
- <diagramEntity xmi:uuid="mmuuid:95c1c702-e9ae-1eda-b235-cf50afc035e1" name="NULL_TYPE_ENUM" modelObject="mmuuid/b9315540-2c88-1ed0-a220-9c522c08a85a" xPosition="1150" yPosition="403" height="88" width="142"/>
- <diagramEntity xmi:uuid="mmuuid:96a6a8c3-e9ae-1eda-b235-cf50afc035e1" name="PROC_TYPE_ENUM" modelObject="mmuuid/7cf72d00-2fb4-1ed0-a220-9c522c08a85a" xPosition="1376" yPosition="542" height="88" width="145"/>
- <diagramEntity xmi:uuid="mmuuid:979accc2-e9ae-1eda-b235-cf50afc035e1" name="PROC_PARAM_TYPE_ENUM" modelObject="mmuuid/5eb76440-2d9d-1ed0-a220-9c522c08a85a" xPosition="20" yPosition="647" height="88" width="193"/>
- <diagramEntity xmi:uuid="mmuuid:987fae82-e9ae-1eda-b235-cf50afc035e1" name="SEARCH_TYPE_ENUM" modelObject="mmuuid/7851fe40-2c9b-1ed0-a220-9c522c08a85a" xPosition="20" yPosition="744" height="88" width="159"/>
- <diagramEntity xmi:uuid="mmuuid:9973d280-e9ae-1eda-b235-cf50afc035e1" name="ALL_KEYS" modelObject="mmuuid/488fd300-2dc5-1ed0-a220-9c522c08a85a" xPosition="20" yPosition="841" height="235" width="197"/>
- <diagramEntity xmi:uuid="mmuuid:655eff80-c651-1edb-a31f-f0e78084902c" name="TABLE_TYPE_ENUM" modelObject="mmuuid/6cb35480-c650-1edb-a31f-f0e78084902c" xPosition="246" yPosition="1013" height="88" width="149"/>
- <diagramEntity xmi:uuid="mmuuid:dcfe1a00-c66d-1edb-a31f-f0e78084902c" name="KEY_COLUMNS" modelObject="mmuuid/57d5f780-c66d-1edb-a31f-f0e78084902c" xPosition="472" yPosition="1029" height="118" width="181"/>
- <diagramEntity xmi:uuid="mmuuid:517c7300-d621-1edb-9223-85de9ced5f1c" name="KEY_REFERENCES" xPosition="10" yPosition="10" height="102" width="216"/>
- <diagramEntity xmi:uuid="mmuuid:70733f80-c9c8-1ede-943a-ad14f214907c" name="VDB_INFO" modelObject="mmuuid/f1ca5240-c9c7-1ede-943a-ad14f214907c" xPosition="698" yPosition="920" height="88" width="143"/>
- <diagramEntity xmi:uuid="mmuuid:4a65f140-3ba5-1f33-9f26-c47bba154acc" name="GET_CHAR_RSRC_CNTNTS" modelObject="mmuuid/0d93d1c0-39ce-1f33-9f26-c47bba154acc"/>
- <diagramEntity xmi:uuid="mmuuid:4a65f141-3ba5-1f33-9f26-c47bba154acc" name="GET_BINARY_RSRC_CNTNTS" modelObject="mmuuid/0d93d1c7-39ce-1f33-9f26-c47bba154acc"/>
- <diagramEntity xmi:uuid="mmuuid:4a65f143-3ba5-1f33-9f26-c47bba154acc" name="GET_VDB_RSRC_INFO" modelObject="mmuuid/0e78b387-39ce-1f33-9f26-c47bba154acc" xPosition="54" yPosition="198"/>
- <diagramEntity xmi:uuid="mmuuid:29dbef40-f52c-1039-bb39-85b7143bc62d" modelObject="mmuuid/bbb4b1c5-f529-1039-bb39-85b7143bc62d"/>
- </diagram>
- <diagram xmi:uuid="mmuuid:c18d0dc0-f52b-1039-bb39-85b7143bc62d" type="packageDiagramType" target="mmuuid/bbb4b1c5-f529-1039-bb39-85b7143bc62d">
- <diagramEntity xmi:uuid="mmuuid:2d663100-f538-1039-bb39-85b7143bc62d" modelObject="mmuuid/250df600-f538-1039-bb39-85b7143bc62d" xPosition="20" yPosition="20"/>
- <diagramEntity xmi:uuid="mmuuid:2e5a5500-f538-1039-bb39-85b7143bc62d" modelObject="mmuuid/250df607-f538-1039-bb39-85b7143bc62d" xPosition="40" yPosition="30"/>
- <diagramEntity xmi:uuid="mmuuid:2e5a5501-f538-1039-bb39-85b7143bc62d" modelObject="mmuuid/250df612-f538-1039-bb39-85b7143bc62d" xPosition="60" yPosition="40"/>
- <diagramEntity xmi:uuid="mmuuid:30335ac0-f538-1039-bb39-85b7143bc62d" modelObject="mmuuid/250df622-f538-1039-bb39-85b7143bc62d" xPosition="80" yPosition="50"/>
- <diagramEntity xmi:uuid="mmuuid:31277ec0-f538-1039-bb39-85b7143bc62d" modelObject="mmuuid/250df62f-f538-1039-bb39-85b7143bc62d" xPosition="100" yPosition="60"/>
- <diagramEntity xmi:uuid="mmuuid:320c6080-f538-1039-bb39-85b7143bc62d" modelObject="mmuuid/250df638-f538-1039-bb39-85b7143bc62d" xPosition="120" yPosition="70"/>
- <diagramEntity xmi:uuid="mmuuid:320c6081-f538-1039-bb39-85b7143bc62d" modelObject="mmuuid/250df640-f538-1039-bb39-85b7143bc62d" xPosition="140" yPosition="80"/>
- <diagramEntity xmi:uuid="mmuuid:33008480-f538-1039-bb39-85b7143bc62d" modelObject="mmuuid/250df648-f538-1039-bb39-85b7143bc62d" xPosition="160" yPosition="90"/>
- <diagramEntity xmi:uuid="mmuuid:33f4a880-f538-1039-bb39-85b7143bc62d" modelObject="mmuuid/250df650-f538-1039-bb39-85b7143bc62d" xPosition="180" yPosition="100"/>
- <diagramEntity xmi:uuid="mmuuid:33f4a881-f538-1039-bb39-85b7143bc62d" modelObject="mmuuid/250df658-f538-1039-bb39-85b7143bc62d" xPosition="200" yPosition="110"/>
- <diagramEntity xmi:uuid="mmuuid:34d98a40-f538-1039-bb39-85b7143bc62d" modelObject="mmuuid/250df660-f538-1039-bb39-85b7143bc62d" xPosition="220" yPosition="120"/>
- <diagramEntity xmi:uuid="mmuuid:35cdae40-f538-1039-bb39-85b7143bc62d" modelObject="mmuuid/250df668-f538-1039-bb39-85b7143bc62d" xPosition="240" yPosition="130"/>
- <diagramEntity xmi:uuid="mmuuid:36b29000-f538-1039-bb39-85b7143bc62d" modelObject="mmuuid/250df670-f538-1039-bb39-85b7143bc62d" xPosition="260" yPosition="140"/>
- <diagramEntity xmi:uuid="mmuuid:36b29001-f538-1039-bb39-85b7143bc62d" modelObject="mmuuid/250df678-f538-1039-bb39-85b7143bc62d" xPosition="280" yPosition="150"/>
- <diagramEntity xmi:uuid="mmuuid:42db5b00-f538-1039-bb39-85b7143bc62d" modelObject="mmuuid/250df681-f538-1039-bb39-85b7143bc62d" xPosition="300" yPosition="160"/>
- <diagramEntity xmi:uuid="mmuuid:42db5b01-f538-1039-bb39-85b7143bc62d" modelObject="mmuuid/250df682-f538-1039-bb39-85b7143bc62d" xPosition="320" yPosition="170"/>
- <diagramEntity xmi:uuid="mmuuid:42db5b02-f538-1039-bb39-85b7143bc62d" modelObject="mmuuid/250df683-f538-1039-bb39-85b7143bc62d" xPosition="340" yPosition="180"/>
- <diagramEntity xmi:uuid="mmuuid:42db5b03-f538-1039-bb39-85b7143bc62d" modelObject="mmuuid/250df684-f538-1039-bb39-85b7143bc62d" xPosition="360" yPosition="190"/>
- <diagramEntity xmi:uuid="mmuuid:43c03cc0-f538-1039-bb39-85b7143bc62d" modelObject="mmuuid/250df685-f538-1039-bb39-85b7143bc62d" xPosition="380" yPosition="200"/>
- </diagram>
- </diagram:DiagramContainer>
- <relational:BaseTable xmi:uuid="mmuuid:f1ca5240-c9c7-1ede-943a-ad14f214907c" name="VDB_INFO" nameInSource="VDBS.INDEX" system="true" supportsUpdate="false">
- <columns xmi:uuid="mmuuid:38317240-c9cd-1ede-943a-ad14f214907c" name="NAME" nameInSource="VdbRuntimeName" length="255" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:39259640-c9cd-1ede-943a-ad14f214907c" name="VERSION" nameInSource="VdbRuntimeVersion" length="50" nullable="NO_NULLS" caseSensitive="false" searchability="UNSEARCHABLE" signed="false">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- </relational:BaseTable>
- <relational:Procedure xmi:uuid="mmuuid:0d93d1c0-39ce-1f33-9f26-c47bba154acc" name="GET_CHAR_RSRC_CNTNTS" nameInSource="FILES.INDEX" updateCount="ZERO">
- <parameters xmi:uuid="mmuuid:0d93d1c2-39ce-1f33-9f26-c47bba154acc" name="PATH_IN_VDB" nameInSource="getPathInVdb" length="50">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </parameters>
- <parameters xmi:uuid="mmuuid:0d93d1c1-39ce-1f33-9f26-c47bba154acc" name="TKNS" nameInSource="setTokens" length="50">
- <type href="http://www.metamatrix.com/metamodels/SimpleDatatypes-instance#object"/>
- </parameters>
- <parameters xmi:uuid="mmuuid:0d93d1c6-39ce-1f33-9f26-c47bba154acc" name="TKN_RPLCMNTS" nameInSource="setTokenReplacements" length="50">
- <type href="http://www.metamatrix.com/metamodels/SimpleDatatypes-instance#object"/>
- </parameters>
- <result xmi:uuid="mmuuid:0d93d1c3-39ce-1f33-9f26-c47bba154acc" name="RSRC_CNTNTS" nameInSource="FILES.INDEX">
- <columns xmi:uuid="mmuuid:0d93d1c4-39ce-1f33-9f26-c47bba154acc" name="PATH_IN_VDB" nameInSource="PathInVdb" length="50">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:0d93d1c5-39ce-1f33-9f26-c47bba154acc" name="RSRC_STRM" nameInSource="FileRecord">
- <type href="http://www.metamatrix.com/metamodels/SimpleDatatypes-instance#clob"/>
- </columns>
- </result>
- </relational:Procedure>
- <relational:Procedure xmi:uuid="mmuuid:0d93d1c7-39ce-1f33-9f26-c47bba154acc" name="GET_BINARY_RSRC_CNTNTS" nameInSource="FILES.INDEX" updateCount="ZERO">
- <parameters xmi:uuid="mmuuid:0e78b383-39ce-1f33-9f26-c47bba154acc" name="PATH_IN_VDB" nameInSource="getPathInVdb" length="50">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </parameters>
- <result xmi:uuid="mmuuid:0e78b380-39ce-1f33-9f26-c47bba154acc" name="RSRC_CNTNTS" nameInSource="FILES.INDEX">
- <columns xmi:uuid="mmuuid:0e78b381-39ce-1f33-9f26-c47bba154acc" name="PATH_IN_VDB" nameInSource="PathInVdb" length="50">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:0e78b382-39ce-1f33-9f26-c47bba154acc" name="RSRC_STRM" nameInSource="FileRecord">
- <type href="http://www.metamatrix.com/metamodels/SimpleDatatypes-instance#blob"/>
- </columns>
- </result>
- </relational:Procedure>
- <relational:Procedure xmi:uuid="mmuuid:0e78b387-39ce-1f33-9f26-c47bba154acc" name="GET_VDB_RSRC_INFO" nameInSource="FILES.INDEX" updateCount="ZERO">
- <result xmi:uuid="mmuuid:0e78b388-39ce-1f33-9f26-c47bba154acc" name="RSRC_INFO" nameInSource="FILES.INDEX">
- <columns xmi:uuid="mmuuid:0e78b38a-39ce-1f33-9f26-c47bba154acc" name="PATH_IN_VDB" nameInSource="getPathInVdb" length="50">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:0e78b389-39ce-1f33-9f26-c47bba154acc" name="IS_BINARY" nameInSource="getBinary">
- <type href="http://www.w3.org/2001/XMLSchema#boolean"/>
- </columns>
- </result>
- </relational:Procedure>
- <relational:Schema xmi:uuid="mmuuid:bbb4b1c5-f529-1039-bb39-85b7143bc62d" name="Metabase">
- <tables xsi:type="relational:BaseTable" xmi:uuid="mmuuid:250df600-f538-1039-bb39-85b7143bc62d" name="Models" nameInSource="MDR_MODELS">
- <columns xmi:uuid="mmuuid:250df601-f538-1039-bb39-85b7143bc62d" name="id" nameInSource="ID" nullable="NO_NULLS" uniqueKeys="mmuuid/250df603-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#long"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df605-f538-1039-bb39-85b7143bc62d" name="name" nameInSource="NAME" length="64" nullable="NO_NULLS" uniqueKeys="mmuuid/250df606-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df604-f538-1039-bb39-85b7143bc62d" name="path" nameInSource="PATH" length="256" nullable="NO_NULLS" uniqueKeys="mmuuid/250df606-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df602-f538-1039-bb39-85b7143bc62d" name="isMetamodel" nameInSource="IS_METAMODEL" length="1">
- <type href="http://www.w3.org/2001/XMLSchema#boolean"/>
- </columns>
- <primaryKey xmi:uuid="mmuuid:250df603-f538-1039-bb39-85b7143bc62d" name="mKey" nameInSource="M_KEY" columns="mmuuid/250df601-f538-1039-bb39-85b7143bc62d"/>
- <uniqueConstraints xmi:uuid="mmuuid:250df606-f538-1039-bb39-85b7143bc62d" name="mKeyFqName" nameInSource="M_KEY_FQ_NAME" columns="mmuuid/250df604-f538-1039-bb39-85b7143bc62d mmuuid/250df605-f538-1039-bb39-85b7143bc62d"/>
- </tables>
- <tables xsi:type="relational:BaseTable" xmi:uuid="mmuuid:250df607-f538-1039-bb39-85b7143bc62d" name="Objects" nameInSource="MDR_OBJECTS">
- <columns xmi:uuid="mmuuid:250df611-f538-1039-bb39-85b7143bc62d" name="id" nameInSource="ID" nullable="NO_NULLS" uniqueKeys="mmuuid/250df60a-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#long"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df60e-f538-1039-bb39-85b7143bc62d" name="uuid" nameInSource="UUID" length="64" indexes="mmuuid/250df681-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df610-f538-1039-bb39-85b7143bc62d" name="name" nameInSource="NAME" length="64" nullable="NO_NULLS" indexes="mmuuid/250df682-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df60f-f538-1039-bb39-85b7143bc62d" name="path" nameInSource="PATH" length="256" nullable="NO_NULLS" indexes="mmuuid/250df682-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df609-f538-1039-bb39-85b7143bc62d" name="className" length="64" nullable="NO_NULLS" indexes="mmuuid/250df682-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df60d-f538-1039-bb39-85b7143bc62d" name="classId" nameInSource="CLASS_ID" indexes="mmuuid/250df683-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#long"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df60c-f538-1039-bb39-85b7143bc62d" name="containerId" nameInSource="CONTAINER_ID" indexes="mmuuid/250df684-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#long"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df60b-f538-1039-bb39-85b7143bc62d" name="modelId" nameInSource="MODEL_ID" indexes="mmuuid/250df685-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#long"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df608-f538-1039-bb39-85b7143bc62d" name="isUnresolved" nameInSource="IS_UNRESOLVED" nullable="NO_NULLS">
- <type href="http://www.w3.org/2001/XMLSchema#boolean"/>
- </columns>
- <primaryKey xmi:uuid="mmuuid:250df60a-f538-1039-bb39-85b7143bc62d" name="oKey" nameInSource="O_KEY" columns="mmuuid/250df611-f538-1039-bb39-85b7143bc62d" foreignKeys="mmuuid/250df630-f538-1039-bb39-85b7143bc62d mmuuid/250df636-f538-1039-bb39-85b7143bc62d mmuuid/250df627-f538-1039-bb39-85b7143bc62d mmuuid/250df61c-f538-1039-bb39-85b7143bc62d mmuuid/250df618-f538-1039-bb39-85b7143bc62d mmuuid/250df665-f538-1039-bb39-85b7143bc62d mmuuid/250df64c-f538-1039-bb39-85b7143bc62d mmuuid/250df647-f538-1039-bb39-85b7143bc62d mmuuid/250df67f-f538-1039-bb39-85b7143bc62d mmuuid/250df66e-f538-1039-bb39-85b7143bc62d mmuuid/250df659-f538-1039-bb39-85b7143bc62d mmuuid/250df654-f538-1039-bb39-85b7143bc62d mmuuid/250df63e-f538-1039-bb39-85b7143bc62d mmuuid/250df673-f538-1039-bb39-85b7143bc62d mmuuid/250df629-f538-1039-bb39-85b7143bc62d"/>
- </tables>
- <tables xsi:type="relational:BaseTable" xmi:uuid="mmuuid:250df612-f538-1039-bb39-85b7143bc62d" name="ReferenceFeatures" nameInSource="MDR_REF_FEATURES">
- <columns xmi:uuid="mmuuid:250df614-f538-1039-bb39-85b7143bc62d" name="id" nameInSource="ID" nullable="NO_NULLS" uniqueKeys="mmuuid/250df619-f538-1039-bb39-85b7143bc62d" foreignKeys="mmuuid/250df61c-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#long"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df621-f538-1039-bb39-85b7143bc62d" name="containerId" nameInSource="CONTAINER_ID" uniqueKeys="mmuuid/250df61d-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#long"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df620-f538-1039-bb39-85b7143bc62d" name="index" nameInSource="NDX" nullable="NO_NULLS" uniqueKeys="mmuuid/250df61d-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df615-f538-1039-bb39-85b7143bc62d" name="datatypeId" nameInSource="DATATYPE_ID" nullable="NO_NULLS" foreignKeys="mmuuid/250df618-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#long"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df617-f538-1039-bb39-85b7143bc62d" name="lowerBound" nameInSource="LOWER_BOUND">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df613-f538-1039-bb39-85b7143bc62d" name="upperBound" nameInSource="UPPER_BOUND">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df61a-f538-1039-bb39-85b7143bc62d" name="isChangeable" nameInSource="IS_CHANGEABLE" nullable="NO_NULLS">
- <type href="http://www.w3.org/2001/XMLSchema#boolean"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df61e-f538-1039-bb39-85b7143bc62d" name="isUnsettable" nameInSource="IS_UNSETTABLE" nullable="NO_NULLS">
- <type href="http://www.w3.org/2001/XMLSchema#boolean"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df616-f538-1039-bb39-85b7143bc62d" name="isContainment" nameInSource="IS_CONTAINMENT" nullable="NO_NULLS">
- <type href="http://www.w3.org/2001/XMLSchema#boolean"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df61b-f538-1039-bb39-85b7143bc62d" name="oppositeId" nameInSource="OPPOSITE_ID" foreignKeys="mmuuid/250df61f-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#long"/>
- </columns>
- <foreignKeys xmi:uuid="mmuuid:250df61c-f538-1039-bb39-85b7143bc62d" name="rfKeyId" nameInSource="RF_KEY_ID" columns="mmuuid/250df614-f538-1039-bb39-85b7143bc62d" uniqueKey="mmuuid/250df60a-f538-1039-bb39-85b7143bc62d"/>
- <foreignKeys xmi:uuid="mmuuid:250df618-f538-1039-bb39-85b7143bc62d" name="rfKeyDatatype" nameInSource="RF_KEY_DATATYPE" columns="mmuuid/250df615-f538-1039-bb39-85b7143bc62d" uniqueKey="mmuuid/250df60a-f538-1039-bb39-85b7143bc62d"/>
- <foreignKeys xmi:uuid="mmuuid:250df61f-f538-1039-bb39-85b7143bc62d" name="rfKeyOpposite" nameInSource="RF_KEY_OPPOSITE" foreignKeyMultiplicity="ONE" columns="mmuuid/250df61b-f538-1039-bb39-85b7143bc62d" uniqueKey="mmuuid/250df619-f538-1039-bb39-85b7143bc62d"/>
- <primaryKey xmi:uuid="mmuuid:250df619-f538-1039-bb39-85b7143bc62d" name="rfKey" nameInSource="RF_KEY" columns="mmuuid/250df614-f538-1039-bb39-85b7143bc62d" foreignKeys="mmuuid/250df632-f538-1039-bb39-85b7143bc62d mmuuid/250df61f-f538-1039-bb39-85b7143bc62d"/>
- <uniqueConstraints xmi:uuid="mmuuid:250df61d-f538-1039-bb39-85b7143bc62d" name="rfKeyIndex" nameInSource="RF_KEY_NDX" columns="mmuuid/250df621-f538-1039-bb39-85b7143bc62d mmuuid/250df620-f538-1039-bb39-85b7143bc62d"/>
- </tables>
- <tables xsi:type="relational:BaseTable" xmi:uuid="mmuuid:250df622-f538-1039-bb39-85b7143bc62d" name="AttributeFeatures" nameInSource="MDR_ATTR_FEATURES">
- <columns xmi:uuid="mmuuid:250df623-f538-1039-bb39-85b7143bc62d" name="id" nameInSource="ID" nullable="NO_NULLS" uniqueKeys="mmuuid/250df62b-f538-1039-bb39-85b7143bc62d" foreignKeys="mmuuid/250df629-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#long"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df62c-f538-1039-bb39-85b7143bc62d" name="containerId" nameInSource="CONTAINER_ID" uniqueKeys="mmuuid/250df62d-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#long"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df626-f538-1039-bb39-85b7143bc62d" name="index" nameInSource="NDX" nullable="NO_NULLS" uniqueKeys="mmuuid/250df62d-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df628-f538-1039-bb39-85b7143bc62d" name="datatypeId" nameInSource="DATATYPE_ID" nullable="NO_NULLS" foreignKeys="mmuuid/250df627-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#long"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df62e-f538-1039-bb39-85b7143bc62d" name="lowerBound" nameInSource="LOWER_BOUND">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df625-f538-1039-bb39-85b7143bc62d" name="upperBound" nameInSource="UPPER_BOUND">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df62a-f538-1039-bb39-85b7143bc62d" name="isChangeable" nameInSource="IS_CHANGEABLE" nullable="NO_NULLS">
- <type href="http://www.w3.org/2001/XMLSchema#boolean"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df624-f538-1039-bb39-85b7143bc62d" name="isUnsettable" nameInSource="IS_UNSETTABLE" nullable="NO_NULLS">
- <type href="http://www.w3.org/2001/XMLSchema#boolean"/>
- </columns>
- <foreignKeys xmi:uuid="mmuuid:250df629-f538-1039-bb39-85b7143bc62d" name="afKeyId" nameInSource="AF_KEY_ID" columns="mmuuid/250df623-f538-1039-bb39-85b7143bc62d" uniqueKey="mmuuid/250df60a-f538-1039-bb39-85b7143bc62d"/>
- <foreignKeys xmi:uuid="mmuuid:250df627-f538-1039-bb39-85b7143bc62d" name="afKeyDatatype" nameInSource="AF_KEY_DATATYPE" columns="mmuuid/250df628-f538-1039-bb39-85b7143bc62d" uniqueKey="mmuuid/250df60a-f538-1039-bb39-85b7143bc62d"/>
- <primaryKey xmi:uuid="mmuuid:250df62b-f538-1039-bb39-85b7143bc62d" name="afKey" nameInSource="AF_KEY" columns="mmuuid/250df623-f538-1039-bb39-85b7143bc62d" foreignKeys="mmuuid/250df663-f538-1039-bb39-85b7143bc62d mmuuid/250df64e-f538-1039-bb39-85b7143bc62d mmuuid/250df641-f538-1039-bb39-85b7143bc62d mmuuid/250df67c-f538-1039-bb39-85b7143bc62d mmuuid/250df66b-f538-1039-bb39-85b7143bc62d mmuuid/250df65a-f538-1039-bb39-85b7143bc62d mmuuid/250df656-f538-1039-bb39-85b7143bc62d mmuuid/250df63d-f538-1039-bb39-85b7143bc62d mmuuid/250df672-f538-1039-bb39-85b7143bc62d"/>
- <uniqueConstraints xmi:uuid="mmuuid:250df62d-f538-1039-bb39-85b7143bc62d" name="afKeyIndex" nameInSource="AF_KEY_NDX" columns="mmuuid/250df62c-f538-1039-bb39-85b7143bc62d mmuuid/250df626-f538-1039-bb39-85b7143bc62d"/>
- </tables>
- <tables xsi:type="relational:BaseTable" xmi:uuid="mmuuid:250df62f-f538-1039-bb39-85b7143bc62d" name="References" nameInSource="MDR_REFS">
- <columns xmi:uuid="mmuuid:250df634-f538-1039-bb39-85b7143bc62d" name="objectId" nameInSource="OBJECT_ID" nullable="NO_NULLS" uniqueKeys="mmuuid/250df635-f538-1039-bb39-85b7143bc62d" foreignKeys="mmuuid/250df630-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#long"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df631-f538-1039-bb39-85b7143bc62d" name="featureId" nameInSource="FEATURE_ID" nullable="NO_NULLS" uniqueKeys="mmuuid/250df635-f538-1039-bb39-85b7143bc62d" foreignKeys="mmuuid/250df632-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#long"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df633-f538-1039-bb39-85b7143bc62d" name="index" nameInSource="NDX" nullable="NO_NULLS" uniqueKeys="mmuuid/250df635-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df637-f538-1039-bb39-85b7143bc62d" name="toId" nameInSource="TO_ID" nullable="NO_NULLS" foreignKeys="mmuuid/250df636-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#long"/>
- </columns>
- <foreignKeys xmi:uuid="mmuuid:250df630-f538-1039-bb39-85b7143bc62d" name="rKeyObject" nameInSource="R_KEY_OBJECT" columns="mmuuid/250df634-f538-1039-bb39-85b7143bc62d" uniqueKey="mmuuid/250df60a-f538-1039-bb39-85b7143bc62d"/>
- <foreignKeys xmi:uuid="mmuuid:250df632-f538-1039-bb39-85b7143bc62d" name="rKeyFeature" nameInSource="R_KEY_FEATURE" columns="mmuuid/250df631-f538-1039-bb39-85b7143bc62d" uniqueKey="mmuuid/250df619-f538-1039-bb39-85b7143bc62d"/>
- <foreignKeys xmi:uuid="mmuuid:250df636-f538-1039-bb39-85b7143bc62d" name="rKeyTo" nameInSource="R_KEY_TO" columns="mmuuid/250df637-f538-1039-bb39-85b7143bc62d" uniqueKey="mmuuid/250df60a-f538-1039-bb39-85b7143bc62d"/>
- <primaryKey xmi:uuid="mmuuid:250df635-f538-1039-bb39-85b7143bc62d" name="rKey" nameInSource="R_KEY" columns="mmuuid/250df631-f538-1039-bb39-85b7143bc62d mmuuid/250df634-f538-1039-bb39-85b7143bc62d mmuuid/250df633-f538-1039-bb39-85b7143bc62d"/>
- </tables>
- <tables xsi:type="relational:BaseTable" xmi:uuid="mmuuid:250df638-f538-1039-bb39-85b7143bc62d" name="BooleanAttributes" nameInSource="MDR_BOOLEAN_ATTRS">
- <columns xmi:uuid="mmuuid:250df63a-f538-1039-bb39-85b7143bc62d" name="objectId" nameInSource="OBJECT_ID" nullable="NO_NULLS" uniqueKeys="mmuuid/250df639-f538-1039-bb39-85b7143bc62d" foreignKeys="mmuuid/250df63e-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#long"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df63c-f538-1039-bb39-85b7143bc62d" name="featureId" nameInSource="FEATURE_ID" nullable="NO_NULLS" uniqueKeys="mmuuid/250df639-f538-1039-bb39-85b7143bc62d" foreignKeys="mmuuid/250df63d-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#long"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df63b-f538-1039-bb39-85b7143bc62d" name="index" nameInSource="NDX" nullable="NO_NULLS" uniqueKeys="mmuuid/250df639-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df63f-f538-1039-bb39-85b7143bc62d" name="value" nameInSource="VALUE" length="-1" nullable="NO_NULLS">
- <type href="http://www.w3.org/2001/XMLSchema#boolean"/>
- </columns>
- <foreignKeys xmi:uuid="mmuuid:250df63e-f538-1039-bb39-85b7143bc62d" name="boaKeyObject" nameInSource="BOA_KEY_OBJECT" columns="mmuuid/250df63a-f538-1039-bb39-85b7143bc62d" uniqueKey="mmuuid/250df60a-f538-1039-bb39-85b7143bc62d"/>
- <foreignKeys xmi:uuid="mmuuid:250df63d-f538-1039-bb39-85b7143bc62d" name="boaKeyFeature" nameInSource="BOA_KEY_FEATURE" columns="mmuuid/250df63c-f538-1039-bb39-85b7143bc62d" uniqueKey="mmuuid/250df62b-f538-1039-bb39-85b7143bc62d"/>
- <primaryKey xmi:uuid="mmuuid:250df639-f538-1039-bb39-85b7143bc62d" name="boaKey" nameInSource="BOA_KEY" columns="mmuuid/250df63c-f538-1039-bb39-85b7143bc62d mmuuid/250df63a-f538-1039-bb39-85b7143bc62d mmuuid/250df63b-f538-1039-bb39-85b7143bc62d"/>
- </tables>
- <tables xsi:type="relational:BaseTable" xmi:uuid="mmuuid:250df640-f538-1039-bb39-85b7143bc62d" name="ByteAttributes" nameInSource="MDR_BYTE_ATTRS">
- <columns xmi:uuid="mmuuid:250df642-f538-1039-bb39-85b7143bc62d" name="objectId" nameInSource="OBJECT_ID" nullable="NO_NULLS" uniqueKeys="mmuuid/250df644-f538-1039-bb39-85b7143bc62d" foreignKeys="mmuuid/250df647-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#long"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df645-f538-1039-bb39-85b7143bc62d" name="featureId" nameInSource="FEATURE_ID" nullable="NO_NULLS" uniqueKeys="mmuuid/250df644-f538-1039-bb39-85b7143bc62d" foreignKeys="mmuuid/250df641-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#long"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df643-f538-1039-bb39-85b7143bc62d" name="index" nameInSource="NDX" nullable="NO_NULLS" uniqueKeys="mmuuid/250df644-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df646-f538-1039-bb39-85b7143bc62d" name="value" nameInSource="VALUE" length="-1" nullable="NO_NULLS">
- <type href="http://www.w3.org/2001/XMLSchema#byte"/>
- </columns>
- <foreignKeys xmi:uuid="mmuuid:250df647-f538-1039-bb39-85b7143bc62d" name="byaKeyObject" nameInSource="BYA_KEY_OBJECT" columns="mmuuid/250df642-f538-1039-bb39-85b7143bc62d" uniqueKey="mmuuid/250df60a-f538-1039-bb39-85b7143bc62d"/>
- <foreignKeys xmi:uuid="mmuuid:250df641-f538-1039-bb39-85b7143bc62d" name="byaKeyFeature" nameInSource="BYA_KEY_FEATURE" columns="mmuuid/250df645-f538-1039-bb39-85b7143bc62d" uniqueKey="mmuuid/250df62b-f538-1039-bb39-85b7143bc62d"/>
- <primaryKey xmi:uuid="mmuuid:250df644-f538-1039-bb39-85b7143bc62d" name="byaKey" nameInSource="BYA_KEY" columns="mmuuid/250df645-f538-1039-bb39-85b7143bc62d mmuuid/250df642-f538-1039-bb39-85b7143bc62d mmuuid/250df643-f538-1039-bb39-85b7143bc62d"/>
- </tables>
- <tables xsi:type="relational:BaseTable" xmi:uuid="mmuuid:250df648-f538-1039-bb39-85b7143bc62d" name="CharAttributes" nameInSource="MDR_CHAR_ATTRS">
- <columns xmi:uuid="mmuuid:250df64b-f538-1039-bb39-85b7143bc62d" name="objectId" nameInSource="OBJECT_ID" nullable="NO_NULLS" uniqueKeys="mmuuid/250df64a-f538-1039-bb39-85b7143bc62d" foreignKeys="mmuuid/250df64c-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#long"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df64d-f538-1039-bb39-85b7143bc62d" name="featureId" nameInSource="FEATURE_ID" nullable="NO_NULLS" uniqueKeys="mmuuid/250df64a-f538-1039-bb39-85b7143bc62d" foreignKeys="mmuuid/250df64e-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#long"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df64f-f538-1039-bb39-85b7143bc62d" name="index" nameInSource="NDX" nullable="NO_NULLS" uniqueKeys="mmuuid/250df64a-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df649-f538-1039-bb39-85b7143bc62d" name="value" nameInSource="VALUE" length="1" nullable="NO_NULLS">
- <type href="http://www.metamatrix.com/metamodels/SimpleDatatypes-instance#char"/>
- </columns>
- <foreignKeys xmi:uuid="mmuuid:250df64c-f538-1039-bb39-85b7143bc62d" name="caKeyObject" nameInSource="CA_KEY_OBJECT" columns="mmuuid/250df64b-f538-1039-bb39-85b7143bc62d" uniqueKey="mmuuid/250df60a-f538-1039-bb39-85b7143bc62d"/>
- <foreignKeys xmi:uuid="mmuuid:250df64e-f538-1039-bb39-85b7143bc62d" name="caKeyFeature" nameInSource="CA_KEY_FEATURE" columns="mmuuid/250df64d-f538-1039-bb39-85b7143bc62d" uniqueKey="mmuuid/250df62b-f538-1039-bb39-85b7143bc62d"/>
- <primaryKey xmi:uuid="mmuuid:250df64a-f538-1039-bb39-85b7143bc62d" name="caKey" nameInSource="CA_KEY" columns="mmuuid/250df64d-f538-1039-bb39-85b7143bc62d mmuuid/250df64b-f538-1039-bb39-85b7143bc62d mmuuid/250df64f-f538-1039-bb39-85b7143bc62d"/>
- </tables>
- <tables xsi:type="relational:BaseTable" xmi:uuid="mmuuid:250df650-f538-1039-bb39-85b7143bc62d" name="DoubleAttributes" nameInSource="MDR_DOUBLE_ATTRS">
- <columns xmi:uuid="mmuuid:250df652-f538-1039-bb39-85b7143bc62d" name="objectId" nameInSource="OBJECT_ID" nullable="NO_NULLS" uniqueKeys="mmuuid/250df653-f538-1039-bb39-85b7143bc62d" foreignKeys="mmuuid/250df654-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#long"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df657-f538-1039-bb39-85b7143bc62d" name="featureId" nameInSource="FEATURE_ID" nullable="NO_NULLS" uniqueKeys="mmuuid/250df653-f538-1039-bb39-85b7143bc62d" foreignKeys="mmuuid/250df656-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#long"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df651-f538-1039-bb39-85b7143bc62d" name="index" nameInSource="NDX" nullable="NO_NULLS" uniqueKeys="mmuuid/250df653-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df655-f538-1039-bb39-85b7143bc62d" name="value" nameInSource="VALUE" length="-1" nullable="NO_NULLS">
- <type href="http://www.w3.org/2001/XMLSchema#double"/>
- </columns>
- <foreignKeys xmi:uuid="mmuuid:250df654-f538-1039-bb39-85b7143bc62d" name="daKeyObject" nameInSource="DA_KEY_OBJECT" columns="mmuuid/250df652-f538-1039-bb39-85b7143bc62d" uniqueKey="mmuuid/250df60a-f538-1039-bb39-85b7143bc62d"/>
- <foreignKeys xmi:uuid="mmuuid:250df656-f538-1039-bb39-85b7143bc62d" name="daKeyFeature" nameInSource="DA_KEY_FEATURE" columns="mmuuid/250df657-f538-1039-bb39-85b7143bc62d" uniqueKey="mmuuid/250df62b-f538-1039-bb39-85b7143bc62d"/>
- <primaryKey xmi:uuid="mmuuid:250df653-f538-1039-bb39-85b7143bc62d" name="daKey" nameInSource="DA_KEY" columns="mmuuid/250df657-f538-1039-bb39-85b7143bc62d mmuuid/250df652-f538-1039-bb39-85b7143bc62d mmuuid/250df651-f538-1039-bb39-85b7143bc62d"/>
- </tables>
- <tables xsi:type="relational:BaseTable" xmi:uuid="mmuuid:250df658-f538-1039-bb39-85b7143bc62d" name="FloatAttributes" nameInSource="MDR_FLOAT_ATTRS">
- <columns xmi:uuid="mmuuid:250df65e-f538-1039-bb39-85b7143bc62d" name="objectId" nameInSource="OBJECT_ID" nullable="NO_NULLS" uniqueKeys="mmuuid/250df65b-f538-1039-bb39-85b7143bc62d" foreignKeys="mmuuid/250df659-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#long"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df65d-f538-1039-bb39-85b7143bc62d" name="featureId" nameInSource="FEATURE_ID" nullable="NO_NULLS" uniqueKeys="mmuuid/250df65b-f538-1039-bb39-85b7143bc62d" foreignKeys="mmuuid/250df65a-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#long"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df65f-f538-1039-bb39-85b7143bc62d" name="index" nameInSource="NDX" nullable="NO_NULLS" uniqueKeys="mmuuid/250df65b-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df65c-f538-1039-bb39-85b7143bc62d" name="value" nameInSource="VALUE" length="-1" nullable="NO_NULLS">
- <type href="http://www.w3.org/2001/XMLSchema#float"/>
- </columns>
- <foreignKeys xmi:uuid="mmuuid:250df659-f538-1039-bb39-85b7143bc62d" name="faKeyObject" nameInSource="FA_KEY_OBJECT" columns="mmuuid/250df65e-f538-1039-bb39-85b7143bc62d" uniqueKey="mmuuid/250df60a-f538-1039-bb39-85b7143bc62d"/>
- <foreignKeys xmi:uuid="mmuuid:250df65a-f538-1039-bb39-85b7143bc62d" name="faKeyFeature" nameInSource="FA_KEY_FEATURE" columns="mmuuid/250df65d-f538-1039-bb39-85b7143bc62d" uniqueKey="mmuuid/250df62b-f538-1039-bb39-85b7143bc62d"/>
- <primaryKey xmi:uuid="mmuuid:250df65b-f538-1039-bb39-85b7143bc62d" name="faKey" nameInSource="FA_KEY" columns="mmuuid/250df65d-f538-1039-bb39-85b7143bc62d mmuuid/250df65e-f538-1039-bb39-85b7143bc62d mmuuid/250df65f-f538-1039-bb39-85b7143bc62d"/>
- </tables>
- <tables xsi:type="relational:BaseTable" xmi:uuid="mmuuid:250df660-f538-1039-bb39-85b7143bc62d" name="IntAttributes" nameInSource="MDR_INT_ATTRS">
- <columns xmi:uuid="mmuuid:250df662-f538-1039-bb39-85b7143bc62d" name="objectId" nameInSource="OBJECT_ID" nullable="NO_NULLS" uniqueKeys="mmuuid/250df661-f538-1039-bb39-85b7143bc62d" foreignKeys="mmuuid/250df665-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#long"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df664-f538-1039-bb39-85b7143bc62d" name="featureId" nameInSource="FEATURE_ID" nullable="NO_NULLS" uniqueKeys="mmuuid/250df661-f538-1039-bb39-85b7143bc62d" foreignKeys="mmuuid/250df663-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#long"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df667-f538-1039-bb39-85b7143bc62d" name="index" nameInSource="NDX" nullable="NO_NULLS" uniqueKeys="mmuuid/250df661-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df666-f538-1039-bb39-85b7143bc62d" name="value" nameInSource="VALUE" length="-1" nullable="NO_NULLS">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <foreignKeys xmi:uuid="mmuuid:250df665-f538-1039-bb39-85b7143bc62d" name="iaKeyObject" nameInSource="IA_KEY_OBJECT" columns="mmuuid/250df662-f538-1039-bb39-85b7143bc62d" uniqueKey="mmuuid/250df60a-f538-1039-bb39-85b7143bc62d"/>
- <foreignKeys xmi:uuid="mmuuid:250df663-f538-1039-bb39-85b7143bc62d" name="iaKeyFeature" nameInSource="IA_KEY_FEATURE" columns="mmuuid/250df664-f538-1039-bb39-85b7143bc62d" uniqueKey="mmuuid/250df62b-f538-1039-bb39-85b7143bc62d"/>
- <primaryKey xmi:uuid="mmuuid:250df661-f538-1039-bb39-85b7143bc62d" name="iaKey" nameInSource="IA_KEY" columns="mmuuid/250df664-f538-1039-bb39-85b7143bc62d mmuuid/250df662-f538-1039-bb39-85b7143bc62d mmuuid/250df667-f538-1039-bb39-85b7143bc62d"/>
- </tables>
- <tables xsi:type="relational:BaseTable" xmi:uuid="mmuuid:250df668-f538-1039-bb39-85b7143bc62d" name="LongAttributes" nameInSource="MDR_LONG_ATTRS">
- <columns xmi:uuid="mmuuid:250df66d-f538-1039-bb39-85b7143bc62d" name="objectId" nameInSource="OBJECT_ID" nullable="NO_NULLS" uniqueKeys="mmuuid/250df66a-f538-1039-bb39-85b7143bc62d" foreignKeys="mmuuid/250df66e-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#long"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df66c-f538-1039-bb39-85b7143bc62d" name="featureId" nameInSource="FEATURE_ID" nullable="NO_NULLS" uniqueKeys="mmuuid/250df66a-f538-1039-bb39-85b7143bc62d" foreignKeys="mmuuid/250df66b-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#long"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df66f-f538-1039-bb39-85b7143bc62d" name="index" nameInSource="NDX" nullable="NO_NULLS" uniqueKeys="mmuuid/250df66a-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df669-f538-1039-bb39-85b7143bc62d" name="value" nameInSource="VALUE" length="-1" nullable="NO_NULLS">
- <type href="http://www.w3.org/2001/XMLSchema#long"/>
- </columns>
- <foreignKeys xmi:uuid="mmuuid:250df66e-f538-1039-bb39-85b7143bc62d" name="laKeyObject" nameInSource="LA_KEY_OBJECT" columns="mmuuid/250df66d-f538-1039-bb39-85b7143bc62d" uniqueKey="mmuuid/250df60a-f538-1039-bb39-85b7143bc62d"/>
- <foreignKeys xmi:uuid="mmuuid:250df66b-f538-1039-bb39-85b7143bc62d" name="laKeyFeature" nameInSource="LA_KEY_FEATURE" columns="mmuuid/250df66c-f538-1039-bb39-85b7143bc62d" uniqueKey="mmuuid/250df62b-f538-1039-bb39-85b7143bc62d"/>
- <primaryKey xmi:uuid="mmuuid:250df66a-f538-1039-bb39-85b7143bc62d" name="laKey" nameInSource="LA_KEY" columns="mmuuid/250df66c-f538-1039-bb39-85b7143bc62d mmuuid/250df66d-f538-1039-bb39-85b7143bc62d mmuuid/250df66f-f538-1039-bb39-85b7143bc62d"/>
- </tables>
- <tables xsi:type="relational:BaseTable" xmi:uuid="mmuuid:250df670-f538-1039-bb39-85b7143bc62d" name="ShortAttributes" nameInSource="MDR_SHORT_ATTRS">
- <columns xmi:uuid="mmuuid:250df675-f538-1039-bb39-85b7143bc62d" name="objectId" nameInSource="OBJECT_ID" nullable="NO_NULLS" uniqueKeys="mmuuid/250df676-f538-1039-bb39-85b7143bc62d" foreignKeys="mmuuid/250df673-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#long"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df677-f538-1039-bb39-85b7143bc62d" name="featureId" nameInSource="FEATURE_ID" nullable="NO_NULLS" uniqueKeys="mmuuid/250df676-f538-1039-bb39-85b7143bc62d" foreignKeys="mmuuid/250df672-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#long"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df674-f538-1039-bb39-85b7143bc62d" name="index" nameInSource="NDX" nullable="NO_NULLS" uniqueKeys="mmuuid/250df676-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df671-f538-1039-bb39-85b7143bc62d" name="value" nameInSource="VALUE" length="-1" nullable="NO_NULLS">
- <type href="http://www.w3.org/2001/XMLSchema#short"/>
- </columns>
- <foreignKeys xmi:uuid="mmuuid:250df673-f538-1039-bb39-85b7143bc62d" name="shaKeyObject" nameInSource="SHA_KEY_OBJECT" columns="mmuuid/250df675-f538-1039-bb39-85b7143bc62d" uniqueKey="mmuuid/250df60a-f538-1039-bb39-85b7143bc62d"/>
- <foreignKeys xmi:uuid="mmuuid:250df672-f538-1039-bb39-85b7143bc62d" name="shaKeyFeature" nameInSource="SHA_KEY_FEATURE" columns="mmuuid/250df677-f538-1039-bb39-85b7143bc62d" uniqueKey="mmuuid/250df62b-f538-1039-bb39-85b7143bc62d"/>
- <primaryKey xmi:uuid="mmuuid:250df676-f538-1039-bb39-85b7143bc62d" name="shaKey" nameInSource="SHA_KEY" columns="mmuuid/250df677-f538-1039-bb39-85b7143bc62d mmuuid/250df675-f538-1039-bb39-85b7143bc62d mmuuid/250df674-f538-1039-bb39-85b7143bc62d"/>
- </tables>
- <tables xsi:type="relational:BaseTable" xmi:uuid="mmuuid:250df678-f538-1039-bb39-85b7143bc62d" name="StringAttributes" nameInSource="MDR_STRING_ATTRS">
- <columns xmi:uuid="mmuuid:250df680-f538-1039-bb39-85b7143bc62d" name="objectId" nameInSource="OBJECT_ID" nullable="NO_NULLS" uniqueKeys="mmuuid/250df67e-f538-1039-bb39-85b7143bc62d" foreignKeys="mmuuid/250df67f-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#long"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df67b-f538-1039-bb39-85b7143bc62d" name="featureId" nameInSource="FEATURE_ID" nullable="NO_NULLS" uniqueKeys="mmuuid/250df67e-f538-1039-bb39-85b7143bc62d" foreignKeys="mmuuid/250df67c-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#long"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df679-f538-1039-bb39-85b7143bc62d" name="index" nameInSource="NDX" nullable="NO_NULLS" uniqueKeys="mmuuid/250df67e-f538-1039-bb39-85b7143bc62d">
- <type href="http://www.w3.org/2001/XMLSchema#int"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df67d-f538-1039-bb39-85b7143bc62d" name="value" nameInSource="VALUE" length="4000" nullable="NO_NULLS">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <columns xmi:uuid="mmuuid:250df67a-f538-1039-bb39-85b7143bc62d" name="clob" nameInSource="CLOB" length="2147483647" nullable="NO_NULLS">
- <type href="http://www.w3.org/2001/XMLSchema#string"/>
- </columns>
- <foreignKeys xmi:uuid="mmuuid:250df67f-f538-1039-bb39-85b7143bc62d" name="staKeyObject" nameInSource="STA_KEY_OBJECT" columns="mmuuid/250df680-f538-1039-bb39-85b7143bc62d" uniqueKey="mmuuid/250df60a-f538-1039-bb39-85b7143bc62d"/>
- <foreignKeys xmi:uuid="mmuuid:250df67c-f538-1039-bb39-85b7143bc62d" name="staKeyFeature" nameInSource="STA_KEY_FEATURE" columns="mmuuid/250df67b-f538-1039-bb39-85b7143bc62d" uniqueKey="mmuuid/250df62b-f538-1039-bb39-85b7143bc62d"/>
- <primaryKey xmi:uuid="mmuuid:250df67e-f538-1039-bb39-85b7143bc62d" name="staKey" nameInSource="STA_KEY" columns="mmuuid/250df67b-f538-1039-bb39-85b7143bc62d mmuuid/250df680-f538-1039-bb39-85b7143bc62d mmuuid/250df679-f538-1039-bb39-85b7143bc62d"/>
- </tables>
- <indexes xmi:uuid="mmuuid:250df681-f538-1039-bb39-85b7143bc62d" name="UuidIndex" nameInSource="UUID_INDEX" columns="mmuuid/250df60e-f538-1039-bb39-85b7143bc62d"/>
- <indexes xmi:uuid="mmuuid:250df682-f538-1039-bb39-85b7143bc62d" name="NoUuidIndex" nameInSource="NO_UUID_INDEX" columns="mmuuid/250df610-f538-1039-bb39-85b7143bc62d mmuuid/250df60f-f538-1039-bb39-85b7143bc62d mmuuid/250df609-f538-1039-bb39-85b7143bc62d"/>
- <indexes xmi:uuid="mmuuid:250df683-f538-1039-bb39-85b7143bc62d" name="ClassIdIndex" nameInSource="CLASS_ID_INDEX" columns="mmuuid/250df60d-f538-1039-bb39-85b7143bc62d"/>
- <indexes xmi:uuid="mmuuid:250df684-f538-1039-bb39-85b7143bc62d" name="ContainerIdIndex" nameInSource="CONTAINER_ID_INDEX" columns="mmuuid/250df60c-f538-1039-bb39-85b7143bc62d"/>
- <indexes xmi:uuid="mmuuid:250df685-f538-1039-bb39-85b7143bc62d" name="ModelIndex" nameInSource="MODEL_INDEX" columns="mmuuid/250df60b-f538-1039-bb39-85b7143bc62d"/>
- </relational:Schema>
-</xmi:XMI>
Modified: branches/JCA/metadata/src/test/java/com/metamatrix/core/util/TestCharOperation.java
===================================================================
--- branches/JCA/metadata/src/test/java/com/metamatrix/core/util/TestCharOperation.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/metadata/src/test/java/com/metamatrix/core/util/TestCharOperation.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -22,7 +22,7 @@
package com.metamatrix.core.util;
-import org.teiid.metadata.index.CharOperation;
+import org.teiid.internal.core.index.CharOperation;
import junit.framework.TestCase;
Modified: branches/JCA/metadata/src/test/java/com/metamatrix/metadata/runtime/FakeMetadataService.java
===================================================================
--- branches/JCA/metadata/src/test/java/com/metamatrix/metadata/runtime/FakeMetadataService.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/metadata/src/test/java/com/metamatrix/metadata/runtime/FakeMetadataService.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -28,14 +28,10 @@
import java.util.Map;
import java.util.Properties;
-import org.teiid.connector.metadata.IndexFile;
-import org.teiid.connector.metadata.MetadataConnectorConstants;
-import org.teiid.connector.metadata.MultiObjectSource;
-import org.teiid.connector.metadata.PropertyFileObjectSource;
-import org.teiid.connector.metadata.runtime.DatatypeRecordImpl;
+import org.teiid.connector.metadata.runtime.Datatype;
import org.teiid.metadata.CompositeMetadataStore;
import org.teiid.metadata.TransformationMetadata;
-import org.teiid.metadata.index.IndexMetadataStore;
+import org.teiid.metadata.index.IndexMetadataFactory;
import com.metamatrix.api.exception.MetaMatrixComponentException;
import com.metamatrix.common.application.ApplicationEnvironment;
@@ -43,9 +39,7 @@
import com.metamatrix.common.application.exception.ApplicationInitializationException;
import com.metamatrix.common.application.exception.ApplicationLifecycleException;
import com.metamatrix.common.vdb.api.VDBArchive;
-import com.metamatrix.connector.metadata.internal.IObjectSource;
import com.metamatrix.core.util.TempDirectoryMonitor;
-import com.metamatrix.dqp.service.FakeVDBService;
import com.metamatrix.dqp.service.MetadataService;
import com.metamatrix.metadata.runtime.api.MetadataSource;
import com.metamatrix.query.metadata.QueryMetadataInterface;
@@ -57,7 +51,7 @@
public FakeMetadataService(URL vdbFile) throws IOException {
TempDirectoryMonitor.turnOn();
MetadataSource source = new VDBArchive(vdbFile.openStream());
- compositeMetadataStore = new CompositeMetadataStore(Arrays.asList(new IndexMetadataStore(source)), source);
+ compositeMetadataStore = new CompositeMetadataStore(Arrays.asList(new IndexMetadataFactory(source).getMetadataStore()), source);
}
public void clear() {
@@ -80,20 +74,12 @@
return new TransformationMetadata(compositeMetadataStore);
}
- public IObjectSource getMetadataObjectSource(String vdbName,String vdbVersion) throws MetaMatrixComponentException {
-
- // build up sources to be used by the index connector
- IObjectSource indexFile = new IndexFile(compositeMetadataStore, vdbName, vdbVersion, new FakeVDBService());
-
- PropertyFileObjectSource propertyFileSource = new PropertyFileObjectSource();
- IObjectSource multiObjectSource = new MultiObjectSource(indexFile, MetadataConnectorConstants.PROPERTIES_FILE_EXTENSION,propertyFileSource);
-
- // return an adapter object that has access to all sources
- return multiObjectSource;
+ public CompositeMetadataStore getMetadataObjectSource(String vdbName,String vdbVersion) throws MetaMatrixComponentException {
+ return compositeMetadataStore;
}
@Override
- public Map<String, DatatypeRecordImpl> getBuiltinDatatypes()
+ public Map<String, Datatype> getBuiltinDatatypes()
throws MetaMatrixComponentException {
return null;
}
Modified: branches/JCA/pom.xml
===================================================================
--- branches/JCA/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -6,7 +6,7 @@
<artifactId>teiid</artifactId>
<packaging>pom</packaging>
<name>Teiid</name>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
<description>Federated SQL and XML query engine.</description>
<properties>
<ant.version>1.7.0</ant.version>
@@ -95,7 +95,7 @@
<descriptor>build/assembly/adminshell/adminshell-dist.xml</descriptor>
<descriptor>documentation/assembly/docs.xml</descriptor>
- -->
+ -->
</descriptors>
<outputDirectory>target/distribution</outputDirectory>
<workDirectory>target/assembly/work</workDirectory>
@@ -276,6 +276,18 @@
</dependency>
<dependency>
<groupId>org.jboss.teiid</groupId>
+ <artifactId>teiid-console</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.teiid</groupId>
+ <artifactId>teiid-console</artifactId>
+ <type>test-jar</type>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.teiid</groupId>
<artifactId>teiid-client</artifactId>
<version>${project.version}</version>
</dependency>
@@ -344,11 +356,6 @@
<version>${project.version}</version>
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>org.jboss.teiid</groupId>
- <artifactId>teiid-connector-metadata</artifactId>
- <version>${project.version}</version>
- </dependency>
<dependency>
<groupId>org.jboss.teiid</groupId>
<artifactId>teiid-jboss-integration</artifactId>
@@ -496,7 +503,7 @@
<modules>
<!--
<module>txn-jbossts</module>
- <module>connector-sdk</module>
+
<module>test-integration</module>
-->
<module>common-core</module>
@@ -506,13 +513,14 @@
<module>client-jdbc</module>
<module>engine</module>
<module>connectors</module>
+ <module>console</module>
<module>metadata</module>
<module>runtime</module>
<module>adminshell</module>
- <module>connector-metadata</module>
<module>cache-jbosscache</module>
<module>hibernate-dialect</module>
<module>jboss-integration</module>
+ <module>connector-sdk</module>
</modules>
<distributionManagement>
Modified: branches/JCA/runtime/pom.xml
===================================================================
--- branches/JCA/runtime/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/runtime/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -3,7 +3,7 @@
<parent>
<artifactId>teiid</artifactId>
<groupId>org.jboss.teiid</groupId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.jboss.teiid</groupId>
Modified: branches/JCA/runtime/src/main/java/com/metamatrix/dqp/embedded/admin/BaseAdmin.java
===================================================================
--- branches/JCA/runtime/src/main/java/com/metamatrix/dqp/embedded/admin/BaseAdmin.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/runtime/src/main/java/com/metamatrix/dqp/embedded/admin/BaseAdmin.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -50,6 +50,7 @@
import com.metamatrix.admin.objects.MMSession;
import com.metamatrix.api.exception.MetaMatrixComponentException;
import com.metamatrix.api.exception.security.SessionServiceException;
+import com.metamatrix.common.api.MMURL;
import com.metamatrix.common.application.exception.ApplicationLifecycleException;
import com.metamatrix.common.config.api.ComponentType;
import com.metamatrix.common.config.api.ComponentTypeDefn;
@@ -70,7 +71,6 @@
import com.metamatrix.platform.security.api.MetaMatrixSessionInfo;
import com.metamatrix.platform.security.api.SessionToken;
import com.metamatrix.platform.security.api.service.SessionServiceInterface;
-import com.metamatrix.platform.util.ProductInfoConstants;
import com.metamatrix.server.serverapi.RequestInfo;
@@ -274,8 +274,8 @@
private Session convertConnection(MetaMatrixSessionInfo src) {
MMSession session = new MMSession(new String[] {src.getSessionID().toString()});
- session.setVDBName(src.getProductInfo(ProductInfoConstants.VIRTUAL_DB));
- session.setVDBVersion(src.getProductInfo(ProductInfoConstants.VDB_VERSION));
+ session.setVDBName(src.getProductInfo(MMURL.JDBC.VDB_NAME));
+ session.setVDBVersion(src.getProductInfo(MMURL.JDBC.VDB_VERSION));
session.setApplicationName(src.getApplicationName());
session.setIPAddress(src.getClientIp());
session.setHostName(src.getClientHostname());
Modified: branches/JCA/runtime/src/main/java/com/metamatrix/dqp/embedded/services/EmbeddedBaseDQPService.java
===================================================================
--- branches/JCA/runtime/src/main/java/com/metamatrix/dqp/embedded/services/EmbeddedBaseDQPService.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/runtime/src/main/java/com/metamatrix/dqp/embedded/services/EmbeddedBaseDQPService.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -22,7 +22,6 @@
package com.metamatrix.dqp.embedded.services;
-import java.util.Collection;
import java.util.Properties;
import com.metamatrix.api.exception.MetaMatrixComponentException;
@@ -30,12 +29,8 @@
import com.metamatrix.common.application.ApplicationService;
import com.metamatrix.common.application.exception.ApplicationInitializationException;
import com.metamatrix.common.application.exception.ApplicationLifecycleException;
-import com.metamatrix.common.vdb.api.VDBArchive;
-import com.metamatrix.common.vdb.api.VDBDefn;
-import com.metamatrix.dqp.embedded.DQPEmbeddedPlugin;
import com.metamatrix.dqp.service.ConfigurationService;
import com.metamatrix.dqp.service.DQPServiceNames;
-import com.metamatrix.vdb.runtime.VDBKey;
/**
@@ -43,8 +38,7 @@
* @since 4.3
*/
public abstract class EmbeddedBaseDQPService implements ApplicationService {
- public static final String INDEX_CONNECTOR_NAME = "java:index-connector-binding"; //$NON-NLS-1$
- private boolean started = false;
+ private boolean started = false;
private boolean initialized = false;
private ApplicationEnvironment environment;
@@ -116,39 +110,4 @@
return started;
}
- protected VDBKey vdbId(VDBArchive vdb) {
- return new VDBKey(vdb.getName(),vdb.getVersion());
- }
-
- protected VDBKey vdbId(String name, String version) {
- return new VDBKey(name, version);
- }
-
- /**
- * checks the validity of the VDB
- * @param vdb
- * @return true if valid; false otherwise.
- */
- protected boolean isValidVDB(VDBArchive vdb) {
-
- // check if vdb has validity errors. If so log it..
- if (vdb.getVDBValidityErrors() != null) {
- String[] errors = vdb.getVDBValidityErrors();
- StringBuffer sb = new StringBuffer();
- for (int i = 0; i < errors.length; i++) {
- sb.append("-").append(errors[i]).append(";"); //$NON-NLS-1$ //$NON-NLS-2$
- } // for
- DQPEmbeddedPlugin.logError("VDBService.validityErrors", new Object[] {vdb.getName(), sb}); //$NON-NLS-1$
- return false;
- }
-
- VDBDefn def = vdb.getConfigurationDef();
- Collection models = def.getModels();
- if (models != null && models.isEmpty()) {
- DQPEmbeddedPlugin.logError("VDBService.vdb_missing_models", new Object[] {vdb.getName(), vdb.getVersion()}); //$NON-NLS-1$
- return false;
- }
-
- return true;
- }
}
Modified: branches/JCA/runtime/src/main/java/com/metamatrix/dqp/embedded/services/EmbeddedConfigurationService.java
===================================================================
--- branches/JCA/runtime/src/main/java/com/metamatrix/dqp/embedded/services/EmbeddedConfigurationService.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/runtime/src/main/java/com/metamatrix/dqp/embedded/services/EmbeddedConfigurationService.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -37,6 +37,7 @@
import com.metamatrix.api.exception.MetaMatrixComponentException;
import com.metamatrix.api.exception.security.SessionServiceException;
+import com.metamatrix.common.api.MMURL;
import com.metamatrix.common.application.ApplicationEnvironment;
import com.metamatrix.common.application.exception.ApplicationInitializationException;
import com.metamatrix.common.application.exception.ApplicationLifecycleException;
@@ -62,7 +63,6 @@
import com.metamatrix.platform.security.api.MetaMatrixSessionInfo;
import com.metamatrix.platform.security.api.service.SessionListener;
import com.metamatrix.platform.security.api.service.SessionServiceInterface;
-import com.metamatrix.platform.util.ProductInfoConstants;
import com.metamatrix.query.function.FunctionLibraryManager;
import com.metamatrix.query.function.UDFSource;
import com.metamatrix.vdb.runtime.BasicModelInfo;
@@ -146,7 +146,7 @@
*/
public VDBArchive getVDB(String vdbName, String vdbVersion)
throws MetaMatrixComponentException {
- return loadedVDBs.get(vdbId(vdbName, vdbVersion));
+ return loadedVDBs.get(new VDBKey(vdbName, vdbVersion));
}
/**
@@ -208,7 +208,7 @@
}
// make sure we match up the connector binding based on user preferences
- URL vdbFile = availableVDBFiles.get(vdbId(srcVdb));
+ URL vdbFile = availableVDBFiles.get(srcVdb.getVDBKey());
if (vdbFile == null) {
vdbFile = getNewVDBLocation(srcVdb);
VDBConfigurationWriter.write(srcVdb, vdbFile);
@@ -222,7 +222,7 @@
private VDBArchive loadVDB(VDBArchive vdb, boolean replaceBindings) throws MetaMatrixComponentException {
// check if this is a valid VDB
- if (!isValidVDB(vdb)) {
+ if (!vdb.isValid()) {
throw new MetaMatrixComponentException(DQPEmbeddedPlugin.Util.getString("EmbeddedConfigurationService.invalid_vdb", vdb.getName())); //$NON-NLS-1$
}
@@ -334,7 +334,7 @@
try {
- URL vdbFile = availableVDBFiles.remove(vdbId(vdb));
+ URL vdbFile = availableVDBFiles.remove(vdb.getVDBKey());
Assertion.isNotNull(vdbFile);
@@ -345,7 +345,7 @@
notifyVDBUnLoad(vdb.getName(), vdb.getVersion());
// remove from local references.
- loadedVDBs.remove(vdbId(vdb));
+ loadedVDBs.remove(vdb.getVDBKey());
VDBDefn def = vdb.getConfigurationDef();
@@ -740,8 +740,8 @@
private void deployVDB(URL vdbURL, VDBArchive vdb) {
// add vdb to loaded VDBS
- loadedVDBs.put(vdbId(vdb), vdb);
- availableVDBFiles.put(vdbId(vdb), vdbURL);
+ loadedVDBs.put(vdb.getVDBKey(), vdb);
+ availableVDBFiles.put(vdb.getVDBKey(), vdbURL);
DQPEmbeddedPlugin.logInfo("EmbeddedConfigurationService.loaded_vdb", new Object[] {vdbURL}); //$NON-NLS-1$
}
@@ -771,8 +771,8 @@
* A Client Connection to DQP has been removed
*/
public void sessionClosed(MetaMatrixSessionInfo session) {
- String vdbName = session.getProductInfo(ProductInfoConstants.VIRTUAL_DB);
- String vdbVersion = session.getProductInfo(ProductInfoConstants.VDB_VERSION);
+ String vdbName = session.getProductInfo(MMURL.JDBC.VDB_NAME);
+ String vdbVersion = session.getProductInfo(MMURL.JDBC.VDB_VERSION);
if (vdbName != null && vdbVersion != null) {
if (canDeleteVDB(vdbName, vdbVersion)) {
runVDBCleanUp(vdbName, vdbVersion);
@@ -886,7 +886,7 @@
return Boolean.valueOf(getUserPreferences().getProperty(DQPEmbeddedProperties.DQP_BUFFER_USEDISK, "true")).booleanValue(); //$NON-NLS-1$
}
- private File getWorkDir() {
+ public File getWorkDir() {
String workDirectory = getUserPreferences().getProperty(DQPEmbeddedProperties.DQP_WORKDIR);
File workDir = new File(workDirectory);
return workDir;
Modified: branches/JCA/runtime/src/main/java/com/metamatrix/dqp/embedded/services/EmbeddedDataService.java
===================================================================
--- branches/JCA/runtime/src/main/java/com/metamatrix/dqp/embedded/services/EmbeddedDataService.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/runtime/src/main/java/com/metamatrix/dqp/embedded/services/EmbeddedDataService.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -34,7 +34,7 @@
import javax.resource.spi.work.WorkManager;
import org.teiid.connector.api.ConnectorException;
-import org.teiid.connector.metadata.runtime.ConnectorMetadata;
+import org.teiid.connector.metadata.runtime.MetadataStore;
import org.teiid.dqp.internal.datamgr.impl.ConnectorManager;
import com.google.inject.Inject;
@@ -99,9 +99,9 @@
}
};
-
@Override
- public ConnectorMetadata getConnectorMetadata(String vdbName, String vdbVersion, String modelName) throws MetaMatrixComponentException {
+ public MetadataStore getConnectorMetadata(String vdbName,
+ String vdbVersion, String modelName, Properties importProperties) throws MetaMatrixComponentException {
VDBService vdbService = (VDBService)this.lookupService(DQPServiceNames.VDB_SERVICE);
List<String> bindingNames = vdbService.getConnectorBindingNames(vdbName, vdbVersion, modelName);
if (bindingNames.isEmpty()) {
@@ -110,7 +110,7 @@
String deployedConnectorName = bindingNames.get(0);
ConnectorManager mgr = getConnectorManager(deployedConnectorName);
try {
- return mgr.getMetadata(modelName);
+ return mgr.getMetadata(modelName, importProperties);
} catch (ConnectorException e) {
throw new MetaMatrixComponentException(e);
}
@@ -207,9 +207,6 @@
getConfigurationService().register(this.listener);
try {
- // Start System Model connector Binding
- startConnectorBinding(INDEX_CONNECTOR_NAME);
-
// Loop through the available ACTIVE VDBS and only start those
// connector bindings that are ACTIVE VDBS.
List<String> connectorNames = new ArrayList();
Modified: branches/JCA/runtime/src/main/java/com/metamatrix/dqp/embedded/services/EmbeddedMetadataService.java
===================================================================
--- branches/JCA/runtime/src/main/java/com/metamatrix/dqp/embedded/services/EmbeddedMetadataService.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/runtime/src/main/java/com/metamatrix/dqp/embedded/services/EmbeddedMetadataService.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -22,40 +22,211 @@
package com.metamatrix.dqp.embedded.services;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.Properties;
+import java.util.Set;
-import org.teiid.connector.metadata.runtime.DatatypeRecordImpl;
-import org.teiid.metadata.QueryMetadataCache;
+import org.teiid.connector.metadata.runtime.Datatype;
+import org.teiid.connector.metadata.runtime.MetadataStore;
+import org.teiid.metadata.CompositeMetadataStore;
+import org.teiid.metadata.TransformationMetadata;
+import org.teiid.metadata.index.IndexMetadataFactory;
import com.metamatrix.api.exception.MetaMatrixComponentException;
import com.metamatrix.common.application.ApplicationEnvironment;
import com.metamatrix.common.application.exception.ApplicationInitializationException;
import com.metamatrix.common.application.exception.ApplicationLifecycleException;
-import com.metamatrix.connector.metadata.internal.IObjectSource;
+import com.metamatrix.common.log.LogManager;
+import com.metamatrix.common.types.DataTypeManager;
+import com.metamatrix.common.vdb.api.VDBArchive;
+import com.metamatrix.core.CoreConstants;
+import com.metamatrix.core.MetaMatrixRuntimeException;
+import com.metamatrix.dqp.DQPPlugin;
import com.metamatrix.dqp.service.ConfigurationService;
import com.metamatrix.dqp.service.DQPServiceNames;
import com.metamatrix.dqp.service.DataService;
import com.metamatrix.dqp.service.MetadataService;
import com.metamatrix.dqp.service.VDBLifeCycleListener;
import com.metamatrix.dqp.service.VDBService;
-import com.metamatrix.query.metadata.QueryMetadataInterface;
+import com.metamatrix.dqp.util.LogConstants;
+import com.metamatrix.metadata.runtime.api.MetadataSource;
+import com.metamatrix.vdb.runtime.VDBKey;
/**
* @since 4.3
*/
public class EmbeddedMetadataService extends EmbeddedBaseDQPService implements MetadataService {
-
- private QueryMetadataCache metadataCache = null;
+
private VDBLifeCycleListener listener = new VDBLifeCycleListener() {
public void loaded(String vdbName, String vdbVersion) {
}
public void unloaded(String vdbName, String vdbVersion) {
- metadataCache.removeFromCache(vdbName, vdbVersion);
+ LogManager.logTrace(LogConstants.CTX_DQP, new Object[] {"QueryMetadataCache Removing vdb from cache", vdbName, vdbVersion}); //$NON-NLS-1$
+ if(vdbName != null && vdbVersion != null) {
+ final VDBKey vdbID = toVdbID(vdbName, vdbVersion);
+ vdbToQueryMetadata.remove(vdbID);
+ }
}
};
+
+ private static class QueryMetadataHolder {
+ TransformationMetadata qmi;
+ }
+
+ // vdbID to QueryMetadataInterfaceHolder map
+ private Map<VDBKey, QueryMetadataHolder> vdbToQueryMetadata = Collections.synchronizedMap(new HashMap<VDBKey, QueryMetadataHolder>());
+ // RuntimeIndexSelector for the system vdb
+ private VDBArchive systemVDBSelector;
+ // boolean for the cache being valid
+ private boolean isCacheValid = true;
+ private MetadataStore systemMetadataStore;
+
+ /**
+ * Look up metadata for the given vdbName, version at the given filecontent.
+ * @throws MetaMatrixComponentException
+ */
+ private TransformationMetadata lookupMetadata(final String vdbName, final String vdbVersion, MetadataSource iss, DataService dataService) throws MetaMatrixComponentException {
+ assertIsValidCache();
+ VDBKey vdbID = toVdbID(vdbName, vdbVersion);
+ QueryMetadataHolder qmiHolder = null;
+ // Enter a synchronized block to find the holder of a QueryMetadataInterface for a VDB
+ synchronized(vdbToQueryMetadata) {
+ qmiHolder = vdbToQueryMetadata.get(vdbID);
+ if ( qmiHolder == null ) {
+ qmiHolder = new QueryMetadataHolder();
+ vdbToQueryMetadata.put(vdbID, qmiHolder);
+ }
+ }
+ synchronized (qmiHolder) {
+ if (qmiHolder.qmi == null) {
+ qmiHolder.qmi = loadMetadata(vdbID, iss, dataService);
+ }
+ }
+ return qmiHolder.qmi;
+ }
+
+ private void assertIsValidCache() {
+ if(!this.isCacheValid) {
+ throw new MetaMatrixRuntimeException(DQPPlugin.Util.getString("QueryMetadataCache.cache_not_valid")); //$NON-NLS-1$
+ }
+ }
+
+ private TransformationMetadata loadMetadata(final VDBKey vdbID, final MetadataSource runtimeSelector, DataService dataService) throws MetaMatrixComponentException {
+ // check cache status
+ assertIsValidCache();
+
+ List<MetadataStore> metadataStores = new ArrayList<MetadataStore>();
+ try {
+ metadataStores.add(loadMetadataStore(runtimeSelector));
+ Set<String> modelNames = runtimeSelector.getConnectorMetadataModelNames();
+ if (!modelNames.isEmpty()) {
+ for (String modelName : modelNames) {
+ MetadataStore connectorMetadata = null;
+ String savedMetadata = "/runtime-inf/" + modelName.toLowerCase() + ".ser"; //$NON-NLS-1$ //$NON-NLS-2$
+ if (runtimeSelector.cacheConnectorMetadata()) {
+ connectorMetadata = loadMetadataStore(runtimeSelector, savedMetadata);
+ }
+ if (connectorMetadata == null) {
+ connectorMetadata = dataService.getConnectorMetadata(vdbID.getName(), vdbID.getVersion(), modelName, runtimeSelector.getModelInfo(modelName).getProperties());
+ }
+ if (runtimeSelector.cacheConnectorMetadata()) {
+ saveMetadataStore(runtimeSelector, connectorMetadata, savedMetadata);
+ }
+ metadataStores.add(connectorMetadata);
+ }
+ }
+ metadataStores.add(systemMetadataStore);
+ } catch (IOException e) {
+ throw new MetaMatrixComponentException(e);
+ }
+ // build a composite selector for the runtimeselectors of this vdb and system vdb
+ CompositeMetadataStore composite = new CompositeMetadataStore(metadataStores, runtimeSelector);
+ return new TransformationMetadata(composite);
+ }
+
+ public void updateCostMetadata(String vdbName, String vdbVersion, String modelName) throws MetaMatrixComponentException {
+ CompositeMetadataStore store = getMetadataObjectSource(vdbName, vdbVersion);
+ //...
+ }
+
+ public void updateCostMetadata(String vdbName, String vdbVersion, String objectName, String propertyName, String value) {
+
+ }
+
+ private void saveMetadataStore(final MetadataSource runtimeSelector,
+ MetadataStore connectorMetadata, String savedMetadata)
+ throws IOException {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ ObjectOutputStream oos = new ObjectOutputStream(baos);
+ oos.writeObject(connectorMetadata);
+ oos.close();
+ runtimeSelector.saveFile(new ByteArrayInputStream(baos.toByteArray()), savedMetadata);
+ }
+
+ private MetadataStore loadMetadataStore(final MetadataSource vdb) throws IOException {
+ String savedMetadata = "/runtime-inf/" + vdb.getName().toLowerCase() + ".vdb.ser"; //$NON-NLS-1$ //$NON-NLS-2$
+ MetadataStore store = loadMetadataStore(vdb, savedMetadata);
+ if (store == null) {
+ store = new IndexMetadataFactory(vdb).getMetadataStore();
+ saveMetadataStore(vdb, store, savedMetadata);
+ }
+ return store;
+ }
+
+ private MetadataStore loadMetadataStore(final MetadataSource runtimeSelector, String savedMetadata) throws IOException {
+ File f = runtimeSelector.getFile(savedMetadata);
+ if (f != null) {
+ ObjectInputStream ois = null;
+ try {
+ ois = new ObjectInputStream(new FileInputStream(f));
+ return (MetadataStore)ois.readObject();
+ } catch (Exception e) {
+
+ } finally {
+ if (ois != null) {
+ ois.close();
+ }
+ }
+ }
+ return null;
+ }
+
+ public Map<String, Datatype> getBuiltinDatatypes() {
+ Collection<Datatype> datatypes = this.systemMetadataStore.getDatatypes();
+ Map<String, Datatype> datatypeMap = new HashMap<String, Datatype>();
+ for (Class<?> typeClass : DataTypeManager.getAllDataTypeClasses()) {
+ for (Datatype datatypeRecordImpl : datatypes) {
+ if (datatypeRecordImpl.getJavaClassName().equals(typeClass.getName())) {
+ datatypeMap.put(DataTypeManager.getDataTypeName(typeClass), datatypeRecordImpl);
+ break;
+ }
+ }
+ }
+ return datatypeMap;
+ }
+
+ /**
+ * Return unique id for a vdb
+ */
+ private VDBKey toVdbID(final String vdbName, final String vdbVersion) {
+ return new VDBKey(vdbName, vdbVersion);
+ }
+
+
/**
* @see com.metamatrix.dqp.embedded.services.EmbeddedBaseDQPService#initializeService(java.util.Properties)
* @since 4.3
@@ -70,10 +241,11 @@
public void startService(ApplicationEnvironment environment) throws ApplicationLifecycleException {
try {
ConfigurationService configSvc = this.getConfigurationService();
- this.metadataCache = new QueryMetadataCache(configSvc.getSystemVdb());
+ this.systemVDBSelector = VDBArchive.loadVDB(configSvc.getSystemVdb(), configSvc.getWorkDir());
+ this.systemMetadataStore = loadMetadataStore(this.systemVDBSelector);
configSvc.register(listener);
- } catch (MetaMatrixComponentException e) {
- throw new ApplicationLifecycleException(e);
+ } catch (IOException e) {
+ throw new ApplicationLifecycleException(e, DQPPlugin.Util.getString("QueryMetadataCache.Failed_creating_Runtime_Index_Selector._4", CoreConstants.SYSTEM_VDB)); //$NON-NLS-1$
}
}
@@ -83,30 +255,33 @@
*/
public void stopService() throws ApplicationLifecycleException {
getConfigurationService().unregister(this.listener);
- this.metadataCache.clearCache();
+ LogManager.logTrace(LogConstants.CTX_DQP, new Object[] {"QueryMetadataCache Clearing VDB cache"}); //$NON-NLS-1$
+ // mark cache invalid
+ isCacheValid = false;
+ // Clear the holders ...
+ vdbToQueryMetadata.clear();
+
+ // Clean up the directory for the System VDB ...
+ if (this.systemVDBSelector != null) {
+ // selector should no longer be used
+ this.systemVDBSelector.close();
+ }
}
/**
* @see com.metamatrix.dqp.service.MetadataService#lookupMetadata(java.lang.String, java.lang.String)
* @since 4.3
*/
- public QueryMetadataInterface lookupMetadata(String vdbName, String vdbVersion)
+ public TransformationMetadata lookupMetadata(String vdbName, String vdbVersion)
throws MetaMatrixComponentException {
VDBService vdbService = ((VDBService)lookupService(DQPServiceNames.VDB_SERVICE));
DataService dataService = ((DataService)lookupService(DQPServiceNames.DATA_SERVICE));
- return this.metadataCache.lookupMetadata(vdbName, vdbVersion, vdbService.getVDB(vdbName, vdbVersion), dataService);
+ return lookupMetadata(vdbName, vdbVersion, vdbService.getVDB(vdbName, vdbVersion), dataService);
}
- public IObjectSource getMetadataObjectSource(String vdbName, String vdbVersion) throws MetaMatrixComponentException {
- VDBService vdbService = (VDBService)lookupService(DQPServiceNames.VDB_SERVICE);
- return this.metadataCache.getCompositeMetadataObjectSource(vdbName, vdbVersion, vdbService);
+ public CompositeMetadataStore getMetadataObjectSource(String vdbName, String vdbVersion) throws MetaMatrixComponentException {
+ return lookupMetadata(vdbName, vdbVersion).getMetadataStore();
}
- @Override
- public Map<String, DatatypeRecordImpl> getBuiltinDatatypes()
- throws MetaMatrixComponentException {
- return this.metadataCache.getBuiltinDatatypes();
- }
-
}
Modified: branches/JCA/runtime/src/main/java/com/metamatrix/dqp/embedded/services/EmbeddedVDBService.java
===================================================================
--- branches/JCA/runtime/src/main/java/com/metamatrix/dqp/embedded/services/EmbeddedVDBService.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/runtime/src/main/java/com/metamatrix/dqp/embedded/services/EmbeddedVDBService.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -24,7 +24,6 @@
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Iterator;
import java.util.List;
import java.util.Properties;
@@ -36,17 +35,14 @@
import com.metamatrix.common.application.exception.ApplicationInitializationException;
import com.metamatrix.common.application.exception.ApplicationLifecycleException;
import com.metamatrix.common.vdb.api.ModelInfo;
-import com.metamatrix.common.vdb.api.SystemVdbUtility;
import com.metamatrix.common.vdb.api.VDBArchive;
import com.metamatrix.common.vdb.api.VDBDefn;
-import com.metamatrix.core.CoreConstants;
import com.metamatrix.core.util.StringUtil;
import com.metamatrix.core.vdb.VDBStatus;
import com.metamatrix.dqp.embedded.DQPEmbeddedPlugin;
import com.metamatrix.dqp.service.VDBLifeCycleListener;
import com.metamatrix.dqp.service.VDBService;
import com.metamatrix.metadata.runtime.api.VirtualDatabaseDoesNotExistException;
-import com.metamatrix.metadata.runtime.api.VirtualDatabaseException;
import com.metamatrix.vdb.runtime.BasicModelInfo;
import com.metamatrix.vdb.runtime.BasicVDBDefn;
@@ -56,8 +52,6 @@
* @since 4.3
*/
public class EmbeddedVDBService extends EmbeddedBaseDQPService implements VDBService, VDBLifeCycleListener {
- public static final String SYSTEM_PHYSICAL_MODEL_NAME = CoreConstants.SYSTEM_PHYSICAL_MODEL_NAME;
- static final String[] VDB_STATUS = {"INCOMPLETE", "INACTIVE", "ACTIVE", "DELETED"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
@Inject
private DQPContextCache contextCache;
@@ -67,34 +61,40 @@
* @param name
* @param version
* @return vdb if one found; execption otherwise
+ * @throws VirtualDatabaseDoesNotExistException
* @since 4.3
*/
public VDBArchive getVDB(String vdbName, String vdbVersion)
throws MetaMatrixComponentException {
- VDBArchive vdb = getConfigurationService().getVDB(vdbName, vdbVersion);
+ if (vdbVersion == null) {
+ List<VDBArchive> vdbs = getAvailableVDBs();
+
+ // We are looking for the latest version find that now
+ int latestVersion = 0;
+ for (VDBArchive vdb:vdbs) {
+ if(vdb.getName().equalsIgnoreCase(vdbName)) {
+ if (vdb.getStatus() == VDBStatus.ACTIVE_DEFAULT) {
+ latestVersion = Integer.parseInt(vdb.getVersion());
+ break;
+ }
+ latestVersion = Math.max(latestVersion, Integer.parseInt(vdb.getVersion()));
+ }
+ }
+ if(latestVersion == 0) {
+ throw new MetaMatrixComponentException(DQPEmbeddedPlugin.Util.getString("VDBService.VDB_does_not_exist._2", vdbName, "latest")); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ vdbVersion = String.valueOf(latestVersion);
+ }
+
+ VDBArchive vdb = getConfigurationService().getVDB(vdbName, vdbVersion);
// Make sure VDB is not null
if (vdb == null) {
throw new MetaMatrixComponentException(DQPEmbeddedPlugin.Util.getString("VDBService.VDB_does_not_exist._2", new Object[] {vdbName, vdbVersion})); //$NON-NLS-1$
- }
+ }
+
return vdb;
}
- private boolean isSystemModel(String modelName) {
- return modelName.equalsIgnoreCase(SYSTEM_PHYSICAL_MODEL_NAME);
- }
-
- private ModelInfo getModel(VDBDefn vdb, String modelName) {
- Collection c = vdb.getModels();
- Iterator it = c.iterator();
- while (it.hasNext()) {
- ModelInfo model = (ModelInfo)it.next();
- if (model.getName().equals(modelName)) {
- return model;
- }
- }
- return null;
- }
-
/**
* This should changed to connectorBindingNames.
* @see com.metamatrix.dqp.service.VDBService#getConnectorBindings(java.lang.String, java.lang.String, java.lang.String)
@@ -103,13 +103,6 @@
public List<String> getConnectorBindingNames(String vdbName, String vdbVersion, String modelName)
throws MetaMatrixComponentException {
- // If the request for System model, we have a single name always
- if (isSystemModel(modelName)) {
- List list = new ArrayList();
- list.add(INDEX_CONNECTOR_NAME);
- return list;
- }
-
// Otherwise get these from the database.
VDBArchive vdb = getVDB(vdbName, vdbVersion);
BasicVDBDefn def = vdb.getConfigurationDef();
@@ -133,20 +126,15 @@
public int getModelVisibility(String vdbName, String vdbVersion, String modelName)
throws MetaMatrixComponentException {
- // If this is system Model
- if (isSystemModel(modelName)) {
- return ModelInfo.PRIVATE;
- }
-
// If this is any of the Public System Models, like JDBC,ODBC system models
- if(SystemVdbUtility.isSystemModelWithSystemTableType(modelName)){
+ if(VDBArchive.isSystemModelWithSystemTableType(modelName)){
return ModelInfo.PUBLIC;
}
VDBArchive vdb = getVDB(vdbName, vdbVersion);
VDBDefn def = vdb.getConfigurationDef();
- ModelInfo model = getModel(def, modelName);
+ ModelInfo model = def.getModel(modelName);
if(model != null) {
return model.getVisibility();
}
@@ -164,20 +152,15 @@
String modelName = StringUtil.getFirstToken(StringUtil.getLastToken(pathInVDB, "/"), "."); //$NON-NLS-1$ //$NON-NLS-2$
- // If this is system Model
- if (isSystemModel(modelName)) {
- return ModelInfo.PRIVATE;
- }
-
// If this is any of the Public System Models, like JDBC,ODBC system models
- if(SystemVdbUtility.isSystemModelWithSystemTableType(modelName)){
+ if(VDBArchive.isSystemModelWithSystemTableType(modelName)){
return ModelInfo.PUBLIC;
}
VDBArchive vdb = getVDB(vdbName, vdbVersion);
VDBDefn def = vdb.getConfigurationDef();
- ModelInfo model = getModel(def, modelName);
+ ModelInfo model = def.getModel(modelName);
if(model != null) {
return model.getVisibility();
}
@@ -234,23 +217,32 @@
if (status != currentStatus) {
// Change the VDB's status
- VDBArchive sameVdb = vdb;
- if (currentStatus != VDBStatus.ACTIVE
- && (status == VDBStatus.ACTIVE || status == VDBStatus.ACTIVE_DEFAULT) ) {
- if (!isValidVDB(sameVdb) || !getConfigurationService().isFullyConfiguredVDB(sameVdb)) {
+ if (status == VDBStatus.ACTIVE || status == VDBStatus.ACTIVE_DEFAULT) {
+ if (!vdb.isValid()) {
+ throw new MetaMatrixComponentException(DQPEmbeddedPlugin.Util.getString("EmbeddedConfigurationService.invalid_vdb", vdb.getName())); //$NON-NLS-1$
+ }
+ if (!getConfigurationService().isFullyConfiguredVDB(vdb)) {
throw new MetaMatrixComponentException(DQPEmbeddedPlugin.Util.getString("VDBService.vdb_missing_bindings", new Object[] {vdb.getName(), vdb.getVersion()})); //$NON-NLS-1$
}
+ if (status == VDBStatus.ACTIVE_DEFAULT) {
+ //only 1 can be set as active default
+ VDBArchive latestActive = getVDB(vdbName, null);
+ if (latestActive.getStatus() == VDBStatus.ACTIVE_DEFAULT) {
+ latestActive.setStatus(VDBStatus.ACTIVE);
+ getConfigurationService().saveVDB(latestActive, latestActive.getVersion());
+ }
+ }
}
- sameVdb.setStatus((short)status);
+ vdb.setStatus((short)status);
// make sure we got what we asked for
- if (status != sameVdb.getStatus()) {
- throw new MetaMatrixComponentException(DQPEmbeddedPlugin.Util.getString("VDBService.vdb_change_status_failed", new Object[] {vdbName, vdbVersion, VDB_STATUS[currentStatus-1], VDB_STATUS[status-1]})); //$NON-NLS-1$
+ if (status != vdb.getStatus()) {
+ throw new MetaMatrixComponentException(DQPEmbeddedPlugin.Util.getString("VDBService.vdb_change_status_failed", new Object[] {vdbName, vdbVersion, VDBStatus.VDB_STATUS_NAMES[currentStatus-1], VDBStatus.VDB_STATUS_NAMES[status-1]})); //$NON-NLS-1$
}
// now save the change in the configuration.
getConfigurationService().saveVDB(vdb, vdb.getVersion());
- DQPEmbeddedPlugin.logInfo("VDBService.vdb_change_status", new Object[] {vdbName, vdbVersion, VDB_STATUS[currentStatus-1], VDB_STATUS[status-1]}); //$NON-NLS-1$
+ DQPEmbeddedPlugin.logInfo("VDBService.vdb_change_status", new Object[] {vdbName, vdbVersion, VDBStatus.VDB_STATUS_NAMES[currentStatus-1], VDBStatus.VDB_STATUS_NAMES[status-1]}); //$NON-NLS-1$
}
}
@@ -293,32 +285,4 @@
this.contextCache.removeVDBScopedCache(vdbName, vdbVersion);
}
- @Override
- public String getActiveVDBVersion(String vdbName, String vdbVersion) throws MetaMatrixComponentException, VirtualDatabaseException {
- List<VDBArchive> vdbs = getAvailableVDBs();
-
- // We are looking for the latest version find that now
- if (vdbVersion == null) {
- int latestVersion = 0;
- for (VDBArchive vdb:vdbs) {
- if(vdb.getName().equalsIgnoreCase(vdbName)) {
- // Make sure the VDB Name and version number are the only parts of this vdb key
- latestVersion = Math.max(latestVersion, Integer.parseInt(vdb.getVersion()));
- }
- }
- if(latestVersion == 0) {
- throw new VirtualDatabaseDoesNotExistException(DQPEmbeddedPlugin.Util.getString("VDBService.VDB_does_not_exist._2", vdbName, "latest")); //$NON-NLS-1$ //$NON-NLS-2$
- }
- vdbVersion = String.valueOf(latestVersion);
- }
-
- // This below call will load the VDB from configuration into VDB service
- // if not already done so.
- int status = getVDB(vdbName, vdbVersion).getStatus();
- if (status != VDBStatus.ACTIVE) {
- throw new VirtualDatabaseException(DQPEmbeddedPlugin.Util.getString("VDBService.VDB_does_not_exist._2", vdbName, vdbVersion)); //$NON-NLS-1$
- }
- return vdbVersion;
- }
-
}
Modified: branches/JCA/runtime/src/main/java/com/metamatrix/jdbc/EmbeddedConnectionFactoryImpl.java
===================================================================
--- branches/JCA/runtime/src/main/java/com/metamatrix/jdbc/EmbeddedConnectionFactoryImpl.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/runtime/src/main/java/com/metamatrix/jdbc/EmbeddedConnectionFactoryImpl.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -45,6 +45,7 @@
import org.teiid.dqp.internal.process.DQPCore;
import org.teiid.transport.AdminAuthorizationInterceptor;
import org.teiid.transport.LogonImpl;
+import org.teiid.transport.SocketListenerStats;
import org.teiid.transport.SocketTransport;
import com.google.inject.Guice;
@@ -75,7 +76,6 @@
import com.metamatrix.dqp.util.LogConstants;
import com.metamatrix.platform.security.api.ILogon;
import com.metamatrix.platform.security.api.service.SessionServiceInterface;
-import com.metamatrix.platform.vm.controller.SocketListenerStats;
/**
Modified: branches/JCA/runtime/src/main/java/com/metamatrix/jdbc/EmbeddedGuiceModule.java
===================================================================
--- branches/JCA/runtime/src/main/java/com/metamatrix/jdbc/EmbeddedGuiceModule.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/runtime/src/main/java/com/metamatrix/jdbc/EmbeddedGuiceModule.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -46,7 +46,6 @@
import com.metamatrix.common.log.LogManager;
import com.metamatrix.core.MetaMatrixRuntimeException;
import com.metamatrix.core.log.LogListener;
-import com.metamatrix.dqp.ResourceFinder;
import com.metamatrix.dqp.embedded.DQPEmbeddedProperties;
import com.metamatrix.dqp.embedded.services.EmbeddedBufferService;
import com.metamatrix.dqp.embedded.services.EmbeddedConfigurationService;
@@ -99,7 +98,6 @@
private DQPContextCache getContextCache() {
DQPContextCache cache = new DQPContextCache();
- cache.setCacheFactory(ResourceFinder.getCacheFactory());
cache.setProcessName(this.props.getProperty(DQPEmbeddedProperties.PROCESSNAME));
return cache;
}
Modified: branches/JCA/runtime/src/main/java/com/metamatrix/jdbc/LogListernerProvider.java
===================================================================
--- branches/JCA/runtime/src/main/java/com/metamatrix/jdbc/LogListernerProvider.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/runtime/src/main/java/com/metamatrix/jdbc/LogListernerProvider.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -22,22 +22,15 @@
package com.metamatrix.jdbc;
-import java.util.Properties;
-
import org.apache.log4j.Logger;
-import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.Singleton;
-import com.google.inject.name.Named;
import com.metamatrix.core.log.LogListener;
@Singleton
class LogListernerProvider implements Provider<LogListener> {
- @Inject @Named("DQPProperties")
- Properties props;
-
@Override
public LogListener get() {
return new Log4jListener();
Modified: branches/JCA/runtime/src/main/java/com/metamatrix/platform/security/session/service/SessionServiceImpl.java
===================================================================
--- branches/JCA/runtime/src/main/java/com/metamatrix/platform/security/session/service/SessionServiceImpl.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/runtime/src/main/java/com/metamatrix/platform/security/session/service/SessionServiceImpl.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -51,19 +51,18 @@
import com.metamatrix.common.comm.api.ServerConnection;
import com.metamatrix.common.log.LogManager;
import com.metamatrix.common.util.LogConstants;
+import com.metamatrix.common.vdb.api.VDBArchive;
import com.metamatrix.core.util.ArgCheck;
import com.metamatrix.core.util.StringUtil;
+import com.metamatrix.core.vdb.VDBStatus;
import com.metamatrix.dqp.embedded.DQPEmbeddedPlugin;
import com.metamatrix.dqp.service.VDBService;
-import com.metamatrix.metadata.runtime.api.VirtualDatabaseDoesNotExistException;
-import com.metamatrix.metadata.runtime.api.VirtualDatabaseException;
import com.metamatrix.platform.security.api.Credentials;
import com.metamatrix.platform.security.api.MetaMatrixSessionID;
import com.metamatrix.platform.security.api.MetaMatrixSessionInfo;
import com.metamatrix.platform.security.api.service.SessionListener;
import com.metamatrix.platform.security.api.service.SessionServiceInterface;
import com.metamatrix.platform.security.membership.service.MembershipServiceImpl;
-import com.metamatrix.platform.util.ProductInfoConstants;
/**
* This class serves as the primary implementation of the Session Service.
@@ -119,7 +118,7 @@
if (info == null) {
throw new InvalidSessionException(DQPEmbeddedPlugin.Util.getString("SessionServiceImpl.invalid_session", sessionID)); //$NON-NLS-1$
}
- if (info.getProductInfo(ProductInfoConstants.VIRTUAL_DB) != null) {
+ if (info.getProductInfo(MMURL.JDBC.VDB_NAME) != null) {
try {
dqpCore.terminateConnection(info.getSessionToken().getSessionIDValue());
} catch (Exception e) {
@@ -162,24 +161,22 @@
}
// Validate VDB and version if logging on to server product...
- String vdbName = properties.getProperty(ProductInfoConstants.VIRTUAL_DB);
+ String vdbName = properties.getProperty(MMURL.JDBC.VDB_NAME);
if (vdbName != null) {
- String vdbVersion = properties.getProperty(ProductInfoConstants.VDB_VERSION);
+ String vdbVersion = properties.getProperty(MMURL.JDBC.VDB_VERSION);
try {
- vdbVersion = vdbService.getActiveVDBVersion(vdbName, vdbVersion);
- } catch (VirtualDatabaseDoesNotExistException e) {
- throw new SessionServiceException(e);
- } catch (VirtualDatabaseException e) {
- if (vdbVersion == null) {
- throw new SessionServiceException(e,DQPEmbeddedPlugin.Util.getString("SessionServiceImpl.Unexpected_error_finding_latest_version_of_Virtual_Database", new Object[] {vdbName})); //$NON-NLS-1$
+ VDBArchive vdb = vdbService.getVDB(vdbName, vdbVersion);
+ if (vdb.getStatus() != VDBStatus.ACTIVE && vdb.getStatus() != VDBStatus.ACTIVE_DEFAULT) {
+ throw new SessionServiceException(DQPEmbeddedPlugin.Util.getString("VDBService.VDB_does_not_exist._2", vdbName, vdbVersion==null?"latest":vdbVersion)); //$NON-NLS-1$ //$NON-NLS-2$
}
- throw new SessionServiceException(e,DQPEmbeddedPlugin.Util.getString("SessionServiceImpl.Unexpected_error_finding_latest_version_of_Virtual_Database_{0}_of_version_{1}", new Object[] {vdbName, vdbVersion})); //$NON-NLS-1$
+ vdbName = vdb.getName();
+ vdbVersion = vdb.getVersion();
} catch (MetaMatrixComponentException e) {
- throw new SessionServiceException(e);
+ throw new SessionServiceException(e);
}
// Reset product info with validated constants
- productInfo.put(ProductInfoConstants.VIRTUAL_DB, vdbName);
- productInfo.put(ProductInfoConstants.VDB_VERSION, vdbVersion);
+ productInfo.put(MMURL.JDBC.VDB_NAME, vdbName);
+ productInfo.put(MMURL.JDBC.VDB_VERSION, vdbVersion);
}
if (sessionMaxLimit > 0 && getActiveSessionsCount() >= sessionMaxLimit) {
@@ -234,7 +231,7 @@
}
ArrayList<MetaMatrixSessionInfo> results = new ArrayList<MetaMatrixSessionInfo>();
for (MetaMatrixSessionInfo info : this.sessionCache.values()) {
- if (VDBName.equalsIgnoreCase(info.getProductInfo(ProductInfoConstants.VIRTUAL_DB)) && VDBVersion.equalsIgnoreCase(info.getProductInfo(ProductInfoConstants.VDB_VERSION))) {
+ if (VDBName.equalsIgnoreCase(info.getProductInfo(MMURL.JDBC.VDB_NAME)) && VDBVersion.equalsIgnoreCase(info.getProductInfo(MMURL.JDBC.VDB_VERSION))) {
results.add(info);
}
}
@@ -337,4 +334,12 @@
this.sessionListener = listener;
}
+ @Override
+ public void setLocalSession(MetaMatrixSessionID sessionID) {
+ MetaMatrixSessionInfo info = this.sessionCache.get(sessionID);
+ if (info != null) {
+ info.setLastPingTime(Long.MAX_VALUE);
+ }
+ }
+
}
Modified: branches/JCA/runtime/src/main/java/org/teiid/transport/LocalServerConnection.java
===================================================================
--- branches/JCA/runtime/src/main/java/org/teiid/transport/LocalServerConnection.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/runtime/src/main/java/org/teiid/transport/LocalServerConnection.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -54,28 +54,25 @@
private boolean shutdown;
private DQPWorkContext workContext;
private ClassLoader classLoader;
- ClientServiceRegistry clientServices;
- SessionServiceInterface sessionService;
-
+ private ClientServiceRegistry clientServices;
+ private SessionServiceInterface sessionService;
+ private ILogon logon;
public LocalServerConnection(Properties connectionProperties, ClientServiceRegistry clientServices, SessionServiceInterface sessionService) throws CommunicationException, ConnectionException{
-
this.clientServices = clientServices;
-
+ this.sessionService = sessionService;
//Initialize the workContext
workContext = new DQPWorkContext();
DQPWorkContext.setWorkContext(workContext);
-
+ this.classLoader = Thread.currentThread().getContextClassLoader();
+ this.logon = this.getService(ILogon.class);
this.result = authenticate(connectionProperties);
-
- this.classLoader = Thread.currentThread().getContextClassLoader();
-
- this.sessionService = sessionService;
}
-
+
public synchronized LogonResult authenticate(Properties connProps) throws ConnectionException, CommunicationException {
try {
- LogonResult logonResult = getService(ILogon.class).logon(connProps);
+ LogonResult logonResult = this.logon.logon(connProps);
+ this.sessionService.setLocalSession(logonResult.getSessionID());
return logonResult;
} catch (LogonException e) {
// Propagate the original message as it contains the message we want
@@ -126,26 +123,31 @@
}
public void close() {
+ shutdown(true);
+ }
+
+ private void shutdown(boolean logoff) {
if (shutdown) {
return;
}
- try {
- //make a best effort to send the logoff
- Future<?> writeFuture = getService(ILogon.class).logoff();
- if (writeFuture != null) {
- writeFuture.get(5000, TimeUnit.MILLISECONDS);
+ if (logoff) {
+ try {
+ //make a best effort to send the logoff
+ Future<?> writeFuture = this.logon.logoff();
+ if (writeFuture != null) {
+ writeFuture.get(5000, TimeUnit.MILLISECONDS);
+ }
+ } catch (InvalidSessionException e) {
+ //ignore
+ } catch (InterruptedException e) {
+ //ignore
+ } catch (ExecutionException e) {
+ //ignore
+ } catch (TimeoutException e) {
+ //ignore
}
- } catch (InvalidSessionException e) {
- //ignore
- } catch (InterruptedException e) {
- //ignore
- } catch (ExecutionException e) {
- //ignore
- } catch (TimeoutException e) {
- //ignore
}
-
this.shutdown = true;
}
Modified: branches/JCA/runtime/src/main/java/org/teiid/transport/LogonImpl.java
===================================================================
--- branches/JCA/runtime/src/main/java/org/teiid/transport/LogonImpl.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/runtime/src/main/java/org/teiid/transport/LogonImpl.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -45,7 +45,6 @@
import com.metamatrix.platform.security.api.MetaMatrixSessionInfo;
import com.metamatrix.platform.security.api.SessionToken;
import com.metamatrix.platform.security.api.service.SessionServiceInterface;
-import com.metamatrix.platform.util.ProductInfoConstants;
public class LogonImpl implements ILogon {
@@ -87,8 +86,8 @@
DQPWorkContext workContext = DQPWorkContext.getWorkContext();
workContext.setSessionToken(sessionInfo.getSessionToken());
workContext.setAppName(sessionInfo.getApplicationName());
- workContext.setVdbName(sessionInfo.getProductInfo(ProductInfoConstants.VIRTUAL_DB));
- workContext.setVdbVersion(sessionInfo.getProductInfo(ProductInfoConstants.VDB_VERSION));
+ workContext.setVdbName(sessionInfo.getProductInfo(MMURL.JDBC.VDB_NAME));
+ workContext.setVdbVersion(sessionInfo.getProductInfo(MMURL.JDBC.VDB_VERSION));
if (sessionInfo.getLoginContext() != null) {
workContext.setSubject(sessionInfo.getLoginContext().getSubject());
workContext.setSecurityDomain(sessionInfo.getSecurityDomain());
Modified: branches/JCA/runtime/src/main/java/org/teiid/transport/SocketListener.java
===================================================================
--- branches/JCA/runtime/src/main/java/org/teiid/transport/SocketListener.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/runtime/src/main/java/org/teiid/transport/SocketListener.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -47,7 +47,6 @@
import com.metamatrix.common.util.LogConstants;
import com.metamatrix.core.log.MessageLevel;
import com.metamatrix.platform.security.api.service.SessionServiceInterface;
-import com.metamatrix.platform.vm.controller.SocketListenerStats;
/**
* Server-side class to listen for new connection requests and create a SocketClientConnection for each connection request.
Added: branches/JCA/runtime/src/main/java/org/teiid/transport/SocketListenerStats.java
===================================================================
--- branches/JCA/runtime/src/main/java/org/teiid/transport/SocketListenerStats.java (rev 0)
+++ branches/JCA/runtime/src/main/java/org/teiid/transport/SocketListenerStats.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,40 @@
+/*
+ * 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.transport;
+
+import java.io.Serializable;
+
+
+/**
+ * Data holder for statistics about the server-side SocketListener.
+ * @since 4.3
+ */
+public class SocketListenerStats implements Serializable {
+
+ public long objectsRead = 0;
+ public long objectsWritten = 0;
+
+ public int sockets = 0;
+ public int maxSockets = 0;
+}
+
Property changes on: branches/JCA/runtime/src/main/java/org/teiid/transport/SocketListenerStats.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: branches/JCA/runtime/src/main/java/org/teiid/transport/SocketTransport.java
===================================================================
--- branches/JCA/runtime/src/main/java/org/teiid/transport/SocketTransport.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/runtime/src/main/java/org/teiid/transport/SocketTransport.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -39,7 +39,6 @@
import com.metamatrix.dqp.embedded.DQPEmbeddedPlugin;
import com.metamatrix.dqp.embedded.DQPEmbeddedProperties;
import com.metamatrix.platform.security.api.service.SessionServiceInterface;
-import com.metamatrix.platform.vm.controller.SocketListenerStats;
/**
* This class starts a Socket for DQP connections and listens on the port and hands out the connections to the
Modified: branches/JCA/runtime/src/main/resources/com/metamatrix/dqp/embedded/i18n.properties
===================================================================
--- branches/JCA/runtime/src/main/resources/com/metamatrix/dqp/embedded/i18n.properties 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/runtime/src/main/resources/com/metamatrix/dqp/embedded/i18n.properties 2009-12-02 23:40:40 UTC (rev 1616)
@@ -44,7 +44,7 @@
VDBConfigFileReader.Already_contains_connector_type=Configuration has two definitions for connector type \"{0}\".
VDBConfigFileReader.No_connector_binding_in_config = A model \"{0}\" specifies a connector binding "{1}" for which there is no definition found in the configuration or VDB definition files.
-VDBService.VDB_does_not_exist._2=VDB \"{0}\" version \"{1}\" does not exist or not in valid state.
+VDBService.VDB_does_not_exist._2=VDB \"{0}\" version \"{1}\" is not active.
VDBService.VDB_does_not_exist._3=In VDB \"{0}\" version \"{1}\" the Model \"{2}\" does not exist.
VDBService.Model_does_not_exist._4=Model "{0}" does not exist.
VDBService.0=Error trying to read visibility information from the vdb \"{0}\".
@@ -55,14 +55,14 @@
VDBService.vdb_change_status=VDB \"{0}\" with version \"{1}\" has changed its status from \"{2}\" to \"{3}\" in VDBService
VDBService.vdb_change_status_failed=VDB \"{0}\" with version \"{1}\" has failed to change its status from \"{2}\" to \"{3}\" in VDBService
VDBService.connector_binding_changed=VDB \"{0}\" with version \"{1}\" has changed its connector binding for model name \"{2}\" with \"{3}\"
-VDBService.vdb_already_exists=VDB \"{0}\" with version \"{1}\" already exists in the configuration, will going to save as a new version of the VDB
+VDBService.vdb_already_exists=VDB \"{0}\" with version \"{1}\" already exists in the configuration, saving as a new version of the VDB
VDBService.vdb_deployed=VDB \"{0}\" with version \"{1}\" has been deployed to the Teiid system.
VDBService.vdb_loded=VDB \"{0}\" with version \"{1}\" has been loaded from the configuration.
VDBService.vdb_missing_bindings=VDB \"{0}\" with version \"{1}\" is incomplete, it does not have all the connector bindings mapped to their physical models.
VDBService.lookup=VDB \"{0}\" with version \"{1}\" being loaded from configuration
VDBService.vdb_deleted=VDB \"{0}\" with version \"{1}\" deleted from VDB Service and configuration
VDBService.connector_binding_changed=VDB \"{0}\" with version \"{1}\" has changed its connector binding for model name {2} with {3}
-VDBService.vdb_already_exists=VDB \"{0}\" with version \"{1}\" already exists in the configuration, will going to save as a new version of the VDB
+VDBService.vdb_already_exists=VDB \"{0}\" with version \"{1}\" already exists in the configuration, saving as a new version of the VDB
VDBService.vdb_deployed=VDB \"{0}\" with version \"{1}\" has been deployed to the Teiid system.
VDBService.vdb_loded=VDB \"{0}\" with version \"{1}\" has been loaded from the configuration.
VDBService.vdb_missing_bindings=VDB \"{0}\" with version \"{1}\" is incomplete, it does not have all the connector bindings mapped to their physical models.
@@ -70,6 +70,7 @@
VDBService.validityErrors=Failed to deploy VDB \"{0}\" because it has following validity errors; {1}
VDBService.vdb_missing_models=VDB \"{0}\" with version \"{1}\" is Invalid; This archive has no models defined.
+DataService.Didnt_find_caps=Unable to find capabilities for {0}
DataService.Unable_to_find_connector_manager_for_{0}_1=Unable to find connector manager for \"{0}\"
DataService.Unable_to_find_connector=Invalid Connector name supplied or Connector not found: \"{0}\"
DataService.System_model_initialze_error=Connector Binding for the System Model is not initialized
Modified: branches/JCA/runtime/src/test/java/com/metamatrix/dqp/embedded/services/TestEmbeddedVDBService.java
===================================================================
--- branches/JCA/runtime/src/test/java/com/metamatrix/dqp/embedded/services/TestEmbeddedVDBService.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/runtime/src/test/java/com/metamatrix/dqp/embedded/services/TestEmbeddedVDBService.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -29,7 +29,7 @@
import junit.framework.TestCase;
import com.metamatrix.api.exception.MetaMatrixComponentException;
-import com.metamatrix.common.application.Application;
+import com.metamatrix.common.application.ApplicationEnvironment;
import com.metamatrix.common.vdb.api.VDBArchive;
import com.metamatrix.core.util.FileUtils;
import com.metamatrix.core.util.UnitTestUtil;
@@ -47,7 +47,7 @@
protected void setUp() throws Exception {
EmbeddedTestUtil.createTestDirectory();
- Application registry = new Application();
+ ApplicationEnvironment registry = new ApplicationEnvironment();
configService = new EmbeddedConfigurationService();
registry.installService(DQPServiceNames.CONFIGURATION_SERVICE, configService);
vdbService = new EmbeddedVDBService();
@@ -77,17 +77,6 @@
}
}
- public void testSystemModelConnectorBinding() throws Exception {
- Properties p = EmbeddedTestUtil.getProperties();
- configService.setUserPreferences(p);
- configService.initializeService(p);
-
- // asking "vdb.name" and stored "vdb.name"
- List names = vdbService.getConnectorBindingNames("QT_Ora9DS", "1", EmbeddedVDBService.SYSTEM_PHYSICAL_MODEL_NAME); //$NON-NLS-1$ //$NON-NLS-2$
- assertEquals(1, names.size());
- assertEquals(EmbeddedBaseDQPService.INDEX_CONNECTOR_NAME, (String)names.get(0));
- }
-
// new VDB connector binding scope names
//---------------------------------------
// | stored |
@@ -151,7 +140,7 @@
vdbService.stopService();
configService.stopService();
- Application registry = new Application();
+ ApplicationEnvironment registry = new ApplicationEnvironment();
configService = new EmbeddedConfigurationService();
configService.setUserPreferences(p);
configService.initializeService(p);
Modified: branches/JCA/runtime/src/test/java/com/metamatrix/dqp/service/buffer/TestLocalBufferService.java
===================================================================
--- branches/JCA/runtime/src/test/java/com/metamatrix/dqp/service/buffer/TestLocalBufferService.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/runtime/src/test/java/com/metamatrix/dqp/service/buffer/TestLocalBufferService.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -26,7 +26,7 @@
import junit.framework.TestCase;
-import com.metamatrix.common.application.Application;
+import com.metamatrix.common.application.ApplicationEnvironment;
import com.metamatrix.common.application.exception.ApplicationInitializationException;
import com.metamatrix.common.buffer.impl.BufferConfig;
import com.metamatrix.common.buffer.impl.BufferManagerImpl;
@@ -46,7 +46,7 @@
public void testMissingRequiredProperties() throws Exception {
try {
- Application r = new Application();
+ ApplicationEnvironment r = new ApplicationEnvironment();
ConfigurationService cs = new EmbeddedConfigurationService();
Properties p = EmbeddedTestUtil.getProperties(UnitTestUtil.getTestDataPath() + "/admin/buffertest1.properties"); //$NON-NLS-1$
p.setProperty(DQPEmbeddedProperties.DQP_WORKDIR, System.getProperty("java.io.tmpdir")+"/teiid/1"); //$NON-NLS-1$ //$NON-NLS-2$
@@ -70,7 +70,7 @@
public void testCheckMemPropertyGotSet() throws Exception {
EmbeddedBufferService svc = null;
ConfigurationService cs = null;
- Application r = new Application();
+ ApplicationEnvironment r = new ApplicationEnvironment();
cs = new EmbeddedConfigurationService();
Properties p = EmbeddedTestUtil.getProperties(UnitTestUtil.getTestDataPath() + "/admin/buffertest2.properties"); //$NON-NLS-1$
p.setProperty(DQPEmbeddedProperties.DQP_WORKDIR, System.getProperty("java.io.tmpdir")+"/teiid/1"); //$NON-NLS-1$ //$NON-NLS-2$
@@ -97,7 +97,7 @@
public void testCheckMemPropertyGotSet2() throws Exception {
EmbeddedBufferService svc = null;
- Application r = new Application();
+ ApplicationEnvironment r = new ApplicationEnvironment();
ConfigurationService cs = new EmbeddedConfigurationService();
Properties p = EmbeddedTestUtil.getProperties(UnitTestUtil.getTestDataPath() + "/admin/buffertest3.properties"); //$NON-NLS-1$
p.setProperty(DQPEmbeddedProperties.DQP_WORKDIR, System.getProperty("java.io.tmpdir")+"/teiid/1"); //$NON-NLS-1$ //$NON-NLS-2$
Modified: branches/JCA/runtime/src/test/java/org/teiid/transport/TestCommSockets.java
===================================================================
--- branches/JCA/runtime/src/test/java/org/teiid/transport/TestCommSockets.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/runtime/src/test/java/org/teiid/transport/TestCommSockets.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -51,7 +51,6 @@
import com.metamatrix.platform.security.api.ILogon;
import com.metamatrix.platform.security.api.LogonResult;
import com.metamatrix.platform.security.api.service.SessionServiceInterface;
-import com.metamatrix.platform.vm.controller.SocketListenerStats;
public class TestCommSockets {
Modified: branches/JCA/test-integration/common/pom.xml
===================================================================
--- branches/JCA/test-integration/common/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -4,7 +4,7 @@
<parent>
<artifactId>teiid-test-integration</artifactId>
<groupId>org.jboss.teiid</groupId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>test-integration-common</artifactId>
Modified: branches/JCA/test-integration/common/src/test/java/com/metamatrix/cdk/TestConnectorShell.java
===================================================================
--- branches/JCA/test-integration/common/src/test/java/com/metamatrix/cdk/TestConnectorShell.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/java/com/metamatrix/cdk/TestConnectorShell.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -115,7 +115,7 @@
start();
setScriptFile();
String result = connectorShell.execute("runAll"); //$NON-NLS-1$
- assertEquals("Test " + UnitTestUtil.getTestDataPath() + File.separator + "script.txt.test1 failed. CompareResults Error: Expected 1 records but received 2\nTest " + UnitTestUtil.getTestDataPath() + File.separator +"script.txt.testBadData failed. CompareResults Error: Value mismatch at row 1 and column 2: expected = XX, actual = ABCDEFGHIJ\nTests run: 16 test failures: 2", result); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ assertEquals("Test " + UnitTestUtil.getTestDataPath() + File.separator + "script.txt.test1 failed. CompareResults Error: Expected 1 records but received 2\nTest " + UnitTestUtil.getTestDataPath() + File.separator +"script.txt.testBadData failed. CompareResults Error: Value mismatch at row 1 and column 2: expected = XX, actual = ABCDEFGHIJ\nTests run: 14 test failures: 2", result); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
public void testSetProperty() {
@@ -167,10 +167,6 @@
return connectorShell;
}
- public void testTabsInResults() {
- runTest("testTabsInResults"); //$NON-NLS-1$
- }
-
public void testLoadArchive() {
runTest("testLoadArchive"); //$NON-NLS-1$
}
@@ -182,10 +178,6 @@
assertTrue("failed to create archive file", f.exists());
}
- public void testBracketsInResult() {
- runTest("testBracketsInResult"); //$NON-NLS-1$
- }
-
public void testHelp() {
runTest("testHelp"); //$NON-NLS-1$
}
Modified: branches/JCA/test-integration/common/src/test/java/com/metamatrix/connector/jdbc/extension/TestSQLConversionVisitor.java
===================================================================
--- branches/JCA/test-integration/common/src/test/java/com/metamatrix/connector/jdbc/extension/TestSQLConversionVisitor.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/java/com/metamatrix/connector/jdbc/extension/TestSQLConversionVisitor.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -29,39 +29,20 @@
import org.teiid.connector.api.ConnectorException;
import org.teiid.connector.api.ExecutionContext;
import org.teiid.connector.jdbc.JDBCPropertyNames;
+import org.teiid.connector.jdbc.TranslationHelper;
import org.teiid.connector.jdbc.translator.SQLConversionVisitor;
-import org.teiid.connector.jdbc.translator.TranslatedCommand;
import org.teiid.connector.jdbc.translator.Translator;
-import org.teiid.connector.language.ICommand;
import org.teiid.connector.language.ILanguageObject;
import org.teiid.connector.metadata.runtime.RuntimeMetadata;
import org.teiid.dqp.internal.datamgr.impl.ExecutionContextImpl;
-import org.teiid.dqp.internal.datamgr.impl.FakeExecutionContextImpl;
-import org.teiid.dqp.internal.datamgr.language.LanguageBridgeFactory;
import org.teiid.dqp.internal.datamgr.language.TestDeleteImpl;
import org.teiid.dqp.internal.datamgr.language.TestInsertImpl;
import org.teiid.dqp.internal.datamgr.language.TestProcedureImpl;
import org.teiid.dqp.internal.datamgr.language.TestSelectImpl;
import org.teiid.dqp.internal.datamgr.language.TestUpdateImpl;
import org.teiid.dqp.internal.datamgr.language.TstLanguageBridgeFactory;
-import org.teiid.metadata.index.VDBMetadataFactory;
import com.metamatrix.cdk.api.EnvironmentUtility;
-import com.metamatrix.cdk.api.TranslationUtility;
-import com.metamatrix.core.util.UnitTestUtil;
-import com.metamatrix.query.metadata.QueryMetadataInterface;
-import com.metamatrix.query.resolver.QueryResolver;
-import com.metamatrix.query.rewriter.QueryRewriter;
-import com.metamatrix.query.sql.lang.Command;
-import com.metamatrix.query.sql.lang.From;
-import com.metamatrix.query.sql.lang.GroupBy;
-import com.metamatrix.query.sql.lang.Query;
-import com.metamatrix.query.sql.lang.Select;
-import com.metamatrix.query.sql.symbol.Constant;
-import com.metamatrix.query.sql.symbol.ElementSymbol;
-import com.metamatrix.query.sql.symbol.Expression;
-import com.metamatrix.query.sql.symbol.Function;
-import com.metamatrix.query.sql.symbol.GroupSymbol;
/**
*/
@@ -84,28 +65,23 @@
}
public String getTestVDB() {
- return UnitTestUtil.getTestDataPath() + "/partssupplier/PartsSupplier.vdb"; //$NON-NLS-1$
+ return TranslationHelper.PARTS_VDB;
}
- public ICommand helpTranslate(String vdbFileName, String sql) {
- TranslationUtility util = new TranslationUtility(vdbFileName);
- return util.parseCommand(sql);
- }
-
public void helpTestVisitor(String vdb, String input, String expectedOutput) {
helpTestVisitor(vdb, input, expectedOutput, false);
}
- public void helpTestVisitor(String vdb, String input, String expectedOutput, boolean useMetadata) {
- helpTestVisitor(vdb, input, expectedOutput, useMetadata, false);
- }
-
- public void helpTestVisitor(String vdb, String input, String expectedOutput, boolean useMetadata, boolean usePreparedStatement) {
- // Convert from sql to objects
- ICommand obj = helpTranslate(vdb, input);
-
- try {
- helpTestVisitorWithCommand(expectedOutput, obj, useMetadata, usePreparedStatement);
+ public void helpTestVisitor(String vdb, String input, String expectedOutput, boolean usePreparedStatement) {
+ try {
+ Translator trans = new Translator();
+ Properties p = new Properties();
+ if (usePreparedStatement) {
+ p.setProperty(JDBCPropertyNames.USE_BIND_VARIABLES, Boolean.TRUE.toString());
+ }
+ trans.initialize(EnvironmentUtility.createEnvironment(p, false));
+
+ TranslationHelper.helpTestVisitor(vdb, input, expectedOutput, trans);
} catch (ConnectorException e) {
throw new RuntimeException(e);
}
@@ -123,30 +99,6 @@
return visitor.toString();
}
- /**
- * @param expectedOutput
- * @param obj
- * @throws ConnectorException
- * @since 4.2
- */
- private void helpTestVisitorWithCommand(String expectedOutput,
- ICommand obj,
- boolean useMetadata,
- boolean usePreparedStatement) throws ConnectorException {
- // Apply function replacement
- Translator trans = new Translator();
- Properties p = new Properties();
- if (usePreparedStatement) {
- p.setProperty(JDBCPropertyNames.USE_BIND_VARIABLES, Boolean.TRUE.toString());
- }
- trans.initialize(EnvironmentUtility.createEnvironment(p, false));
-
- TranslatedCommand tc = new TranslatedCommand(new FakeExecutionContextImpl(), trans);
- tc.translateCommand(obj);
-
- assertEquals("Did not get correct sql", expectedOutput, tc.getSql()); //$NON-NLS-1$
- }
-
public void testSimple() {
helpTestVisitor(getTestVDB(),
"select part_name from parts", //$NON-NLS-1$
@@ -363,36 +315,10 @@
"UPDATE PARTS SET PART_WEIGHT = 'a' WHERE NULL <> NULL"); //$NON-NLS-1$
}
- public void testGroupByWithFunctions() throws Exception {
- QueryMetadataInterface metadata = VDBMetadataFactory.getVDBMetadata(getTestVDB());
-
- Select select = new Select();
- select.addSymbol(new ElementSymbol("part_name")); //$NON-NLS-1$
- From from = new From();
- from.addGroup(new GroupSymbol("parts")); //$NON-NLS-1$
- GroupBy groupBy = new GroupBy();
- Function function = new Function("concat", new Expression[] {new ElementSymbol("part_id"), new Constant("a")}); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
- groupBy.addSymbol(function);
- Query query = new Query();
- query.setSelect(select);
- query.setFrom(from);
- query.setGroupBy(groupBy);
-
- QueryResolver.resolveCommand(query, metadata);
- Command command = QueryRewriter.rewrite(query, null, metadata, null);
-
- ICommand result = new LanguageBridgeFactory(metadata).translate(command);
-
- helpTestVisitorWithCommand("SELECT PARTS.PART_NAME FROM PARTS GROUP BY concat(PARTS.PART_ID, 'a')", result, //$NON-NLS-1$
- false,
- false);
- }
-
public void testPreparedStatementCreationWithUpdate() {
helpTestVisitor(getTestVDB(),
"update parts set part_weight = 'a' where part_weight < 5", //$NON-NLS-1$
"UPDATE PARTS SET PART_WEIGHT = ? WHERE PARTS.PART_WEIGHT < ?", //$NON-NLS-1$
- false,
true);
}
@@ -400,7 +326,6 @@
helpTestVisitor(getTestVDB(),
"insert into parts (part_weight) values (5)", //$NON-NLS-1$
"INSERT INTO PARTS (PART_WEIGHT) VALUES (?)", //$NON-NLS-1$
- false,
true);
}
@@ -408,7 +333,6 @@
helpTestVisitor(getTestVDB(),
"select part_name from parts where part_id not in ('x', 'y') and part_weight < 6", //$NON-NLS-1$
"SELECT PARTS.PART_NAME FROM PARTS WHERE (PARTS.PART_ID NOT IN (?, ?)) AND (PARTS.PART_WEIGHT < ?)", //$NON-NLS-1$
- false,
true);
}
@@ -416,7 +340,6 @@
helpTestVisitor(getTestVDB(),
"select part_name from parts where part_name like '%foo'", //$NON-NLS-1$
"SELECT PARTS.PART_NAME FROM PARTS WHERE PARTS.PART_NAME LIKE ?", //$NON-NLS-1$
- false,
true);
}
@@ -428,7 +351,6 @@
helpTestVisitor(getTestVDB(),
"select part_name from parts where 'x' = 'y'", //$NON-NLS-1$
"SELECT PARTS.PART_NAME FROM PARTS WHERE 1 = ?", //$NON-NLS-1$
- false,
true);
}
@@ -440,7 +362,6 @@
helpTestVisitor(getTestVDB(),
"select part_name from parts where concat(part_name, 'x') = concat('y', part_weight)", //$NON-NLS-1$
"SELECT PARTS.PART_NAME FROM PARTS WHERE concat(PARTS.PART_NAME, 'x') = concat('y', PARTS.PART_WEIGHT)", //$NON-NLS-1$
- false,
true);
}
@@ -448,7 +369,6 @@
helpTestVisitor(getTestVDB(),
"SELECT PARTS.PART_NAME FROM PARTS WHERE PARTS.PART_WEIGHT = CASE WHEN PARTS.PART_NAME='a' THEN 'b' ELSE 'c' END", //$NON-NLS-1$
"SELECT PARTS.PART_NAME FROM PARTS WHERE PARTS.PART_WEIGHT = CASE WHEN PARTS.PART_NAME = ? THEN 'b' ELSE 'c' END", //$NON-NLS-1$
- false,
true);
}
@@ -477,5 +397,14 @@
public void testVisitIProcedureWithComment() throws Exception {
String expected = "{ /*teiid sessionid:ConnectionID, requestid:RequestID.PartID*/ call sq3(?,?)}"; //$NON-NLS-1$
assertEquals(expected, getStringWithContext(TestProcedureImpl.example()));
- }
+ }
+
+ public void testTrimStrings() throws Exception {
+ Translator trans = new Translator();
+ Properties p = new Properties();
+ p.setProperty(JDBCPropertyNames.TRIM_STRINGS, Boolean.TRUE.toString());
+ trans.initialize(EnvironmentUtility.createEnvironment(p, false));
+
+ TranslationHelper.helpTestVisitor(TranslationHelper.BQT_VDB, "select stringkey from bqt1.smalla", "SELECT rtrim(SmallA.StringKey) FROM SmallA", trans); //$NON-NLS-1$ //$NON-NLS-2$
+ }
}
Modified: branches/JCA/test-integration/common/src/test/java/com/metamatrix/connector/jdbc/util/TestJDBCExecutionHelper.java
===================================================================
--- branches/JCA/test-integration/common/src/test/java/com/metamatrix/connector/jdbc/util/TestJDBCExecutionHelper.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/java/com/metamatrix/connector/jdbc/util/TestJDBCExecutionHelper.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -29,7 +29,6 @@
import junit.framework.TestCase;
-import org.teiid.connector.jdbc.JDBCQueryExecution;
import org.teiid.connector.language.IQuery;
import org.teiid.connector.language.ISelect;
import org.teiid.dqp.internal.datamgr.language.LiteralImpl;
@@ -59,30 +58,5 @@
assertEquals( results[0], expectedResults[0]);
assertEquals( results[1], expectedResults[1]);
}
-
- public void helpTestTrimString(String value, String expected) {
- String actual = JDBCQueryExecution.trimString(value);
- assertEquals("Did not get a match, expected=[" + expected + "', actual=[" + actual + "]", expected, actual); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
-
- public void testTrimEmpty() {
- helpTestTrimString("", ""); //$NON-NLS-1$ //$NON-NLS-2$
- }
- public void testTrimNoWhitespace() {
- helpTestTrimString("abc", "abc"); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- public void testTrimSome() {
- helpTestTrimString("abc ", "abc"); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- public void testDontTrimLeft() {
- helpTestTrimString(" abc ", " abc"); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- public void testDontTrimInternal() {
- helpTestTrimString("a b c ", "a b c"); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
}
Modified: branches/JCA/test-integration/common/src/test/java/com/metamatrix/jdbc/TestCase3473.java
===================================================================
--- branches/JCA/test-integration/common/src/test/java/com/metamatrix/jdbc/TestCase3473.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/java/com/metamatrix/jdbc/TestCase3473.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -22,6 +22,8 @@
package com.metamatrix.jdbc;
+import static junit.framework.Assert.*;
+
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
@@ -29,67 +31,25 @@
import java.io.IOException;
import java.io.PrintStream;
import java.sql.Connection;
-import java.sql.DatabaseMetaData;
-import java.sql.DriverManager;
import java.sql.ResultSet;
+import java.sql.SQLException;
import java.util.Collections;
-import junit.extensions.TestSetup;
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
+import org.junit.Before;
+import org.junit.Test;
import com.metamatrix.core.util.UnitTestUtil;
+import com.metamatrix.jdbc.api.AbstractMMQueryTestCase;
import com.metamatrix.jdbc.util.ResultSetUtil;
/**
*/
-public class TestCase3473 extends TestCase {
+public class TestCase3473 extends AbstractMMQueryTestCase {
-
private static final String DQP_CONFIG_FILE = UnitTestUtil.getTestDataPath() + "/3473/3473.properties;user=test"; //$NON-NLS-1$
- static Connection conn = null;
- static String primaryUrl = "jdbc:metamatrix:test@" + DQP_CONFIG_FILE + ";version=1"; //$NON-NLS-1$ //$NON-NLS-2$
- // URL for local DQP
- static String serverUrl = primaryUrl + ";logLevel=1;partialResultsMode=false"; //$NON-NLS-1$
-
- // URL for integration test
- private static MMDatabaseMetaData dbmd = null;
+ private MMDatabaseMetaData dbmd = null;
-
-
- public TestCase3473(String name) {
- super(name);
- }
-
-
- public static Test suite() {
- TestSuite suite = new TestSuite("TestMM3473"); //$NON-NLS-1$
- suite.addTestSuite(TestCase3473.class);
- return new TestSetup(suite) {
-
- @Override
- protected void setUp() throws Exception {
- Class.forName("org.teiid.jdbc.TeiidDriver"); //$NON-NLS-1$
- conn = DriverManager.getConnection(serverUrl);
- dbmd = (MMDatabaseMetaData)conn.getMetaData();
- }
-
- @Override
- protected void tearDown() throws Exception {
- try{
- if (conn != null) {
- conn.close();
- }
-
- } catch(Exception ce){
- fail("Unable to close MMConnection." + ce.getMessage()); //$NON-NLS-1$
- }
- }
- };
- }
-
////////////////////Query Related Methods///////////////////////////
public static final short ALWAYS_NULL = 0;
@@ -105,6 +65,12 @@
private FileOutputStream actualOut = null;
private BufferedReader expectedIn = null;
private PrintStream stream = null;
+
+ @Before public void setUp() throws SQLException {
+ Connection conn = getConnection("test", DQP_CONFIG_FILE); //$NON-NLS-1$
+ dbmd = (MMDatabaseMetaData)conn.getMetaData();
+ }
+
private void initResultSetStreams(String testName) {
if (REPLACE_EXPECTED) {
File actual = new File(UnitTestUtil.getTestDataPath() + "/3473/"+testName+".expected"); //$NON-NLS-1$ //$NON-NLS-2$
@@ -168,13 +134,12 @@
- public void testGetCrossReference() throws Exception {
+ @Test public void testGetCrossReference() throws Exception {
initResultSetStreams("testGetCrossReference"); //$NON-NLS-1$
ResultSet rs = null;
try {
- DatabaseMetaData dbmd = conn.getMetaData();
stream.println("getCrossReference1"); //$NON-NLS-1$
- rs = dbmd.getCrossReference(null,null, "test.all_databases", null,null, "test.all_models");//$NON-NLS-1$ //$NON-NLS-2$
+ rs = dbmd.getCrossReference(null,"test", "all_databases", null,"test", "all_models");//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
} finally {
if(rs != null) {
@@ -206,13 +171,12 @@
closeResultSetTestStreams();
}
- public void testGetImportedKeys() throws Exception {
+ @Test public void testGetImportedKeys() throws Exception {
initResultSetStreams("testGetImportedKeys"); //$NON-NLS-1$
ResultSet rs = null;
try {
- DatabaseMetaData dbmd = conn.getMetaData();
stream.println("getImportedKeys1"); //$NON-NLS-1$
- rs = dbmd.getImportedKeys(null,null, "test.all_models"); //$NON-NLS-1$
+ rs = dbmd.getImportedKeys(null,"test", "all_models"); //$NON-NLS-1$ //$NON-NLS-2$
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
} finally {
if(rs != null) {
@@ -235,12 +199,11 @@
closeResultSetTestStreams();
}
- public void testGetExportedKeys() throws Exception {
+ @Test public void testGetExportedKeys() throws Exception {
initResultSetStreams("testGetExportedKeys"); //$NON-NLS-1$
ResultSet rs = null;
try {
- DatabaseMetaData dbmd = conn.getMetaData();
- rs = dbmd.getExportedKeys(null,null, "test.all_models"); //$NON-NLS-1$
+ rs = dbmd.getExportedKeys(null,"test", "all_models"); //$NON-NLS-1$ //$NON-NLS-2$
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
} finally {
if(rs != null) {
@@ -262,12 +225,11 @@
}
- public void testGetPrimaryKeys() throws Exception {
+ @Test public void testGetPrimaryKeys() throws Exception {
initResultSetStreams("testGetPrimaryKeys"); //$NON-NLS-1$
ResultSet rs = null;
try {
- DatabaseMetaData dbmd = conn.getMetaData();
- rs = dbmd.getPrimaryKeys(null,null, "test.all_models"); //$NON-NLS-1$
+ rs = dbmd.getPrimaryKeys(null,"test", "all_models"); //$NON-NLS-1$ //$NON-NLS-2$
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
} finally {
if(rs != null) {
@@ -289,11 +251,8 @@
closeResultSetTestStreams();
}
-
-
- public void testGetTables() throws Exception{
+ @Test public void testGetTables() throws Exception{
initResultSetStreams("testGetTables"); //$NON-NLS-1$
- DatabaseMetaData dbmd = conn.getMetaData();
ResultSet rs = dbmd.getTables(null, null, null, null);
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
rs.close();
Modified: branches/JCA/test-integration/common/src/test/java/com/metamatrix/jdbc/TestMMDatabaseMetaData.java
===================================================================
--- branches/JCA/test-integration/common/src/test/java/com/metamatrix/jdbc/TestMMDatabaseMetaData.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/java/com/metamatrix/jdbc/TestMMDatabaseMetaData.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -495,32 +495,23 @@
}
@Test
- public void testUcaseMatchReturnsNoRows() throws Exception {
- initResultSetStreams("testGetColumnsSingleMatchQuery"); //$NON-NLS-1$
+ public void testUcaseMatchReturnsRows() throws Exception {
ResultSet rs = null;
try {
java.sql.Statement stmt = conn.createStatement();
- // Returns 24 rows:
- //rs = stmt.executeQuery("SELECT Name FROM System.Groups WHERE ModelName = 'System' OPTION DEBUG");
-
// Returns 0 rows (but should be identical and return 24 rows):
- rs = stmt.executeQuery("SELECT Name FROM System.Groups WHERE UCASE(ModelName) = 'SYSTEM'"); //$NON-NLS-1$
+ rs = stmt.executeQuery("SELECT Name FROM System.Tables WHERE UCASE(SchemaName) = 'SYSTEM'"); //$NON-NLS-1$
int count = 0;
while(rs.next()) {
count++;
- //System.out.println("table="+rs.getString(1));
}
- assertEquals(25, count);
-
- //System.out.println(((com.metamatrix.jdbc.api.Statement)stmt).getDebugLog());
-
+ assertEquals(11, count);
} finally {
if(rs != null) {
rs.close();
}
- closeResultSetTestStreams();
}
}
@@ -530,8 +521,8 @@
ResultSet rs = null;
try {
//List expected = getExpectedColumns();
- DatabaseMetaData dbmd = conn.getMetaData();
- rs = dbmd.getColumns(null, null, "System.VirtualDatabases", "Name"); //$NON-NLS-1$ //$NON-NLS-2$
+
+ rs = dbmd.getColumns(null, "System", "VirtualDatabases", "Name"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
assertEquals("Actual data did not match expected", //$NON-NLS-1$
Collections.EMPTY_LIST,
@@ -549,7 +540,7 @@
initResultSetStreams("testGetCatalogs"); //$NON-NLS-1$
ResultSet rs = null;
try {
- DatabaseMetaData dbmd = conn.getMetaData();
+
rs = dbmd.getCatalogs();
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
assertEquals("Actual data did not match expected", //$NON-NLS-1$
@@ -568,9 +559,9 @@
initResultSetStreams("testGetCrossReference"); //$NON-NLS-1$
ResultSet rs = null;
try {
- DatabaseMetaData dbmd = conn.getMetaData();
+
stream.println("getCrossReference1"); //$NON-NLS-1$
- rs = dbmd.getCrossReference(null, null, "BQT1.SmallA", null, null, "BQT1.SmallB");//$NON-NLS-1$ //$NON-NLS-2$
+ rs = dbmd.getCrossReference(null, "BQT1", "SmallA", null, "BQT1", "SmallB");//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
} finally {
if(rs != null) {
@@ -600,9 +591,8 @@
initResultSetStreams("testGetImportedKeys"); //$NON-NLS-1$
ResultSet rs = null;
try {
- DatabaseMetaData dbmd = conn.getMetaData();
stream.println("getImportedKeys1"); //$NON-NLS-1$
- rs = dbmd.getImportedKeys(null, null, "BQT1.SmallA"); //$NON-NLS-1$
+ rs = dbmd.getImportedKeys(null, "BQT1", "SmallA"); //$NON-NLS-1$ //$NON-NLS-2$
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
} finally {
if(rs != null) {
@@ -630,8 +620,7 @@
initResultSetStreams("testGetExportedKeys"); //$NON-NLS-1$
ResultSet rs = null;
try {
- DatabaseMetaData dbmd = conn.getMetaData();
- rs = dbmd.getExportedKeys(null, null, "BQT1.SmallA"); //$NON-NLS-1$
+ rs = dbmd.getExportedKeys(null, "BQT1", "SmallA"); //$NON-NLS-1$ //$NON-NLS-2$
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
} finally {
if(rs != null) {
@@ -657,9 +646,7 @@
initResultSetStreams("testGetIndexInfo"); //$NON-NLS-1$
ResultSet rs = null;
try {
- DatabaseMetaData dbmd = conn.getMetaData();
- //ResultSet rs = dbmd.getIndexInfo(null, null, "BQT1.SmallA", true, true); //$NON-NLS-1$
- rs = dbmd.getIndexInfo(null, null, "System.KeyElements", true, true); //$NON-NLS-1$
+ rs = dbmd.getIndexInfo(null, "System", "KeyColumns", true, true); //$NON-NLS-1$ //$NON-NLS-2$
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
} finally {
if(rs != null) {
@@ -685,13 +672,7 @@
initResultSetStreams("testGetPrimaryKeys"); //$NON-NLS-1$
ResultSet rs = null;
try {
- DatabaseMetaData dbmd = conn.getMetaData();
- //ResultSet rs = dbmd.getPrimaryKeys(null, null, "SYSTEM.VIRTUALDATABASES"); //$NON-NLS-1$
-
- // This is only a way to do unit test. Actually, the primary key of BQT.smallA
- // should be tested here, the only tables should be queried are just system
- // tables.
- rs = dbmd.getPrimaryKeys(null, null, "BQT1.SmallA"); //$NON-NLS-1$
+ rs = dbmd.getPrimaryKeys(null, "BQT1", "SmallA"); //$NON-NLS-1$ //$NON-NLS-2$
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
} finally {
if(rs != null) {
@@ -718,7 +699,6 @@
initResultSetStreams("testGetProcedureColumns"); //$NON-NLS-1$
ResultSet rs = null;
try {
- DatabaseMetaData dbmd = conn.getMetaData();
rs = dbmd.getProcedureColumns(null, null, null, null);
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
} finally {
@@ -745,7 +725,6 @@
initResultSetStreams("testGetProcedures"); //$NON-NLS-1$
ResultSet rs = null;
try {
- DatabaseMetaData dbmd = conn.getMetaData();
rs = dbmd.getProcedures(null, null, null);
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
} finally {
@@ -772,7 +751,6 @@
initResultSetStreams("testGetSchemas"); //$NON-NLS-1$
ResultSet rs = null;
try {
- DatabaseMetaData dbmd = conn.getMetaData();
rs = dbmd.getSchemas();
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
@@ -789,7 +767,6 @@
@Test
public void testGetColumns() throws Exception {
initResultSetStreams("testGetColumns"); //$NON-NLS-1$
- DatabaseMetaData dbmd = conn.getMetaData();
stream.println("getColumns1"); //$NON-NLS-1$
ResultSet rs = dbmd.getColumns(null, null, null, null);
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
@@ -803,7 +780,6 @@
@Test
public void testGetColumns2() throws Exception {
initResultSetStreams("testGetColumns2"); //$NON-NLS-1$
- DatabaseMetaData dbmd = conn.getMetaData();
stream.println("getColumns2"); //$NON-NLS-1$
ResultSet rs = dbmd.getColumns(null, "QT_Ora%", "%", "%"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
@@ -819,7 +795,6 @@
@Test
public void testGetColumns3() throws Exception {
initResultSetStreams("testGetColumns3"); //$NON-NLS-1$
- DatabaseMetaData dbmd = conn.getMetaData();
stream.println("getColumns3"); //$NON-NLS-1$
ResultSet rs = dbmd.getColumns(null, "Foo%", "%", "%"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
@@ -835,7 +810,6 @@
@Test
public void testGetColumns4() throws Exception {
initResultSetStreams("testGetColumns4"); //$NON-NLS-1$
- DatabaseMetaData dbmd = conn.getMetaData();
stream.println("getColumns4"); //$NON-NLS-1$
ResultSet rs = dbmd.getColumns("foo", "Foo%", "%", "%"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
@@ -852,7 +826,7 @@
@Test
public void testGetColumnPrivileges() throws Exception {
initResultSetStreams("testGetColumnPrivileges"); //$NON-NLS-1$
- DatabaseMetaData dbmd = conn.getMetaData();
+
ResultSet rs = dbmd.getColumnPrivileges(null, "Parts", "%", "%"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
@@ -871,7 +845,7 @@
@Test
public void testGetColumnPrivilegesResultSetMetaData() throws Exception {
initResultSetStreams("testGetColumnPrivilegesResultSetMetaData"); //$NON-NLS-1$
- DatabaseMetaData dbmd = conn.getMetaData();
+
ResultSet rs = dbmd.getColumnPrivileges(null, "Parts", "%", "%"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
assertEquals("Actual data did not match expected", //$NON-NLS-1$
@@ -884,7 +858,7 @@
@Test
public void testGetTablePrivileges() throws Exception {
initResultSetStreams("testGetTablePrivileges"); //$NON-NLS-1$
- DatabaseMetaData dbmd = conn.getMetaData();
+
ResultSet rs = dbmd.getTablePrivileges(null, "Parts", "%"); //$NON-NLS-1$ //$NON-NLS-2$
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
assertEquals("Actual data did not match expected", //$NON-NLS-1$
@@ -899,7 +873,7 @@
@Test
public void testGetTablePrivilegesResultSetMetaData() throws Exception {
initResultSetStreams("testGetTablePrivilegesResultSetMetaData"); //$NON-NLS-1$
- DatabaseMetaData dbmd = conn.getMetaData();
+
ResultSet rs = dbmd.getTablePrivileges(null, "Parts", "%"); //$NON-NLS-1$ //$NON-NLS-2$
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
assertEquals("Actual data did not match expected", //$NON-NLS-1$
@@ -915,8 +889,8 @@
ResultSet rs = null;
try {
//List expected = getExpectedColumns();
- DatabaseMetaData dbmd = conn.getMetaData();
- rs = dbmd.getTables(null, null, "SYSTEM.VIRTUALDATABASES", null); //$NON-NLS-1$
+
+ rs = dbmd.getTables(null, "SYSTEM", "VIRTUALDATABASES", null); //$NON-NLS-1$ //$NON-NLS-2$
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
assertEquals("Actual data did not match expected", //$NON-NLS-1$
Collections.EMPTY_LIST,
@@ -934,8 +908,8 @@
initResultSetStreams("testGetTables_specificTableTypes"); //$NON-NLS-1$
ResultSet rs = null;
try {
- DatabaseMetaData dbmd = conn.getMetaData();
+
String[] tables = new String[] { "Table" }; //$NON-NLS-1$
rs = dbmd.getTables(null, null, null, tables);
@@ -956,8 +930,8 @@
initResultSetStreams("testGetTables_specificTableMultipleTypes"); //$NON-NLS-1$
ResultSet rs = null;
try {
- DatabaseMetaData dbmd = conn.getMetaData();
+
String[] tables = new String[] { "Table", "View" }; //$NON-NLS-1$ //$NON-NLS-2$
rs = dbmd.getTables(null, null, null, tables);
@@ -976,7 +950,7 @@
@Test
public void testGetTables() throws Exception{
initResultSetStreams("testGetTables"); //$NON-NLS-1$
- DatabaseMetaData dbmd = conn.getMetaData();
+
ResultSet rs = dbmd.getTables(null, null, null, null);
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
rs.close();
@@ -999,7 +973,7 @@
initResultSetStreams("testGetTables_allTables"); //$NON-NLS-1$
ResultSet rs = null;
try {
- DatabaseMetaData dbmd = conn.getMetaData();
+
rs = dbmd.getTables(null, null, null, null);
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
@@ -1019,7 +993,7 @@
initResultSetStreams("testGetTableTypes"); //$NON-NLS-1$
ResultSet rs = null;
try {
- DatabaseMetaData dbmd = conn.getMetaData();
+
rs = dbmd.getTableTypes();
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
assertEquals("Actual data did not match expected", //$NON-NLS-1$
@@ -1038,7 +1012,7 @@
initResultSetStreams("testGetTypeInfo_TotalNumber"); //$NON-NLS-1$
ResultSet rs = null;
try {
- DatabaseMetaData dbmd = conn.getMetaData();
+
rs = dbmd.getTypeInfo();
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
assertEquals("Actual data did not match expected", //$NON-NLS-1$
@@ -1055,7 +1029,7 @@
@Test
public void testGetUDTs() throws Exception{
initResultSetStreams("testGetUDTs"); //$NON-NLS-1$
- DatabaseMetaData dbmd = conn.getMetaData();
+
ResultSet rs = dbmd.getUDTs(null, null, "%blob%", null); //$NON-NLS-1$
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
rs.close();
@@ -1078,7 +1052,7 @@
initResultSetStreams("testGetUDTs_specificTypeName"); //$NON-NLS-1$
ResultSet rs = null;
try {
- DatabaseMetaData dbmd = conn.getMetaData();
+
rs = dbmd.getUDTs(null, null, "%blob%", null); //$NON-NLS-1$
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
assertEquals("Actual data did not match expected", //$NON-NLS-1$
@@ -1095,7 +1069,7 @@
@Test
public void testGetVersionColumns() throws Exception {
initResultSetStreams("testGetVersionColumns"); //$NON-NLS-1$
- DatabaseMetaData dbmd = conn.getMetaData();
+
ResultSet rs = dbmd.getVersionColumns(null, null, null);
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
rs = dbmd.getVersionColumns(null, "Foo%", null); //$NON-NLS-1$
@@ -1116,7 +1090,7 @@
initResultSetStreams("testGetBestRowIdentifier"); //$NON-NLS-1$
ResultSet rs = null;
try {
- DatabaseMetaData dbmd = conn.getMetaData();
+
rs = dbmd.getBestRowIdentifier(null, null, "SYSTEM.VIRTUALDATABASES", //$NON-NLS-1$
DatabaseMetaData.bestRowTemporary, true);
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
@@ -1142,7 +1116,7 @@
@Test
public void testGetSuperTables() throws Exception {
initResultSetStreams("testSuperTables"); //$NON-NLS-1$
- DatabaseMetaData dbmd = conn.getMetaData();
+
ResultSet rs = dbmd.getSuperTables(null, "Parts", "%"); //$NON-NLS-1$ //$NON-NLS-2$
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
assertEquals("Actual data did not match expected", //$NON-NLS-1$
@@ -1155,7 +1129,7 @@
@Test
public void testGetSuperTypes() throws Exception {
initResultSetStreams("testGetSuperTypes"); //$NON-NLS-1$
- DatabaseMetaData dbmd = conn.getMetaData();
+
ResultSet rs = dbmd.getSuperTypes(null, "Parts", "%"); //$NON-NLS-1$ //$NON-NLS-2$
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
assertEquals("Actual data did not match expected", //$NON-NLS-1$
@@ -1167,10 +1141,9 @@
@Test
public void testGetColumnsWithEscape() throws Exception {
- DatabaseMetaData dbmd = conn.getMetaData();
- ResultSet columns = dbmd.getColumns(null, "QT\\_Ora9DS", "BQT1.SmallA", "IntKey"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ResultSet columns = dbmd.getColumns("QT\\_Ora9DS", "BQT1", "SmallA", "IntKey"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
columns.next();
- assertEquals("QT_Ora9DS", columns.getString(2));//$NON-NLS-1$
+ assertEquals("BQT1", columns.getString(2));//$NON-NLS-1$
assertFalse(columns.next());
}
@@ -1179,7 +1152,7 @@
initResultSetStreams("testGetCrossReference"); //$NON-NLS-1$
ResultSet rs = null;
try {
- DatabaseMetaData dbmd = conn.getMetaData();
+
stream.println("getCrossReference1"); //$NON-NLS-1$
rs = dbmd.getCrossReference(null, "QT\\_Ora9DS", "BQT1.SmallA", null, null, "BQT1.SmallB");//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
@@ -1211,7 +1184,7 @@
initResultSetStreams("testGetExportedKeys"); //$NON-NLS-1$
ResultSet rs = null;
try {
- DatabaseMetaData dbmd = conn.getMetaData();
+
rs = dbmd.getExportedKeys(null, "QT\\_Ora9DS", "BQT1.SmallA"); //$NON-NLS-1$ //$NON-NLS-2$
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
} finally {
@@ -1238,7 +1211,7 @@
initResultSetStreams("testGetImportedKeys"); //$NON-NLS-1$
ResultSet rs = null;
try {
- DatabaseMetaData dbmd = conn.getMetaData();
+
stream.println("getImportedKeys1"); //$NON-NLS-1$
rs = dbmd.getImportedKeys(null, "QT\\_Ora9DS", "BQT1.SmallA"); //$NON-NLS-1$ //$NON-NLS-2$
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
@@ -1268,7 +1241,7 @@
initResultSetStreams("testGetIndexInfo"); //$NON-NLS-1$
ResultSet rs = null;
try {
- DatabaseMetaData dbmd = conn.getMetaData();
+
//ResultSet rs = dbmd.getIndexInfo(null, null, "BQT1.SmallA", true, true); //$NON-NLS-1$
rs = dbmd.getIndexInfo(null, "QT\\_Ora9DS", "System.KeyElements", true, true); //$NON-NLS-1$ //$NON-NLS-2$
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
@@ -1296,13 +1269,13 @@
initResultSetStreams("testGetPrimaryKeys"); //$NON-NLS-1$
ResultSet rs = null;
try {
- DatabaseMetaData dbmd = conn.getMetaData();
+
//ResultSet rs = dbmd.getPrimaryKeys(null, null, "SYSTEM.VIRTUALDATABASES"); //$NON-NLS-1$
// This is only a way to do unit test. Actually, the primary key of BQT.smallA
// should be tested here, the only tables should be queried are just system
// tables.
- rs = dbmd.getPrimaryKeys(null, "QT\\_Ora9DS", "BQT1.SmallA"); //$NON-NLS-1$ //$NON-NLS-2$
+ rs = dbmd.getPrimaryKeys("QT\\_Ora9DS", "BQT1", "SmallA"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
} finally {
if(rs != null) {
@@ -1329,8 +1302,8 @@
initResultSetStreams("testGetProcedures"); //$NON-NLS-1$
ResultSet rs = null;
try {
- DatabaseMetaData dbmd = conn.getMetaData();
- rs = dbmd.getProcedures(null, "QT\\_Ora9DS", null); //$NON-NLS-1$
+
+ rs = dbmd.getProcedures("QT\\_Ora9DS", null, null); //$NON-NLS-1$
ResultSetUtil.printResultSet(rs, MAX_COL_WIDTH, true, stream);
} finally {
if(rs != null) {
Modified: branches/JCA/test-integration/common/src/test/java/com/metamatrix/jdbc/TestResultsMetadataWithProvider.java
===================================================================
--- branches/JCA/test-integration/common/src/test/java/com/metamatrix/jdbc/TestResultsMetadataWithProvider.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/java/com/metamatrix/jdbc/TestResultsMetadataWithProvider.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -42,7 +42,7 @@
}
public StaticMetadataProvider exampleProvider() throws Exception {
- MetaDataProcessor processor = new MetaDataProcessor(null, null, null, null, null);
+ MetaDataProcessor processor = new MetaDataProcessor(null, null, null, null);
Map col1 = processor.getDefaultColumn("vdb", "1", "table", "col1", String.class); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
Map col2 = processor.getDefaultColumn("vdb", "1", "table", "col2", Integer.class); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
@@ -65,8 +65,8 @@
assertEquals(true, rmd.isSearchable(1));
assertEquals(true, rmd.isSigned(1));
assertEquals(true, rmd.isWritable(1));
- assertEquals(null, rmd.getCatalogName(1));
- assertEquals("vdb", rmd.getSchemaName(1)); //$NON-NLS-1$
+ assertEquals("vdb", rmd.getCatalogName(1)); //$NON-NLS-1$
+ assertEquals(null, rmd.getSchemaName(1));
assertEquals("table", rmd.getTableName(1)); //$NON-NLS-1$
assertEquals("col1", rmd.getColumnName(1)); //$NON-NLS-1$
assertEquals("string", rmd.getColumnTypeName(1)); //$NON-NLS-1$
Modified: branches/JCA/test-integration/common/src/test/java/com/metamatrix/jdbc/TestStaticMetadataProvider.java
===================================================================
--- branches/JCA/test-integration/common/src/test/java/com/metamatrix/jdbc/TestStaticMetadataProvider.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/java/com/metamatrix/jdbc/TestStaticMetadataProvider.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -44,7 +44,7 @@
}
private StaticMetadataProvider example1() throws Exception {
- MetaDataProcessor processor = new MetaDataProcessor(null, null, null, null, null);
+ MetaDataProcessor processor = new MetaDataProcessor(null, null, null, null);
Map[] columnMetadata = new Map[] {
processor.getDefaultColumn("vdb", "1", "table", "c1", String.class), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
processor.getDefaultColumn("vdb", "1", "table", "c2", Integer.class) //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
Modified: branches/JCA/test-integration/common/src/test/java/com/metamatrix/server/integration/TestAdminApi.java
===================================================================
--- branches/JCA/test-integration/common/src/test/java/com/metamatrix/server/integration/TestAdminApi.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/java/com/metamatrix/server/integration/TestAdminApi.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -286,7 +286,7 @@
getConnection(BQT, PROPS_FILE);
execute("SELECT * FROM BQT1.SmallA"); //$NON-NLS-1$
assertRowCount(50);
- execute("SELECT * FROM System.models"); //$NON-NLS-1$
+ execute("SELECT * FROM System.schemas"); //$NON-NLS-1$
assertRowCount(9);
closeConnection();
popConnection();
Modified: branches/JCA/test-integration/common/src/test/java/com/metamatrix/server/integration/TestVDBLessExecution.java
===================================================================
--- branches/JCA/test-integration/common/src/test/java/com/metamatrix/server/integration/TestVDBLessExecution.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/java/com/metamatrix/server/integration/TestVDBLessExecution.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -71,10 +71,10 @@
@Test public void testDatabaseMetaDataTables() throws Exception {
Connection conn = getConnection(VDB, DQP_PROP_FILE);
DatabaseMetaData metadata = conn.getMetaData();
- this.internalResultSet = metadata.getTables(null, null, "SummitData%", new String[] {"TABLE"}); //$NON-NLS-1$ //$NON-NLS-2$
+ this.internalResultSet = metadata.getTables(null, "SummitData", null, new String[] {"TABLE"}); //$NON-NLS-1$ //$NON-NLS-2$
assertResults(new String[] {
"TABLE_CAT[string] TABLE_SCHEM[string] TABLE_NAME[string] TABLE_TYPE[string] REMARKS[string] TYPE_CAT[string] TYPE_SCHEM[string] TYPE_NAME[string] SELF_REFERENCING_COL_NAME[string] REF_GENERATION[string] ISPHYSICAL[boolean]", //$NON-NLS-1$
- "null VDBLess SummitData.EXAMPLE TABLE null null null null null null true" //$NON-NLS-1$
+ "VDBLess SummitData EXAMPLE TABLE null null null null null null true" //$NON-NLS-1$
});
closeConnection();
}
@@ -85,11 +85,10 @@
@Test public void testDatabaseMetaDataTables1() throws Exception {
Connection conn = getConnection(VDB, DQP_PROP_FILE);
DatabaseMetaData metadata = conn.getMetaData();
- this.internalResultSet = metadata.getTables(null, null, "%ElementProperties", null); //$NON-NLS-1$
+ this.internalResultSet = metadata.getTables(null, null, "%Properties", null); //$NON-NLS-1$
assertResults(new String[] {
"TABLE_CAT[string] TABLE_SCHEM[string] TABLE_NAME[string] TABLE_TYPE[string] REMARKS[string] TYPE_CAT[string] TYPE_SCHEM[string] TYPE_NAME[string] SELF_REFERENCING_COL_NAME[string] REF_GENERATION[string] ISPHYSICAL[boolean]", //$NON-NLS-1$
- "null VDBLess System.DataTypeElementProperties SYSTEM TABLE null null null null null null false", //$NON-NLS-1$
- "null VDBLess System.ElementProperties SYSTEM TABLE null null null null null null false" //$NON-NLS-1$
+ "VDBLess System Properties SYSTEM TABLE null null null null null null true" //$NON-NLS-1$
});
closeConnection();
@@ -98,11 +97,11 @@
@Test public void testDatabaseMetaDataColumns() throws Exception {
Connection conn = getConnection(VDB, DQP_PROP_FILE);
DatabaseMetaData metadata = conn.getMetaData();
- this.internalResultSet = metadata.getColumns(null, null, "SummitData%", "%"); //$NON-NLS-1$ //$NON-NLS-2$
+ this.internalResultSet = metadata.getColumns(null, "SummitData", null, "%"); //$NON-NLS-1$ //$NON-NLS-2$
assertResults(new String[] {
"TABLE_CAT[string] TABLE_SCHEM[string] TABLE_NAME[string] COLUMN_NAME[string] DATA_TYPE[short] TYPE_NAME[string] COLUMN_SIZE[integer] BUFFER_LENGTH[string] DECIMAL_DIGITS[integer] NUM_PREC_RADIX[integer] NULLABLE[integer] REMARKS[string] COLUMN_DEF[string] SQL_DATA_TYPE[string] SQL_DATETIME_SUB[string] CHAR_OCTET_LENGTH[integer] ORDINAL_POSITION[integer] IS_NULLABLE[string] SCOPE_CATALOG[string] SCOPE_SCHEMA[string] SCOPE_TABLE[string] SOURCE_DATA_TYPE[string] IS_AUTOINCREMENT[string]", //$NON-NLS-1$
- "null VDBLess SummitData.EXAMPLE TRADEID 12 string 4000 null 0 0 0 null null null null 0 1 YES null null null null NO", //$NON-NLS-1$
- "null VDBLess SummitData.EXAMPLE NOTIONAL 4 integer 10 null 0 0 0 null null null null 0 2 YES null null null null NO", //$NON-NLS-1$
+ "VDBLess SummitData EXAMPLE TRADEID 12 string 4000 null 0 0 2 null null null null 0 1 null null null null NO", //$NON-NLS-1$
+ "VDBLess SummitData EXAMPLE NOTIONAL 4 integer 10 null 0 0 2 null null null null 0 2 null null null null NO", //$NON-NLS-1$
});
closeConnection();
}
@@ -113,23 +112,23 @@
this.internalResultSet = metadata.getColumns(null, null, "%smalla", "%"); //$NON-NLS-1$ //$NON-NLS-2$
assertResults(new String[] {
"TABLE_CAT[string] TABLE_SCHEM[string] TABLE_NAME[string] COLUMN_NAME[string] DATA_TYPE[short] TYPE_NAME[string] COLUMN_SIZE[integer] BUFFER_LENGTH[string] DECIMAL_DIGITS[integer] NUM_PREC_RADIX[integer] NULLABLE[integer] REMARKS[string] COLUMN_DEF[string] SQL_DATA_TYPE[string] SQL_DATETIME_SUB[string] CHAR_OCTET_LENGTH[integer] ORDINAL_POSITION[integer] IS_NULLABLE[string] SCOPE_CATALOG[string] SCOPE_SCHEMA[string] SCOPE_TABLE[string] SOURCE_DATA_TYPE[string] IS_AUTOINCREMENT[string]", //$NON-NLS-1$
- "null VDBLess Derby.SMALLA INTKEY 4 integer 10 null 0 10 0 null null null null 0 1 YES null null null null NO", //$NON-NLS-1$
- "null VDBLess Derby.SMALLA STRINGKEY 12 string 4000 null 0 0 0 null null null null 20 2 YES null null null null NO", //$NON-NLS-1$
- "null VDBLess Derby.SMALLA INTNUM 4 integer 10 null 0 10 1 null null null null 0 3 NO null null null null NO", //$NON-NLS-1$
- "null VDBLess Derby.SMALLA STRINGNUM 12 string 4000 null 0 0 1 null null null null 20 4 NO null null null null NO", //$NON-NLS-1$
- "null VDBLess Derby.SMALLA FLOATNUM 7 float 20 null 0 2 1 null null null null 0 5 NO null null null null NO", //$NON-NLS-1$
- "null VDBLess Derby.SMALLA LONGNUM -5 long 19 null 0 10 1 null null null null 0 6 NO null null null null NO", //$NON-NLS-1$
- "null VDBLess Derby.SMALLA DOUBLENUM 8 double 20 null 0 2 1 null null null null 0 7 NO null null null null NO", //$NON-NLS-1$
- "null VDBLess Derby.SMALLA BYTENUM 5 short 5 null 0 10 1 null null null null 0 8 NO null null null null NO", //$NON-NLS-1$
- "null VDBLess Derby.SMALLA DATEVALUE 91 date 10 null 0 10 1 null null null null 0 9 NO null null null null NO", //$NON-NLS-1$
- "null VDBLess Derby.SMALLA TIMEVALUE 92 time 8 null 0 10 1 null null null null 0 10 NO null null null null NO", //$NON-NLS-1$
- "null VDBLess Derby.SMALLA TIMESTAMPVALUE 93 timestamp 29 null 0 10 1 null null null null 0 11 NO null null null null NO", //$NON-NLS-1$
- "null VDBLess Derby.SMALLA BOOLEANVALUE 5 short 5 null 0 10 1 null null null null 0 12 NO null null null null NO", //$NON-NLS-1$
- "null VDBLess Derby.SMALLA CHARVALUE 12 string 4000 null 0 0 1 null null null null 2 13 NO null null null null NO", //$NON-NLS-1$
- "null VDBLess Derby.SMALLA SHORTVALUE 5 short 5 null 0 10 1 null null null null 0 14 NO null null null null NO", //$NON-NLS-1$
- "null VDBLess Derby.SMALLA BIGINTEGERVALUE -5 long 19 null 0 10 1 null null null null 0 15 NO null null null null NO", //$NON-NLS-1$
- "null VDBLess Derby.SMALLA BIGDECIMALVALUE 2 bigdecimal 20 null 0 10 1 null null null null 0 16 NO null null null null NO", //$NON-NLS-1$
- "null VDBLess Derby.SMALLA OBJECTVALUE 12 string 4000 null 0 0 1 null null null null 4096 17 NO null null null null NO", //$NON-NLS-1$
+ "VDBLess Derby SMALLA INTKEY 4 integer 10 null 0 10 0 null null null 0 1 YES null null null null NO", //$NON-NLS-1$
+ "VDBLess Derby SMALLA STRINGKEY 12 string 4000 null 0 0 0 null null null 20 2 YES null null null null NO", //$NON-NLS-1$
+ "VDBLess Derby SMALLA INTNUM 4 integer 10 null 0 10 1 null null null 0 3 NO null null null null NO", //$NON-NLS-1$
+ "VDBLess Derby SMALLA STRINGNUM 12 string 4000 null 0 0 1 null null null 20 4 NO null null null null NO", //$NON-NLS-1$
+ "VDBLess Derby SMALLA FLOATNUM 7 float 20 null 0 2 1 null null null 0 5 NO null null null null NO", //$NON-NLS-1$
+ "VDBLess Derby SMALLA LONGNUM -5 long 19 null 0 10 1 null null null 0 6 NO null null null null NO", //$NON-NLS-1$
+ "VDBLess Derby SMALLA DOUBLENUM 8 double 20 null 0 2 1 null null null 0 7 NO null null null null NO", //$NON-NLS-1$
+ "VDBLess Derby SMALLA BYTENUM 5 short 5 null 0 10 1 null null null 0 8 NO null null null null NO", //$NON-NLS-1$
+ "VDBLess Derby SMALLA DATEVALUE 91 date 10 null 0 10 1 null null null 0 9 NO null null null null NO", //$NON-NLS-1$
+ "VDBLess Derby SMALLA TIMEVALUE 92 time 8 null 0 10 1 null null null 0 10 NO null null null null NO", //$NON-NLS-1$
+ "VDBLess Derby SMALLA TIMESTAMPVALUE 93 timestamp 29 null 0 10 1 null null null 0 11 NO null null null null NO", //$NON-NLS-1$
+ "VDBLess Derby SMALLA BOOLEANVALUE 5 short 5 null 0 10 1 null null null 0 12 NO null null null null NO", //$NON-NLS-1$
+ "VDBLess Derby SMALLA CHARVALUE 12 string 4000 null 0 0 1 null null null 2 13 NO null null null null NO", //$NON-NLS-1$
+ "VDBLess Derby SMALLA SHORTVALUE 5 short 5 null 0 10 1 null null null 0 14 NO null null null null NO", //$NON-NLS-1$
+ "VDBLess Derby SMALLA BIGINTEGERVALUE -5 long 19 null 0 10 1 null null null 0 15 NO null null null null NO", //$NON-NLS-1$
+ "VDBLess Derby SMALLA BIGDECIMALVALUE 2 bigdecimal 20 null 0 10 1 null null null 0 16 NO null null null null NO", //$NON-NLS-1$
+ "VDBLess Derby SMALLA OBJECTVALUE 12 string 4000 null 0 0 1 null null null 4096 17 NO null null null null NO", //$NON-NLS-1$
});
closeConnection();
}
@@ -141,12 +140,12 @@
this.internalResultSet = metadata.getPrimaryKeys(null, null, null);
assertResults(new String[] {
"TABLE_CAT[string] TABLE_SCHEM[string] TABLE_NAME[string] COLUMN_NAME[string] KEY_SEQ[short] PK_NAME[string]", //$NON-NLS-1$
- "null VDBLess Derby.FLIGHTS FLIGHT_ID 1 SQL090709161814150", //$NON-NLS-1$
- "null VDBLess Derby.FLTAVAIL FLIGHT_ID 1 FLTAVAIL_PK", //$NON-NLS-1$
- "null VDBLess Derby.SMALLA INTKEY 1 SQL060110103634070", //$NON-NLS-1$
- "null VDBLess Derby.SMALLB INTKEY 1 SQL060110103635170", //$NON-NLS-1$
- "null VDBLess Derby.FLIGHTS SEGMENT_NUMBER 2 SQL090709161814150", //$NON-NLS-1$
- "null VDBLess Derby.FLTAVAIL SEGMENT_NUMBER 2 FLTAVAIL_PK", //$NON-NLS-1$
+ "VDBLess Derby FLIGHTS FLIGHT_ID 1 SQL090709161814150", //$NON-NLS-1$
+ "VDBLess Derby FLTAVAIL FLIGHT_ID 1 FLTAVAIL_PK", //$NON-NLS-1$
+ "VDBLess Derby SMALLA INTKEY 1 SQL060110103634070", //$NON-NLS-1$
+ "VDBLess Derby SMALLB INTKEY 1 SQL060110103635170", //$NON-NLS-1$
+ "VDBLess Derby FLIGHTS SEGMENT_NUMBER 2 SQL090709161814150", //$NON-NLS-1$
+ "VDBLess Derby FLTAVAIL SEGMENT_NUMBER 2 FLTAVAIL_PK", //$NON-NLS-1$
});
closeConnection();
}
@@ -154,11 +153,11 @@
@Test public void testDatabaseMetaDataExportedKeys() throws Exception {
Connection conn = getConnection(VDB, DQP_PROP_FILE);
DatabaseMetaData metadata = conn.getMetaData();
- this.internalResultSet = metadata.getExportedKeys(null, "VDBLess", "Derby.FLIGHTS"); //$NON-NLS-1$ //$NON-NLS-2$
+ this.internalResultSet = metadata.getExportedKeys("VDBLess", "Derby", "FLIGHTS"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
assertResults(new String[] {
"PKTABLE_CAT[string] PKTABLE_SCHEM[string] PKTABLE_NAME[string] PKCOLUMN_NAME[string] FKTABLE_CAT[string] FKTABLE_SCHEM[string] FKTABLE_NAME[string] FKCOLUMN_NAME[string] KEY_SEQ[short] UPDATE_RULE[integer] DELETE_RULE[integer] FK_NAME[string] PK_NAME[string] DEFERRABILITY[integer]", //$NON-NLS-1$
- "null VDBLess Derby.FLIGHTS FLIGHT_ID null VDBLess Derby.FLTAVAIL FLIGHT_ID 1 3 3 FLTS_FK SQL090709161814150 5", //$NON-NLS-1$
- "null VDBLess Derby.FLIGHTS SEGMENT_NUMBER null VDBLess Derby.FLTAVAIL SEGMENT_NUMBER 2 3 3 FLTS_FK SQL090709161814150 5" //$NON-NLS-1$
+ "VDBLess Derby FLIGHTS FLIGHT_ID VDBLess Derby FLTAVAIL FLIGHT_ID 1 3 3 FLTS_FK SQL090709161814150 5", //$NON-NLS-1$
+ "VDBLess Derby FLIGHTS SEGMENT_NUMBER VDBLess Derby FLTAVAIL SEGMENT_NUMBER 2 3 3 FLTS_FK SQL090709161814150 5" //$NON-NLS-1$
});
closeConnection();
}
@@ -166,17 +165,17 @@
@Test public void testDatabaseMetaDataImportedKeys() throws Exception {
Connection conn = getConnection(VDB, DQP_PROP_FILE);
DatabaseMetaData metadata = conn.getMetaData();
- this.internalResultSet = metadata.getImportedKeys(null, "VDBLess", "Derby.FLTAVAIL"); //$NON-NLS-1$ //$NON-NLS-2$
+ this.internalResultSet = metadata.getImportedKeys("VDBLess", "Derby", "FLTAVAIL"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
assertResults(new String[] {
"PKTABLE_CAT[string] PKTABLE_SCHEM[string] PKTABLE_NAME[string] PKCOLUMN_NAME[string] FKTABLE_CAT[string] FKTABLE_SCHEM[string] FKTABLE_NAME[string] FKCOLUMN_NAME[string] KEY_SEQ[short] UPDATE_RULE[integer] DELETE_RULE[integer] FK_NAME[string] PK_NAME[string] DEFERRABILITY[integer]", //$NON-NLS-1$
- "null VDBLess Derby.FLIGHTS FLIGHT_ID null VDBLess Derby.FLTAVAIL FLIGHT_ID 1 3 3 FLTS_FK SQL090709161814150 5", //$NON-NLS-1$
- "null VDBLess Derby.FLIGHTS SEGMENT_NUMBER null VDBLess Derby.FLTAVAIL SEGMENT_NUMBER 2 3 3 FLTS_FK SQL090709161814150 5" //$NON-NLS-1$
+ "VDBLess Derby FLIGHTS FLIGHT_ID VDBLess Derby FLTAVAIL FLIGHT_ID 1 3 3 FLTS_FK SQL090709161814150 5", //$NON-NLS-1$
+ "VDBLess Derby FLIGHTS SEGMENT_NUMBER VDBLess Derby FLTAVAIL SEGMENT_NUMBER 2 3 3 FLTS_FK SQL090709161814150 5" //$NON-NLS-1$
});
- this.internalResultSet = metadata.getImportedKeys(null, null, "Derby.SMALLBRIDGE"); //$NON-NLS-1$
+ this.internalResultSet = metadata.getImportedKeys(null, "Derby", "SMALLBRIDGE"); //$NON-NLS-1$ //$NON-NLS-2$
assertResults(new String[] {
"PKTABLE_CAT[string] PKTABLE_SCHEM[string] PKTABLE_NAME[string] PKCOLUMN_NAME[string] FKTABLE_CAT[string] FKTABLE_SCHEM[string] FKTABLE_NAME[string] FKCOLUMN_NAME[string] KEY_SEQ[short] UPDATE_RULE[integer] DELETE_RULE[integer] FK_NAME[string] PK_NAME[string] DEFERRABILITY[integer]", //$NON-NLS-1$
- "null VDBLess Derby.SMALLA INTKEY null VDBLess Derby.SMALLBRIDGE AKEY 1 3 3 SMLA_FK SQL060110103634070 5", //$NON-NLS-1$
- "null VDBLess Derby.SMALLB INTKEY null VDBLess Derby.SMALLBRIDGE BKEY 1 3 3 SMLB_FK SQL060110103635170 5", //$NON-NLS-1$
+ "VDBLess Derby SMALLA INTKEY VDBLess Derby SMALLBRIDGE AKEY 1 3 3 SMLA_FK SQL060110103634070 5", //$NON-NLS-1$
+ "VDBLess Derby SMALLB INTKEY VDBLess Derby SMALLBRIDGE BKEY 1 3 3 SMLB_FK SQL060110103635170 5", //$NON-NLS-1$
});
closeConnection();
}
@@ -188,22 +187,59 @@
this.internalResultSet = metadata.getIndexInfo(null, null, null, false, true);
assertResults(new String[] {
"TABLE_CAT[string] TABLE_SCHEM[string] TABLE_NAME[string] NON_UNIQUE[boolean] INDEX_QUALIFIER[string] INDEX_NAME[string] TYPE[integer] ORDINAL_POSITION[short] COLUMN_NAME[string] ASC_OR_DESC[string] CARDINALITY[integer] PAGES[integer] FILTER_CONDITION[string]", //$NON-NLS-1$
- "null VDBLess Derby.FLIGHTS false null ORIGINDEX 0 1 ORIG_AIRPORT null 0 1 null", //$NON-NLS-1$
- "null VDBLess Derby.FLTAVAIL false null SQL090709161840271 0 1 FLIGHT_ID null 0 1 null", //$NON-NLS-1$
- "null VDBLess Derby.FLTAVAIL false null SQL090709161840271 0 2 SEGMENT_NUMBER null 0 1 null", //$NON-NLS-1$
- "null VDBLess Derby.SMALLBRIDGE false null SQL090710102514590 0 1 AKEY null 0 1 null", //$NON-NLS-1$
- "null VDBLess Derby.SMALLBRIDGE false null SQL090710102514591 0 1 BKEY null 0 1 null", //$NON-NLS-1$
- "null VDBLess Derby.SYSCOLUMNS false null SYSCOLUMNS_INDEX2 0 1 COLUMNDEFAULTID null 0 1 null", //$NON-NLS-1$
- "null VDBLess Derby.SYSCONGLOMERATES false null SYSCONGLOMERATES_INDEX1 0 1 CONGLOMERATEID null 0 1 null", //$NON-NLS-1$
- "null VDBLess Derby.SYSCONGLOMERATES false null SYSCONGLOMERATES_INDEX3 0 1 TABLEID null 0 1 null", //$NON-NLS-1$
- "null VDBLess Derby.SYSCONSTRAINTS false null SYSCONSTRAINTS_INDEX3 0 1 TABLEID null 0 1 null", //$NON-NLS-1$
- "null VDBLess Derby.SYSDEPENDS false null SYSDEPENDS_INDEX1 0 1 DEPENDENTID null 0 1 null", //$NON-NLS-1$
- "null VDBLess Derby.SYSDEPENDS false null SYSDEPENDS_INDEX2 0 1 PROVIDERID null 0 1 null", //$NON-NLS-1$
- "null VDBLess Derby.SYSFOREIGNKEYS false null SYSFOREIGNKEYS_INDEX2 0 1 KEYCONSTRAINTID null 0 1 null", //$NON-NLS-1$
- "null VDBLess Derby.SYSSTATISTICS false null SYSSTATISTICS_INDEX1 0 1 TABLEID null 0 1 null", //$NON-NLS-1$
- "null VDBLess Derby.SYSSTATISTICS false null SYSSTATISTICS_INDEX1 0 2 REFERENCEID null 0 1 null", //$NON-NLS-1$
- "null VDBLess Derby.SYSTRIGGERS false null SYSTRIGGERS_INDEX3 0 1 TABLEID null 0 1 null", //$NON-NLS-1$
- "null VDBLess Derby.SYSTRIGGERS false null SYSTRIGGERS_INDEX3 0 2 CREATIONTIMESTAMP null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby FLIGHTS false null ORIGINDEX 0 1 ORIG_AIRPORT null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby FLTAVAIL false null SQL090709161840271 0 1 FLIGHT_ID null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby FLTAVAIL false null SQL090709161840271 0 2 SEGMENT_NUMBER null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SMALLBRIDGE false null SQL090710102514590 0 1 AKEY null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SMALLBRIDGE false null SQL090710102514591 0 1 BKEY null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSCOLUMNS false null SYSCOLUMNS_INDEX2 0 1 COLUMNDEFAULTID null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSCONGLOMERATES false null SYSCONGLOMERATES_INDEX1 0 1 CONGLOMERATEID null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSCONGLOMERATES false null SYSCONGLOMERATES_INDEX3 0 1 TABLEID null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSCONSTRAINTS false null SYSCONSTRAINTS_INDEX3 0 1 TABLEID null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSDEPENDS false null SYSDEPENDS_INDEX1 0 1 DEPENDENTID null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSDEPENDS false null SYSDEPENDS_INDEX2 0 1 PROVIDERID null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSFOREIGNKEYS false null SYSFOREIGNKEYS_INDEX2 0 1 KEYCONSTRAINTID null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSSTATISTICS false null SYSSTATISTICS_INDEX1 0 1 TABLEID null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSSTATISTICS false null SYSSTATISTICS_INDEX1 0 2 REFERENCEID null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSTRIGGERS false null SYSTRIGGERS_INDEX3 0 1 TABLEID null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSTRIGGERS false null SYSTRIGGERS_INDEX3 0 2 CREATIONTIMESTAMP null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SMALLA true null SQL060110103634070 0 1 INTKEY null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SMALLB true null SQL060110103635170 0 1 INTKEY null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby FLIGHTS true null SQL090709161814150 0 1 FLIGHT_ID null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby FLIGHTS true null SQL090709161814150 0 2 SEGMENT_NUMBER null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby FLTAVAIL true null SQL090709161840270 0 1 FLIGHT_ID null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby FLTAVAIL true null SQL090709161840270 0 2 SEGMENT_NUMBER null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSALIASES true null SYSALIASES_INDEX1 0 1 SCHEMAID null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSALIASES true null SYSALIASES_INDEX1 0 2 ALIAS null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSALIASES true null SYSALIASES_INDEX1 0 3 NAMESPACE null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSALIASES true null SYSALIASES_INDEX2 0 1 ALIASID null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSALIASES true null SYSALIASES_INDEX3 0 1 SCHEMAID null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSALIASES true null SYSALIASES_INDEX3 0 2 SPECIFICNAME null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSCHECKS true null SYSCHECKS_INDEX1 0 1 CONSTRAINTID null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSCOLUMNS true null SYSCOLUMNS_INDEX1 0 1 REFERENCEID null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSCOLUMNS true null SYSCOLUMNS_INDEX1 0 2 COLUMNNAME null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSCONGLOMERATES true null SYSCONGLOMERATES_INDEX2 0 1 CONGLOMERATENAME null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSCONGLOMERATES true null SYSCONGLOMERATES_INDEX2 0 2 SCHEMAID null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSCONSTRAINTS true null SYSCONSTRAINTS_INDEX1 0 1 CONSTRAINTID null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSCONSTRAINTS true null SYSCONSTRAINTS_INDEX2 0 1 CONSTRAINTNAME null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSCONSTRAINTS true null SYSCONSTRAINTS_INDEX2 0 2 SCHEMAID null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSFILES true null SYSFILES_INDEX1 0 1 FILENAME null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSFILES true null SYSFILES_INDEX1 0 2 SCHEMAID null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSFILES true null SYSFILES_INDEX2 0 1 FILEID null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSFOREIGNKEYS true null SYSFOREIGNKEYS_INDEX1 0 1 CONSTRAINTID null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSKEYS true null SYSKEYS_INDEX1 0 1 CONSTRAINTID null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSSCHEMAS true null SYSSCHEMAS_INDEX1 0 1 SCHEMANAME null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSSCHEMAS true null SYSSCHEMAS_INDEX2 0 1 SCHEMAID null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSSTATEMENTS true null SYSSTATEMENTS_INDEX1 0 1 STMTID null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSSTATEMENTS true null SYSSTATEMENTS_INDEX2 0 1 STMTNAME null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSSTATEMENTS true null SYSSTATEMENTS_INDEX2 0 2 SCHEMAID null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSTABLES true null SYSTABLES_INDEX1 0 1 TABLENAME null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSTABLES true null SYSTABLES_INDEX1 0 2 SCHEMAID null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSTABLES true null SYSTABLES_INDEX2 0 1 TABLEID null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSTRIGGERS true null SYSTRIGGERS_INDEX1 0 1 TRIGGERID null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSTRIGGERS true null SYSTRIGGERS_INDEX2 0 1 TRIGGERNAME null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSTRIGGERS true null SYSTRIGGERS_INDEX2 0 2 SCHEMAID null 0 1 null", //$NON-NLS-1$
+ "VDBLess Derby SYSVIEWS true null SYSVIEWS_INDEX1 0 1 TABLEID null 0 1 null", //$NON-NLS-1$
});
closeConnection();
}
@@ -211,12 +247,12 @@
@Test public void testDatabaseMetaDataProcedures() throws Exception {
Connection conn = getConnection(VDB, DQP_PROP_FILE);
DatabaseMetaData metadata = conn.getMetaData();
- this.internalResultSet = metadata.getProcedures(null, null, "Derby.%JAR"); //$NON-NLS-1$
+ this.internalResultSet = metadata.getProcedures(null, "Derby", "%JAR"); //$NON-NLS-1$ //$NON-NLS-2$
assertResults(new String[] {
"PROCEDURE_CAT[string] PROCEDURE_SCHEM[string] PROCEDURE_NAME[string] RESERVED_1[string] RESERVED_2[string] RESERVED_3[string] REMARKS[string] PROCEDURE_TYPE[short] SPECIFIC_NAME[string]", //$NON-NLS-1$
- "null VDBLess Derby.INSTALL_JAR null null null null 1 Derby.INSTALL_JAR", //$NON-NLS-1$
- "null VDBLess Derby.REMOVE_JAR null null null null 1 Derby.REMOVE_JAR", //$NON-NLS-1$
- "null VDBLess Derby.REPLACE_JAR null null null null 1 Derby.REPLACE_JAR", //$NON-NLS-1$
+ "VDBLess Derby INSTALL_JAR null null null null 1 INSTALL_JAR", //$NON-NLS-1$
+ "VDBLess Derby REMOVE_JAR null null null null 1 REMOVE_JAR", //$NON-NLS-1$
+ "VDBLess Derby REPLACE_JAR null null null null 1 REPLACE_JAR", //$NON-NLS-1$
});
closeConnection();
}
@@ -224,14 +260,14 @@
@Test public void testDatabaseMetaDataProcedureColumns() throws Exception {
Connection conn = getConnection(VDB, DQP_PROP_FILE);
DatabaseMetaData metadata = conn.getMetaData();
- this.internalResultSet = metadata.getProcedureColumns(null, null, "Derby.SQLUDTS", null); //$NON-NLS-1$
+ this.internalResultSet = metadata.getProcedureColumns(null, "Derby", "SQLUDTS", null); //$NON-NLS-1$ //$NON-NLS-2$
assertResults(new String[] {
"PROCEDURE_CAT[string] PROCEDURE_SCHEM[string] PROCEDURE_NAME[string] COLUMN_NAME[string] COLUMN_TYPE[short] DATA_TYPE[integer] TYPE_NAME[string] PRECISION[integer] LENGTH[integer] SCALE[short] RADIX[integer] NULLABLE[integer] REMARKS[string] COLUMN_DEF[string] SQL_DATA_TYPE[string] SQL_DATETIME_SUB[string] CHAR_OCTET_LENGTH[string] ORDINAL_POSITION[integer] IS_NULLABLE[string] SPECIFIC_NAME[string]", //$NON-NLS-1$
- "null VDBLess Derby.SQLUDTS CATALOGNAME 1 12 string 128 256 0 0 1 null null null null null 1 YES Derby.SQLUDTS.CATALOGNAME", //$NON-NLS-1$
- "null VDBLess Derby.SQLUDTS SCHEMAPATTERN 1 12 string 128 256 0 0 1 null null null null null 2 YES Derby.SQLUDTS.SCHEMAPATTERN", //$NON-NLS-1$
- "null VDBLess Derby.SQLUDTS TYPENAMEPATTERN 1 12 string 128 256 0 0 1 null null null null null 3 YES Derby.SQLUDTS.TYPENAMEPATTERN", //$NON-NLS-1$
- "null VDBLess Derby.SQLUDTS UDTTYPES 1 12 string 128 256 0 0 1 null null null null null 4 YES Derby.SQLUDTS.UDTTYPES", //$NON-NLS-1$
- "null VDBLess Derby.SQLUDTS OPTIONS 1 12 string 4000 8000 0 0 1 null null null null null 5 YES Derby.SQLUDTS.OPTIONS", //$NON-NLS-1$
+ "VDBLess Derby SQLUDTS CATALOGNAME 1 12 string 128 256 0 0 1 null null null null null 1 YES SQLUDTS", //$NON-NLS-1$
+ "VDBLess Derby SQLUDTS SCHEMAPATTERN 1 12 string 128 256 0 0 1 null null null null null 2 YES SQLUDTS", //$NON-NLS-1$
+ "VDBLess Derby SQLUDTS TYPENAMEPATTERN 1 12 string 128 256 0 0 1 null null null null null 3 YES SQLUDTS", //$NON-NLS-1$
+ "VDBLess Derby SQLUDTS UDTTYPES 1 12 string 128 256 0 0 1 null null null null null 4 YES SQLUDTS", //$NON-NLS-1$
+ "VDBLess Derby SQLUDTS OPTIONS 1 12 string 4000 8000 0 0 1 null null null null null 5 YES SQLUDTS", //$NON-NLS-1$
});
closeConnection();
}
Modified: branches/JCA/test-integration/common/src/test/java/com/metamatrix/systemmodel/TestPartsDatabaseMetadata.java
===================================================================
--- branches/JCA/test-integration/common/src/test/java/com/metamatrix/systemmodel/TestPartsDatabaseMetadata.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/java/com/metamatrix/systemmodel/TestPartsDatabaseMetadata.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -61,47 +61,41 @@
@After public void tearDown() {
closeConnection();
}
-
- private void checkResult(String testName, ResultSet actualResults) throws Exception {
- ResultSetMetaData resultMetadata = actualResults.getMetaData();
-
- String metafilename = UnitTestUtil.getTestDataPath() + File.separator+"partssupplier"+File.separator + "expected" + File.separator+ testName.substring(4) + ".metadata.txt"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- assertResultsSetMetadataEquals(resultMetadata, new File(metafilename));
-
- String filename = UnitTestUtil.getTestDataPath() + File.separator+"partssupplier"+File.separator + "expected" + File.separator+ testName.substring(4) + ".txt"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- assertResultsSetEquals(actualResults, new File(filename));
- }
-
+
@Test public void testExportedKeys() throws Exception {
- checkResult("testExportedKeys", dbMetadata.getExportedKeys(null, VDB, "%")); //$NON-NLS-1$ //$NON-NLS-2$
+ checkResult("testExportedKeys", dbMetadata.getExportedKeys(VDB, null, "%")); //$NON-NLS-1$ //$NON-NLS-2$
}
- @Test public void testImportedKeys() throws Exception {
- checkResult("testImportedKeys", dbMetadata.getImportedKeys(null, VDB, "%")); //$NON-NLS-1$ //$NON-NLS-2$
+ private void checkResult(String string, ResultSet exportedKeys) throws Exception {
+ checkResult(string, exportedKeys, "partssupplier"); //$NON-NLS-1$
+ }
+
+ @Test public void testImportedKeys() throws Exception {
+ checkResult("testImportedKeys", dbMetadata.getImportedKeys(VDB, null, "%")); //$NON-NLS-1$ //$NON-NLS-2$
}
@Test public void testPrimaryKeys() throws Exception {
- checkResult("testPrimaryKeys", dbMetadata.getPrimaryKeys(null, VDB, "%")); //$NON-NLS-1$ //$NON-NLS-2$
+ checkResult("testPrimaryKeys", dbMetadata.getPrimaryKeys(VDB, null, "%")); //$NON-NLS-1$ //$NON-NLS-2$
}
@Test public void testProcedures() throws Exception {
- checkResult("testProcedures", dbMetadata.getProcedures(null, VDB, "%")); //$NON-NLS-1$ //$NON-NLS-2$
+ checkResult("testProcedures", dbMetadata.getProcedures(VDB, null, "%")); //$NON-NLS-1$ //$NON-NLS-2$
}
@Test public void testProcedureColumns() throws Exception {
- checkResult("testProcedureColumns", dbMetadata.getProcedureColumns(null, VDB, "%", "%")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ checkResult("testProcedureColumns", dbMetadata.getProcedureColumns(VDB, null, "%", "%")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
@Test public void testUDTs() throws Exception {
- checkResult("testUDTs", dbMetadata.getUDTs(null, VDB, "%", null)); //$NON-NLS-1$ //$NON-NLS-2$
+ checkResult("testUDTs", dbMetadata.getUDTs(VDB, null, "%", null)); //$NON-NLS-1$ //$NON-NLS-2$
}
@Test public void testIndexInfo() throws Exception {
- checkResult("testIndexInfo", dbMetadata.getIndexInfo(null, VDB, "%", true, true)); //$NON-NLS-1$ //$NON-NLS-2$
+ checkResult("testIndexInfo", dbMetadata.getIndexInfo(VDB, null, "%", true, true)); //$NON-NLS-1$ //$NON-NLS-2$
}
@Test public void testCrossReference() throws Exception {
- checkResult("testCrossReference", dbMetadata.getCrossReference(null, VDB, "%", null, VDB, "%")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ checkResult("testCrossReference", dbMetadata.getCrossReference(VDB, null, "%", VDB, null, "%")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
@Test public void testTypeInfo() throws Exception {
@@ -117,10 +111,10 @@
}
@Test public void testTables() throws Exception {
- checkResult("testTables", dbMetadata.getTables(null,VDB, "%", null)); //$NON-NLS-1$ //$NON-NLS-2$
+ checkResult("testTables", dbMetadata.getTables(VDB, null, "%", null)); //$NON-NLS-1$ //$NON-NLS-2$
}
@Test public void testColumns() throws Exception {
- checkResult("testColumns", dbMetadata.getColumns(null, VDB, "%", "%")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ checkResult("testColumns", dbMetadata.getColumns(VDB, null, "%", "%")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
}
Modified: branches/JCA/test-integration/common/src/test/java/com/metamatrix/systemmodel/TestResultSetMetadata.java
===================================================================
--- branches/JCA/test-integration/common/src/test/java/com/metamatrix/systemmodel/TestResultSetMetadata.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/java/com/metamatrix/systemmodel/TestResultSetMetadata.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -63,7 +63,7 @@
@Test public void testCount() throws Exception {
String[] expected = {
"ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName", //$NON-NLS-1$
- "count 4 integer java.lang.Integer 1 null PartsSupplier null" //$NON-NLS-1$
+ "count 4 integer java.lang.Integer 1 null null PartsSupplier" //$NON-NLS-1$
};
executeTest("select count(*) from parts", expected); //$NON-NLS-1$
}
@@ -71,10 +71,10 @@
@Test public void testStar() throws Exception {
String[] expected = {
"ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName", //$NON-NLS-1$
- "PART_ID 12 string java.lang.String 0 PartsSupplier.PARTSSUPPLIER.PARTS PartsSupplier null", //$NON-NLS-1$
- "PART_NAME 12 string java.lang.String 1 PartsSupplier.PARTSSUPPLIER.PARTS PartsSupplier null", //$NON-NLS-1$
- "PART_COLOR 12 string java.lang.String 1 PartsSupplier.PARTSSUPPLIER.PARTS PartsSupplier null", //$NON-NLS-1$
- "PART_WEIGHT 12 string java.lang.String 1 PartsSupplier.PARTSSUPPLIER.PARTS PartsSupplier null" //$NON-NLS-1$
+ "PART_ID 12 string java.lang.String 0 PARTSSUPPLIER.PARTS PartsSupplier PartsSupplier", //$NON-NLS-1$
+ "PART_NAME 12 string java.lang.String 1 PARTSSUPPLIER.PARTS PartsSupplier PartsSupplier", //$NON-NLS-1$
+ "PART_COLOR 12 string java.lang.String 1 PARTSSUPPLIER.PARTS PartsSupplier PartsSupplier", //$NON-NLS-1$
+ "PART_WEIGHT 12 string java.lang.String 1 PARTSSUPPLIER.PARTS PartsSupplier PartsSupplier" //$NON-NLS-1$
};
executeTest("select * from parts", expected); //$NON-NLS-1$
}
@@ -82,10 +82,10 @@
@Test public void testTempGroupStar() throws Exception {
String[] expected = {
"ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName", //$NON-NLS-1$
- "PART_ID 12 string java.lang.String 0 FOO PartsSupplier null", //$NON-NLS-1$
- "PART_NAME 12 string java.lang.String 1 FOO PartsSupplier null", //$NON-NLS-1$
- "PART_COLOR 12 string java.lang.String 1 FOO PartsSupplier null", //$NON-NLS-1$
- "PART_WEIGHT 12 string java.lang.String 1 FOO PartsSupplier null" //$NON-NLS-1$
+ "PART_ID 12 string java.lang.String 0 FOO null PartsSupplier", //$NON-NLS-1$
+ "PART_NAME 12 string java.lang.String 1 FOO null PartsSupplier", //$NON-NLS-1$
+ "PART_COLOR 12 string java.lang.String 1 FOO null PartsSupplier", //$NON-NLS-1$
+ "PART_WEIGHT 12 string java.lang.String 1 FOO null PartsSupplier" //$NON-NLS-1$
};
executeTest("select * from (select * from parts) foo", expected); //$NON-NLS-1$
}
@@ -93,8 +93,8 @@
@Test public void testCountAndElement() throws Exception {
String[] expected = {
"ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName", //$NON-NLS-1$
- "count 4 integer java.lang.Integer 1 null PartsSupplier null", //$NON-NLS-1$
- "part_name 12 string java.lang.String 1 PartsSupplier.PARTSSUPPLIER.PARTS PartsSupplier null" //$NON-NLS-1$
+ "count 4 integer java.lang.Integer 1 null null PartsSupplier", //$NON-NLS-1$
+ "part_name 12 string java.lang.String 1 PARTSSUPPLIER.PARTS PartsSupplier PartsSupplier" //$NON-NLS-1$
};
executeTest("select count(*), part_name from parts group by part_name", expected); //$NON-NLS-1$
}
@@ -102,10 +102,10 @@
@Test public void testStar_PreparedStatement() throws Exception {
String[] expected = {
"ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName", //$NON-NLS-1$
- "PART_ID 12 string java.lang.String 0 PartsSupplier.PARTSSUPPLIER.PARTS PartsSupplier null", //$NON-NLS-1$
- "PART_NAME 12 string java.lang.String 1 PartsSupplier.PARTSSUPPLIER.PARTS PartsSupplier null", //$NON-NLS-1$
- "PART_COLOR 12 string java.lang.String 1 PartsSupplier.PARTSSUPPLIER.PARTS PartsSupplier null", //$NON-NLS-1$
- "PART_WEIGHT 12 string java.lang.String 1 PartsSupplier.PARTSSUPPLIER.PARTS PartsSupplier null" //$NON-NLS-1$
+ "PART_ID 12 string java.lang.String 0 PARTSSUPPLIER.PARTS PartsSupplier PartsSupplier", //$NON-NLS-1$
+ "PART_NAME 12 string java.lang.String 1 PARTSSUPPLIER.PARTS PartsSupplier PartsSupplier", //$NON-NLS-1$
+ "PART_COLOR 12 string java.lang.String 1 PARTSSUPPLIER.PARTS PartsSupplier PartsSupplier", //$NON-NLS-1$
+ "PART_WEIGHT 12 string java.lang.String 1 PARTSSUPPLIER.PARTS PartsSupplier PartsSupplier" //$NON-NLS-1$
};
executePreparedTest("select * from parts", expected); //$NON-NLS-1$
}
@@ -113,7 +113,7 @@
@Test public void testCount_PreparedStatement() throws Exception {
String[] expected = {
"ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName", //$NON-NLS-1$
- "count 4 integer java.lang.Integer 1 null PartsSupplier null" //$NON-NLS-1$
+ "count 4 integer java.lang.Integer 1 null null PartsSupplier" //$NON-NLS-1$
};
executePreparedTest("select count(*) from parts", expected); //$NON-NLS-1$
}
@@ -121,8 +121,8 @@
@Test public void testCountAndElement_PreparedStatement() throws Exception {
String[] expected = {
"ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName", //$NON-NLS-1$
- "count 4 integer java.lang.Integer 1 null PartsSupplier null", //$NON-NLS-1$
- "part_name 12 string java.lang.String 1 PartsSupplier.PARTSSUPPLIER.PARTS PartsSupplier null" //$NON-NLS-1$
+ "count 4 integer java.lang.Integer 1 null null PartsSupplier", //$NON-NLS-1$
+ "part_name 12 string java.lang.String 1 PARTSSUPPLIER.PARTS PartsSupplier PartsSupplier" //$NON-NLS-1$
};
executePreparedTest("select count(*), part_name from parts group by part_name", expected); //$NON-NLS-1$
}
Deleted: branches/JCA/test-integration/common/src/test/java/com/metamatrix/systemmodel/TestSystemPhysicalModel.java
===================================================================
--- branches/JCA/test-integration/common/src/test/java/com/metamatrix/systemmodel/TestSystemPhysicalModel.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/java/com/metamatrix/systemmodel/TestSystemPhysicalModel.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,993 +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 com.metamatrix.systemmodel;
-
-import static org.junit.Assert.*;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.teiid.metadata.index.VDBMetadataFactory;
-
-import com.metamatrix.cdk.api.ConnectorHost;
-import com.metamatrix.cdk.api.TranslationUtility;
-import com.metamatrix.connector.metadata.IndexConnector;
-import com.metamatrix.dqp.service.DQPServiceNames;
-import com.metamatrix.metadata.runtime.FakeMetadataService;
-
-public class TestSystemPhysicalModel {
- static FakeMetadataService metadataService = null;
- static ConnectorHost host = null;
-
- @AfterClass public static void oneTimeTearDown() throws Exception {
- if (metadataService != null) {
- metadataService.clear();
- }
- }
-
- @BeforeClass public static void oneTimeSetUp() throws Exception {
- TranslationUtility utility = new TranslationUtility(VDBMetadataFactory.getVDBMetadata(Thread.currentThread().getContextClassLoader().getResource("System.vdb"))); //$NON-NLS-1$
- host = new ConnectorHost(new IndexConnector(), null, utility);
-
- metadataService = new FakeMetadataService(Thread.currentThread().getContextClassLoader().getResource("System.vdb")); //$NON-NLS-1$
- host.addResourceToConnectorEnvironment(DQPServiceNames.METADATA_SERVICE, metadataService);
- host.setSecurityContext("testName", "testVersion", "testUser", null); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
-
- private void execute(String query) throws Exception {
- execute(query, null);
- }
-
- private void execute(String query, String[] expected) throws Exception {
- List<ArrayList> results = host.executeCommand(query);
- if (expected != null) {
- //assertEquals("number results does not match", results.size(),expected.length);
-
- int i = 0;
- for (ArrayList<String> result : results) {
- String resultStr = concat(result);
- assertEquals(expected[i++], resultStr);
- }
- }
- }
-
- private String concat(ArrayList list) {
- StringBuilder sb = new StringBuilder();
- for(Object msg:list) {
- sb.append(msg);
- }
- return sb.toString();
- }
-
-
- @Test public void testSystemPhysical_ACCESS_PATTERNS_FULLNAME() throws Exception {
- String[] expected = {
- };
- execute("select FULLNAME from SystemPhysical.ACCESS_PATTERNS", expected); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_ACCESS_PATTERNS_MODEL_NAME() throws Exception {
- execute(" select MODEL_NAME from SystemPhysical.ACCESS_PATTERNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_ACCESS_PATTERNS_NAME_IN_SOURCE() throws Exception {
- execute(" select NAME_IN_SOURCE from SystemPhysical.ACCESS_PATTERNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_ACCESS_PATTERNS_NAME() throws Exception {
- execute(" select NAME from SystemPhysical.ACCESS_PATTERNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_ACCESS_PATTERNS_OBJECT_TYPE() throws Exception {
- execute(" select OBJECT_TYPE from SystemPhysical.ACCESS_PATTERNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_ACCESS_PATTERNS_PATH() throws Exception {
- execute(" select PATH from SystemPhysical.ACCESS_PATTERNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_ACCESS_PATTERNS_TABLE_NAME() throws Exception {
- execute(" select TABLE_NAME from SystemPhysical.ACCESS_PATTERNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_ACCESS_PATTERNS_UUID_OF_TABLE() throws Exception {
- execute(" select UUID_OF_TABLE from SystemPhysical.ACCESS_PATTERNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_ACCESS_PATTERNS_UUID() throws Exception {
- execute(" select UUID from SystemPhysical.ACCESS_PATTERNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_ALL_KEYS_FULLNAME() throws Exception {
- execute(" select FULLNAME from SystemPhysical.ALL_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_ALL_KEYS_KEY_TYPE() throws Exception {
- execute(" select KEY_TYPE from SystemPhysical.ALL_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_ALL_KEYS_MODEL_NAME() throws Exception {
- execute(" select MODEL_NAME from SystemPhysical.ALL_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_ALL_KEYS_NAME_IN_SOURCE() throws Exception {
- execute(" select NAME_IN_SOURCE from SystemPhysical.ALL_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_ALL_KEYS_NAME() throws Exception {
- execute(" select NAME from SystemPhysical.ALL_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_ALL_KEYS_OBJECT_TYPE() throws Exception {
- execute(" select OBJECT_TYPE from SystemPhysical.ALL_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_ALL_KEYS_PATH() throws Exception {
- execute(" select PATH from SystemPhysical.ALL_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_ALL_KEYS_TABLE_NAME() throws Exception {
- execute(" select TABLE_NAME from SystemPhysical.ALL_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_ALL_KEYS_UUID_OF_TABLE() throws Exception {
- execute(" select UUID_OF_TABLE from SystemPhysical.ALL_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_ALL_KEYS_UUID() throws Exception {
- execute(" select UUID from SystemPhysical.ALL_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_ANNOTATIONS_ANNOTATED_UUID() throws Exception {
- execute(" select ANNOTATED_UUID from SystemPhysical.ANNOTATIONS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_ANNOTATIONS_DESCRIPTION() throws Exception {
- execute(" select DESCRIPTION from SystemPhysical.ANNOTATIONS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_COLUMNS_CHAR_OCTET_LENGTH() throws Exception {
- execute(" select CHAR_OCTET_LENGTH from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_COLUMNS_DATATYPE_UUID() throws Exception {
- execute(" select DATATYPE_UUID from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_COLUMNS_DEFAULT_VALUE() throws Exception {
- execute(" select DEFAULT_VALUE from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_COLUMNS_FORMAT() throws Exception {
- execute(" select FORMAT from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_COLUMNS_FULLNAME() throws Exception {
- execute(" select FULLNAME from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_COLUMNS_IS_AUTO_INCREMENTED() throws Exception {
- execute(" select IS_AUTO_INCREMENTED from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_COLUMNS_IS_CASE_SENSITIVE() throws Exception {
- execute(" select IS_CASE_SENSITIVE from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_COLUMNS_IS_CURRENCY() throws Exception {
- execute(" select IS_CURRENCY from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_COLUMNS_IS_LENGTH_FIXED() throws Exception {
- execute(" select IS_LENGTH_FIXED from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_COLUMNS_IS_SELECTABLE() throws Exception {
- execute("select IS_SELECTABLE from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_COLUMNS_IS_SIGNED() throws Exception {
- execute(" select IS_SIGNED from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_COLUMNS_LENGTH() throws Exception {
- execute(" select LENGTH from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_COLUMNS_MAX_VALUE() throws Exception {
- execute(" select MAX_VALUE from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_COLUMNS_MIN_VALUE() throws Exception {
- execute(" select MIN_VALUE from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_COLUMNS_MODEL_NAME() throws Exception {
- execute(" select MODEL_NAME from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_COLUMNS_NAME_IN_SOURCE() throws Exception {
- execute(" select NAME_IN_SOURCE from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_COLUMNS_NAME() throws Exception {
- execute(" select NAME from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_COLUMNS_NULL_TYPE() throws Exception {
- execute(" select NULL_TYPE from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_COLUMNS_OBJECT_TYPE() throws Exception {
- execute(" select OBJECT_TYPE from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_COLUMNS_PARENT_NAME() throws Exception {
- execute(" select PARENT_NAME from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_COLUMNS_PARENT_PATH() throws Exception {
- execute(" select PARENT_PATH from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_COLUMNS_PARENT_UUID() throws Exception {
- execute(" select PARENT_UUID from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_COLUMNS_PATH() throws Exception {
- execute(" select PATH from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_COLUMNS_POSITION() throws Exception {
- execute(" select POSITION from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_COLUMNS_PRECISION() throws Exception {
- execute(" select PRECISION from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_COLUMNS_RADIX() throws Exception {
- execute(" select RADIX from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_COLUMNS_RUNTIME_TYPE_NAME() throws Exception {
- execute(" select RUNTIME_TYPE_NAME from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_COLUMNS_SCALE() throws Exception {
- execute(" select SCALE from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_COLUMNS_SEARCH_TYPE() throws Exception {
- execute(" select SEARCH_TYPE from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_COLUMNS_SUPPORTS_UPDATES() throws Exception {
- execute(" select SUPPORTS_UPDATES from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_COLUMNS_UUID() throws Exception {
- execute(" select UUID from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_DATATYPES_BASETYPE_NAME() throws Exception {
- execute(" select BASETYPE_NAME from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_DATATYPES_BASETYPE_URL() throws Exception {
- execute(" select BASETYPE_URL from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_DATATYPES_FULLNAME() throws Exception {
- execute(" select FULLNAME from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_DATATYPES_IS_AUTO_INCREMENTED() throws Exception {
- execute(" select IS_AUTO_INCREMENTED from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_DATATYPES_IS_BUILTIN() throws Exception {
- execute(" select IS_BUILTIN from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_DATATYPES_IS_CASE_SENSITIVE() throws Exception {
- execute(" select IS_CASE_SENSITIVE from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_DATATYPES_IS_SIGNED() throws Exception {
- execute(" select IS_SIGNED from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_DATATYPES_JAVA_CLASS_NAME() throws Exception {
- execute(" select JAVA_CLASS_NAME from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_DATATYPES_LENGTH() throws Exception {
- execute(" select LENGTH from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_DATATYPES_MODEL_NAME() throws Exception {
- execute(" select MODEL_NAME from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_DATATYPES_NAME_IN_SOURCE() throws Exception {
- execute(" select NAME_IN_SOURCE from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_DATATYPES_NAME() throws Exception {
- execute(" select NAME from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_DATATYPES_NULL_TYPE() throws Exception {
- execute(" select NULL_TYPE from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_DATATYPES_OBJECT_TYPE() throws Exception {
- execute(" select OBJECT_TYPE from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_DATATYPES_PATH() throws Exception {
- execute(" select PATH from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_DATATYPES_PRECISION() throws Exception {
- execute(" select PRECISION from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_DATATYPES_RADIX() throws Exception {
- execute(" select RADIX from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_DATATYPES_RUNTIME_TYPE_NAME() throws Exception {
- execute(" select RUNTIME_TYPE_NAME from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_DATATYPES_SCALE() throws Exception {
- execute(" select SCALE from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_DATATYPES_SEARCH_TYPE() throws Exception {
- execute(" select SEARCH_TYPE from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_DATATYPES_TYPE() throws Exception {
- execute(" select TYPE from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_DATATYPES_URL() throws Exception {
- execute(" select URL from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_DATATYPES_UUID() throws Exception {
- execute(" select UUID from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_DATATYPES_VARIETY() throws Exception {
- execute(" select VARIETY from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_DATATYPE_TYPE_ENUM_CODE() throws Exception {
- execute(" select CODE from SystemPhysical.DATATYPE_TYPE_ENUM"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_DATATYPE_TYPE_ENUM_NAME() throws Exception {
- execute(" select NAME from SystemPhysical.DATATYPE_TYPE_ENUM"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_DATATYPE_VARIETY_ENUM_CODE() throws Exception {
- execute(" select CODE from SystemPhysical.DATATYPE_VARIETY_ENUM"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_DATATYPE_VARIETY_ENUM_NAME() throws Exception {
- execute(" select NAME from SystemPhysical.DATATYPE_VARIETY_ENUM"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_DELETE_TRANS_OBJECT_TYPE() throws Exception {
- execute(" select OBJECT_TYPE from SystemPhysical.DELETE_TRANS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_DELETE_TRANS_TRANSFORMATION() throws Exception {
- execute(" select TRANSFORMATION from SystemPhysical.DELETE_TRANS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_DELETE_TRANS_TRANSFORMED_PATH() throws Exception {
- execute(" select TRANSFORMED_PATH from SystemPhysical.DELETE_TRANS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_DELETE_TRANS_TRANSFORMED_UUID() throws Exception {
- execute(" select TRANSFORMED_UUID from SystemPhysical.DELETE_TRANS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_FOREIGN_KEYS_FULLNAME() throws Exception {
- execute(" select FULLNAME from SystemPhysical.FOREIGN_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_FOREIGN_KEYS_MODEL_NAME() throws Exception {
- execute(" select MODEL_NAME from SystemPhysical.FOREIGN_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_FOREIGN_KEYS_NAME_IN_SOURCE() throws Exception {
- execute(" select NAME_IN_SOURCE from SystemPhysical.FOREIGN_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_FOREIGN_KEYS_NAME() throws Exception {
- execute(" select NAME from SystemPhysical.FOREIGN_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_FOREIGN_KEYS_OBJECT_TYPE() throws Exception {
- execute(" select OBJECT_TYPE from SystemPhysical.FOREIGN_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_FOREIGN_KEYS_PATH() throws Exception {
- execute(" select PATH from SystemPhysical.FOREIGN_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_FOREIGN_KEYS_TABLE_NAME() throws Exception {
- execute(" select TABLE_NAME from SystemPhysical.FOREIGN_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_FOREIGN_KEYS_UUID_OF_PRIMARY_KEY() throws Exception {
- execute(" select UUID_OF_PRIMARY_KEY from SystemPhysical.FOREIGN_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_FOREIGN_KEYS_UUID_OF_TABLE() throws Exception {
- execute(" select UUID_OF_TABLE from SystemPhysical.FOREIGN_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_FOREIGN_KEYS_UUID() throws Exception {
- execute(" select UUID from SystemPhysical.FOREIGN_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_INDEXES_FULLNAME() throws Exception {
- execute(" select FULLNAME from SystemPhysical.INDEXES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_INDEXES_MODEL_NAME() throws Exception {
- execute(" select MODEL_NAME from SystemPhysical.INDEXES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_INDEXES_NAME_IN_SOURCE() throws Exception {
- execute(" select NAME_IN_SOURCE from SystemPhysical.INDEXES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_INDEXES_NAME() throws Exception {
- execute(" select NAME from SystemPhysical.INDEXES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_INDEXES_OBJECT_TYPE() throws Exception {
- execute(" select OBJECT_TYPE from SystemPhysical.INDEXES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_INDEXES_PATH() throws Exception {
- execute(" select PATH from SystemPhysical.INDEXES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_INDEXES_TABLE_NAME() throws Exception {
- execute(" select TABLE_NAME from SystemPhysical.INDEXES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_INDEXES_UUID() throws Exception {
- execute(" select UUID from SystemPhysical.INDEXES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_INSERT_TRANS_OBJECT_TYPE() throws Exception {
- execute(" select OBJECT_TYPE from SystemPhysical.INSERT_TRANS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_INSERT_TRANS_TRANSFORMATION() throws Exception {
- execute(" select TRANSFORMATION from SystemPhysical.INSERT_TRANS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_INSERT_TRANS_TRANSFORMED_PATH() throws Exception {
- execute(" select TRANSFORMED_PATH from SystemPhysical.INSERT_TRANS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_INSERT_TRANS_TRANSFORMED_UUID() throws Exception {
- execute(" select TRANSFORMED_UUID from SystemPhysical.INSERT_TRANS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_KEY_COLUMNS_COLUMN_UUID() throws Exception {
- execute(" select COLUMN_UUID from SystemPhysical.KEY_COLUMNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_KEY_COLUMNS_KEY_TYPE() throws Exception {
- execute(" select KEY_TYPE from SystemPhysical.KEY_COLUMNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_KEY_COLUMNS_KEY_UUID() throws Exception {
- execute(" select KEY_UUID from SystemPhysical.KEY_COLUMNS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_KEY_TYPE_ENUM_CODE() throws Exception {
- execute(" select CODE from SystemPhysical.KEY_TYPE_ENUM"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_KEY_TYPE_ENUM_NAME() throws Exception {
- execute(" select NAME from SystemPhysical.KEY_TYPE_ENUM"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_MODELS_IS_PHYSICAL() throws Exception {
- execute(" select IS_PHYSICAL from SystemPhysical.MODELS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_MODELS_IS_VISIBLE() throws Exception {
- execute(" select IS_VISIBLE from SystemPhysical.MODELS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_MODELS_MAX_SET_SIZE() throws Exception {
- execute(" select MAX_SET_SIZE from SystemPhysical.MODELS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_MODELS_MODEL_TYPE() throws Exception {
- execute(" select MODEL_TYPE from SystemPhysical.MODELS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_MODELS_NAME_IN_SOURCE() throws Exception {
- execute(" select NAME_IN_SOURCE from SystemPhysical.MODELS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_MODELS_NAME() throws Exception {
- execute(" select NAME from SystemPhysical.MODELS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_MODELS_OBJECT_TYPE() throws Exception {
- execute(" select OBJECT_TYPE from SystemPhysical.MODELS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_MODELS_SUPPORTS_DISTINCT() throws Exception {
- execute(" select SUPPORTS_DISTINCT from SystemPhysical.MODELS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_MODELS_SUPPORTS_JOIN() throws Exception {
- execute(" select SUPPORTS_JOIN from SystemPhysical.MODELS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_MODELS_SUPPORTS_ORDER_BY() throws Exception {
- execute(" select SUPPORTS_ORDER_BY from SystemPhysical.MODELS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_MODELS_SUPPORTS_OUTER_JOIN() throws Exception {
- execute(" select SUPPORTS_OUTER_JOIN from SystemPhysical.MODELS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_MODELS_SUPPORTS_WHERE_ALL() throws Exception {
- execute(" select SUPPORTS_WHERE_ALL from SystemPhysical.MODELS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_MODELS_UUID() throws Exception {
- execute(" select UUID from SystemPhysical.MODELS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_MODEL_TYPE_ENUM_CODE() throws Exception {
- execute(" select CODE from SystemPhysical.MODEL_TYPE_ENUM"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_MODEL_TYPE_ENUM_NAME() throws Exception {
- execute(" select NAME from SystemPhysical.MODEL_TYPE_ENUM"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_NULL_TYPE_ENUM_CODE() throws Exception {
- execute(" select CODE from SystemPhysical.NULL_TYPE_ENUM"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_NULL_TYPE_ENUM_NAME() throws Exception {
- execute(" select NAME from SystemPhysical.NULL_TYPE_ENUM"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PRIMARY_KEYS_FULLNAME() throws Exception {
- execute(" select FULLNAME from SystemPhysical.PRIMARY_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PRIMARY_KEYS_MODEL_NAME() throws Exception {
- execute(" select * from SystemPhysical.PRIMARY_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PRIMARY_KEYS_NAME_IN_SOURCE() throws Exception {
- execute(" select NAME_IN_SOURCE from SystemPhysical.PRIMARY_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PRIMARY_KEYS_NAME() throws Exception {
- execute(" select NAME from SystemPhysical.PRIMARY_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PRIMARY_KEYS_OBJECT_TYPE() throws Exception {
- execute(" select OBJECT_TYPE from SystemPhysical.PRIMARY_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PRIMARY_KEYS_PATH() throws Exception {
- execute(" select PATH from SystemPhysical.PRIMARY_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PRIMARY_KEYS_TABLE_NAME() throws Exception {
- execute(" select TABLE_NAME from SystemPhysical.PRIMARY_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PRIMARY_KEYS_UUID_OF_TABLE() throws Exception {
- execute(" select UUID_OF_TABLE from SystemPhysical.PRIMARY_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PRIMARY_KEYS_UUID() throws Exception {
- execute(" select UUID from SystemPhysical.PRIMARY_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROCS_FULLNAME() throws Exception {
- execute(" select FULLNAME from SystemPhysical.PROCS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROCS_FUNCTION() throws Exception {
- execute(" select FUNCTION from SystemPhysical.PROCS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROCS_MODEL_NAME() throws Exception {
- execute(" select MODEL_NAME from SystemPhysical.PROCS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROCS_NAME_IN_SOURCE() throws Exception {
- execute(" select NAME_IN_SOURCE from SystemPhysical.PROCS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROCS_NAME() throws Exception {
- execute(" select NAME from SystemPhysical.PROCS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROCS_OBJECT_TYPE() throws Exception {
- execute(" select OBJECT_TYPE from SystemPhysical.PROCS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROCS_PATH() throws Exception {
- execute(" select PATH from SystemPhysical.PROCS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROCS_PROC_TYPE() throws Exception {
- execute(" select PROC_TYPE from SystemPhysical.PROCS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROCS_RESULT_SET_UUID() throws Exception {
- execute(" select RESULT_SET_UUID from SystemPhysical.PROCS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROCS_UUID() throws Exception {
- execute(" select UUID from SystemPhysical.PROCS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_PARAMS_DATATYPE_UUID() throws Exception {
- execute(" select DATATYPE_UUID from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_PARAMS_DIRECTION() throws Exception {
- execute(" select DIRECTION from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_PARAMS_FULLNAME() throws Exception {
- execute(" select FULLNAME from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_PARAMS_IS_OPTIONAL() throws Exception {
- execute(" select IS_OPTIONAL from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_PARAMS_LENGTH() throws Exception {
- execute(" select LENGTH from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_PARAMS_MODEL_NAME() throws Exception {
- execute(" select MODEL_NAME from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_PARAMS_NAME_IN_SOURCE() throws Exception {
- execute(" select NAME_IN_SOURCE from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_PARAMS_NAME() throws Exception {
- execute(" select NAME from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_PARAMS_NULL_TYPE() throws Exception {
- execute(" select NULL_TYPE from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_PARAMS_OBJECT_TYPE() throws Exception {
- execute(" select OBJECT_TYPE from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_PARAMS_PATH() throws Exception {
- execute(" select PATH from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_PARAMS_POSITION() throws Exception {
- execute(" select POSITION from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_PARAMS_PRECISION() throws Exception {
- execute(" select PRECISION from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_PARAMS_PROC_NAME() throws Exception {
- execute(" select PROC_NAME from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_PARAMS_PROC_UUID() throws Exception {
- execute(" select PROC_UUID from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_PARAMS_RADIX() throws Exception {
- execute(" select RADIX from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_PARAMS_RUNTIME_TYPE_NAME() throws Exception {
- execute(" select RUNTIME_TYPE_NAME from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_PARAMS_SCALE() throws Exception {
- execute(" select SCALE from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_PARAMS_UUID() throws Exception {
- execute(" select UUID from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_PARAM_TYPE_ENUM_CODE() throws Exception {
- execute(" select CODE from SystemPhysical.PROC_PARAM_TYPE_ENUM"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_PARAM_TYPE_ENUM_NAME() throws Exception {
- execute(" select NAME from SystemPhysical.PROC_PARAM_TYPE_ENUM"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_RESULT_SETS_FULLNAME() throws Exception {
- execute(" select FULLNAME from SystemPhysical.PROC_RESULT_SETS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_RESULT_SETS_MODEL_NAME() throws Exception {
- execute(" select MODEL_NAME from SystemPhysical.PROC_RESULT_SETS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_RESULT_SETS_NAME_IN_SOURCE() throws Exception {
- execute(" select NAME_IN_SOURCE from SystemPhysical.PROC_RESULT_SETS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_RESULT_SETS_NAME() throws Exception {
- execute(" select NAME from SystemPhysical.PROC_RESULT_SETS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_RESULT_SETS_OBJECT_TYPE() throws Exception {
- execute(" select OBJECT_TYPE from SystemPhysical.PROC_RESULT_SETS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_RESULT_SETS_PATH() throws Exception {
- execute(" select PATH from SystemPhysical.PROC_RESULT_SETS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_RESULT_SETS_PROC_NAME() throws Exception {
- execute(" select PROC_NAME from SystemPhysical.PROC_RESULT_SETS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_RESULT_SETS_PROC_UUID() throws Exception {
- execute(" select PROC_UUID from SystemPhysical.PROC_RESULT_SETS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_RESULT_SETS_UUID() throws Exception {
- execute(" select UUID from SystemPhysical.PROC_RESULT_SETS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_TRANS_OBJECT_TYPE() throws Exception {
- execute(" select OBJECT_TYPE from SystemPhysical.PROC_TRANS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_TRANS_TRANSFORMATION() throws Exception {
- execute(" select TRANSFORMATION from SystemPhysical.PROC_TRANS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_TRANS_TRANSFORMED_PATH() throws Exception {
- execute(" select TRANSFORMED_PATH from SystemPhysical.PROC_TRANS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_TRANS_TRANSFORMED_UUID() throws Exception {
- execute(" select TRANSFORMED_UUID from SystemPhysical.PROC_TRANS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_TYPE_ENUM_CODE() throws Exception {
- execute(" select CODE from SystemPhysical.PROC_TYPE_ENUM"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROC_TYPE_ENUM_NAME() throws Exception {
- execute(" select NAME from SystemPhysical.PROC_TYPE_ENUM"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROPERTIES_PROPERTIED_UUID() throws Exception {
- execute(" select PROPERTIED_UUID from SystemPhysical.PROPERTIES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROPERTIES_PROP_NAME() throws Exception {
- execute(" select PROP_NAME from SystemPhysical.PROPERTIES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_PROPERTIES_PROP_VALUE() throws Exception {
- execute(" select PROP_VALUE from SystemPhysical.PROPERTIES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_SEARCH_TYPE_ENUM_CODE() throws Exception {
- execute(" select CODE from SystemPhysical.SEARCH_TYPE_ENUM"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_SEARCH_TYPE_ENUM_NAME() throws Exception {
- execute(" select NAME from SystemPhysical.SEARCH_TYPE_ENUM"); //$NON-NLS-1$
- }
-
- @Test public void test_SystemPhysical_SELECT_TRANS_OBJECT_TYPE() throws Exception {
- execute("select OBJECT_TYPE from SystemPhysical.SELECT_TRANS"); //$NON-NLS-1$
- }
-
- @Test public void test_SystemPhysical_SELECT_TRANS_TRANSFORMATION() throws Exception {
- execute("select TRANSFORMATION from SystemPhysical.SELECT_TRANS"); //$NON-NLS-1$
- }
-
- @Test public void test_SystemPhysical_SELECT_TRANS_TRANSFORMED_PATH() throws Exception {
- execute("select TRANSFORMED_PATH from SystemPhysical.SELECT_TRANS"); //$NON-NLS-1$
- }
-
- @Test public void test_SystemPhysical_SELECT_TRANS_TRANSFORMED_UUID() throws Exception {
- execute("select TRANSFORMED_UUID from SystemPhysical.SELECT_TRANS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_TABLES_CARDINALITY() throws Exception {
- execute(" select CARDINALITY from SystemPhysical.TABLES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_TABLES_FULLNAME() throws Exception {
- execute(" select FULLNAME from SystemPhysical.TABLES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_TABLES_IS_PHYSICAL() throws Exception {
- execute(" select IS_PHYSICAL from SystemPhysical.TABLES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_TABLES_IS_SYSTEM() throws Exception {
- execute(" select IS_SYSTEM from SystemPhysical.TABLES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_TABLES_IS_VIRTUAL() throws Exception {
- execute(" select IS_VIRTUAL from SystemPhysical.TABLES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_TABLES_MODEL_NAME() throws Exception {
- execute(" select MODEL_NAME from SystemPhysical.TABLES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_TABLES_NAME_IN_SOURCE() throws Exception {
- execute(" select NAME_IN_SOURCE from SystemPhysical.TABLES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_TABLES_NAME() throws Exception {
- execute(" select NAME from SystemPhysical.TABLES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_TABLES_OBJECT_TYPE() throws Exception {
- execute(" select OBJECT_TYPE from SystemPhysical.TABLES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_TABLES_PATH() throws Exception {
- execute(" select PATH from SystemPhysical.TABLES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_TABLES_SUPPORTS_UPDATE() throws Exception {
- execute(" select SUPPORTS_UPDATE from SystemPhysical.TABLES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_TABLES_TABLE_TYPE() throws Exception {
- execute("select TABLE_TYPE from SystemPhysical.TABLES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_TABLES_UUID() throws Exception {
- execute(" select UUID from SystemPhysical.TABLES"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_TABLE_TYPE_ENUM_CODE() throws Exception {
- execute(" select CODE from SystemPhysical.TABLE_TYPE_ENUM"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_TABLE_TYPE_ENUM_NAME() throws Exception {
- execute(" select NAME from SystemPhysical.TABLE_TYPE_ENUM"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_UNIQUE_KEYS_FULLNAME() throws Exception {
- execute(" select FULLNAME from SystemPhysical.UNIQUE_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_UNIQUE_KEYS_MODEL_NAME() throws Exception {
- execute(" select MODEL_NAME from SystemPhysical.UNIQUE_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_UNIQUE_KEYS_NAME_IN_SOURCE() throws Exception {
- execute(" select NAME_IN_SOURCE from SystemPhysical.UNIQUE_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_UNIQUE_KEYS_NAME() throws Exception {
- execute(" select NAME from SystemPhysical.UNIQUE_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_UNIQUE_KEYS_OBJECT_TYPE() throws Exception {
- execute(" select OBJECT_TYPE from SystemPhysical.UNIQUE_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_UNIQUE_KEYS_PATH() throws Exception {
- execute(" select PATH from SystemPhysical.UNIQUE_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_UNIQUE_KEYS_TABLE_NAME() throws Exception {
- execute(" select TABLE_NAME from SystemPhysical.UNIQUE_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_UNIQUE_KEYS_UUID_OF_TABLE() throws Exception {
- execute(" select UUID_OF_TABLE from SystemPhysical.UNIQUE_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_UNIQUE_KEYS_UUID() throws Exception {
- execute(" select UUID from SystemPhysical.UNIQUE_KEYS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_UPDATE_TRANS_OBJECT_TYPE() throws Exception {
- execute(" select OBJECT_TYPE from SystemPhysical.UPDATE_TRANS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_UPDATE_TRANS_TRANSFORMATION() throws Exception {
- execute(" select TRANSFORMATION from SystemPhysical.UPDATE_TRANS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_UPDATE_TRANS_TRANSFORMED_PATH() throws Exception {
- execute(" select TRANSFORMED_PATH from SystemPhysical.UPDATE_TRANS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_UPDATE_TRANS_TRANSFORMED_UUID() throws Exception {
- execute(" select TRANSFORMED_UUID from SystemPhysical.UPDATE_TRANS"); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_VDB_INFO_NAME() throws Exception {
- String[] expected = {
- "testName" //$NON-NLS-1$
- };
- execute(" select NAME from SystemPhysical.VDB_INFO", expected); //$NON-NLS-1$
- }
-
- @Test public void testSystemPhysical_VDB_INFO_VERSION() throws Exception {
- String[] expected = {
- "testVersion" //$NON-NLS-1$
- };
- execute("select VERSION from SystemPhysical.VDB_INFO", expected); //$NON-NLS-1$
- }
-
- public void testRepeatedQueries() throws Exception {
- execute(" select parent_name, name as n from columns order by n"); //$NON-NLS-1$
- execute(" select parent_name, name as n from columns order by n"); //$NON-NLS-1$
- execute(" select parent_name, name as n from columns order by n"); //$NON-NLS-1$
- execute(" select parent_name, name as n from columns order by n"); //$NON-NLS-1$
- execute(" select parent_name, name as n from columns order by n"); //$NON-NLS-1$
- execute(" select parent_name, name as n from columns order by n"); //$NON-NLS-1$
- execute(" select parent_name, name as n from columns order by n"); //$NON-NLS-1$
- execute(" select parent_name, name as n from columns order by n"); //$NON-NLS-1$
- execute(" select parent_name, name as n from columns order by n"); //$NON-NLS-1$
- execute(" select parent_name, name as n from columns order by n"); //$NON-NLS-1$
- }}
Deleted: branches/JCA/test-integration/common/src/test/java/com/metamatrix/systemmodel/TestSystemPhysicalModelSelf.java
===================================================================
--- branches/JCA/test-integration/common/src/test/java/com/metamatrix/systemmodel/TestSystemPhysicalModelSelf.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/java/com/metamatrix/systemmodel/TestSystemPhysicalModelSelf.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,1055 +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 com.metamatrix.systemmodel;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.teiid.metadata.index.VDBMetadataFactory;
-
-import junit.extensions.TestSetup;
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-import com.metamatrix.cdk.IConnectorHost;
-import com.metamatrix.cdk.api.ConnectorHost;
-import com.metamatrix.cdk.api.TranslationUtility;
-import com.metamatrix.connector.metadata.IndexConnector;
-import com.metamatrix.dqp.service.DQPServiceNames;
-import com.metamatrix.metadata.runtime.FakeMetadataService;
-
-public class TestSystemPhysicalModelSelf extends TestCase {
-
- static FakeMetadataService metadataService = null;
- static IConnectorHost host = null;
-
- static IConnectorHost loadConnectorHost() throws Exception {
- TranslationUtility utility = new TranslationUtility(VDBMetadataFactory.getVDBMetadata(Thread.currentThread().getContextClassLoader().getResource("System.vdb"))); //$NON-NLS-1$
- ConnectorHost host = new ConnectorHost(new IndexConnector(), null, utility);
-
- metadataService = new FakeMetadataService(Thread.currentThread().getContextClassLoader().getResource("System.vdb")); //$NON-NLS-1$
- host.addResourceToConnectorEnvironment(DQPServiceNames.METADATA_SERVICE, metadataService);
- host.setSecurityContext("System", "1", "testUser", null); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- return host;
- }
-
- static void oneTimeTearDown() throws Exception {
- if (metadataService != null) {
- metadataService.clear();
- }
- }
-
- static void oneTimeSetUp() throws Exception {
- host = loadConnectorHost();
- }
-
- public static Test suite() {
- TestSuite suite = new TestSuite();
- suite.addTestSuite(TestSystemPhysicalModelSelf.class);
- return createOnceRunSuite(suite);
- }
-
- public static TestSetup createOnceRunSuite(TestSuite suite) {
- TestSetup wrapper = new TestSetup(suite) {
- @Override
- protected void setUp() throws Exception {
- oneTimeSetUp();
- }
- @Override
- protected void tearDown() throws Exception {
- oneTimeTearDown();
- }
- };
- return wrapper;
- }
-
- private void execute(String query) throws Exception {
- execute(query, null);
- }
-
- private void execute(String query, String[] expected) throws Exception {
- List<ArrayList<String>> results = host.executeCommand(query);
- if (expected != null) {
- //assertEquals("number results does not match", results.size(),expected.length);
- int i = 0;
- for (ArrayList<String> result : results) {
- String resultStr = concat(result);
- assertEquals(expected[i++], resultStr);
- }
- }
- }
-
- private String concat(ArrayList<String> list) {
- StringBuilder sb = new StringBuilder();
- for(String msg:list) {
- sb.append(msg);
- }
- return sb.toString();
- }
-
- public void testSystemPhysical_ACCESS_PATTERNS_FULLNAME() throws Exception {
- execute("select FULLNAME from SystemPhysical.ACCESS_PATTERNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_ACCESS_PATTERNS_MODEL_NAME()
- throws Exception {
- execute("select MODEL_NAME from SystemPhysical.ACCESS_PATTERNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_ACCESS_PATTERNS_NAME_IN_SOURCE()
- throws Exception {
- execute("select NAME_IN_SOURCE from SystemPhysical.ACCESS_PATTERNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_ACCESS_PATTERNS_NAME() throws Exception {
- execute("select NAME from SystemPhysical.ACCESS_PATTERNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_ACCESS_PATTERNS_OBJECT_TYPE()
- throws Exception {
- execute("select OBJECT_TYPE from SystemPhysical.ACCESS_PATTERNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_ACCESS_PATTERNS_PATH() throws Exception {
- execute("select PATH from SystemPhysical.ACCESS_PATTERNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_ACCESS_PATTERNS_TABLE_NAME()
- throws Exception {
- execute("select TABLE_NAME from SystemPhysical.ACCESS_PATTERNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_ACCESS_PATTERNS_UUID_OF_TABLE()
- throws Exception {
- execute("select UUID_OF_TABLE from SystemPhysical.ACCESS_PATTERNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_ACCESS_PATTERNS_UUID() throws Exception {
- execute("select UUID from SystemPhysical.ACCESS_PATTERNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_ALL_KEYS_FULLNAME() throws Exception {
- execute("select FULLNAME from SystemPhysical.ALL_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_ALL_KEYS_KEY_TYPE() throws Exception {
- execute("select KEY_TYPE from SystemPhysical.ALL_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_ALL_KEYS_MODEL_NAME() throws Exception {
- execute("select MODEL_NAME from SystemPhysical.ALL_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_ALL_KEYS_NAME_IN_SOURCE() throws Exception {
- execute("select NAME_IN_SOURCE from SystemPhysical.ALL_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_ALL_KEYS_NAME() throws Exception {
- execute("select NAME from SystemPhysical.ALL_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_ALL_KEYS_OBJECT_TYPE() throws Exception {
- execute("select OBJECT_TYPE from SystemPhysical.ALL_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_ALL_KEYS_PATH() throws Exception {
- execute("select PATH from SystemPhysical.ALL_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_ALL_KEYS_TABLE_NAME() throws Exception {
- execute("select TABLE_NAME from SystemPhysical.ALL_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_ALL_KEYS_UUID_OF_TABLE() throws Exception {
- execute("select UUID_OF_TABLE from SystemPhysical.ALL_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_ALL_KEYS_UUID() throws Exception {
- execute("select UUID from SystemPhysical.ALL_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_ANNOTATIONS_ANNOTATED_UUID()
- throws Exception {
- execute("select ANNOTATED_UUID from SystemPhysical.ANNOTATIONS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_ANNOTATIONS_DESCRIPTION() throws Exception {
- execute("select DESCRIPTION from SystemPhysical.ANNOTATIONS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_COLUMNS_CHAR_OCTET_LENGTH() throws Exception {
- execute("select CHAR_OCTET_LENGTH from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_COLUMNS_DATATYPE_UUID() throws Exception {
- execute("select DATATYPE_UUID from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_COLUMNS_DEFAULT_VALUE() throws Exception {
- execute("select DEFAULT_VALUE from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_COLUMNS_FORMAT() throws Exception {
- execute("select FORMAT from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_COLUMNS_FULLNAME() throws Exception {
- execute("select FULLNAME from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_COLUMNS_IS_AUTO_INCREMENTED()
- throws Exception {
- execute("select IS_AUTO_INCREMENTED from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_COLUMNS_IS_CASE_SENSITIVE() throws Exception {
- execute("select IS_CASE_SENSITIVE from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_COLUMNS_IS_CURRENCY() throws Exception {
- execute("select IS_CURRENCY from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_COLUMNS_IS_LENGTH_FIXED() throws Exception {
- execute("select IS_LENGTH_FIXED from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- public void test_SystemPhysical_COLUMNS_IS_SELECTABLE() throws Exception {
- execute("select IS_SELECTABLE from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_COLUMNS_IS_SIGNED() throws Exception {
- execute("select IS_SIGNED from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_COLUMNS_LENGTH() throws Exception {
- execute("select LENGTH from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_COLUMNS_MAX_VALUE() throws Exception {
- execute("select MAX_VALUE from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_COLUMNS_MIN_VALUE() throws Exception {
- execute("select MIN_VALUE from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_COLUMNS_MODEL_NAME() throws Exception {
- execute("select MODEL_NAME from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_COLUMNS_NAME_IN_SOURCE() throws Exception {
- execute("select NAME_IN_SOURCE from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_COLUMNS_NAME() throws Exception {
- execute("select NAME from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_COLUMNS_NULL_TYPE() throws Exception {
- execute("select NULL_TYPE from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_COLUMNS_OBJECT_TYPE() throws Exception {
- execute("select OBJECT_TYPE from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_COLUMNS_PARENT_NAME() throws Exception {
- execute("select PARENT_NAME from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_COLUMNS_PARENT_PATH() throws Exception {
- execute("select PARENT_PATH from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_COLUMNS_PARENT_UUID() throws Exception {
- execute("select PARENT_UUID from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_COLUMNS_PATH() throws Exception {
- execute("select PATH from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_COLUMNS_POSITION() throws Exception {
- execute("select POSITION from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_COLUMNS_PRECISION() throws Exception {
- execute("select PRECISION from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_COLUMNS_RADIX() throws Exception {
- execute("select RADIX from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_COLUMNS_RUNTIME_TYPE_NAME() throws Exception {
- execute("select RUNTIME_TYPE_NAME from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_COLUMNS_SCALE() throws Exception {
- execute("select SCALE from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_COLUMNS_SEARCH_TYPE() throws Exception {
- execute("select SEARCH_TYPE from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_COLUMNS_SUPPORTS_UPDATES() throws Exception {
- execute("select SUPPORTS_UPDATES from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_COLUMNS_UUID() throws Exception {
- execute("select UUID from SystemPhysical.COLUMNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_DATATYPES_BASETYPE_NAME() throws Exception {
- execute("select BASETYPE_NAME from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_DATATYPES_BASETYPE_URL() throws Exception {
- execute("select BASETYPE_URL from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_DATATYPES_FULLNAME() throws Exception {
- execute("select FULLNAME from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_DATATYPES_IS_AUTO_INCREMENTED()
- throws Exception {
- execute("select IS_AUTO_INCREMENTED from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_DATATYPES_IS_BUILTIN() throws Exception {
- execute("select IS_BUILTIN from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_DATATYPES_IS_CASE_SENSITIVE()
- throws Exception {
- execute("select IS_CASE_SENSITIVE from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_DATATYPES_IS_SIGNED() throws Exception {
- execute("select IS_SIGNED from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_DATATYPES_JAVA_CLASS_NAME() throws Exception {
- execute("select JAVA_CLASS_NAME from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_DATATYPES_LENGTH() throws Exception {
- execute("select LENGTH from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_DATATYPES_MODEL_NAME() throws Exception {
- execute("select MODEL_NAME from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_DATATYPES_NAME_IN_SOURCE() throws Exception {
- execute("select NAME_IN_SOURCE from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_DATATYPES_NAME() throws Exception {
- execute("select NAME from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_DATATYPES_NULL_TYPE() throws Exception {
- execute("select NULL_TYPE from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_DATATYPES_OBJECT_TYPE() throws Exception {
- execute("select OBJECT_TYPE from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_DATATYPES_PATH() throws Exception {
- execute("select PATH from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_DATATYPES_PRECISION() throws Exception {
- execute("select PRECISION from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_DATATYPES_RADIX() throws Exception {
- execute("select RADIX from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_DATATYPES_RUNTIME_TYPE_NAME()
- throws Exception {
- execute("select RUNTIME_TYPE_NAME from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_DATATYPES_SCALE() throws Exception {
- execute("select SCALE from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_DATATYPES_SEARCH_TYPE() throws Exception {
- execute("select SEARCH_TYPE from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_DATATYPES_TYPE() throws Exception {
- execute("select TYPE from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_DATATYPES_URL() throws Exception {
- execute("select URL from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_DATATYPES_UUID() throws Exception {
- execute("select UUID from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_DATATYPES_VARIETY() throws Exception {
- execute("select VARIETY from SystemPhysical.DATATYPES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_DATATYPE_TYPE_ENUM_CODE() throws Exception {
- execute("select CODE from SystemPhysical.DATATYPE_TYPE_ENUM"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_DATATYPE_TYPE_ENUM_NAME() throws Exception {
- execute("select NAME from SystemPhysical.DATATYPE_TYPE_ENUM"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_DATATYPE_VARIETY_ENUM_CODE()
- throws Exception {
- execute("select CODE from SystemPhysical.DATATYPE_VARIETY_ENUM"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_DATATYPE_VARIETY_ENUM_NAME()
- throws Exception {
- execute("select NAME from SystemPhysical.DATATYPE_VARIETY_ENUM"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_DELETE_TRANS_OBJECT_TYPE() throws Exception {
- execute("select OBJECT_TYPE from SystemPhysical.DELETE_TRANS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_DELETE_TRANS_TRANSFORMATION()
- throws Exception {
- execute("select TRANSFORMATION from SystemPhysical.DELETE_TRANS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_DELETE_TRANS_TRANSFORMED_PATH()
- throws Exception {
- execute("select TRANSFORMED_PATH from SystemPhysical.DELETE_TRANS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_DELETE_TRANS_TRANSFORMED_UUID()
- throws Exception {
- execute("select TRANSFORMED_UUID from SystemPhysical.DELETE_TRANS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_FOREIGN_KEYS_FULLNAME() throws Exception {
- execute("select FULLNAME from SystemPhysical.FOREIGN_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_FOREIGN_KEYS_MODEL_NAME() throws Exception {
- execute("select MODEL_NAME from SystemPhysical.FOREIGN_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_FOREIGN_KEYS_NAME_IN_SOURCE()
- throws Exception {
- execute("select NAME_IN_SOURCE from SystemPhysical.FOREIGN_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_FOREIGN_KEYS_NAME() throws Exception {
- execute("select NAME from SystemPhysical.FOREIGN_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_FOREIGN_KEYS_OBJECT_TYPE() throws Exception {
- execute("select OBJECT_TYPE from SystemPhysical.FOREIGN_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_FOREIGN_KEYS_PATH() throws Exception {
- execute("select PATH from SystemPhysical.FOREIGN_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_FOREIGN_KEYS_TABLE_NAME() throws Exception {
- execute("select TABLE_NAME from SystemPhysical.FOREIGN_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_FOREIGN_KEYS_UUID_OF_PRIMARY_KEY()
- throws Exception {
- execute("select UUID_OF_PRIMARY_KEY from SystemPhysical.FOREIGN_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_FOREIGN_KEYS_UUID_OF_TABLE()
- throws Exception {
- execute("select UUID_OF_TABLE from SystemPhysical.FOREIGN_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_FOREIGN_KEYS_UUID() throws Exception {
- execute("select UUID from SystemPhysical.FOREIGN_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_INDEXES_FULLNAME() throws Exception {
- execute("select FULLNAME from SystemPhysical.INDEXES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_INDEXES_MODEL_NAME() throws Exception {
- execute("select MODEL_NAME from SystemPhysical.INDEXES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_INDEXES_NAME_IN_SOURCE() throws Exception {
- execute("select NAME_IN_SOURCE from SystemPhysical.INDEXES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_INDEXES_NAME() throws Exception {
- execute("select NAME from SystemPhysical.INDEXES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_INDEXES_OBJECT_TYPE() throws Exception {
- execute("select OBJECT_TYPE from SystemPhysical.INDEXES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_INDEXES_PATH() throws Exception {
- execute("select PATH from SystemPhysical.INDEXES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_INDEXES_TABLE_NAME() throws Exception {
- execute("select TABLE_NAME from SystemPhysical.INDEXES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_INDEXES_UUID() throws Exception {
- execute("select UUID from SystemPhysical.INDEXES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_INSERT_TRANS_OBJECT_TYPE() throws Exception {
- execute("select OBJECT_TYPE from SystemPhysical.INSERT_TRANS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_INSERT_TRANS_TRANSFORMATION()
- throws Exception {
- execute("select TRANSFORMATION from SystemPhysical.INSERT_TRANS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_INSERT_TRANS_TRANSFORMED_PATH()
- throws Exception {
- execute("select TRANSFORMED_PATH from SystemPhysical.INSERT_TRANS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_INSERT_TRANS_TRANSFORMED_UUID()
- throws Exception {
- execute("select TRANSFORMED_UUID from SystemPhysical.INSERT_TRANS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_KEY_COLUMNS_COLUMN_UUID() throws Exception {
- execute("select COLUMN_UUID from SystemPhysical.KEY_COLUMNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_KEY_COLUMNS_KEY_TYPE() throws Exception {
- execute("select KEY_TYPE from SystemPhysical.KEY_COLUMNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_KEY_COLUMNS_KEY_UUID() throws Exception {
- execute("select KEY_UUID from SystemPhysical.KEY_COLUMNS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_KEY_TYPE_ENUM_CODE() throws Exception {
- execute("select CODE from SystemPhysical.KEY_TYPE_ENUM"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_KEY_TYPE_ENUM_NAME() throws Exception {
- execute("select NAME from SystemPhysical.KEY_TYPE_ENUM"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_MODELS_IS_PHYSICAL() throws Exception {
- execute("select IS_PHYSICAL from SystemPhysical.MODELS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_MODELS_IS_VISIBLE() throws Exception {
- execute("select IS_VISIBLE from SystemPhysical.MODELS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_MODELS_MAX_SET_SIZE() throws Exception {
- execute("select MAX_SET_SIZE from SystemPhysical.MODELS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_MODELS_MODEL_TYPE() throws Exception {
- execute("select MODEL_TYPE from SystemPhysical.MODELS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_MODELS_NAME_IN_SOURCE() throws Exception {
- execute("select NAME_IN_SOURCE from SystemPhysical.MODELS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_MODELS_NAME() throws Exception {
- execute("select NAME from SystemPhysical.MODELS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_MODELS_OBJECT_TYPE() throws Exception {
- execute("select OBJECT_TYPE from SystemPhysical.MODELS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_MODELS_SUPPORTS_DISTINCT() throws Exception {
- execute("select SUPPORTS_DISTINCT from SystemPhysical.MODELS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_MODELS_SUPPORTS_JOIN() throws Exception {
- execute("select SUPPORTS_JOIN from SystemPhysical.MODELS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_MODELS_SUPPORTS_ORDER_BY() throws Exception {
- execute("select SUPPORTS_ORDER_BY from SystemPhysical.MODELS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_MODELS_SUPPORTS_OUTER_JOIN()
- throws Exception {
- execute("select SUPPORTS_OUTER_JOIN from SystemPhysical.MODELS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_MODELS_SUPPORTS_WHERE_ALL() throws Exception {
- execute("select SUPPORTS_WHERE_ALL from SystemPhysical.MODELS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_MODELS_UUID() throws Exception {
- execute("select UUID from SystemPhysical.MODELS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_MODEL_TYPE_ENUM_CODE() throws Exception {
- execute("select CODE from SystemPhysical.MODEL_TYPE_ENUM"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_MODEL_TYPE_ENUM_NAME() throws Exception {
- execute("select NAME from SystemPhysical.MODEL_TYPE_ENUM"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_NULL_TYPE_ENUM_CODE() throws Exception {
- execute("select CODE from SystemPhysical.NULL_TYPE_ENUM"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_NULL_TYPE_ENUM_NAME() throws Exception {
- execute("select NAME from SystemPhysical.NULL_TYPE_ENUM"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PRIMARY_KEYS_FULLNAME() throws Exception {
- execute("select FULLNAME from SystemPhysical.PRIMARY_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PRIMARY_KEYS_MODEL_NAME() throws Exception {
- execute("select MODEL_NAME from SystemPhysical.PRIMARY_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PRIMARY_KEYS_NAME_IN_SOURCE()
- throws Exception {
- execute("select NAME_IN_SOURCE from SystemPhysical.PRIMARY_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PRIMARY_KEYS_NAME() throws Exception {
- execute("select NAME from SystemPhysical.PRIMARY_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PRIMARY_KEYS_OBJECT_TYPE() throws Exception {
- execute("select OBJECT_TYPE from SystemPhysical.PRIMARY_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PRIMARY_KEYS_PATH() throws Exception {
- execute("select PATH from SystemPhysical.PRIMARY_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PRIMARY_KEYS_TABLE_NAME() throws Exception {
- execute("select TABLE_NAME from SystemPhysical.PRIMARY_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PRIMARY_KEYS_UUID_OF_TABLE()
- throws Exception {
- execute("select UUID_OF_TABLE from SystemPhysical.PRIMARY_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PRIMARY_KEYS_UUID() throws Exception {
- execute("select UUID from SystemPhysical.PRIMARY_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROCS_FULLNAME() throws Exception {
- execute("select FULLNAME from SystemPhysical.PROCS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROCS_FUNCTION() throws Exception {
- execute("select FUNCTION from SystemPhysical.PROCS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROCS_MODEL_NAME() throws Exception {
- execute("select MODEL_NAME from SystemPhysical.PROCS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROCS_NAME_IN_SOURCE() throws Exception {
- execute("select NAME_IN_SOURCE from SystemPhysical.PROCS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROCS_NAME() throws Exception {
- execute("select NAME from SystemPhysical.PROCS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROCS_OBJECT_TYPE() throws Exception {
- execute("select OBJECT_TYPE from SystemPhysical.PROCS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROCS_PATH() throws Exception {
- execute("select PATH from SystemPhysical.PROCS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROCS_PROC_TYPE() throws Exception {
- execute("select PROC_TYPE from SystemPhysical.PROCS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROCS_RESULT_SET_UUID() throws Exception {
- execute("select RESULT_SET_UUID from SystemPhysical.PROCS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROCS_UUID() throws Exception {
- execute("select UUID from SystemPhysical.PROCS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_PARAMS_DATATYPE_UUID() throws Exception {
- execute("select DATATYPE_UUID from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_PARAMS_DIRECTION() throws Exception {
- execute("select DIRECTION from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_PARAMS_FULLNAME() throws Exception {
- execute("select FULLNAME from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_PARAMS_IS_OPTIONAL() throws Exception {
- execute("select IS_OPTIONAL from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_PARAMS_LENGTH() throws Exception {
- execute("select LENGTH from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_PARAMS_MODEL_NAME() throws Exception {
- execute("select MODEL_NAME from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_PARAMS_NAME_IN_SOURCE()
- throws Exception {
- execute("select NAME_IN_SOURCE from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_PARAMS_NAME() throws Exception {
- execute("select NAME from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_PARAMS_NULL_TYPE() throws Exception {
- execute("select NULL_TYPE from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_PARAMS_OBJECT_TYPE() throws Exception {
- execute("select OBJECT_TYPE from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_PARAMS_PATH() throws Exception {
- execute("select PATH from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_PARAMS_POSITION() throws Exception {
- execute("select POSITION from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_PARAMS_PRECISION() throws Exception {
- execute("select PRECISION from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_PARAMS_PROC_NAME() throws Exception {
- execute("select PROC_NAME from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_PARAMS_PROC_UUID() throws Exception {
- execute("select PROC_UUID from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_PARAMS_RADIX() throws Exception {
- execute("select RADIX from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_PARAMS_RUNTIME_TYPE_NAME()
- throws Exception {
- execute("select RUNTIME_TYPE_NAME from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_PARAMS_SCALE() throws Exception {
- execute("select SCALE from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_PARAMS_UUID() throws Exception {
- execute("select UUID from SystemPhysical.PROC_PARAMS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_PARAM_TYPE_ENUM_CODE() throws Exception {
- execute("select CODE from SystemPhysical.PROC_PARAM_TYPE_ENUM"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_PARAM_TYPE_ENUM_NAME() throws Exception {
- execute("select NAME from SystemPhysical.PROC_PARAM_TYPE_ENUM"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_RESULT_SETS_FULLNAME() throws Exception {
- execute("select FULLNAME from SystemPhysical.PROC_RESULT_SETS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_RESULT_SETS_MODEL_NAME()
- throws Exception {
- execute("select MODEL_NAME from SystemPhysical.PROC_RESULT_SETS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_RESULT_SETS_NAME_IN_SOURCE()
- throws Exception {
- execute("select NAME_IN_SOURCE from SystemPhysical.PROC_RESULT_SETS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_RESULT_SETS_NAME() throws Exception {
- execute("select NAME from SystemPhysical.PROC_RESULT_SETS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_RESULT_SETS_OBJECT_TYPE()
- throws Exception {
- execute("select OBJECT_TYPE from SystemPhysical.PROC_RESULT_SETS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_RESULT_SETS_PATH() throws Exception {
- execute("select PATH from SystemPhysical.PROC_RESULT_SETS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_RESULT_SETS_PROC_NAME()
- throws Exception {
- execute("select PROC_NAME from SystemPhysical.PROC_RESULT_SETS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_RESULT_SETS_PROC_UUID()
- throws Exception {
- execute("select PROC_UUID from SystemPhysical.PROC_RESULT_SETS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_RESULT_SETS_UUID() throws Exception {
- execute("select UUID from SystemPhysical.PROC_RESULT_SETS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_TRANS_OBJECT_TYPE() throws Exception {
- execute("select OBJECT_TYPE from SystemPhysical.PROC_TRANS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_TRANS_TRANSFORMATION() throws Exception {
- execute("select TRANSFORMATION from SystemPhysical.PROC_TRANS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_TRANS_TRANSFORMED_PATH()
- throws Exception {
- execute("select TRANSFORMED_PATH from SystemPhysical.PROC_TRANS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_TRANS_TRANSFORMED_UUID()
- throws Exception {
- execute("select TRANSFORMED_UUID from SystemPhysical.PROC_TRANS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_TYPE_ENUM_CODE() throws Exception {
- execute("select CODE from SystemPhysical.PROC_TYPE_ENUM"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROC_TYPE_ENUM_NAME() throws Exception {
- execute("select NAME from SystemPhysical.PROC_TYPE_ENUM"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROPERTIES_PROPERTIED_UUID()
- throws Exception {
- execute("select PROPERTIED_UUID from SystemPhysical.PROPERTIES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROPERTIES_PROP_NAME() throws Exception {
- execute("select PROP_NAME from SystemPhysical.PROPERTIES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_PROPERTIES_PROP_VALUE() throws Exception {
- execute("select PROP_VALUE from SystemPhysical.PROPERTIES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_SEARCH_TYPE_ENUM_CODE() throws Exception {
- execute("select CODE from SystemPhysical.SEARCH_TYPE_ENUM"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_SEARCH_TYPE_ENUM_NAME() throws Exception {
- execute("select NAME from SystemPhysical.SEARCH_TYPE_ENUM"); //$NON-NLS-1$
- }
-
- public void test_SystemPhysical_SELECT_TRANS_OBJECT_TYPE() throws Exception {
- execute("select OBJECT_TYPE from SystemPhysical.SELECT_TRANS"); //$NON-NLS-1$
- }
-
- public void test_SystemPhysical_SELECT_TRANS_TRANSFORMATION()
- throws Exception {
- execute("select TRANSFORMATION from SystemPhysical.SELECT_TRANS"); //$NON-NLS-1$
- }
-
- public void test_SystemPhysical_SELECT_TRANS_TRANSFORMED_PATH()
- throws Exception {
- execute("select TRANSFORMED_PATH from SystemPhysical.SELECT_TRANS"); //$NON-NLS-1$
- }
-
- public void test_SystemPhysical_SELECT_TRANS_TRANSFORMED_UUID()
- throws Exception {
- execute("select TRANSFORMED_UUID from SystemPhysical.SELECT_TRANS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_TABLES_CARDINALITY() throws Exception {
- execute("select CARDINALITY from SystemPhysical.TABLES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_TABLES_FULLNAME() throws Exception {
- execute("select FULLNAME from SystemPhysical.TABLES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_TABLES_IS_PHYSICAL() throws Exception {
- execute("select IS_PHYSICAL from SystemPhysical.TABLES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_TABLES_IS_SYSTEM() throws Exception {
- execute("select IS_SYSTEM from SystemPhysical.TABLES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_TABLES_IS_VIRTUAL() throws Exception {
- execute("select IS_VIRTUAL from SystemPhysical.TABLES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_TABLES_MODEL_NAME() throws Exception {
- execute("select MODEL_NAME from SystemPhysical.TABLES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_TABLES_NAME_IN_SOURCE() throws Exception {
- execute("select NAME_IN_SOURCE from SystemPhysical.TABLES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_TABLES_NAME() throws Exception {
- execute("select NAME from SystemPhysical.TABLES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_TABLES_OBJECT_TYPE() throws Exception {
- execute("select OBJECT_TYPE from SystemPhysical.TABLES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_TABLES_PATH() throws Exception {
- execute("select PATH from SystemPhysical.TABLES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_TABLES_SUPPORTS_UPDATE() throws Exception {
- execute("select SUPPORTS_UPDATE from SystemPhysical.TABLES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_TABLES_TABLE_TYPE() throws Exception {
- execute("select TABLE_TYPE from SystemPhysical.TABLES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_TABLES_UUID() throws Exception {
- execute("select UUID from SystemPhysical.TABLES"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_TABLE_TYPE_ENUM_CODE() throws Exception {
- execute("select CODE from SystemPhysical.TABLE_TYPE_ENUM"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_TABLE_TYPE_ENUM_NAME() throws Exception {
- execute("select NAME from SystemPhysical.TABLE_TYPE_ENUM"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_UNIQUE_KEYS_FULLNAME() throws Exception {
- execute("select FULLNAME from SystemPhysical.UNIQUE_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_UNIQUE_KEYS_MODEL_NAME() throws Exception {
- execute("select MODEL_NAME from SystemPhysical.UNIQUE_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_UNIQUE_KEYS_NAME_IN_SOURCE()
- throws Exception {
- execute("select NAME_IN_SOURCE from SystemPhysical.UNIQUE_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_UNIQUE_KEYS_NAME() throws Exception {
- execute("select NAME from SystemPhysical.UNIQUE_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_UNIQUE_KEYS_OBJECT_TYPE() throws Exception {
- execute("select OBJECT_TYPE from SystemPhysical.UNIQUE_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_UNIQUE_KEYS_PATH() throws Exception {
- execute("select PATH from SystemPhysical.UNIQUE_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_UNIQUE_KEYS_TABLE_NAME() throws Exception {
- execute("select TABLE_NAME from SystemPhysical.UNIQUE_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_UNIQUE_KEYS_UUID_OF_TABLE() throws Exception {
- execute("select UUID_OF_TABLE from SystemPhysical.UNIQUE_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_UNIQUE_KEYS_UUID() throws Exception {
- execute("select UUID from SystemPhysical.UNIQUE_KEYS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_UPDATE_TRANS_OBJECT_TYPE() throws Exception {
- execute("select OBJECT_TYPE from SystemPhysical.UPDATE_TRANS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_UPDATE_TRANS_TRANSFORMATION()
- throws Exception {
- execute("select TRANSFORMATION from SystemPhysical.UPDATE_TRANS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_UPDATE_TRANS_TRANSFORMED_PATH()
- throws Exception {
- execute("select TRANSFORMED_PATH from SystemPhysical.UPDATE_TRANS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_UPDATE_TRANS_TRANSFORMED_UUID()
- throws Exception {
- execute("select TRANSFORMED_UUID from SystemPhysical.UPDATE_TRANS"); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_VDB_INFO_NAME() throws Exception {
- String[] expected = { "System" }; //$NON-NLS-1$
- execute("select NAME from SystemPhysical.VDB_INFO", expected); //$NON-NLS-1$
- }
-
- public void testSystemPhysical_VDB_INFO_VERSION() throws Exception {
- String[] expected = { "1" }; //$NON-NLS-1$
- execute("select VERSION from SystemPhysical.VDB_INFO", expected); //$NON-NLS-1$
- }
-
- public void testRepeatedQueries() throws Exception {
- execute("select parent_name, name as n from columns order by n"); //$NON-NLS-1$
- execute("select parent_name, name as n from columns order by n"); //$NON-NLS-1$
- execute("select parent_name, name as n from columns order by n"); //$NON-NLS-1$
- execute("select parent_name, name as n from columns order by n"); //$NON-NLS-1$
- execute("select parent_name, name as n from columns order by n"); //$NON-NLS-1$
- execute("select parent_name, name as n from columns order by n"); //$NON-NLS-1$
- execute("select parent_name, name as n from columns order by n"); //$NON-NLS-1$
- execute("select parent_name, name as n from columns order by n"); //$NON-NLS-1$
- execute("select parent_name, name as n from columns order by n"); //$NON-NLS-1$
- execute("select parent_name, name as n from columns order by n"); //$NON-NLS-1$
- }
-
-}
Modified: branches/JCA/test-integration/common/src/test/java/com/metamatrix/systemmodel/TestSystemVirtualModel.java
===================================================================
--- branches/JCA/test-integration/common/src/test/java/com/metamatrix/systemmodel/TestSystemVirtualModel.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/java/com/metamatrix/systemmodel/TestSystemVirtualModel.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -23,6 +23,7 @@
package com.metamatrix.systemmodel;
import org.junit.Before;
+import org.junit.Ignore;
import org.junit.Test;
import com.metamatrix.core.util.UnitTestUtil;
@@ -45,6 +46,7 @@
getConnection(VDB, DQP_PROP_FILE);
}
+ @Ignore("ODBC support to be readded")
@Test public void testDefect23534() {
String[] expected = { "SCOPE[short] COLUMN_NAME[string] DATA_TYPE[short] TYPE_NAME[string] PRECISION[integer] LENGTH[integer] SCALE[integer] PSEUDO_COLUMN[short]" }; //$NON-NLS-1$
executeAndAssertResults(
@@ -58,202 +60,41 @@
"ORDER BY \"SCOPE\"", //$NON-NLS-1$
expected);
}
-
- @Test public void testModels() {
-
- String[] expected = {
- "Name[string] IsPhysical[boolean] SupportsWhereAll[boolean] SupportsOrderBy[boolean] SupportsJoin[boolean] SupportsDistinct[boolean] SupportsOuterJoin[boolean] MaxSetSize[integer] UID[string] Description[string] PrimaryMetamodelURI[string]", //$NON-NLS-1$
- "PartsSupplier true true true true true true 100 mmuuid:19c7f380-73d8-1edc-a81c-ecf397b10590 null http://www.metamatrix.com/metamodels/Relational", //$NON-NLS-1$
- "System false true true true true true 0 mmuuid:70ffc880-29d8-1de6-8a38-9d76e1f90f2e System http://www.metamatrix.com/metamodels/Relational", //$NON-NLS-1$
-
- };
- executeAndAssertResults("select* from System.Models", expected); //$NON-NLS-1$
+
+ protected void checkResult(String testName, String query) throws Exception {
+ execute(query);
+ super.checkResult(testName, this.internalResultSet, "system"); //$NON-NLS-1$
+ }
+
+ @Test public void testModels() throws Exception {
+ checkResult("testSchemas", "select* from System.Schemas"); //$NON-NLS-1$ //$NON-NLS-2$
}
- @Test public void testKeys() {
-
- String[] expected = {
- "ModelName[string] GroupFullName[string] Name[string] Description[string] NameInSource[string] Type[string] IsIndexed[boolean] GroupName[string] GroupUpperName[string] RefKeyUID[string] UID[string]", //$NON-NLS-1$
- "PartsSupplier PartsSupplier.PARTSSUPPLIER.PARTS PK_PARTS null null Primary false PARTS PARTS null mmuuid:07db4240-73ff-1edc-a81c-ecf397b10590", //$NON-NLS-1$
- "PartsSupplier PartsSupplier.PARTSSUPPLIER.SHIP_VIA PK_SHIP_VIA null null Primary false SHIP_VIA SHIP_VIA null mmuuid:18aa3cc0-73ff-1edc-a81c-ecf397b10590", //$NON-NLS-1$
- "PartsSupplier PartsSupplier.PARTSSUPPLIER.STATUS PK_STATUS null null Primary false STATUS STATUS null mmuuid:25a8a740-73ff-1edc-a81c-ecf397b10590", //$NON-NLS-1$
- "PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER PK_SUPPLIER null null Primary false SUPPLIER SUPPLIER null mmuuid:375c8380-73ff-1edc-a81c-ecf397b10590", //$NON-NLS-1$
- "PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER_PARTS PK_SUPPLIER_PARTS null null Primary false SUPPLIER_PARTS SUPPLIER_PARTS null mmuuid:455e5440-73ff-1edc-a81c-ecf397b10590", //$NON-NLS-1$
- "PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER FK_SPLIER_STATS null FK_SPLIER_STATS Foreign false SUPPLIER SUPPLIER mmuuid:25a8a740-73ff-1edc-a81c-ecf397b10590 mmuuid:5ac43c00-73ff-1edc-a81c-ecf397b10590", //$NON-NLS-1$
- "PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER_PARTS FK_SPLIER_PRTS_PRTS null FK_SPLIER_PRTS_PRTS Foreign false SUPPLIER_PARTS SUPPLIER_PARTS mmuuid:07db4240-73ff-1edc-a81c-ecf397b10590 mmuuid:66ddc4c0-73ff-1edc-a81c-ecf397b10590", //$NON-NLS-1$
- "PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER_PARTS FK_SPLY_PRTS_SPLY null FK_SPLY_PRTS_SPLY Foreign false SUPPLIER_PARTS SUPPLIER_PARTS mmuuid:375c8380-73ff-1edc-a81c-ecf397b10590 mmuuid:66ddc4c1-73ff-1edc-a81c-ecf397b10590", //$NON-NLS-1$
-
- };
- executeAndAssertResults("select* from System.Keys order by UID", //$NON-NLS-1$
- expected);
+ @Test public void testKeys() throws Exception {
+ checkResult("testKeys", "select* from System.Keys order by Name"); //$NON-NLS-1$ //$NON-NLS-2$
}
- @Test public void testGroups() {
-
- String[] expected = {
- "ModelName[string] FullName[string] Name[string] Type[string] NameInSource[string] IsPhysical[boolean] UpperName[string] SupportsUpdates[boolean] UID[string] Cardinality[integer] Description[string] IsSystem[boolean] IsMaterialized[boolean]", //$NON-NLS-1$
- "System System.Models Models Table null false MODELS false mmuuid:0193bfc0-e013-1ddf-aa2e-88f814a79e93 0 null true false", //$NON-NLS-1$
- "PartsSupplier PartsSupplier.PARTSSUPPLIER.SHIP_VIA SHIP_VIA Table SHIP_VIA true SHIP_VIA true mmuuid:0f4e9b80-73ff-1edc-a81c-ecf397b10590 4 null false false", //$NON-NLS-1$
- "System System.ModelProperties ModelProperties Table null false MODELPROPERTIES false mmuuid:135f7080-c370-1de7-b515-bad6cb0abb8d 0 null true false", //$NON-NLS-1$
- "PartsSupplier PartsSupplier.PARTSSUPPLIER.STATUS STATUS Table STATUS true STATUS true mmuuid:1f297200-73ff-1edc-a81c-ecf397b10590 3 null false false", //$NON-NLS-1$
- "PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER SUPPLIER Table SUPPLIER true SUPPLIER true mmuuid:2c371ec0-73ff-1edc-a81c-ecf397b10590 16 null false false", //$NON-NLS-1$
- "System System.ProcedureProperties ProcedureProperties Table null false PROCEDUREPROPERTIES false mmuuid:2ec88080-c5b1-1de7-b515-bad6cb0abb8d 0 null true false", //$NON-NLS-1$
- "PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER_PARTS SUPPLIER_PARTS Table SUPPLIER_PARTS true SUPPLIER_PARTS true mmuuid:3deafb00-73ff-1edc-a81c-ecf397b10590 227 null false false", //$NON-NLS-1$
- "System System.ODBC.OA_TABLES OA_TABLES Table null false OA_TABLES false mmuuid:54cbf440-2ca5-1f8d-a539-a73e664462a1 0 null true false", //$NON-NLS-1$
- "System System.ODBC.OA_COLUMNS OA_COLUMNS Table null false OA_COLUMNS false mmuuid:54cbf446-2ca5-1f8d-a539-a73e664462a1 0 null true false", //$NON-NLS-1$
- "System System.ODBC.OA_PROC OA_PROC Table null false OA_PROC false mmuuid:55b0d600-2ca5-1f8d-a539-a73e664462a1 0 null true false", //$NON-NLS-1$
- "System System.ODBC.OA_PROCCOLUMNS OA_PROCCOLUMNS Table null false OA_PROCCOLUMNS false mmuuid:56a4fa00-2ca5-1f8d-a539-a73e664462a1 0 null true false", //$NON-NLS-1$
- "System System.ODBC.OA_TYPES OA_TYPES Table null false OA_TYPES false mmuuid:57991e00-2ca5-1f8d-a539-a73e664462a1 0 null true false", //$NON-NLS-1$
- "System System.ODBC.OA_STATISTICS OA_STATISTICS Table null false OA_STATISTICS false mmuuid:57991e10-2ca5-1f8d-a539-a73e664462a1 0 null true false", //$NON-NLS-1$
- "System System.ODBC.OA_FKEYS OA_FKEYS Table null false OA_FKEYS false mmuuid:587dffc0-2ca5-1f8d-a539-a73e664462a1 0 null true false", //$NON-NLS-1$
- "System System.DataTypeElementProperties DataTypeElementProperties Table null false DATATYPEELEMENTPROPERTIES false mmuuid:64bdb6c0-c7fe-1de7-ad1c-f3ce4292824e 0 null true false", //$NON-NLS-1$
- "System System.Elements Elements Table null false ELEMENTS false mmuuid:6c04a1c0-0d14-1de0-be14-9d00a629c112 0 null true false", //$NON-NLS-1$
- "System System.VirtualDatabases VirtualDatabases Table null false VIRTUALDATABASES false mmuuid:7ce634df-2953-1de6-8a38-9d76e1f90f2e 0 null true false", //$NON-NLS-1$
- "System System.KeyProperties KeyProperties Table null false KEYPROPERTIES false mmuuid:8f87b840-10f8-1ff5-a438-98ce9bfae8da 0 null true false", //$NON-NLS-1$
- "System System.JDBC.ReferenceKeyColumns ReferenceKeyColumns Table null false REFERENCEKEYCOLUMNS false mmuuid:9d4fe980-2c99-1f8d-a539-a73e664462a1 0 null true false", //$NON-NLS-1$
- "System System.DataTypeElements DataTypeElements Table null false DATATYPEELEMENTS false mmuuid:b22df900-c6f1-1de7-b515-bad6cb0abb8d 0 null true false", //$NON-NLS-1$
- "System System.ElementProperties ElementProperties Table null false ELEMENTPROPERTIES false mmuuid:b4c43500-c514-1de7-b515-bad6cb0abb8d 0 null true false", //$NON-NLS-1$
- "System System.ProcedureParams ProcedureParams Table null false PROCEDUREPARAMS false mmuuid:b86f5f40-1107-1de0-8701-e0b030c0afb8 0 null true false", //$NON-NLS-1$
- "System System.Groups Groups Table null false GROUPS false mmuuid:c5c23382-e000-1ddf-aa2e-88f814a79e93 0 null true false", //$NON-NLS-1$
- "System System.DataTypes DataTypes Table null false DATATYPES false mmuuid:c5c23386-e000-1ddf-aa2e-88f814a79e93 0 null true false", //$NON-NLS-1$
- "System System.DataTypeProperties DataTypeProperties Table null false DATATYPEPROPERTIES false mmuuid:c68bf240-c894-1de7-ad1c-f3ce4292824e 0 null true false", //$NON-NLS-1$
- "System System.Keys Keys Table null false KEYS false mmuuid:d0e3fe00-0d1f-1de0-be14-9d00a629c112 0 null true false", //$NON-NLS-1$
- "System System.KeyElements KeyElements Table null false KEYELEMENTS false mmuuid:ee7d0140-0efb-1de0-8c1f-ee86b9bb7e7f 0 null true false", //$NON-NLS-1$
- "PartsSupplier PartsSupplier.PARTSSUPPLIER.PARTS PARTS Table PARTS true PARTS true mmuuid:f6276601-73fe-1edc-a81c-ecf397b10590 16 null false false", //$NON-NLS-1$
- "System System.GroupProperties GroupProperties Table null false GROUPPROPERTIES false mmuuid:f97f87c0-c47f-1de7-b515-bad6cb0abb8d 0 null true false", //$NON-NLS-1$
- "System System.Procedures Procedures Table null false PROCEDURES false mmuuid:fd2b3700-0f9d-1de0-8701-e0b030c0afb8 0 null true false", //$NON-NLS-1$
-
- };
- executeAndAssertResults("select* from System.Groups order by UID", //$NON-NLS-1$
- expected);
+ @Test public void testGroups() throws Exception {
+ checkResult("testTables", "select* from System.Tables order by Name"); //$NON-NLS-1$ //$NON-NLS-2$
}
- @Test public void testDataTypeElements() {
-
- String[] expected = { "DataTypeName[string] Name[string] Position[integer] Scale[integer] ElementLength[integer] UID[string]", }; //$NON-NLS-1$
- executeAndAssertResults("select* from System.DataTypeElements", //$NON-NLS-1$
- expected);
+ @Test public void testDataTypes() throws Exception {
+ checkResult("testDataTypes", "select * from System.DataTypes order by name"); //$NON-NLS-1$ //$NON-NLS-2$
}
- @Test public void testDataTypes() {
-
- String[] expected = {
- "Name[string] IsStandard[boolean] IsPhysical[boolean] TypeName[string] JavaClass[string] Scale[integer] TypeLength[integer] NullType[string] IsSigned[boolean] IsAutoIncremented[boolean] IsCaseSensitive[boolean] Precision[integer] Radix[integer] SearchType[string] UID[string] RuntimeType[string] BaseType[string] Description[string]", //$NON-NLS-1$
- "ENTITIES false false ENTITIES java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:20360100-e742-1e20-8c26-a038c6ed7576 string ENTITY null", //$NON-NLS-1$
- "ENTITY false false ENTITY java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:9fece300-e71a-1e20-8c26-a038c6ed7576 string NCName null", //$NON-NLS-1$
- "ID false false ID java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:88b13dc0-e702-1e20-8c26-a038c6ed7576 string NCName null", //$NON-NLS-1$
- "IDREF false false IDREF java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:dd33ff40-e6df-1e20-8c26-a038c6ed7576 string NCName null", //$NON-NLS-1$
- "IDREFS false false IDREFS java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:3c99f780-e72d-1e20-8c26-a038c6ed7576 string IDREF null", //$NON-NLS-1$
- "NCName false false NCName java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:ac00e000-e676-1e20-8c26-a038c6ed7576 string Name null", //$NON-NLS-1$
- "NMTOKEN false false NMTOKEN java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:4ca2ae00-3a95-1e20-921b-eeee28353879 string token null", //$NON-NLS-1$
- "NMTOKENS false false NMTOKENS java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:4b0f8500-e6a6-1e20-8c26-a038c6ed7576 string NMTOKEN null", //$NON-NLS-1$
- "NOTATION false false NOTATION java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:3dcaf900-e8dc-1e2a-b433-fb67ea35c07e string anySimpleType null", //$NON-NLS-1$
- "Name false false Name java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:e66c4600-e65b-1e20-8c26-a038c6ed7576 string token null", //$NON-NLS-1$
- "QName false false QName java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:eeb5d780-e8c3-1e2a-b433-fb67ea35c07e string anySimpleType null", //$NON-NLS-1$
- "XMLLiteral false false XMLLiteral com.metamatrix.common.types.XMLType 0 0 No Nulls false false false 0 0 Searchable mmuuid:43f5274e-55e1-1f87-ba1c-eea49143eb32 xml string null", //$NON-NLS-1$
- "anyURI false false anyURI java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:6247ec80-e8a4-1e2a-b433-fb67ea35c07e string anySimpleType null", //$NON-NLS-1$
- "base64Binary false false base64Binary java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:b4c99380-ebc6-1e2a-9319-8eaa9b2276c7 string anySimpleType null", //$NON-NLS-1$
- "bigdecimal false false bigdecimal java.math.BigDecimal 0 0 No Nulls false false false 0 0 Searchable mmuuid:f2249740-a078-1e26-9b08-d6079ebe1f0d bigdecimal decimal null", //$NON-NLS-1$
- "biginteger false false biginteger java.math.BigInteger 0 0 No Nulls false false false 0 0 Searchable mmuuid:822b9a40-a066-1e26-9b08-d6079ebe1f0d biginteger decimal null", //$NON-NLS-1$
- "blob false false blob com.metamatrix.common.types.BlobType 0 0 No Nulls false false false 0 0 Searchable mmuuid:5a793100-1836-1ed0-ba0f-f2334f5fbf95 blob base64Binary null", //$NON-NLS-1$
- "boolean false false boolean java.lang.Boolean 0 0 No Nulls false false false 0 0 Searchable mmuuid:dc476100-c483-1e24-9b01-c8207cd53eb7 boolean anySimpleType null", //$NON-NLS-1$
- "byte false false byte java.lang.Byte 0 0 No Nulls false false false 0 0 Searchable mmuuid:26dc1cc0-b9c8-1e21-b812-969c8fc8b016 byte short null", //$NON-NLS-1$
- "char false false char java.lang.Character 0 0 No Nulls false false false 0 0 Searchable mmuuid:62472700-a064-1e26-9b08-d6079ebe1f0d char string null", //$NON-NLS-1$
- "clob false false clob com.metamatrix.common.types.ClobType 0 0 No Nulls false false false 0 0 Searchable mmuuid:559646c0-4941-1ece-b22b-f49159d22ad3 clob string null", //$NON-NLS-1$
- "date false false date java.sql.Date 0 0 No Nulls false false false 0 0 Searchable mmuuid:65dcde00-c4ab-1e24-9b01-c8207cd53eb7 date anySimpleType null", //$NON-NLS-1$
- "dateTime false false dateTime java.sql.Timestamp 0 0 No Nulls false false false 0 0 Searchable mmuuid:5c69dec0-b3ea-1e2a-9a03-beb8638ffd21 timestamp anySimpleType null", //$NON-NLS-1$
- "decimal false false decimal java.math.BigDecimal 0 0 No Nulls false false false 0 0 Searchable mmuuid:569dfa00-c456-1e24-9b01-c8207cd53eb7 bigdecimal anySimpleType null", //$NON-NLS-1$
- "double false false double java.lang.Double 0 0 No Nulls false false false 0 0 Searchable mmuuid:1f18b140-c4a3-1e24-9b01-c8207cd53eb7 double anySimpleType null", //$NON-NLS-1$
- "duration false false duration java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:28d98540-b3e7-1e2a-9a03-beb8638ffd21 string anySimpleType null", //$NON-NLS-1$
- "float false false float java.lang.Float 0 0 No Nulls false false false 0 0 Searchable mmuuid:d86b0d00-c48a-1e24-9b01-c8207cd53eb7 float anySimpleType null", //$NON-NLS-1$
- "gDay false false gDay java.math.BigInteger 0 0 No Nulls false false false 0 0 Searchable mmuuid:860b7dc0-b3f8-1e2a-9a03-beb8638ffd21 biginteger anySimpleType null", //$NON-NLS-1$
- "gMonth false false gMonth java.math.BigInteger 0 0 No Nulls false false false 0 0 Searchable mmuuid:187f5580-b3fb-1e2a-9a03-beb8638ffd21 biginteger anySimpleType null", //$NON-NLS-1$
- "gMonthDay false false gMonthDay java.sql.Timestamp 0 0 No Nulls false false false 0 0 Searchable mmuuid:6e604140-b3f5-1e2a-9a03-beb8638ffd21 timestamp anySimpleType null", //$NON-NLS-1$
- "gYear false false gYear java.math.BigInteger 0 0 No Nulls false false false 0 0 Searchable mmuuid:b02c7600-b3f2-1e2a-9a03-beb8638ffd21 biginteger anySimpleType null", //$NON-NLS-1$
- "gYearMonth false false gYearMonth java.sql.Timestamp 0 0 No Nulls false false false 0 0 Searchable mmuuid:17d08040-b3ed-1e2a-9a03-beb8638ffd21 timestamp anySimpleType null", //$NON-NLS-1$
- "hexBinary false false hexBinary java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:d9998500-ebba-1e2a-9319-8eaa9b2276c7 string anySimpleType null", //$NON-NLS-1$
- "int false false int java.lang.Integer 0 0 No Nulls false false false 0 0 Searchable mmuuid:33add3c0-b98d-1e21-b812-969c8fc8b016 integer long null", //$NON-NLS-1$
- "integer false false integer java.math.BigInteger 0 0 No Nulls false false false 0 0 Searchable mmuuid:45da3500-e78f-1e20-8c26-a038c6ed7576 biginteger decimal null", //$NON-NLS-1$
- "language false false language java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:d4d980c0-e623-1e20-8c26-a038c6ed7576 string token null", //$NON-NLS-1$
- "long false false long java.lang.Long 0 0 No Nulls false false false 0 0 Searchable mmuuid:8cdee840-b900-1e21-b812-969c8fc8b016 long integer null", //$NON-NLS-1$
- "negativeInteger false false negativeInteger java.math.BigInteger 0 0 No Nulls false false false 0 0 Searchable mmuuid:86d29280-b8d3-1e21-b812-969c8fc8b016 biginteger nonPositiveInteger null", //$NON-NLS-1$
- "nonNegativeInteger false false nonNegativeInteger java.math.BigInteger 0 0 No Nulls false false false 0 0 Searchable mmuuid:0e081200-b8a4-1e21-b812-969c8fc8b016 biginteger integer null", //$NON-NLS-1$
- "nonPositiveInteger false false nonPositiveInteger java.math.BigInteger 0 0 No Nulls false false false 0 0 Searchable mmuuid:cbdd6e40-b9d2-1e21-8c26-a038c6ed7576 biginteger integer null", //$NON-NLS-1$
- "normalizedString false false normalizedString java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:4df43700-3b13-1e20-921b-eeee28353879 string string null", //$NON-NLS-1$
- "object false false object java.lang.Object 0 0 No Nulls false false false 0 0 Searchable mmuuid:051a0640-b4e8-1e26-9f33-b76fd9d5fa79 object base64Binary null", //$NON-NLS-1$
- "positiveInteger false false positiveInteger java.math.BigInteger 0 0 No Nulls false false false 0 0 Searchable mmuuid:1cbbd380-b9ea-1e21-b812-969c8fc8b016 biginteger nonNegativeInteger null", //$NON-NLS-1$
- "short false false short java.lang.Short 0 0 No Nulls false false false 0 0 Searchable mmuuid:5bbcf140-b9ae-1e21-b812-969c8fc8b016 short int null", //$NON-NLS-1$
- "string false false string java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:bf6c34c0-c442-1e24-9b01-c8207cd53eb7 string anySimpleType null", //$NON-NLS-1$
- "time false false time java.sql.Time 0 0 No Nulls false false false 0 0 Searchable mmuuid:3b892180-c4a7-1e24-9b01-c8207cd53eb7 time anySimpleType null", //$NON-NLS-1$
- "timestamp false false timestamp java.sql.Timestamp 0 0 No Nulls false false false 0 0 Searchable mmuuid:6d9809c0-a07e-1e26-9b08-d6079ebe1f0d timestamp string null", //$NON-NLS-1$
- "token false false token java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:3425cb80-d844-1e20-9027-be6d2c3b8b3a string normalizedString null", //$NON-NLS-1$
- "unsignedByte false false unsignedByte java.lang.Short 0 0 No Nulls false false false 0 0 Searchable mmuuid:cff745c0-baa2-1e21-b812-969c8fc8b016 short unsignedShort null", //$NON-NLS-1$
- "unsignedInt false false unsignedInt java.lang.Long 0 0 No Nulls false false false 0 0 Searchable mmuuid:badcbd80-ba63-1e21-b812-969c8fc8b016 long unsignedLong null", //$NON-NLS-1$
- "unsignedLong false false unsignedLong java.math.BigInteger 0 0 No Nulls false false false 0 0 Searchable mmuuid:54b98780-ba14-1e21-b812-969c8fc8b016 biginteger nonNegativeInteger null", //$NON-NLS-1$
- "unsignedShort false false unsignedShort java.lang.Integer 0 0 No Nulls false false false 0 0 Searchable mmuuid:327093c0-ba88-1e21-b812-969c8fc8b016 integer unsignedInt null", //$NON-NLS-1$
-
- };
- executeAndAssertResults("select* from System.DataTypes", expected); //$NON-NLS-1$
-
+ @Test public void testProcedureParams() throws Exception {
+ checkResult("testProcedureParams", "select * from System.ProcedureParams order by Name"); //$NON-NLS-1$ //$NON-NLS-2$
}
- @Test public void testProcedureParams() {
-
- String[] expected = {
- "ModelName[string] ProcedureName[string] Name[string] DataType[string] Position[integer] Type[string] Optional[boolean] Precision[integer] TypeLength[integer] Scale[integer] Radix[integer] NullType[string]", //$NON-NLS-1$
- "System System.describe Description string 1 ResultSet false 128 128 0 10 No Nulls", //$NON-NLS-1$
- "System System.getVDBResourcePaths ResourcePath string 1 ResultSet false 50 50 0 10 Nullable", //$NON-NLS-1$
- "System System.getBinaryVDBResource VdbResource blob 1 ResultSet false 0 0 0 10 Nullable", //$NON-NLS-1$
- "System System.getCharacterVDBResource VdbResource clob 1 ResultSet false 0 0 0 10 Nullable", //$NON-NLS-1$
- "System System.getUpdatedCharacterVDBResource VdbResource clob 1 ResultSet false 0 0 0 10 Nullable", //$NON-NLS-1$
- "System System.describe entity string 1 In false 0 0 0 10 No Nulls", //$NON-NLS-1$
- "System System.getVDBResourcePaths isBinary boolean 2 ResultSet false 1 1 0 10 Nullable", //$NON-NLS-1$
- "System System.getBinaryVDBResource resourcePath string 1 In false 50 50 0 10 No Nulls", //$NON-NLS-1$
- "System System.getCharacterVDBResource resourcePath string 1 In false 50 50 0 10 No Nulls", //$NON-NLS-1$
- "System System.getUpdatedCharacterVDBResource resourcePath string 1 In false 50 50 0 10 No Nulls", //$NON-NLS-1$
- "System System.getUpdatedCharacterVDBResource tokenReplacements object 3 In false 0 0 0 10 No Nulls", //$NON-NLS-1$
- "System System.getUpdatedCharacterVDBResource tokens object 2 In false 0 0 0 10 No Nulls", //$NON-NLS-1$
-
- };
- executeAndAssertResults(
- "select * from System.ProcedureParams order by Name", expected); //$NON-NLS-1$
+ @Test public void testProcedures() throws Exception {
+ checkResult("testProcedures", "select* from System.Procedures order by Name"); //$NON-NLS-1$ //$NON-NLS-2$
}
- @Test public void testProcedures() {
-
- String[] expected = {
- "ModelName[string] Name[string] NameInSource[string] ReturnsResults[boolean] ModelUID[string] UID[string] Description[string] FullName[string]", //$NON-NLS-1$
- "System describe null true mmuuid:70ffc880-29d8-1de6-8a38-9d76e1f90f2e mmuuid:93687100-1916-1e87-8525-f813a949866a null System.describe", //$NON-NLS-1$
- "System getBinaryVDBResource null true mmuuid:70ffc880-29d8-1de6-8a38-9d76e1f90f2e mmuuid:b85dbd44-39d9-1f33-9f26-c47bba154acc null System.getBinaryVDBResource", //$NON-NLS-1$
- "System getCharacterVDBResource null true mmuuid:70ffc880-29d8-1de6-8a38-9d76e1f90f2e mmuuid:b85dbd40-39d9-1f33-9f26-c47bba154acc null System.getCharacterVDBResource", //$NON-NLS-1$
- "System getUpdatedCharacterVDBResource null true mmuuid:70ffc880-29d8-1de6-8a38-9d76e1f90f2e mmuuid:b9429f00-39d9-1f33-9f26-c47bba154acc null System.getUpdatedCharacterVDBResource", //$NON-NLS-1$
- "System getVDBResourcePaths null true mmuuid:70ffc880-29d8-1de6-8a38-9d76e1f90f2e mmuuid:b9429f06-39d9-1f33-9f26-c47bba154acc null System.getVDBResourcePaths", //$NON-NLS-1$
-
- };
- executeAndAssertResults("select* from System.Procedures", expected); //$NON-NLS-1$
+ @Test public void testProperties() {
+ String[] expected = { "Name[string] Value[string] UID[string]", }; //$NON-NLS-1$
+ executeAndAssertResults("select* from System.Properties", expected); //$NON-NLS-1$
}
- @Test public void testGroupProperties() {
-
- String[] expected = { "ModelName[string] GroupFullName[string] Name[string] Value[string] GroupName[string] GroupUpperName[string] UID[string]", }; //$NON-NLS-1$
- executeAndAssertResults("select* from System.GroupProperties", expected); //$NON-NLS-1$
- }
-
- @Test public void testModelProperties() {
-
- String[] expected = { "ModelName[string] Name[string] Value[string] UID[string]", }; //$NON-NLS-1$
- executeAndAssertResults("select* from System.ModelProperties", expected); //$NON-NLS-1$
- }
-
- @Test public void testProcedureProperties() {
-
- String[] expected = { "ModelName[string] ProcedureName[string] Name[string] Value[string] UID[string]", //$NON-NLS-1$
-
- };
- executeAndAssertResults("select* from System.ProcedureProperties", //$NON-NLS-1$
- expected);
- }
-
@Test public void testVirtualDatabase() {
String[] expected = { "Name[string] Version[string] ", "PartsSupplier 1", //$NON-NLS-1$ //$NON-NLS-2$
@@ -263,362 +104,36 @@
expected);
}
- @Test public void testKeyElements() {
-
- String[] expected = {
- "ModelName[string] GroupFullName[string] Name[string] KeyName[string] KeyType[string] GroupName[string] GroupUpperName[string] RefKeyUID[string] UID[string] Position[integer]", //$NON-NLS-1$
- "PartsSupplier PartsSupplier.PARTSSUPPLIER.PARTS PART_ID PK_PARTS Primary PARTS PARTS null mmuuid:07db4240-73ff-1edc-a81c-ecf397b10590 1", //$NON-NLS-1$
- "PartsSupplier PartsSupplier.PARTSSUPPLIER.SHIP_VIA SHIPPER_ID PK_SHIP_VIA Primary SHIP_VIA SHIP_VIA null mmuuid:18aa3cc0-73ff-1edc-a81c-ecf397b10590 1", //$NON-NLS-1$
- "PartsSupplier PartsSupplier.PARTSSUPPLIER.STATUS STATUS_ID PK_STATUS Primary STATUS STATUS null mmuuid:25a8a740-73ff-1edc-a81c-ecf397b10590 1", //$NON-NLS-1$
- "PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER SUPPLIER_ID PK_SUPPLIER Primary SUPPLIER SUPPLIER null mmuuid:375c8380-73ff-1edc-a81c-ecf397b10590 1", //$NON-NLS-1$
- "PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER SUPPLIER_STATUS FK_SPLIER_STATS Foreign SUPPLIER SUPPLIER mmuuid:25a8a740-73ff-1edc-a81c-ecf397b10590 mmuuid:5ac43c00-73ff-1edc-a81c-ecf397b10590 1", //$NON-NLS-1$
- "PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER_PARTS PART_ID FK_SPLIER_PRTS_PRTS Foreign SUPPLIER_PARTS SUPPLIER_PARTS mmuuid:07db4240-73ff-1edc-a81c-ecf397b10590 mmuuid:66ddc4c0-73ff-1edc-a81c-ecf397b10590 1", //$NON-NLS-1$
- "PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER_PARTS PART_ID PK_SUPPLIER_PARTS Primary SUPPLIER_PARTS SUPPLIER_PARTS null mmuuid:455e5440-73ff-1edc-a81c-ecf397b10590 2", //$NON-NLS-1$
- "PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER_PARTS SUPPLIER_ID FK_SPLY_PRTS_SPLY Foreign SUPPLIER_PARTS SUPPLIER_PARTS mmuuid:375c8380-73ff-1edc-a81c-ecf397b10590 mmuuid:66ddc4c1-73ff-1edc-a81c-ecf397b10590 1", //$NON-NLS-1$
- "PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER_PARTS SUPPLIER_ID PK_SUPPLIER_PARTS Primary SUPPLIER_PARTS SUPPLIER_PARTS null mmuuid:455e5440-73ff-1edc-a81c-ecf397b10590 1", //$NON-NLS-1$
-
- };
- executeAndAssertResults(
- "select* from System.KeyElements order by GroupFullName, Name, KeyName", //$NON-NLS-1$
- expected);
+ @Test public void testKeyColumns() throws Exception {
+ checkResult("testKeyColumns", "select* from System.KeyColumns order by Name, KeyName"); //$NON-NLS-1$ //$NON-NLS-2$
}
- @Test public void testElementProperties() {
-
- String[] expected = { "ModelName[string] GroupFullName[string] ElementName[string] Name[string] Value[string] GroupName[string] ElementUpperName[string] GroupUpperName[string] UID[string]", }; //$NON-NLS-1$
- executeAndAssertResults("select* from System.ElementProperties", //$NON-NLS-1$
- expected);
-
- }
-
- @Test public void testDataTypeElementProperties() {
-
- String[] expected = { "DataTypeName[string] DataTypeElementName[string] Name[string] Value[string] UID[string]", //$NON-NLS-1$
-
- };
- executeAndAssertResults(
- "select* from System.DataTypeElementProperties", expected); //$NON-NLS-1$
- }
-
- @Test public void testDescribe() {
- execute("exec System.describe(?)", new Object[] {"parts"}); //$NON-NLS-1$ //$NON-NLS-2$
- String[] expected = { "Description[string]", }; //$NON-NLS-1$
- assertResults(expected);
- }
-
@Test public void testVDBResourcePathsProcedure() {
String[] expected = { "ResourcePath[string] isBinary[boolean] ", //$NON-NLS-1$
"/parts/partsmd/PartsSupplier.xmi false", //$NON-NLS-1$
};
- execute("exec System.getVDBResourcePaths()",new Object[] {}); //$NON-NLS-1$
+ execute("exec getVDBResourcePaths()",new Object[] {}); //$NON-NLS-1$
assertResults(expected);
}
- @Test public void testElements() {
-
- String[] expected = {
- "ModelName[string] GroupName[string] GroupFullName[string] Name[string] Position[integer] NameInSource[string] DataType[string] Scale[integer] ElementLength[integer] IsLengthFixed[boolean] SupportsSelect[boolean] SupportsUpdates[boolean] IsCaseSensitive[boolean] IsSigned[boolean] IsCurrency[boolean] IsAutoIncremented[boolean] NullType[string] MinRange[string] MaxRange[string] SearchType[string] Format[string] DefaultValue[string] JavaClass[string] Precision[integer] CharOctetLength[integer] Radix[integer] GroupUpperName[string] UpperName[string] UID[string] Description[string]", //$NON-NLS-1$
- "PartsSupplier PARTS 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 PARTS PART_NAME mmuuid:0067e900-73ff-1edc-a81c-ecf397b10590 null", //$NON-NLS-1$
- "PartsSupplier PARTS 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 PARTS PART_COLOR mmuuid:015c0d00-73ff-1edc-a81c-ecf397b10590 null", //$NON-NLS-1$
- "PartsSupplier PARTS 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 PARTS PART_WEIGHT mmuuid:015c0d01-73ff-1edc-a81c-ecf397b10590 null", //$NON-NLS-1$
- "System Keys System.Keys GroupUpperName 9 null string 0 255 true true false true false false false No Nulls null null Searchable null null java.lang.String 255 255 10 KEYS GROUPUPPERNAME mmuuid:07268b40-c2f4-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "PartsSupplier SHIP_VIA 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 SHIP_VIA SHIPPER_ID mmuuid:121bc540-73ff-1edc-a81c-ecf397b10590 null", //$NON-NLS-1$
- "PartsSupplier SHIP_VIA 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 SHIP_VIA SHIPPER_NAME mmuuid:130fe940-73ff-1edc-a81c-ecf397b10590 null", //$NON-NLS-1$
- "System DataTypes System.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 DATATYPES NAME mmuuid:15b71f00-c266-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "PartsSupplier STATUS 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 STATUS STATUS_ID mmuuid:201d9600-73ff-1edc-a81c-ecf397b10590 null", //$NON-NLS-1$
- "PartsSupplier STATUS 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 STATUS STATUS_NAME mmuuid:201d9601-73ff-1edc-a81c-ecf397b10590 null", //$NON-NLS-1$
- "System Models System.Models 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 MODELS DESCRIPTION mmuuid:2268b040-3a47-1edb-8606-be949cc6da52 null", //$NON-NLS-1$
- "System ProcedureParams System.ProcedureParams Precision 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 PROCEDUREPARAMS PRECISION mmuuid:2626ed80-634e-1e44-a903-c1472e78d1c5 null", //$NON-NLS-1$
- "System ModelProperties System.ModelProperties ModelName 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 MODELPROPERTIES MODELNAME mmuuid:2afa8d80-c3cd-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "System ModelProperties System.ModelProperties UID 4 null string 0 50 true true false false true false false No Nulls null null Searchable null null java.lang.String 50 50 10 MODELPROPERTIES UID mmuuid:2afa8d82-c3cd-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "PartsSupplier SUPPLIER 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 SUPPLIER SUPPLIER_ID mmuuid:2f044880-73ff-1edc-a81c-ecf397b10590 null", //$NON-NLS-1$
- "PartsSupplier SUPPLIER 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 SUPPLIER SUPPLIER_NAME mmuuid:2f044881-73ff-1edc-a81c-ecf397b10590 null", //$NON-NLS-1$
- "PartsSupplier SUPPLIER 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 SUPPLIER SUPPLIER_STATUS mmuuid:2f044882-73ff-1edc-a81c-ecf397b10590 null", //$NON-NLS-1$
- "PartsSupplier SUPPLIER 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 SUPPLIER SUPPLIER_CITY mmuuid:2fe92a40-73ff-1edc-a81c-ecf397b10590 null", //$NON-NLS-1$
- "PartsSupplier SUPPLIER 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 SUPPLIER SUPPLIER_STATE mmuuid:2fe92a41-73ff-1edc-a81c-ecf397b10590 null", //$NON-NLS-1$
- "System Procedures System.Procedures NameInSource 3 null string 0 255 true true false false false false false Nullable null null Searchable null null java.lang.String 255 255 10 PROCEDURES NAMEINSOURCE mmuuid:339a9a00-35fc-1dee-8e07-e3cb3008f82b null", //$NON-NLS-1$
- "System DataTypeElementProperties System.DataTypeElementProperties DataTypeName 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 DATATYPEELEMENTPROPERTIES DATATYPENAME mmuuid:34af31c0-c88f-1de7-ad1c-f3ce4292824e null", //$NON-NLS-1$
- "System DataTypeElementProperties System.DataTypeElementProperties DataTypeElementName 2 null string 0 255 true true false true false false false No Nulls null null Searchable null null java.lang.String 255 255 10 DATATYPEELEMENTPROPERTIES DATATYPEELEMENTNAME mmuuid:34af31c1-c88f-1de7-ad1c-f3ce4292824e null", //$NON-NLS-1$
- "System DataTypeElementProperties System.DataTypeElementProperties Name 3 null string 0 50 true true false true true false false No Nulls null null Searchable null null java.lang.String 50 50 10 DATATYPEELEMENTPROPERTIES NAME mmuuid:34af31c2-c88f-1de7-ad1c-f3ce4292824e null", //$NON-NLS-1$
- "System DataTypeElementProperties System.DataTypeElementProperties UID 5 null string 0 50 true true false false true false false No Nulls null null Searchable null null java.lang.String 50 50 10 DATATYPEELEMENTPROPERTIES UID mmuuid:34af31c3-c88f-1de7-ad1c-f3ce4292824e null", //$NON-NLS-1$
- "System DataTypeElementProperties System.DataTypeElementProperties Value 4 null string 0 255 true true false true true false false No Nulls null null Searchable null null java.lang.String 255 255 10 DATATYPEELEMENTPROPERTIES VALUE mmuuid:35941381-c88f-1de7-ad1c-f3ce4292824e null", //$NON-NLS-1$
- "System Elements System.Elements Description 30 null string 0 255 false true true true true false false Nullable null null Searchable null null java.lang.String 255 255 10 ELEMENTS DESCRIPTION mmuuid:36fd7640-3a50-1edb-8606-be949cc6da52 null", //$NON-NLS-1$
- "System KeyElements System.KeyElements Position 10 null integer 0 10 true true true true true false false Nullable null null Searchable null null java.lang.Integer 10 10 10 KEYELEMENTS POSITION mmuuid:39d26b40-396b-1edb-8606-be949cc6da52 null", //$NON-NLS-1$
- "System ProcedureProperties System.ProcedureProperties ModelName 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 PROCEDUREPROPERTIES MODELNAME mmuuid:3a5c9f42-c5f6-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "System ProcedureProperties System.ProcedureProperties ProcedureName 2 null string 0 255 true true false true false false false No Nulls null null Searchable null null java.lang.String 255 255 10 PROCEDUREPROPERTIES PROCEDURENAME mmuuid:3a5c9f43-c5f6-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "System ProcedureProperties System.ProcedureProperties Name 3 null string 0 255 true true false false false false false No Nulls null null Searchable null null java.lang.String 255 255 10 PROCEDUREPROPERTIES NAME mmuuid:3a5c9f45-c5f6-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "System ProcedureProperties System.ProcedureProperties UID 5 null string 0 50 true true false false false false false No Nulls null null Searchable null null java.lang.String 50 50 10 PROCEDUREPROPERTIES UID mmuuid:3a5c9f46-c5f6-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "System ProcedureProperties System.ProcedureProperties Value 4 null string 0 255 true true false true true false false No Nulls null null Searchable null null java.lang.String 255 255 10 PROCEDUREPROPERTIES VALUE mmuuid:3a5c9f48-c5f6-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "System ModelProperties System.ModelProperties Name 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 MODELPROPERTIES NAME mmuuid:3c881f40-c3dc-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "System ModelProperties System.ModelProperties Value 3 null string 0 255 true true false true true false false No Nulls null null Searchable null null java.lang.String 255 255 10 MODELPROPERTIES VALUE mmuuid:3c881f41-c3dc-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "PartsSupplier SUPPLIER_PARTS 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 SUPPLIER_PARTS SUPPLIER_ID mmuuid:3ecfdcc0-73ff-1edc-a81c-ecf397b10590 null", //$NON-NLS-1$
- "PartsSupplier SUPPLIER_PARTS 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 SUPPLIER_PARTS PART_ID mmuuid:3fc400c0-73ff-1edc-a81c-ecf397b10590 null", //$NON-NLS-1$
- "PartsSupplier SUPPLIER_PARTS 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 SUPPLIER_PARTS QUANTITY mmuuid:3fc400c1-73ff-1edc-a81c-ecf397b10590 null", //$NON-NLS-1$
- "PartsSupplier SUPPLIER_PARTS 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 SUPPLIER_PARTS SHIPPER_ID mmuuid:3fc400c2-73ff-1edc-a81c-ecf397b10590 null", //$NON-NLS-1$
- "System Models System.Models UID 9 null string 0 50 true true false false false false false No Nulls null null Searchable null null java.lang.String 50 50 10 MODELS UID mmuuid:4610fe00-b6d6-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System DataTypeElements System.DataTypeElements DataTypeName 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 DATATYPEELEMENTS DATATYPENAME mmuuid:49bf3600-c74a-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "System DataTypeElements System.DataTypeElements Name 2 null string 0 255 true true false true false false false No Nulls null null Searchable null null java.lang.String 255 255 10 DATATYPEELEMENTS NAME mmuuid:49bf3601-c74a-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "System DataTypeElements System.DataTypeElements Position 3 null integer 0 10 true true false false false false false No Nulls null null Searchable null null java.lang.Integer 10 10 10 DATATYPEELEMENTS POSITION mmuuid:49bf3602-c74a-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "System DataTypeElements System.DataTypeElements 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 DATATYPEELEMENTS UID mmuuid:49bf3604-c74a-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "System DataTypeElements System.DataTypeElements Scale 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 DATATYPEELEMENTS SCALE mmuuid:49bf3605-c74a-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "System DataTypeElements System.DataTypeElements ElementLength 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 DATATYPEELEMENTS ELEMENTLENGTH mmuuid:49bf3606-c74a-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "System DataTypes System.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 DATATYPES TYPELENGTH mmuuid:505f1740-b823-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Models System.Models Name 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 MODELS NAME mmuuid:51706d40-b6d0-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Groups System.Groups SupportsUpdates 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 GROUPS SUPPORTSUPDATES mmuuid:533fa200-348c-1e06-9501-aee4d16940ab null", //$NON-NLS-1$
- "System OA_TABLES System.ODBC.OA_TABLES TABLE_OWNER 2 null string 0 128 false true true true true false false Nullable null null Searchable null null java.lang.String 128 128 10 OA_TABLES TABLE_OWNER mmuuid:54cbf441-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_TABLES System.ODBC.OA_TABLES REMARKS 5 null string 0 254 false true true true true false false Nullable null null Searchable null null java.lang.String 254 254 10 OA_TABLES REMARKS mmuuid:54cbf442-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_TABLES System.ODBC.OA_TABLES TABLE_TYPE 4 null string 0 128 false true true true true false false Nullable null null Searchable null null java.lang.String 128 128 10 OA_TABLES TABLE_TYPE mmuuid:54cbf443-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_TABLES System.ODBC.OA_TABLES TABLE_NAME 3 null string 0 128 false true true true true false false Nullable null null Searchable null null java.lang.String 128 128 10 OA_TABLES TABLE_NAME mmuuid:54cbf444-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_TABLES System.ODBC.OA_TABLES TABLE_QUALIFIER 1 null string 0 128 false true false true true false false Nullable null null Searchable null null java.lang.String 128 128 10 OA_TABLES TABLE_QUALIFIER mmuuid:54cbf445-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_COLUMNS System.ODBC.OA_COLUMNS TABLE_QUALIFIER 1 null string 0 128 false true false true true false false Nullable null null Searchable null null java.lang.String 128 128 10 OA_COLUMNS TABLE_QUALIFIER mmuuid:54cbf447-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_COLUMNS System.ODBC.OA_COLUMNS OA_NULLABLE 11 null short 0 5 false true true true true false false Nullable null null Searchable null null java.lang.Short 5 5 10 OA_COLUMNS OA_NULLABLE mmuuid:54cbf448-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_COLUMNS System.ODBC.OA_COLUMNS OA_SCALE 9 null integer 0 10 false true true true true false false Nullable null null Searchable null null java.lang.Integer 10 10 10 OA_COLUMNS OA_SCALE mmuuid:54cbf449-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_COLUMNS System.ODBC.OA_COLUMNS TABLE_NAME 3 null string 0 128 false true true true true false false Nullable null null Searchable null null java.lang.String 128 128 10 OA_COLUMNS TABLE_NAME mmuuid:54cbf44a-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_COLUMNS System.ODBC.OA_COLUMNS REMARKS 15 null string 0 254 false true true true true false false Nullable null null Searchable null null java.lang.String 254 254 10 OA_COLUMNS REMARKS mmuuid:54cbf44b-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_COLUMNS System.ODBC.OA_COLUMNS OA_COLUMNTYPE 14 null short 0 5 false true true true true false false Nullable null null Searchable null null java.lang.Short 5 5 10 OA_COLUMNS OA_COLUMNTYPE mmuuid:54cbf44c-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_COLUMNS System.ODBC.OA_COLUMNS OA_PRECISION 8 null integer 0 10 false true true true true false false Nullable null null Searchable null null java.lang.Integer 10 10 10 OA_COLUMNS OA_PRECISION mmuuid:54cbf44d-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_COLUMNS System.ODBC.OA_COLUMNS OA_RADIX 10 null integer 0 10 false true true true true false false Nullable null null Searchable null null java.lang.Integer 10 10 10 OA_COLUMNS OA_RADIX mmuuid:54cbf44e-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_COLUMNS System.ODBC.OA_COLUMNS OA_LENGTH 7 null integer 0 10 false true true true true false false Nullable null null Searchable null null java.lang.Integer 10 10 10 OA_COLUMNS OA_LENGTH mmuuid:54cbf44f-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_COLUMNS System.ODBC.OA_COLUMNS COLUMN_NAME 4 null string 0 128 false true true true true false false Nullable null null Searchable null null java.lang.String 128 128 10 OA_COLUMNS COLUMN_NAME mmuuid:54cbf450-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_COLUMNS System.ODBC.OA_COLUMNS OA_SCOPE 12 null short 0 5 false true true true true false false Nullable null null Searchable null null java.lang.Short 5 5 10 OA_COLUMNS OA_SCOPE mmuuid:54cbf451-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_COLUMNS System.ODBC.OA_COLUMNS DATA_TYPE 5 null short 0 5 false true true true true false false Nullable null null Searchable null null java.lang.Short 5 5 10 OA_COLUMNS DATA_TYPE mmuuid:54cbf452-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_COLUMNS System.ODBC.OA_COLUMNS TYPE_NAME 6 null string 0 100 false true true true true false false Nullable null null Searchable null null java.lang.String 100 100 10 OA_COLUMNS TYPE_NAME mmuuid:54cbf453-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_COLUMNS System.ODBC.OA_COLUMNS PSEUDO_COLUMN 13 null short 0 5 false true true true true false false Nullable null null Searchable null null java.lang.Short 5 5 10 OA_COLUMNS PSEUDO_COLUMN mmuuid:54cbf454-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_COLUMNS System.ODBC.OA_COLUMNS TABLE_OWNER 2 null string 0 128 false true true true true false false Nullable null null Searchable null null java.lang.String 128 128 10 OA_COLUMNS TABLE_OWNER mmuuid:54cbf455-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System ElementProperties System.ElementProperties ModelName 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 ELEMENTPROPERTIES MODELNAME mmuuid:54d5e2c2-c59f-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "System ElementProperties System.ElementProperties GroupName 6 null string 0 255 true true false true false false false No Nulls null null Searchable null null java.lang.String 255 255 10 ELEMENTPROPERTIES GROUPNAME mmuuid:54d5e2c3-c59f-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "System ElementProperties System.ElementProperties GroupFullName 2 null string 0 2048 true true false true false false false No Nulls null null Searchable null null java.lang.String 2048 2048 10 ELEMENTPROPERTIES GROUPFULLNAME mmuuid:54d5e2c4-c59f-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "System ElementProperties System.ElementProperties ElementName 3 null string 0 255 true true false false false false false No Nulls null null Searchable null null java.lang.String 255 255 10 ELEMENTPROPERTIES ELEMENTNAME mmuuid:54d5e2c5-c59f-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "System ElementProperties System.ElementProperties Name 4 null string 0 255 true true false true true false false No Nulls null null Searchable null null java.lang.String 255 255 10 ELEMENTPROPERTIES NAME mmuuid:54d5e2c6-c59f-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "System ElementProperties System.ElementProperties UID 9 null string 0 50 true true false false true false false No Nulls null null Searchable null null java.lang.String 50 50 10 ELEMENTPROPERTIES UID mmuuid:54d5e2c7-c59f-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "System ElementProperties System.ElementProperties Value 5 null string 0 255 true true false true true false false No Nulls null null Searchable null null java.lang.String 255 255 10 ELEMENTPROPERTIES VALUE mmuuid:54d5e2c9-c59f-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "System OA_PROC System.ODBC.OA_PROC REMARKS 7 null string 0 254 false true true true true false false Nullable null null Searchable null null java.lang.String 254 254 10 OA_PROC REMARKS mmuuid:55b0d601-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_PROC System.ODBC.OA_PROC OA_OWNER 2 null string 0 128 false true true true true false false Nullable null null Searchable null null java.lang.String 128 128 10 OA_PROC OA_OWNER mmuuid:55b0d602-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_PROC System.ODBC.OA_PROC OA_QUALIFIER 1 null string 0 128 false true false true true false false Nullable null null Searchable null null java.lang.String 128 128 10 OA_PROC OA_QUALIFIER mmuuid:55b0d603-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_PROC System.ODBC.OA_PROC NUM_OUTPUT_PARAMS 5 null integer 0 10 false true true true true false false Nullable null null Searchable null null java.lang.Integer 10 10 10 OA_PROC NUM_OUTPUT_PARAMS mmuuid:55b0d604-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_PROC System.ODBC.OA_PROC NUM_INPUT_PARAMS 4 null integer 0 10 false true true true true false false Nullable null null Searchable null null java.lang.Integer 10 10 10 OA_PROC NUM_INPUT_PARAMS mmuuid:55b0d605-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_PROC System.ODBC.OA_PROC OA_NAME 3 null string 0 128 false true true true true false false Nullable null null Searchable null null java.lang.String 128 128 10 OA_PROC OA_NAME mmuuid:55b0d606-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_PROC System.ODBC.OA_PROC PROCEDURE_TYPE 8 null short 0 5 false true true true true false false Nullable null null Searchable null null java.lang.Short 5 5 10 OA_PROC PROCEDURE_TYPE mmuuid:55b0d607-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_PROC System.ODBC.OA_PROC NUM_RESULT_SETS 6 null integer 0 10 false true true true true false false Nullable null null Searchable null null java.lang.Integer 10 10 10 OA_PROC NUM_RESULT_SETS mmuuid:55b0d608-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System ElementProperties System.ElementProperties GroupUpperName 8 null string 0 255 true true false true false false false No Nulls null null Searchable null null java.lang.String 255 255 10 ELEMENTPROPERTIES GROUPUPPERNAME mmuuid:55bac480-c59f-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "System ElementProperties System.ElementProperties ElementUpperName 7 null string 0 255 true true false true false false false No Nulls null null Searchable null null java.lang.String 255 255 10 ELEMENTPROPERTIES ELEMENTUPPERNAME mmuuid:55bac481-c59f-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "System OA_PROCCOLUMNS System.ODBC.OA_PROCCOLUMNS OA_LENGTH 9 null integer 0 10 false true true true true false false Nullable null null Searchable null null java.lang.Integer 10 10 10 OA_PROCCOLUMNS OA_LENGTH mmuuid:56a4fa01-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_PROCCOLUMNS System.ODBC.OA_PROCCOLUMNS OA_PRECISION 8 null integer 0 10 false true true true true false false Nullable null null Searchable null null java.lang.Integer 10 10 10 OA_PROCCOLUMNS OA_PRECISION mmuuid:56a4fa02-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_PROCCOLUMNS System.ODBC.OA_PROCCOLUMNS COLUMN_NAME 4 null string 0 128 false true true true true false false Nullable null null Searchable null null java.lang.String 128 128 10 OA_PROCCOLUMNS COLUMN_NAME mmuuid:56a4fa03-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_PROCCOLUMNS System.ODBC.OA_PROCCOLUMNS REMARKS 14 null string 0 254 false true true true true false false Nullable null null Searchable null null java.lang.String 254 254 10 OA_PROCCOLUMNS REMARKS mmuuid:56a4fa04-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_PROCCOLUMNS System.ODBC.OA_PROCCOLUMNS OA_NAME 3 null string 0 128 false true true true true false false Nullable null null Searchable null null java.lang.String 128 128 10 OA_PROCCOLUMNS OA_NAME mmuuid:56a4fa05-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_PROCCOLUMNS System.ODBC.OA_PROCCOLUMNS OA_RADIX 10 null integer 0 10 false true true true true false false Nullable null null Searchable null null java.lang.Integer 10 10 10 OA_PROCCOLUMNS OA_RADIX mmuuid:56a4fa06-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_PROCCOLUMNS System.ODBC.OA_PROCCOLUMNS DATA_TYPE 6 null short 0 5 false true true true true false false Nullable null null Searchable null null java.lang.Short 5 5 10 OA_PROCCOLUMNS DATA_TYPE mmuuid:56a4fa07-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_PROCCOLUMNS System.ODBC.OA_PROCCOLUMNS OA_SCALE 11 null integer 0 10 false true true true true false false Nullable null null Searchable null null java.lang.Integer 10 10 10 OA_PROCCOLUMNS OA_SCALE mmuuid:56a4fa08-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_PROCCOLUMNS System.ODBC.OA_PROCCOLUMNS OA_SCOPE 13 null short 0 5 false true true true true false false Nullable null null Searchable null null java.lang.Short 5 5 10 OA_PROCCOLUMNS OA_SCOPE mmuuid:56a4fa09-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_PROCCOLUMNS System.ODBC.OA_PROCCOLUMNS TYPE_NAME 7 null string 0 100 false true true true true false false Nullable null null Searchable null null java.lang.String 100 100 10 OA_PROCCOLUMNS TYPE_NAME mmuuid:56a4fa0a-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_PROCCOLUMNS System.ODBC.OA_PROCCOLUMNS OA_QUALIFIER 1 null string 0 128 false true false true true false false Nullable null null Searchable null null java.lang.String 128 128 10 OA_PROCCOLUMNS OA_QUALIFIER mmuuid:56a4fa0b-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_PROCCOLUMNS System.ODBC.OA_PROCCOLUMNS OA_OWNER 2 null string 0 128 false true true true true false false Nullable null null Searchable null null java.lang.String 128 128 10 OA_PROCCOLUMNS OA_OWNER mmuuid:56a4fa0c-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_PROCCOLUMNS System.ODBC.OA_PROCCOLUMNS OA_NULLABLE 12 null short 0 5 false true true true true false false Nullable null null Searchable null null java.lang.Short 5 5 10 OA_PROCCOLUMNS OA_NULLABLE mmuuid:56a4fa0d-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_PROCCOLUMNS System.ODBC.OA_PROCCOLUMNS OA_COLUMNTYPE 5 null short 0 5 false true true true true false false Nullable null null Searchable null null java.lang.Short 5 5 10 OA_PROCCOLUMNS OA_COLUMNTYPE mmuuid:56a4fa0e-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_TYPES System.ODBC.OA_TYPES CREATE_PARAMS 6 null string 0 10 false true true true true false false Nullable null null Searchable null null java.lang.String 10 10 10 OA_TYPES CREATE_PARAMS mmuuid:57991e01-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_TYPES System.ODBC.OA_TYPES LITERAL_PREFIX 4 null string 0 10 false true true true true false false Nullable null null Searchable null null java.lang.String 10 10 10 OA_TYPES LITERAL_PREFIX mmuuid:57991e02-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_TYPES System.ODBC.OA_TYPES AUTO_INCREMENT 12 null short 0 5 false true true true true false false Nullable null null Searchable null null java.lang.Short 5 5 10 OA_TYPES AUTO_INCREMENT mmuuid:57991e03-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_TYPES System.ODBC.OA_TYPES OA_MONEY 11 null short 0 5 false true true true true false false Nullable null null Searchable null null java.lang.Short 5 5 10 OA_TYPES OA_MONEY mmuuid:57991e04-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_TYPES System.ODBC.OA_TYPES MINIMUM_SCALE 13 null short 0 5 false true true true true false false Nullable null null Searchable null null java.lang.Short 5 5 10 OA_TYPES MINIMUM_SCALE mmuuid:57991e05-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_TYPES System.ODBC.OA_TYPES OA_PRECISION 3 null integer 0 10 false true true true true false false Nullable null null Searchable null null java.lang.Integer 10 10 10 OA_TYPES OA_PRECISION mmuuid:57991e06-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_TYPES System.ODBC.OA_TYPES DATA_TYPE 2 null short 0 5 false true true true true false false Nullable null null Searchable null null java.lang.Short 5 5 10 OA_TYPES DATA_TYPE mmuuid:57991e07-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_TYPES System.ODBC.OA_TYPES MAXIMUM_SCALE 14 null short 0 5 false true true true true false false Nullable null null Searchable null null java.lang.Short 5 5 10 OA_TYPES MAXIMUM_SCALE mmuuid:57991e08-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_TYPES System.ODBC.OA_TYPES CASE_SENSITIVE 8 null short 0 5 false true true true true false false Nullable null null Searchable null null java.lang.Short 5 5 10 OA_TYPES CASE_SENSITIVE mmuuid:57991e09-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_TYPES System.ODBC.OA_TYPES LOCAL_TYPE_NAME 15 null string 0 128 false true true true true false false Nullable null null Searchable null null java.lang.String 128 128 10 OA_TYPES LOCAL_TYPE_NAME mmuuid:57991e0a-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_TYPES System.ODBC.OA_TYPES LITERAL_SUFFIX 5 null string 0 10 false true true true true false false Nullable null null Searchable null null java.lang.String 10 10 10 OA_TYPES LITERAL_SUFFIX mmuuid:57991e0b-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_TYPES System.ODBC.OA_TYPES UNSIGNED_ATTRIB 10 null short 0 5 false true true true true false false Nullable null null Searchable null null java.lang.Short 5 5 10 OA_TYPES UNSIGNED_ATTRIB mmuuid:57991e0c-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_TYPES System.ODBC.OA_TYPES TYPE_NAME 1 null string 0 100 false true true true true false false Nullable null null Searchable null null java.lang.String 100 100 10 OA_TYPES TYPE_NAME mmuuid:57991e0d-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_TYPES System.ODBC.OA_TYPES OA_NULLABLE 7 null short 0 5 false true true true true false false Nullable null null Searchable null null java.lang.Short 5 5 10 OA_TYPES OA_NULLABLE mmuuid:57991e0e-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_TYPES System.ODBC.OA_TYPES OA_SEARCHABLE 9 null short 0 5 false true true true true false false Nullable null null Searchable null null java.lang.Short 5 5 10 OA_TYPES OA_SEARCHABLE mmuuid:57991e0f-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_STATISTICS System.ODBC.OA_STATISTICS NON_UNIQUE 4 null short 0 5 false true true true true false false Nullable null null Searchable null null java.lang.Short 5 5 10 OA_STATISTICS NON_UNIQUE mmuuid:57991e11-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_STATISTICS System.ODBC.OA_STATISTICS OA_PAGES 12 null string 0 10 false true true true true false false Nullable null null Searchable null null java.lang.String 10 10 10 OA_STATISTICS OA_PAGES mmuuid:57991e12-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_STATISTICS System.ODBC.OA_STATISTICS INDEX_NAME 6 null string 0 128 false true true true true false false Nullable null null Searchable null null java.lang.String 128 128 10 OA_STATISTICS INDEX_NAME mmuuid:57991e13-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_STATISTICS System.ODBC.OA_STATISTICS SEQ_IN_INDEX 8 null short 0 5 false true true true true false false Nullable null null Searchable null null java.lang.Short 5 5 10 OA_STATISTICS SEQ_IN_INDEX mmuuid:57991e14-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_STATISTICS System.ODBC.OA_STATISTICS OA_COLLATION 10 null string 0 128 false true true true true false false Nullable null null Searchable null null java.lang.String 128 128 10 OA_STATISTICS OA_COLLATION mmuuid:57991e15-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_STATISTICS System.ODBC.OA_STATISTICS OA_CARDINALITY 11 null string 0 10 false true true true true false false Nullable null null Searchable null null java.lang.String 10 10 10 OA_STATISTICS OA_CARDINALITY mmuuid:57991e16-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_STATISTICS System.ODBC.OA_STATISTICS TABLE_OWNER 2 null string 0 128 false true true true true false false Nullable null null Searchable null null java.lang.String 128 128 10 OA_STATISTICS TABLE_OWNER mmuuid:57991e17-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_STATISTICS System.ODBC.OA_STATISTICS COLUMN_NAME 9 null string 0 128 false true true true true false false Nullable null null Searchable null null java.lang.String 128 128 10 OA_STATISTICS COLUMN_NAME mmuuid:57991e18-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_STATISTICS System.ODBC.OA_STATISTICS TABLE_NAME 3 null string 0 128 false true true true true false false Nullable null null Searchable null null java.lang.String 128 128 10 OA_STATISTICS TABLE_NAME mmuuid:57991e19-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_STATISTICS System.ODBC.OA_STATISTICS OA_TYPE 7 null short 0 5 false true true true true false false Nullable null null Searchable null null java.lang.Short 5 5 10 OA_STATISTICS OA_TYPE mmuuid:57991e1a-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_STATISTICS System.ODBC.OA_STATISTICS INDEX_QUALIFIER 5 null string 0 128 false true true true true false false Nullable null null Searchable null null java.lang.String 128 128 10 OA_STATISTICS INDEX_QUALIFIER mmuuid:57991e1b-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_STATISTICS System.ODBC.OA_STATISTICS TABLE_QUALIFIER 1 null string 0 128 false true false true true false false Nullable null null Searchable null null java.lang.String 128 128 10 OA_STATISTICS TABLE_QUALIFIER mmuuid:57991e1c-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_STATISTICS System.ODBC.OA_STATISTICS FILTER_CONDITIONS 13 null string 0 128 false true true true true false false Nullable null null Searchable null null java.lang.String 128 128 10 OA_STATISTICS FILTER_CONDITIONS mmuuid:57991e1d-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System KeyElements System.KeyElements ModelName 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 KEYELEMENTS MODELNAME mmuuid:57c33242-ba68-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System KeyElements System.KeyElements GroupName 6 null string 0 255 true true false true false false false No Nulls null null Searchable null null java.lang.String 255 255 10 KEYELEMENTS GROUPNAME mmuuid:57c33243-ba68-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System KeyElements System.KeyElements GroupFullName 2 null string 0 2048 true true false true false false false No Nulls null null Searchable null null java.lang.String 2048 2048 10 KEYELEMENTS GROUPFULLNAME mmuuid:57c33244-ba68-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System OA_FKEYS System.ODBC.OA_FKEYS 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 OA_FKEYS KEY_SEQ mmuuid:587dffc1-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_FKEYS System.ODBC.OA_FKEYS PK_NAME 13 null string 0 128 false true true true true false false Nullable null null Searchable null null java.lang.String 128 128 10 OA_FKEYS PK_NAME mmuuid:587dffc2-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_FKEYS System.ODBC.OA_FKEYS FKTABLE_QUALIFIER 5 null string 0 128 false true true true true false false Nullable null null Searchable null null java.lang.String 128 128 10 OA_FKEYS FKTABLE_QUALIFIER mmuuid:587dffc3-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_FKEYS System.ODBC.OA_FKEYS FKTABLE_NAME 7 null string 0 128 false true true true true false false Nullable null null Searchable null null java.lang.String 128 128 10 OA_FKEYS FKTABLE_NAME mmuuid:587dffc4-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_FKEYS System.ODBC.OA_FKEYS FKTABLE_OWNER 6 null string 0 128 false true true true true false false Nullable null null Searchable null null java.lang.String 128 128 10 OA_FKEYS FKTABLE_OWNER mmuuid:587dffc5-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_FKEYS System.ODBC.OA_FKEYS PKCOLUMN_NAME 4 null string 0 128 false true true true true false false Nullable null null Searchable null null java.lang.String 128 128 10 OA_FKEYS PKCOLUMN_NAME mmuuid:587dffc6-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_FKEYS System.ODBC.OA_FKEYS FK_NAME 12 null string 0 128 false true true true true false false Nullable null null Searchable null null java.lang.String 128 128 10 OA_FKEYS FK_NAME mmuuid:587dffc7-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_FKEYS System.ODBC.OA_FKEYS PKTABLE_OWNER 2 null string 0 128 false true true true true false false Nullable null null Searchable null null java.lang.String 128 128 10 OA_FKEYS PKTABLE_OWNER mmuuid:587dffc8-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_FKEYS System.ODBC.OA_FKEYS UPDATE_RULE 10 null short 0 5 false true true true true false false Nullable null null Searchable null null java.lang.Short 5 5 10 OA_FKEYS UPDATE_RULE mmuuid:587dffc9-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_FKEYS System.ODBC.OA_FKEYS DELETE_RULE 11 null short 0 5 false true true true true false false Nullable null null Searchable null null java.lang.Short 5 5 10 OA_FKEYS DELETE_RULE mmuuid:587dffca-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_FKEYS System.ODBC.OA_FKEYS FKCOLUMN_NAME 8 null string 0 128 false true true true true false false Nullable null null Searchable null null java.lang.String 128 128 10 OA_FKEYS FKCOLUMN_NAME mmuuid:587dffcb-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_FKEYS System.ODBC.OA_FKEYS PKTABLE_NAME 3 null string 0 128 false true true true true false false Nullable null null Searchable null null java.lang.String 128 128 10 OA_FKEYS PKTABLE_NAME mmuuid:587dffcc-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System OA_FKEYS System.ODBC.OA_FKEYS PKTABLE_QUALIFIER 1 null string 0 128 false true true true true false false Nullable null null Searchable null null java.lang.String 128 128 10 OA_FKEYS PKTABLE_QUALIFIER mmuuid:587dffcd-2ca5-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System KeyElements System.KeyElements KeyName 4 null string 0 255 true true false false false false false Nullable null null Searchable null null java.lang.String 255 255 10 KEYELEMENTS KEYNAME mmuuid:58a81400-ba68-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System KeyElements System.KeyElements RefKeyUID 8 null string 0 50 true true false false false false false Nullable null null Searchable null null java.lang.String 50 50 10 KEYELEMENTS REFKEYUID mmuuid:58a81402-ba68-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System KeyElements System.KeyElements UID 9 null string 0 50 true true false false false false false No Nulls null null Searchable null null java.lang.String 50 50 10 KEYELEMENTS UID mmuuid:58a81403-ba68-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System KeyElements System.KeyElements GroupUpperName 7 null string 0 255 true true false true false false false No Nulls null null Searchable null null java.lang.String 255 255 10 KEYELEMENTS GROUPUPPERNAME mmuuid:58a81404-ba68-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System ProcedureParams System.ProcedureParams TypeLength 9 null integer 0 10 true true false false false false false No Nulls null null Searchable null (0) java.lang.Integer 10 10 10 PROCEDUREPARAMS TYPELENGTH mmuuid:5e0fac00-634e-1e44-a903-c1472e78d1c5 null", //$NON-NLS-1$
- "System Procedures System.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 PROCEDURES DESCRIPTION mmuuid:61164b00-3ab4-1edb-8606-be949cc6da52 null", //$NON-NLS-1$
- "System DataTypeProperties System.DataTypeProperties DataType 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 DATATYPEPROPERTIES DATATYPE mmuuid:6609d102-c90a-1de7-ad1c-f3ce4292824e null", //$NON-NLS-1$
- "System DataTypeProperties System.DataTypeProperties Name 2 null string 0 50 true true false true true false false No Nulls null null Searchable null null java.lang.String 50 50 10 DATATYPEPROPERTIES NAME mmuuid:6609d103-c90a-1de7-ad1c-f3ce4292824e null", //$NON-NLS-1$
- "System DataTypeProperties System.DataTypeProperties Value 3 null string 0 255 true true false true true false false No Nulls null null Searchable null null java.lang.String 255 255 10 DATATYPEPROPERTIES VALUE mmuuid:6609d106-c90a-1de7-ad1c-f3ce4292824e null", //$NON-NLS-1$
- "System Models System.Models SupportsWhereAll 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 MODELS SUPPORTSWHEREALL mmuuid:6b529981-b67c-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Models System.Models SupportsOrderBy 4 null boolean 0 1 true true false false false false false No Nulls null null Searchable null null java.lang.Boolean 1 1 10 MODELS SUPPORTSORDERBY mmuuid:6c377b40-b67c-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Models System.Models SupportsJoin 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 MODELS SUPPORTSJOIN mmuuid:6c377b42-b67c-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Models System.Models SupportsDistinct 6 null boolean 0 1 true true false false false false false No Nulls null null Searchable null null java.lang.Boolean 1 1 10 MODELS SUPPORTSDISTINCT mmuuid:6c377b43-b67c-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Models System.Models SupportsOuterJoin 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 MODELS SUPPORTSOUTERJOIN mmuuid:6c377b44-b67c-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Procedures System.Procedures ModelName 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 PROCEDURES MODELNAME mmuuid:7a19a9c2-b863-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Procedures System.Procedures Name 2 null string 0 255 true true false true false false false No Nulls null null Searchable null null java.lang.String 255 255 10 PROCEDURES NAME mmuuid:7a19a9c3-b863-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Procedures System.Procedures ModelUID 5 null string 0 50 true true false false false false false No Nulls null null Searchable null null java.lang.String 50 50 10 PROCEDURES MODELUID mmuuid:7a19a9c6-b863-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Procedures System.Procedures ReturnsResults 4 null boolean 0 1 true true false false false false false No Nulls null null Searchable null null java.lang.Boolean 1 1 10 PROCEDURES RETURNSRESULTS mmuuid:7afe8b81-b863-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Procedures System.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 PROCEDURES UID mmuuid:7afe8b83-b863-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Elements System.Elements ModelName 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 ELEMENTS MODELNAME mmuuid:7b0da102-b9b3-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Elements System.Elements GroupName 2 null string 0 255 true true false true false false false No Nulls null null Searchable null null java.lang.String 255 255 10 ELEMENTS GROUPNAME mmuuid:7b0da103-b9b3-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Elements System.Elements GroupFullName 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 ELEMENTS GROUPFULLNAME mmuuid:7b0da104-b9b3-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Elements System.Elements 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 ELEMENTS NAME mmuuid:7b0da105-b9b3-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Elements System.Elements 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 ELEMENTS POSITION mmuuid:7b0da106-b9b3-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Elements System.Elements 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 ELEMENTS DATATYPE mmuuid:7bf282c3-b9b3-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Elements System.Elements 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 ELEMENTS SCALE mmuuid:7bf282c4-b9b3-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Elements System.Elements ElementLength 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 ELEMENTS ELEMENTLENGTH mmuuid:7bf282c5-b9b3-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Elements System.Elements 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 ELEMENTS ISLENGTHFIXED mmuuid:7bf282c7-b9b3-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Elements System.Elements 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 ELEMENTS SUPPORTSSELECT mmuuid:7bf282c8-b9b3-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Elements System.Elements 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 ELEMENTS SUPPORTSUPDATES mmuuid:7ce6a6c0-b9b3-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Elements System.Elements 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 ELEMENTS ISCASESENSITIVE mmuuid:7ce6a6c1-b9b3-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Elements System.Elements 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 ELEMENTS ISSIGNED mmuuid:7ce6a6c2-b9b3-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Elements System.Elements 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 ELEMENTS ISCURRENCY mmuuid:7ce6a6c3-b9b3-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Elements System.Elements 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 ELEMENTS ISAUTOINCREMENTED mmuuid:7ce6a6c4-b9b3-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Elements System.Elements 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 ELEMENTS NULLTYPE mmuuid:7ce6a6c5-b9b3-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Elements System.Elements 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 ELEMENTS MINRANGE mmuuid:7ce6a6c6-b9b3-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Elements System.Elements 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 ELEMENTS MAXRANGE mmuuid:7ce6a6c7-b9b3-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Elements System.Elements 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 ELEMENTS SEARCHTYPE mmuuid:7ce6a6c8-b9b3-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Elements System.Elements 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 ELEMENTS FORMAT mmuuid:7ce6a6c9-b9b3-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Elements System.Elements 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 ELEMENTS DEFAULTVALUE mmuuid:7ddacac1-b9b3-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Elements System.Elements 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 ELEMENTS JAVACLASS mmuuid:7ddacac2-b9b3-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Elements System.Elements UID 29 null string 0 50 true true false false false false false No Nulls null null Searchable null null java.lang.String 50 50 10 ELEMENTS UID mmuuid:7ddacac3-b9b3-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Elements System.Elements 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 ELEMENTS PRECISION mmuuid:7ddacac5-b9b3-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Elements System.Elements 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 ELEMENTS RADIX mmuuid:7ddacac7-b9b3-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System VirtualDatabases System.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 VIRTUALDATABASES NAME mmuuid:8cfee540-c1d3-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "System VirtualDatabases System.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 VIRTUALDATABASES VERSION mmuuid:8cfee541-c1d3-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "System Elements System.Elements 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 ELEMENTS NAMEINSOURCE mmuuid:8f854500-3416-1dee-8e07-e3cb3008f82b null", //$NON-NLS-1$
- "System ProcedureParams System.ProcedureParams Type 6 null string 0 100 true true false false false false false No Nulls null null Searchable null null java.lang.String 100 100 10 PROCEDUREPARAMS TYPE mmuuid:91fce1c0-6663-1de8-a732-e7f41500bc3a null", //$NON-NLS-1$
- "System ProcedureParams System.ProcedureParams Scale 10 null integer 0 10 true true true false false false false No Nulls null null Searchable null (0) java.lang.Integer 10 10 10 PROCEDUREPARAMS SCALE mmuuid:95044680-634e-1e44-a903-c1472e78d1c5 null", //$NON-NLS-1$
- "System ProcedureParams System.ProcedureParams ModelName 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 PROCEDUREPARAMS MODELNAME mmuuid:959eca00-b8f3-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System ProcedureParams System.ProcedureParams ProcedureName 2 null string 0 255 true true false true false false false No Nulls null null Searchable null null java.lang.String 255 255 10 PROCEDUREPARAMS PROCEDURENAME mmuuid:959eca01-b8f3-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System ProcedureParams System.ProcedureParams Name 3 null string 0 255 true true false false false false false No Nulls null null Searchable null null java.lang.String 255 255 10 PROCEDUREPARAMS NAME mmuuid:959eca03-b8f3-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System ProcedureParams System.ProcedureParams DataType 4 null string 0 25 true true false true true false false No Nulls null null Searchable null null java.lang.String 25 25 10 PROCEDUREPARAMS DATATYPE mmuuid:959eca04-b8f3-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System ProcedureParams System.ProcedureParams 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 PROCEDUREPARAMS POSITION mmuuid:959eca06-b8f3-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System ProcedureParams System.ProcedureParams Optional 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 PROCEDUREPARAMS OPTIONAL mmuuid:959eca08-b8f3-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Keys System.Keys NameInSource 5 null string 0 255 true true false false false false false Nullable null null Searchable null null java.lang.String 255 255 10 KEYS NAMEINSOURCE mmuuid:9a749d40-3424-1dee-8e07-e3cb3008f82b null", //$NON-NLS-1$
- "System KeyProperties System.KeyProperties ModelName 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 KEYPROPERTIES MODELNAME mmuuid:9ba7aa01-1142-1ff5-a438-98ce9bfae8da null", //$NON-NLS-1$
- "System ReferenceKeyColumns System.JDBC.ReferenceKeyColumns FKTABLE_CAT 5 null string 0 1 false true true true true false false Nullable null null Searchable null null java.lang.String 1 1 10 REFERENCEKEYCOLUMNS FKTABLE_CAT mmuuid:9d4fe981-2c99-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System ReferenceKeyColumns System.JDBC.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 REFERENCEKEYCOLUMNS DELETE_RULE mmuuid:9d4fe982-2c99-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System ReferenceKeyColumns System.JDBC.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 REFERENCEKEYCOLUMNS FKTABLE_SCHEM mmuuid:9d4fe983-2c99-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System ReferenceKeyColumns System.JDBC.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 REFERENCEKEYCOLUMNS PK_NAME mmuuid:9d4fe984-2c99-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System ReferenceKeyColumns System.JDBC.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 REFERENCEKEYCOLUMNS FKCOLUMN_NAME mmuuid:9d4fe985-2c99-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System ReferenceKeyColumns System.JDBC.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 REFERENCEKEYCOLUMNS PKTABLE_NAME mmuuid:9d4fe986-2c99-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System ReferenceKeyColumns System.JDBC.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 REFERENCEKEYCOLUMNS FK_NAME mmuuid:9d4fe987-2c99-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System ReferenceKeyColumns System.JDBC.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 REFERENCEKEYCOLUMNS KEY_SEQ mmuuid:9d4fe988-2c99-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System ReferenceKeyColumns System.JDBC.ReferenceKeyColumns PKTABLE_CAT 1 null string 0 1 false true true true true false false Nullable null null Searchable null null java.lang.String 1 1 10 REFERENCEKEYCOLUMNS PKTABLE_CAT mmuuid:9d4fe989-2c99-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System ReferenceKeyColumns System.JDBC.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 REFERENCEKEYCOLUMNS UPDATE_RULE mmuuid:9d4fe98a-2c99-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System ReferenceKeyColumns System.JDBC.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 REFERENCEKEYCOLUMNS FKTABLE_NAME mmuuid:9d4fe98b-2c99-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System ReferenceKeyColumns System.JDBC.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 REFERENCEKEYCOLUMNS DEFERRABILITY mmuuid:9d4fe98c-2c99-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System ReferenceKeyColumns System.JDBC.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 REFERENCEKEYCOLUMNS PKCOLUMN_NAME mmuuid:9d4fe98d-2c99-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System ReferenceKeyColumns System.JDBC.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 REFERENCEKEYCOLUMNS PKTABLE_SCHEM mmuuid:9d4fe98e-2c99-1f8d-a539-a73e664462a1 null", //$NON-NLS-1$
- "System KeyProperties System.KeyProperties GroupFullName 2 null string 0 2048 true true false true false false false No Nulls null null Searchable null null java.lang.String 2048 2048 10 KEYPROPERTIES GROUPFULLNAME mmuuid:9d80afc0-1142-1ff5-a438-98ce9bfae8da null", //$NON-NLS-1$
- "System Keys System.Keys Type 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 KEYS TYPE mmuuid:9e0dce80-ce82-1de7-8c2d-d908d66ab0ba null", //$NON-NLS-1$
- "System Groups System.Groups IsMaterialized 13 null boolean 0 0 false true true false false false false No Nulls null null Searchable null null java.lang.Boolean 0 0 10 GROUPS ISMATERIALIZED mmuuid:9e5c3980-04e6-101e-861a-a893857ac5a5 null", //$NON-NLS-1$
- "System KeyProperties System.KeyProperties KeyName 3 null string 0 255 false true true true true false false Nullable null null Searchable null null java.lang.String 0 255 10 KEYPROPERTIES KEYNAME mmuuid:9e74d3c0-1142-1ff5-a438-98ce9bfae8da null", //$NON-NLS-1$
- "System KeyProperties System.KeyProperties Name 4 null string 0 255 false true true true true false false Nullable null null Searchable null null java.lang.String 0 255 10 KEYPROPERTIES NAME mmuuid:9e74d3c5-1142-1ff5-a438-98ce9bfae8da null", //$NON-NLS-1$
- "System KeyProperties System.KeyProperties Value 5 null string 0 255 false true true true true false false Nullable null null Searchable null null java.lang.String 0 255 10 KEYPROPERTIES VALUE mmuuid:9e74d3ca-1142-1ff5-a438-98ce9bfae8da null", //$NON-NLS-1$
- "System KeyProperties System.KeyProperties GroupName 6 null string 0 255 true true false true false false false No Nulls null null Searchable null null java.lang.String 255 255 10 KEYPROPERTIES GROUPNAME mmuuid:9e74d3cf-1142-1ff5-a438-98ce9bfae8da null", //$NON-NLS-1$
- "System KeyProperties System.KeyProperties GroupUpperName 7 null string 0 255 true true false true false false false No Nulls null null Searchable null null java.lang.String 255 255 10 KEYPROPERTIES GROUPUPPERNAME mmuuid:9e74d3d4-1142-1ff5-a438-98ce9bfae8da null", //$NON-NLS-1$
- "System KeyProperties System.KeyProperties 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 KEYPROPERTIES UID mmuuid:9f68f7c0-1142-1ff5-a438-98ce9bfae8da null", //$NON-NLS-1$
- "System Models System.Models PrimaryMetamodelURI 11 null string 0 255 false true false false false false false No Nulls null null Searchable null null java.lang.String 255 255 10 MODELS PRIMARYMETAMODELURI mmuuid:a5682040-ea71-1ee5-b836-ce1850f9b1e5 null", //$NON-NLS-1$
- "System Procedures System.Procedures FullName 8 null string 0 2048 false true true false false false false No Nulls null null Searchable null null java.lang.String 2048 2048 10 PROCEDURES FULLNAME mmuuid:af58c3c0-23d0-1f11-bb31-8e2670f95fb1 null", //$NON-NLS-1$
- "System Groups System.Groups Description 11 null string 0 255 false true true true true false false Nullable null null Searchable null null java.lang.String 255 255 10 GROUPS DESCRIPTION mmuuid:afce0780-3a4e-1edb-8606-be949cc6da52 null", //$NON-NLS-1$
- "System Groups System.Groups UID 9 null string 0 50 true true false false false false false No Nulls null null Searchable null null java.lang.String 50 50 10 GROUPS UID mmuuid:b1e4e240-ec67-1de9-9115-ad36abcfb081 null", //$NON-NLS-1$
- "System Groups System.Groups ModelName 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 GROUPS MODELNAME mmuuid:b1e4e243-ec67-1de9-9115-ad36abcfb081 null", //$NON-NLS-1$
- "System Groups System.Groups FullName 2 null string 0 2048 true true false true false false false No Nulls null null Searchable null null java.lang.String 2048 2048 10 GROUPS FULLNAME mmuuid:b1e4e244-ec67-1de9-9115-ad36abcfb081 null", //$NON-NLS-1$
- "System Groups System.Groups 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 GROUPS NAME mmuuid:b1e4e245-ec67-1de9-9115-ad36abcfb081 null", //$NON-NLS-1$
- "System Groups System.Groups 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 GROUPS ISPHYSICAL mmuuid:b1e4e248-ec67-1de9-9115-ad36abcfb081 null", //$NON-NLS-1$
- "System Groups System.Groups Cardinality 10 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 GROUPS CARDINALITY mmuuid:b2d85ec0-ebd5-1eda-b235-cf50afc035e1 null", //$NON-NLS-1$
- "System Groups System.Groups UpperName 7 null string 0 255 true true false true false false false No Nulls null null Searchable null null java.lang.String 255 255 10 GROUPS UPPERNAME mmuuid:b2d90641-ec67-1de9-9115-ad36abcfb081 null", //$NON-NLS-1$
- "System Groups System.Groups 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 GROUPS TYPE mmuuid:b2d90642-ec67-1de9-9115-ad36abcfb081 null", //$NON-NLS-1$
- "System Elements System.Elements 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 ELEMENTS CHAROCTETLENGTH mmuuid:c0b5e1c0-cdd8-1de7-8c2d-d908d66ab0ba null", //$NON-NLS-1$
- "System Groups System.Groups 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 GROUPS NAMEINSOURCE mmuuid:c143df00-3409-1dee-8e07-e3cb3008f82b null", //$NON-NLS-1$
- "System ProcedureParams System.ProcedureParams Radix 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 PROCEDUREPARAMS RADIX mmuuid:c65e8d80-634e-1e44-a903-c1472e78d1c5 null", //$NON-NLS-1$
- "System GroupProperties System.GroupProperties ModelName 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 GROUPPROPERTIES MODELNAME mmuuid:c8e43042-c509-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "System GroupProperties System.GroupProperties GroupName 5 null string 0 255 true true false true false false false No Nulls null null Searchable null null java.lang.String 255 255 10 GROUPPROPERTIES GROUPNAME mmuuid:c8e43043-c509-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "System GroupProperties System.GroupProperties GroupFullName 2 null string 0 2048 true true false true false false false No Nulls null null Searchable null null java.lang.String 2048 2048 10 GROUPPROPERTIES GROUPFULLNAME mmuuid:c8e43044-c509-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "System GroupProperties System.GroupProperties Name 3 null string 0 255 true true false true true false false No Nulls null null Searchable null null java.lang.String 255 255 10 GROUPPROPERTIES NAME mmuuid:c8e43045-c509-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "System GroupProperties System.GroupProperties UID 7 null string 0 50 true true false false true false false No Nulls null null Searchable null null java.lang.String 50 50 10 GROUPPROPERTIES UID mmuuid:c8e43046-c509-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "System GroupProperties System.GroupProperties Value 4 null string 0 255 true true false true true false false No Nulls null null Searchable null null java.lang.String 255 255 10 GROUPPROPERTIES VALUE mmuuid:c8e43048-c509-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "System GroupProperties System.GroupProperties GroupUpperName 6 null string 0 255 true true false true false false false No Nulls null null Searchable null null java.lang.String 255 255 10 GROUPPROPERTIES GROUPUPPERNAME mmuuid:c8e43049-c509-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "System Models System.Models IsPhysical 2 null boolean 0 1 true true false false false false false No Nulls null null Searchable null null java.lang.Boolean 1 1 10 MODELS ISPHYSICAL mmuuid:d5a73440-b6b7-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Models System.Models MaxSetSize 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 MODELS MAXSETSIZE mmuuid:d5a73442-b6b7-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System KeyElements System.KeyElements KeyType 5 null string 0 20 true true false false false false false No Nulls null null Searchable null null java.lang.String 20 20 10 KEYELEMENTS KEYTYPE mmuuid:db288f80-ce87-1de7-8c2d-d908d66ab0ba null", //$NON-NLS-1$
- "System DataTypeProperties System.DataTypeProperties UID 4 null string 0 50 true true false false true false false No Nulls null null Searchable null null java.lang.String 50 50 10 DATATYPEPROPERTIES UID mmuuid:dba25280-a5e0-1e42-ba2a-a0f062ab71df null", //$NON-NLS-1$
- "System DataTypes System.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 DATATYPES RUNTIMETYPE mmuuid:de321500-e584-1e20-b806-d8b2a0a91d66 null", //$NON-NLS-1$
- "System DataTypes System.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 DATATYPES ISSTANDARD mmuuid:e21059c5-b80e-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System DataTypes System.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 DATATYPES ISPHYSICAL mmuuid:e2f53b80-b80e-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System DataTypes System.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 DATATYPES TYPENAME mmuuid:e2f53b81-b80e-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System DataTypes System.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 DATATYPES SCALE mmuuid:e2f53b82-b80e-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System DataTypes System.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 DATATYPES NULLTYPE mmuuid:e2f53b84-b80e-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System DataTypes System.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 DATATYPES ISSIGNED mmuuid:e2f53b85-b80e-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System DataTypes System.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 DATATYPES ISAUTOINCREMENTED mmuuid:e2f53b86-b80e-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System DataTypes System.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 DATATYPES ISCASESENSITIVE mmuuid:e2f53b87-b80e-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System DataTypes System.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 DATATYPES JAVACLASS mmuuid:e3e95f82-b80e-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System DataTypes System.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 DATATYPES UID mmuuid:e3e95f83-b80e-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System DataTypes System.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 DATATYPES PRECISION mmuuid:e3e95f84-b80e-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System DataTypes System.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 DATATYPES RADIX mmuuid:e3e95f85-b80e-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System DataTypes System.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 DATATYPES SEARCHTYPE mmuuid:e3e95f87-b80e-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System DataTypes System.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 DATATYPES DESCRIPTION mmuuid:e81d8400-3a83-1edb-8606-be949cc6da52 null", //$NON-NLS-1$
- "System DataTypes System.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 DATATYPES BASETYPE mmuuid:e8729800-e584-1e20-b806-d8b2a0a91d66 null", //$NON-NLS-1$
- "System Elements System.Elements GroupUpperName 27 null string 0 255 true true false true false false false No Nulls null null Searchable null null java.lang.String 255 255 10 ELEMENTS GROUPUPPERNAME mmuuid:e92fbb00-c2a0-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "System Elements System.Elements UpperName 28 null string 0 255 true true false true false false false No Nulls null null Searchable null null java.lang.String 255 255 10 ELEMENTS UPPERNAME mmuuid:ea23df00-c2a0-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "System KeyElements System.KeyElements Name 3 null string 0 255 true true false false false false false No Nulls null null Searchable null null java.lang.String 255 255 10 KEYELEMENTS NAME mmuuid:ed887840-c318-1de7-b515-bad6cb0abb8d null", //$NON-NLS-1$
- "System Groups System.Groups IsSystem 12 null boolean 0 1 false true true true true false false Nullable null null Searchable null null java.lang.Boolean 1 1 10 GROUPS ISSYSTEM mmuuid:ee427900-7eec-1eea-940e-bcb0b71c723a null", //$NON-NLS-1$
- "System ProcedureParams System.ProcedureParams NullType 12 null string 0 10 true true false false false false false No Nulls null null Searchable null null java.lang.String 10 10 10 PROCEDUREPARAMS NULLTYPE mmuuid:f8acf880-634e-1e44-a903-c1472e78d1c5 null", //$NON-NLS-1$
- "PartsSupplier PARTS 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 PARTS PART_ID mmuuid:fadcd7c0-73fe-1edc-a81c-ecf397b10590 null", //$NON-NLS-1$
- "System Keys System.Keys ModelName 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 KEYS MODELNAME mmuuid:fe2c6482-b9eb-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Keys System.Keys GroupName 8 null string 0 255 true true false true false false false No Nulls null null Searchable null null java.lang.String 255 255 10 KEYS GROUPNAME mmuuid:fe2c6483-b9eb-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Keys System.Keys GroupFullName 2 null string 0 2048 true true false true false false false No Nulls null null Searchable null null java.lang.String 2048 2048 10 KEYS GROUPFULLNAME mmuuid:fe2c6484-b9eb-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Keys System.Keys Name 3 null string 0 255 true true false false false false false No Nulls null null Searchable null null java.lang.String 255 255 10 KEYS NAME mmuuid:fe2c6485-b9eb-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Keys System.Keys Description 4 null string 0 255 true true false false false false false Nullable null null Searchable null null java.lang.String 255 255 10 KEYS DESCRIPTION mmuuid:fe2c6486-b9eb-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Keys System.Keys IsIndexed 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 KEYS ISINDEXED mmuuid:ff208881-b9eb-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Keys System.Keys RefKeyUID 10 null string 0 50 true true false false false false false Nullable null null Searchable null null java.lang.String 50 50 10 KEYS REFKEYUID mmuuid:ff208882-b9eb-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
- "System Keys System.Keys UID 11 null string 0 50 true true false false false false false No Nulls null null Searchable null null java.lang.String 50 50 10 KEYS UID mmuuid:ff208884-b9eb-1de7-b705-ef2376c3949e null", //$NON-NLS-1$
-
- };
- executeAndAssertResults("select* from System.Elements order by UID", //$NON-NLS-1$
- expected);
+ @Test public void testColumns() throws Exception {
+ checkResult("testColumns", "select* from System.Columns order by Name"); //$NON-NLS-1$ //$NON-NLS-2$
}
- @Test public void testGroupType() {
+ @Test public void testTableType() {
String[] expected = { "Type[string] ", "Table", }; //$NON-NLS-1$ //$NON-NLS-2$
executeAndAssertResults(
- "select distinct Type from System.Groups order by Type", //$NON-NLS-1$
+ "select distinct Type from System.Tables order by Type", //$NON-NLS-1$
expected);
}
- @Test public void testGroupIsSystem() {
-
- String[] expected = { "Name[string] ", "PARTS", "SHIP_VIA", "STATUS", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- "SUPPLIER", "SUPPLIER_PARTS", }; //$NON-NLS-1$ //$NON-NLS-2$
- executeAndAssertResults(
- "select Name from System.Groups where IsSystem = 'false' order by Name", //$NON-NLS-1$
- expected);
+ @Test public void testTableIsSystem() throws Exception {
+ checkResult("testTableIsSystem", "select Name from System.Tables where IsSystem = 'false' order by Name"); //$NON-NLS-1$ //$NON-NLS-2$
}
+ @Ignore("ODBC support to be readded")
@Test public void test_OA_PROC() {
String[] expected = {
@@ -633,6 +148,7 @@
executeAndAssertResults("select* FROM System.ODBC.OA_PROC", expected); //$NON-NLS-1$
}
+ @Ignore("ODBC support to be readded")
@Test public void test_OA_PROCCOLUMNS() {
String[] expected = {
@@ -656,6 +172,7 @@
expected);
}
+ @Ignore("ODBC support to be readded")
@Test public void testOATYPES() {
String[] expected = { "TYPE_NAME[string] DATA_TYPE[short] PRECISION[integer] LITERAL_PREFIX[string] LITERAL_SUFFIX[string] CREATE_PARAMS[string] NULLABLE[short] CASE_SENSITIVE[short] SEARCHABLE[short] UNSIGNED_ATTRIBUTE[short] MONEY[short] AUTO_INCREMENT[short] LOCAL_TYPE_NAME[string] MINIMUM_SCALE[short] MAXIMUM_SCALE[short]", }; //$NON-NLS-1$
@@ -667,6 +184,7 @@
expected);
}
+ @Ignore("ODBC support to be readded")
@Test public void testOACOLUMNSAll() {
String[] expected = {
@@ -956,6 +474,7 @@
expected);
}
+ @Ignore("ODBC support to be readded")
@Test public void testOATYPESAll() {
String[] expected = {
"TYPE_NAME[string] DATA_TYPE[short] OA_PRECISION[integer] LITERAL_PREFIX[string] LITERAL_SUFFIX[string] CREATE_PARAMS[string] OA_NULLABLE[short] CASE_SENSITIVE[short] OA_SEARCHABLE[short] UNSIGNED_ATTRIB[short] OA_MONEY[short] AUTO_INCREMENT[short] MINIMUM_SCALE[short] MAXIMUM_SCALE[short] LOCAL_TYPE_NAME[string]", //$NON-NLS-1$
@@ -977,6 +496,7 @@
}
+ @Ignore("ODBC support to be readded")
@Test public void testOAFKEYS() {
String[] expected = {
"PKTABLE_QUALIFIER[string] PKTABLE_OWNER[string] PKTABLE_NAME[string] PKCOLUMN_NAME[string] FKTABLE_QUALIFIER[string] FKTABLE_OWNER[string] FKTABLE_NAME[string] FKCOLUMN_NAME[string] KEY_SEQ[short] UPDATE_RULE[short] DELETE_RULE[short] FK_NAME[string] PK_NAME[string]", //$NON-NLS-1$
@@ -997,6 +517,7 @@
}
+ @Ignore("ODBC support to be readded")
@Test public void testOASTATISTICS() {
String[] expected = {
"TABLE_QUALIFIER[string] TABLE_OWNER[string] TABLE_NAME[string] NON_UNIQUE[short] INDEX_QUALIFIER[string] INDEX_NAME[string] OA_TYPE[short] SEQ_IN_INDEX[short] COLUMN_NAME[string] OA_COLLATION[string] OA_CARDINALITY[string] OA_PAGES[string] FILTER_CONDITIONS[string]", //$NON-NLS-1$
@@ -1016,27 +537,6 @@
}
- @Test public void testDefect12054() {
-
- String[] expected = {
- "PKTABLE_QUALIFIER[string] PKTABLE_OWNER[string] PKTABLE_NAME[string] PKCOLUMN_NAME[string] FKTABLE_QUALIFIER[string] FKTABLE_OWNER[string] FKTABLE_NAME[string] FKCOLUMN_NAME[string] KEY_SEQ[short] UPDATE_RULE[short] DELETE_RULE[short] FK_NAME[string] PK_NAME[string]", //$NON-NLS-1$
- " PARTS PART_ID SUPPLIER_PARTS PART_ID 1 null null FK_SPLIER_PRTS_PRTS PK_PARTS", //$NON-NLS-1$
- " SHIP_VIA SHIPPER_ID null null 1 null null null PK_SHIP_VIA", //$NON-NLS-1$
- " STATUS STATUS_ID SUPPLIER SUPPLIER_STATUS 1 null null FK_SPLIER_STATS PK_STATUS", //$NON-NLS-1$
- " SUPPLIER SUPPLIER_ID SUPPLIER_PARTS SUPPLIER_ID 1 null null FK_SPLY_PRTS_SPLY PK_SUPPLIER", //$NON-NLS-1$
- " SUPPLIER SUPPLIER_STATUS null null 1 null null null FK_SPLIER_STATS", //$NON-NLS-1$
- " SUPPLIER_PARTS PART_ID null null 2 null null null PK_SUPPLIER_PARTS", //$NON-NLS-1$
- " SUPPLIER_PARTS SUPPLIER_ID null null 1 null null null PK_SUPPLIER_PARTS", //$NON-NLS-1$
- " SUPPLIER_PARTS PART_ID null null 1 null null null FK_SPLIER_PRTS_PRTS", //$NON-NLS-1$
- " SUPPLIER_PARTS SUPPLIER_ID null null 1 null null null FK_SPLY_PRTS_SPLY", //$NON-NLS-1$
-
- };
-
- executeAndAssertResults(
- "select '' AS PKTABLE_QUALIFIER, '' AS PKTABLE_OWNER, PK.GroupName AS PKTABLE_NAME, PK.Name AS PKCOLUMN_NAME, '' AS FKTABLE_QUALIFIER, '' AS FKTABLE_OWNER, FK.GroupName AS FKTABLE_NAME, FK.Name AS FKCOLUMN_NAME, convert(PK.Position, short) AS KEY_SEQ, convert(null, short) AS UPDATE_RULE, convert(null, short) AS DELETE_RULE, FK.KeyName AS FK_NAME, PK.KeyName AS PK_NAME FROM System.KeyElements AS PK LEFT OUTER JOIN System.KeyElements AS FK ON FK.RefKeyUID = PK.UID order by PKTABLE_NAME", //$NON-NLS-1$
- expected);
- }
-
@Test public void testDefect12064() {
String[] expected = {
"KeyName[string] RefKeyUID[string] ", //$NON-NLS-1$
@@ -1049,32 +549,17 @@
};
- executeAndAssertResults("select KeyName, RefKeyUID FROM System.KeyElements WHERE RefKeyUID IS NULL order by KeyName",expected); //$NON-NLS-1$
+ executeAndAssertResults("select KeyName, RefKeyUID FROM System.KeyColumns WHERE RefKeyUID IS NULL order by KeyName",expected); //$NON-NLS-1$
}
- @Test public void testSlowSystemQuery() {
- String[] expected = { "groupFullName[string] SOURCE_NAME[string] INFO_CAT_NAME[string] COMMON_SCHEMA_FLAG[string]", }; //$NON-NLS-1$
- executeAndAssertResults(
- "select sgp1.groupFullName, sgp1.groupname AS SOURCE_NAME, sgp1.value AS INFO_CAT_NAME, sgp3.value AS COMMON_SCHEMA_FLAG from System.GroupProperties sgp1, System.GroupProperties sgp2, System.GroupProperties sgp3 where sgp1.groupFullName = sgp2.groupFullName and sgp1.groupFullName = sgp3.groupFullName and sgp2.groupFullName = sgp3.groupFullName and sgp1.name='InformationCategory' and sgp2.name = 'presentationMetadataFlag' and sgp2.value = 'true' and sgp3.name = 'infoCatCommonSchemaFlag'", //$NON-NLS-1$
- expected);
+ @Test public void testReferenceKeyColumns() throws Exception {
+ checkResult("testReferenceKeyColumns", "select* FROM System.ReferenceKeyColumns order by PKTABLE_NAME"); //$NON-NLS-1$ //$NON-NLS-2$
}
-
- @Test public void testReferenceKeyColumns() {
- String[] expected = {
- "PKTABLE_CAT[string] PKTABLE_SCHEM[string] PKTABLE_NAME[string] PKCOLUMN_NAME[string] FKTABLE_CAT[string] FKTABLE_SCHEM[string] FKTABLE_NAME[string] FKCOLUMN_NAME[string] KEY_SEQ[short] UPDATE_RULE[integer] DELETE_RULE[integer] FK_NAME[string] PK_NAME[string] DEFERRABILITY[integer]", //$NON-NLS-1$
- "null PartsSupplier PartsSupplier.PARTSSUPPLIER.PARTS PART_ID null PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER_PARTS PART_ID 1 3 3 FK_SPLIER_PRTS_PRTS PK_PARTS 5", //$NON-NLS-1$
- "null PartsSupplier PartsSupplier.PARTSSUPPLIER.STATUS STATUS_ID null PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER SUPPLIER_STATUS 1 3 3 FK_SPLIER_STATS PK_STATUS 5", //$NON-NLS-1$
- "null PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER SUPPLIER_ID null PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER_PARTS SUPPLIER_ID 1 3 3 FK_SPLY_PRTS_SPLY PK_SUPPLIER 5" //$NON-NLS-1$
- };
-
- executeAndAssertResults("select* FROM System.JDBC.ReferenceKeyColumns order by PKTABLE_NAME", //$NON-NLS-1$
- expected);
- }
@Test public void testVirtualLookup() {
String[] expected = { "expr[string]", "null"}; //$NON-NLS-1$ //$NON-NLS-2$
executeAndAssertResults(
- "select lookup('System.KeyElements', 'RefKeyUID', 'KeyName', 'PK_PARTS')", expected); //$NON-NLS-1$
+ "select lookup('System.KeyColumns', 'RefKeyUID', 'KeyName', 'PK_PARTS')", expected); //$NON-NLS-1$
}
}
Modified: branches/JCA/test-integration/common/src/test/java/com/metamatrix/systemmodel/TestVirtualDocWithVirtualProc.java
===================================================================
--- branches/JCA/test-integration/common/src/test/java/com/metamatrix/systemmodel/TestVirtualDocWithVirtualProc.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/java/com/metamatrix/systemmodel/TestVirtualDocWithVirtualProc.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -54,10 +54,10 @@
@Test public void testDefect15241() {
- String sql = "SELECT ModelName, Name, Description FROM System.Groups WHERE Name = 'yyyTestDocument'"; //$NON-NLS-1$
+ String sql = "SELECT SchemaName, Name, Description FROM System.Tables WHERE Name = 'yyyTestDocument'"; //$NON-NLS-1$
String[] expected ={
- "ModelName[string] Name[string] Description[string]", //$NON-NLS-1$
+ "SchemaName[string] Name[string] Description[string]", //$NON-NLS-1$
"test13326Doc yyyTestDocument null", //$NON-NLS-1$
"testDoc yyyTestDocument This is a test description of virtual doc yyyTestDocument" //$NON-NLS-1$
};
@@ -65,9 +65,9 @@
}
@Test public void testDefect15241a() {
- String sql = "SELECT GroupName, Name, Description FROM System.Elements WHERE Name = 'IntKey'"; //$NON-NLS-1$
+ String sql = "SELECT TableName, Name, Description FROM System.Columns WHERE Name = 'IntKey'"; //$NON-NLS-1$
String[] expected ={
- "GroupName[string] Name[string] Description[string]", //$NON-NLS-1$
+ "TableName[string] Name[string] Description[string]", //$NON-NLS-1$
"HugeA IntKey null", //$NON-NLS-1$
"HugeB IntKey null", //$NON-NLS-1$
"LargeA IntKey null", //$NON-NLS-1$
@@ -82,11 +82,11 @@
@Test public void testDefect15241b() {
- String sql = "SELECT GroupName, Name, Value, UID FROM System.GroupProperties WHERE ModelName = 'testDoc'"; //$NON-NLS-1$
+ String sql = "SELECT Name, Value, UID FROM System.Properties"; //$NON-NLS-1$
String[] expected ={
- "GroupName[string] Name[string] Value[string] UID[string]", //$NON-NLS-1$
- "yyyTestDocument NugentXAttribute Nuuuuuge22222 mmuuid:4789b280-841c-1f15-9526-ebd0cace03e1", //$NON-NLS-1$
- "yyyTestDocument NugentYAttribute Nuuuuuge44444 mmuuid:4789b280-841c-1f15-9526-ebd0cace03e1" //$NON-NLS-1$
+ "Name[string] Value[string] UID[string]", //$NON-NLS-1$
+ "NugentXAttribute Nuuuuuge22222 mmuuid:4789b280-841c-1f15-9526-ebd0cace03e1", //$NON-NLS-1$
+ "NugentYAttribute Nuuuuuge44444 mmuuid:4789b280-841c-1f15-9526-ebd0cace03e1" //$NON-NLS-1$
};
executeAndAssertResults(sql, expected);
}
Modified: branches/JCA/test-integration/common/src/test/java/org/teiid/connector/metadata/runtime/TestMetadataObject.java
===================================================================
--- branches/JCA/test-integration/common/src/test/java/org/teiid/connector/metadata/runtime/TestMetadataObject.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/java/org/teiid/connector/metadata/runtime/TestMetadataObject.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -99,7 +99,7 @@
public Element getElementID(String groupName, String elementName, TranslationUtility transUtil) {
IQuery query = (IQuery) transUtil.parseCommand("SELECT " + elementName + " FROM " + groupName); //$NON-NLS-1$ //$NON-NLS-2$
- ISelectSymbol symbol = (ISelectSymbol) query.getSelect().getSelectSymbols().get(0);
+ ISelectSymbol symbol = query.getSelect().getSelectSymbols().get(0);
IElement element = (IElement) symbol.getExpression();
return element.getMetadataObject();
}
@@ -140,7 +140,7 @@
public void helpTestProcedureID(String procName, String shortName, int inputParamCount, String[] paramNames, TranslationUtility transUtil) throws Exception {
Procedure procID = getProcedureID(procName, inputParamCount, transUtil);
- assertEquals(procName, procID.getFullName()); //$NON-NLS-1$
+ assertEquals(procName, procID.getFullName());
assertEquals(shortName, procID.getName());
// Check children
@@ -149,7 +149,7 @@
Set actualParamNames = new HashSet();
for (Parameter childID : children) {
assertEquals(procID, childID.getParent());
- assertTrue(childID.getFullName().startsWith(procID.getFullName()));
+ assertTrue(childID.getFullName() + " " + procID.getFullName(), childID.getFullName().startsWith(procID.getFullName())); //$NON-NLS-1$
actualParamNames.add(childID.getName());
}
@@ -164,7 +164,7 @@
}
public void testProcedureID_resultSet() throws Exception {
- String[] paramNames = new String[] { "Param1", "RSParam" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$//$NON-NLS-4$
+ String[] paramNames = new String[] { "Param1", "RSParam" }; //$NON-NLS-1$ //$NON-NLS-2$
helpTestProcedureID("ConnectorMetadata.TestProc2", "TestProc2", 1, paramNames, CONNECTOR_METADATA_UTILITY); //$NON-NLS-1$ //$NON-NLS-2$
}
Modified: branches/JCA/test-integration/common/src/test/java/org/teiid/runtime/adminapi/TestEmbeddedAdmin.java
===================================================================
--- branches/JCA/test-integration/common/src/test/java/org/teiid/runtime/adminapi/TestEmbeddedAdmin.java 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/java/org/teiid/runtime/adminapi/TestEmbeddedAdmin.java 2009-12-02 23:40:40 UTC (rev 1616)
@@ -190,7 +190,7 @@
admin.changeVDBStatus("DoesNotExist", "1", VDB.DELETED); //$NON-NLS-1$ //$NON-NLS-2$
fail("Must have failed to delete a non existing VDB"); //$NON-NLS-1$
} catch (AdminException err) {
- assertEquals("VDB \"DoesNotExist\" version \"1\" does not exist or not in valid state.", err.getMessage()); //$NON-NLS-1$
+ assertEquals("VDB \"DoesNotExist\" version \"1\" is not active.", err.getMessage()); //$NON-NLS-1$
}
}
@@ -211,7 +211,7 @@
getConnection("DoesNotExist", configFile); //$NON-NLS-1$
fail("found a Connection to a non avtive VDB"); //$NON-NLS-1$
} catch (SQLException err) {
- assertEquals("VDB \"DoesNotExist\" version \"latest\" does not exist or not in valid state.", err.getMessage()); //$NON-NLS-1$
+ assertEquals("VDB \"DoesNotExist\" version \"latest\" is not active.", err.getMessage()); //$NON-NLS-1$
}
}
@@ -226,12 +226,31 @@
conn = getConnection(VDB_NAME, configFile);
fail("found a Connection to a non avtive VDB"); //$NON-NLS-1$
} catch (SQLException err) {
- assertEquals("Unexpected error finding latest version of Virtual Database TestEmpty", err.getMessage()); //$NON-NLS-1$
+ assertEquals("VDB \"TestEmpty\" version \"latest\" is not active.", err.getMessage()); //$NON-NLS-1$
} finally {
cleanupVDB(admin, VDB_NAME, "1"); //$NON-NLS-1$
}
}
+
+ @Test public void testGetConnectionToActiveDefault() throws Exception {
+ admin = getAdmin();
+ cleanupVDB(admin, VDB_NAME, "1"); //$NON-NLS-1$
+ try {
+ admin.addVDB(VDB_NAME, Util.getBinaryFile(VDB_FILE), new AdminOptions(AdminOptions.OnConflict.IGNORE));
+ admin.changeVDBStatus(VDB_NAME, "1", VDB.ACTIVE_DEFAULT); //$NON-NLS-1$
+
+ admin.addVDB(VDB_NAME, Util.getBinaryFile(VDB_FILE), new AdminOptions(AdminOptions.OnConflict.IGNORE));
+
+ admin.changeVDBStatus(VDB_NAME, "2", VDB.ACTIVE); //$NON-NLS-1$
+
+ conn = getConnection(VDB_NAME, configFile);
+ assertEquals("1", conn.getVDBVersion()); //$NON-NLS-1$
+ } finally {
+ cleanupVDB(admin, VDB_NAME, "1"); //$NON-NLS-1$
+ cleanupVDB(admin, VDB_NAME, "2"); //$NON-NLS-1$
+ }
+ }
@Test public void testSelectNonPrepared() throws Exception {
admin = getAdmin();
Modified: branches/JCA/test-integration/common/src/test/resources/3473/testGetCrossReference.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/3473/testGetCrossReference.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/3473/testGetCrossReference.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,79 +1,79 @@
-getCrossReference1
-string string string string string string string string short integer integer string string integer
-PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
-<null> test test.all_databases database_id <null> test test.all_models database_id 1 3 3 databae_model_fk databases_pk 5
-Row Count : 1
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-PKTABLE_CAT 12 <null> java.lang.String PKTABLE_CAT string test System.JDBC.ReferenceKeyColumns 1 1 0 false true false true 1 false true true true
-PKTABLE_SCHEM 12 <null> java.lang.String PKTABLE_SCHEM string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PKTABLE_NAME 12 <null> java.lang.String PKTABLE_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PKCOLUMN_NAME 12 <null> java.lang.String PKCOLUMN_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKTABLE_CAT 12 <null> java.lang.String FKTABLE_CAT string test System.JDBC.ReferenceKeyColumns 1 1 0 false true false true 1 false true true true
-FKTABLE_SCHEM 12 <null> java.lang.String FKTABLE_SCHEM string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKTABLE_NAME 12 <null> java.lang.String FKTABLE_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKCOLUMN_NAME 12 <null> java.lang.String FKCOLUMN_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-KEY_SEQ 5 <null> java.lang.Short KEY_SEQ short test System.JDBC.ReferenceKeyColumns 6 5 0 false true false true 1 false true true true
-UPDATE_RULE 4 <null> java.lang.Integer UPDATE_RULE integer test System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-DELETE_RULE 4 <null> java.lang.Integer DELETE_RULE integer test System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-FK_NAME 12 <null> java.lang.String FK_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PK_NAME 12 <null> java.lang.String PK_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-DEFERRABILITY 4 <null> java.lang.Integer DEFERRABILITY integer test System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-getCrossReference2
-string string string string string string string string short integer integer string string integer
-PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-PKTABLE_CAT 12 <null> java.lang.String PKTABLE_CAT string test System.JDBC.ReferenceKeyColumns 1 1 0 false true false true 1 false true true true
-PKTABLE_SCHEM 12 <null> java.lang.String PKTABLE_SCHEM string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PKTABLE_NAME 12 <null> java.lang.String PKTABLE_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PKCOLUMN_NAME 12 <null> java.lang.String PKCOLUMN_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKTABLE_CAT 12 <null> java.lang.String FKTABLE_CAT string test System.JDBC.ReferenceKeyColumns 1 1 0 false true false true 1 false true true true
-FKTABLE_SCHEM 12 <null> java.lang.String FKTABLE_SCHEM string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKTABLE_NAME 12 <null> java.lang.String FKTABLE_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKCOLUMN_NAME 12 <null> java.lang.String FKCOLUMN_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-KEY_SEQ 5 <null> java.lang.Short KEY_SEQ short test System.JDBC.ReferenceKeyColumns 6 5 0 false true false true 1 false true true true
-UPDATE_RULE 4 <null> java.lang.Integer UPDATE_RULE integer test System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-DELETE_RULE 4 <null> java.lang.Integer DELETE_RULE integer test System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-FK_NAME 12 <null> java.lang.String FK_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PK_NAME 12 <null> java.lang.String PK_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-DEFERRABILITY 4 <null> java.lang.Integer DEFERRABILITY integer test System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-getCrossReference3
-string string string string string string string string short short short string string short
-PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-PKTABLE_CAT 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-PKTABLE_SCHEM 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-PKTABLE_NAME 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-PKCOLUMN_NAME 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-FKTABLE_CAT 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-FKTABLE_SCHEM 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-FKTABLE_NAME 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-FKCOLUMN_NAME 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-KEY_SEQ 5 <null> java.lang.Short <null> short test <null> 6 5 0 false false false false 2 true false false false
-UPDATE_RULE 5 <null> java.lang.Short <null> short test <null> 6 5 0 false false false false 2 true false false false
-DELETE_RULE 5 <null> java.lang.Short <null> short test <null> 6 5 0 false false false false 2 true false false false
-FK_NAME 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-PK_NAME 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-DEFERRABILITY 5 <null> java.lang.Short <null> short test <null> 6 5 0 false false false false 2 true false false false
-getCrossReference4
-string string string string string string string string short integer integer string string integer
-PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
-<null> test test.all_databases database_id <null> test test.all_models database_id 1 3 3 databae_model_fk databases_pk 5
-<null> test test.all_models model_id <null> test test.all_tables model_id 1 3 3 table_model_fk models_pk 5
-Row Count : 2
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-PKTABLE_CAT 12 <null> java.lang.String PKTABLE_CAT string test System.JDBC.ReferenceKeyColumns 1 1 0 false true false true 1 false true true true
-PKTABLE_SCHEM 12 <null> java.lang.String PKTABLE_SCHEM string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PKTABLE_NAME 12 <null> java.lang.String PKTABLE_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PKCOLUMN_NAME 12 <null> java.lang.String PKCOLUMN_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKTABLE_CAT 12 <null> java.lang.String FKTABLE_CAT string test System.JDBC.ReferenceKeyColumns 1 1 0 false true false true 1 false true true true
-FKTABLE_SCHEM 12 <null> java.lang.String FKTABLE_SCHEM string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKTABLE_NAME 12 <null> java.lang.String FKTABLE_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKCOLUMN_NAME 12 <null> java.lang.String FKCOLUMN_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-KEY_SEQ 5 <null> java.lang.Short KEY_SEQ short test System.JDBC.ReferenceKeyColumns 6 5 0 false true false true 1 false true true true
-UPDATE_RULE 4 <null> java.lang.Integer UPDATE_RULE integer test System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-DELETE_RULE 4 <null> java.lang.Integer DELETE_RULE integer test System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-FK_NAME 12 <null> java.lang.String FK_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PK_NAME 12 <null> java.lang.String PK_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-DEFERRABILITY 4 <null> java.lang.Integer DEFERRABILITY integer test System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+getCrossReference1
+string string string string string string string string short integer integer string string integer
+PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
+test test all_databases database_id test test all_models database_id 1 3 3 databae_model_fk databases_pk 5
+Row Count : 1
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+PKTABLE_CAT 12 test java.lang.String PKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_SCHEM 12 test java.lang.String PKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_NAME 12 test java.lang.String PKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKCOLUMN_NAME 12 test java.lang.String PKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_CAT 12 test java.lang.String FKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_SCHEM 12 test java.lang.String FKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_NAME 12 test java.lang.String FKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKCOLUMN_NAME 12 test java.lang.String FKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+KEY_SEQ 5 test java.lang.Short KEY_SEQ short System ReferenceKeyColumns 6 5 0 false true false true 1 false true true true
+UPDATE_RULE 4 test java.lang.Integer UPDATE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+DELETE_RULE 4 test java.lang.Integer DELETE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+FK_NAME 12 test java.lang.String FK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PK_NAME 12 test java.lang.String PK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+DEFERRABILITY 4 test java.lang.Integer DEFERRABILITY integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+getCrossReference2
+string string string string string string string string short integer integer string string integer
+PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+PKTABLE_CAT 12 test java.lang.String PKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_SCHEM 12 test java.lang.String PKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_NAME 12 test java.lang.String PKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKCOLUMN_NAME 12 test java.lang.String PKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_CAT 12 test java.lang.String FKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_SCHEM 12 test java.lang.String FKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_NAME 12 test java.lang.String FKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKCOLUMN_NAME 12 test java.lang.String FKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+KEY_SEQ 5 test java.lang.Short KEY_SEQ short System ReferenceKeyColumns 6 5 0 false true false true 1 false true true true
+UPDATE_RULE 4 test java.lang.Integer UPDATE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+DELETE_RULE 4 test java.lang.Integer DELETE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+FK_NAME 12 test java.lang.String FK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PK_NAME 12 test java.lang.String PK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+DEFERRABILITY 4 test java.lang.Integer DEFERRABILITY integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+getCrossReference3
+string string string string string string string string short integer integer string string integer
+PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+PKTABLE_CAT 12 test java.lang.String PKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_SCHEM 12 test java.lang.String PKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_NAME 12 test java.lang.String PKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKCOLUMN_NAME 12 test java.lang.String PKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_CAT 12 test java.lang.String FKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_SCHEM 12 test java.lang.String FKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_NAME 12 test java.lang.String FKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKCOLUMN_NAME 12 test java.lang.String FKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+KEY_SEQ 5 test java.lang.Short KEY_SEQ short System ReferenceKeyColumns 6 5 0 false true false true 1 false true true true
+UPDATE_RULE 4 test java.lang.Integer UPDATE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+DELETE_RULE 4 test java.lang.Integer DELETE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+FK_NAME 12 test java.lang.String FK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PK_NAME 12 test java.lang.String PK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+DEFERRABILITY 4 test java.lang.Integer DEFERRABILITY integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+getCrossReference4
+string string string string string string string string short integer integer string string integer
+PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
+test test all_databases database_id test test all_models database_id 1 3 3 databae_model_fk databases_pk 5
+test test all_models model_id test test all_tables model_id 1 3 3 table_model_fk models_pk 5
+Row Count : 2
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+PKTABLE_CAT 12 test java.lang.String PKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_SCHEM 12 test java.lang.String PKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_NAME 12 test java.lang.String PKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKCOLUMN_NAME 12 test java.lang.String PKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_CAT 12 test java.lang.String FKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_SCHEM 12 test java.lang.String FKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_NAME 12 test java.lang.String FKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKCOLUMN_NAME 12 test java.lang.String FKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+KEY_SEQ 5 test java.lang.Short KEY_SEQ short System ReferenceKeyColumns 6 5 0 false true false true 1 false true true true
+UPDATE_RULE 4 test java.lang.Integer UPDATE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+DELETE_RULE 4 test java.lang.Integer DELETE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+FK_NAME 12 test java.lang.String FK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PK_NAME 12 test java.lang.String PK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+DEFERRABILITY 4 test java.lang.Integer DEFERRABILITY integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
Modified: branches/JCA/test-integration/common/src/test/resources/3473/testGetExportedKeys.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/3473/testGetExportedKeys.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/3473/testGetExportedKeys.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,55 +1,55 @@
-string string string string string string string string short integer integer string string integer
-PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
-<null> test test.all_models model_id <null> test test.all_tables model_id 1 3 3 table_model_fk models_pk 5
-Row Count : 1
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-PKTABLE_CAT 12 <null> java.lang.String PKTABLE_CAT string test System.JDBC.ReferenceKeyColumns 1 1 0 false true false true 1 false true true true
-PKTABLE_SCHEM 12 <null> java.lang.String PKTABLE_SCHEM string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PKTABLE_NAME 12 <null> java.lang.String PKTABLE_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PKCOLUMN_NAME 12 <null> java.lang.String PKCOLUMN_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKTABLE_CAT 12 <null> java.lang.String FKTABLE_CAT string test System.JDBC.ReferenceKeyColumns 1 1 0 false true false true 1 false true true true
-FKTABLE_SCHEM 12 <null> java.lang.String FKTABLE_SCHEM string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKTABLE_NAME 12 <null> java.lang.String FKTABLE_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKCOLUMN_NAME 12 <null> java.lang.String FKCOLUMN_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-KEY_SEQ 5 <null> java.lang.Short KEY_SEQ short test System.JDBC.ReferenceKeyColumns 6 5 0 false true false true 1 false true true true
-UPDATE_RULE 4 <null> java.lang.Integer UPDATE_RULE integer test System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-DELETE_RULE 4 <null> java.lang.Integer DELETE_RULE integer test System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-FK_NAME 12 <null> java.lang.String FK_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PK_NAME 12 <null> java.lang.String PK_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-DEFERRABILITY 4 <null> java.lang.Integer DEFERRABILITY integer test System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-string string string string string string string string short integer integer string string integer
-PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-PKTABLE_CAT 12 <null> java.lang.String PKTABLE_CAT string test System.JDBC.ReferenceKeyColumns 1 1 0 false true false true 1 false true true true
-PKTABLE_SCHEM 12 <null> java.lang.String PKTABLE_SCHEM string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PKTABLE_NAME 12 <null> java.lang.String PKTABLE_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PKCOLUMN_NAME 12 <null> java.lang.String PKCOLUMN_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKTABLE_CAT 12 <null> java.lang.String FKTABLE_CAT string test System.JDBC.ReferenceKeyColumns 1 1 0 false true false true 1 false true true true
-FKTABLE_SCHEM 12 <null> java.lang.String FKTABLE_SCHEM string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKTABLE_NAME 12 <null> java.lang.String FKTABLE_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKCOLUMN_NAME 12 <null> java.lang.String FKCOLUMN_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-KEY_SEQ 5 <null> java.lang.Short KEY_SEQ short test System.JDBC.ReferenceKeyColumns 6 5 0 false true false true 1 false true true true
-UPDATE_RULE 4 <null> java.lang.Integer UPDATE_RULE integer test System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-DELETE_RULE 4 <null> java.lang.Integer DELETE_RULE integer test System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-FK_NAME 12 <null> java.lang.String FK_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PK_NAME 12 <null> java.lang.String PK_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-DEFERRABILITY 4 <null> java.lang.Integer DEFERRABILITY integer test System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-string string string string string string string string short short short string string short
-PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-PKTABLE_CAT 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-PKTABLE_SCHEM 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-PKTABLE_NAME 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-PKCOLUMN_NAME 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-FKTABLE_CAT 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-FKTABLE_SCHEM 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-FKTABLE_NAME 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-FKCOLUMN_NAME 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-KEY_SEQ 5 <null> java.lang.Short <null> short test <null> 6 5 0 false false false false 2 true false false false
-UPDATE_RULE 5 <null> java.lang.Short <null> short test <null> 6 5 0 false false false false 2 true false false false
-DELETE_RULE 5 <null> java.lang.Short <null> short test <null> 6 5 0 false false false false 2 true false false false
-FK_NAME 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-PK_NAME 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-DEFERRABILITY 5 <null> java.lang.Short <null> short test <null> 6 5 0 false false false false 2 true false false false
+string string string string string string string string short integer integer string string integer
+PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
+test test all_models model_id test test all_tables model_id 1 3 3 table_model_fk models_pk 5
+Row Count : 1
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+PKTABLE_CAT 12 test java.lang.String PKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_SCHEM 12 test java.lang.String PKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_NAME 12 test java.lang.String PKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKCOLUMN_NAME 12 test java.lang.String PKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_CAT 12 test java.lang.String FKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_SCHEM 12 test java.lang.String FKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_NAME 12 test java.lang.String FKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKCOLUMN_NAME 12 test java.lang.String FKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+KEY_SEQ 5 test java.lang.Short KEY_SEQ short System ReferenceKeyColumns 6 5 0 false true false true 1 false true true true
+UPDATE_RULE 4 test java.lang.Integer UPDATE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+DELETE_RULE 4 test java.lang.Integer DELETE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+FK_NAME 12 test java.lang.String FK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PK_NAME 12 test java.lang.String PK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+DEFERRABILITY 4 test java.lang.Integer DEFERRABILITY integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+string string string string string string string string short integer integer string string integer
+PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+PKTABLE_CAT 12 test java.lang.String PKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_SCHEM 12 test java.lang.String PKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_NAME 12 test java.lang.String PKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKCOLUMN_NAME 12 test java.lang.String PKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_CAT 12 test java.lang.String FKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_SCHEM 12 test java.lang.String FKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_NAME 12 test java.lang.String FKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKCOLUMN_NAME 12 test java.lang.String FKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+KEY_SEQ 5 test java.lang.Short KEY_SEQ short System ReferenceKeyColumns 6 5 0 false true false true 1 false true true true
+UPDATE_RULE 4 test java.lang.Integer UPDATE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+DELETE_RULE 4 test java.lang.Integer DELETE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+FK_NAME 12 test java.lang.String FK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PK_NAME 12 test java.lang.String PK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+DEFERRABILITY 4 test java.lang.Integer DEFERRABILITY integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+string string string string string string string string short integer integer string string integer
+PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+PKTABLE_CAT 12 test java.lang.String PKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_SCHEM 12 test java.lang.String PKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_NAME 12 test java.lang.String PKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKCOLUMN_NAME 12 test java.lang.String PKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_CAT 12 test java.lang.String FKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_SCHEM 12 test java.lang.String FKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_NAME 12 test java.lang.String FKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKCOLUMN_NAME 12 test java.lang.String FKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+KEY_SEQ 5 test java.lang.Short KEY_SEQ short System ReferenceKeyColumns 6 5 0 false true false true 1 false true true true
+UPDATE_RULE 4 test java.lang.Integer UPDATE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+DELETE_RULE 4 test java.lang.Integer DELETE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+FK_NAME 12 test java.lang.String FK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PK_NAME 12 test java.lang.String PK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+DEFERRABILITY 4 test java.lang.Integer DEFERRABILITY integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
Modified: branches/JCA/test-integration/common/src/test/resources/3473/testGetImportedKeys.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/3473/testGetImportedKeys.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/3473/testGetImportedKeys.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,58 +1,58 @@
-getImportedKeys1
-string string string string string string string string short integer integer string string integer
-PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
-<null> test test.all_databases database_id <null> test test.all_models database_id 1 3 3 databae_model_fk databases_pk 5
-Row Count : 1
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-PKTABLE_CAT 12 <null> java.lang.String PKTABLE_CAT string test System.JDBC.ReferenceKeyColumns 1 1 0 false true false true 1 false true true true
-PKTABLE_SCHEM 12 <null> java.lang.String PKTABLE_SCHEM string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PKTABLE_NAME 12 <null> java.lang.String PKTABLE_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PKCOLUMN_NAME 12 <null> java.lang.String PKCOLUMN_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKTABLE_CAT 12 <null> java.lang.String FKTABLE_CAT string test System.JDBC.ReferenceKeyColumns 1 1 0 false true false true 1 false true true true
-FKTABLE_SCHEM 12 <null> java.lang.String FKTABLE_SCHEM string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKTABLE_NAME 12 <null> java.lang.String FKTABLE_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKCOLUMN_NAME 12 <null> java.lang.String FKCOLUMN_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-KEY_SEQ 5 <null> java.lang.Short KEY_SEQ short test System.JDBC.ReferenceKeyColumns 6 5 0 false true false true 1 false true true true
-UPDATE_RULE 4 <null> java.lang.Integer UPDATE_RULE integer test System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-DELETE_RULE 4 <null> java.lang.Integer DELETE_RULE integer test System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-FK_NAME 12 <null> java.lang.String FK_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PK_NAME 12 <null> java.lang.String PK_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-DEFERRABILITY 4 <null> java.lang.Integer DEFERRABILITY integer test System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-getImportedKeys2
-string string string string string string string string short integer integer string string integer
-PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-PKTABLE_CAT 12 <null> java.lang.String PKTABLE_CAT string test System.JDBC.ReferenceKeyColumns 1 1 0 false true false true 1 false true true true
-PKTABLE_SCHEM 12 <null> java.lang.String PKTABLE_SCHEM string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PKTABLE_NAME 12 <null> java.lang.String PKTABLE_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PKCOLUMN_NAME 12 <null> java.lang.String PKCOLUMN_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKTABLE_CAT 12 <null> java.lang.String FKTABLE_CAT string test System.JDBC.ReferenceKeyColumns 1 1 0 false true false true 1 false true true true
-FKTABLE_SCHEM 12 <null> java.lang.String FKTABLE_SCHEM string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKTABLE_NAME 12 <null> java.lang.String FKTABLE_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKCOLUMN_NAME 12 <null> java.lang.String FKCOLUMN_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-KEY_SEQ 5 <null> java.lang.Short KEY_SEQ short test System.JDBC.ReferenceKeyColumns 6 5 0 false true false true 1 false true true true
-UPDATE_RULE 4 <null> java.lang.Integer UPDATE_RULE integer test System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-DELETE_RULE 4 <null> java.lang.Integer DELETE_RULE integer test System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-FK_NAME 12 <null> java.lang.String FK_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PK_NAME 12 <null> java.lang.String PK_NAME string test System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-DEFERRABILITY 4 <null> java.lang.Integer DEFERRABILITY integer test System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-getImportedKeys3
-string string string string string string string string short short short string string short
-PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-PKTABLE_CAT 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-PKTABLE_SCHEM 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-PKTABLE_NAME 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-PKCOLUMN_NAME 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-FKTABLE_CAT 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-FKTABLE_SCHEM 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-FKTABLE_NAME 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-FKCOLUMN_NAME 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-KEY_SEQ 5 <null> java.lang.Short <null> short test <null> 6 5 0 false false false false 2 true false false false
-UPDATE_RULE 5 <null> java.lang.Short <null> short test <null> 6 5 0 false false false false 2 true false false false
-DELETE_RULE 5 <null> java.lang.Short <null> short test <null> 6 5 0 false false false false 2 true false false false
-FK_NAME 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-PK_NAME 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-DEFERRABILITY 5 <null> java.lang.Short <null> short test <null> 6 5 0 false false false false 2 true false false false
+getImportedKeys1
+string string string string string string string string short integer integer string string integer
+PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
+test test all_databases database_id test test all_models database_id 1 3 3 databae_model_fk databases_pk 5
+Row Count : 1
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+PKTABLE_CAT 12 test java.lang.String PKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_SCHEM 12 test java.lang.String PKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_NAME 12 test java.lang.String PKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKCOLUMN_NAME 12 test java.lang.String PKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_CAT 12 test java.lang.String FKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_SCHEM 12 test java.lang.String FKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_NAME 12 test java.lang.String FKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKCOLUMN_NAME 12 test java.lang.String FKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+KEY_SEQ 5 test java.lang.Short KEY_SEQ short System ReferenceKeyColumns 6 5 0 false true false true 1 false true true true
+UPDATE_RULE 4 test java.lang.Integer UPDATE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+DELETE_RULE 4 test java.lang.Integer DELETE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+FK_NAME 12 test java.lang.String FK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PK_NAME 12 test java.lang.String PK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+DEFERRABILITY 4 test java.lang.Integer DEFERRABILITY integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+getImportedKeys2
+string string string string string string string string short integer integer string string integer
+PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+PKTABLE_CAT 12 test java.lang.String PKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_SCHEM 12 test java.lang.String PKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_NAME 12 test java.lang.String PKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKCOLUMN_NAME 12 test java.lang.String PKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_CAT 12 test java.lang.String FKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_SCHEM 12 test java.lang.String FKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_NAME 12 test java.lang.String FKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKCOLUMN_NAME 12 test java.lang.String FKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+KEY_SEQ 5 test java.lang.Short KEY_SEQ short System ReferenceKeyColumns 6 5 0 false true false true 1 false true true true
+UPDATE_RULE 4 test java.lang.Integer UPDATE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+DELETE_RULE 4 test java.lang.Integer DELETE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+FK_NAME 12 test java.lang.String FK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PK_NAME 12 test java.lang.String PK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+DEFERRABILITY 4 test java.lang.Integer DEFERRABILITY integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+getImportedKeys3
+string string string string string string string string short integer integer string string integer
+PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+PKTABLE_CAT 12 test java.lang.String PKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_SCHEM 12 test java.lang.String PKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_NAME 12 test java.lang.String PKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKCOLUMN_NAME 12 test java.lang.String PKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_CAT 12 test java.lang.String FKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_SCHEM 12 test java.lang.String FKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_NAME 12 test java.lang.String FKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKCOLUMN_NAME 12 test java.lang.String FKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+KEY_SEQ 5 test java.lang.Short KEY_SEQ short System ReferenceKeyColumns 6 5 0 false true false true 1 false true true true
+UPDATE_RULE 4 test java.lang.Integer UPDATE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+DELETE_RULE 4 test java.lang.Integer DELETE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+FK_NAME 12 test java.lang.String FK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PK_NAME 12 test java.lang.String PK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+DEFERRABILITY 4 test java.lang.Integer DEFERRABILITY integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
Modified: branches/JCA/test-integration/common/src/test/resources/3473/testGetPrimaryKeys.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/3473/testGetPrimaryKeys.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/3473/testGetPrimaryKeys.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,31 +1,31 @@
-string string string string short string
-TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME KEY_SEQ PK_NAME
-<null> test test.all_models model_id 1 models_pk
-Row Count : 1
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TABLE_CAT 12 <null> java.lang.String TABLE_CAT string test <null> 4000 4000 0 false false false true 1 false true true true
-TABLE_SCHEM 12 <null> java.lang.String TABLE_SCHEM string test System.VirtualDatabases 255 255 0 false true false false 0 true true false false
-TABLE_NAME 12 <null> java.lang.String TABLE_NAME string test System.KeyElements 2048 2048 0 false true false false 0 true true false false
-COLUMN_NAME 12 <null> java.lang.String COLUMN_NAME string test System.KeyElements 255 255 0 false false false false 0 true true false false
-KEY_SEQ 5 <null> java.lang.Short KEY_SEQ short test <null> 6 5 0 false false false true 1 false true true true
-PK_NAME 12 <null> java.lang.String PK_NAME string test System.KeyElements 255 255 0 false false false false 1 true true false false
-string string string string short string
-TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME KEY_SEQ PK_NAME
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TABLE_CAT 12 <null> java.lang.String TABLE_CAT string test <null> 4000 4000 0 false false false true 1 false true true true
-TABLE_SCHEM 12 <null> java.lang.String TABLE_SCHEM string test System.VirtualDatabases 255 255 0 false true false false 0 true true false false
-TABLE_NAME 12 <null> java.lang.String TABLE_NAME string test System.KeyElements 2048 2048 0 false true false false 0 true true false false
-COLUMN_NAME 12 <null> java.lang.String COLUMN_NAME string test System.KeyElements 255 255 0 false false false false 0 true true false false
-KEY_SEQ 5 <null> java.lang.Short KEY_SEQ short test <null> 6 5 0 false false false true 1 false true true true
-PK_NAME 12 <null> java.lang.String PK_NAME string test System.KeyElements 255 255 0 false false false false 1 true true false false
-string string string string short string
-TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME KEY_SEQ PK_NAME
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TABLE_CAT 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-TABLE_SCHEM 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-TABLE_NAME 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-COLUMN_NAME 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-KEY_SEQ 5 <null> java.lang.Short <null> short test <null> 6 5 0 false false false false 2 true false false false
-PK_NAME 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
+string string string string short string
+TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME KEY_SEQ PK_NAME
+test test all_models model_id 1 models_pk
+Row Count : 1
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TABLE_CAT 12 test java.lang.String TABLE_CAT string System KeyColumns 255 255 0 false false false false 0 true true false false
+TABLE_SCHEM 12 test java.lang.String TABLE_SCHEM string System KeyColumns 255 255 0 false true false true 1 false true true true
+TABLE_NAME 12 test java.lang.String TABLE_NAME string System KeyColumns 2048 2048 0 false true false false 0 true true false false
+COLUMN_NAME 12 test java.lang.String COLUMN_NAME string System KeyColumns 255 255 0 false false false false 0 true true false false
+KEY_SEQ 5 test java.lang.Short KEY_SEQ short <null> <null> 6 5 0 false false false true 1 false true true true
+PK_NAME 12 test java.lang.String PK_NAME string System KeyColumns 255 255 0 false false false false 1 true true false false
+string string string string short string
+TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME KEY_SEQ PK_NAME
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TABLE_CAT 12 test java.lang.String TABLE_CAT string System KeyColumns 255 255 0 false false false false 0 true true false false
+TABLE_SCHEM 12 test java.lang.String TABLE_SCHEM string System KeyColumns 255 255 0 false true false true 1 false true true true
+TABLE_NAME 12 test java.lang.String TABLE_NAME string System KeyColumns 2048 2048 0 false true false false 0 true true false false
+COLUMN_NAME 12 test java.lang.String COLUMN_NAME string System KeyColumns 255 255 0 false false false false 0 true true false false
+KEY_SEQ 5 test java.lang.Short KEY_SEQ short <null> <null> 6 5 0 false false false true 1 false true true true
+PK_NAME 12 test java.lang.String PK_NAME string System KeyColumns 255 255 0 false false false false 1 true true false false
+string string string string short string
+TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME KEY_SEQ PK_NAME
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TABLE_CAT 12 test java.lang.String TABLE_CAT string System KeyColumns 255 255 0 false false false false 0 true true false false
+TABLE_SCHEM 12 test java.lang.String TABLE_SCHEM string System KeyColumns 255 255 0 false true false true 1 false true true true
+TABLE_NAME 12 test java.lang.String TABLE_NAME string System KeyColumns 2048 2048 0 false true false false 0 true true false false
+COLUMN_NAME 12 test java.lang.String COLUMN_NAME string System KeyColumns 255 255 0 false false false false 0 true true false false
+KEY_SEQ 5 test java.lang.Short KEY_SEQ short <null> <null> 6 5 0 false false false true 1 false true true true
+PK_NAME 12 test java.lang.String PK_NAME string System KeyColumns 255 255 0 false false false false 1 true true false false
Modified: branches/JCA/test-integration/common/src/test/resources/3473/testGetTables.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/3473/testGetTables.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/3473/testGetTables.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,73 +1,59 @@
-string string string string string string string string string string boolean
-TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE REMARKS TYPE_CAT TYPE_SCHEM TYPE_NAME SELF_REFERENCING_COL_NAME REF_GENERATION ISPHYSICAL
-<null> test System.DataTypeElementProperties SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> test System.DataTypeElements SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> test System.DataTypeProperties SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> test System.DataTypes SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> test System.ElementProperties SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> test System.Elements SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> test System.GroupProperties SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> test System.Groups SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> test System.JDBC.ReferenceKeyColumns SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> test System.KeyElements SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> test System.KeyProperties SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> test System.Keys SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> test System.ModelProperties SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> test System.Models SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> test System.ODBC.OA_COLUMNS SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> test System.ODBC.OA_FKEYS SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> test System.ODBC.OA_PROC SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> test System.ODBC.OA_PROCCOLUMNS SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> test System.ODBC.OA_STATISTICS SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> test System.ODBC.OA_TABLES SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> test System.ODBC.OA_TYPES SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> test System.ProcedureParams SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> test System.ProcedureProperties SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> test System.Procedures SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> test System.VirtualDatabases SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> test test.all_databases TABLE <null> <null> <null> <null> <null> <null> false
-<null> test test.all_models TABLE <null> <null> <null> <null> <null> <null> false
-<null> test test.all_tables TABLE <null> <null> <null> <null> <null> <null> false
-Row Count : 28
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TABLE_CAT 12 <null> java.lang.String TABLE_CAT string test <null> 4000 4000 0 false false false true 1 false true true true
-TABLE_SCHEM 12 <null> java.lang.String TABLE_SCHEM string test System.VirtualDatabases 255 255 0 false true false false 0 true true false false
-TABLE_NAME 12 <null> java.lang.String TABLE_NAME string test System.Groups 2048 2048 0 false true false false 0 true true false false
-TABLE_TYPE 12 <null> java.lang.String TABLE_TYPE string test <null> 4000 4000 0 false false false true 1 false true true true
-REMARKS 12 <null> java.lang.String REMARKS string test System.Groups 255 255 0 false true false true 1 false true true true
-TYPE_CAT 12 <null> java.lang.String TYPE_CAT string test <null> 4000 4000 0 false false false true 1 false true true true
-TYPE_SCHEM 12 <null> java.lang.String TYPE_SCHEM string test <null> 4000 4000 0 false false false true 1 false true true true
-TYPE_NAME 12 <null> java.lang.String TYPE_NAME string test <null> 4000 4000 0 false false false true 1 false true true true
-SELF_REFERENCING_COL_NAME 12 <null> java.lang.String SELF_REFERENCING_COL_NAME string test <null> 4000 4000 0 false false false true 1 false true true true
-REF_GENERATION 12 <null> java.lang.String REF_GENERATION string test <null> 4000 4000 0 false false false true 1 false true true true
-ISPHYSICAL -7 <null> java.lang.Boolean ISPHYSICAL boolean test System.Groups 5 1 0 false true false false 0 true true false false
-string string string string string string string string string string boolean
-TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE REMARKS TYPE_CAT TYPE_SCHEM TYPE_NAME SELF_REFERENCING_COL_NAME REF_GENERATION ISPHYSICAL
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TABLE_CAT 12 <null> java.lang.String TABLE_CAT string test <null> 4000 4000 0 false false false true 1 false true true true
-TABLE_SCHEM 12 <null> java.lang.String TABLE_SCHEM string test System.VirtualDatabases 255 255 0 false true false false 0 true true false false
-TABLE_NAME 12 <null> java.lang.String TABLE_NAME string test System.Groups 2048 2048 0 false true false false 0 true true false false
-TABLE_TYPE 12 <null> java.lang.String TABLE_TYPE string test <null> 4000 4000 0 false false false true 1 false true true true
-REMARKS 12 <null> java.lang.String REMARKS string test System.Groups 255 255 0 false true false true 1 false true true true
-TYPE_CAT 12 <null> java.lang.String TYPE_CAT string test <null> 4000 4000 0 false false false true 1 false true true true
-TYPE_SCHEM 12 <null> java.lang.String TYPE_SCHEM string test <null> 4000 4000 0 false false false true 1 false true true true
-TYPE_NAME 12 <null> java.lang.String TYPE_NAME string test <null> 4000 4000 0 false false false true 1 false true true true
-SELF_REFERENCING_COL_NAME 12 <null> java.lang.String SELF_REFERENCING_COL_NAME string test <null> 4000 4000 0 false false false true 1 false true true true
-REF_GENERATION 12 <null> java.lang.String REF_GENERATION string test <null> 4000 4000 0 false false false true 1 false true true true
-ISPHYSICAL -7 <null> java.lang.Boolean ISPHYSICAL boolean test System.Groups 5 1 0 false true false false 0 true true false false
-string string string string string string string string string string boolean
-TABLE_CAT TYPE_SCHEM TABLE_NAME TABLE_TYPE REMARKS TYPE_CAT TYPE_SCHEM TYPE_NAME SELF_REFERENCING_COL_NAME REF_GENERATION ISPHYSICAL
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TABLE_CAT 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-TYPE_SCHEM 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-TABLE_NAME 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-TABLE_TYPE 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-REMARKS 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-TYPE_CAT 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-TYPE_SCHEM 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-TYPE_NAME 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-SELF_REFERENCING_COL_NAME 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-REF_GENERATION 12 <null> java.lang.String <null> string test <null> 4000 4000 0 false false false false 2 true false false false
-ISPHYSICAL -7 <null> java.lang.Boolean <null> boolean test <null> 5 1 0 false false false false 2 true false false false
+string string string string string string string string string string boolean
+TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE REMARKS TYPE_CAT TYPE_SCHEM TYPE_NAME SELF_REFERENCING_COL_NAME REF_GENERATION ISPHYSICAL
+test System Columns SYSTEM TABLE <null> <null> <null> <null> <null> <null> true
+test System DataTypes SYSTEM TABLE <null> <null> <null> <null> <null> <null> true
+test System KeyColumns SYSTEM TABLE <null> <null> <null> <null> <null> <null> true
+test System Keys SYSTEM TABLE <null> <null> <null> <null> <null> <null> true
+test System ProcedureParams SYSTEM TABLE <null> <null> <null> <null> <null> <null> true
+test System Procedures SYSTEM TABLE <null> <null> <null> <null> <null> <null> true
+test System Properties SYSTEM TABLE <null> <null> <null> <null> <null> <null> true
+test System ReferenceKeyColumns SYSTEM TABLE <null> <null> <null> <null> <null> <null> true
+test System Schemas SYSTEM TABLE <null> <null> <null> <null> <null> <null> true
+test System Tables SYSTEM TABLE <null> <null> <null> <null> <null> <null> true
+test System VirtualDatabases SYSTEM TABLE <null> <null> <null> <null> <null> <null> true
+test test all_databases TABLE <null> <null> <null> <null> <null> <null> false
+test test all_models TABLE <null> <null> <null> <null> <null> <null> false
+test test all_tables TABLE <null> <null> <null> <null> <null> <null> false
+Row Count : 14
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TABLE_CAT 12 test java.lang.String TABLE_CAT string System Tables 255 255 0 false true false true 1 false true true true
+TABLE_SCHEM 12 test java.lang.String TABLE_SCHEM string System Tables 255 255 0 false true false true 1 false true true true
+TABLE_NAME 12 test java.lang.String TABLE_NAME string System Tables 255 255 0 false true false false 0 true true false false
+TABLE_TYPE 12 test java.lang.String TABLE_TYPE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+REMARKS 12 test java.lang.String REMARKS string System Tables 255 255 0 false true false true 1 false true true true
+TYPE_CAT 12 test java.lang.String TYPE_CAT string <null> <null> 4000 4000 0 false false false true 1 false true true true
+TYPE_SCHEM 12 test java.lang.String TYPE_SCHEM string <null> <null> 4000 4000 0 false false false true 1 false true true true
+TYPE_NAME 12 test java.lang.String TYPE_NAME string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SELF_REFERENCING_COL_NAME 12 test java.lang.String SELF_REFERENCING_COL_NAME string <null> <null> 4000 4000 0 false false false true 1 false true true true
+REF_GENERATION 12 test java.lang.String REF_GENERATION string <null> <null> 4000 4000 0 false false false true 1 false true true true
+ISPHYSICAL -7 test java.lang.Boolean ISPHYSICAL boolean System Tables 5 1 0 false true false false 0 true true false false
+string string string string string string string string string string boolean
+TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE REMARKS TYPE_CAT TYPE_SCHEM TYPE_NAME SELF_REFERENCING_COL_NAME REF_GENERATION ISPHYSICAL
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TABLE_CAT 12 test java.lang.String TABLE_CAT string System Tables 255 255 0 false true false true 1 false true true true
+TABLE_SCHEM 12 test java.lang.String TABLE_SCHEM string System Tables 255 255 0 false true false true 1 false true true true
+TABLE_NAME 12 test java.lang.String TABLE_NAME string System Tables 255 255 0 false true false false 0 true true false false
+TABLE_TYPE 12 test java.lang.String TABLE_TYPE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+REMARKS 12 test java.lang.String REMARKS string System Tables 255 255 0 false true false true 1 false true true true
+TYPE_CAT 12 test java.lang.String TYPE_CAT string <null> <null> 4000 4000 0 false false false true 1 false true true true
+TYPE_SCHEM 12 test java.lang.String TYPE_SCHEM string <null> <null> 4000 4000 0 false false false true 1 false true true true
+TYPE_NAME 12 test java.lang.String TYPE_NAME string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SELF_REFERENCING_COL_NAME 12 test java.lang.String SELF_REFERENCING_COL_NAME string <null> <null> 4000 4000 0 false false false true 1 false true true true
+REF_GENERATION 12 test java.lang.String REF_GENERATION string <null> <null> 4000 4000 0 false false false true 1 false true true true
+ISPHYSICAL -7 test java.lang.Boolean ISPHYSICAL boolean System Tables 5 1 0 false true false false 0 true true false false
+string string string string string string string string string string boolean
+TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE REMARKS TYPE_CAT TYPE_SCHEM TYPE_NAME SELF_REFERENCING_COL_NAME REF_GENERATION ISPHYSICAL
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TABLE_CAT 12 test java.lang.String TABLE_CAT string System Tables 255 255 0 false true false true 1 false true true true
+TABLE_SCHEM 12 test java.lang.String TABLE_SCHEM string System Tables 255 255 0 false true false true 1 false true true true
+TABLE_NAME 12 test java.lang.String TABLE_NAME string System Tables 255 255 0 false true false false 0 true true false false
+TABLE_TYPE 12 test java.lang.String TABLE_TYPE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+REMARKS 12 test java.lang.String REMARKS string System Tables 255 255 0 false true false true 1 false true true true
+TYPE_CAT 12 test java.lang.String TYPE_CAT string <null> <null> 4000 4000 0 false false false true 1 false true true true
+TYPE_SCHEM 12 test java.lang.String TYPE_SCHEM string <null> <null> 4000 4000 0 false false false true 1 false true true true
+TYPE_NAME 12 test java.lang.String TYPE_NAME string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SELF_REFERENCING_COL_NAME 12 test java.lang.String SELF_REFERENCING_COL_NAME string <null> <null> 4000 4000 0 false false false true 1 false true true true
+REF_GENERATION 12 test java.lang.String REF_GENERATION string <null> <null> 4000 4000 0 false false false true 1 false true true true
+ISPHYSICAL -7 test java.lang.Boolean ISPHYSICAL boolean System Tables 5 1 0 false true false false 0 true true false false
Modified: branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetBestRowIdentifier.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetBestRowIdentifier.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetBestRowIdentifier.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,36 +1,36 @@
-short string short string integer integer short short
-SCOPE COLUMN_NAME DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH DECIMAL_DIGITS PSEUDO_COLUMN
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-SCOPE 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 0 true false false false
-COLUMN_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 0 true false false false
-DATA_TYPE 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 0 true false false false
-TYPE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 0 true false false false
-COLUMN_SIZE 4 <null> java.lang.Integer <null> integer QT_Ora9DS <null> 11 10 0 false false false false 0 true false false false
-BUFFER_LENGTH 4 <null> java.lang.Integer <null> integer QT_Ora9DS <null> 11 10 0 false false false false 1 true false false false
-DECIMAL_DIGITS 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 0 true false false false
-PSEUDO_COLUMN 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 0 true false false false
-short string short string integer integer short short
-SCOPE COLUMN_NAME DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH DECIMAL_DIGITS PSEUDO_COLUMN
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-SCOPE 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 0 true false false false
-COLUMN_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 0 true false false false
-DATA_TYPE 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 0 true false false false
-TYPE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 0 true false false false
-COLUMN_SIZE 4 <null> java.lang.Integer <null> integer QT_Ora9DS <null> 11 10 0 false false false false 0 true false false false
-BUFFER_LENGTH 4 <null> java.lang.Integer <null> integer QT_Ora9DS <null> 11 10 0 false false false false 1 true false false false
-DECIMAL_DIGITS 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 0 true false false false
-PSEUDO_COLUMN 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 0 true false false false
-short string short string integer integer short short
-SCOPE COLUMN_NAME DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH DECIMAL_DIGITS PSEUDO_COLUMN
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-SCOPE 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 0 true false false false
-COLUMN_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 0 true false false false
-DATA_TYPE 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 0 true false false false
-TYPE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 0 true false false false
-COLUMN_SIZE 4 <null> java.lang.Integer <null> integer QT_Ora9DS <null> 11 10 0 false false false false 0 true false false false
-BUFFER_LENGTH 4 <null> java.lang.Integer <null> integer QT_Ora9DS <null> 11 10 0 false false false false 1 true false false false
-DECIMAL_DIGITS 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 0 true false false false
-PSEUDO_COLUMN 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 0 true false false false
+short string short string integer integer short short
+SCOPE COLUMN_NAME DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH DECIMAL_DIGITS PSEUDO_COLUMN
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+SCOPE 5 QT_Ora9DS java.lang.Short <null> short <null> <null> 6 5 0 false false false false 0 true false false false
+COLUMN_NAME 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 0 true false false false
+DATA_TYPE 5 QT_Ora9DS java.lang.Short <null> short <null> <null> 6 5 0 false false false false 0 true false false false
+TYPE_NAME 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 0 true false false false
+COLUMN_SIZE 4 QT_Ora9DS java.lang.Integer <null> integer <null> <null> 11 10 0 false false false false 0 true false false false
+BUFFER_LENGTH 4 QT_Ora9DS java.lang.Integer <null> integer <null> <null> 11 10 0 false false false false 1 true false false false
+DECIMAL_DIGITS 5 QT_Ora9DS java.lang.Short <null> short <null> <null> 6 5 0 false false false false 0 true false false false
+PSEUDO_COLUMN 5 QT_Ora9DS java.lang.Short <null> short <null> <null> 6 5 0 false false false false 0 true false false false
+short string short string integer integer short short
+SCOPE COLUMN_NAME DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH DECIMAL_DIGITS PSEUDO_COLUMN
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+SCOPE 5 QT_Ora9DS java.lang.Short <null> short <null> <null> 6 5 0 false false false false 0 true false false false
+COLUMN_NAME 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 0 true false false false
+DATA_TYPE 5 QT_Ora9DS java.lang.Short <null> short <null> <null> 6 5 0 false false false false 0 true false false false
+TYPE_NAME 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 0 true false false false
+COLUMN_SIZE 4 QT_Ora9DS java.lang.Integer <null> integer <null> <null> 11 10 0 false false false false 0 true false false false
+BUFFER_LENGTH 4 QT_Ora9DS java.lang.Integer <null> integer <null> <null> 11 10 0 false false false false 1 true false false false
+DECIMAL_DIGITS 5 QT_Ora9DS java.lang.Short <null> short <null> <null> 6 5 0 false false false false 0 true false false false
+PSEUDO_COLUMN 5 QT_Ora9DS java.lang.Short <null> short <null> <null> 6 5 0 false false false false 0 true false false false
+short string short string integer integer short short
+SCOPE COLUMN_NAME DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH DECIMAL_DIGITS PSEUDO_COLUMN
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+SCOPE 5 QT_Ora9DS java.lang.Short <null> short <null> <null> 6 5 0 false false false false 0 true false false false
+COLUMN_NAME 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 0 true false false false
+DATA_TYPE 5 QT_Ora9DS java.lang.Short <null> short <null> <null> 6 5 0 false false false false 0 true false false false
+TYPE_NAME 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 0 true false false false
+COLUMN_SIZE 4 QT_Ora9DS java.lang.Integer <null> integer <null> <null> 11 10 0 false false false false 0 true false false false
+BUFFER_LENGTH 4 QT_Ora9DS java.lang.Integer <null> integer <null> <null> 11 10 0 false false false false 1 true false false false
+DECIMAL_DIGITS 5 QT_Ora9DS java.lang.Short <null> short <null> <null> 6 5 0 false false false false 0 true false false false
+PSEUDO_COLUMN 5 QT_Ora9DS java.lang.Short <null> short <null> <null> 6 5 0 false false false false 0 true false false false
Modified: branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetCatalogs.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetCatalogs.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetCatalogs.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,5 +1,5 @@
-string
-TABLE_CAT
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TABLE_CAT 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 1 true false false false
+string
+TABLE_CAT
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TABLE_CAT 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 1 true false false false
Modified: branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumnPrivileges.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumnPrivileges.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumnPrivileges.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,24 +1,24 @@
-string string string string string string string string
-TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME GRANTOR GRANTEE PRIVILEGE IS_GRANTABLE
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TABLE_CAT 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 1 true false false false
-TABLE_SCHEM 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 1 true false false false
-TABLE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 0 true false false false
-COLUMN_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 0 true false false false
-GRANTOR 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 1 true false false false
-GRANTEE 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 0 true false false false
-PRIVILEGE 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 0 true false false false
-IS_GRANTABLE 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 1 true false false false
-string string string string string string string string
-TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME GRANTOR GRANTEE PRIVILEGE IS_GRANTABLE
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TABLE_CAT 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 1 true false false false
-TABLE_SCHEM 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 1 true false false false
-TABLE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 0 true false false false
-COLUMN_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 0 true false false false
-GRANTOR 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 1 true false false false
-GRANTEE 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 0 true false false false
-PRIVILEGE 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 0 true false false false
-IS_GRANTABLE 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 1 true false false false
+string string string string string string string string
+TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME GRANTOR GRANTEE PRIVILEGE IS_GRANTABLE
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TABLE_CAT 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 1 true false false false
+TABLE_SCHEM 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 1 true false false false
+TABLE_NAME 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 0 true false false false
+COLUMN_NAME 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 0 true false false false
+GRANTOR 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 1 true false false false
+GRANTEE 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 0 true false false false
+PRIVILEGE 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 0 true false false false
+IS_GRANTABLE 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 1 true false false false
+string string string string string string string string
+TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME GRANTOR GRANTEE PRIVILEGE IS_GRANTABLE
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TABLE_CAT 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 1 true false false false
+TABLE_SCHEM 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 1 true false false false
+TABLE_NAME 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 0 true false false false
+COLUMN_NAME 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 0 true false false false
+GRANTOR 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 1 true false false false
+GRANTEE 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 0 true false false false
+PRIVILEGE 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 0 true false false false
+IS_GRANTABLE 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 1 true false false false
Modified: branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumnPrivilegesResultSetMetaData.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumnPrivilegesResultSetMetaData.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumnPrivilegesResultSetMetaData.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,12 +1,12 @@
-string string string string string string string string
-TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME GRANTOR GRANTEE PRIVILEGE IS_GRANTABLE
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TABLE_CAT 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 1 true false false false
-TABLE_SCHEM 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 1 true false false false
-TABLE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 0 true false false false
-COLUMN_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 0 true false false false
-GRANTOR 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 1 true false false false
-GRANTEE 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 0 true false false false
-PRIVILEGE 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 0 true false false false
-IS_GRANTABLE 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 1 true false false false
+string string string string string string string string
+TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME GRANTOR GRANTEE PRIVILEGE IS_GRANTABLE
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TABLE_CAT 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 1 true false false false
+TABLE_SCHEM 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 1 true false false false
+TABLE_NAME 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 0 true false false false
+COLUMN_NAME 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 0 true false false false
+GRANTOR 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 1 true false false false
+GRANTEE 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 0 true false false false
+PRIVILEGE 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 0 true false false false
+IS_GRANTABLE 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 1 true false false false
Modified: branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumns.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumns.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumns.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,1015 +1,999 @@
-getColumns1
-string string string string short string integer string integer integer integer string string string string integer integer string string string string !
string string
-TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH DECIMAL_DIGITS NUM_PREC_RADIX NULLABLE REMARKS COLUMN_DEF SQL_DATA_TYPE SQL_DATETIME_SUB CHAR_OCTET_LENGTH ORDINAL_POSITION IS_NULLABLE SCOPE_CATALOG SCOPE_SCHEMA SCOPE_TABLE!
SOURCE_DATA_TYPE IS_AUTOINCREMENT
-<null> QT_Ora9DS BQT1.HugeA IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeA StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeA IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeA StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeA FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeA LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeA DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeA ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeA DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeA TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeA TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeA BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeA CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeA ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeA BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeA BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeA ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeB IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeB StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeB IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeB StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeB FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeB LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeB DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeB ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeB DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeB TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeB TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeB BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeB CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeB ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeB BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeB BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeB ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeA IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeA StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeA IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeA StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeA FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeA LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeA DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeA ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeA DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeA TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeA TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeA BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeA CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeA ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeA BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeA BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeA ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeB IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeB StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeB IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeB StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeB FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeB LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeB DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeB ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeB DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeB TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeB TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeB BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeB CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeB ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeB BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeB BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeB ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumA IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumA StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumA IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumA StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumA FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumA LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumA DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumA ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumA DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumA TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumA TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumA BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumA CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumA ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumA BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumA BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumA ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumB IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumB StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumB IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumB StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumB FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumB LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumB DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumB ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumB DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumB TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumB TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumB BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumB CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumB ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumB BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumB BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumB ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallA IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallA StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallA IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallA StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallA FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallA LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallA DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallA ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallA DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallA TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallA TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallA BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallA CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallA ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallA BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallA BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallA ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallB IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallB StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallB IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallB StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallB FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallB LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallB DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallB ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallB DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallB TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallB TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallB BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallB CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallB ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallB BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallB BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallB ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeA IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeA StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeA IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeA StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeA FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeA LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeA DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeA ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeA DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeA TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeA TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeA BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeA CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeA ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeA BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeA BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeA ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeB IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeB StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeB IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeB StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeB FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeB LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeB DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeB ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeB DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeB TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeB TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeB BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeB CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeB ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeB BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeB BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeB ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeA IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeA StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeA IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeA StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeA FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeA LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeA DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeA ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeA DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeA TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeA TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeA BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeA CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeA ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeA BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeA BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeA ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeB IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeB StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeB IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeB StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeB FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeB LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeB DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeB ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeB DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeB TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeB TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeB BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeB CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeB ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeB BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeB BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeB ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumA IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumA StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumA IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumA StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumA FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumA LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumA DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumA ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumA DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumA TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumA TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumA BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumA CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumA ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumA BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumA BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumA ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumB IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumB StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumB IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumB StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumB FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumB LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumB DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumB ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumB DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumB TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumB TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumB BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumB CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumB ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumB BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumB BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumB ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallA IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallA StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallA IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallA StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallA FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallA LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallA DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallA ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallA DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallA TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallA TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallA BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallA CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallA ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallA BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallA BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallA ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallB IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallB StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallB IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallB StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallB FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallB LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallB DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallB ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallB DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallB TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallB TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallB BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallB CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallB ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallB BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallB BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallB ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypeElementProperties DataTypeName 12 string 100 <null> 0 10 0 <null> <null> <null> <null> 100 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypeElementProperties DataTypeElementName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypeElementProperties Name 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypeElementProperties Value 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 4 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypeElementProperties UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 5 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypeElements DataTypeName 12 string 100 <null> 0 10 0 <null> <null> <null> <null> 100 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypeElements Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypeElements Position 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypeElements Scale 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 4 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypeElements ElementLength 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 5 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypeElements UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 6 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypeProperties DataType 12 string 100 <null> 0 10 0 <null> <null> <null> <null> 100 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypeProperties Name 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypeProperties Value 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypeProperties UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 4 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes Name 12 string 100 <null> 0 10 0 <null> <null> <null> <null> 100 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes IsStandard -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 2 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes IsPhysical -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes TypeName 12 string 100 <null> 0 10 0 <null> <null> <null> <null> 100 4 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes JavaClass 12 string 500 <null> 0 10 0 <null> <null> <null> <null> 500 5 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes Scale 4 integer 10 <null> 0 10 1 <null> (0) <null> <null> 10 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes TypeLength 4 integer 10 <null> 0 10 0 <null> (0) <null> <null> 10 7 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes NullType 12 string 20 <null> 0 10 0 <null> <null> <null> <null> 20 8 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes IsSigned -7 boolean 1 <null> 0 10 0 <null> ('0') <null> <null> 1 9 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes IsAutoIncremented -7 boolean 1 <null> 0 10 0 <null> ('0') <null> <null> 1 10 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes IsCaseSensitive -7 boolean 1 <null> 0 10 0 <null> ('0') <null> <null> 1 11 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes Precision 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 12 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes Radix 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes SearchType 12 string 20 <null> 0 10 0 <null> <null> <null> <null> 20 14 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 15 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes RuntimeType 12 string 64 <null> 0 10 1 <null> <null> <null> <null> 64 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes BaseType 12 string 64 <null> 0 10 1 <null> <null> <null> <null> 64 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes Description 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 18 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ElementProperties ModelName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ElementProperties GroupFullName 12 string 2048 <null> 0 10 0 <null> <null> <null> <null> 2048 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ElementProperties ElementName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ElementProperties Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 4 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ElementProperties Value 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 5 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ElementProperties GroupName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 6 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ElementProperties ElementUpperName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 7 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ElementProperties GroupUpperName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 8 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ElementProperties UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 9 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements ModelName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements GroupName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements GroupFullName 12 string 2048 <null> 0 10 0 <null> <null> <null> <null> 2048 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 4 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements Position 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 5 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements NameInSource 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements DataType 12 string 100 <null> 0 10 0 <null> <null> <null> <null> 100 7 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements Scale 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 8 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements ElementLength 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 9 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements IsLengthFixed -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 10 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements SupportsSelect -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 11 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements SupportsUpdates -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 12 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements IsCaseSensitive -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 13 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements IsSigned -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 14 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements IsCurrency -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 15 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements IsAutoIncremented -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 16 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements NullType 12 string 20 <null> 0 10 0 <null> <null> <null> <null> 20 17 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements MinRange 12 string 50 <null> 0 10 1 <null> <null> <null> <null> 50 18 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements MaxRange 12 string 50 <null> 0 10 1 <null> <null> <null> <null> 50 19 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements SearchType 12 string 20 <null> 0 10 0 <null> <null> <null> <null> 20 20 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements Format 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 21 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements DefaultValue 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 22 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements JavaClass 12 string 500 <null> 0 10 0 <null> <null> <null> <null> 500 23 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements Precision 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 24 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements CharOctetLength 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 25 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements Radix 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 26 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements GroupUpperName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 27 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements UpperName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 28 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 29 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements Description 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 30 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.GroupProperties ModelName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.GroupProperties GroupFullName 12 string 2048 <null> 0 10 0 <null> <null> <null> <null> 2048 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.GroupProperties Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.GroupProperties Value 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 4 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.GroupProperties GroupName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 5 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.GroupProperties GroupUpperName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 6 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.GroupProperties UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 7 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Groups ModelName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Groups FullName 12 string 2048 <null> 0 10 0 <null> <null> <null> <null> 2048 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Groups Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Groups Type 12 string 20 <null> 0 10 0 <null> <null> <null> <null> 20 4 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Groups NameInSource 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Groups IsPhysical -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 6 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Groups UpperName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 7 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Groups SupportsUpdates -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 8 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Groups UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 9 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Groups Cardinality 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 10 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Groups Description 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Groups IsSystem -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Groups IsMaterialized -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 0 13 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.JDBC.ReferenceKeyColumns PKTABLE_CAT 12 string 1 <null> 0 10 1 <null> <null> <null> <null> 1 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.JDBC.ReferenceKeyColumns PKTABLE_SCHEM 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 2 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.JDBC.ReferenceKeyColumns PKTABLE_NAME 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.JDBC.ReferenceKeyColumns PKCOLUMN_NAME 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.JDBC.ReferenceKeyColumns FKTABLE_CAT 12 string 1 <null> 0 10 1 <null> <null> <null> <null> 1 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.JDBC.ReferenceKeyColumns FKTABLE_SCHEM 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.JDBC.ReferenceKeyColumns FKTABLE_NAME 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.JDBC.ReferenceKeyColumns FKCOLUMN_NAME 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.JDBC.ReferenceKeyColumns KEY_SEQ 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.JDBC.ReferenceKeyColumns UPDATE_RULE 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.JDBC.ReferenceKeyColumns DELETE_RULE 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.JDBC.ReferenceKeyColumns FK_NAME 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.JDBC.ReferenceKeyColumns PK_NAME 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.JDBC.ReferenceKeyColumns DEFERRABILITY 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyElements ModelName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyElements GroupFullName 12 string 2048 <null> 0 10 0 <null> <null> <null> <null> 2048 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyElements Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyElements KeyName 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyElements KeyType 12 string 20 <null> 0 10 0 <null> <null> <null> <null> 20 5 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyElements GroupName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 6 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyElements GroupUpperName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 7 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyElements RefKeyUID 12 string 50 <null> 0 10 1 <null> <null> <null> <null> 50 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyElements UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 9 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyElements Position 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyProperties ModelName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyProperties GroupFullName 12 string 2048 <null> 0 10 0 <null> <null> <null> <null> 2048 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyProperties KeyName 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyProperties Name 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyProperties Value 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyProperties GroupName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 6 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyProperties GroupUpperName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 7 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyProperties UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 8 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Keys ModelName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Keys GroupFullName 12 string 2048 <null> 0 10 0 <null> <null> <null> <null> 2048 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Keys Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Keys Description 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Keys NameInSource 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Keys Type 12 string 20 <null> 0 10 0 <null> <null> <null> <null> 20 6 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Keys IsIndexed -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 7 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Keys GroupName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 8 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Keys GroupUpperName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 9 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Keys RefKeyUID 12 string 50 <null> 0 10 1 <null> <null> <null> <null> 50 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Keys UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 11 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ModelProperties ModelName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ModelProperties Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ModelProperties Value 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ModelProperties UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 4 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Models Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Models IsPhysical -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Models SupportsWhereAll -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Models SupportsOrderBy -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 4 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Models SupportsJoin -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 5 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Models SupportsDistinct -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 6 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Models SupportsOuterJoin -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 7 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Models MaxSetSize 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 8 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Models UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 9 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Models Description 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Models PrimaryMetamodelURI 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 11 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_COLUMNS TABLE_QUALIFIER 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_COLUMNS TABLE_OWNER 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 2 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_COLUMNS TABLE_NAME 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_COLUMNS COLUMN_NAME 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_COLUMNS DATA_TYPE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_COLUMNS TYPE_NAME 12 string 100 <null> 0 10 1 <null> <null> <null> <null> 100 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_COLUMNS OA_LENGTH 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_COLUMNS OA_PRECISION 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_COLUMNS OA_SCALE 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_COLUMNS OA_RADIX 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_COLUMNS OA_NULLABLE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_COLUMNS OA_SCOPE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_COLUMNS PSEUDO_COLUMN 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_COLUMNS OA_COLUMNTYPE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_COLUMNS REMARKS 12 string 254 <null> 0 10 1 <null> <null> <null> <null> 254 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_FKEYS PKTABLE_QUALIFIER 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_FKEYS PKTABLE_OWNER 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 2 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_FKEYS PKTABLE_NAME 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_FKEYS PKCOLUMN_NAME 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_FKEYS FKTABLE_QUALIFIER 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_FKEYS FKTABLE_OWNER 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_FKEYS FKTABLE_NAME 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_FKEYS FKCOLUMN_NAME 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_FKEYS KEY_SEQ 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_FKEYS UPDATE_RULE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_FKEYS DELETE_RULE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_FKEYS FK_NAME 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_FKEYS PK_NAME 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROC OA_QUALIFIER 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROC OA_OWNER 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 2 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROC OA_NAME 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROC NUM_INPUT_PARAMS 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROC NUM_OUTPUT_PARAMS 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROC NUM_RESULT_SETS 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROC REMARKS 12 string 254 <null> 0 10 1 <null> <null> <null> <null> 254 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROC PROCEDURE_TYPE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROCCOLUMNS OA_QUALIFIER 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROCCOLUMNS OA_OWNER 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 2 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROCCOLUMNS OA_NAME 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROCCOLUMNS COLUMN_NAME 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROCCOLUMNS OA_COLUMNTYPE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROCCOLUMNS DATA_TYPE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROCCOLUMNS TYPE_NAME 12 string 100 <null> 0 10 1 <null> <null> <null> <null> 100 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROCCOLUMNS OA_PRECISION 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROCCOLUMNS OA_LENGTH 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROCCOLUMNS OA_RADIX 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROCCOLUMNS OA_SCALE 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROCCOLUMNS OA_NULLABLE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROCCOLUMNS OA_SCOPE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROCCOLUMNS REMARKS 12 string 254 <null> 0 10 1 <null> <null> <null> <null> 254 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_STATISTICS TABLE_QUALIFIER 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_STATISTICS TABLE_OWNER 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 2 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_STATISTICS TABLE_NAME 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_STATISTICS NON_UNIQUE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_STATISTICS INDEX_QUALIFIER 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_STATISTICS INDEX_NAME 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_STATISTICS OA_TYPE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_STATISTICS SEQ_IN_INDEX 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_STATISTICS COLUMN_NAME 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_STATISTICS OA_COLLATION 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_STATISTICS OA_CARDINALITY 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_STATISTICS OA_PAGES 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_STATISTICS FILTER_CONDITIONS 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TABLES TABLE_QUALIFIER 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TABLES TABLE_OWNER 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 2 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TABLES TABLE_NAME 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TABLES TABLE_TYPE 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TABLES REMARKS 12 string 254 <null> 0 10 1 <null> <null> <null> <null> 254 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TYPES TYPE_NAME 12 string 100 <null> 0 10 1 <null> <null> <null> <null> 100 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TYPES DATA_TYPE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 2 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TYPES OA_PRECISION 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TYPES LITERAL_PREFIX 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TYPES LITERAL_SUFFIX 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TYPES CREATE_PARAMS 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TYPES OA_NULLABLE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TYPES CASE_SENSITIVE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TYPES OA_SEARCHABLE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TYPES UNSIGNED_ATTRIB 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TYPES OA_MONEY 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TYPES AUTO_INCREMENT 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TYPES MINIMUM_SCALE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TYPES MAXIMUM_SCALE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TYPES LOCAL_TYPE_NAME 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ProcedureParams ModelName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ProcedureParams ProcedureName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ProcedureParams Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ProcedureParams DataType 12 string 25 <null> 0 10 0 <null> <null> <null> <null> 25 4 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ProcedureParams Position 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 5 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ProcedureParams Type 12 string 100 <null> 0 10 0 <null> <null> <null> <null> 100 6 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ProcedureParams Optional -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 7 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ProcedureParams Precision 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 8 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ProcedureParams TypeLength 4 integer 10 <null> 0 10 0 <null> (0) <null> <null> 10 9 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ProcedureParams Scale 4 integer 10 <null> 0 10 0 <null> (0) <null> <null> 10 10 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ProcedureParams Radix 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 11 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ProcedureParams NullType 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 12 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ProcedureProperties ModelName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ProcedureProperties ProcedureName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ProcedureProperties Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ProcedureProperties Value 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 4 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ProcedureProperties UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 5 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Procedures ModelName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Procedures Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Procedures NameInSource 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Procedures ReturnsResults -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 4 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Procedures ModelUID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 5 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Procedures UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 6 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Procedures Description 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Procedures FullName 12 string 2048 <null> 0 10 0 <null> <null> <null> <null> 2048 8 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.VirtualDatabases Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.VirtualDatabases Version 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Agg1 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Agg2 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Agg3 count 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 1 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Agg4 min 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Agg4 sum -5 long 19 <null> 0 10 0 <null> <null> <null> <null> 1 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Agg4 avg 8 double 20 <null> 0 10 0 <null> <null> <null> <null> 1 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Expr1 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Expr1 expr 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Expr2 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Expr2 E 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Expr3 expr 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Expr4 E 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Expr5 E 12 string 20 <null> 0 10 0 <null> <null> <null> <null> 20 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Expr6 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Expr6 expr 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Expr7 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Expr7 E 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping1 IntKey 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping1 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping1 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping1 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping1 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping1 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping1 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping1 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping1 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping1 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping1 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping1 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping1 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping1 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping1 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping1 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping1 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping2 IntKey 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping2 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping2 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping2 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping2 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping2 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping2 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping2 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping2 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping2 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping2 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping2 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping2 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping2 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping2 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping2 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping2 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping3 IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping3 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping3 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping3 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping3 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping3 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping3 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping3 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping3 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping3 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping3 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping3 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping3 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping3 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping3 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping3 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping3 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping4 IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping4 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping4 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping4 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping4 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping4 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping4 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping4 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping4 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping4 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping4 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping4 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping4 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping4 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping4 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping4 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping4 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order1 IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order1 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order1 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order1 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order1 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order1 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order1 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order1 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order1 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order1 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order1 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order1 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order1 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order1 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order1 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order1 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order1 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order2 IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order2 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order2 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order2 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order2 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order2 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order2 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order2 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order2 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order2 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order2 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order2 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order2 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order2 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order2 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order2 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order2 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order3 E 12 string 20 <null> 0 10 0 <null> <null> <null> <null> 20 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order4 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order5 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U1 IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U1 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U1 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U1 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U1 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U1 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U1 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U1 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U1 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U1 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U1 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U1 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U1 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U1 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U1 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U1 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U1 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U10 IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U10 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U10 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U10 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U10 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U10 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U10 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U10 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U10 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U10 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U10 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U10 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U10 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U10 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U10 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U10 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U10 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U11 IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U11 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U2 IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U2 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U2 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U2 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U2 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U2 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U2 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U2 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U2 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U2 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U2 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U2 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U2 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U2 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U2 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U2 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U2 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U3 IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U3 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U3 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U3 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U3 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U3 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U3 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U3 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U3 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U3 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U3 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U3 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U3 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U3 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U3 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U3 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U3 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U4 A 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U4 B 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U4 C 7 float 20 <null> 0 10 0 <null> <null> <null> <null> 126 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U5 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U5 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 2 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U5 Source 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U6 StringCol 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U6 IntCol 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U7 IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U7 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U7 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U7 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U7 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U7 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U7 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U7 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U7 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U7 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U7 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U7 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U7 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U7 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U7 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U7 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U7 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U8 IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U8 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U8 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U8 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U8 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U8 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U8 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U8 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U8 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U8 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U8 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U8 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U8 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U8 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U8 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U8 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U8 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U9 A 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U9 B 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U9 C 7 float 20 <null> 0 10 0 <null> <null> <null> <null> 126 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtData key 2 biginteger 19 <null> 0 10 0 <null> <null> <null> <null> 1 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtData data 2 biginteger 19 <null> 0 10 0 <null> <null> <null> <null> 1 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtData nextKey 2 biginteger 19 <null> 0 10 0 <null> <null> <null> <null> 1 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtFullData IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtFullData StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtFullData IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtFullData StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtFullData FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtFullData LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtFullData DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtFullData ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtFullData DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtFullData TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtFullData TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtFullData BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtFullData CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtFullData ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtFullData BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtFullData BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtFullData ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow.BigDecimalValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow.BigIntegerValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow.BooleanValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow.ByteNum 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow.CharValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow.DateValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow.DoubleNum 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow.FloatNum 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow.IntKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow.IntNum 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow.LongNum 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow.ObjectValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow.ShortValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow.StringKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow.StringNum 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow.TimeValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow.TimestampValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.choiceTestDocument choiceTest 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.choiceTestDocument choiceTest.data1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.choiceTestDocument choiceTest.data1.wrapper1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.choiceTestDocument choiceTest.data1.wrapper1.data1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.choiceTestDocument choiceTest.data1.wrapper1.key1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.choiceTestDocument choiceTest.data2 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.choiceTestDocument choiceTest.data2.wrapper2 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.choiceTestDocument choiceTest.data2.wrapper2.data2 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.choiceTestDocument choiceTest.data2.wrapper2.key2 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.choiceTestDocument choiceTest.data3 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.choiceTestDocument choiceTest.data3.wrapper3 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.choiceTestDocument choiceTest.data3.wrapper3.key3 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.choiceTestDocument choiceTest.data3.wrapper3.key3.data3 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.defaultValueTestDocument defaultValueTest 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.defaultValueTestDocument defaultValueTest.wrapper 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.defaultValueTestDocument defaultValueTest.wrapper. at dataAttr 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.defaultValueTestDocument defaultValueTest.wrapper.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.defaultValueTestDocument defaultValueTest.wrapper.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.emptyContentTestDocument emptyContentTest 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.emptyContentTestDocument emptyContentTest.wrapper1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.emptyContentTestDocument emptyContentTest.wrapper1.data1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.emptyContentTestDocument emptyContentTest.wrapper1.key1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.fixedValueTestDocument fixedValueTest 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.fixedValueTestDocument fixedValueTest.wrapper 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.fixedValueTestDocument fixedValueTest.wrapper. at fixedAttr 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.fixedValueTestDocument fixedValueTest.wrapper.fixed 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.fixedValueTestDocument fixedValueTest.wrapper.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.mixedContentTestDocument mixedContentTest 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.mixedContentTestDocument mixedContentTest.wrapper3 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.mixedContentTestDocument mixedContentTest.wrapper3.key3 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.mixedContentTestDocument mixedContentTest.wrapper3.key3.data3 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.multipleDocsTestDocument multipleDocsTest 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.multipleDocsTestDocument multipleDocsTest.data1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.multipleDocsTestDocument multipleDocsTest.key1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.nillableTestDocument nillableTest 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.nillableTestDocument nillableTest.wrapper 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.nillableTestDocument nillableTest.wrapper.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.nillableTestDocument nillableTest.wrapper.nillableField 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable testSimple 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable testSimple.recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable testSimple.recursiveRoot.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable testSimple.recursiveRoot.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable testSimple.recursiveRoot.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable testSimple.recursiveRoot.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable testSimple.recursiveRoot.recurse.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable testSimple.recursiveRoot.recurse.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable testSimple.recursiveRoot.recurse.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable testSimple.recursiveRoot.recurse.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable testSimple.recursiveRoot.recurse.recurse.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable testSimple.recursiveRoot.recurse.recurse.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable testSimple.recursiveRoot.recurse.recurse.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable testSimple.recursiveRoot.recurse.recurse.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable.MappingClasses.TemporaryTable1 key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable.MappingClasses.TemporaryTable1 data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable.MappingClasses.TemporaryTable1 nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable.MappingClasses.TemporaryTable2 key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable.MappingClasses.TemporaryTable2 data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable.MappingClasses.TemporaryTable2 nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testExcludeFromDoc testSimple 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testExcludeFromDoc testSimple.recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testExcludeFromDoc testSimple.recursiveRoot.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testExcludeFromDoc testSimple.recursiveRoot.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testExcludeFromDoc testSimple.recursiveRoot.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testExcludeFromDoc testSimple.recursiveRoot.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testExcludeFromDoc testSimple.recursiveRoot.recurse.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testExcludeFromDoc testSimple.recursiveRoot.recurse.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testExcludeFromDoc testSimple.recursiveRoot.recurse.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testExcludeFromDoc testSimple.recursiveRoot.recurse.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testExcludeFromDoc testSimple.recursiveRoot.recurse.recurse.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testExcludeFromDoc testSimple.recursiveRoot.recurse.recurse.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testExcludeFromDoc testSimple.recursiveRoot.recurse.recurse.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testExcludeFromDoc testSimple.recursiveRoot.recurse.recurse.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable testSimple 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable testSimple.recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable testSimple.recursiveRoot.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable testSimple.recursiveRoot.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable testSimple.recursiveRoot.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable testSimple.recursiveRoot.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable testSimple.recursiveRoot.recurse.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable testSimple.recursiveRoot.recurse.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable testSimple.recursiveRoot.recurse.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable testSimple.recursiveRoot.recurse.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable testSimple.recursiveRoot.recurse.recurse.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable testSimple.recursiveRoot.recurse.recurse.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable testSimple.recursiveRoot.recurse.recurse.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable testSimple.recursiveRoot.recurse.recurse.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable.MappingClasses.TemporaryTab$ key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable.MappingClasses.TemporaryTab$ data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable.MappingClasses.TemporaryTab$ nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable.MappingClasses.moveToRootTe$ key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable.MappingClasses.moveToRootTe$ data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable.MappingClasses.moveToRootTe$ nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable testSimple 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable testSimple.recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable testSimple.recursiveRoot.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable testSimple.recursiveRoot.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable testSimple.recursiveRoot.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable testSimple.recursiveRoot.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable testSimple.recursiveRoot.recurse.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable testSimple.recursiveRoot.recurse.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable testSimple.recursiveRoot.recurse.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable testSimple.recursiveRoot.recurse.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable testSimple.recursiveRoot.recurse.recurse.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable testSimple.recursiveRoot.recurse.recurse.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable testSimple.recursiveRoot.recurse.recurse.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable testSimple.recursiveRoot.recurse.recurse.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable.MappingClasses.TemporaryTable1 key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable.MappingClasses.TemporaryTable1 data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable.MappingClasses.TemporaryTable1 nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testSimpleNested testSimple 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testSimpleNested testSimple.recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testSimpleNested testSimple.recursiveRoot.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testSimpleNested testSimple.recursiveRoot.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testSimpleNested testSimple.recursiveRoot.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testSimpleNested testSimple.recursiveRoot.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testSimpleNested testSimple.recursiveRoot.recurse.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testSimpleNested testSimple.recursiveRoot.recurse.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testSimpleNested testSimple.recursiveRoot.recurse.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testSimpleNested testSimple.recursiveRoot.recurse.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testSimpleNested testSimple.recursiveRoot.recurse.recurse.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testSimpleNested testSimple.recursiveRoot.recurse.recurse.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testSimpleNested testSimple.recursiveRoot.recurse.recurse.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testSimpleNested testSimple.recursiveRoot.recurse.recurse.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupA 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupA.ID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupA.code 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupA.supervisor 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupA.supervisor.ID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupA.supervisor.code 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupA.supervisor.group 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupA.supervisor.groupID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupA.supervisorID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupB 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupB.ID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupB.code 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupB.supervisor 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupB.supervisor.ID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupB.supervisor.code 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupB.supervisor.group 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupB.supervisor.groupID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupB.supervisorID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.pseudoID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNested2Document testNested2 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNested2Document testNested2.recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNested2Document testNested2.recursiveRoot.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNested2Document testNested2.recursiveRoot.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNested2Document testNested2.recursiveRoot.nested 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNested2Document testNested2.recursiveRoot.nested.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNested2Document testNested2.recursiveRoot.nested.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNested2Document testNested2.recursiveRoot.nested.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNested2Document testNested2.recursiveRoot.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNested2Document testNested2.recursiveRoot.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNestedDocument testNested 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNestedDocument testNested.recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNestedDocument testNested.recursiveRoot.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNestedDocument testNested.recursiveRoot.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNestedDocument testNested.recursiveRoot.nested 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNestedDocument testNested.recursiveRoot.nested.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNestedDocument testNested.recursiveRoot.nested.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNestedDocument testNested.recursiveRoot.nested.nestedRecurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNestedDocument testNested.recursiveRoot.nested.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNestedDocument testNested.recursiveRoot.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNestedDocument testNested.recursiveRoot.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleDocument testSimple 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleDocument testSimple.recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleDocument testSimple.recursiveRoot.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleDocument testSimple.recursiveRoot.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleDocument testSimple.recursiveRoot.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleDocument testSimple.recursiveRoot.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleTempTable testSimple 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleTempTable testSimple.recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleTempTable testSimple.recursiveRoot.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleTempTable testSimple.recursiveRoot.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleTempTable testSimple.recursiveRoot.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleTempTable testSimple.recursiveRoot.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleTempTable.MappingClasses.TemporaryTable$ key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleTempTable.MappingClasses.TemporaryTable$ data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleTempTable.MappingClasses.TemporaryTable$ nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-Row Count : 987
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TABLE_CAT 12 <null> java.lang.String TABLE_CAT string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-TABLE_SCHEM 12 <null> java.lang.String TABLE_SCHEM string QT_Ora9DS System.VirtualDatabases 255 255 0 false true false false 0 true true false false
-TABLE_NAME 12 <null> java.lang.String TABLE_NAME string QT_Ora9DS System.Elements 2048 2048 0 false true false false 0 true true false false
-COLUMN_NAME 12 <null> java.lang.String COLUMN_NAME string QT_Ora9DS System.Elements 255 255 0 false false false false 0 true true false false
-DATA_TYPE 5 <null> java.lang.Short DATA_TYPE short QT_Ora9DS <null> 6 5 0 false false false true 1 false true true true
-TYPE_NAME 12 <null> java.lang.String TYPE_NAME string QT_Ora9DS System.Elements 100 100 0 false true false false 0 true true true false
-COLUMN_SIZE 4 <null> java.lang.Integer COLUMN_SIZE integer QT_Ora9DS <null> 11 10 0 false false false true 1 false true true true
-BUFFER_LENGTH 12 <null> java.lang.String BUFFER_LENGTH string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-DECIMAL_DIGITS 4 <null> java.lang.Integer DECIMAL_DIGITS integer QT_Ora9DS System.Elements 11 10 0 false false false false 0 true true false false
-NUM_PREC_RADIX 4 <null> java.lang.Integer NUM_PREC_RADIX integer QT_Ora9DS System.Elements 11 10 0 false false false false 0 true true false false
-NULLABLE 4 <null> java.lang.Integer NULLABLE integer QT_Ora9DS <null> 11 10 0 false false false true 1 false true true true
-REMARKS 12 <null> java.lang.String REMARKS string QT_Ora9DS System.Elements 255 255 0 false true false true 1 false true true true
-COLUMN_DEF 12 <null> java.lang.String COLUMN_DEF string QT_Ora9DS System.Elements 255 255 0 false false false false 1 true true false false
-SQL_DATA_TYPE 12 <null> java.lang.String SQL_DATA_TYPE string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-SQL_DATETIME_SUB 12 <null> java.lang.String SQL_DATETIME_SUB string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-CHAR_OCTET_LENGTH 4 <null> java.lang.Integer CHAR_OCTET_LENGTH integer QT_Ora9DS System.Elements 11 10 0 false false false false 1 true true false false
-ORDINAL_POSITION 4 <null> java.lang.Integer ORDINAL_POSITION integer QT_Ora9DS System.Elements 11 10 0 false false false false 0 true true false false
-IS_NULLABLE 12 <null> java.lang.String IS_NULLABLE string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-SCOPE_CATALOG 12 <null> java.lang.String SCOPE_CATALOG string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-SCOPE_SCHEMA 12 <null> java.lang.String SCOPE_SCHEMA string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-SCOPE_TABLE 12 <null> java.lang.String SCOPE_TABLE string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-SOURCE_DATA_TYPE 12 <null> java.lang.String SOURCE_DATA_TYPE string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-IS_AUTOINCREMENT 12 <null> java.lang.String IS_AUTOINCREMENT string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
+getColumns1
+string string string string short string integer string integer integer integer string string string string integer integer string string string string !
string string
+TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH DECIMAL_DIGITS NUM_PREC_RADIX NULLABLE REMARKS COLUMN_DEF SQL_DATA_TYPE SQL_DATETIME_SUB CHAR_OCTET_LENGTH ORDINAL_POSITION IS_NULLABLE SCOPE_CATALOG SCOPE_SCHEMA SCOPE_TABLE!
SOURCE_DATA_TYPE IS_AUTOINCREMENT
+QT_Ora9DS XQTDoc BQTDocTestDocument BigDecimalValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument BigIntegerValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument BooleanValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument ByteNum 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument CharValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument DateValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument DoubleNum 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument FloatNum 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument IntKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument IntNum 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument LongNum 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument ObjectValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument ShortValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument StringKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument StringNum 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument TimestampValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument TimeValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument SingleRow 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument BQTDocTest 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument.MappingClasses.SingleRow IntKey 4 integer 10 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument.MappingClasses.SingleRow StringKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument.MappingClasses.SingleRow IntNum 4 integer 10 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument.MappingClasses.SingleRow StringNum 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 4 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument.MappingClasses.SingleRow FloatNum 7 float 20 <null> 0 0 1 <null> <null> <null> <null> 0 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument.MappingClasses.SingleRow LongNum -5 long 19 <null> 0 0 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument.MappingClasses.SingleRow DoubleNum 8 double 20 <null> 0 0 1 <null> <null> <null> <null> 0 7 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument.MappingClasses.SingleRow ByteNum -6 byte 3 <null> 0 0 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument.MappingClasses.SingleRow DateValue 91 date 10 <null> 0 0 1 <null> <null> <null> <null> 0 9 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument.MappingClasses.SingleRow TimeValue 92 time 8 <null> 0 0 1 <null> <null> <null> <null> 0 10 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument.MappingClasses.SingleRow TimestampValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 11 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument.MappingClasses.SingleRow BooleanValue -7 boolean 1 <null> 0 0 1 <null> <null> <null> <null> 0 12 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument.MappingClasses.SingleRow CharValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 13 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument.MappingClasses.SingleRow ShortValue 5 short 5 <null> 0 0 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument.MappingClasses.SingleRow BigIntegerValue 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 15 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc BQTDocTestDocument.MappingClasses.SingleRow BigDecimalValue 2 bigdecimal 20 <null> 0 0 1 <null> <null> <null> <null> 0 16 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Agg1 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Agg2 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Agg3 count 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 1 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Agg4 min 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Agg4 sum -5 long 19 <null> 0 10 0 <null> <null> <null> <null> 1 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Agg4 avg 8 double 20 <null> 0 10 0 <null> <null> <null> <null> 1 3 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Expr1 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Expr1 expr 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Expr2 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Expr2 E 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Expr3 expr 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Expr4 E 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Expr5 E 12 string 20 <null> 0 10 0 <null> <null> <null> <null> 20 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Expr6 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Expr6 expr 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Expr7 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Expr7 E 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping1 IntKey 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping1 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping1 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping1 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping1 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping1 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping1 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping1 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping1 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping1 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping1 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping1 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping1 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping1 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping1 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping1 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping1 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping2 IntKey 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping2 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping2 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping2 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping2 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping2 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping2 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping2 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping2 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping2 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping2 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping2 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping2 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping2 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping2 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping2 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping2 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping3 IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping3 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping3 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping3 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping3 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping3 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping3 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping3 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping3 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping3 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping3 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping3 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping3 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping3 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping3 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping3 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping3 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping4 IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping4 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping4 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping4 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping4 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping4 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping4 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping4 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping4 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping4 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping4 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping4 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping4 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping4 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping4 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping4 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Mapping4 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order1 IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order1 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order1 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order1 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order1 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order1 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order1 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order1 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order1 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order1 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order1 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order1 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order1 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order1 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order1 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order1 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order1 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order2 IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order2 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order2 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order2 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order2 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order2 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order2 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order2 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order2 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order2 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order2 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order2 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order2 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order2 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order2 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order2 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order2 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order3 E 12 string 20 <null> 0 10 0 <null> <null> <null> <null> 20 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order4 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Base.Order5 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System Columns VDBName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Columns SchemaName 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System Columns TableName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 3 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Columns Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 4 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Columns Position 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 5 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Columns NameInSource 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 6 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System Columns DataType 12 string 100 <null> 0 10 0 <null> <null> <null> <null> 100 7 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Columns Scale 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 8 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Columns ElementLength 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 9 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Columns IsLengthFixed -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 10 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Columns SupportsSelect -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 11 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Columns SupportsUpdates -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 12 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Columns IsCaseSensitive -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 13 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Columns IsSigned -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 14 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Columns IsCurrency -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 15 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Columns IsAutoIncremented -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 16 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Columns NullType 12 string 20 <null> 0 10 0 <null> <null> <null> <null> 20 17 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Columns MinRange 12 string 50 <null> 0 10 1 <null> <null> <null> <null> 50 18 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System Columns MaxRange 12 string 50 <null> 0 10 1 <null> <null> <null> <null> 50 19 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System Columns SearchType 12 string 20 <null> 0 10 0 <null> <null> <null> <null> 20 20 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Columns Format 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 21 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System Columns DefaultValue 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 22 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System Columns JavaClass 12 string 500 <null> 0 10 0 <null> <null> <null> <null> 500 23 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Columns Precision 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 24 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Columns CharOctetLength 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 25 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System Columns Radix 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 26 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Columns UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 27 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Columns Description 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 28 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System DataTypes Name 12 string 100 <null> 0 10 0 <null> <null> <null> <null> 100 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System DataTypes IsStandard -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System DataTypes IsPhysical -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System DataTypes TypeName 12 string 100 <null> 0 10 0 <null> <null> <null> <null> 100 4 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System DataTypes JavaClass 12 string 500 <null> 0 10 0 <null> <null> <null> <null> 500 5 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System DataTypes Scale 4 integer 10 <null> 0 10 1 <null> (0) <null> <null> 10 6 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System DataTypes TypeLength 4 integer 10 <null> 0 10 0 <null> (0) <null> <null> 10 7 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System DataTypes NullType 12 string 20 <null> 0 10 0 <null> <null> <null> <null> 20 8 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System DataTypes IsSigned -7 boolean 1 <null> 0 10 0 <null> ('0') <null> <null> 1 9 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System DataTypes IsAutoIncremented -7 boolean 1 <null> 0 10 0 <null> ('0') <null> <null> 1 10 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System DataTypes IsCaseSensitive -7 boolean 1 <null> 0 10 0 <null> ('0') <null> <null> 1 11 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System DataTypes Precision 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 12 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System DataTypes Radix 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 13 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System DataTypes SearchType 12 string 20 <null> 0 10 0 <null> <null> <null> <null> 20 14 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System DataTypes UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 15 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System DataTypes RuntimeType 12 string 64 <null> 0 10 1 <null> <null> <null> <null> 64 16 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System DataTypes BaseType 12 string 64 <null> 0 10 1 <null> <null> <null> <null> 64 17 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System DataTypes Description 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 18 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 HugeA IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 HugeA IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 HugeA StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 HugeA StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 HugeA IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 HugeA IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 HugeA StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 HugeA StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 HugeA FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 HugeA FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 HugeA LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 HugeA LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 HugeA DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 HugeA DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 HugeA ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 HugeA ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 HugeA DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 HugeA DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 HugeA TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 HugeA TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 HugeA TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 HugeA TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 HugeA BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 HugeA BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 HugeA CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 HugeA CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 HugeA ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 HugeA ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 HugeA BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 HugeA BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 HugeA BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 HugeA BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 HugeA ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 HugeA ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 HugeB IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 HugeB IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 HugeB StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 HugeB StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 HugeB IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 HugeB IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 HugeB StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 HugeB StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 HugeB FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 HugeB FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 HugeB LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 HugeB LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 HugeB DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 HugeB DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 HugeB ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 HugeB ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 HugeB DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 HugeB DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 HugeB TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 HugeB TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 HugeB TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 HugeB TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 HugeB BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 HugeB BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 HugeB CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 HugeB CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 HugeB ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 HugeB ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 HugeB BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 HugeB BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 HugeB BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 HugeB BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 HugeB ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 HugeB ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System KeyColumns VDBName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System KeyColumns SchemaName 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System KeyColumns TableName 12 string 2048 <null> 0 10 0 <null> <null> <null> <null> 2048 3 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System KeyColumns Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 4 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System KeyColumns KeyName 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System KeyColumns KeyType 12 string 20 <null> 0 10 0 <null> <null> <null> <null> 20 6 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System KeyColumns RefKeyUID 12 string 50 <null> 0 10 1 <null> <null> <null> <null> 50 7 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System KeyColumns UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 8 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System KeyColumns Position 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 9 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System Keys VDBName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Keys SchemaName 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System Keys TableName 12 string 2048 <null> 0 10 0 <null> <null> <null> <null> 2048 3 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Keys Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 4 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Keys Description 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System Keys NameInSource 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 6 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System Keys Type 12 string 20 <null> 0 10 0 <null> <null> <null> <null> 20 7 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Keys IsIndexed -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 8 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Keys RefKeyUID 12 string 50 <null> 0 10 1 <null> <null> <null> <null> 50 9 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System Keys UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 10 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 LargeA IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 LargeA IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 LargeA StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 LargeA StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 LargeA IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 LargeA IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 LargeA StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 LargeA StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 LargeA FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 LargeA FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 LargeA LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 LargeA LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 LargeA DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 LargeA DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 LargeA ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 LargeA ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 LargeA DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 LargeA DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 LargeA TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 LargeA TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 LargeA TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 LargeA TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 LargeA BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 LargeA BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 LargeA CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 LargeA CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 LargeA ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 LargeA ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 LargeA BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 LargeA BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 LargeA BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 LargeA BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 LargeA ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 LargeA ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 LargeB IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 LargeB IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 LargeB StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 LargeB StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 LargeB IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 LargeB IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 LargeB StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 LargeB StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 LargeB FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 LargeB FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 LargeB LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 LargeB LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 LargeB DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 LargeB DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 LargeB ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 LargeB ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 LargeB DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 LargeB DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 LargeB TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 LargeB TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 LargeB TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 LargeB TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 LargeB BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 LargeB BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 LargeB CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 LargeB CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 LargeB ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 LargeB ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 LargeB BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 LargeB BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 LargeB BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 LargeB BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 LargeB ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 LargeB ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 MediumA IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 MediumA IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 MediumA StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 MediumA StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 MediumA IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 MediumA IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 MediumA StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 MediumA StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 MediumA FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 MediumA FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 MediumA LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 MediumA LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 MediumA DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 MediumA DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 MediumA ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 MediumA ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 MediumA DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 MediumA DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 MediumA TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 MediumA TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 MediumA TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 MediumA TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 MediumA BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 MediumA BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 MediumA CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 MediumA CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 MediumA ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 MediumA ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 MediumA BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 MediumA BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 MediumA BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 MediumA BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 MediumA ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 MediumA ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 MediumB IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 MediumB IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 MediumB StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 MediumB StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 MediumB IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 MediumB IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 MediumB StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 MediumB StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 MediumB FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 MediumB FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 MediumB LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 MediumB LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 MediumB DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 MediumB DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 MediumB ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 MediumB ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 MediumB DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 MediumB DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 MediumB TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 MediumB TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 MediumB TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 MediumB TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 MediumB BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 MediumB BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 MediumB CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 MediumB CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 MediumB ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 MediumB ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 MediumB BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 MediumB BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 MediumB BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 MediumB BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 MediumB ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 MediumB ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System ProcedureParams VDBName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System ProcedureParams SchemaName 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System ProcedureParams ProcedureName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 3 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System ProcedureParams Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 4 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System ProcedureParams DataType 12 string 25 <null> 0 10 0 <null> <null> <null> <null> 25 5 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System ProcedureParams Position 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 6 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System ProcedureParams Type 12 string 100 <null> 0 10 0 <null> <null> <null> <null> 100 7 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System ProcedureParams Optional -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 8 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System ProcedureParams Precision 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 9 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System ProcedureParams TypeLength 4 integer 10 <null> 0 10 0 <null> (0) <null> <null> 10 10 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System ProcedureParams Scale 4 integer 10 <null> 0 10 0 <null> (0) <null> <null> 10 11 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System ProcedureParams Radix 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 12 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System ProcedureParams NullType 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 13 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System ProcedureParams UID 12 string 50 <null> 0 10 1 <null> <null> <null> <null> 50 14 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System Procedures VDBName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Procedures SchemaName 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System Procedures Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 3 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Procedures NameInSource 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 4 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System Procedures ReturnsResults -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 5 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Procedures UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 6 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Procedures Description 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 7 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System Properties Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Properties Value 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Properties UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 3 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System ReferenceKeyColumns PKTABLE_CAT 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System ReferenceKeyColumns PKTABLE_SCHEM 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System ReferenceKeyColumns PKTABLE_NAME 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System ReferenceKeyColumns PKCOLUMN_NAME 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 4 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System ReferenceKeyColumns FKTABLE_CAT 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System ReferenceKeyColumns FKTABLE_SCHEM 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 6 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System ReferenceKeyColumns FKTABLE_NAME 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 7 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System ReferenceKeyColumns FKCOLUMN_NAME 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 8 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System ReferenceKeyColumns KEY_SEQ 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 9 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System ReferenceKeyColumns UPDATE_RULE 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 10 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System ReferenceKeyColumns DELETE_RULE 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 11 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System ReferenceKeyColumns FK_NAME 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 12 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System ReferenceKeyColumns PK_NAME 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 13 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System ReferenceKeyColumns DEFERRABILITY 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 14 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System Schemas VDBName 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System Schemas Name 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System Schemas IsPhysical -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 3 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Schemas UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 4 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Schemas Description 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System Schemas PrimaryMetamodelURI 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 6 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 SmallA IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 SmallA IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 SmallA StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 SmallA StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 SmallA IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 SmallA IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 SmallA StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 SmallA StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 SmallA FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 SmallA FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 SmallA LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 SmallA LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 SmallA DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 SmallA DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 SmallA ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 SmallA ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 SmallA DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 SmallA DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 SmallA TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 SmallA TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 SmallA TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 SmallA TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 SmallA BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 SmallA BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 SmallA CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 SmallA CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 SmallA ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 SmallA ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 SmallA BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 SmallA BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 SmallA BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 SmallA BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 SmallA ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 SmallA ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 SmallB IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 SmallB IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 SmallB StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 SmallB StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 SmallB IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 SmallB IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 SmallB StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 SmallB StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 SmallB FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 SmallB FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 SmallB LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 SmallB LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 SmallB DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 SmallB DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 SmallB ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 SmallB ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 SmallB DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 SmallB DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 SmallB TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 SmallB TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 SmallB TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 SmallB TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 SmallB BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 SmallB BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 SmallB CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 SmallB CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 SmallB ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 SmallB ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 SmallB BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 SmallB BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 SmallB BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 SmallB BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT1 SmallB ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS BQT2 SmallB ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System Tables VDBName 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System Tables SchemaName 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System Tables Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 3 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Tables Type 12 string 20 <null> 0 10 0 <null> <null> <null> <null> 20 4 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Tables NameInSource 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System Tables IsPhysical -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 6 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Tables SupportsUpdates -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 7 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Tables UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 8 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Tables Cardinality 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 9 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System Tables Description 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 10 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System Tables IsSystem -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 11 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS System Tables IsMaterialized -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 0 12 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U1 IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U1 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U1 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U1 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U1 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U1 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U1 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U1 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U1 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U1 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U1 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U1 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U1 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U1 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U1 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U1 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U1 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U10 IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U10 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U10 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U10 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U10 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U10 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U10 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U10 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U10 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U10 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U10 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U10 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U10 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U10 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U10 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U10 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U10 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U11 IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U11 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U2 IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U2 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U2 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U2 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U2 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U2 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U2 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U2 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U2 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U2 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U2 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U2 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U2 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U2 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U2 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U2 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U2 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U3 IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U3 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U3 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U3 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U3 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U3 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U3 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U3 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U3 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U3 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U3 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U3 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U3 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U3 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U3 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U3 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U3 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U4 A 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U4 B 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U4 C 7 float 20 <null> 0 10 0 <null> <null> <null> <null> 126 3 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U5 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U5 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U5 Source 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 3 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U6 StringCol 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U6 IntCol 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U7 IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U7 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U7 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U7 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U7 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U7 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U7 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U7 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U7 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U7 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U7 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U7 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U7 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U7 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U7 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U7 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U7 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U8 IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U8 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U8 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U8 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U8 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U8 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U8 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U8 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U8 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U8 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U8 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U8 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U8 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U8 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U8 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U8 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U8 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U9 A 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U9 B 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS VQT Union.U9 C 7 float 20 <null> 0 10 0 <null> <null> <null> <null> 126 3 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System VirtualDatabases Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS System VirtualDatabases Version 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc choiceTestDocument data1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc choiceTestDocument key1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc choiceTestDocument wrapper1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc choiceTestDocument data1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc choiceTestDocument data2 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc choiceTestDocument key2 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc choiceTestDocument wrapper2 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc choiceTestDocument data2 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc choiceTestDocument data3 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc choiceTestDocument key3 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc choiceTestDocument wrapper3 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc choiceTestDocument data3 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc choiceTestDocument choiceTest 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc choiceTestDocument.MappingClasses.choiceTest key1 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc choiceTestDocument.MappingClasses.choiceTest data1 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc choiceTestDocument.MappingClasses.choiceTest data2 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc choiceTestDocument.MappingClasses.choiceTest key2 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 4 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc choiceTestDocument.MappingClasses.choiceTest key3 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc choiceTestDocument.MappingClasses.choiceTest data3 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc defaultValueTestDocument @dataAttr 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc defaultValueTestDocument data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc defaultValueTestDocument key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc defaultValueTestDocument wrapper 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc defaultValueTestDocument defaultValueTest 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc defaultValueTestDocument.MappingClasses.wrapper key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc defaultValueTestDocument.MappingClasses.wrapper data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc defaultValueTestDocument.MappingClasses.wrapper dataAttr 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc emptyContentTestDocument data1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc emptyContentTestDocument key1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc emptyContentTestDocument wrapper1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc emptyContentTestDocument emptyContentTest 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc emptyContentTestDocument.MappingClasses.wrapper1 key1 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc emptyContentTestDocument.MappingClasses.wrapper1 data1 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc fixedValueTestDocument @fixedAttr 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc fixedValueTestDocument fixed 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc fixedValueTestDocument key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc fixedValueTestDocument wrapper 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc fixedValueTestDocument fixedValueTest 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc fixedValueTestDocument.MappingClasses.wrapper key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument code 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument ID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument code 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument groupID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument group 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument ID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument supervisorID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument supervisor 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument GroupA 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument code 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument ID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument code 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument groupID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument group 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument ID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument supervisorID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument supervisor 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument GroupB 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument pseudoID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument group 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument.MappingClasses.group ID 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument.MappingClasses.group code 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument.MappingClasses.group supervisorID 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument.MappingClasses.group1 ID 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument.MappingClasses.group1 code 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument.MappingClasses.group1 supervisorID 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument.MappingClasses.supervisor ID 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument.MappingClasses.supervisor code 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc groupDocument.MappingClasses.supervisor groupID 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc mixedContentTestDocument data3 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc mixedContentTestDocument key3 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc mixedContentTestDocument wrapper3 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc mixedContentTestDocument mixedContentTest 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc mixedContentTestDocument.MappingClasses.wrapper3 key3 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc mixedContentTestDocument.MappingClasses.wrapper3 data3 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc multipleDocsTestDocument data1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc multipleDocsTestDocument key1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc multipleDocsTestDocument multipleDocsTest 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc multipleDocsTestDocument.MappingClasses.multipleDocsTest key1 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc multipleDocsTestDocument.MappingClasses.multipleDocsTest data1 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc nillableTestDocument key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc nillableTestDocument nillableField 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc nillableTestDocument wrapper 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc nillableTestDocument nillableTest 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc nillableTestDocument.MappingClasses.wrapper key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTDoc nillableTestDocument.MappingClasses.wrapper nillableField 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable testSimple 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable.MappingClasses.TemporaryTable1 key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable.MappingClasses.TemporaryTable1 data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable.MappingClasses.TemporaryTable1 nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable.MappingClasses.TemporaryTable2 key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable.MappingClasses.TemporaryTable2 data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable.MappingClasses.TemporaryTable2 nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable.MappingClasses.nested key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable.MappingClasses.nested data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable.MappingClasses.nested nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable.MappingClasses.nested1 key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable.MappingClasses.nested1 data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable.MappingClasses.nested1 nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable.MappingClasses.root key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable.MappingClasses.root data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testBoundTempTable.MappingClasses.root nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc testSimple 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc.MappingClasses.nested key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc.MappingClasses.nested data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc.MappingClasses.nested nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc.MappingClasses.nested1 key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc.MappingClasses.nested1 data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc.MappingClasses.nested1 nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc.MappingClasses.root key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc.MappingClasses.root data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc.MappingClasses.root nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNested2Document data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNested2Document key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNested2Document data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNested2Document key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNested2Document nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNested2Document nested 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNested2Document nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNested2Document recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNested2Document recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNested2Document testNested2 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNested2Document.MappingClasses.nested key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNested2Document.MappingClasses.nested data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNested2Document.MappingClasses.nested nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNested2Document.MappingClasses.recurse key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNested2Document.MappingClasses.recurse data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNested2Document.MappingClasses.recurse nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNested2Document.MappingClasses.recursiveRoot key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNested2Document.MappingClasses.recursiveRoot data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNested2Document.MappingClasses.recursiveRoot nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNestedDocument data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNestedDocument key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNestedDocument data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNestedDocument key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNestedDocument nestedRecurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNestedDocument nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNestedDocument nested 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNestedDocument nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNestedDocument recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNestedDocument recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNestedDocument testNested 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNestedDocument.MappingClasses.nested key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNestedDocument.MappingClasses.nested data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNestedDocument.MappingClasses.nested nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNestedDocument.MappingClasses.nestedRecurse key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNestedDocument.MappingClasses.nestedRecurse data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNestedDocument.MappingClasses.nestedRecurse nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNestedDocument.MappingClasses.recurse key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNestedDocument.MappingClasses.recurse data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNestedDocument.MappingClasses.recurse nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNestedDocument.MappingClasses.recursiveRoot key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNestedDocument.MappingClasses.recursiveRoot data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testNestedDocument.MappingClasses.recursiveRoot nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable testSimple 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable.MappingClasses.TemporaryTable1 key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable.MappingClasses.TemporaryTable1 data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable.MappingClasses.TemporaryTable1 nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable.MappingClasses.moveToRootTempTable key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable.MappingClasses.moveToRootTempTable data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable.MappingClasses.moveToRootTempTable nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable.MappingClasses.nested key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable.MappingClasses.nested data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable.MappingClasses.nested nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable.MappingClasses.nested1 key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable.MappingClasses.nested1 data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable.MappingClasses.nested1 nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable.MappingClasses.root key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable.MappingClasses.root data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable.MappingClasses.root nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable testSimple 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable.MappingClasses.TemporaryTable1 key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable.MappingClasses.TemporaryTable1 data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable.MappingClasses.TemporaryTable1 nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable.MappingClasses.nested key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable.MappingClasses.nested data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable.MappingClasses.nested nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable.MappingClasses.nested1 key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable.MappingClasses.nested1 data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable.MappingClasses.nested1 nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable.MappingClasses.root key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable.MappingClasses.root data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testRootTempTable.MappingClasses.root nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleDocument data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleDocument key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleDocument nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleDocument recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleDocument recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleDocument testSimple 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleDocument.MappingClasses.recurse key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleDocument.MappingClasses.recurse data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleDocument.MappingClasses.recurse nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleDocument.MappingClasses.recursiveRoot key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleDocument.MappingClasses.recursiveRoot data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleDocument.MappingClasses.recursiveRoot nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested testSimple 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested.MappingClasses.nested key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested.MappingClasses.nested data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested.MappingClasses.nested nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested.MappingClasses.nested1 key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested.MappingClasses.nested1 data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested.MappingClasses.nested1 nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested.MappingClasses.root key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested.MappingClasses.root data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTNestedDoc testSimpleNested.MappingClasses.root nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleTempTable data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleTempTable key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleTempTable nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleTempTable recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleTempTable recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleTempTable testSimple 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleTempTable.MappingClasses.TemporaryTable1 key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleTempTable.MappingClasses.TemporaryTable1 data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleTempTable.MappingClasses.TemporaryTable1 nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleTempTable.MappingClasses.recurse key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleTempTable.MappingClasses.recurse data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleTempTable.MappingClasses.recurse nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleTempTable.MappingClasses.recursiveRoot key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleTempTable.MappingClasses.recursiveRoot data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQTRecursiveDoc testSimpleTempTable.MappingClasses.recursiveRoot nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQT xqtData key 2 biginteger 19 <null> 0 10 0 <null> <null> <null> <null> 1 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS XQT xqtData data 2 biginteger 19 <null> 0 10 0 <null> <null> <null> <null> 1 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS XQT xqtData nextKey 2 biginteger 19 <null> 0 10 0 <null> <null> <null> <null> 1 3 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS XQT xqtFullData IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS XQT xqtFullData StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
+QT_Ora9DS XQT xqtFullData IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQT xqtFullData StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQT xqtFullData FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQT xqtFullData LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQT xqtFullData DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQT xqtFullData ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQT xqtFullData DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQT xqtFullData TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQT xqtFullData TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQT xqtFullData BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQT xqtFullData CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQT xqtFullData ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQT xqtFullData BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQT xqtFullData BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
+QT_Ora9DS XQT xqtFullData ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
+Row Count : 971
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TABLE_CAT 12 QT_Ora9DS java.lang.String TABLE_CAT string System Columns 255 255 0 false false false false 0 true true false false
+TABLE_SCHEM 12 QT_Ora9DS java.lang.String TABLE_SCHEM string System Columns 255 255 0 false true false true 1 false true true true
+TABLE_NAME 12 QT_Ora9DS java.lang.String TABLE_NAME string System Columns 255 255 0 false true false false 0 true true false false
+COLUMN_NAME 12 QT_Ora9DS java.lang.String COLUMN_NAME string System Columns 255 255 0 false false false false 0 true true false false
+DATA_TYPE 5 QT_Ora9DS java.lang.Short DATA_TYPE short <null> <null> 6 5 0 false false false true 1 false true true true
+TYPE_NAME 12 QT_Ora9DS java.lang.String TYPE_NAME string System Columns 100 100 0 false true false false 0 true true true false
+COLUMN_SIZE 4 QT_Ora9DS java.lang.Integer COLUMN_SIZE integer <null> <null> 11 10 0 false false false true 1 false true true true
+BUFFER_LENGTH 12 QT_Ora9DS java.lang.String BUFFER_LENGTH string <null> <null> 4000 4000 0 false false false true 1 false true true true
+DECIMAL_DIGITS 4 QT_Ora9DS java.lang.Integer DECIMAL_DIGITS integer System Columns 11 10 0 false false false false 0 true true false false
+NUM_PREC_RADIX 4 QT_Ora9DS java.lang.Integer NUM_PREC_RADIX integer System Columns 11 10 0 false false false false 0 true true false false
+NULLABLE 4 QT_Ora9DS java.lang.Integer NULLABLE integer <null> <null> 11 10 0 false false false true 1 false true true true
+REMARKS 12 QT_Ora9DS java.lang.String REMARKS string System Columns 255 255 0 false true false true 1 false true true true
+COLUMN_DEF 12 QT_Ora9DS java.lang.String COLUMN_DEF string System Columns 255 255 0 false false false false 1 true true false false
+SQL_DATA_TYPE 12 QT_Ora9DS java.lang.String SQL_DATA_TYPE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SQL_DATETIME_SUB 12 QT_Ora9DS java.lang.String SQL_DATETIME_SUB string <null> <null> 4000 4000 0 false false false true 1 false true true true
+CHAR_OCTET_LENGTH 4 QT_Ora9DS java.lang.Integer CHAR_OCTET_LENGTH integer System Columns 11 10 0 false false false false 1 true true false false
+ORDINAL_POSITION 4 QT_Ora9DS java.lang.Integer ORDINAL_POSITION integer System Columns 11 10 0 false false false false 0 true true false false
+IS_NULLABLE 12 QT_Ora9DS java.lang.String IS_NULLABLE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SCOPE_CATALOG 12 QT_Ora9DS java.lang.String SCOPE_CATALOG string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SCOPE_SCHEMA 12 QT_Ora9DS java.lang.String SCOPE_SCHEMA string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SCOPE_TABLE 12 QT_Ora9DS java.lang.String SCOPE_TABLE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SOURCE_DATA_TYPE 12 QT_Ora9DS java.lang.String SOURCE_DATA_TYPE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+IS_AUTOINCREMENT 12 QT_Ora9DS java.lang.String IS_AUTOINCREMENT string <null> <null> 4000 4000 0 false false false true 1 false true true true
Modified: branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumns2.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumns2.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumns2.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,1015 +1,28 @@
-getColumns2
-string string string string short string integer string integer integer integer string string string string integer integer string string string string !
string string
-TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH DECIMAL_DIGITS NUM_PREC_RADIX NULLABLE REMARKS COLUMN_DEF SQL_DATA_TYPE SQL_DATETIME_SUB CHAR_OCTET_LENGTH ORDINAL_POSITION IS_NULLABLE SCOPE_CATALOG SCOPE_SCHEMA SCOPE_TABLE!
SOURCE_DATA_TYPE IS_AUTOINCREMENT
-<null> QT_Ora9DS BQT1.HugeA IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeA StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeA IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeA StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeA FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeA LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeA DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeA ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeA DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeA TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeA TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeA BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeA CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeA ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeA BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeA BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeA ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeB IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeB StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeB IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeB StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeB FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeB LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeB DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeB ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeB DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeB TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeB TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeB BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeB CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeB ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeB BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeB BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.HugeB ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeA IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeA StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeA IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeA StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeA FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeA LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeA DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeA ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeA DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeA TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeA TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeA BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeA CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeA ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeA BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeA BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeA ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeB IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeB StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeB IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeB StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeB FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeB LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeB DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeB ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeB DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeB TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeB TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeB BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeB CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeB ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeB BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeB BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.LargeB ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumA IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumA StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumA IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumA StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumA FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumA LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumA DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumA ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumA DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumA TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumA TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumA BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumA CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumA ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumA BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumA BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumA ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumB IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumB StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumB IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumB StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumB FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumB LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumB DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumB ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumB DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumB TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumB TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumB BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumB CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumB ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumB BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumB BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.MediumB ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallA IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallA StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallA IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallA StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallA FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallA LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallA DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallA ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallA DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallA TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallA TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallA BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallA CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallA ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallA BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallA BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallA ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallB IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallB StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallB IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallB StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallB FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallB LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallB DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallB ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallB DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallB TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallB TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallB BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallB CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallB ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallB BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallB BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT1.SmallB ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeA IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeA StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeA IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeA StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeA FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeA LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeA DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeA ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeA DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeA TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeA TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeA BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeA CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeA ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeA BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeA BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeA ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeB IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeB StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeB IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeB StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeB FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeB LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeB DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeB ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeB DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeB TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeB TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeB BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeB CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeB ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeB BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeB BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.HugeB ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeA IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeA StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeA IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeA StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeA FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeA LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeA DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeA ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeA DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeA TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeA TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeA BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeA CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeA ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeA BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeA BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeA ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeB IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeB StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeB IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeB StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeB FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeB LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeB DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeB ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeB DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeB TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeB TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeB BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeB CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeB ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeB BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeB BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.LargeB ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumA IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumA StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumA IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumA StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumA FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumA LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumA DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumA ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumA DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumA TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumA TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumA BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumA CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumA ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumA BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumA BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumA ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumB IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumB StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumB IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumB StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumB FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumB LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumB DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumB ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumB DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumB TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumB TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumB BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumB CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumB ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumB BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumB BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.MediumB ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallA IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallA StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallA IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallA StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallA FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallA LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallA DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallA ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallA DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallA TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallA TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallA BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallA CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallA ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallA BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallA BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallA ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallB IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallB StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallB IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallB StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallB FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallB LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallB DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallB ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallB DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallB TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallB TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallB BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallB CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallB ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallB BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallB BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS BQT2.SmallB ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypeElementProperties DataTypeName 12 string 100 <null> 0 10 0 <null> <null> <null> <null> 100 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypeElementProperties DataTypeElementName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypeElementProperties Name 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypeElementProperties Value 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 4 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypeElementProperties UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 5 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypeElements DataTypeName 12 string 100 <null> 0 10 0 <null> <null> <null> <null> 100 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypeElements Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypeElements Position 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypeElements Scale 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 4 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypeElements ElementLength 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 5 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypeElements UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 6 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypeProperties DataType 12 string 100 <null> 0 10 0 <null> <null> <null> <null> 100 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypeProperties Name 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypeProperties Value 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypeProperties UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 4 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes Name 12 string 100 <null> 0 10 0 <null> <null> <null> <null> 100 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes IsStandard -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 2 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes IsPhysical -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes TypeName 12 string 100 <null> 0 10 0 <null> <null> <null> <null> 100 4 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes JavaClass 12 string 500 <null> 0 10 0 <null> <null> <null> <null> 500 5 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes Scale 4 integer 10 <null> 0 10 1 <null> (0) <null> <null> 10 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes TypeLength 4 integer 10 <null> 0 10 0 <null> (0) <null> <null> 10 7 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes NullType 12 string 20 <null> 0 10 0 <null> <null> <null> <null> 20 8 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes IsSigned -7 boolean 1 <null> 0 10 0 <null> ('0') <null> <null> 1 9 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes IsAutoIncremented -7 boolean 1 <null> 0 10 0 <null> ('0') <null> <null> 1 10 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes IsCaseSensitive -7 boolean 1 <null> 0 10 0 <null> ('0') <null> <null> 1 11 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes Precision 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 12 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes Radix 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes SearchType 12 string 20 <null> 0 10 0 <null> <null> <null> <null> 20 14 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 15 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes RuntimeType 12 string 64 <null> 0 10 1 <null> <null> <null> <null> 64 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes BaseType 12 string 64 <null> 0 10 1 <null> <null> <null> <null> 64 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.DataTypes Description 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 18 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ElementProperties ModelName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ElementProperties GroupFullName 12 string 2048 <null> 0 10 0 <null> <null> <null> <null> 2048 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ElementProperties ElementName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ElementProperties Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 4 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ElementProperties Value 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 5 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ElementProperties GroupName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 6 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ElementProperties ElementUpperName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 7 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ElementProperties GroupUpperName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 8 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ElementProperties UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 9 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements ModelName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements GroupName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements GroupFullName 12 string 2048 <null> 0 10 0 <null> <null> <null> <null> 2048 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 4 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements Position 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 5 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements NameInSource 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements DataType 12 string 100 <null> 0 10 0 <null> <null> <null> <null> 100 7 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements Scale 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 8 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements ElementLength 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 9 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements IsLengthFixed -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 10 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements SupportsSelect -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 11 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements SupportsUpdates -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 12 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements IsCaseSensitive -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 13 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements IsSigned -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 14 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements IsCurrency -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 15 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements IsAutoIncremented -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 16 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements NullType 12 string 20 <null> 0 10 0 <null> <null> <null> <null> 20 17 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements MinRange 12 string 50 <null> 0 10 1 <null> <null> <null> <null> 50 18 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements MaxRange 12 string 50 <null> 0 10 1 <null> <null> <null> <null> 50 19 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements SearchType 12 string 20 <null> 0 10 0 <null> <null> <null> <null> 20 20 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements Format 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 21 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements DefaultValue 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 22 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements JavaClass 12 string 500 <null> 0 10 0 <null> <null> <null> <null> 500 23 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements Precision 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 24 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements CharOctetLength 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 25 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements Radix 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 26 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements GroupUpperName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 27 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements UpperName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 28 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 29 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Elements Description 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 30 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.GroupProperties ModelName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.GroupProperties GroupFullName 12 string 2048 <null> 0 10 0 <null> <null> <null> <null> 2048 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.GroupProperties Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.GroupProperties Value 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 4 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.GroupProperties GroupName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 5 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.GroupProperties GroupUpperName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 6 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.GroupProperties UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 7 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Groups ModelName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Groups FullName 12 string 2048 <null> 0 10 0 <null> <null> <null> <null> 2048 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Groups Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Groups Type 12 string 20 <null> 0 10 0 <null> <null> <null> <null> 20 4 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Groups NameInSource 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Groups IsPhysical -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 6 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Groups UpperName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 7 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Groups SupportsUpdates -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 8 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Groups UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 9 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Groups Cardinality 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 10 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Groups Description 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Groups IsSystem -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Groups IsMaterialized -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 0 13 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.JDBC.ReferenceKeyColumns PKTABLE_CAT 12 string 1 <null> 0 10 1 <null> <null> <null> <null> 1 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.JDBC.ReferenceKeyColumns PKTABLE_SCHEM 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 2 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.JDBC.ReferenceKeyColumns PKTABLE_NAME 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.JDBC.ReferenceKeyColumns PKCOLUMN_NAME 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.JDBC.ReferenceKeyColumns FKTABLE_CAT 12 string 1 <null> 0 10 1 <null> <null> <null> <null> 1 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.JDBC.ReferenceKeyColumns FKTABLE_SCHEM 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.JDBC.ReferenceKeyColumns FKTABLE_NAME 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.JDBC.ReferenceKeyColumns FKCOLUMN_NAME 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.JDBC.ReferenceKeyColumns KEY_SEQ 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.JDBC.ReferenceKeyColumns UPDATE_RULE 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.JDBC.ReferenceKeyColumns DELETE_RULE 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.JDBC.ReferenceKeyColumns FK_NAME 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.JDBC.ReferenceKeyColumns PK_NAME 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.JDBC.ReferenceKeyColumns DEFERRABILITY 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyElements ModelName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyElements GroupFullName 12 string 2048 <null> 0 10 0 <null> <null> <null> <null> 2048 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyElements Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyElements KeyName 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyElements KeyType 12 string 20 <null> 0 10 0 <null> <null> <null> <null> 20 5 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyElements GroupName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 6 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyElements GroupUpperName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 7 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyElements RefKeyUID 12 string 50 <null> 0 10 1 <null> <null> <null> <null> 50 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyElements UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 9 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyElements Position 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyProperties ModelName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyProperties GroupFullName 12 string 2048 <null> 0 10 0 <null> <null> <null> <null> 2048 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyProperties KeyName 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyProperties Name 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyProperties Value 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyProperties GroupName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 6 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyProperties GroupUpperName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 7 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.KeyProperties UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 8 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Keys ModelName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Keys GroupFullName 12 string 2048 <null> 0 10 0 <null> <null> <null> <null> 2048 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Keys Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Keys Description 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Keys NameInSource 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Keys Type 12 string 20 <null> 0 10 0 <null> <null> <null> <null> 20 6 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Keys IsIndexed -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 7 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Keys GroupName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 8 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Keys GroupUpperName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 9 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Keys RefKeyUID 12 string 50 <null> 0 10 1 <null> <null> <null> <null> 50 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Keys UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 11 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ModelProperties ModelName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ModelProperties Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ModelProperties Value 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ModelProperties UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 4 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Models Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Models IsPhysical -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Models SupportsWhereAll -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Models SupportsOrderBy -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 4 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Models SupportsJoin -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 5 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Models SupportsDistinct -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 6 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Models SupportsOuterJoin -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 7 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Models MaxSetSize 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 8 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Models UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 9 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Models Description 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Models PrimaryMetamodelURI 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 11 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_COLUMNS TABLE_QUALIFIER 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_COLUMNS TABLE_OWNER 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 2 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_COLUMNS TABLE_NAME 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_COLUMNS COLUMN_NAME 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_COLUMNS DATA_TYPE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_COLUMNS TYPE_NAME 12 string 100 <null> 0 10 1 <null> <null> <null> <null> 100 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_COLUMNS OA_LENGTH 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_COLUMNS OA_PRECISION 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_COLUMNS OA_SCALE 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_COLUMNS OA_RADIX 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_COLUMNS OA_NULLABLE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_COLUMNS OA_SCOPE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_COLUMNS PSEUDO_COLUMN 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_COLUMNS OA_COLUMNTYPE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_COLUMNS REMARKS 12 string 254 <null> 0 10 1 <null> <null> <null> <null> 254 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_FKEYS PKTABLE_QUALIFIER 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_FKEYS PKTABLE_OWNER 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 2 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_FKEYS PKTABLE_NAME 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_FKEYS PKCOLUMN_NAME 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_FKEYS FKTABLE_QUALIFIER 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_FKEYS FKTABLE_OWNER 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_FKEYS FKTABLE_NAME 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_FKEYS FKCOLUMN_NAME 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_FKEYS KEY_SEQ 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_FKEYS UPDATE_RULE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_FKEYS DELETE_RULE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_FKEYS FK_NAME 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_FKEYS PK_NAME 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROC OA_QUALIFIER 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROC OA_OWNER 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 2 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROC OA_NAME 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROC NUM_INPUT_PARAMS 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROC NUM_OUTPUT_PARAMS 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROC NUM_RESULT_SETS 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROC REMARKS 12 string 254 <null> 0 10 1 <null> <null> <null> <null> 254 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROC PROCEDURE_TYPE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROCCOLUMNS OA_QUALIFIER 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROCCOLUMNS OA_OWNER 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 2 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROCCOLUMNS OA_NAME 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROCCOLUMNS COLUMN_NAME 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROCCOLUMNS OA_COLUMNTYPE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROCCOLUMNS DATA_TYPE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROCCOLUMNS TYPE_NAME 12 string 100 <null> 0 10 1 <null> <null> <null> <null> 100 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROCCOLUMNS OA_PRECISION 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROCCOLUMNS OA_LENGTH 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROCCOLUMNS OA_RADIX 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROCCOLUMNS OA_SCALE 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROCCOLUMNS OA_NULLABLE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROCCOLUMNS OA_SCOPE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_PROCCOLUMNS REMARKS 12 string 254 <null> 0 10 1 <null> <null> <null> <null> 254 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_STATISTICS TABLE_QUALIFIER 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_STATISTICS TABLE_OWNER 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 2 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_STATISTICS TABLE_NAME 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_STATISTICS NON_UNIQUE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_STATISTICS INDEX_QUALIFIER 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_STATISTICS INDEX_NAME 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_STATISTICS OA_TYPE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_STATISTICS SEQ_IN_INDEX 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_STATISTICS COLUMN_NAME 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_STATISTICS OA_COLLATION 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_STATISTICS OA_CARDINALITY 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_STATISTICS OA_PAGES 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_STATISTICS FILTER_CONDITIONS 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TABLES TABLE_QUALIFIER 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TABLES TABLE_OWNER 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 2 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TABLES TABLE_NAME 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TABLES TABLE_TYPE 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TABLES REMARKS 12 string 254 <null> 0 10 1 <null> <null> <null> <null> 254 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TYPES TYPE_NAME 12 string 100 <null> 0 10 1 <null> <null> <null> <null> 100 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TYPES DATA_TYPE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 2 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TYPES OA_PRECISION 4 integer 10 <null> 0 10 1 <null> <null> <null> <null> 10 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TYPES LITERAL_PREFIX 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TYPES LITERAL_SUFFIX 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TYPES CREATE_PARAMS 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TYPES OA_NULLABLE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TYPES CASE_SENSITIVE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TYPES OA_SEARCHABLE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TYPES UNSIGNED_ATTRIB 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TYPES OA_MONEY 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TYPES AUTO_INCREMENT 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TYPES MINIMUM_SCALE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TYPES MAXIMUM_SCALE 5 short 5 <null> 0 10 1 <null> <null> <null> <null> 5 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ODBC.OA_TYPES LOCAL_TYPE_NAME 12 string 128 <null> 0 10 1 <null> <null> <null> <null> 128 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ProcedureParams ModelName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ProcedureParams ProcedureName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ProcedureParams Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ProcedureParams DataType 12 string 25 <null> 0 10 0 <null> <null> <null> <null> 25 4 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ProcedureParams Position 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 5 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ProcedureParams Type 12 string 100 <null> 0 10 0 <null> <null> <null> <null> 100 6 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ProcedureParams Optional -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 7 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ProcedureParams Precision 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 8 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ProcedureParams TypeLength 4 integer 10 <null> 0 10 0 <null> (0) <null> <null> 10 9 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ProcedureParams Scale 4 integer 10 <null> 0 10 0 <null> (0) <null> <null> 10 10 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ProcedureParams Radix 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 10 11 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ProcedureParams NullType 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 12 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ProcedureProperties ModelName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ProcedureProperties ProcedureName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ProcedureProperties Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ProcedureProperties Value 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 4 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.ProcedureProperties UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 5 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Procedures ModelName 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Procedures Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Procedures NameInSource 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Procedures ReturnsResults -7 boolean 1 <null> 0 10 0 <null> <null> <null> <null> 1 4 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Procedures ModelUID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 5 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Procedures UID 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 6 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Procedures Description 12 string 255 <null> 0 10 1 <null> <null> <null> <null> 255 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.Procedures FullName 12 string 2048 <null> 0 10 0 <null> <null> <null> <null> 2048 8 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.VirtualDatabases Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS System.VirtualDatabases Version 12 string 50 <null> 0 10 0 <null> <null> <null> <null> 50 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Agg1 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Agg2 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Agg3 count 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 1 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Agg4 min 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Agg4 sum -5 long 19 <null> 0 10 0 <null> <null> <null> <null> 1 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Agg4 avg 8 double 20 <null> 0 10 0 <null> <null> <null> <null> 1 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Expr1 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Expr1 expr 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Expr2 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Expr2 E 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Expr3 expr 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Expr4 E 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Expr5 E 12 string 20 <null> 0 10 0 <null> <null> <null> <null> 20 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Expr6 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Expr6 expr 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Expr7 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Expr7 E 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping1 IntKey 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping1 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping1 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping1 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping1 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping1 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping1 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping1 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping1 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping1 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping1 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping1 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping1 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping1 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping1 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping1 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping1 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping2 IntKey 4 integer 10 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping2 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping2 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping2 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping2 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping2 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping2 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping2 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping2 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping2 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping2 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping2 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping2 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping2 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping2 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping2 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping2 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping3 IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping3 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping3 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping3 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping3 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping3 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping3 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping3 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping3 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping3 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping3 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping3 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping3 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping3 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping3 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping3 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping3 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping4 IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping4 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping4 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping4 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping4 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping4 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping4 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping4 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping4 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping4 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping4 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping4 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping4 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping4 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping4 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping4 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Mapping4 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order1 IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order1 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order1 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order1 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order1 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order1 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order1 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order1 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order1 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order1 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order1 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order1 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order1 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order1 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order1 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order1 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order1 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order2 IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order2 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order2 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order2 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order2 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order2 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order2 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order2 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order2 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order2 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order2 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order2 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order2 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order2 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order2 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order2 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order2 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order3 E 12 string 20 <null> 0 10 0 <null> <null> <null> <null> 20 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order4 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Base.Order5 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U1 IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U1 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U1 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U1 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U1 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U1 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U1 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U1 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U1 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U1 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U1 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U1 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U1 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U1 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U1 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U1 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U1 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U10 IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U10 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U10 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U10 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U10 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U10 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U10 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U10 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U10 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U10 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U10 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U10 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U10 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U10 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U10 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U10 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U10 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U11 IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U11 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U2 IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U2 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U2 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U2 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U2 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U2 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U2 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U2 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U2 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U2 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U2 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U2 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U2 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U2 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U2 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U2 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U2 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U3 IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U3 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U3 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U3 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U3 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U3 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U3 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U3 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U3 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U3 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U3 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U3 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U3 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U3 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U3 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U3 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U3 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U4 A 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U4 B 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U4 C 7 float 20 <null> 0 10 0 <null> <null> <null> <null> 126 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U5 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U5 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 2 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U5 Source 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U6 StringCol 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U6 IntCol 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U7 IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U7 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U7 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U7 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U7 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U7 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U7 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U7 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U7 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U7 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U7 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U7 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U7 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U7 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U7 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U7 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U7 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U8 IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U8 StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U8 IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U8 StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U8 FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U8 LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U8 DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U8 ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U8 DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U8 TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U8 TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U8 BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U8 CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U8 ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U8 BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U8 BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U8 ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U9 A 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U9 B 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS VQT.Union.U9 C 7 float 20 <null> 0 10 0 <null> <null> <null> <null> 126 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtData key 2 biginteger 19 <null> 0 10 0 <null> <null> <null> <null> 1 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtData data 2 biginteger 19 <null> 0 10 0 <null> <null> <null> <null> 1 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtData nextKey 2 biginteger 19 <null> 0 10 0 <null> <null> <null> <null> 1 3 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtFullData IntKey 4 integer 22 <null> 0 10 0 <null> <null> <null> <null> 0 1 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtFullData StringKey 12 string 10 <null> 0 10 0 <null> <null> <null> <null> 10 2 YES <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtFullData IntNum 4 integer 22 <null> 0 10 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtFullData StringNum 12 string 10 <null> 0 10 1 <null> <null> <null> <null> 10 4 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtFullData FloatNum 7 float 20 <null> 0 10 1 <null> <null> <null> <null> 126 5 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtFullData LongNum -5 long 28 <null> 0 10 1 <null> <null> <null> <null> 0 6 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtFullData DoubleNum 8 double 20 <null> 0 10 1 <null> <null> <null> <null> 28 7 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtFullData ByteNum -6 byte 8 <null> 0 10 1 <null> <null> <null> <null> 0 8 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtFullData DateValue 91 date 7 <null> 0 10 1 <null> <null> <null> <null> 7 9 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtFullData TimeValue 92 time 7 <null> 0 10 1 <null> <null> <null> <null> 7 10 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtFullData TimestampValue 93 timestamp 7 <null> 0 10 1 <null> <null> <null> <null> 7 11 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtFullData BooleanValue -7 boolean 1 <null> 0 10 1 <null> <null> <null> <null> 1 12 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtFullData CharValue 1 char 1 <null> 0 10 1 <null> <null> <null> <null> 1 13 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtFullData ShortValue 5 short 8 <null> 0 10 1 <null> <null> <null> <null> 0 14 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtFullData BigIntegerValue 2 biginteger 19 <null> 0 10 1 <null> <null> <null> <null> 28 15 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtFullData BigDecimalValue 2 bigdecimal 20 <null> 0 10 1 <null> <null> <null> <null> 126 16 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQT.xqtFullData ObjectValue 2000 object 2048 <null> 0 10 1 <null> <null> <null> <null> 2048 17 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow.BigDecimalValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow.BigIntegerValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow.BooleanValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow.ByteNum 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow.CharValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow.DateValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow.DoubleNum 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow.FloatNum 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow.IntKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow.IntNum 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow.LongNum 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow.ObjectValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow.ShortValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow.StringKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow.StringNum 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow.TimeValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument BQTDocTest.SingleRow.TimestampValue 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.choiceTestDocument choiceTest 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.choiceTestDocument choiceTest.data1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.choiceTestDocument choiceTest.data1.wrapper1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.choiceTestDocument choiceTest.data1.wrapper1.data1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.choiceTestDocument choiceTest.data1.wrapper1.key1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.choiceTestDocument choiceTest.data2 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.choiceTestDocument choiceTest.data2.wrapper2 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.choiceTestDocument choiceTest.data2.wrapper2.data2 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.choiceTestDocument choiceTest.data2.wrapper2.key2 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.choiceTestDocument choiceTest.data3 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.choiceTestDocument choiceTest.data3.wrapper3 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.choiceTestDocument choiceTest.data3.wrapper3.key3 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.choiceTestDocument choiceTest.data3.wrapper3.key3.data3 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.defaultValueTestDocument defaultValueTest 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.defaultValueTestDocument defaultValueTest.wrapper 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.defaultValueTestDocument defaultValueTest.wrapper. at dataAttr 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.defaultValueTestDocument defaultValueTest.wrapper.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.defaultValueTestDocument defaultValueTest.wrapper.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.emptyContentTestDocument emptyContentTest 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.emptyContentTestDocument emptyContentTest.wrapper1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.emptyContentTestDocument emptyContentTest.wrapper1.data1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.emptyContentTestDocument emptyContentTest.wrapper1.key1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.fixedValueTestDocument fixedValueTest 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.fixedValueTestDocument fixedValueTest.wrapper 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.fixedValueTestDocument fixedValueTest.wrapper. at fixedAttr 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.fixedValueTestDocument fixedValueTest.wrapper.fixed 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.fixedValueTestDocument fixedValueTest.wrapper.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.mixedContentTestDocument mixedContentTest 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.mixedContentTestDocument mixedContentTest.wrapper3 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.mixedContentTestDocument mixedContentTest.wrapper3.key3 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.mixedContentTestDocument mixedContentTest.wrapper3.key3.data3 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.multipleDocsTestDocument multipleDocsTest 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.multipleDocsTestDocument multipleDocsTest.data1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.multipleDocsTestDocument multipleDocsTest.key1 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.nillableTestDocument nillableTest 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.nillableTestDocument nillableTest.wrapper 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.nillableTestDocument nillableTest.wrapper.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTDoc.nillableTestDocument nillableTest.wrapper.nillableField 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable testSimple 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable testSimple.recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable testSimple.recursiveRoot.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable testSimple.recursiveRoot.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable testSimple.recursiveRoot.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable testSimple.recursiveRoot.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable testSimple.recursiveRoot.recurse.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable testSimple.recursiveRoot.recurse.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable testSimple.recursiveRoot.recurse.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable testSimple.recursiveRoot.recurse.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable testSimple.recursiveRoot.recurse.recurse.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable testSimple.recursiveRoot.recurse.recurse.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable testSimple.recursiveRoot.recurse.recurse.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable testSimple.recursiveRoot.recurse.recurse.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable.MappingClasses.TemporaryTable1 key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable.MappingClasses.TemporaryTable1 data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable.MappingClasses.TemporaryTable1 nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable.MappingClasses.TemporaryTable2 key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable.MappingClasses.TemporaryTable2 data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable.MappingClasses.TemporaryTable2 nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testExcludeFromDoc testSimple 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testExcludeFromDoc testSimple.recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testExcludeFromDoc testSimple.recursiveRoot.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testExcludeFromDoc testSimple.recursiveRoot.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testExcludeFromDoc testSimple.recursiveRoot.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testExcludeFromDoc testSimple.recursiveRoot.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testExcludeFromDoc testSimple.recursiveRoot.recurse.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testExcludeFromDoc testSimple.recursiveRoot.recurse.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testExcludeFromDoc testSimple.recursiveRoot.recurse.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testExcludeFromDoc testSimple.recursiveRoot.recurse.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testExcludeFromDoc testSimple.recursiveRoot.recurse.recurse.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testExcludeFromDoc testSimple.recursiveRoot.recurse.recurse.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testExcludeFromDoc testSimple.recursiveRoot.recurse.recurse.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testExcludeFromDoc testSimple.recursiveRoot.recurse.recurse.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable testSimple 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable testSimple.recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable testSimple.recursiveRoot.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable testSimple.recursiveRoot.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable testSimple.recursiveRoot.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable testSimple.recursiveRoot.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable testSimple.recursiveRoot.recurse.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable testSimple.recursiveRoot.recurse.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable testSimple.recursiveRoot.recurse.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable testSimple.recursiveRoot.recurse.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable testSimple.recursiveRoot.recurse.recurse.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable testSimple.recursiveRoot.recurse.recurse.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable testSimple.recursiveRoot.recurse.recurse.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable testSimple.recursiveRoot.recurse.recurse.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable.MappingClasses.TemporaryTab$ key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable.MappingClasses.TemporaryTab$ data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable.MappingClasses.TemporaryTab$ nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable.MappingClasses.moveToRootTe$ key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable.MappingClasses.moveToRootTe$ data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable.MappingClasses.moveToRootTe$ nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable testSimple 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable testSimple.recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable testSimple.recursiveRoot.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable testSimple.recursiveRoot.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable testSimple.recursiveRoot.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable testSimple.recursiveRoot.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable testSimple.recursiveRoot.recurse.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable testSimple.recursiveRoot.recurse.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable testSimple.recursiveRoot.recurse.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable testSimple.recursiveRoot.recurse.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable testSimple.recursiveRoot.recurse.recurse.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable testSimple.recursiveRoot.recurse.recurse.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable testSimple.recursiveRoot.recurse.recurse.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable testSimple.recursiveRoot.recurse.recurse.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable.MappingClasses.TemporaryTable1 key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable.MappingClasses.TemporaryTable1 data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable.MappingClasses.TemporaryTable1 nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testSimpleNested testSimple 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testSimpleNested testSimple.recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testSimpleNested testSimple.recursiveRoot.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testSimpleNested testSimple.recursiveRoot.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testSimpleNested testSimple.recursiveRoot.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testSimpleNested testSimple.recursiveRoot.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testSimpleNested testSimple.recursiveRoot.recurse.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testSimpleNested testSimple.recursiveRoot.recurse.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testSimpleNested testSimple.recursiveRoot.recurse.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testSimpleNested testSimple.recursiveRoot.recurse.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testSimpleNested testSimple.recursiveRoot.recurse.recurse.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testSimpleNested testSimple.recursiveRoot.recurse.recurse.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testSimpleNested testSimple.recursiveRoot.recurse.recurse.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTNestedDoc.testSimpleNested testSimple.recursiveRoot.recurse.recurse.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupA 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupA.ID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupA.code 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupA.supervisor 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupA.supervisor.ID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupA.supervisor.code 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupA.supervisor.group 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupA.supervisor.groupID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupA.supervisorID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupB 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupB.ID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupB.code 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupB.supervisor 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupB.supervisor.ID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupB.supervisor.code 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupB.supervisor.group 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupB.supervisor.groupID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.GroupB.supervisorID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument group.pseudoID 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNested2Document testNested2 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNested2Document testNested2.recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNested2Document testNested2.recursiveRoot.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNested2Document testNested2.recursiveRoot.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNested2Document testNested2.recursiveRoot.nested 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNested2Document testNested2.recursiveRoot.nested.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNested2Document testNested2.recursiveRoot.nested.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNested2Document testNested2.recursiveRoot.nested.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNested2Document testNested2.recursiveRoot.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNested2Document testNested2.recursiveRoot.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNestedDocument testNested 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNestedDocument testNested.recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNestedDocument testNested.recursiveRoot.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNestedDocument testNested.recursiveRoot.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNestedDocument testNested.recursiveRoot.nested 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNestedDocument testNested.recursiveRoot.nested.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNestedDocument testNested.recursiveRoot.nested.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNestedDocument testNested.recursiveRoot.nested.nestedRecurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNestedDocument testNested.recursiveRoot.nested.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNestedDocument testNested.recursiveRoot.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testNestedDocument testNested.recursiveRoot.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleDocument testSimple 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleDocument testSimple.recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleDocument testSimple.recursiveRoot.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleDocument testSimple.recursiveRoot.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleDocument testSimple.recursiveRoot.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleDocument testSimple.recursiveRoot.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleTempTable testSimple 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleTempTable testSimple.recursiveRoot 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleTempTable testSimple.recursiveRoot.data 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleTempTable testSimple.recursiveRoot.key 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleTempTable testSimple.recursiveRoot.nextKey 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleTempTable testSimple.recursiveRoot.recurse 12 string 4000 <null> 0 0 1 <null> <null> <null> <null> 0 0 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleTempTable.MappingClasses.TemporaryTable$ key 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 1 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleTempTable.MappingClasses.TemporaryTable$ data 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 2 NO <null> <null> <null> !
<null> NO
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleTempTable.MappingClasses.TemporaryTable$ nextKey 2 biginteger 19 <null> 0 0 1 <null> <null> <null> <null> 0 3 NO <null> <null> <null> !
<null> NO
-Row Count : 987
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TABLE_CAT 12 <null> java.lang.String TABLE_CAT string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-TABLE_SCHEM 12 <null> java.lang.String TABLE_SCHEM string QT_Ora9DS System.VirtualDatabases 255 255 0 false true false false 0 true true false false
-TABLE_NAME 12 <null> java.lang.String TABLE_NAME string QT_Ora9DS System.Elements 2048 2048 0 false true false false 0 true true false false
-COLUMN_NAME 12 <null> java.lang.String COLUMN_NAME string QT_Ora9DS System.Elements 255 255 0 false false false false 0 true true false false
-DATA_TYPE 5 <null> java.lang.Short DATA_TYPE short QT_Ora9DS <null> 6 5 0 false false false true 1 false true true true
-TYPE_NAME 12 <null> java.lang.String TYPE_NAME string QT_Ora9DS System.Elements 100 100 0 false true false false 0 true true true false
-COLUMN_SIZE 4 <null> java.lang.Integer COLUMN_SIZE integer QT_Ora9DS <null> 11 10 0 false false false true 1 false true true true
-BUFFER_LENGTH 12 <null> java.lang.String BUFFER_LENGTH string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-DECIMAL_DIGITS 4 <null> java.lang.Integer DECIMAL_DIGITS integer QT_Ora9DS System.Elements 11 10 0 false false false false 0 true true false false
-NUM_PREC_RADIX 4 <null> java.lang.Integer NUM_PREC_RADIX integer QT_Ora9DS System.Elements 11 10 0 false false false false 0 true true false false
-NULLABLE 4 <null> java.lang.Integer NULLABLE integer QT_Ora9DS <null> 11 10 0 false false false true 1 false true true true
-REMARKS 12 <null> java.lang.String REMARKS string QT_Ora9DS System.Elements 255 255 0 false true false true 1 false true true true
-COLUMN_DEF 12 <null> java.lang.String COLUMN_DEF string QT_Ora9DS System.Elements 255 255 0 false false false false 1 true true false false
-SQL_DATA_TYPE 12 <null> java.lang.String SQL_DATA_TYPE string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-SQL_DATETIME_SUB 12 <null> java.lang.String SQL_DATETIME_SUB string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-CHAR_OCTET_LENGTH 4 <null> java.lang.Integer CHAR_OCTET_LENGTH integer QT_Ora9DS System.Elements 11 10 0 false false false false 1 true true false false
-ORDINAL_POSITION 4 <null> java.lang.Integer ORDINAL_POSITION integer QT_Ora9DS System.Elements 11 10 0 false false false false 0 true true false false
-IS_NULLABLE 12 <null> java.lang.String IS_NULLABLE string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-SCOPE_CATALOG 12 <null> java.lang.String SCOPE_CATALOG string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-SCOPE_SCHEMA 12 <null> java.lang.String SCOPE_SCHEMA string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-SCOPE_TABLE 12 <null> java.lang.String SCOPE_TABLE string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-SOURCE_DATA_TYPE 12 <null> java.lang.String SOURCE_DATA_TYPE string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-IS_AUTOINCREMENT 12 <null> java.lang.String IS_AUTOINCREMENT string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
+getColumns2
+string string string string short string integer string integer integer integer string string string string integer integer string string string string !
string string
+TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH DECIMAL_DIGITS NUM_PREC_RADIX NULLABLE REMARKS COLUMN_DEF SQL_DATA_TYPE SQL_DATETIME_SUB CHAR_OCTET_LENGTH ORDINAL_POSITION IS_NULLABLE SCOPE_CATALOG SCOPE_SCHEMA SCOPE_TABLE!
SOURCE_DATA_TYPE IS_AUTOINCREMENT
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TABLE_CAT 12 QT_Ora9DS java.lang.String TABLE_CAT string System Columns 255 255 0 false false false false 0 true true false false
+TABLE_SCHEM 12 QT_Ora9DS java.lang.String TABLE_SCHEM string System Columns 255 255 0 false true false true 1 false true true true
+TABLE_NAME 12 QT_Ora9DS java.lang.String TABLE_NAME string System Columns 255 255 0 false true false false 0 true true false false
+COLUMN_NAME 12 QT_Ora9DS java.lang.String COLUMN_NAME string System Columns 255 255 0 false false false false 0 true true false false
+DATA_TYPE 5 QT_Ora9DS java.lang.Short DATA_TYPE short <null> <null> 6 5 0 false false false true 1 false true true true
+TYPE_NAME 12 QT_Ora9DS java.lang.String TYPE_NAME string System Columns 100 100 0 false true false false 0 true true true false
+COLUMN_SIZE 4 QT_Ora9DS java.lang.Integer COLUMN_SIZE integer <null> <null> 11 10 0 false false false true 1 false true true true
+BUFFER_LENGTH 12 QT_Ora9DS java.lang.String BUFFER_LENGTH string <null> <null> 4000 4000 0 false false false true 1 false true true true
+DECIMAL_DIGITS 4 QT_Ora9DS java.lang.Integer DECIMAL_DIGITS integer System Columns 11 10 0 false false false false 0 true true false false
+NUM_PREC_RADIX 4 QT_Ora9DS java.lang.Integer NUM_PREC_RADIX integer System Columns 11 10 0 false false false false 0 true true false false
+NULLABLE 4 QT_Ora9DS java.lang.Integer NULLABLE integer <null> <null> 11 10 0 false false false true 1 false true true true
+REMARKS 12 QT_Ora9DS java.lang.String REMARKS string System Columns 255 255 0 false true false true 1 false true true true
+COLUMN_DEF 12 QT_Ora9DS java.lang.String COLUMN_DEF string System Columns 255 255 0 false false false false 1 true true false false
+SQL_DATA_TYPE 12 QT_Ora9DS java.lang.String SQL_DATA_TYPE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SQL_DATETIME_SUB 12 QT_Ora9DS java.lang.String SQL_DATETIME_SUB string <null> <null> 4000 4000 0 false false false true 1 false true true true
+CHAR_OCTET_LENGTH 4 QT_Ora9DS java.lang.Integer CHAR_OCTET_LENGTH integer System Columns 11 10 0 false false false false 1 true true false false
+ORDINAL_POSITION 4 QT_Ora9DS java.lang.Integer ORDINAL_POSITION integer System Columns 11 10 0 false false false false 0 true true false false
+IS_NULLABLE 12 QT_Ora9DS java.lang.String IS_NULLABLE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SCOPE_CATALOG 12 QT_Ora9DS java.lang.String SCOPE_CATALOG string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SCOPE_SCHEMA 12 QT_Ora9DS java.lang.String SCOPE_SCHEMA string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SCOPE_TABLE 12 QT_Ora9DS java.lang.String SCOPE_TABLE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SOURCE_DATA_TYPE 12 QT_Ora9DS java.lang.String SOURCE_DATA_TYPE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+IS_AUTOINCREMENT 12 QT_Ora9DS java.lang.String IS_AUTOINCREMENT string <null> <null> 4000 4000 0 false false false true 1 false true true true
Modified: branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumns3.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumns3.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumns3.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,28 +1,28 @@
-getColumns3
-string string string string short string integer string integer integer integer string string string string integer integer string string string string !
string string
-TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH DECIMAL_DIGITS NUM_PREC_RADIX NULLABLE REMARKS COLUMN_DEF SQL_DATA_TYPE SQL_DATETIME_SUB CHAR_OCTET_LENGTH ORDINAL_POSITION IS_NULLABLE SCOPE_CATALOG SCOPE_SCHEMA SCOPE_TABLE!
SOURCE_DATA_TYPE IS_AUTOINCREMENT
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TABLE_CAT 12 <null> java.lang.String TABLE_CAT string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-TABLE_SCHEM 12 <null> java.lang.String TABLE_SCHEM string QT_Ora9DS System.VirtualDatabases 255 255 0 false true false false 0 true true false false
-TABLE_NAME 12 <null> java.lang.String TABLE_NAME string QT_Ora9DS System.Elements 2048 2048 0 false true false false 0 true true false false
-COLUMN_NAME 12 <null> java.lang.String COLUMN_NAME string QT_Ora9DS System.Elements 255 255 0 false false false false 0 true true false false
-DATA_TYPE 5 <null> java.lang.Short DATA_TYPE short QT_Ora9DS <null> 6 5 0 false false false true 1 false true true true
-TYPE_NAME 12 <null> java.lang.String TYPE_NAME string QT_Ora9DS System.Elements 100 100 0 false true false false 0 true true true false
-COLUMN_SIZE 4 <null> java.lang.Integer COLUMN_SIZE integer QT_Ora9DS <null> 11 10 0 false false false true 1 false true true true
-BUFFER_LENGTH 12 <null> java.lang.String BUFFER_LENGTH string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-DECIMAL_DIGITS 4 <null> java.lang.Integer DECIMAL_DIGITS integer QT_Ora9DS System.Elements 11 10 0 false false false false 0 true true false false
-NUM_PREC_RADIX 4 <null> java.lang.Integer NUM_PREC_RADIX integer QT_Ora9DS System.Elements 11 10 0 false false false false 0 true true false false
-NULLABLE 4 <null> java.lang.Integer NULLABLE integer QT_Ora9DS <null> 11 10 0 false false false true 1 false true true true
-REMARKS 12 <null> java.lang.String REMARKS string QT_Ora9DS System.Elements 255 255 0 false true false true 1 false true true true
-COLUMN_DEF 12 <null> java.lang.String COLUMN_DEF string QT_Ora9DS System.Elements 255 255 0 false false false false 1 true true false false
-SQL_DATA_TYPE 12 <null> java.lang.String SQL_DATA_TYPE string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-SQL_DATETIME_SUB 12 <null> java.lang.String SQL_DATETIME_SUB string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-CHAR_OCTET_LENGTH 4 <null> java.lang.Integer CHAR_OCTET_LENGTH integer QT_Ora9DS System.Elements 11 10 0 false false false false 1 true true false false
-ORDINAL_POSITION 4 <null> java.lang.Integer ORDINAL_POSITION integer QT_Ora9DS System.Elements 11 10 0 false false false false 0 true true false false
-IS_NULLABLE 12 <null> java.lang.String IS_NULLABLE string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-SCOPE_CATALOG 12 <null> java.lang.String SCOPE_CATALOG string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-SCOPE_SCHEMA 12 <null> java.lang.String SCOPE_SCHEMA string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-SCOPE_TABLE 12 <null> java.lang.String SCOPE_TABLE string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-SOURCE_DATA_TYPE 12 <null> java.lang.String SOURCE_DATA_TYPE string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-IS_AUTOINCREMENT 12 <null> java.lang.String IS_AUTOINCREMENT string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
+getColumns3
+string string string string short string integer string integer integer integer string string string string integer integer string string string string !
string string
+TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH DECIMAL_DIGITS NUM_PREC_RADIX NULLABLE REMARKS COLUMN_DEF SQL_DATA_TYPE SQL_DATETIME_SUB CHAR_OCTET_LENGTH ORDINAL_POSITION IS_NULLABLE SCOPE_CATALOG SCOPE_SCHEMA SCOPE_TABLE!
SOURCE_DATA_TYPE IS_AUTOINCREMENT
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TABLE_CAT 12 QT_Ora9DS java.lang.String TABLE_CAT string System Columns 255 255 0 false false false false 0 true true false false
+TABLE_SCHEM 12 QT_Ora9DS java.lang.String TABLE_SCHEM string System Columns 255 255 0 false true false true 1 false true true true
+TABLE_NAME 12 QT_Ora9DS java.lang.String TABLE_NAME string System Columns 255 255 0 false true false false 0 true true false false
+COLUMN_NAME 12 QT_Ora9DS java.lang.String COLUMN_NAME string System Columns 255 255 0 false false false false 0 true true false false
+DATA_TYPE 5 QT_Ora9DS java.lang.Short DATA_TYPE short <null> <null> 6 5 0 false false false true 1 false true true true
+TYPE_NAME 12 QT_Ora9DS java.lang.String TYPE_NAME string System Columns 100 100 0 false true false false 0 true true true false
+COLUMN_SIZE 4 QT_Ora9DS java.lang.Integer COLUMN_SIZE integer <null> <null> 11 10 0 false false false true 1 false true true true
+BUFFER_LENGTH 12 QT_Ora9DS java.lang.String BUFFER_LENGTH string <null> <null> 4000 4000 0 false false false true 1 false true true true
+DECIMAL_DIGITS 4 QT_Ora9DS java.lang.Integer DECIMAL_DIGITS integer System Columns 11 10 0 false false false false 0 true true false false
+NUM_PREC_RADIX 4 QT_Ora9DS java.lang.Integer NUM_PREC_RADIX integer System Columns 11 10 0 false false false false 0 true true false false
+NULLABLE 4 QT_Ora9DS java.lang.Integer NULLABLE integer <null> <null> 11 10 0 false false false true 1 false true true true
+REMARKS 12 QT_Ora9DS java.lang.String REMARKS string System Columns 255 255 0 false true false true 1 false true true true
+COLUMN_DEF 12 QT_Ora9DS java.lang.String COLUMN_DEF string System Columns 255 255 0 false false false false 1 true true false false
+SQL_DATA_TYPE 12 QT_Ora9DS java.lang.String SQL_DATA_TYPE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SQL_DATETIME_SUB 12 QT_Ora9DS java.lang.String SQL_DATETIME_SUB string <null> <null> 4000 4000 0 false false false true 1 false true true true
+CHAR_OCTET_LENGTH 4 QT_Ora9DS java.lang.Integer CHAR_OCTET_LENGTH integer System Columns 11 10 0 false false false false 1 true true false false
+ORDINAL_POSITION 4 QT_Ora9DS java.lang.Integer ORDINAL_POSITION integer System Columns 11 10 0 false false false false 0 true true false false
+IS_NULLABLE 12 QT_Ora9DS java.lang.String IS_NULLABLE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SCOPE_CATALOG 12 QT_Ora9DS java.lang.String SCOPE_CATALOG string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SCOPE_SCHEMA 12 QT_Ora9DS java.lang.String SCOPE_SCHEMA string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SCOPE_TABLE 12 QT_Ora9DS java.lang.String SCOPE_TABLE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SOURCE_DATA_TYPE 12 QT_Ora9DS java.lang.String SOURCE_DATA_TYPE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+IS_AUTOINCREMENT 12 QT_Ora9DS java.lang.String IS_AUTOINCREMENT string <null> <null> 4000 4000 0 false false false true 1 false true true true
Modified: branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumns4.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumns4.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumns4.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,23 +1,28 @@
getColumns4
-string string string string integer string integer integer integer integer integer string string integer integer integer integer string
-TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH DECIMAL_DIGITS NUM_PREC_RADIX NULLABLE REMARKS COLUMN_DEF SQL_DATA_TYPE SQL_DATETIME_SUB CHAR_OCTET_LENGTH ORDINAL_POSITION IS_NULLABLE
+string string string string short string integer string integer integer integer string string string string integer integer string string string string !
string string
+TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH DECIMAL_DIGITS NUM_PREC_RADIX NULLABLE REMARKS COLUMN_DEF SQL_DATA_TYPE SQL_DATETIME_SUB CHAR_OCTET_LENGTH ORDINAL_POSITION IS_NULLABLE SCOPE_CATALOG SCOPE_SCHEMA SCOPE_TABLE!
SOURCE_DATA_TYPE IS_AUTOINCREMENT
Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TABLE_CAT 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-TABLE_SCHEM 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-TABLE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-COLUMN_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-DATA_TYPE 4 <null> java.lang.Integer <null> integer QT_Ora9DS <null> 11 10 0 false false false false 2 true false false false
-TYPE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-COLUMN_SIZE 4 <null> java.lang.Integer <null> integer QT_Ora9DS <null> 11 10 0 false false false false 2 true false false false
-BUFFER_LENGTH 4 <null> java.lang.Integer <null> integer QT_Ora9DS <null> 11 10 0 false false false false 2 true false false false
-DECIMAL_DIGITS 4 <null> java.lang.Integer <null> integer QT_Ora9DS <null> 11 10 0 false false false false 2 true false false false
-NUM_PREC_RADIX 4 <null> java.lang.Integer <null> integer QT_Ora9DS <null> 11 10 0 false false false false 2 true false false false
-NULLABLE 4 <null> java.lang.Integer <null> integer QT_Ora9DS <null> 11 10 0 false false false false 2 true false false false
-REMARKS 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-COLUMN_DEF 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-SQL_DATA_TYPE 4 <null> java.lang.Integer <null> integer QT_Ora9DS <null> 11 10 0 false false false false 2 true false false false
-SQL_DATETIME_SUB 4 <null> java.lang.Integer <null> integer QT_Ora9DS <null> 11 10 0 false false false false 2 true false false false
-CHAR_OCTET_LENGTH 4 <null> java.lang.Integer <null> integer QT_Ora9DS <null> 11 10 0 false false false false 2 true false false false
-ORDINAL_POSITION 4 <null> java.lang.Integer <null> integer QT_Ora9DS <null> 11 10 0 false false false false 2 true false false false
-IS_NULLABLE 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TABLE_CAT 12 QT_Ora9DS java.lang.String TABLE_CAT string System Columns 255 255 0 false false false false 0 true true false false
+TABLE_SCHEM 12 QT_Ora9DS java.lang.String TABLE_SCHEM string System Columns 255 255 0 false true false true 1 false true true true
+TABLE_NAME 12 QT_Ora9DS java.lang.String TABLE_NAME string System Columns 255 255 0 false true false false 0 true true false false
+COLUMN_NAME 12 QT_Ora9DS java.lang.String COLUMN_NAME string System Columns 255 255 0 false false false false 0 true true false false
+DATA_TYPE 5 QT_Ora9DS java.lang.Short DATA_TYPE short <null> <null> 6 5 0 false false false true 1 false true true true
+TYPE_NAME 12 QT_Ora9DS java.lang.String TYPE_NAME string System Columns 100 100 0 false true false false 0 true true true false
+COLUMN_SIZE 4 QT_Ora9DS java.lang.Integer COLUMN_SIZE integer <null> <null> 11 10 0 false false false true 1 false true true true
+BUFFER_LENGTH 12 QT_Ora9DS java.lang.String BUFFER_LENGTH string <null> <null> 4000 4000 0 false false false true 1 false true true true
+DECIMAL_DIGITS 4 QT_Ora9DS java.lang.Integer DECIMAL_DIGITS integer System Columns 11 10 0 false false false false 0 true true false false
+NUM_PREC_RADIX 4 QT_Ora9DS java.lang.Integer NUM_PREC_RADIX integer System Columns 11 10 0 false false false false 0 true true false false
+NULLABLE 4 QT_Ora9DS java.lang.Integer NULLABLE integer <null> <null> 11 10 0 false false false true 1 false true true true
+REMARKS 12 QT_Ora9DS java.lang.String REMARKS string System Columns 255 255 0 false true false true 1 false true true true
+COLUMN_DEF 12 QT_Ora9DS java.lang.String COLUMN_DEF string System Columns 255 255 0 false false false false 1 true true false false
+SQL_DATA_TYPE 12 QT_Ora9DS java.lang.String SQL_DATA_TYPE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SQL_DATETIME_SUB 12 QT_Ora9DS java.lang.String SQL_DATETIME_SUB string <null> <null> 4000 4000 0 false false false true 1 false true true true
+CHAR_OCTET_LENGTH 4 QT_Ora9DS java.lang.Integer CHAR_OCTET_LENGTH integer System Columns 11 10 0 false false false false 1 true true false false
+ORDINAL_POSITION 4 QT_Ora9DS java.lang.Integer ORDINAL_POSITION integer System Columns 11 10 0 false false false false 0 true true false false
+IS_NULLABLE 12 QT_Ora9DS java.lang.String IS_NULLABLE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SCOPE_CATALOG 12 QT_Ora9DS java.lang.String SCOPE_CATALOG string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SCOPE_SCHEMA 12 QT_Ora9DS java.lang.String SCOPE_SCHEMA string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SCOPE_TABLE 12 QT_Ora9DS java.lang.String SCOPE_TABLE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SOURCE_DATA_TYPE 12 QT_Ora9DS java.lang.String SOURCE_DATA_TYPE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+IS_AUTOINCREMENT 12 QT_Ora9DS java.lang.String IS_AUTOINCREMENT string <null> <null> 4000 4000 0 false false false true 1 false true true true
Modified: branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumnsSingleMatch.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumnsSingleMatch.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumnsSingleMatch.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,28 +1,28 @@
-string string string string short string integer string integer integer integer string string string string integer integer string string string string !
string string
-TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH DECIMAL_DIGITS NUM_PREC_RADIX NULLABLE REMARKS COLUMN_DEF SQL_DATA_TYPE SQL_DATETIME_SUB CHAR_OCTET_LENGTH ORDINAL_POSITION IS_NULLABLE SCOPE_CATALOG SCOPE_SCHEMA SCOPE_TABLE!
SOURCE_DATA_TYPE IS_AUTOINCREMENT
-<null> QT_Ora9DS System.VirtualDatabases Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
-Row Count : 1
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TABLE_CAT 12 <null> java.lang.String TABLE_CAT string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-TABLE_SCHEM 12 <null> java.lang.String TABLE_SCHEM string QT_Ora9DS System.VirtualDatabases 255 255 0 false true false false 0 true true false false
-TABLE_NAME 12 <null> java.lang.String TABLE_NAME string QT_Ora9DS System.Elements 2048 2048 0 false true false false 0 true true false false
-COLUMN_NAME 12 <null> java.lang.String COLUMN_NAME string QT_Ora9DS System.Elements 255 255 0 false false false false 0 true true false false
-DATA_TYPE 5 <null> java.lang.Short DATA_TYPE short QT_Ora9DS <null> 6 5 0 false false false true 1 false true true true
-TYPE_NAME 12 <null> java.lang.String TYPE_NAME string QT_Ora9DS System.Elements 100 100 0 false true false false 0 true true true false
-COLUMN_SIZE 4 <null> java.lang.Integer COLUMN_SIZE integer QT_Ora9DS <null> 11 10 0 false false false true 1 false true true true
-BUFFER_LENGTH 12 <null> java.lang.String BUFFER_LENGTH string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-DECIMAL_DIGITS 4 <null> java.lang.Integer DECIMAL_DIGITS integer QT_Ora9DS System.Elements 11 10 0 false false false false 0 true true false false
-NUM_PREC_RADIX 4 <null> java.lang.Integer NUM_PREC_RADIX integer QT_Ora9DS System.Elements 11 10 0 false false false false 0 true true false false
-NULLABLE 4 <null> java.lang.Integer NULLABLE integer QT_Ora9DS <null> 11 10 0 false false false true 1 false true true true
-REMARKS 12 <null> java.lang.String REMARKS string QT_Ora9DS System.Elements 255 255 0 false true false true 1 false true true true
-COLUMN_DEF 12 <null> java.lang.String COLUMN_DEF string QT_Ora9DS System.Elements 255 255 0 false false false false 1 true true false false
-SQL_DATA_TYPE 12 <null> java.lang.String SQL_DATA_TYPE string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-SQL_DATETIME_SUB 12 <null> java.lang.String SQL_DATETIME_SUB string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-CHAR_OCTET_LENGTH 4 <null> java.lang.Integer CHAR_OCTET_LENGTH integer QT_Ora9DS System.Elements 11 10 0 false false false false 1 true true false false
-ORDINAL_POSITION 4 <null> java.lang.Integer ORDINAL_POSITION integer QT_Ora9DS System.Elements 11 10 0 false false false false 0 true true false false
-IS_NULLABLE 12 <null> java.lang.String IS_NULLABLE string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-SCOPE_CATALOG 12 <null> java.lang.String SCOPE_CATALOG string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-SCOPE_SCHEMA 12 <null> java.lang.String SCOPE_SCHEMA string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-SCOPE_TABLE 12 <null> java.lang.String SCOPE_TABLE string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-SOURCE_DATA_TYPE 12 <null> java.lang.String SOURCE_DATA_TYPE string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-IS_AUTOINCREMENT 12 <null> java.lang.String IS_AUTOINCREMENT string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
+string string string string short string integer string integer integer integer string string string string integer integer string string string string !
string string
+TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH DECIMAL_DIGITS NUM_PREC_RADIX NULLABLE REMARKS COLUMN_DEF SQL_DATA_TYPE SQL_DATETIME_SUB CHAR_OCTET_LENGTH ORDINAL_POSITION IS_NULLABLE SCOPE_CATALOG SCOPE_SCHEMA SCOPE_TABLE!
SOURCE_DATA_TYPE IS_AUTOINCREMENT
+QT_Ora9DS System VirtualDatabases Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES <null> <null> <null> !
<null> NO
+Row Count : 1
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TABLE_CAT 12 QT_Ora9DS java.lang.String TABLE_CAT string System Columns 255 255 0 false false false false 0 true true false false
+TABLE_SCHEM 12 QT_Ora9DS java.lang.String TABLE_SCHEM string System Columns 255 255 0 false true false true 1 false true true true
+TABLE_NAME 12 QT_Ora9DS java.lang.String TABLE_NAME string System Columns 255 255 0 false true false false 0 true true false false
+COLUMN_NAME 12 QT_Ora9DS java.lang.String COLUMN_NAME string System Columns 255 255 0 false false false false 0 true true false false
+DATA_TYPE 5 QT_Ora9DS java.lang.Short DATA_TYPE short <null> <null> 6 5 0 false false false true 1 false true true true
+TYPE_NAME 12 QT_Ora9DS java.lang.String TYPE_NAME string System Columns 100 100 0 false true false false 0 true true true false
+COLUMN_SIZE 4 QT_Ora9DS java.lang.Integer COLUMN_SIZE integer <null> <null> 11 10 0 false false false true 1 false true true true
+BUFFER_LENGTH 12 QT_Ora9DS java.lang.String BUFFER_LENGTH string <null> <null> 4000 4000 0 false false false true 1 false true true true
+DECIMAL_DIGITS 4 QT_Ora9DS java.lang.Integer DECIMAL_DIGITS integer System Columns 11 10 0 false false false false 0 true true false false
+NUM_PREC_RADIX 4 QT_Ora9DS java.lang.Integer NUM_PREC_RADIX integer System Columns 11 10 0 false false false false 0 true true false false
+NULLABLE 4 QT_Ora9DS java.lang.Integer NULLABLE integer <null> <null> 11 10 0 false false false true 1 false true true true
+REMARKS 12 QT_Ora9DS java.lang.String REMARKS string System Columns 255 255 0 false true false true 1 false true true true
+COLUMN_DEF 12 QT_Ora9DS java.lang.String COLUMN_DEF string System Columns 255 255 0 false false false false 1 true true false false
+SQL_DATA_TYPE 12 QT_Ora9DS java.lang.String SQL_DATA_TYPE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SQL_DATETIME_SUB 12 QT_Ora9DS java.lang.String SQL_DATETIME_SUB string <null> <null> 4000 4000 0 false false false true 1 false true true true
+CHAR_OCTET_LENGTH 4 QT_Ora9DS java.lang.Integer CHAR_OCTET_LENGTH integer System Columns 11 10 0 false false false false 1 true true false false
+ORDINAL_POSITION 4 QT_Ora9DS java.lang.Integer ORDINAL_POSITION integer System Columns 11 10 0 false false false false 0 true true false false
+IS_NULLABLE 12 QT_Ora9DS java.lang.String IS_NULLABLE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SCOPE_CATALOG 12 QT_Ora9DS java.lang.String SCOPE_CATALOG string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SCOPE_SCHEMA 12 QT_Ora9DS java.lang.String SCOPE_SCHEMA string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SCOPE_TABLE 12 QT_Ora9DS java.lang.String SCOPE_TABLE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SOURCE_DATA_TYPE 12 QT_Ora9DS java.lang.String SOURCE_DATA_TYPE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+IS_AUTOINCREMENT 12 QT_Ora9DS java.lang.String IS_AUTOINCREMENT string <null> <null> 4000 4000 0 false false false true 1 false true true true
Modified: branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumnsSingleMatchQuery.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumnsSingleMatchQuery.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetColumnsSingleMatchQuery.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,23 +0,0 @@
-string string string string short string integer string integer integer integer string string string string integer integer string
-TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH DECIMAL_DIGITS NUM_PREC_RADIX NULLABLE REMARKS COLUMN_DEF SQL_DATA_TYPE SQL_DATETIME_SUB CHAR_OCTET_LENGTH ORDINAL_POSITION IS_NULLABLE
-<null> QT_Ora9DS System.VirtualDatabases Name 12 string 255 <null> 0 10 0 <null> <null> <null> <null> 255 1 YES
-Row Count : 1
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TABLE_CAT 12 <null> java.lang.String TABLE_CAT string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-TABLE_SCHEM 12 <null> java.lang.String TABLE_SCHEM string QT_Ora9DS System.VirtualDatabases 255 255 0 false true false false 0 true true false false
-TABLE_NAME 12 <null> java.lang.String TABLE_NAME string QT_Ora9DS System.Elements 2048 2048 0 false true false false 0 true true false false
-COLUMN_NAME 12 <null> java.lang.String COLUMN_NAME string QT_Ora9DS System.Elements 255 255 0 false false false false 0 true true false false
-DATA_TYPE 5 <null> java.lang.Short DATA_TYPE short QT_Ora9DS <null> 6 5 0 false false false true 1 false true true true
-TYPE_NAME 12 <null> java.lang.String TYPE_NAME string QT_Ora9DS System.Elements 100 100 0 false true false false 0 true true true false
-COLUMN_SIZE 4 <null> java.lang.Integer COLUMN_SIZE integer QT_Ora9DS <null> 11 10 0 false false false true 1 false true true true
-BUFFER_LENGTH 12 <null> java.lang.String BUFFER_LENGTH string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-DECIMAL_DIGITS 4 <null> java.lang.Integer DECIMAL_DIGITS integer QT_Ora9DS System.Elements 11 10 0 false false false false 0 true true false false
-NUM_PREC_RADIX 4 <null> java.lang.Integer NUM_PREC_RADIX integer QT_Ora9DS System.Elements 11 10 0 false false false false 0 true true false false
-NULLABLE 4 <null> java.lang.Integer NULLABLE integer QT_Ora9DS <null> 11 10 0 false false false true 1 false true true true
-REMARKS 12 <null> java.lang.String REMARKS string QT_Ora9DS System.Elements 255 255 0 false true false true 1 false true true true
-COLUMN_DEF 12 <null> java.lang.String COLUMN_DEF string QT_Ora9DS System.Elements 255 255 0 false false false false 1 true true false false
-SQL_DATA_TYPE 12 <null> java.lang.String SQL_DATA_TYPE string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-SQL_DATETIME_SUB 12 <null> java.lang.String SQL_DATETIME_SUB string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-CHAR_OCTET_LENGTH 4 <null> java.lang.Integer CHAR_OCTET_LENGTH integer QT_Ora9DS System.Elements 11 10 0 false false false false 1 true true false false
-ORDINAL_POSITION 4 <null> java.lang.Integer ORDINAL_POSITION integer QT_Ora9DS System.Elements 11 10 0 false false false false 0 true true false false
-IS_NULLABLE 12 <null> java.lang.String IS_NULLABLE string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
Modified: branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetCrossReference.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetCrossReference.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetCrossReference.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,57 +1,57 @@
-getCrossReference1
-string string string string string string string string short integer integer string string integer
-PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-PKTABLE_CAT 12 <null> java.lang.String PKTABLE_CAT string QT_Ora9DS System.JDBC.ReferenceKeyColumns 1 1 0 false true false true 1 false true true true
-PKTABLE_SCHEM 12 <null> java.lang.String PKTABLE_SCHEM string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PKTABLE_NAME 12 <null> java.lang.String PKTABLE_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PKCOLUMN_NAME 12 <null> java.lang.String PKCOLUMN_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKTABLE_CAT 12 <null> java.lang.String FKTABLE_CAT string QT_Ora9DS System.JDBC.ReferenceKeyColumns 1 1 0 false true false true 1 false true true true
-FKTABLE_SCHEM 12 <null> java.lang.String FKTABLE_SCHEM string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKTABLE_NAME 12 <null> java.lang.String FKTABLE_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKCOLUMN_NAME 12 <null> java.lang.String FKCOLUMN_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-KEY_SEQ 5 <null> java.lang.Short KEY_SEQ short QT_Ora9DS System.JDBC.ReferenceKeyColumns 6 5 0 false true false true 1 false true true true
-UPDATE_RULE 4 <null> java.lang.Integer UPDATE_RULE integer QT_Ora9DS System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-DELETE_RULE 4 <null> java.lang.Integer DELETE_RULE integer QT_Ora9DS System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-FK_NAME 12 <null> java.lang.String FK_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PK_NAME 12 <null> java.lang.String PK_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-DEFERRABILITY 4 <null> java.lang.Integer DEFERRABILITY integer QT_Ora9DS System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-getCrossReference2
-string string string string string string string string short integer integer string string integer
-PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-PKTABLE_CAT 12 <null> java.lang.String PKTABLE_CAT string QT_Ora9DS System.JDBC.ReferenceKeyColumns 1 1 0 false true false true 1 false true true true
-PKTABLE_SCHEM 12 <null> java.lang.String PKTABLE_SCHEM string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PKTABLE_NAME 12 <null> java.lang.String PKTABLE_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PKCOLUMN_NAME 12 <null> java.lang.String PKCOLUMN_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKTABLE_CAT 12 <null> java.lang.String FKTABLE_CAT string QT_Ora9DS System.JDBC.ReferenceKeyColumns 1 1 0 false true false true 1 false true true true
-FKTABLE_SCHEM 12 <null> java.lang.String FKTABLE_SCHEM string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKTABLE_NAME 12 <null> java.lang.String FKTABLE_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKCOLUMN_NAME 12 <null> java.lang.String FKCOLUMN_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-KEY_SEQ 5 <null> java.lang.Short KEY_SEQ short QT_Ora9DS System.JDBC.ReferenceKeyColumns 6 5 0 false true false true 1 false true true true
-UPDATE_RULE 4 <null> java.lang.Integer UPDATE_RULE integer QT_Ora9DS System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-DELETE_RULE 4 <null> java.lang.Integer DELETE_RULE integer QT_Ora9DS System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-FK_NAME 12 <null> java.lang.String FK_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PK_NAME 12 <null> java.lang.String PK_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-DEFERRABILITY 4 <null> java.lang.Integer DEFERRABILITY integer QT_Ora9DS System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-getCrossReference3
-string string string string string string string string short short short string string short
-PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-PKTABLE_CAT 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-PKTABLE_SCHEM 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-PKTABLE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-PKCOLUMN_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-FKTABLE_CAT 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-FKTABLE_SCHEM 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-FKTABLE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-FKCOLUMN_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-KEY_SEQ 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 2 true false false false
-UPDATE_RULE 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 2 true false false false
-DELETE_RULE 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 2 true false false false
-FK_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-PK_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-DEFERRABILITY 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 2 true false false false
+getCrossReference1
+string string string string string string string string short integer integer string string integer
+PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+PKTABLE_CAT 12 QT_Ora9DS java.lang.String PKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_SCHEM 12 QT_Ora9DS java.lang.String PKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_NAME 12 QT_Ora9DS java.lang.String PKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKCOLUMN_NAME 12 QT_Ora9DS java.lang.String PKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_CAT 12 QT_Ora9DS java.lang.String FKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_SCHEM 12 QT_Ora9DS java.lang.String FKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_NAME 12 QT_Ora9DS java.lang.String FKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKCOLUMN_NAME 12 QT_Ora9DS java.lang.String FKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+KEY_SEQ 5 QT_Ora9DS java.lang.Short KEY_SEQ short System ReferenceKeyColumns 6 5 0 false true false true 1 false true true true
+UPDATE_RULE 4 QT_Ora9DS java.lang.Integer UPDATE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+DELETE_RULE 4 QT_Ora9DS java.lang.Integer DELETE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+FK_NAME 12 QT_Ora9DS java.lang.String FK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PK_NAME 12 QT_Ora9DS java.lang.String PK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+DEFERRABILITY 4 QT_Ora9DS java.lang.Integer DEFERRABILITY integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+getCrossReference2
+string string string string string string string string short integer integer string string integer
+PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+PKTABLE_CAT 12 QT_Ora9DS java.lang.String PKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_SCHEM 12 QT_Ora9DS java.lang.String PKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_NAME 12 QT_Ora9DS java.lang.String PKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKCOLUMN_NAME 12 QT_Ora9DS java.lang.String PKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_CAT 12 QT_Ora9DS java.lang.String FKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_SCHEM 12 QT_Ora9DS java.lang.String FKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_NAME 12 QT_Ora9DS java.lang.String FKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKCOLUMN_NAME 12 QT_Ora9DS java.lang.String FKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+KEY_SEQ 5 QT_Ora9DS java.lang.Short KEY_SEQ short System ReferenceKeyColumns 6 5 0 false true false true 1 false true true true
+UPDATE_RULE 4 QT_Ora9DS java.lang.Integer UPDATE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+DELETE_RULE 4 QT_Ora9DS java.lang.Integer DELETE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+FK_NAME 12 QT_Ora9DS java.lang.String FK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PK_NAME 12 QT_Ora9DS java.lang.String PK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+DEFERRABILITY 4 QT_Ora9DS java.lang.Integer DEFERRABILITY integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+getCrossReference3
+string string string string string string string string short integer integer string string integer
+PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+PKTABLE_CAT 12 QT_Ora9DS java.lang.String PKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_SCHEM 12 QT_Ora9DS java.lang.String PKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_NAME 12 QT_Ora9DS java.lang.String PKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKCOLUMN_NAME 12 QT_Ora9DS java.lang.String PKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_CAT 12 QT_Ora9DS java.lang.String FKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_SCHEM 12 QT_Ora9DS java.lang.String FKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_NAME 12 QT_Ora9DS java.lang.String FKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKCOLUMN_NAME 12 QT_Ora9DS java.lang.String FKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+KEY_SEQ 5 QT_Ora9DS java.lang.Short KEY_SEQ short System ReferenceKeyColumns 6 5 0 false true false true 1 false true true true
+UPDATE_RULE 4 QT_Ora9DS java.lang.Integer UPDATE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+DELETE_RULE 4 QT_Ora9DS java.lang.Integer DELETE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+FK_NAME 12 QT_Ora9DS java.lang.String FK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PK_NAME 12 QT_Ora9DS java.lang.String PK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+DEFERRABILITY 4 QT_Ora9DS java.lang.Integer DEFERRABILITY integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
Modified: branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetExportedKeys.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetExportedKeys.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetExportedKeys.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,54 +1,54 @@
-string string string string string string string string short integer integer string string integer
-PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-PKTABLE_CAT 12 <null> java.lang.String PKTABLE_CAT string QT_Ora9DS System.JDBC.ReferenceKeyColumns 1 1 0 false true false true 1 false true true true
-PKTABLE_SCHEM 12 <null> java.lang.String PKTABLE_SCHEM string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PKTABLE_NAME 12 <null> java.lang.String PKTABLE_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PKCOLUMN_NAME 12 <null> java.lang.String PKCOLUMN_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKTABLE_CAT 12 <null> java.lang.String FKTABLE_CAT string QT_Ora9DS System.JDBC.ReferenceKeyColumns 1 1 0 false true false true 1 false true true true
-FKTABLE_SCHEM 12 <null> java.lang.String FKTABLE_SCHEM string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKTABLE_NAME 12 <null> java.lang.String FKTABLE_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKCOLUMN_NAME 12 <null> java.lang.String FKCOLUMN_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-KEY_SEQ 5 <null> java.lang.Short KEY_SEQ short QT_Ora9DS System.JDBC.ReferenceKeyColumns 6 5 0 false true false true 1 false true true true
-UPDATE_RULE 4 <null> java.lang.Integer UPDATE_RULE integer QT_Ora9DS System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-DELETE_RULE 4 <null> java.lang.Integer DELETE_RULE integer QT_Ora9DS System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-FK_NAME 12 <null> java.lang.String FK_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PK_NAME 12 <null> java.lang.String PK_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-DEFERRABILITY 4 <null> java.lang.Integer DEFERRABILITY integer QT_Ora9DS System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-string string string string string string string string short integer integer string string integer
-PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-PKTABLE_CAT 12 <null> java.lang.String PKTABLE_CAT string QT_Ora9DS System.JDBC.ReferenceKeyColumns 1 1 0 false true false true 1 false true true true
-PKTABLE_SCHEM 12 <null> java.lang.String PKTABLE_SCHEM string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PKTABLE_NAME 12 <null> java.lang.String PKTABLE_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PKCOLUMN_NAME 12 <null> java.lang.String PKCOLUMN_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKTABLE_CAT 12 <null> java.lang.String FKTABLE_CAT string QT_Ora9DS System.JDBC.ReferenceKeyColumns 1 1 0 false true false true 1 false true true true
-FKTABLE_SCHEM 12 <null> java.lang.String FKTABLE_SCHEM string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKTABLE_NAME 12 <null> java.lang.String FKTABLE_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKCOLUMN_NAME 12 <null> java.lang.String FKCOLUMN_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-KEY_SEQ 5 <null> java.lang.Short KEY_SEQ short QT_Ora9DS System.JDBC.ReferenceKeyColumns 6 5 0 false true false true 1 false true true true
-UPDATE_RULE 4 <null> java.lang.Integer UPDATE_RULE integer QT_Ora9DS System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-DELETE_RULE 4 <null> java.lang.Integer DELETE_RULE integer QT_Ora9DS System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-FK_NAME 12 <null> java.lang.String FK_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PK_NAME 12 <null> java.lang.String PK_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-DEFERRABILITY 4 <null> java.lang.Integer DEFERRABILITY integer QT_Ora9DS System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-string string string string string string string string short short short string string short
-PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-PKTABLE_CAT 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-PKTABLE_SCHEM 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-PKTABLE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-PKCOLUMN_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-FKTABLE_CAT 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-FKTABLE_SCHEM 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-FKTABLE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-FKCOLUMN_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-KEY_SEQ 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 2 true false false false
-UPDATE_RULE 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 2 true false false false
-DELETE_RULE 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 2 true false false false
-FK_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-PK_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-DEFERRABILITY 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 2 true false false false
+string string string string string string string string short integer integer string string integer
+PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+PKTABLE_CAT 12 QT_Ora9DS java.lang.String PKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_SCHEM 12 QT_Ora9DS java.lang.String PKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_NAME 12 QT_Ora9DS java.lang.String PKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKCOLUMN_NAME 12 QT_Ora9DS java.lang.String PKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_CAT 12 QT_Ora9DS java.lang.String FKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_SCHEM 12 QT_Ora9DS java.lang.String FKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_NAME 12 QT_Ora9DS java.lang.String FKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKCOLUMN_NAME 12 QT_Ora9DS java.lang.String FKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+KEY_SEQ 5 QT_Ora9DS java.lang.Short KEY_SEQ short System ReferenceKeyColumns 6 5 0 false true false true 1 false true true true
+UPDATE_RULE 4 QT_Ora9DS java.lang.Integer UPDATE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+DELETE_RULE 4 QT_Ora9DS java.lang.Integer DELETE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+FK_NAME 12 QT_Ora9DS java.lang.String FK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PK_NAME 12 QT_Ora9DS java.lang.String PK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+DEFERRABILITY 4 QT_Ora9DS java.lang.Integer DEFERRABILITY integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+string string string string string string string string short integer integer string string integer
+PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+PKTABLE_CAT 12 QT_Ora9DS java.lang.String PKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_SCHEM 12 QT_Ora9DS java.lang.String PKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_NAME 12 QT_Ora9DS java.lang.String PKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKCOLUMN_NAME 12 QT_Ora9DS java.lang.String PKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_CAT 12 QT_Ora9DS java.lang.String FKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_SCHEM 12 QT_Ora9DS java.lang.String FKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_NAME 12 QT_Ora9DS java.lang.String FKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKCOLUMN_NAME 12 QT_Ora9DS java.lang.String FKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+KEY_SEQ 5 QT_Ora9DS java.lang.Short KEY_SEQ short System ReferenceKeyColumns 6 5 0 false true false true 1 false true true true
+UPDATE_RULE 4 QT_Ora9DS java.lang.Integer UPDATE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+DELETE_RULE 4 QT_Ora9DS java.lang.Integer DELETE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+FK_NAME 12 QT_Ora9DS java.lang.String FK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PK_NAME 12 QT_Ora9DS java.lang.String PK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+DEFERRABILITY 4 QT_Ora9DS java.lang.Integer DEFERRABILITY integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+string string string string string string string string short integer integer string string integer
+PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+PKTABLE_CAT 12 QT_Ora9DS java.lang.String PKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_SCHEM 12 QT_Ora9DS java.lang.String PKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_NAME 12 QT_Ora9DS java.lang.String PKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKCOLUMN_NAME 12 QT_Ora9DS java.lang.String PKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_CAT 12 QT_Ora9DS java.lang.String FKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_SCHEM 12 QT_Ora9DS java.lang.String FKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_NAME 12 QT_Ora9DS java.lang.String FKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKCOLUMN_NAME 12 QT_Ora9DS java.lang.String FKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+KEY_SEQ 5 QT_Ora9DS java.lang.Short KEY_SEQ short System ReferenceKeyColumns 6 5 0 false true false true 1 false true true true
+UPDATE_RULE 4 QT_Ora9DS java.lang.Integer UPDATE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+DELETE_RULE 4 QT_Ora9DS java.lang.Integer DELETE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+FK_NAME 12 QT_Ora9DS java.lang.String FK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PK_NAME 12 QT_Ora9DS java.lang.String PK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+DEFERRABILITY 4 QT_Ora9DS java.lang.Integer DEFERRABILITY integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
Modified: branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetImportedKeys.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetImportedKeys.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetImportedKeys.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,57 +1,57 @@
-getImportedKeys1
-string string string string string string string string short integer integer string string integer
-PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-PKTABLE_CAT 12 <null> java.lang.String PKTABLE_CAT string QT_Ora9DS System.JDBC.ReferenceKeyColumns 1 1 0 false true false true 1 false true true true
-PKTABLE_SCHEM 12 <null> java.lang.String PKTABLE_SCHEM string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PKTABLE_NAME 12 <null> java.lang.String PKTABLE_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PKCOLUMN_NAME 12 <null> java.lang.String PKCOLUMN_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKTABLE_CAT 12 <null> java.lang.String FKTABLE_CAT string QT_Ora9DS System.JDBC.ReferenceKeyColumns 1 1 0 false true false true 1 false true true true
-FKTABLE_SCHEM 12 <null> java.lang.String FKTABLE_SCHEM string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKTABLE_NAME 12 <null> java.lang.String FKTABLE_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKCOLUMN_NAME 12 <null> java.lang.String FKCOLUMN_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-KEY_SEQ 5 <null> java.lang.Short KEY_SEQ short QT_Ora9DS System.JDBC.ReferenceKeyColumns 6 5 0 false true false true 1 false true true true
-UPDATE_RULE 4 <null> java.lang.Integer UPDATE_RULE integer QT_Ora9DS System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-DELETE_RULE 4 <null> java.lang.Integer DELETE_RULE integer QT_Ora9DS System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-FK_NAME 12 <null> java.lang.String FK_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PK_NAME 12 <null> java.lang.String PK_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-DEFERRABILITY 4 <null> java.lang.Integer DEFERRABILITY integer QT_Ora9DS System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-getImportedKeys2
-string string string string string string string string short integer integer string string integer
-PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-PKTABLE_CAT 12 <null> java.lang.String PKTABLE_CAT string QT_Ora9DS System.JDBC.ReferenceKeyColumns 1 1 0 false true false true 1 false true true true
-PKTABLE_SCHEM 12 <null> java.lang.String PKTABLE_SCHEM string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PKTABLE_NAME 12 <null> java.lang.String PKTABLE_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PKCOLUMN_NAME 12 <null> java.lang.String PKCOLUMN_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKTABLE_CAT 12 <null> java.lang.String FKTABLE_CAT string QT_Ora9DS System.JDBC.ReferenceKeyColumns 1 1 0 false true false true 1 false true true true
-FKTABLE_SCHEM 12 <null> java.lang.String FKTABLE_SCHEM string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKTABLE_NAME 12 <null> java.lang.String FKTABLE_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-FKCOLUMN_NAME 12 <null> java.lang.String FKCOLUMN_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-KEY_SEQ 5 <null> java.lang.Short KEY_SEQ short QT_Ora9DS System.JDBC.ReferenceKeyColumns 6 5 0 false true false true 1 false true true true
-UPDATE_RULE 4 <null> java.lang.Integer UPDATE_RULE integer QT_Ora9DS System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-DELETE_RULE 4 <null> java.lang.Integer DELETE_RULE integer QT_Ora9DS System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-FK_NAME 12 <null> java.lang.String FK_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-PK_NAME 12 <null> java.lang.String PK_NAME string QT_Ora9DS System.JDBC.ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
-DEFERRABILITY 4 <null> java.lang.Integer DEFERRABILITY integer QT_Ora9DS System.JDBC.ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
-getImportedKeys3
-string string string string string string string string short short short string string short
-PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-PKTABLE_CAT 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-PKTABLE_SCHEM 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-PKTABLE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-PKCOLUMN_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-FKTABLE_CAT 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-FKTABLE_SCHEM 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-FKTABLE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-FKCOLUMN_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-KEY_SEQ 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 2 true false false false
-UPDATE_RULE 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 2 true false false false
-DELETE_RULE 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 2 true false false false
-FK_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-PK_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-DEFERRABILITY 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 2 true false false false
+getImportedKeys1
+string string string string string string string string short integer integer string string integer
+PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+PKTABLE_CAT 12 QT_Ora9DS java.lang.String PKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_SCHEM 12 QT_Ora9DS java.lang.String PKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_NAME 12 QT_Ora9DS java.lang.String PKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKCOLUMN_NAME 12 QT_Ora9DS java.lang.String PKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_CAT 12 QT_Ora9DS java.lang.String FKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_SCHEM 12 QT_Ora9DS java.lang.String FKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_NAME 12 QT_Ora9DS java.lang.String FKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKCOLUMN_NAME 12 QT_Ora9DS java.lang.String FKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+KEY_SEQ 5 QT_Ora9DS java.lang.Short KEY_SEQ short System ReferenceKeyColumns 6 5 0 false true false true 1 false true true true
+UPDATE_RULE 4 QT_Ora9DS java.lang.Integer UPDATE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+DELETE_RULE 4 QT_Ora9DS java.lang.Integer DELETE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+FK_NAME 12 QT_Ora9DS java.lang.String FK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PK_NAME 12 QT_Ora9DS java.lang.String PK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+DEFERRABILITY 4 QT_Ora9DS java.lang.Integer DEFERRABILITY integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+getImportedKeys2
+string string string string string string string string short integer integer string string integer
+PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+PKTABLE_CAT 12 QT_Ora9DS java.lang.String PKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_SCHEM 12 QT_Ora9DS java.lang.String PKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_NAME 12 QT_Ora9DS java.lang.String PKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKCOLUMN_NAME 12 QT_Ora9DS java.lang.String PKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_CAT 12 QT_Ora9DS java.lang.String FKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_SCHEM 12 QT_Ora9DS java.lang.String FKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_NAME 12 QT_Ora9DS java.lang.String FKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKCOLUMN_NAME 12 QT_Ora9DS java.lang.String FKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+KEY_SEQ 5 QT_Ora9DS java.lang.Short KEY_SEQ short System ReferenceKeyColumns 6 5 0 false true false true 1 false true true true
+UPDATE_RULE 4 QT_Ora9DS java.lang.Integer UPDATE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+DELETE_RULE 4 QT_Ora9DS java.lang.Integer DELETE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+FK_NAME 12 QT_Ora9DS java.lang.String FK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PK_NAME 12 QT_Ora9DS java.lang.String PK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+DEFERRABILITY 4 QT_Ora9DS java.lang.Integer DEFERRABILITY integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+getImportedKeys3
+string string string string string string string string short integer integer string string integer
+PKTABLE_CAT PKTABLE_SCHEM PKTABLE_NAME PKCOLUMN_NAME FKTABLE_CAT FKTABLE_SCHEM FKTABLE_NAME FKCOLUMN_NAME KEY_SEQ UPDATE_RULE DELETE_RULE FK_NAME PK_NAME DEFERRABILITY
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+PKTABLE_CAT 12 QT_Ora9DS java.lang.String PKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_SCHEM 12 QT_Ora9DS java.lang.String PKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKTABLE_NAME 12 QT_Ora9DS java.lang.String PKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PKCOLUMN_NAME 12 QT_Ora9DS java.lang.String PKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_CAT 12 QT_Ora9DS java.lang.String FKTABLE_CAT string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_SCHEM 12 QT_Ora9DS java.lang.String FKTABLE_SCHEM string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKTABLE_NAME 12 QT_Ora9DS java.lang.String FKTABLE_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+FKCOLUMN_NAME 12 QT_Ora9DS java.lang.String FKCOLUMN_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+KEY_SEQ 5 QT_Ora9DS java.lang.Short KEY_SEQ short System ReferenceKeyColumns 6 5 0 false true false true 1 false true true true
+UPDATE_RULE 4 QT_Ora9DS java.lang.Integer UPDATE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+DELETE_RULE 4 QT_Ora9DS java.lang.Integer DELETE_RULE integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
+FK_NAME 12 QT_Ora9DS java.lang.String FK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+PK_NAME 12 QT_Ora9DS java.lang.String PK_NAME string System ReferenceKeyColumns 255 255 0 false true false true 1 false true true true
+DEFERRABILITY 4 QT_Ora9DS java.lang.Integer DEFERRABILITY integer System ReferenceKeyColumns 11 10 0 false true false true 1 false true true true
Modified: branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetIndexInfo.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetIndexInfo.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetIndexInfo.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,51 +1,51 @@
-string string string boolean string string integer short string string integer integer string
-TABLE_CAT TABLE_SCHEM TABLE_NAME NON_UNIQUE INDEX_QUALIFIER INDEX_NAME TYPE ORDINAL_POSITION COLUMN_NAME ASC_OR_DESC CARDINALITY PAGES FILTER_CONDITION
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TABLE_CAT 12 <null> java.lang.String TABLE_CAT string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-TABLE_SCHEM 12 <null> java.lang.String TABLE_SCHEM string QT_Ora9DS System.VirtualDatabases 255 255 0 false true false false 0 true true false false
-TABLE_NAME 12 <null> java.lang.String TABLE_NAME string QT_Ora9DS System.KeyElements 2048 2048 0 false true false false 0 true true false false
-NON_UNIQUE -7 <null> java.lang.Boolean NON_UNIQUE boolean QT_Ora9DS <null> 5 1 0 false false false true 1 false true true true
-INDEX_QUALIFIER 12 <null> java.lang.String INDEX_QUALIFIER string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-INDEX_NAME 12 <null> java.lang.String INDEX_NAME string QT_Ora9DS System.KeyElements 255 255 0 false false false false 1 true true false false
-TYPE 4 <null> java.lang.Integer TYPE integer QT_Ora9DS <null> 11 10 0 false false false true 1 false true true true
-ORDINAL_POSITION 5 <null> java.lang.Short ORDINAL_POSITION short QT_Ora9DS <null> 6 5 0 false false false true 1 false true true true
-COLUMN_NAME 12 <null> java.lang.String COLUMN_NAME string QT_Ora9DS System.KeyElements 255 255 0 false false false false 0 true true false false
-ASC_OR_DESC 12 <null> java.lang.String ASC_OR_DESC string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-CARDINALITY 4 <null> java.lang.Integer CARDINALITY integer QT_Ora9DS <null> 11 10 0 false false false true 1 false true true true
-PAGES 4 <null> java.lang.Integer PAGES integer QT_Ora9DS <null> 11 10 0 false false false true 1 false true true true
-FILTER_CONDITION 12 <null> java.lang.String FILTER_CONDITION string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-string string string boolean string string integer short string string integer integer string
-TABLE_CAT TABLE_SCHEM TABLE_NAME NON_UNIQUE INDEX_QUALIFIER INDEX_NAME TYPE ORDINAL_POSITION COLUMN_NAME ASC_OR_DESC CARDINALITY PAGES FILTER_CONDITION
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TABLE_CAT 12 <null> java.lang.String TABLE_CAT string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-TABLE_SCHEM 12 <null> java.lang.String TABLE_SCHEM string QT_Ora9DS System.VirtualDatabases 255 255 0 false true false false 0 true true false false
-TABLE_NAME 12 <null> java.lang.String TABLE_NAME string QT_Ora9DS System.KeyElements 2048 2048 0 false true false false 0 true true false false
-NON_UNIQUE -7 <null> java.lang.Boolean NON_UNIQUE boolean QT_Ora9DS <null> 5 1 0 false false false true 1 false true true true
-INDEX_QUALIFIER 12 <null> java.lang.String INDEX_QUALIFIER string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-INDEX_NAME 12 <null> java.lang.String INDEX_NAME string QT_Ora9DS System.KeyElements 255 255 0 false false false false 1 true true false false
-TYPE 4 <null> java.lang.Integer TYPE integer QT_Ora9DS <null> 11 10 0 false false false true 1 false true true true
-ORDINAL_POSITION 5 <null> java.lang.Short ORDINAL_POSITION short QT_Ora9DS <null> 6 5 0 false false false true 1 false true true true
-COLUMN_NAME 12 <null> java.lang.String COLUMN_NAME string QT_Ora9DS System.KeyElements 255 255 0 false false false false 0 true true false false
-ASC_OR_DESC 12 <null> java.lang.String ASC_OR_DESC string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-CARDINALITY 4 <null> java.lang.Integer CARDINALITY integer QT_Ora9DS <null> 11 10 0 false false false true 1 false true true true
-PAGES 4 <null> java.lang.Integer PAGES integer QT_Ora9DS <null> 11 10 0 false false false true 1 false true true true
-FILTER_CONDITION 12 <null> java.lang.String FILTER_CONDITION string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-string string string boolean string string short short string string integer integer string
-TABLE_CAT TABLE_SCHEM TABLE_NAME NON_UNIQUE INDEX_QUALIFIER INDEX_NAME TYPE ORDINAL_POSITION COLUMN_NAME ASC_OR_DESC CARDINALITY PAGES FILTER_CONDITION
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TABLE_CAT 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-TABLE_SCHEM 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-TABLE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-NON_UNIQUE -7 <null> java.lang.Boolean <null> boolean QT_Ora9DS <null> 5 1 0 false false false false 2 true false false false
-INDEX_QUALIFIER 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-INDEX_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-TYPE 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 2 true false false false
-ORDINAL_POSITION 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 2 true false false false
-COLUMN_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-ASC_OR_DESC 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-CARDINALITY 4 <null> java.lang.Integer <null> integer QT_Ora9DS <null> 11 10 0 false false false false 2 true false false false
-PAGES 4 <null> java.lang.Integer <null> integer QT_Ora9DS <null> 11 10 0 false false false false 2 true false false false
-FILTER_CONDITION 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
+string string string boolean string string integer short string string integer integer string
+TABLE_CAT TABLE_SCHEM TABLE_NAME NON_UNIQUE INDEX_QUALIFIER INDEX_NAME TYPE ORDINAL_POSITION COLUMN_NAME ASC_OR_DESC CARDINALITY PAGES FILTER_CONDITION
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TABLE_CAT 12 QT_Ora9DS java.lang.String TABLE_CAT string System KeyColumns 255 255 0 false false false false 0 true true false false
+TABLE_SCHEM 12 QT_Ora9DS java.lang.String TABLE_SCHEM string System KeyColumns 255 255 0 false true false true 1 false true true true
+TABLE_NAME 12 QT_Ora9DS java.lang.String TABLE_NAME string System KeyColumns 2048 2048 0 false true false false 0 true true false false
+NON_UNIQUE -7 QT_Ora9DS java.lang.Boolean NON_UNIQUE boolean <null> <null> 5 1 0 false false false true 1 false true true true
+INDEX_QUALIFIER 12 QT_Ora9DS java.lang.String INDEX_QUALIFIER string <null> <null> 4000 4000 0 false false false true 1 false true true true
+INDEX_NAME 12 QT_Ora9DS java.lang.String INDEX_NAME string System KeyColumns 255 255 0 false false false false 1 true true false false
+TYPE 4 QT_Ora9DS java.lang.Integer TYPE integer <null> <null> 11 10 0 false false false true 1 false true true true
+ORDINAL_POSITION 5 QT_Ora9DS java.lang.Short ORDINAL_POSITION short <null> <null> 6 5 0 false false false true 1 false true true true
+COLUMN_NAME 12 QT_Ora9DS java.lang.String COLUMN_NAME string System KeyColumns 255 255 0 false false false false 0 true true false false
+ASC_OR_DESC 12 QT_Ora9DS java.lang.String ASC_OR_DESC string <null> <null> 4000 4000 0 false false false true 1 false true true true
+CARDINALITY 4 QT_Ora9DS java.lang.Integer CARDINALITY integer <null> <null> 11 10 0 false false false true 1 false true true true
+PAGES 4 QT_Ora9DS java.lang.Integer PAGES integer <null> <null> 11 10 0 false false false true 1 false true true true
+FILTER_CONDITION 12 QT_Ora9DS java.lang.String FILTER_CONDITION string <null> <null> 4000 4000 0 false false false true 1 false true true true
+string string string boolean string string integer short string string integer integer string
+TABLE_CAT TABLE_SCHEM TABLE_NAME NON_UNIQUE INDEX_QUALIFIER INDEX_NAME TYPE ORDINAL_POSITION COLUMN_NAME ASC_OR_DESC CARDINALITY PAGES FILTER_CONDITION
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TABLE_CAT 12 QT_Ora9DS java.lang.String TABLE_CAT string System KeyColumns 255 255 0 false false false false 0 true true false false
+TABLE_SCHEM 12 QT_Ora9DS java.lang.String TABLE_SCHEM string System KeyColumns 255 255 0 false true false true 1 false true true true
+TABLE_NAME 12 QT_Ora9DS java.lang.String TABLE_NAME string System KeyColumns 2048 2048 0 false true false false 0 true true false false
+NON_UNIQUE -7 QT_Ora9DS java.lang.Boolean NON_UNIQUE boolean <null> <null> 5 1 0 false false false true 1 false true true true
+INDEX_QUALIFIER 12 QT_Ora9DS java.lang.String INDEX_QUALIFIER string <null> <null> 4000 4000 0 false false false true 1 false true true true
+INDEX_NAME 12 QT_Ora9DS java.lang.String INDEX_NAME string System KeyColumns 255 255 0 false false false false 1 true true false false
+TYPE 4 QT_Ora9DS java.lang.Integer TYPE integer <null> <null> 11 10 0 false false false true 1 false true true true
+ORDINAL_POSITION 5 QT_Ora9DS java.lang.Short ORDINAL_POSITION short <null> <null> 6 5 0 false false false true 1 false true true true
+COLUMN_NAME 12 QT_Ora9DS java.lang.String COLUMN_NAME string System KeyColumns 255 255 0 false false false false 0 true true false false
+ASC_OR_DESC 12 QT_Ora9DS java.lang.String ASC_OR_DESC string <null> <null> 4000 4000 0 false false false true 1 false true true true
+CARDINALITY 4 QT_Ora9DS java.lang.Integer CARDINALITY integer <null> <null> 11 10 0 false false false true 1 false true true true
+PAGES 4 QT_Ora9DS java.lang.Integer PAGES integer <null> <null> 11 10 0 false false false true 1 false true true true
+FILTER_CONDITION 12 QT_Ora9DS java.lang.String FILTER_CONDITION string <null> <null> 4000 4000 0 false false false true 1 false true true true
+string string string boolean string string integer short string string integer integer string
+TABLE_CAT TABLE_SCHEM TABLE_NAME NON_UNIQUE INDEX_QUALIFIER INDEX_NAME TYPE ORDINAL_POSITION COLUMN_NAME ASC_OR_DESC CARDINALITY PAGES FILTER_CONDITION
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TABLE_CAT 12 QT_Ora9DS java.lang.String TABLE_CAT string System KeyColumns 255 255 0 false false false false 0 true true false false
+TABLE_SCHEM 12 QT_Ora9DS java.lang.String TABLE_SCHEM string System KeyColumns 255 255 0 false true false true 1 false true true true
+TABLE_NAME 12 QT_Ora9DS java.lang.String TABLE_NAME string System KeyColumns 2048 2048 0 false true false false 0 true true false false
+NON_UNIQUE -7 QT_Ora9DS java.lang.Boolean NON_UNIQUE boolean <null> <null> 5 1 0 false false false true 1 false true true true
+INDEX_QUALIFIER 12 QT_Ora9DS java.lang.String INDEX_QUALIFIER string <null> <null> 4000 4000 0 false false false true 1 false true true true
+INDEX_NAME 12 QT_Ora9DS java.lang.String INDEX_NAME string System KeyColumns 255 255 0 false false false false 1 true true false false
+TYPE 4 QT_Ora9DS java.lang.Integer TYPE integer <null> <null> 11 10 0 false false false true 1 false true true true
+ORDINAL_POSITION 5 QT_Ora9DS java.lang.Short ORDINAL_POSITION short <null> <null> 6 5 0 false false false true 1 false true true true
+COLUMN_NAME 12 QT_Ora9DS java.lang.String COLUMN_NAME string System KeyColumns 255 255 0 false false false false 0 true true false false
+ASC_OR_DESC 12 QT_Ora9DS java.lang.String ASC_OR_DESC string <null> <null> 4000 4000 0 false false false true 1 false true true true
+CARDINALITY 4 QT_Ora9DS java.lang.Integer CARDINALITY integer <null> <null> 11 10 0 false false false true 1 false true true true
+PAGES 4 QT_Ora9DS java.lang.Integer PAGES integer <null> <null> 11 10 0 false false false true 1 false true true true
+FILTER_CONDITION 12 QT_Ora9DS java.lang.String FILTER_CONDITION string <null> <null> 4000 4000 0 false false false true 1 false true true true
Modified: branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetPrimaryKeys.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetPrimaryKeys.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetPrimaryKeys.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,32 +1,31 @@
-string string string string short string
-TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME KEY_SEQ PK_NAME
-<null> QT_Ora9DS BQT1.SmallA IntKey 1 PK_SmallA
-<null> QT_Ora9DS BQT1.SmallA StringKey 1 UK_SmallA
-Row Count : 2
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TABLE_CAT 12 <null> java.lang.String TABLE_CAT string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-TABLE_SCHEM 12 <null> java.lang.String TABLE_SCHEM string QT_Ora9DS System.VirtualDatabases 255 255 0 false true false false 0 true true false false
-TABLE_NAME 12 <null> java.lang.String TABLE_NAME string QT_Ora9DS System.KeyElements 2048 2048 0 false true false false 0 true true false false
-COLUMN_NAME 12 <null> java.lang.String COLUMN_NAME string QT_Ora9DS System.KeyElements 255 255 0 false false false false 0 true true false false
-KEY_SEQ 5 <null> java.lang.Short KEY_SEQ short QT_Ora9DS <null> 6 5 0 false false false true 1 false true true true
-PK_NAME 12 <null> java.lang.String PK_NAME string QT_Ora9DS System.KeyElements 255 255 0 false false false false 1 true true false false
-string string string string short string
-TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME KEY_SEQ PK_NAME
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TABLE_CAT 12 <null> java.lang.String TABLE_CAT string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-TABLE_SCHEM 12 <null> java.lang.String TABLE_SCHEM string QT_Ora9DS System.VirtualDatabases 255 255 0 false true false false 0 true true false false
-TABLE_NAME 12 <null> java.lang.String TABLE_NAME string QT_Ora9DS System.KeyElements 2048 2048 0 false true false false 0 true true false false
-COLUMN_NAME 12 <null> java.lang.String COLUMN_NAME string QT_Ora9DS System.KeyElements 255 255 0 false false false false 0 true true false false
-KEY_SEQ 5 <null> java.lang.Short KEY_SEQ short QT_Ora9DS <null> 6 5 0 false false false true 1 false true true true
-PK_NAME 12 <null> java.lang.String PK_NAME string QT_Ora9DS System.KeyElements 255 255 0 false false false false 1 true true false false
-string string string string short string
-TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME KEY_SEQ PK_NAME
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TABLE_CAT 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-TABLE_SCHEM 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-TABLE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-COLUMN_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-KEY_SEQ 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 2 true false false false
-PK_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
+string string string string short string
+TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME KEY_SEQ PK_NAME
+QT_Ora9DS BQT1 SmallA IntKey 1 PK_SmallA
+Row Count : 1
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TABLE_CAT 12 QT_Ora9DS java.lang.String TABLE_CAT string System KeyColumns 255 255 0 false false false false 0 true true false false
+TABLE_SCHEM 12 QT_Ora9DS java.lang.String TABLE_SCHEM string System KeyColumns 255 255 0 false true false true 1 false true true true
+TABLE_NAME 12 QT_Ora9DS java.lang.String TABLE_NAME string System KeyColumns 2048 2048 0 false true false false 0 true true false false
+COLUMN_NAME 12 QT_Ora9DS java.lang.String COLUMN_NAME string System KeyColumns 255 255 0 false false false false 0 true true false false
+KEY_SEQ 5 QT_Ora9DS java.lang.Short KEY_SEQ short <null> <null> 6 5 0 false false false true 1 false true true true
+PK_NAME 12 QT_Ora9DS java.lang.String PK_NAME string System KeyColumns 255 255 0 false false false false 1 true true false false
+string string string string short string
+TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME KEY_SEQ PK_NAME
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TABLE_CAT 12 QT_Ora9DS java.lang.String TABLE_CAT string System KeyColumns 255 255 0 false false false false 0 true true false false
+TABLE_SCHEM 12 QT_Ora9DS java.lang.String TABLE_SCHEM string System KeyColumns 255 255 0 false true false true 1 false true true true
+TABLE_NAME 12 QT_Ora9DS java.lang.String TABLE_NAME string System KeyColumns 2048 2048 0 false true false false 0 true true false false
+COLUMN_NAME 12 QT_Ora9DS java.lang.String COLUMN_NAME string System KeyColumns 255 255 0 false false false false 0 true true false false
+KEY_SEQ 5 QT_Ora9DS java.lang.Short KEY_SEQ short <null> <null> 6 5 0 false false false true 1 false true true true
+PK_NAME 12 QT_Ora9DS java.lang.String PK_NAME string System KeyColumns 255 255 0 false false false false 1 true true false false
+string string string string short string
+TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME KEY_SEQ PK_NAME
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TABLE_CAT 12 QT_Ora9DS java.lang.String TABLE_CAT string System KeyColumns 255 255 0 false false false false 0 true true false false
+TABLE_SCHEM 12 QT_Ora9DS java.lang.String TABLE_SCHEM string System KeyColumns 255 255 0 false true false true 1 false true true true
+TABLE_NAME 12 QT_Ora9DS java.lang.String TABLE_NAME string System KeyColumns 2048 2048 0 false true false false 0 true true false false
+COLUMN_NAME 12 QT_Ora9DS java.lang.String COLUMN_NAME string System KeyColumns 255 255 0 false false false false 0 true true false false
+KEY_SEQ 5 QT_Ora9DS java.lang.Short KEY_SEQ short <null> <null> 6 5 0 false false false true 1 false true true true
+PK_NAME 12 QT_Ora9DS java.lang.String PK_NAME string System KeyColumns 255 255 0 false false false false 1 true true false false
Modified: branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetProcedureColumns.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetProcedureColumns.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetProcedureColumns.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,119 +1,119 @@
-string string string string short integer string integer integer short integer integer string string string string string integer string string
-PROCEDURE_CAT PROCEDURE_SCHEM PROCEDURE_NAME COLUMN_NAME COLUMN_TYPE DATA_TYPE TYPE_NAME PRECISION LENGTH SCALE RADIX NULLABLE REMARKS COLUMN_DEF SQL_DATA_TYPE SQL_DATETIME_SUB CHAR_OCTET_LENGTH ORDINAL_POSITION IS_NULLABLE SPECIFIC_NAME
-<null> QT_Ora9DS SP.sp_all_smalla_rows IntKey 3 4 integer 22 10 0 10 0 <null> <null> <null> <null> <null> 1 NO SP.sp_all_smalla_rows.IntKey
-<null> QT_Ora9DS SP.sp_all_smalla_rows StringKey 3 12 string 4000 10 0 10 0 <null> <null> <null> <null> <null> 2 NO SP.sp_all_smalla_rows.StringKey
-<null> QT_Ora9DS SP.sp_all_smalla_rows IntNum 3 4 integer 22 10 0 10 1 <null> <null> <null> <null> <null> 3 YES SP.sp_all_smalla_rows.IntNum
-<null> QT_Ora9DS SP.sp_all_smalla_rows StringNum 3 12 string 4000 10 0 10 1 <null> <null> <null> <null> <null> 4 YES SP.sp_all_smalla_rows.StringNum
-<null> QT_Ora9DS SP.sp_all_smalla_rows FloatNum 3 7 float 20 126 0 10 1 <null> <null> <null> <null> <null> 5 YES SP.sp_all_smalla_rows.FloatNum
-<null> QT_Ora9DS SP.sp_all_smalla_rows LongNum 3 -5 long 28 19 0 10 1 <null> <null> <null> <null> <null> 6 YES SP.sp_all_smalla_rows.LongNum
-<null> QT_Ora9DS SP.sp_all_smalla_rows DoubleNum 3 8 double 20 28 0 10 1 <null> <null> <null> <null> <null> 7 YES SP.sp_all_smalla_rows.DoubleNum
-<null> QT_Ora9DS SP.sp_all_smalla_rows ByteNum 3 -6 byte 8 3 0 10 1 <null> <null> <null> <null> <null> 8 YES SP.sp_all_smalla_rows.ByteNum
-<null> QT_Ora9DS SP.sp_all_smalla_rows DateValue 3 91 date 10 7 0 10 1 <null> <null> <null> <null> <null> 9 YES SP.sp_all_smalla_rows.DateValue
-<null> QT_Ora9DS SP.sp_all_smalla_rows TimeValue 3 92 time 8 7 0 10 1 <null> <null> <null> <null> <null> 10 YES SP.sp_all_smalla_rows.TimeValue
-<null> QT_Ora9DS SP.sp_all_smalla_rows TimestampValue 3 93 timestamp 29 7 0 10 1 <null> <null> <null> <null> <null> 11 YES SP.sp_all_smalla_rows.TimestampValue
-<null> QT_Ora9DS SP.sp_all_smalla_rows BooleanValue 3 -7 boolean 1 1 0 10 1 <null> <null> <null> <null> <null> 12 YES SP.sp_all_smalla_rows.BooleanValue
-<null> QT_Ora9DS SP.sp_all_smalla_rows CharValue 3 1 char 1 1 0 10 1 <null> <null> <null> <null> <null> 13 YES SP.sp_all_smalla_rows.CharValue
-<null> QT_Ora9DS SP.sp_all_smalla_rows ShortValue 3 5 short 8 5 0 10 1 <null> <null> <null> <null> <null> 14 YES SP.sp_all_smalla_rows.ShortValue
-<null> QT_Ora9DS SP.sp_all_smalla_rows BigIntegerValue 3 2 biginteger 19 28 0 10 1 <null> <null> <null> <null> <null> 15 YES SP.sp_all_smalla_rows.BigIntegerValue
-<null> QT_Ora9DS SP.sp_all_smalla_rows BigDecimalValue 3 2 bigdecimal 20 126 0 10 1 <null> <null> <null> <null> <null> 16 YES SP.sp_all_smalla_rows.BigDecimalValue
-<null> QT_Ora9DS SP.sp_all_smalla_rows ObjectValue 3 2000 object 2147483647 2048 0 10 1 <null> <null> <null> <null> <null> 17 YES SP.sp_all_smalla_rows.ObjectValue
-<null> QT_Ora9DS SP.sp_count_all_smalla_rows allSmallARows 4 4 integer 10 4 0 10 1 <null> <null> <null> <null> <null> 1 YES SP.sp_count_all_smalla_rows.allSmallARows
-<null> QT_Ora9DS SP.sp_count_rows_between lwrlimit 1 4 integer 10 4 0 10 1 <null> <null> <null> <null> <null> 1 YES SP.sp_count_rows_between.lwrlimit
-<null> QT_Ora9DS SP.sp_count_rows_between uprlimit 1 4 integer 10 4 0 10 1 <null> <null> <null> <null> <null> 2 YES SP.sp_count_rows_between.uprlimit
-<null> QT_Ora9DS SP.sp_count_rows_between rowsBetween 4 4 integer 10 4 0 10 1 <null> <null> <null> <null> <null> 3 YES SP.sp_count_rows_between.rowsBetween
-<null> QT_Ora9DS SP.sp_rows_between lwrlimit 1 4 integer 10 4 0 10 1 <null> <null> <null> <null> <null> 1 YES SP.sp_rows_between.lwrlimit
-<null> QT_Ora9DS SP.sp_rows_between uprlimit 1 4 integer 10 4 0 10 1 <null> <null> <null> <null> <null> 2 YES SP.sp_rows_between.uprlimit
-<null> QT_Ora9DS SP.sp_rows_between tablename 1 12 string 8 8 0 0 1 <null> <null> <null> <null> <null> 3 YES SP.sp_rows_between.tablename
-<null> QT_Ora9DS SP.sp_rows_between IntKey 3 4 integer 22 10 0 10 0 <null> <null> <null> <null> <null> 1 NO SP.sp_rows_between.IntKey
-<null> QT_Ora9DS SP.sp_rows_between StringKey 3 12 string 4000 10 0 10 0 <null> <null> <null> <null> <null> 2 NO SP.sp_rows_between.StringKey
-<null> QT_Ora9DS SP.sp_rows_between IntNum 3 4 integer 22 10 0 10 1 <null> <null> <null> <null> <null> 3 YES SP.sp_rows_between.IntNum
-<null> QT_Ora9DS SP.sp_rows_between StringNum 3 12 string 4000 10 0 10 1 <null> <null> <null> <null> <null> 4 YES SP.sp_rows_between.StringNum
-<null> QT_Ora9DS SP.sp_rows_between FloatNum 3 7 float 20 126 0 10 1 <null> <null> <null> <null> <null> 5 YES SP.sp_rows_between.FloatNum
-<null> QT_Ora9DS SP.sp_rows_between LongNum 3 -5 long 28 19 0 10 1 <null> <null> <null> <null> <null> 6 YES SP.sp_rows_between.LongNum
-<null> QT_Ora9DS SP.sp_rows_between DoubleNum 3 8 double 20 28 0 10 1 <null> <null> <null> <null> <null> 7 YES SP.sp_rows_between.DoubleNum
-<null> QT_Ora9DS SP.sp_rows_between ByteNum 3 -6 byte 8 3 0 10 1 <null> <null> <null> <null> <null> 8 YES SP.sp_rows_between.ByteNum
-<null> QT_Ora9DS SP.sp_rows_between DateValue 3 91 date 10 7 0 10 1 <null> <null> <null> <null> <null> 9 YES SP.sp_rows_between.DateValue
-<null> QT_Ora9DS SP.sp_rows_between TimeValue 3 92 time 8 7 0 10 1 <null> <null> <null> <null> <null> 10 YES SP.sp_rows_between.TimeValue
-<null> QT_Ora9DS SP.sp_rows_between TimestampValue 3 93 timestamp 29 7 0 10 1 <null> <null> <null> <null> <null> 11 YES SP.sp_rows_between.TimestampValue
-<null> QT_Ora9DS SP.sp_rows_between BooleanValue 3 -7 boolean 1 1 0 10 1 <null> <null> <null> <null> <null> 12 YES SP.sp_rows_between.BooleanValue
-<null> QT_Ora9DS SP.sp_rows_between CharValue 3 1 char 1 1 0 10 1 <null> <null> <null> <null> <null> 13 YES SP.sp_rows_between.CharValue
-<null> QT_Ora9DS SP.sp_rows_between ShortValue 3 5 short 8 5 0 10 1 <null> <null> <null> <null> <null> 14 YES SP.sp_rows_between.ShortValue
-<null> QT_Ora9DS SP.sp_rows_between BigIntegerValue 3 2 biginteger 19 28 0 10 1 <null> <null> <null> <null> <null> 15 YES SP.sp_rows_between.BigIntegerValue
-<null> QT_Ora9DS SP.sp_rows_between BigDecimalValue 3 2 bigdecimal 20 126 0 10 1 <null> <null> <null> <null> <null> 16 YES SP.sp_rows_between.BigDecimalValue
-<null> QT_Ora9DS SP.sp_rows_between ObjectValue 3 2000 object 2147483647 2048 0 10 1 <null> <null> <null> <null> <null> 17 YES SP.sp_rows_between.ObjectValue
-<null> QT_Ora9DS System.describe entity 1 12 string 4000 4000 0 10 0 <null> <null> <null> <null> <null> 1 NO System.describe.entity
-<null> QT_Ora9DS System.describe Description 3 12 string 128 128 0 10 0 <null> <null> <null> <null> <null> 1 NO System.describe.Description
-<null> QT_Ora9DS System.getBinaryVDBResource resourcePath 1 12 string 50 50 0 10 0 <null> <null> <null> <null> <null> 1 NO System.getBinaryVDBResource.resourcePath
-<null> QT_Ora9DS System.getBinaryVDBResource VdbResource 3 2004 blob 2147483647 2147483647 0 10 1 <null> <null> <null> <null> <null> 1 YES System.getBinaryVDBResource.VdbResource
-<null> QT_Ora9DS System.getCharacterVDBResource resourcePath 1 12 string 50 50 0 10 0 <null> <null> <null> <null> <null> 1 NO System.getCharacterVDBResource.resourcePath
-<null> QT_Ora9DS System.getCharacterVDBResource VdbResource 3 2005 clob 2147483647 2147483647 0 10 1 <null> <null> <null> <null> <null> 1 YES System.getCharacterVDBResource.VdbResource
-<null> QT_Ora9DS System.getUpdatedCharacterVDBResource resourcePath 1 12 string 50 50 0 10 0 <null> <null> <null> <null> <null> 1 NO System.getUpdatedCharacterVDBResource.resourcePath
-<null> QT_Ora9DS System.getUpdatedCharacterVDBResource tokens 1 2000 object 2147483647 2147483647 0 10 0 <null> <null> <null> <null> <null> 2 NO System.getUpdatedCharacterVDBResource.tokens
-<null> QT_Ora9DS System.getUpdatedCharacterVDBResource tokenReplacements 1 2000 object 2147483647 2147483647 0 10 0 <null> <null> <null> <null> <null> 3 NO System.getUpdatedCharacterVDBResource.tokenReplacements
-<null> QT_Ora9DS System.getUpdatedCharacterVDBResource VdbResource 3 2005 clob 2147483647 2147483647 0 10 1 <null> <null> <null> <null> <null> 1 YES System.getUpdatedCharacterVDBResource.VdbResource
-<null> QT_Ora9DS System.getVDBResourcePaths ResourcePath 3 12 string 50 50 0 10 1 <null> <null> <null> <null> <null> 1 YES System.getVDBResourcePaths.ResourcePath
-<null> QT_Ora9DS System.getVDBResourcePaths isBinary 3 -7 boolean 1 1 0 10 1 <null> <null> <null> <null> <null> 2 YES System.getVDBResourcePaths.isBinary
-Row Count : 53
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-PROCEDURE_CAT 12 <null> java.lang.String PROCEDURE_CAT string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-PROCEDURE_SCHEM 12 <null> java.lang.String PROCEDURE_SCHEM string QT_Ora9DS System.VirtualDatabases 255 255 0 false true false false 0 true true false false
-PROCEDURE_NAME 12 <null> java.lang.String PROCEDURE_NAME string QT_Ora9DS System.ProcedureParams 255 255 0 false true false false 0 true true false false
-COLUMN_NAME 12 <null> java.lang.String COLUMN_NAME string QT_Ora9DS System.ProcedureParams 255 255 0 false false false false 0 true true false false
-COLUMN_TYPE 5 <null> java.lang.Short COLUMN_TYPE short QT_Ora9DS <null> 6 5 0 false false false true 1 false true true true
-DATA_TYPE 4 <null> java.lang.Integer DATA_TYPE integer QT_Ora9DS <null> 11 10 0 false false false true 1 false true true true
-TYPE_NAME 12 <null> java.lang.String TYPE_NAME string QT_Ora9DS System.ProcedureParams 25 25 0 false true false false 0 true true true false
-PRECISION 4 <null> java.lang.Integer PRECISION integer QT_Ora9DS <null> 11 10 0 false false false true 1 false true true true
-LENGTH 4 <null> java.lang.Integer LENGTH integer QT_Ora9DS <null> 11 10 0 false false false true 1 false true true true
-SCALE 5 <null> java.lang.Short SCALE short QT_Ora9DS <null> 6 5 0 false false false true 1 false true true true
-RADIX 4 <null> java.lang.Integer RADIX integer QT_Ora9DS System.ProcedureParams 11 10 0 false false false false 0 true true false false
-NULLABLE 4 <null> java.lang.Integer NULLABLE integer QT_Ora9DS <null> 11 10 0 false false false true 1 false true true true
-REMARKS 12 <null> java.lang.String REMARKS string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-COLUMN_DEF 12 <null> java.lang.String COLUMN_DEF string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-SQL_DATA_TYPE 12 <null> java.lang.String SQL_DATA_TYPE string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-SQL_DATETIME_SUB 12 <null> java.lang.String SQL_DATETIME_SUB string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-CHAR_OCTET_LENGTH 12 <null> java.lang.String CHAR_OCTET_LENGTH string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-ORDINAL_POSITION 4 <null> java.lang.Integer ORDINAL_POSITION integer QT_Ora9DS System.ProcedureParams 11 10 0 false false false false 0 true true false false
-IS_NULLABLE 12 <null> java.lang.String IS_NULLABLE string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-SPECIFIC_NAME 12 <null> java.lang.String SPECIFIC_NAME string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-string string string string short integer string integer integer short integer integer string string string string string integer string string
-PROCEDURE_CAT PROCEDURE_SCHEM PROCEDURE_NAME COLUMN_NAME COLUMN_TYPE DATA_TYPE TYPE_NAME PRECISION LENGTH SCALE RADIX NULLABLE REMARKS COLUMN_DEF SQL_DATA_TYPE SQL_DATETIME_SUB CHAR_OCTET_LENGTH ORDINAL_POSITION IS_NULLABLE SPECIFIC_NAME
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-PROCEDURE_CAT 12 <null> java.lang.String PROCEDURE_CAT string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-PROCEDURE_SCHEM 12 <null> java.lang.String PROCEDURE_SCHEM string QT_Ora9DS System.VirtualDatabases 255 255 0 false true false false 0 true true false false
-PROCEDURE_NAME 12 <null> java.lang.String PROCEDURE_NAME string QT_Ora9DS System.ProcedureParams 255 255 0 false true false false 0 true true false false
-COLUMN_NAME 12 <null> java.lang.String COLUMN_NAME string QT_Ora9DS System.ProcedureParams 255 255 0 false false false false 0 true true false false
-COLUMN_TYPE 5 <null> java.lang.Short COLUMN_TYPE short QT_Ora9DS <null> 6 5 0 false false false true 1 false true true true
-DATA_TYPE 4 <null> java.lang.Integer DATA_TYPE integer QT_Ora9DS <null> 11 10 0 false false false true 1 false true true true
-TYPE_NAME 12 <null> java.lang.String TYPE_NAME string QT_Ora9DS System.ProcedureParams 25 25 0 false true false false 0 true true true false
-PRECISION 4 <null> java.lang.Integer PRECISION integer QT_Ora9DS <null> 11 10 0 false false false true 1 false true true true
-LENGTH 4 <null> java.lang.Integer LENGTH integer QT_Ora9DS <null> 11 10 0 false false false true 1 false true true true
-SCALE 5 <null> java.lang.Short SCALE short QT_Ora9DS <null> 6 5 0 false false false true 1 false true true true
-RADIX 4 <null> java.lang.Integer RADIX integer QT_Ora9DS System.ProcedureParams 11 10 0 false false false false 0 true true false false
-NULLABLE 4 <null> java.lang.Integer NULLABLE integer QT_Ora9DS <null> 11 10 0 false false false true 1 false true true true
-REMARKS 12 <null> java.lang.String REMARKS string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-COLUMN_DEF 12 <null> java.lang.String COLUMN_DEF string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-SQL_DATA_TYPE 12 <null> java.lang.String SQL_DATA_TYPE string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-SQL_DATETIME_SUB 12 <null> java.lang.String SQL_DATETIME_SUB string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-CHAR_OCTET_LENGTH 12 <null> java.lang.String CHAR_OCTET_LENGTH string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-ORDINAL_POSITION 4 <null> java.lang.Integer ORDINAL_POSITION integer QT_Ora9DS System.ProcedureParams 11 10 0 false false false false 0 true true false false
-IS_NULLABLE 12 <null> java.lang.String IS_NULLABLE string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-SPECIFIC_NAME 12 <null> java.lang.String SPECIFIC_NAME string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-string string string string short integer string integer integer short short short string short
-PROCEDURE_CAT PROCEDURE_SCHEM PROCEDURE_NAME COLUMN_NAME COLUMN_TYPE DATA_TYPE TYPE_NAME PRECISION LENGTH SCALE RADIX NULLABLE REMARKS POSITION
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-PROCEDURE_CAT 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-PROCEDURE_SCHEM 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-PROCEDURE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-COLUMN_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-COLUMN_TYPE 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 2 true false false false
-DATA_TYPE 4 <null> java.lang.Integer <null> integer QT_Ora9DS <null> 11 10 0 false false false false 2 true false false false
-TYPE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-PRECISION 4 <null> java.lang.Integer <null> integer QT_Ora9DS <null> 11 10 0 false false false false 2 true false false false
-LENGTH 4 <null> java.lang.Integer <null> integer QT_Ora9DS <null> 11 10 0 false false false false 2 true false false false
-SCALE 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 2 true false false false
-RADIX 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 2 true false false false
-NULLABLE 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 2 true false false false
-REMARKS 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-POSITION 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 2 true false false false
+string string string string short integer string integer integer short integer integer string string string string string integer string string
+PROCEDURE_CAT PROCEDURE_SCHEM PROCEDURE_NAME COLUMN_NAME COLUMN_TYPE DATA_TYPE TYPE_NAME PRECISION LENGTH SCALE RADIX NULLABLE REMARKS COLUMN_DEF SQL_DATA_TYPE SQL_DATETIME_SUB CHAR_OCTET_LENGTH ORDINAL_POSITION IS_NULLABLE SPECIFIC_NAME
+QT_Ora9DS SP sp_all_smalla_rows IntKey 3 4 integer 22 10 0 10 0 <null> <null> <null> <null> <null> 1 NO sp_all_smalla_rows
+QT_Ora9DS SP sp_all_smalla_rows StringKey 3 12 string 4000 10 0 10 0 <null> <null> <null> <null> <null> 2 NO sp_all_smalla_rows
+QT_Ora9DS SP sp_all_smalla_rows IntNum 3 4 integer 22 10 0 10 1 <null> <null> <null> <null> <null> 3 YES sp_all_smalla_rows
+QT_Ora9DS SP sp_all_smalla_rows StringNum 3 12 string 4000 10 0 10 1 <null> <null> <null> <null> <null> 4 YES sp_all_smalla_rows
+QT_Ora9DS SP sp_all_smalla_rows FloatNum 3 7 float 20 126 0 10 1 <null> <null> <null> <null> <null> 5 YES sp_all_smalla_rows
+QT_Ora9DS SP sp_all_smalla_rows LongNum 3 -5 long 28 19 0 10 1 <null> <null> <null> <null> <null> 6 YES sp_all_smalla_rows
+QT_Ora9DS SP sp_all_smalla_rows DoubleNum 3 8 double 20 28 0 10 1 <null> <null> <null> <null> <null> 7 YES sp_all_smalla_rows
+QT_Ora9DS SP sp_all_smalla_rows ByteNum 3 -6 byte 8 3 0 10 1 <null> <null> <null> <null> <null> 8 YES sp_all_smalla_rows
+QT_Ora9DS SP sp_all_smalla_rows DateValue 3 91 date 10 7 0 10 1 <null> <null> <null> <null> <null> 9 YES sp_all_smalla_rows
+QT_Ora9DS SP sp_all_smalla_rows TimeValue 3 92 time 8 7 0 10 1 <null> <null> <null> <null> <null> 10 YES sp_all_smalla_rows
+QT_Ora9DS SP sp_all_smalla_rows TimestampValue 3 93 timestamp 29 7 0 10 1 <null> <null> <null> <null> <null> 11 YES sp_all_smalla_rows
+QT_Ora9DS SP sp_all_smalla_rows BooleanValue 3 -7 boolean 1 1 0 10 1 <null> <null> <null> <null> <null> 12 YES sp_all_smalla_rows
+QT_Ora9DS SP sp_all_smalla_rows CharValue 3 1 char 1 1 0 10 1 <null> <null> <null> <null> <null> 13 YES sp_all_smalla_rows
+QT_Ora9DS SP sp_all_smalla_rows ShortValue 3 5 short 8 5 0 10 1 <null> <null> <null> <null> <null> 14 YES sp_all_smalla_rows
+QT_Ora9DS SP sp_all_smalla_rows BigIntegerValue 3 2 biginteger 19 28 0 10 1 <null> <null> <null> <null> <null> 15 YES sp_all_smalla_rows
+QT_Ora9DS SP sp_all_smalla_rows BigDecimalValue 3 2 bigdecimal 20 126 0 10 1 <null> <null> <null> <null> <null> 16 YES sp_all_smalla_rows
+QT_Ora9DS SP sp_all_smalla_rows ObjectValue 3 2000 object 2147483647 2048 0 10 1 <null> <null> <null> <null> <null> 17 YES sp_all_smalla_rows
+QT_Ora9DS SP sp_count_all_smalla_rows allSmallARows 4 4 integer 10 4 0 10 1 <null> <null> <null> <null> <null> 1 YES sp_count_all_smalla_rows
+QT_Ora9DS SP sp_count_rows_between lwrlimit 1 4 integer 10 4 0 10 1 <null> <null> <null> <null> <null> 1 YES sp_count_rows_between
+QT_Ora9DS SP sp_count_rows_between uprlimit 1 4 integer 10 4 0 10 1 <null> <null> <null> <null> <null> 2 YES sp_count_rows_between
+QT_Ora9DS SP sp_count_rows_between rowsBetween 4 4 integer 10 4 0 10 1 <null> <null> <null> <null> <null> 3 YES sp_count_rows_between
+QT_Ora9DS SP sp_rows_between lwrlimit 1 4 integer 10 4 0 10 1 <null> <null> <null> <null> <null> 1 YES sp_rows_between
+QT_Ora9DS SP sp_rows_between uprlimit 1 4 integer 10 4 0 10 1 <null> <null> <null> <null> <null> 2 YES sp_rows_between
+QT_Ora9DS SP sp_rows_between tablename 1 12 string 8 8 0 0 1 <null> <null> <null> <null> <null> 3 YES sp_rows_between
+QT_Ora9DS SP sp_rows_between IntKey 3 4 integer 22 10 0 10 0 <null> <null> <null> <null> <null> 1 NO sp_rows_between
+QT_Ora9DS SP sp_rows_between StringKey 3 12 string 4000 10 0 10 0 <null> <null> <null> <null> <null> 2 NO sp_rows_between
+QT_Ora9DS SP sp_rows_between IntNum 3 4 integer 22 10 0 10 1 <null> <null> <null> <null> <null> 3 YES sp_rows_between
+QT_Ora9DS SP sp_rows_between StringNum 3 12 string 4000 10 0 10 1 <null> <null> <null> <null> <null> 4 YES sp_rows_between
+QT_Ora9DS SP sp_rows_between FloatNum 3 7 float 20 126 0 10 1 <null> <null> <null> <null> <null> 5 YES sp_rows_between
+QT_Ora9DS SP sp_rows_between LongNum 3 -5 long 28 19 0 10 1 <null> <null> <null> <null> <null> 6 YES sp_rows_between
+QT_Ora9DS SP sp_rows_between DoubleNum 3 8 double 20 28 0 10 1 <null> <null> <null> <null> <null> 7 YES sp_rows_between
+QT_Ora9DS SP sp_rows_between ByteNum 3 -6 byte 8 3 0 10 1 <null> <null> <null> <null> <null> 8 YES sp_rows_between
+QT_Ora9DS SP sp_rows_between DateValue 3 91 date 10 7 0 10 1 <null> <null> <null> <null> <null> 9 YES sp_rows_between
+QT_Ora9DS SP sp_rows_between TimeValue 3 92 time 8 7 0 10 1 <null> <null> <null> <null> <null> 10 YES sp_rows_between
+QT_Ora9DS SP sp_rows_between TimestampValue 3 93 timestamp 29 7 0 10 1 <null> <null> <null> <null> <null> 11 YES sp_rows_between
+QT_Ora9DS SP sp_rows_between BooleanValue 3 -7 boolean 1 1 0 10 1 <null> <null> <null> <null> <null> 12 YES sp_rows_between
+QT_Ora9DS SP sp_rows_between CharValue 3 1 char 1 1 0 10 1 <null> <null> <null> <null> <null> 13 YES sp_rows_between
+QT_Ora9DS SP sp_rows_between ShortValue 3 5 short 8 5 0 10 1 <null> <null> <null> <null> <null> 14 YES sp_rows_between
+QT_Ora9DS SP sp_rows_between BigIntegerValue 3 2 biginteger 19 28 0 10 1 <null> <null> <null> <null> <null> 15 YES sp_rows_between
+QT_Ora9DS SP sp_rows_between BigDecimalValue 3 2 bigdecimal 20 126 0 10 1 <null> <null> <null> <null> <null> 16 YES sp_rows_between
+QT_Ora9DS SP sp_rows_between ObjectValue 3 2000 object 2147483647 2048 0 10 1 <null> <null> <null> <null> <null> 17 YES sp_rows_between
+QT_Ora9DS System getBinaryVDBResource resourcePath 1 12 string 50 50 0 10 0 <null> <null> <null> <null> <null> 1 NO getBinaryVDBResource
+QT_Ora9DS System getBinaryVDBResource VdbResource 3 2004 blob 2147483647 2147483647 0 10 1 <null> <null> <null> <null> <null> 1 YES getBinaryVDBResource
+QT_Ora9DS System getCharacterVDBResource resourcePath 1 12 string 50 50 0 10 0 <null> <null> <null> <null> <null> 1 NO getCharacterVDBResource
+QT_Ora9DS System getCharacterVDBResource VdbResource 3 2005 clob 2147483647 2147483647 0 10 1 <null> <null> <null> <null> <null> 1 YES getCharacterVDBResource
+QT_Ora9DS System getVDBResourcePaths ResourcePath 3 12 string 50 50 0 10 1 <null> <null> <null> <null> <null> 1 YES getVDBResourcePaths
+QT_Ora9DS System getVDBResourcePaths isBinary 3 -7 boolean 1 1 0 10 1 <null> <null> <null> <null> <null> 2 YES getVDBResourcePaths
+Row Count : 47
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+PROCEDURE_CAT 12 QT_Ora9DS java.lang.String PROCEDURE_CAT string System ProcedureParams 255 255 0 false false false false 0 true true false false
+PROCEDURE_SCHEM 12 QT_Ora9DS java.lang.String PROCEDURE_SCHEM string System ProcedureParams 255 255 0 false true false true 1 false true true true
+PROCEDURE_NAME 12 QT_Ora9DS java.lang.String PROCEDURE_NAME string System ProcedureParams 255 255 0 false true false false 0 true true false false
+COLUMN_NAME 12 QT_Ora9DS java.lang.String COLUMN_NAME string System ProcedureParams 255 255 0 false false false false 0 true true false false
+COLUMN_TYPE 5 QT_Ora9DS java.lang.Short COLUMN_TYPE short <null> <null> 6 5 0 false false false true 1 false true true true
+DATA_TYPE 4 QT_Ora9DS java.lang.Integer DATA_TYPE integer <null> <null> 11 10 0 false false false true 1 false true true true
+TYPE_NAME 12 QT_Ora9DS java.lang.String TYPE_NAME string System ProcedureParams 25 25 0 false true false false 0 true true true false
+PRECISION 4 QT_Ora9DS java.lang.Integer PRECISION integer <null> <null> 11 10 0 false false false true 1 false true true true
+LENGTH 4 QT_Ora9DS java.lang.Integer LENGTH integer <null> <null> 11 10 0 false false false true 1 false true true true
+SCALE 5 QT_Ora9DS java.lang.Short SCALE short <null> <null> 6 5 0 false false false true 1 false true true true
+RADIX 4 QT_Ora9DS java.lang.Integer RADIX integer System ProcedureParams 11 10 0 false false false false 0 true true false false
+NULLABLE 4 QT_Ora9DS java.lang.Integer NULLABLE integer <null> <null> 11 10 0 false false false true 1 false true true true
+REMARKS 12 QT_Ora9DS java.lang.String REMARKS string <null> <null> 4000 4000 0 false false false true 1 false true true true
+COLUMN_DEF 12 QT_Ora9DS java.lang.String COLUMN_DEF string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SQL_DATA_TYPE 12 QT_Ora9DS java.lang.String SQL_DATA_TYPE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SQL_DATETIME_SUB 12 QT_Ora9DS java.lang.String SQL_DATETIME_SUB string <null> <null> 4000 4000 0 false false false true 1 false true true true
+CHAR_OCTET_LENGTH 12 QT_Ora9DS java.lang.String CHAR_OCTET_LENGTH string <null> <null> 4000 4000 0 false false false true 1 false true true true
+ORDINAL_POSITION 4 QT_Ora9DS java.lang.Integer ORDINAL_POSITION integer System ProcedureParams 11 10 0 false false false false 0 true true false false
+IS_NULLABLE 12 QT_Ora9DS java.lang.String IS_NULLABLE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SPECIFIC_NAME 12 QT_Ora9DS java.lang.String SPECIFIC_NAME string System ProcedureParams 255 255 0 false true false false 0 true true false false
+string string string string short integer string integer integer short integer integer string string string string string integer string string
+PROCEDURE_CAT PROCEDURE_SCHEM PROCEDURE_NAME COLUMN_NAME COLUMN_TYPE DATA_TYPE TYPE_NAME PRECISION LENGTH SCALE RADIX NULLABLE REMARKS COLUMN_DEF SQL_DATA_TYPE SQL_DATETIME_SUB CHAR_OCTET_LENGTH ORDINAL_POSITION IS_NULLABLE SPECIFIC_NAME
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+PROCEDURE_CAT 12 QT_Ora9DS java.lang.String PROCEDURE_CAT string System ProcedureParams 255 255 0 false false false false 0 true true false false
+PROCEDURE_SCHEM 12 QT_Ora9DS java.lang.String PROCEDURE_SCHEM string System ProcedureParams 255 255 0 false true false true 1 false true true true
+PROCEDURE_NAME 12 QT_Ora9DS java.lang.String PROCEDURE_NAME string System ProcedureParams 255 255 0 false true false false 0 true true false false
+COLUMN_NAME 12 QT_Ora9DS java.lang.String COLUMN_NAME string System ProcedureParams 255 255 0 false false false false 0 true true false false
+COLUMN_TYPE 5 QT_Ora9DS java.lang.Short COLUMN_TYPE short <null> <null> 6 5 0 false false false true 1 false true true true
+DATA_TYPE 4 QT_Ora9DS java.lang.Integer DATA_TYPE integer <null> <null> 11 10 0 false false false true 1 false true true true
+TYPE_NAME 12 QT_Ora9DS java.lang.String TYPE_NAME string System ProcedureParams 25 25 0 false true false false 0 true true true false
+PRECISION 4 QT_Ora9DS java.lang.Integer PRECISION integer <null> <null> 11 10 0 false false false true 1 false true true true
+LENGTH 4 QT_Ora9DS java.lang.Integer LENGTH integer <null> <null> 11 10 0 false false false true 1 false true true true
+SCALE 5 QT_Ora9DS java.lang.Short SCALE short <null> <null> 6 5 0 false false false true 1 false true true true
+RADIX 4 QT_Ora9DS java.lang.Integer RADIX integer System ProcedureParams 11 10 0 false false false false 0 true true false false
+NULLABLE 4 QT_Ora9DS java.lang.Integer NULLABLE integer <null> <null> 11 10 0 false false false true 1 false true true true
+REMARKS 12 QT_Ora9DS java.lang.String REMARKS string <null> <null> 4000 4000 0 false false false true 1 false true true true
+COLUMN_DEF 12 QT_Ora9DS java.lang.String COLUMN_DEF string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SQL_DATA_TYPE 12 QT_Ora9DS java.lang.String SQL_DATA_TYPE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SQL_DATETIME_SUB 12 QT_Ora9DS java.lang.String SQL_DATETIME_SUB string <null> <null> 4000 4000 0 false false false true 1 false true true true
+CHAR_OCTET_LENGTH 12 QT_Ora9DS java.lang.String CHAR_OCTET_LENGTH string <null> <null> 4000 4000 0 false false false true 1 false true true true
+ORDINAL_POSITION 4 QT_Ora9DS java.lang.Integer ORDINAL_POSITION integer System ProcedureParams 11 10 0 false false false false 0 true true false false
+IS_NULLABLE 12 QT_Ora9DS java.lang.String IS_NULLABLE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SPECIFIC_NAME 12 QT_Ora9DS java.lang.String SPECIFIC_NAME string System ProcedureParams 255 255 0 false true false false 0 true true false false
+string string string string short integer string integer integer short integer integer string string string string string integer string string
+PROCEDURE_CAT PROCEDURE_SCHEM PROCEDURE_NAME COLUMN_NAME COLUMN_TYPE DATA_TYPE TYPE_NAME PRECISION LENGTH SCALE RADIX NULLABLE REMARKS COLUMN_DEF SQL_DATA_TYPE SQL_DATETIME_SUB CHAR_OCTET_LENGTH ORDINAL_POSITION IS_NULLABLE SPECIFIC_NAME
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+PROCEDURE_CAT 12 QT_Ora9DS java.lang.String PROCEDURE_CAT string System ProcedureParams 255 255 0 false false false false 0 true true false false
+PROCEDURE_SCHEM 12 QT_Ora9DS java.lang.String PROCEDURE_SCHEM string System ProcedureParams 255 255 0 false true false true 1 false true true true
+PROCEDURE_NAME 12 QT_Ora9DS java.lang.String PROCEDURE_NAME string System ProcedureParams 255 255 0 false true false false 0 true true false false
+COLUMN_NAME 12 QT_Ora9DS java.lang.String COLUMN_NAME string System ProcedureParams 255 255 0 false false false false 0 true true false false
+COLUMN_TYPE 5 QT_Ora9DS java.lang.Short COLUMN_TYPE short <null> <null> 6 5 0 false false false true 1 false true true true
+DATA_TYPE 4 QT_Ora9DS java.lang.Integer DATA_TYPE integer <null> <null> 11 10 0 false false false true 1 false true true true
+TYPE_NAME 12 QT_Ora9DS java.lang.String TYPE_NAME string System ProcedureParams 25 25 0 false true false false 0 true true true false
+PRECISION 4 QT_Ora9DS java.lang.Integer PRECISION integer <null> <null> 11 10 0 false false false true 1 false true true true
+LENGTH 4 QT_Ora9DS java.lang.Integer LENGTH integer <null> <null> 11 10 0 false false false true 1 false true true true
+SCALE 5 QT_Ora9DS java.lang.Short SCALE short <null> <null> 6 5 0 false false false true 1 false true true true
+RADIX 4 QT_Ora9DS java.lang.Integer RADIX integer System ProcedureParams 11 10 0 false false false false 0 true true false false
+NULLABLE 4 QT_Ora9DS java.lang.Integer NULLABLE integer <null> <null> 11 10 0 false false false true 1 false true true true
+REMARKS 12 QT_Ora9DS java.lang.String REMARKS string <null> <null> 4000 4000 0 false false false true 1 false true true true
+COLUMN_DEF 12 QT_Ora9DS java.lang.String COLUMN_DEF string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SQL_DATA_TYPE 12 QT_Ora9DS java.lang.String SQL_DATA_TYPE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SQL_DATETIME_SUB 12 QT_Ora9DS java.lang.String SQL_DATETIME_SUB string <null> <null> 4000 4000 0 false false false true 1 false true true true
+CHAR_OCTET_LENGTH 12 QT_Ora9DS java.lang.String CHAR_OCTET_LENGTH string <null> <null> 4000 4000 0 false false false true 1 false true true true
+ORDINAL_POSITION 4 QT_Ora9DS java.lang.Integer ORDINAL_POSITION integer System ProcedureParams 11 10 0 false false false false 0 true true false false
+IS_NULLABLE 12 QT_Ora9DS java.lang.String IS_NULLABLE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SPECIFIC_NAME 12 QT_Ora9DS java.lang.String SPECIFIC_NAME string System ProcedureParams 255 255 0 false true false false 0 true true false false
Modified: branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetProcedures.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetProcedures.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetProcedures.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,47 +1,46 @@
-string string string string string string string short string
-PROCEDURE_CAT PROCEDURE_SCHEM PROCEDURE_NAME RESERVED_1 RESERVED_2 RESERVED_3 REMARKS PROCEDURE_TYPE SPECIFIC_NAME
-<null> QT_Ora9DS SP.sp_all_smalla_rows <null> <null> <null> <null> 2 SP.sp_all_smalla_rows
-<null> QT_Ora9DS SP.sp_count_all_smalla_rows <null> <null> <null> <null> 1 SP.sp_count_all_smalla_rows
-<null> QT_Ora9DS SP.sp_count_rows_between <null> <null> <null> <null> 1 SP.sp_count_rows_between
-<null> QT_Ora9DS SP.sp_rows_between <null> <null> <null> <null> 2 SP.sp_rows_between
-<null> QT_Ora9DS System.describe <null> <null> <null> <null> 2 System.describe
-<null> QT_Ora9DS System.getBinaryVDBResource <null> <null> <null> <null> 2 System.getBinaryVDBResource
-<null> QT_Ora9DS System.getCharacterVDBResource <null> <null> <null> <null> 2 System.getCharacterVDBResource
-<null> QT_Ora9DS System.getUpdatedCharacterVDBResource <null> <null> <null> <null> 2 System.getUpdatedCharacterVDBResource
-<null> QT_Ora9DS System.getVDBResourcePaths <null> <null> <null> <null> 2 System.getVDBResourcePaths
-Row Count : 9
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-PROCEDURE_CAT 12 <null> java.lang.String PROCEDURE_CAT string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-PROCEDURE_SCHEM 12 <null> java.lang.String PROCEDURE_SCHEM string QT_Ora9DS System.VirtualDatabases 255 255 0 false true false false 0 true true false false
-PROCEDURE_NAME 12 <null> java.lang.String PROCEDURE_NAME string QT_Ora9DS System.Procedures 2048 2048 0 false false false true 0 false true false true
-RESERVED_1 12 <null> java.lang.String RESERVED_1 string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-RESERVED_2 12 <null> java.lang.String RESERVED_2 string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-RESERVED_3 12 <null> java.lang.String RESERVED_3 string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-REMARKS 12 <null> java.lang.String REMARKS string QT_Ora9DS System.Procedures 255 255 0 false true false true 1 false true true true
-PROCEDURE_TYPE 5 <null> java.lang.Short PROCEDURE_TYPE short QT_Ora9DS <null> 6 5 0 false false false true 1 false true true true
-SPECIFIC_NAME 12 <null> java.lang.String SPECIFIC_NAME string QT_Ora9DS System.Procedures 2048 2048 0 false false false true 0 false true false true
-string string string string string string string short string
-PROCEDURE_CAT PROCEDURE_SCHEM PROCEDURE_NAME RESERVED_1 RESERVED_2 RESERVED_3 REMARKS PROCEDURE_TYPE SPECIFIC_NAME
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-PROCEDURE_CAT 12 <null> java.lang.String PROCEDURE_CAT string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-PROCEDURE_SCHEM 12 <null> java.lang.String PROCEDURE_SCHEM string QT_Ora9DS System.VirtualDatabases 255 255 0 false true false false 0 true true false false
-PROCEDURE_NAME 12 <null> java.lang.String PROCEDURE_NAME string QT_Ora9DS System.Procedures 2048 2048 0 false false false true 0 false true false true
-RESERVED_1 12 <null> java.lang.String RESERVED_1 string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-RESERVED_2 12 <null> java.lang.String RESERVED_2 string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-RESERVED_3 12 <null> java.lang.String RESERVED_3 string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-REMARKS 12 <null> java.lang.String REMARKS string QT_Ora9DS System.Procedures 255 255 0 false true false true 1 false true true true
-PROCEDURE_TYPE 5 <null> java.lang.Short PROCEDURE_TYPE short QT_Ora9DS <null> 6 5 0 false false false true 1 false true true true
-SPECIFIC_NAME 12 <null> java.lang.String SPECIFIC_NAME string QT_Ora9DS System.Procedures 2048 2048 0 false false false true 0 false true false true
-string string string string string string string short
-PROCEDURE_CAT PROCEDURE_SCHEM PROCEDURE_NAME RESERVED_1 RESERVED_2 RESERVED_3 REMARKS PROCEDURE_TYPE
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-PROCEDURE_CAT 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-PROCEDURE_SCHEM 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-PROCEDURE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-RESERVED_1 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-RESERVED_2 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-RESERVED_3 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-REMARKS 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-PROCEDURE_TYPE 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 2 true false false false
+string string string string string string string short string
+PROCEDURE_CAT PROCEDURE_SCHEM PROCEDURE_NAME RESERVED_1 RESERVED_2 RESERVED_3 REMARKS PROCEDURE_TYPE SPECIFIC_NAME
+QT_Ora9DS SP sp_all_smalla_rows <null> <null> <null> <null> 2 sp_all_smalla_rows
+QT_Ora9DS SP sp_count_all_smalla_rows <null> <null> <null> <null> 1 sp_count_all_smalla_rows
+QT_Ora9DS SP sp_count_rows_between <null> <null> <null> <null> 1 sp_count_rows_between
+QT_Ora9DS SP sp_rows_between <null> <null> <null> <null> 2 sp_rows_between
+QT_Ora9DS System getBinaryVDBResource <null> <null> <null> <null> 2 getBinaryVDBResource
+QT_Ora9DS System getCharacterVDBResource <null> <null> <null> <null> 2 getCharacterVDBResource
+QT_Ora9DS System getVDBResourcePaths <null> <null> <null> <null> 2 getVDBResourcePaths
+Row Count : 7
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+PROCEDURE_CAT 12 QT_Ora9DS java.lang.String PROCEDURE_CAT string System Procedures 255 255 0 false false false false 0 true true false false
+PROCEDURE_SCHEM 12 QT_Ora9DS java.lang.String PROCEDURE_SCHEM string System Procedures 255 255 0 false true false true 1 false true true true
+PROCEDURE_NAME 12 QT_Ora9DS java.lang.String PROCEDURE_NAME string System Procedures 255 255 0 false true false false 0 true true false false
+RESERVED_1 12 QT_Ora9DS java.lang.String RESERVED_1 string <null> <null> 4000 4000 0 false false false true 1 false true true true
+RESERVED_2 12 QT_Ora9DS java.lang.String RESERVED_2 string <null> <null> 4000 4000 0 false false false true 1 false true true true
+RESERVED_3 12 QT_Ora9DS java.lang.String RESERVED_3 string <null> <null> 4000 4000 0 false false false true 1 false true true true
+REMARKS 12 QT_Ora9DS java.lang.String REMARKS string System Procedures 255 255 0 false true false true 1 false true true true
+PROCEDURE_TYPE 5 QT_Ora9DS java.lang.Short PROCEDURE_TYPE short <null> <null> 6 5 0 false false false true 1 false true true true
+SPECIFIC_NAME 12 QT_Ora9DS java.lang.String SPECIFIC_NAME string System Procedures 255 255 0 false true false false 0 true true false false
+string string string string string string string short string
+PROCEDURE_CAT PROCEDURE_SCHEM PROCEDURE_NAME RESERVED_1 RESERVED_2 RESERVED_3 REMARKS PROCEDURE_TYPE SPECIFIC_NAME
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+PROCEDURE_CAT 12 QT_Ora9DS java.lang.String PROCEDURE_CAT string System Procedures 255 255 0 false false false false 0 true true false false
+PROCEDURE_SCHEM 12 QT_Ora9DS java.lang.String PROCEDURE_SCHEM string System Procedures 255 255 0 false true false true 1 false true true true
+PROCEDURE_NAME 12 QT_Ora9DS java.lang.String PROCEDURE_NAME string System Procedures 255 255 0 false true false false 0 true true false false
+RESERVED_1 12 QT_Ora9DS java.lang.String RESERVED_1 string <null> <null> 4000 4000 0 false false false true 1 false true true true
+RESERVED_2 12 QT_Ora9DS java.lang.String RESERVED_2 string <null> <null> 4000 4000 0 false false false true 1 false true true true
+RESERVED_3 12 QT_Ora9DS java.lang.String RESERVED_3 string <null> <null> 4000 4000 0 false false false true 1 false true true true
+REMARKS 12 QT_Ora9DS java.lang.String REMARKS string System Procedures 255 255 0 false true false true 1 false true true true
+PROCEDURE_TYPE 5 QT_Ora9DS java.lang.Short PROCEDURE_TYPE short <null> <null> 6 5 0 false false false true 1 false true true true
+SPECIFIC_NAME 12 QT_Ora9DS java.lang.String SPECIFIC_NAME string System Procedures 255 255 0 false true false false 0 true true false false
+string string string string string string string short string
+PROCEDURE_CAT PROCEDURE_SCHEM PROCEDURE_NAME RESERVED_1 RESERVED_2 RESERVED_3 REMARKS PROCEDURE_TYPE SPECIFIC_NAME
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+PROCEDURE_CAT 12 QT_Ora9DS java.lang.String PROCEDURE_CAT string System Procedures 255 255 0 false false false false 0 true true false false
+PROCEDURE_SCHEM 12 QT_Ora9DS java.lang.String PROCEDURE_SCHEM string System Procedures 255 255 0 false true false true 1 false true true true
+PROCEDURE_NAME 12 QT_Ora9DS java.lang.String PROCEDURE_NAME string System Procedures 255 255 0 false true false false 0 true true false false
+RESERVED_1 12 QT_Ora9DS java.lang.String RESERVED_1 string <null> <null> 4000 4000 0 false false false true 1 false true true true
+RESERVED_2 12 QT_Ora9DS java.lang.String RESERVED_2 string <null> <null> 4000 4000 0 false false false true 1 false true true true
+RESERVED_3 12 QT_Ora9DS java.lang.String RESERVED_3 string <null> <null> 4000 4000 0 false false false true 1 false true true true
+REMARKS 12 QT_Ora9DS java.lang.String REMARKS string System Procedures 255 255 0 false true false true 1 false true true true
+PROCEDURE_TYPE 5 QT_Ora9DS java.lang.Short PROCEDURE_TYPE short <null> <null> 6 5 0 false false false true 1 false true true true
+SPECIFIC_NAME 12 QT_Ora9DS java.lang.String SPECIFIC_NAME string System Procedures 255 255 0 false true false false 0 true true false false
Modified: branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetSchemas.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetSchemas.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetSchemas.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,7 +1,15 @@
-string string
-TABLE_SCHEM TABLE_CATALOG
-QT_Ora9DS <null>
-Row Count : 1
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TABLE_SCHEM 12 <null> java.lang.String TABLE_SCHEM string QT_Ora9DS System.VirtualDatabases 255 255 0 false true false false 0 true true false false
-TABLE_CATALOG 12 <null> java.lang.String TABLE_CATALOG string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
+string string
+TABLE_SCHEM TABLE_CATALOG
+BQT1 QT_Ora9DS
+BQT2 QT_Ora9DS
+SP QT_Ora9DS
+System QT_Ora9DS
+VQT QT_Ora9DS
+XQT QT_Ora9DS
+XQTDoc QT_Ora9DS
+XQTNestedDoc QT_Ora9DS
+XQTRecursiveDoc QT_Ora9DS
+Row Count : 9
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TABLE_SCHEM 12 QT_Ora9DS java.lang.String TABLE_SCHEM string System Schemas 255 255 0 false true false true 1 false true true true
+TABLE_CATALOG 12 QT_Ora9DS java.lang.String TABLE_CATALOG string System Schemas 255 255 0 false true false true 1 false true true true
Modified: branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetSuperTypes.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetSuperTypes.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetSuperTypes.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,10 +1,10 @@
-string string string string string string
-TYPE_CAT TYPE_SCHEM TYPE_NAME SUPERTYPE_CAT SUPERTYPE_SCHEM SUPERTYPE_NAME
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TYPE_CAT 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 1 true false false false
-TYPE_SCHEM 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 1 true false false false
-TYPE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 0 true false false false
-SUPERTYPE_CAT 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 1 true false false false
-SUPERTYPE_SCHEM 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 1 true false false false
-SUPERTYPE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 0 true false false false
+string string string string string string
+TYPE_CAT TYPE_SCHEM TYPE_NAME SUPERTYPE_CAT SUPERTYPE_SCHEM SUPERTYPE_NAME
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TYPE_CAT 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 1 true false false false
+TYPE_SCHEM 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 1 true false false false
+TYPE_NAME 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 0 true false false false
+SUPERTYPE_CAT 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 1 true false false false
+SUPERTYPE_SCHEM 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 1 true false false false
+SUPERTYPE_NAME 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 0 true false false false
Modified: branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTablePrivileges.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTablePrivileges.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTablePrivileges.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,11 +1,11 @@
-string string string string string string string
-TABLE_CAT TABLE_SCHEM TABLE_NAME GRANTOR GRANTEE PRIVILEGE IS_GRANTABLE
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TABLE_CAT 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 1 true false false false
-TABLE_SCHEM 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 1 true false false false
-TABLE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 0 true false false false
-GRANTOR 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 1 true false false false
-GRANTEE 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 0 true false false false
-PRIVILEGE 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 0 true false false false
-IS_GRANTABLE 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 1 true false false false
+string string string string string string string
+TABLE_CAT TABLE_SCHEM TABLE_NAME GRANTOR GRANTEE PRIVILEGE IS_GRANTABLE
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TABLE_CAT 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 1 true false false false
+TABLE_SCHEM 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 1 true false false false
+TABLE_NAME 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 0 true false false false
+GRANTOR 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 1 true false false false
+GRANTEE 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 0 true false false false
+PRIVILEGE 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 0 true false false false
+IS_GRANTABLE 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 1 true false false false
Modified: branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTablePrivilegesResultSetMetaData.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTablePrivilegesResultSetMetaData.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTablePrivilegesResultSetMetaData.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,11 +1,11 @@
-string string string string string string string
-TABLE_CAT TABLE_SCHEM TABLE_NAME GRANTOR GRANTEE PRIVILEGE IS_GRANTABLE
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TABLE_CAT 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 1 true false false false
-TABLE_SCHEM 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 1 true false false false
-TABLE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 0 true false false false
-GRANTOR 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 1 true false false false
-GRANTEE 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 0 true false false false
-PRIVILEGE 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 0 true false false false
-IS_GRANTABLE 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 1 true false false false
+string string string string string string string
+TABLE_CAT TABLE_SCHEM TABLE_NAME GRANTOR GRANTEE PRIVILEGE IS_GRANTABLE
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TABLE_CAT 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 1 true false false false
+TABLE_SCHEM 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 1 true false false false
+TABLE_NAME 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 0 true false false false
+GRANTOR 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 1 true false false false
+GRANTEE 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 0 true false false false
+PRIVILEGE 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 0 true false false false
+IS_GRANTABLE 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 1 true false false false
Modified: branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTableTypes.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTableTypes.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTableTypes.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,10 +1,10 @@
-string
-TABLE_TYPE
-DOCUMENT
-TABLE
-VIEW
-XMLSTAGINGTABLE
-SYSTEM TABLE
-Row Count : 5
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TABLE_TYPE 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 0 true false false false
+string
+TABLE_TYPE
+DOCUMENT
+TABLE
+VIEW
+XMLSTAGINGTABLE
+SYSTEM TABLE
+Row Count : 5
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TABLE_TYPE 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 0 true false false false
Modified: branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTables.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTables.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTables.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,143 +1,166 @@
-string string string string string string string string string string boolean
-TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE REMARKS TYPE_CAT TYPE_SCHEM TYPE_NAME SELF_REFERENCING_COL_NAME REF_GENERATION ISPHYSICAL
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTDoc.choiceTestDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTDoc.defaultValueTestDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTDoc.emptyContentTestDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTDoc.fixedValueTestDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTDoc.mixedContentTestDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTDoc.multipleDocsTestDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTDoc.nillableTestDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTNestedDoc.testExcludeFromDoc DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTNestedDoc.testSimpleNested DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTRecursiveDoc.testNested2Document DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTRecursiveDoc.testNestedDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleTempTable DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.DataTypeElementProperties SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.DataTypeElements SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.DataTypeProperties SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.DataTypes SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.ElementProperties SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.Elements SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.GroupProperties SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.Groups SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.JDBC.ReferenceKeyColumns SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.KeyElements SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.KeyProperties SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.Keys SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.ModelProperties SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.Models SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.ODBC.OA_COLUMNS SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.ODBC.OA_FKEYS SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.ODBC.OA_PROC SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.ODBC.OA_PROCCOLUMNS SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.ODBC.OA_STATISTICS SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.ODBC.OA_TABLES SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.ODBC.OA_TYPES SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.ProcedureParams SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.ProcedureProperties SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.Procedures SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.VirtualDatabases SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS BQT1.HugeA TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT1.HugeB TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT1.LargeA TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT1.LargeB TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT1.MediumA TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT1.MediumB TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT1.SmallA TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT1.SmallB TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT2.HugeA TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT2.HugeB TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT2.LargeA TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT2.LargeB TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT2.MediumA TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT2.MediumB TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT2.SmallA TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT2.SmallB TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS VQT.Base.Agg1 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Agg2 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Agg3 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Agg4 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Expr1 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Expr2 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Expr3 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Expr4 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Expr5 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Expr6 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Expr7 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Mapping1 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Mapping2 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Mapping3 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Mapping4 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Order1 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Order2 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Order3 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Order4 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Order5 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U1 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U10 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U11 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U2 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U3 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U4 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U5 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U6 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U7 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U8 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U9 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQT.xqtData TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQT.xqtFullData TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable.MappingClasses.TemporaryTable1 XMLSTAGINGTABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable.MappingClasses.TemporaryTable2 XMLSTAGINGTABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable.MappingClasses.TemporaryTab$ XMLSTAGINGTABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable.MappingClasses.moveToRootTe$ XMLSTAGINGTABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable.MappingClasses.TemporaryTable1 XMLSTAGINGTABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleTempTable.MappingClasses.TemporaryTable$ XMLSTAGINGTABLE <null> <null> <null> <null> <null> <null> false
-Row Count : 98
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TABLE_CAT 12 <null> java.lang.String TABLE_CAT string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-TABLE_SCHEM 12 <null> java.lang.String TABLE_SCHEM string QT_Ora9DS System.VirtualDatabases 255 255 0 false true false false 0 true true false false
-TABLE_NAME 12 <null> java.lang.String TABLE_NAME string QT_Ora9DS System.Groups 2048 2048 0 false true false false 0 true true false false
-TABLE_TYPE 12 <null> java.lang.String TABLE_TYPE string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-REMARKS 12 <null> java.lang.String REMARKS string QT_Ora9DS System.Groups 255 255 0 false true false true 1 false true true true
-TYPE_CAT 12 <null> java.lang.String TYPE_CAT string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-TYPE_SCHEM 12 <null> java.lang.String TYPE_SCHEM string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-TYPE_NAME 12 <null> java.lang.String TYPE_NAME string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-SELF_REFERENCING_COL_NAME 12 <null> java.lang.String SELF_REFERENCING_COL_NAME string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-REF_GENERATION 12 <null> java.lang.String REF_GENERATION string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-ISPHYSICAL -7 <null> java.lang.Boolean ISPHYSICAL boolean QT_Ora9DS System.Groups 5 1 0 false true false false 0 true true false false
-string string string string string string string string string string boolean
-TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE REMARKS TYPE_CAT TYPE_SCHEM TYPE_NAME SELF_REFERENCING_COL_NAME REF_GENERATION ISPHYSICAL
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TABLE_CAT 12 <null> java.lang.String TABLE_CAT string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-TABLE_SCHEM 12 <null> java.lang.String TABLE_SCHEM string QT_Ora9DS System.VirtualDatabases 255 255 0 false true false false 0 true true false false
-TABLE_NAME 12 <null> java.lang.String TABLE_NAME string QT_Ora9DS System.Groups 2048 2048 0 false true false false 0 true true false false
-TABLE_TYPE 12 <null> java.lang.String TABLE_TYPE string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-REMARKS 12 <null> java.lang.String REMARKS string QT_Ora9DS System.Groups 255 255 0 false true false true 1 false true true true
-TYPE_CAT 12 <null> java.lang.String TYPE_CAT string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-TYPE_SCHEM 12 <null> java.lang.String TYPE_SCHEM string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-TYPE_NAME 12 <null> java.lang.String TYPE_NAME string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-SELF_REFERENCING_COL_NAME 12 <null> java.lang.String SELF_REFERENCING_COL_NAME string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-REF_GENERATION 12 <null> java.lang.String REF_GENERATION string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-ISPHYSICAL -7 <null> java.lang.Boolean ISPHYSICAL boolean QT_Ora9DS System.Groups 5 1 0 false true false false 0 true true false false
-string string string string string string string string string string boolean
-TABLE_CAT TYPE_SCHEM TABLE_NAME TABLE_TYPE REMARKS TYPE_CAT TYPE_SCHEM TYPE_NAME SELF_REFERENCING_COL_NAME REF_GENERATION ISPHYSICAL
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TABLE_CAT 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-TYPE_SCHEM 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-TABLE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-TABLE_TYPE 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-REMARKS 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-TYPE_CAT 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-TYPE_SCHEM 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-TYPE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-SELF_REFERENCING_COL_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-REF_GENERATION 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-ISPHYSICAL -7 <null> java.lang.Boolean <null> boolean QT_Ora9DS <null> 5 1 0 false false false false 2 true false false false
+string string string string string string string string string string boolean
+TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE REMARKS TYPE_CAT TYPE_SCHEM TYPE_NAME SELF_REFERENCING_COL_NAME REF_GENERATION ISPHYSICAL
+QT_Ora9DS XQTDoc BQTDocTestDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTDoc choiceTestDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTDoc defaultValueTestDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTDoc emptyContentTestDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTDoc fixedValueTestDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTDoc mixedContentTestDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTDoc multipleDocsTestDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTDoc nillableTestDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testBoundTempTable DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testRootTempTable DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testSimpleNested DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc groupDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc testNested2Document DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc testNestedDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc testSimpleDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc testSimpleTempTable DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS System Columns SYSTEM TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS System DataTypes SYSTEM TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS System KeyColumns SYSTEM TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS System Keys SYSTEM TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS System ProcedureParams SYSTEM TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS System Procedures SYSTEM TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS System Properties SYSTEM TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS System ReferenceKeyColumns SYSTEM TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS System Schemas SYSTEM TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS System Tables SYSTEM TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS System VirtualDatabases SYSTEM TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT1 HugeA TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT1 HugeB TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT1 LargeA TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT1 LargeB TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT1 MediumA TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT1 MediumB TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT1 SmallA TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT1 SmallB TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT2 HugeA TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT2 HugeB TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT2 LargeA TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT2 LargeB TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT2 MediumA TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT2 MediumB TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT2 SmallA TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT2 SmallB TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS VQT Base.Agg1 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Agg2 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Agg3 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Agg4 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Expr1 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Expr2 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Expr3 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Expr4 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Expr5 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Expr6 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Expr7 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Mapping1 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Mapping2 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Mapping3 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Mapping4 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Order1 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Order2 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Order3 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Order4 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Order5 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U1 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U10 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U11 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U2 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U3 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U4 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U5 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U6 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U7 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U8 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U9 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQT xqtData TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQT xqtFullData TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTDoc BQTDocTestDocument.MappingClasses.SingleRow XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTDoc choiceTestDocument.MappingClasses.choiceTest XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTDoc defaultValueTestDocument.MappingClasses.wrapper XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTDoc emptyContentTestDocument.MappingClasses.wrapper1 XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTDoc fixedValueTestDocument.MappingClasses.wrapper XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTDoc mixedContentTestDocument.MappingClasses.wrapper3 XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTDoc multipleDocsTestDocument.MappingClasses.multipleDocsTest XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTDoc nillableTestDocument.MappingClasses.wrapper XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testBoundTempTable.MappingClasses.nested XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testBoundTempTable.MappingClasses.nested1 XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testBoundTempTable.MappingClasses.root XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc.MappingClasses.nested XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc.MappingClasses.nested1 XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc.MappingClasses.root XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable.MappingClasses.nested XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable.MappingClasses.nested1 XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable.MappingClasses.root XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testRootTempTable.MappingClasses.nested XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testRootTempTable.MappingClasses.nested1 XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testRootTempTable.MappingClasses.root XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testSimpleNested.MappingClasses.nested XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testSimpleNested.MappingClasses.nested1 XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testSimpleNested.MappingClasses.root XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc groupDocument.MappingClasses.group XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc groupDocument.MappingClasses.group1 XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc groupDocument.MappingClasses.supervisor XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc testNested2Document.MappingClasses.nested XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc testNested2Document.MappingClasses.recurse XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc testNested2Document.MappingClasses.recursiveRoot XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc testNestedDocument.MappingClasses.nested XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc testNestedDocument.MappingClasses.nestedRecurse XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc testNestedDocument.MappingClasses.recurse XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc testNestedDocument.MappingClasses.recursiveRoot XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc testSimpleDocument.MappingClasses.recurse XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc testSimpleDocument.MappingClasses.recursiveRoot XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc testSimpleTempTable.MappingClasses.recurse XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc testSimpleTempTable.MappingClasses.recursiveRoot XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testBoundTempTable.MappingClasses.TemporaryTable1 XMLSTAGINGTABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testBoundTempTable.MappingClasses.TemporaryTable2 XMLSTAGINGTABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable.MappingClasses.TemporaryTable1 XMLSTAGINGTABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable.MappingClasses.moveToRootTempTable XMLSTAGINGTABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testRootTempTable.MappingClasses.TemporaryTable1 XMLSTAGINGTABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc testSimpleTempTable.MappingClasses.TemporaryTable1 XMLSTAGINGTABLE <null> <null> <null> <null> <null> <null> false
+Row Count : 121
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TABLE_CAT 12 QT_Ora9DS java.lang.String TABLE_CAT string System Tables 255 255 0 false true false true 1 false true true true
+TABLE_SCHEM 12 QT_Ora9DS java.lang.String TABLE_SCHEM string System Tables 255 255 0 false true false true 1 false true true true
+TABLE_NAME 12 QT_Ora9DS java.lang.String TABLE_NAME string System Tables 255 255 0 false true false false 0 true true false false
+TABLE_TYPE 12 QT_Ora9DS java.lang.String TABLE_TYPE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+REMARKS 12 QT_Ora9DS java.lang.String REMARKS string System Tables 255 255 0 false true false true 1 false true true true
+TYPE_CAT 12 QT_Ora9DS java.lang.String TYPE_CAT string <null> <null> 4000 4000 0 false false false true 1 false true true true
+TYPE_SCHEM 12 QT_Ora9DS java.lang.String TYPE_SCHEM string <null> <null> 4000 4000 0 false false false true 1 false true true true
+TYPE_NAME 12 QT_Ora9DS java.lang.String TYPE_NAME string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SELF_REFERENCING_COL_NAME 12 QT_Ora9DS java.lang.String SELF_REFERENCING_COL_NAME string <null> <null> 4000 4000 0 false false false true 1 false true true true
+REF_GENERATION 12 QT_Ora9DS java.lang.String REF_GENERATION string <null> <null> 4000 4000 0 false false false true 1 false true true true
+ISPHYSICAL -7 QT_Ora9DS java.lang.Boolean ISPHYSICAL boolean System Tables 5 1 0 false true false false 0 true true false false
+string string string string string string string string string string boolean
+TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE REMARKS TYPE_CAT TYPE_SCHEM TYPE_NAME SELF_REFERENCING_COL_NAME REF_GENERATION ISPHYSICAL
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TABLE_CAT 12 QT_Ora9DS java.lang.String TABLE_CAT string System Tables 255 255 0 false true false true 1 false true true true
+TABLE_SCHEM 12 QT_Ora9DS java.lang.String TABLE_SCHEM string System Tables 255 255 0 false true false true 1 false true true true
+TABLE_NAME 12 QT_Ora9DS java.lang.String TABLE_NAME string System Tables 255 255 0 false true false false 0 true true false false
+TABLE_TYPE 12 QT_Ora9DS java.lang.String TABLE_TYPE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+REMARKS 12 QT_Ora9DS java.lang.String REMARKS string System Tables 255 255 0 false true false true 1 false true true true
+TYPE_CAT 12 QT_Ora9DS java.lang.String TYPE_CAT string <null> <null> 4000 4000 0 false false false true 1 false true true true
+TYPE_SCHEM 12 QT_Ora9DS java.lang.String TYPE_SCHEM string <null> <null> 4000 4000 0 false false false true 1 false true true true
+TYPE_NAME 12 QT_Ora9DS java.lang.String TYPE_NAME string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SELF_REFERENCING_COL_NAME 12 QT_Ora9DS java.lang.String SELF_REFERENCING_COL_NAME string <null> <null> 4000 4000 0 false false false true 1 false true true true
+REF_GENERATION 12 QT_Ora9DS java.lang.String REF_GENERATION string <null> <null> 4000 4000 0 false false false true 1 false true true true
+ISPHYSICAL -7 QT_Ora9DS java.lang.Boolean ISPHYSICAL boolean System Tables 5 1 0 false true false false 0 true true false false
+string string string string string string string string string string boolean
+TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE REMARKS TYPE_CAT TYPE_SCHEM TYPE_NAME SELF_REFERENCING_COL_NAME REF_GENERATION ISPHYSICAL
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TABLE_CAT 12 QT_Ora9DS java.lang.String TABLE_CAT string System Tables 255 255 0 false true false true 1 false true true true
+TABLE_SCHEM 12 QT_Ora9DS java.lang.String TABLE_SCHEM string System Tables 255 255 0 false true false true 1 false true true true
+TABLE_NAME 12 QT_Ora9DS java.lang.String TABLE_NAME string System Tables 255 255 0 false true false false 0 true true false false
+TABLE_TYPE 12 QT_Ora9DS java.lang.String TABLE_TYPE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+REMARKS 12 QT_Ora9DS java.lang.String REMARKS string System Tables 255 255 0 false true false true 1 false true true true
+TYPE_CAT 12 QT_Ora9DS java.lang.String TYPE_CAT string <null> <null> 4000 4000 0 false false false true 1 false true true true
+TYPE_SCHEM 12 QT_Ora9DS java.lang.String TYPE_SCHEM string <null> <null> 4000 4000 0 false false false true 1 false true true true
+TYPE_NAME 12 QT_Ora9DS java.lang.String TYPE_NAME string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SELF_REFERENCING_COL_NAME 12 QT_Ora9DS java.lang.String SELF_REFERENCING_COL_NAME string <null> <null> 4000 4000 0 false false false true 1 false true true true
+REF_GENERATION 12 QT_Ora9DS java.lang.String REF_GENERATION string <null> <null> 4000 4000 0 false false false true 1 false true true true
+ISPHYSICAL -7 QT_Ora9DS java.lang.Boolean ISPHYSICAL boolean System Tables 5 1 0 false true false false 0 true true false false
Modified: branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTables_allTables.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTables_allTables.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTables_allTables.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,113 +1,136 @@
-string string string string string string string string string string boolean
-TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE REMARKS TYPE_CAT TYPE_SCHEM TYPE_NAME SELF_REFERENCING_COL_NAME REF_GENERATION ISPHYSICAL
-<null> QT_Ora9DS XQTDoc.BQTDocTestDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTDoc.choiceTestDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTDoc.defaultValueTestDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTDoc.emptyContentTestDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTDoc.fixedValueTestDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTDoc.mixedContentTestDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTDoc.multipleDocsTestDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTDoc.nillableTestDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTNestedDoc.testExcludeFromDoc DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTNestedDoc.testSimpleNested DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTRecursiveDoc.groupDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTRecursiveDoc.testNested2Document DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTRecursiveDoc.testNestedDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleTempTable DOCUMENT <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.DataTypeElementProperties SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.DataTypeElements SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.DataTypeProperties SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.DataTypes SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.ElementProperties SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.Elements SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.GroupProperties SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.Groups SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.JDBC.ReferenceKeyColumns SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.KeyElements SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.KeyProperties SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.Keys SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.ModelProperties SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.Models SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.ODBC.OA_COLUMNS SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.ODBC.OA_FKEYS SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.ODBC.OA_PROC SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.ODBC.OA_PROCCOLUMNS SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.ODBC.OA_STATISTICS SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.ODBC.OA_TABLES SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.ODBC.OA_TYPES SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.ProcedureParams SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.ProcedureProperties SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.Procedures SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS System.VirtualDatabases SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS BQT1.HugeA TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT1.HugeB TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT1.LargeA TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT1.LargeB TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT1.MediumA TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT1.MediumB TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT1.SmallA TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT1.SmallB TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT2.HugeA TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT2.HugeB TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT2.LargeA TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT2.LargeB TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT2.MediumA TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT2.MediumB TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT2.SmallA TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT2.SmallB TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS VQT.Base.Agg1 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Agg2 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Agg3 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Agg4 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Expr1 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Expr2 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Expr3 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Expr4 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Expr5 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Expr6 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Expr7 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Mapping1 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Mapping2 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Mapping3 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Mapping4 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Order1 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Order2 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Order3 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Order4 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Order5 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U1 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U10 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U11 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U2 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U3 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U4 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U5 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U6 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U7 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U8 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U9 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQT.xqtData TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQT.xqtFullData TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable.MappingClasses.TemporaryTable1 XMLSTAGINGTABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTNestedDoc.testBoundTempTable.MappingClasses.TemporaryTable2 XMLSTAGINGTABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable.MappingClasses.TemporaryTab$ XMLSTAGINGTABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTNestedDoc.testOptimizableTempTable.MappingClasses.moveToRootTe$ XMLSTAGINGTABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTNestedDoc.testRootTempTable.MappingClasses.TemporaryTable1 XMLSTAGINGTABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQTRecursiveDoc.testSimpleTempTable.MappingClasses.TemporaryTable$ XMLSTAGINGTABLE <null> <null> <null> <null> <null> <null> false
-Row Count : 98
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TABLE_CAT 12 <null> java.lang.String TABLE_CAT string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-TABLE_SCHEM 12 <null> java.lang.String TABLE_SCHEM string QT_Ora9DS System.VirtualDatabases 255 255 0 false true false false 0 true true false false
-TABLE_NAME 12 <null> java.lang.String TABLE_NAME string QT_Ora9DS System.Groups 2048 2048 0 false true false false 0 true true false false
-TABLE_TYPE 12 <null> java.lang.String TABLE_TYPE string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-REMARKS 12 <null> java.lang.String REMARKS string QT_Ora9DS System.Groups 255 255 0 false true false true 1 false true true true
-TYPE_CAT 12 <null> java.lang.String TYPE_CAT string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-TYPE_SCHEM 12 <null> java.lang.String TYPE_SCHEM string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-TYPE_NAME 12 <null> java.lang.String TYPE_NAME string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-SELF_REFERENCING_COL_NAME 12 <null> java.lang.String SELF_REFERENCING_COL_NAME string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-REF_GENERATION 12 <null> java.lang.String REF_GENERATION string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-ISPHYSICAL -7 <null> java.lang.Boolean ISPHYSICAL boolean QT_Ora9DS System.Groups 5 1 0 false true false false 0 true true false false
+string string string string string string string string string string boolean
+TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE REMARKS TYPE_CAT TYPE_SCHEM TYPE_NAME SELF_REFERENCING_COL_NAME REF_GENERATION ISPHYSICAL
+QT_Ora9DS XQTDoc BQTDocTestDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTDoc choiceTestDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTDoc defaultValueTestDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTDoc emptyContentTestDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTDoc fixedValueTestDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTDoc mixedContentTestDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTDoc multipleDocsTestDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTDoc nillableTestDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testBoundTempTable DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testRootTempTable DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testSimpleNested DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc groupDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc testNested2Document DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc testNestedDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc testSimpleDocument DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc testSimpleTempTable DOCUMENT <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS System Columns SYSTEM TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS System DataTypes SYSTEM TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS System KeyColumns SYSTEM TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS System Keys SYSTEM TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS System ProcedureParams SYSTEM TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS System Procedures SYSTEM TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS System Properties SYSTEM TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS System ReferenceKeyColumns SYSTEM TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS System Schemas SYSTEM TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS System Tables SYSTEM TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS System VirtualDatabases SYSTEM TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT1 HugeA TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT1 HugeB TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT1 LargeA TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT1 LargeB TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT1 MediumA TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT1 MediumB TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT1 SmallA TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT1 SmallB TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT2 HugeA TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT2 HugeB TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT2 LargeA TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT2 LargeB TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT2 MediumA TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT2 MediumB TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT2 SmallA TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT2 SmallB TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS VQT Base.Agg1 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Agg2 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Agg3 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Agg4 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Expr1 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Expr2 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Expr3 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Expr4 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Expr5 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Expr6 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Expr7 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Mapping1 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Mapping2 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Mapping3 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Mapping4 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Order1 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Order2 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Order3 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Order4 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Order5 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U1 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U10 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U11 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U2 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U3 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U4 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U5 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U6 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U7 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U8 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U9 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQT xqtData TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQT xqtFullData TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTDoc BQTDocTestDocument.MappingClasses.SingleRow XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTDoc choiceTestDocument.MappingClasses.choiceTest XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTDoc defaultValueTestDocument.MappingClasses.wrapper XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTDoc emptyContentTestDocument.MappingClasses.wrapper1 XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTDoc fixedValueTestDocument.MappingClasses.wrapper XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTDoc mixedContentTestDocument.MappingClasses.wrapper3 XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTDoc multipleDocsTestDocument.MappingClasses.multipleDocsTest XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTDoc nillableTestDocument.MappingClasses.wrapper XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testBoundTempTable.MappingClasses.nested XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testBoundTempTable.MappingClasses.nested1 XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testBoundTempTable.MappingClasses.root XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc.MappingClasses.nested XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc.MappingClasses.nested1 XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testExcludeFromDoc.MappingClasses.root XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable.MappingClasses.nested XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable.MappingClasses.nested1 XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable.MappingClasses.root XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testRootTempTable.MappingClasses.nested XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testRootTempTable.MappingClasses.nested1 XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testRootTempTable.MappingClasses.root XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testSimpleNested.MappingClasses.nested XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testSimpleNested.MappingClasses.nested1 XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testSimpleNested.MappingClasses.root XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc groupDocument.MappingClasses.group XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc groupDocument.MappingClasses.group1 XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc groupDocument.MappingClasses.supervisor XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc testNested2Document.MappingClasses.nested XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc testNested2Document.MappingClasses.recurse XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc testNested2Document.MappingClasses.recursiveRoot XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc testNestedDocument.MappingClasses.nested XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc testNestedDocument.MappingClasses.nestedRecurse XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc testNestedDocument.MappingClasses.recurse XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc testNestedDocument.MappingClasses.recursiveRoot XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc testSimpleDocument.MappingClasses.recurse XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc testSimpleDocument.MappingClasses.recursiveRoot XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc testSimpleTempTable.MappingClasses.recurse XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc testSimpleTempTable.MappingClasses.recursiveRoot XMLMAPPINGCLASS <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testBoundTempTable.MappingClasses.TemporaryTable1 XMLSTAGINGTABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testBoundTempTable.MappingClasses.TemporaryTable2 XMLSTAGINGTABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable.MappingClasses.TemporaryTable1 XMLSTAGINGTABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testOptimizableTempTable.MappingClasses.moveToRootTempTable XMLSTAGINGTABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTNestedDoc testRootTempTable.MappingClasses.TemporaryTable1 XMLSTAGINGTABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQTRecursiveDoc testSimpleTempTable.MappingClasses.TemporaryTable1 XMLSTAGINGTABLE <null> <null> <null> <null> <null> <null> false
+Row Count : 121
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TABLE_CAT 12 QT_Ora9DS java.lang.String TABLE_CAT string System Tables 255 255 0 false true false true 1 false true true true
+TABLE_SCHEM 12 QT_Ora9DS java.lang.String TABLE_SCHEM string System Tables 255 255 0 false true false true 1 false true true true
+TABLE_NAME 12 QT_Ora9DS java.lang.String TABLE_NAME string System Tables 255 255 0 false true false false 0 true true false false
+TABLE_TYPE 12 QT_Ora9DS java.lang.String TABLE_TYPE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+REMARKS 12 QT_Ora9DS java.lang.String REMARKS string System Tables 255 255 0 false true false true 1 false true true true
+TYPE_CAT 12 QT_Ora9DS java.lang.String TYPE_CAT string <null> <null> 4000 4000 0 false false false true 1 false true true true
+TYPE_SCHEM 12 QT_Ora9DS java.lang.String TYPE_SCHEM string <null> <null> 4000 4000 0 false false false true 1 false true true true
+TYPE_NAME 12 QT_Ora9DS java.lang.String TYPE_NAME string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SELF_REFERENCING_COL_NAME 12 QT_Ora9DS java.lang.String SELF_REFERENCING_COL_NAME string <null> <null> 4000 4000 0 false false false true 1 false true true true
+REF_GENERATION 12 QT_Ora9DS java.lang.String REF_GENERATION string <null> <null> 4000 4000 0 false false false true 1 false true true true
+ISPHYSICAL -7 QT_Ora9DS java.lang.Boolean ISPHYSICAL boolean System Tables 5 1 0 false true false false 0 true true false false
Modified: branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTables_specificTable.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTables_specificTable.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTables_specificTable.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,16 +1,16 @@
-string string string string string string string string string string boolean
-TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE REMARKS TYPE_CAT TYPE_SCHEM TYPE_NAME SELF_REFERENCING_COL_NAME REF_GENERATION ISPHYSICAL
-<null> QT_Ora9DS System.VirtualDatabases SYSTEM TABLE <null> <null> <null> <null> <null> <null> false
-Row Count : 1
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TABLE_CAT 12 <null> java.lang.String TABLE_CAT string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-TABLE_SCHEM 12 <null> java.lang.String TABLE_SCHEM string QT_Ora9DS System.VirtualDatabases 255 255 0 false true false false 0 true true false false
-TABLE_NAME 12 <null> java.lang.String TABLE_NAME string QT_Ora9DS System.Groups 2048 2048 0 false true false false 0 true true false false
-TABLE_TYPE 12 <null> java.lang.String TABLE_TYPE string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-REMARKS 12 <null> java.lang.String REMARKS string QT_Ora9DS System.Groups 255 255 0 false true false true 1 false true true true
-TYPE_CAT 12 <null> java.lang.String TYPE_CAT string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-TYPE_SCHEM 12 <null> java.lang.String TYPE_SCHEM string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-TYPE_NAME 12 <null> java.lang.String TYPE_NAME string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-SELF_REFERENCING_COL_NAME 12 <null> java.lang.String SELF_REFERENCING_COL_NAME string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-REF_GENERATION 12 <null> java.lang.String REF_GENERATION string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-ISPHYSICAL -7 <null> java.lang.Boolean ISPHYSICAL boolean QT_Ora9DS System.Groups 5 1 0 false true false false 0 true true false false
+string string string string string string string string string string boolean
+TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE REMARKS TYPE_CAT TYPE_SCHEM TYPE_NAME SELF_REFERENCING_COL_NAME REF_GENERATION ISPHYSICAL
+QT_Ora9DS System VirtualDatabases SYSTEM TABLE <null> <null> <null> <null> <null> <null> true
+Row Count : 1
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TABLE_CAT 12 QT_Ora9DS java.lang.String TABLE_CAT string System Tables 255 255 0 false true false true 1 false true true true
+TABLE_SCHEM 12 QT_Ora9DS java.lang.String TABLE_SCHEM string System Tables 255 255 0 false true false true 1 false true true true
+TABLE_NAME 12 QT_Ora9DS java.lang.String TABLE_NAME string System Tables 255 255 0 false true false false 0 true true false false
+TABLE_TYPE 12 QT_Ora9DS java.lang.String TABLE_TYPE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+REMARKS 12 QT_Ora9DS java.lang.String REMARKS string System Tables 255 255 0 false true false true 1 false true true true
+TYPE_CAT 12 QT_Ora9DS java.lang.String TYPE_CAT string <null> <null> 4000 4000 0 false false false true 1 false true true true
+TYPE_SCHEM 12 QT_Ora9DS java.lang.String TYPE_SCHEM string <null> <null> 4000 4000 0 false false false true 1 false true true true
+TYPE_NAME 12 QT_Ora9DS java.lang.String TYPE_NAME string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SELF_REFERENCING_COL_NAME 12 QT_Ora9DS java.lang.String SELF_REFERENCING_COL_NAME string <null> <null> 4000 4000 0 false false false true 1 false true true true
+REF_GENERATION 12 QT_Ora9DS java.lang.String REF_GENERATION string <null> <null> 4000 4000 0 false false false true 1 false true true true
+ISPHYSICAL -7 QT_Ora9DS java.lang.Boolean ISPHYSICAL boolean System Tables 5 1 0 false true false false 0 true true false false
Modified: branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTables_specificTableMultipleTypes.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTables_specificTableMultipleTypes.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTables_specificTableMultipleTypes.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,64 +1,64 @@
-string string string string string string string string string string boolean
-TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE REMARKS TYPE_CAT TYPE_SCHEM TYPE_NAME SELF_REFERENCING_COL_NAME REF_GENERATION ISPHYSICAL
-<null> QT_Ora9DS BQT1.HugeA TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT1.HugeB TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT1.LargeA TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT1.LargeB TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT1.MediumA TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT1.MediumB TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT1.SmallA TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT1.SmallB TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT2.HugeA TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT2.HugeB TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT2.LargeA TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT2.LargeB TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT2.MediumA TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT2.MediumB TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT2.SmallA TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT2.SmallB TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS VQT.Base.Agg1 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Agg2 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Agg3 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Agg4 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Expr1 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Expr2 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Expr3 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Expr4 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Expr5 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Expr6 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Expr7 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Mapping1 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Mapping2 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Mapping3 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Mapping4 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Order1 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Order2 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Order3 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Order4 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Order5 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U1 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U10 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U11 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U2 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U3 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U4 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U5 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U6 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U7 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U8 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U9 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQT.xqtData TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQT.xqtFullData TABLE <null> <null> <null> <null> <null> <null> false
-Row Count : 49
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TABLE_CAT 12 <null> java.lang.String TABLE_CAT string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-TABLE_SCHEM 12 <null> java.lang.String TABLE_SCHEM string QT_Ora9DS System.VirtualDatabases 255 255 0 false true false false 0 true true false false
-TABLE_NAME 12 <null> java.lang.String TABLE_NAME string QT_Ora9DS System.Groups 2048 2048 0 false true false false 0 true true false false
-TABLE_TYPE 12 <null> java.lang.String TABLE_TYPE string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-REMARKS 12 <null> java.lang.String REMARKS string QT_Ora9DS System.Groups 255 255 0 false true false true 1 false true true true
-TYPE_CAT 12 <null> java.lang.String TYPE_CAT string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-TYPE_SCHEM 12 <null> java.lang.String TYPE_SCHEM string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-TYPE_NAME 12 <null> java.lang.String TYPE_NAME string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-SELF_REFERENCING_COL_NAME 12 <null> java.lang.String SELF_REFERENCING_COL_NAME string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-REF_GENERATION 12 <null> java.lang.String REF_GENERATION string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-ISPHYSICAL -7 <null> java.lang.Boolean ISPHYSICAL boolean QT_Ora9DS System.Groups 5 1 0 false true false false 0 true true false false
+string string string string string string string string string string boolean
+TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE REMARKS TYPE_CAT TYPE_SCHEM TYPE_NAME SELF_REFERENCING_COL_NAME REF_GENERATION ISPHYSICAL
+QT_Ora9DS BQT1 HugeA TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT1 HugeB TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT1 LargeA TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT1 LargeB TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT1 MediumA TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT1 MediumB TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT1 SmallA TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT1 SmallB TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT2 HugeA TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT2 HugeB TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT2 LargeA TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT2 LargeB TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT2 MediumA TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT2 MediumB TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT2 SmallA TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT2 SmallB TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS VQT Base.Agg1 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Agg2 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Agg3 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Agg4 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Expr1 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Expr2 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Expr3 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Expr4 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Expr5 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Expr6 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Expr7 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Mapping1 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Mapping2 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Mapping3 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Mapping4 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Order1 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Order2 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Order3 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Order4 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Order5 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U1 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U10 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U11 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U2 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U3 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U4 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U5 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U6 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U7 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U8 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U9 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQT xqtData TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQT xqtFullData TABLE <null> <null> <null> <null> <null> <null> false
+Row Count : 49
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TABLE_CAT 12 QT_Ora9DS java.lang.String TABLE_CAT string System Tables 255 255 0 false true false true 1 false true true true
+TABLE_SCHEM 12 QT_Ora9DS java.lang.String TABLE_SCHEM string System Tables 255 255 0 false true false true 1 false true true true
+TABLE_NAME 12 QT_Ora9DS java.lang.String TABLE_NAME string System Tables 255 255 0 false true false false 0 true true false false
+TABLE_TYPE 12 QT_Ora9DS java.lang.String TABLE_TYPE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+REMARKS 12 QT_Ora9DS java.lang.String REMARKS string System Tables 255 255 0 false true false true 1 false true true true
+TYPE_CAT 12 QT_Ora9DS java.lang.String TYPE_CAT string <null> <null> 4000 4000 0 false false false true 1 false true true true
+TYPE_SCHEM 12 QT_Ora9DS java.lang.String TYPE_SCHEM string <null> <null> 4000 4000 0 false false false true 1 false true true true
+TYPE_NAME 12 QT_Ora9DS java.lang.String TYPE_NAME string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SELF_REFERENCING_COL_NAME 12 QT_Ora9DS java.lang.String SELF_REFERENCING_COL_NAME string <null> <null> 4000 4000 0 false false false true 1 false true true true
+REF_GENERATION 12 QT_Ora9DS java.lang.String REF_GENERATION string <null> <null> 4000 4000 0 false false false true 1 false true true true
+ISPHYSICAL -7 QT_Ora9DS java.lang.Boolean ISPHYSICAL boolean System Tables 5 1 0 false true false false 0 true true false false
Modified: branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTables_specificTableTypes.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTables_specificTableTypes.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTables_specificTableTypes.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,64 +1,64 @@
-string string string string string string string string string string boolean
-TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE REMARKS TYPE_CAT TYPE_SCHEM TYPE_NAME SELF_REFERENCING_COL_NAME REF_GENERATION ISPHYSICAL
-<null> QT_Ora9DS BQT1.HugeA TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT1.HugeB TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT1.LargeA TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT1.LargeB TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT1.MediumA TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT1.MediumB TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT1.SmallA TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT1.SmallB TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT2.HugeA TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT2.HugeB TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT2.LargeA TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT2.LargeB TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT2.MediumA TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT2.MediumB TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT2.SmallA TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS BQT2.SmallB TABLE <null> <null> <null> <null> <null> <null> true
-<null> QT_Ora9DS VQT.Base.Agg1 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Agg2 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Agg3 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Agg4 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Expr1 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Expr2 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Expr3 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Expr4 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Expr5 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Expr6 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Expr7 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Mapping1 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Mapping2 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Mapping3 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Mapping4 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Order1 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Order2 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Order3 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Order4 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Base.Order5 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U1 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U10 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U11 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U2 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U3 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U4 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U5 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U6 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U7 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U8 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS VQT.Union.U9 TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQT.xqtData TABLE <null> <null> <null> <null> <null> <null> false
-<null> QT_Ora9DS XQT.xqtFullData TABLE <null> <null> <null> <null> <null> <null> false
-Row Count : 49
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TABLE_CAT 12 <null> java.lang.String TABLE_CAT string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-TABLE_SCHEM 12 <null> java.lang.String TABLE_SCHEM string QT_Ora9DS System.VirtualDatabases 255 255 0 false true false false 0 true true false false
-TABLE_NAME 12 <null> java.lang.String TABLE_NAME string QT_Ora9DS System.Groups 2048 2048 0 false true false false 0 true true false false
-TABLE_TYPE 12 <null> java.lang.String TABLE_TYPE string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-REMARKS 12 <null> java.lang.String REMARKS string QT_Ora9DS System.Groups 255 255 0 false true false true 1 false true true true
-TYPE_CAT 12 <null> java.lang.String TYPE_CAT string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-TYPE_SCHEM 12 <null> java.lang.String TYPE_SCHEM string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-TYPE_NAME 12 <null> java.lang.String TYPE_NAME string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-SELF_REFERENCING_COL_NAME 12 <null> java.lang.String SELF_REFERENCING_COL_NAME string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-REF_GENERATION 12 <null> java.lang.String REF_GENERATION string QT_Ora9DS <null> 4000 4000 0 false false false true 1 false true true true
-ISPHYSICAL -7 <null> java.lang.Boolean ISPHYSICAL boolean QT_Ora9DS System.Groups 5 1 0 false true false false 0 true true false false
+string string string string string string string string string string boolean
+TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE REMARKS TYPE_CAT TYPE_SCHEM TYPE_NAME SELF_REFERENCING_COL_NAME REF_GENERATION ISPHYSICAL
+QT_Ora9DS BQT1 HugeA TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT1 HugeB TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT1 LargeA TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT1 LargeB TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT1 MediumA TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT1 MediumB TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT1 SmallA TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT1 SmallB TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT2 HugeA TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT2 HugeB TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT2 LargeA TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT2 LargeB TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT2 MediumA TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT2 MediumB TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT2 SmallA TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS BQT2 SmallB TABLE <null> <null> <null> <null> <null> <null> true
+QT_Ora9DS VQT Base.Agg1 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Agg2 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Agg3 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Agg4 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Expr1 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Expr2 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Expr3 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Expr4 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Expr5 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Expr6 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Expr7 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Mapping1 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Mapping2 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Mapping3 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Mapping4 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Order1 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Order2 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Order3 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Order4 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Base.Order5 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U1 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U10 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U11 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U2 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U3 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U4 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U5 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U6 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U7 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U8 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS VQT Union.U9 TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQT xqtData TABLE <null> <null> <null> <null> <null> <null> false
+QT_Ora9DS XQT xqtFullData TABLE <null> <null> <null> <null> <null> <null> false
+Row Count : 49
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TABLE_CAT 12 QT_Ora9DS java.lang.String TABLE_CAT string System Tables 255 255 0 false true false true 1 false true true true
+TABLE_SCHEM 12 QT_Ora9DS java.lang.String TABLE_SCHEM string System Tables 255 255 0 false true false true 1 false true true true
+TABLE_NAME 12 QT_Ora9DS java.lang.String TABLE_NAME string System Tables 255 255 0 false true false false 0 true true false false
+TABLE_TYPE 12 QT_Ora9DS java.lang.String TABLE_TYPE string <null> <null> 4000 4000 0 false false false true 1 false true true true
+REMARKS 12 QT_Ora9DS java.lang.String REMARKS string System Tables 255 255 0 false true false true 1 false true true true
+TYPE_CAT 12 QT_Ora9DS java.lang.String TYPE_CAT string <null> <null> 4000 4000 0 false false false true 1 false true true true
+TYPE_SCHEM 12 QT_Ora9DS java.lang.String TYPE_SCHEM string <null> <null> 4000 4000 0 false false false true 1 false true true true
+TYPE_NAME 12 QT_Ora9DS java.lang.String TYPE_NAME string <null> <null> 4000 4000 0 false false false true 1 false true true true
+SELF_REFERENCING_COL_NAME 12 QT_Ora9DS java.lang.String SELF_REFERENCING_COL_NAME string <null> <null> 4000 4000 0 false false false true 1 false true true true
+REF_GENERATION 12 QT_Ora9DS java.lang.String REF_GENERATION string <null> <null> 4000 4000 0 false false false true 1 false true true true
+ISPHYSICAL -7 QT_Ora9DS java.lang.Boolean ISPHYSICAL boolean System Tables 5 1 0 false true false false 0 true true false false
Modified: branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTypeInfo_TotalNumber.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTypeInfo_TotalNumber.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetTypeInfo_TotalNumber.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,40 +1,40 @@
-string integer integer string string string short boolean short boolean boolean boolean string short short integer integer integer
-TYPE_NAME DATA_TYPE PRECISION LITERAL_PREFIX LITERAL_SUFFIX CREATE_PARAMS NULLABLE CASE_SENSITIVE SEARCHABLE UNSIGNED_ATTRIBUTE FIXED_PREC_SCALE AUTO_INCREMENT LOCAL_TYPE_NAME MINIMUM_SCALE MAXIMUM_SCALE SQL_DATA_TYPE SQL_DATETIME_SUB NUM_PREC_RADIX
-boolean -7 1 {b' } <null> 1 false 3 true true false boolean 0 255 <null> <null> 0
-byte -6 3 <null> <null> <null> 1 false 3 true true false byte 0 255 <null> <null> 0
-long -5 19 <null> <null> <null> 1 false 3 false false false long 0 255 <null> <null> 10
-char 1 1 ' ' <null> 1 false 3 true true false char 0 255 <null> <null> 0
-bigdecimal 2 20 <null> <null> <null> 1 false 3 false true false bigdecimal 0 255 <null> <null> 10
-biginteger 2 19 <null> <null> <null> 1 false 3 false false false biginteger 0 255 <null> <null> 10
-integer 4 10 <null> <null> <null> 1 false 3 false false false integer 0 255 <null> <null> 10
-short 5 5 <null> <null> <null> 1 false 3 false false false short 0 255 <null> <null> 10
-float 7 20 <null> <null> <null> 1 false 3 false false false float 0 255 <null> <null> 10
-double 8 20 <null> <null> <null> 1 false 3 false false false double 0 255 <null> <null> 10
-string 12 4000 ' ' <null> 1 false 3 true true false string 0 255 <null> <null> 0
-xml 2009 2147483647 <null> <null> <null> 1 false 3 true true false xml 0 255 <null> <null> 0
-date 91 10 {d' } <null> 1 false 3 true true false date 0 255 <null> <null> 0
-time 92 8 {t' } <null> 1 false 3 true true false time 0 255 <null> <null> 0
-timestamp 93 29 {ts' } <null> 1 false 3 true true false timestamp 0 255 <null> <null> 0
-object 2000 2147483647 <null> <null> <null> 1 false 3 true true false object 0 255 <null> <null> 0
-blob 2004 2147483647 <null> <null> <null> 1 false 3 true true false blob 0 255 <null> <null> 0
-clob 2005 2147483647 <null> <null> <null> 1 false 3 true true false clob 0 255 <null> <null> 0
-Row Count : 18
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TYPE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS System.DataTypes 4000 4000 0 false false false false 0 true true false false
-DATA_TYPE 4 <null> java.lang.Integer <null> integer QT_Ora9DS System.DataTypes 11 10 0 false false false true 1 false true true true
-PRECISION 4 <null> java.lang.Integer <null> integer QT_Ora9DS System.DataTypes 11 10 0 false false false true 1 false true true true
-LITERAL_PREFIX 12 <null> java.lang.String <null> string QT_Ora9DS System.DataTypes 4000 4000 0 false false false true 1 false true true true
-LITERAL_SUFFIX 12 <null> java.lang.String <null> string QT_Ora9DS System.DataTypes 4000 4000 0 false false false true 1 false true true true
-CREATE_PARAMS 12 <null> java.lang.String <null> string QT_Ora9DS System.DataTypes 4000 4000 0 false false false true 1 false true true true
-NULLABLE 5 <null> java.lang.Short <null> short QT_Ora9DS System.DataTypes 6 5 0 false false false true 1 false true true true
-CASE_SENSITIVE -7 <null> java.lang.Boolean <null> boolean QT_Ora9DS System.DataTypes 5 1 0 false true false false 0 true true false false
-SEARCHABLE 5 <null> java.lang.Short <null> short QT_Ora9DS System.DataTypes 6 5 0 false false false true 1 false true true true
-UNSIGNED_ATTRIBUTE -7 <null> java.lang.Boolean <null> boolean QT_Ora9DS System.DataTypes 5 1 0 false false false true 1 false true true true
-FIXED_PREC_SCALE -7 <null> java.lang.Boolean <null> boolean QT_Ora9DS System.DataTypes 5 1 0 false false false true 1 false true true true
-AUTO_INCREMENT -7 <null> java.lang.Boolean <null> boolean QT_Ora9DS System.DataTypes 5 1 0 false true false false 0 true true true false
-LOCAL_TYPE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS System.DataTypes 4000 4000 0 false false false false 0 true true false false
-MINIMUM_SCALE 5 <null> java.lang.Short <null> short QT_Ora9DS System.DataTypes 6 5 0 false false false true 1 false true true true
-MAXIMUM_SCALE 5 <null> java.lang.Short <null> short QT_Ora9DS System.DataTypes 6 5 0 false false false true 1 false true true true
-SQL_DATA_TYPE 4 <null> java.lang.Integer <null> integer QT_Ora9DS System.DataTypes 11 10 0 false false false true 1 false true true true
-SQL_DATETIME_SUB 4 <null> java.lang.Integer <null> integer QT_Ora9DS System.DataTypes 11 10 0 false false false true 1 false true true true
-NUM_PREC_RADIX 4 <null> java.lang.Integer <null> integer QT_Ora9DS System.DataTypes 11 10 0 false false false false 1 true true false false
+string integer integer string string string short boolean short boolean boolean boolean string short short integer integer integer
+TYPE_NAME DATA_TYPE PRECISION LITERAL_PREFIX LITERAL_SUFFIX CREATE_PARAMS NULLABLE CASE_SENSITIVE SEARCHABLE UNSIGNED_ATTRIBUTE FIXED_PREC_SCALE AUTO_INCREMENT LOCAL_TYPE_NAME MINIMUM_SCALE MAXIMUM_SCALE SQL_DATA_TYPE SQL_DATETIME_SUB NUM_PREC_RADIX
+boolean -7 1 {b' } <null> 1 false 3 true true false boolean 0 255 <null> <null> 0
+byte -6 3 <null> <null> <null> 1 false 3 true true false byte 0 255 <null> <null> 0
+long -5 19 <null> <null> <null> 1 false 3 false false false long 0 255 <null> <null> 10
+char 1 1 ' ' <null> 1 false 3 true true false char 0 255 <null> <null> 0
+bigdecimal 2 20 <null> <null> <null> 1 false 3 false true false bigdecimal 0 255 <null> <null> 10
+biginteger 2 19 <null> <null> <null> 1 false 3 false false false biginteger 0 255 <null> <null> 10
+integer 4 10 <null> <null> <null> 1 false 3 false false false integer 0 255 <null> <null> 10
+short 5 5 <null> <null> <null> 1 false 3 false false false short 0 255 <null> <null> 10
+float 7 20 <null> <null> <null> 1 false 3 false false false float 0 255 <null> <null> 10
+double 8 20 <null> <null> <null> 1 false 3 false false false double 0 255 <null> <null> 10
+string 12 4000 ' ' <null> 1 false 3 true true false string 0 255 <null> <null> 0
+xml 2009 2147483647 <null> <null> <null> 1 false 3 true true false xml 0 255 <null> <null> 0
+date 91 10 {d' } <null> 1 false 3 true true false date 0 255 <null> <null> 0
+time 92 8 {t' } <null> 1 false 3 true true false time 0 255 <null> <null> 0
+timestamp 93 29 {ts' } <null> 1 false 3 true true false timestamp 0 255 <null> <null> 0
+object 2000 2147483647 <null> <null> <null> 1 false 3 true true false object 0 255 <null> <null> 0
+blob 2004 2147483647 <null> <null> <null> 1 false 3 true true false blob 0 255 <null> <null> 0
+clob 2005 2147483647 <null> <null> <null> 1 false 3 true true false clob 0 255 <null> <null> 0
+Row Count : 18
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TYPE_NAME 12 QT_Ora9DS java.lang.String <null> string System DataTypes 4000 4000 0 false false false false 0 true true false false
+DATA_TYPE 4 QT_Ora9DS java.lang.Integer <null> integer System DataTypes 11 10 0 false false false true 1 false true true true
+PRECISION 4 QT_Ora9DS java.lang.Integer <null> integer System DataTypes 11 10 0 false false false true 1 false true true true
+LITERAL_PREFIX 12 QT_Ora9DS java.lang.String <null> string System DataTypes 4000 4000 0 false false false true 1 false true true true
+LITERAL_SUFFIX 12 QT_Ora9DS java.lang.String <null> string System DataTypes 4000 4000 0 false false false true 1 false true true true
+CREATE_PARAMS 12 QT_Ora9DS java.lang.String <null> string System DataTypes 4000 4000 0 false false false true 1 false true true true
+NULLABLE 5 QT_Ora9DS java.lang.Short <null> short System DataTypes 6 5 0 false false false true 1 false true true true
+CASE_SENSITIVE -7 QT_Ora9DS java.lang.Boolean <null> boolean System DataTypes 5 1 0 false true false false 0 true true false false
+SEARCHABLE 5 QT_Ora9DS java.lang.Short <null> short System DataTypes 6 5 0 false false false true 1 false true true true
+UNSIGNED_ATTRIBUTE -7 QT_Ora9DS java.lang.Boolean <null> boolean System DataTypes 5 1 0 false false false true 1 false true true true
+FIXED_PREC_SCALE -7 QT_Ora9DS java.lang.Boolean <null> boolean System DataTypes 5 1 0 false false false true 1 false true true true
+AUTO_INCREMENT -7 QT_Ora9DS java.lang.Boolean <null> boolean System DataTypes 5 1 0 false true false false 0 true true true false
+LOCAL_TYPE_NAME 12 QT_Ora9DS java.lang.String <null> string System DataTypes 4000 4000 0 false false false false 0 true true false false
+MINIMUM_SCALE 5 QT_Ora9DS java.lang.Short <null> short System DataTypes 6 5 0 false false false true 1 false true true true
+MAXIMUM_SCALE 5 QT_Ora9DS java.lang.Short <null> short System DataTypes 6 5 0 false false false true 1 false true true true
+SQL_DATA_TYPE 4 QT_Ora9DS java.lang.Integer <null> integer System DataTypes 11 10 0 false false false true 1 false true true true
+SQL_DATETIME_SUB 4 QT_Ora9DS java.lang.Integer <null> integer System DataTypes 11 10 0 false false false true 1 false true true true
+NUM_PREC_RADIX 4 QT_Ora9DS java.lang.Integer <null> integer System DataTypes 11 10 0 false false false false 1 true true false false
Modified: branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetUDTs.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetUDTs.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetUDTs.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,33 +1,33 @@
-string string string string string string short
-TYPE_CAT TYPE_SCHEM TYPE_NAME CLASS_NAME DATA_TYPE REMARKS BASE_TYPE
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TYPE_CAT 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-TYPE_SCHEM 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-TYPE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-CLASS_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-DATA_TYPE 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-REMARKS 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-BASE_TYPE 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 2 true false false false
-string string string string string string short
-TYPE_CAT TYPE_SCHEM TYPE_NAME CLASS_NAME DATA_TYPE REMARKS BASE_TYPE
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TYPE_CAT 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-TYPE_SCHEM 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-TYPE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-CLASS_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-DATA_TYPE 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-REMARKS 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-BASE_TYPE 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 2 true false false false
-string string string string string string short
-TYPE_CAT TYPE_SCHEM TYPE_NAME CLASS_NAME DATA_TYPE REMARKS BASE_TYPE
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TYPE_CAT 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-TYPE_SCHEM 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-TYPE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-CLASS_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-DATA_TYPE 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-REMARKS 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-BASE_TYPE 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 2 true false false false
+string string string string string string short
+TYPE_CAT TYPE_SCHEM TYPE_NAME CLASS_NAME DATA_TYPE REMARKS BASE_TYPE
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TYPE_CAT 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 2 true false false false
+TYPE_SCHEM 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 2 true false false false
+TYPE_NAME 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 2 true false false false
+CLASS_NAME 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 2 true false false false
+DATA_TYPE 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 2 true false false false
+REMARKS 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 2 true false false false
+BASE_TYPE 5 QT_Ora9DS java.lang.Short <null> short <null> <null> 6 5 0 false false false false 2 true false false false
+string string string string string string short
+TYPE_CAT TYPE_SCHEM TYPE_NAME CLASS_NAME DATA_TYPE REMARKS BASE_TYPE
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TYPE_CAT 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 2 true false false false
+TYPE_SCHEM 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 2 true false false false
+TYPE_NAME 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 2 true false false false
+CLASS_NAME 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 2 true false false false
+DATA_TYPE 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 2 true false false false
+REMARKS 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 2 true false false false
+BASE_TYPE 5 QT_Ora9DS java.lang.Short <null> short <null> <null> 6 5 0 false false false false 2 true false false false
+string string string string string string short
+TYPE_CAT TYPE_SCHEM TYPE_NAME CLASS_NAME DATA_TYPE REMARKS BASE_TYPE
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TYPE_CAT 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 2 true false false false
+TYPE_SCHEM 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 2 true false false false
+TYPE_NAME 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 2 true false false false
+CLASS_NAME 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 2 true false false false
+DATA_TYPE 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 2 true false false false
+REMARKS 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 2 true false false false
+BASE_TYPE 5 QT_Ora9DS java.lang.Short <null> short <null> <null> 6 5 0 false false false false 2 true false false false
Modified: branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetUDTs_specificTypeName.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetUDTs_specificTypeName.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetUDTs_specificTypeName.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,11 +1,11 @@
-string string string string string string short
-TYPE_CAT TYPE_SCHEM TYPE_NAME CLASS_NAME DATA_TYPE REMARKS BASE_TYPE
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TYPE_CAT 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-TYPE_SCHEM 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-TYPE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-CLASS_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-DATA_TYPE 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-REMARKS 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 2 true false false false
-BASE_TYPE 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 2 true false false false
+string string string string string string short
+TYPE_CAT TYPE_SCHEM TYPE_NAME CLASS_NAME DATA_TYPE REMARKS BASE_TYPE
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TYPE_CAT 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 2 true false false false
+TYPE_SCHEM 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 2 true false false false
+TYPE_NAME 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 2 true false false false
+CLASS_NAME 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 2 true false false false
+DATA_TYPE 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 2 true false false false
+REMARKS 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 2 true false false false
+BASE_TYPE 5 QT_Ora9DS java.lang.Short <null> short <null> <null> 6 5 0 false false false false 2 true false false false
Modified: branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetVersionColumns.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetVersionColumns.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testGetVersionColumns.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,36 +1,36 @@
-short string short string integer integer short short
-SCOPE COLUMN_NAME DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH DECIMAL_DIGITS PSEUDO_COLUMN
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-SCOPE 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 0 true false false false
-COLUMN_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 0 true false false false
-DATA_TYPE 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 0 true false false false
-TYPE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 0 true false false false
-COLUMN_SIZE 4 <null> java.lang.Integer <null> integer QT_Ora9DS <null> 11 10 0 false false false false 0 true false false false
-BUFFER_LENGTH 4 <null> java.lang.Integer <null> integer QT_Ora9DS <null> 11 10 0 false false false false 1 true false false false
-DECIMAL_DIGITS 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 0 true false false false
-PSEUDO_COLUMN 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 0 true false false false
-short string short string integer integer short short
-SCOPE COLUMN_NAME DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH DECIMAL_DIGITS PSEUDO_COLUMN
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-SCOPE 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 0 true false false false
-COLUMN_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 0 true false false false
-DATA_TYPE 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 0 true false false false
-TYPE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 0 true false false false
-COLUMN_SIZE 4 <null> java.lang.Integer <null> integer QT_Ora9DS <null> 11 10 0 false false false false 0 true false false false
-BUFFER_LENGTH 4 <null> java.lang.Integer <null> integer QT_Ora9DS <null> 11 10 0 false false false false 1 true false false false
-DECIMAL_DIGITS 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 0 true false false false
-PSEUDO_COLUMN 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 0 true false false false
-short string short string integer integer short short
-SCOPE COLUMN_NAME DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH DECIMAL_DIGITS PSEUDO_COLUMN
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-SCOPE 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 0 true false false false
-COLUMN_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 0 true false false false
-DATA_TYPE 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 0 true false false false
-TYPE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 0 true false false false
-COLUMN_SIZE 4 <null> java.lang.Integer <null> integer QT_Ora9DS <null> 11 10 0 false false false false 0 true false false false
-BUFFER_LENGTH 4 <null> java.lang.Integer <null> integer QT_Ora9DS <null> 11 10 0 false false false false 1 true false false false
-DECIMAL_DIGITS 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 0 true false false false
-PSEUDO_COLUMN 5 <null> java.lang.Short <null> short QT_Ora9DS <null> 6 5 0 false false false false 0 true false false false
+short string short string integer integer short short
+SCOPE COLUMN_NAME DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH DECIMAL_DIGITS PSEUDO_COLUMN
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+SCOPE 5 QT_Ora9DS java.lang.Short <null> short <null> <null> 6 5 0 false false false false 0 true false false false
+COLUMN_NAME 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 0 true false false false
+DATA_TYPE 5 QT_Ora9DS java.lang.Short <null> short <null> <null> 6 5 0 false false false false 0 true false false false
+TYPE_NAME 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 0 true false false false
+COLUMN_SIZE 4 QT_Ora9DS java.lang.Integer <null> integer <null> <null> 11 10 0 false false false false 0 true false false false
+BUFFER_LENGTH 4 QT_Ora9DS java.lang.Integer <null> integer <null> <null> 11 10 0 false false false false 1 true false false false
+DECIMAL_DIGITS 5 QT_Ora9DS java.lang.Short <null> short <null> <null> 6 5 0 false false false false 0 true false false false
+PSEUDO_COLUMN 5 QT_Ora9DS java.lang.Short <null> short <null> <null> 6 5 0 false false false false 0 true false false false
+short string short string integer integer short short
+SCOPE COLUMN_NAME DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH DECIMAL_DIGITS PSEUDO_COLUMN
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+SCOPE 5 QT_Ora9DS java.lang.Short <null> short <null> <null> 6 5 0 false false false false 0 true false false false
+COLUMN_NAME 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 0 true false false false
+DATA_TYPE 5 QT_Ora9DS java.lang.Short <null> short <null> <null> 6 5 0 false false false false 0 true false false false
+TYPE_NAME 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 0 true false false false
+COLUMN_SIZE 4 QT_Ora9DS java.lang.Integer <null> integer <null> <null> 11 10 0 false false false false 0 true false false false
+BUFFER_LENGTH 4 QT_Ora9DS java.lang.Integer <null> integer <null> <null> 11 10 0 false false false false 1 true false false false
+DECIMAL_DIGITS 5 QT_Ora9DS java.lang.Short <null> short <null> <null> 6 5 0 false false false false 0 true false false false
+PSEUDO_COLUMN 5 QT_Ora9DS java.lang.Short <null> short <null> <null> 6 5 0 false false false false 0 true false false false
+short string short string integer integer short short
+SCOPE COLUMN_NAME DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH DECIMAL_DIGITS PSEUDO_COLUMN
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+SCOPE 5 QT_Ora9DS java.lang.Short <null> short <null> <null> 6 5 0 false false false false 0 true false false false
+COLUMN_NAME 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 0 true false false false
+DATA_TYPE 5 QT_Ora9DS java.lang.Short <null> short <null> <null> 6 5 0 false false false false 0 true false false false
+TYPE_NAME 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 0 true false false false
+COLUMN_SIZE 4 QT_Ora9DS java.lang.Integer <null> integer <null> <null> 11 10 0 false false false false 0 true false false false
+BUFFER_LENGTH 4 QT_Ora9DS java.lang.Integer <null> integer <null> <null> 11 10 0 false false false false 1 true false false false
+DECIMAL_DIGITS 5 QT_Ora9DS java.lang.Short <null> short <null> <null> 6 5 0 false false false false 0 true false false false
+PSEUDO_COLUMN 5 QT_Ora9DS java.lang.Short <null> short <null> <null> 6 5 0 false false false false 0 true false false false
Modified: branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testSuperTables.expected
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testSuperTables.expected 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/TestMMDatabaseMetaData/testSuperTables.expected 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,8 +1,8 @@
-string string string string
-TABLE_CAT TABLE_SCHEM TABLE_NAME SUPERTABLE_NAME
-Row Count : 0
-getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
-TABLE_CAT 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 1 true false false false
-TABLE_SCHEM 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 1 true false false false
-TABLE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 0 true false false false
-SUPERTABLE_NAME 12 <null> java.lang.String <null> string QT_Ora9DS <null> 4000 4000 0 false false false false 0 true false false false
+string string string string
+TABLE_CAT TABLE_SCHEM TABLE_NAME SUPERTABLE_NAME
+Row Count : 0
+getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
+TABLE_CAT 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 1 true false false false
+TABLE_SCHEM 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 1 true false false false
+TABLE_NAME 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 0 true false false false
+SUPERTABLE_NAME 12 QT_Ora9DS java.lang.String <null> string <null> <null> 4000 4000 0 false false false false 0 true false false false
Modified: branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Catalogs.metadata.txt
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Catalogs.metadata.txt 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Catalogs.metadata.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,2 +1,2 @@
ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName
-TABLE_CAT 12 string java.lang.String 1 null PartsSupplier null
+TABLE_CAT 12 string java.lang.String 1 null null PartsSupplier
Modified: branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Catalogs.txt
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Catalogs.txt 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Catalogs.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1 +1 @@
-TABLE_CAT[string]
+TABLE_CAT[string]
Modified: branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Columns.metadata.txt
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Columns.metadata.txt 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Columns.metadata.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,24 +1,24 @@
-ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName
-TABLE_CAT 12 string java.lang.String 1 null PartsSupplier null
-TABLE_SCHEM 12 string java.lang.String 0 System.VirtualDatabases PartsSupplier null
-TABLE_NAME 12 string java.lang.String 0 System.Elements PartsSupplier null
-COLUMN_NAME 12 string java.lang.String 0 System.Elements PartsSupplier null
-DATA_TYPE 5 short java.lang.Short 1 null PartsSupplier null
-TYPE_NAME 12 string java.lang.String 0 System.Elements PartsSupplier null
-COLUMN_SIZE 4 integer java.lang.Integer 1 null PartsSupplier null
-BUFFER_LENGTH 12 string java.lang.String 1 null PartsSupplier null
-DECIMAL_DIGITS 4 integer java.lang.Integer 0 System.Elements PartsSupplier null
-NUM_PREC_RADIX 4 integer java.lang.Integer 0 System.Elements PartsSupplier null
-NULLABLE 4 integer java.lang.Integer 1 null PartsSupplier null
-REMARKS 12 string java.lang.String 1 System.Elements PartsSupplier null
-COLUMN_DEF 12 string java.lang.String 1 System.Elements PartsSupplier null
-SQL_DATA_TYPE 12 string java.lang.String 1 null PartsSupplier null
-SQL_DATETIME_SUB 12 string java.lang.String 1 null PartsSupplier null
-CHAR_OCTET_LENGTH 4 integer java.lang.Integer 1 System.Elements PartsSupplier null
-ORDINAL_POSITION 4 integer java.lang.Integer 0 System.Elements PartsSupplier null
-IS_NULLABLE 12 string java.lang.String 1 null PartsSupplier null
-SCOPE_CATALOG 12 string java.lang.String 1 null PartsSupplier null
-SCOPE_SCHEMA 12 string java.lang.String 1 null PartsSupplier null
-SCOPE_TABLE 12 string java.lang.String 1 null PartsSupplier null
-SOURCE_DATA_TYPE 12 string java.lang.String 1 null PartsSupplier null
-IS_AUTOINCREMENT 12 string java.lang.String 1 null PartsSupplier null
+ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName
+TABLE_CAT 12 string java.lang.String 0 Columns System PartsSupplier
+TABLE_SCHEM 12 string java.lang.String 1 Columns System PartsSupplier
+TABLE_NAME 12 string java.lang.String 0 Columns System PartsSupplier
+COLUMN_NAME 12 string java.lang.String 0 Columns System PartsSupplier
+DATA_TYPE 5 short java.lang.Short 1 null null PartsSupplier
+TYPE_NAME 12 string java.lang.String 0 Columns System PartsSupplier
+COLUMN_SIZE 4 integer java.lang.Integer 1 null null PartsSupplier
+BUFFER_LENGTH 12 string java.lang.String 1 null null PartsSupplier
+DECIMAL_DIGITS 4 integer java.lang.Integer 0 Columns System PartsSupplier
+NUM_PREC_RADIX 4 integer java.lang.Integer 0 Columns System PartsSupplier
+NULLABLE 4 integer java.lang.Integer 1 null null PartsSupplier
+REMARKS 12 string java.lang.String 1 Columns System PartsSupplier
+COLUMN_DEF 12 string java.lang.String 1 Columns System PartsSupplier
+SQL_DATA_TYPE 12 string java.lang.String 1 null null PartsSupplier
+SQL_DATETIME_SUB 12 string java.lang.String 1 null null PartsSupplier
+CHAR_OCTET_LENGTH 4 integer java.lang.Integer 1 Columns System PartsSupplier
+ORDINAL_POSITION 4 integer java.lang.Integer 0 Columns System PartsSupplier
+IS_NULLABLE 12 string java.lang.String 1 null null PartsSupplier
+SCOPE_CATALOG 12 string java.lang.String 1 null null PartsSupplier
+SCOPE_SCHEMA 12 string java.lang.String 1 null null PartsSupplier
+SCOPE_TABLE 12 string java.lang.String 1 null null PartsSupplier
+SOURCE_DATA_TYPE 12 string java.lang.String 1 null null PartsSupplier
+IS_AUTOINCREMENT 12 string java.lang.String 1 null null PartsSupplier
Modified: branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Columns.txt
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Columns.txt 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Columns.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,278 +1,141 @@
TABLE_CAT[string] TABLE_SCHEM[string] TABLE_NAME[string] COLUMN_NAME[string] DATA_TYPE[short] TYPE_NAME[string] COLUMN_SIZE[integer] BUFFER_LENGTH[string] DECIMAL_DIGITS[integer] NUM_PREC_RADIX[integer] NULLABLE[integer] REMARKS[string] COLUMN_DEF[string] SQL_DATA_TYPE[string] SQL_DATETIME_SUB[string] CHAR_OCTET_LENGTH[integer] ORDINAL_POSITION[integer] IS_NULLABLE[string] SCOPE_CATALOG[string] SCOPE_SCHEMA[string] SCOPE_TABLE[string] SOURCE_DATA_TYPE[string] IS_AUTOINCREMENT[string]
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.PARTS PART_ID 12 string 4 null 0 10 0 null null null null 4 1 YES null null null null NO
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.PARTS PART_NAME 12 string 255 null 0 10 1 null null null null 255 2 NO null null null null NO
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.PARTS PART_COLOR 12 string 30 null 0 10 1 null null null null 30 3 NO null null null null NO
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.PARTS PART_WEIGHT 12 string 255 null 0 10 1 null null null null 255 4 NO null null null null NO
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.SHIP_VIA SHIPPER_ID 5 short 2 null 0 10 0 null null null null 0 1 YES null null null null NO
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.SHIP_VIA SHIPPER_NAME 12 string 30 null 0 10 1 null null null null 30 2 NO null null null null NO
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.STATUS STATUS_ID 5 short 2 null 0 10 0 null null null null 0 1 YES null null null null NO
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.STATUS STATUS_NAME 12 string 30 null 0 10 1 null null null null 30 2 NO null null null null NO
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER SUPPLIER_ID 12 string 10 null 0 10 0 null null null null 10 1 YES null null null null NO
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER SUPPLIER_NAME 12 string 30 null 0 10 1 null null null null 30 2 NO null null null null NO
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER SUPPLIER_STATUS 5 short 2 null 0 10 1 null null null null 0 3 NO null null null null NO
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER SUPPLIER_CITY 12 string 30 null 0 10 1 null null null null 30 4 NO null null null null NO
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER SUPPLIER_STATE 12 string 2 null 0 10 1 null null null null 2 5 NO null null null null NO
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER_PARTS SUPPLIER_ID 12 string 10 null 0 10 0 null null null null 10 1 YES null null null null NO
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER_PARTS PART_ID 12 string 4 null 0 10 0 null null null null 4 2 YES null null null null NO
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER_PARTS QUANTITY 5 short 3 null 0 10 1 null null null null 0 3 NO null null null null NO
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER_PARTS SHIPPER_ID 5 short 2 null 0 10 1 null null null null 0 4 NO null null null null NO
-null PartsSupplier System.DataTypeElementProperties DataTypeName 12 string 100 null 0 10 0 null null null null 100 1 YES null null null null NO
-null PartsSupplier System.DataTypeElementProperties DataTypeElementName 12 string 255 null 0 10 0 null null null null 255 2 YES null null null null NO
-null PartsSupplier System.DataTypeElementProperties Name 12 string 50 null 0 10 0 null null null null 50 3 YES null null null null NO
-null PartsSupplier System.DataTypeElementProperties Value 12 string 255 null 0 10 0 null null null null 255 4 YES null null null null NO
-null PartsSupplier System.DataTypeElementProperties UID 12 string 50 null 0 10 0 null null null null 50 5 YES null null null null NO
-null PartsSupplier System.DataTypeElements DataTypeName 12 string 100 null 0 10 0 null null null null 100 1 YES null null null null NO
-null PartsSupplier System.DataTypeElements Name 12 string 255 null 0 10 0 null null null null 255 2 YES null null null null NO
-null PartsSupplier System.DataTypeElements Position 4 integer 10 null 0 10 0 null null null null 10 3 YES null null null null NO
-null PartsSupplier System.DataTypeElements Scale 4 integer 10 null 0 10 0 null null null null 10 4 YES null null null null NO
-null PartsSupplier System.DataTypeElements ElementLength 4 integer 10 null 0 10 0 null null null null 10 5 YES null null null null NO
-null PartsSupplier System.DataTypeElements UID 12 string 50 null 0 10 0 null null null null 50 6 YES null null null null NO
-null PartsSupplier System.DataTypeProperties DataType 12 string 100 null 0 10 0 null null null null 100 1 YES null null null null NO
-null PartsSupplier System.DataTypeProperties Name 12 string 50 null 0 10 0 null null null null 50 2 YES null null null null NO
-null PartsSupplier System.DataTypeProperties Value 12 string 255 null 0 10 0 null null null null 255 3 YES null null null null NO
-null PartsSupplier System.DataTypeProperties UID 12 string 50 null 0 10 0 null null null null 50 4 YES null null null null NO
-null PartsSupplier System.DataTypes Name 12 string 100 null 0 10 0 null null null null 100 1 YES null null null null NO
-null PartsSupplier System.DataTypes IsStandard -7 boolean 1 null 0 10 1 null null null null 1 2 NO null null null null NO
-null PartsSupplier System.DataTypes IsPhysical -7 boolean 1 null 0 10 1 null null null null 1 3 NO null null null null NO
-null PartsSupplier System.DataTypes TypeName 12 string 100 null 0 10 0 null null null null 100 4 YES null null null null NO
-null PartsSupplier System.DataTypes JavaClass 12 string 500 null 0 10 0 null null null null 500 5 YES null null null null NO
-null PartsSupplier System.DataTypes Scale 4 integer 10 null 0 10 1 null (0) null null 10 6 NO null null null null NO
-null PartsSupplier System.DataTypes TypeLength 4 integer 10 null 0 10 0 null (0) null null 10 7 YES null null null null NO
-null PartsSupplier System.DataTypes NullType 12 string 20 null 0 10 0 null null null null 20 8 YES null null null null NO
-null PartsSupplier System.DataTypes IsSigned -7 boolean 1 null 0 10 0 null ('0') null null 1 9 YES null null null null NO
-null PartsSupplier System.DataTypes IsAutoIncremented -7 boolean 1 null 0 10 0 null ('0') null null 1 10 YES null null null null NO
-null PartsSupplier System.DataTypes IsCaseSensitive -7 boolean 1 null 0 10 0 null ('0') null null 1 11 YES null null null null NO
-null PartsSupplier System.DataTypes Precision 4 integer 10 null 0 10 0 null null null null 10 12 YES null null null null NO
-null PartsSupplier System.DataTypes Radix 4 integer 10 null 0 10 1 null null null null 10 13 NO null null null null NO
-null PartsSupplier System.DataTypes SearchType 12 string 20 null 0 10 0 null null null null 20 14 YES null null null null NO
-null PartsSupplier System.DataTypes UID 12 string 50 null 0 10 0 null null null null 50 15 YES null null null null NO
-null PartsSupplier System.DataTypes RuntimeType 12 string 64 null 0 10 1 null null null null 64 16 NO null null null null NO
-null PartsSupplier System.DataTypes BaseType 12 string 64 null 0 10 1 null null null null 64 17 NO null null null null NO
-null PartsSupplier System.DataTypes Description 12 string 255 null 0 10 1 null null null null 255 18 NO null null null null NO
-null PartsSupplier System.ElementProperties ModelName 12 string 255 null 0 10 0 null null null null 255 1 YES null null null null NO
-null PartsSupplier System.ElementProperties GroupFullName 12 string 2048 null 0 10 0 null null null null 2048 2 YES null null null null NO
-null PartsSupplier System.ElementProperties ElementName 12 string 255 null 0 10 0 null null null null 255 3 YES null null null null NO
-null PartsSupplier System.ElementProperties Name 12 string 255 null 0 10 0 null null null null 255 4 YES null null null null NO
-null PartsSupplier System.ElementProperties Value 12 string 255 null 0 10 0 null null null null 255 5 YES null null null null NO
-null PartsSupplier System.ElementProperties GroupName 12 string 255 null 0 10 0 null null null null 255 6 YES null null null null NO
-null PartsSupplier System.ElementProperties ElementUpperName 12 string 255 null 0 10 0 null null null null 255 7 YES null null null null NO
-null PartsSupplier System.ElementProperties GroupUpperName 12 string 255 null 0 10 0 null null null null 255 8 YES null null null null NO
-null PartsSupplier System.ElementProperties UID 12 string 50 null 0 10 0 null null null null 50 9 YES null null null null NO
-null PartsSupplier System.Elements ModelName 12 string 255 null 0 10 0 null null null null 255 1 YES null null null null NO
-null PartsSupplier System.Elements GroupName 12 string 255 null 0 10 0 null null null null 255 2 YES null null null null NO
-null PartsSupplier System.Elements GroupFullName 12 string 2048 null 0 10 0 null null null null 2048 3 YES null null null null NO
-null PartsSupplier System.Elements Name 12 string 255 null 0 10 0 null null null null 255 4 YES null null null null NO
-null PartsSupplier System.Elements Position 4 integer 10 null 0 10 0 null null null null 10 5 YES null null null null NO
-null PartsSupplier System.Elements NameInSource 12 string 255 null 0 10 1 null null null null 255 6 NO null null null null NO
-null PartsSupplier System.Elements DataType 12 string 100 null 0 10 0 null null null null 100 7 YES null null null null NO
-null PartsSupplier System.Elements Scale 4 integer 10 null 0 10 0 null null null null 10 8 YES null null null null NO
-null PartsSupplier System.Elements ElementLength 4 integer 10 null 0 10 0 null null null null 10 9 YES null null null null NO
-null PartsSupplier System.Elements IsLengthFixed -7 boolean 1 null 0 10 0 null null null null 1 10 YES null null null null NO
-null PartsSupplier System.Elements SupportsSelect -7 boolean 1 null 0 10 0 null null null null 1 11 YES null null null null NO
-null PartsSupplier System.Elements SupportsUpdates -7 boolean 1 null 0 10 0 null null null null 1 12 YES null null null null NO
-null PartsSupplier System.Elements IsCaseSensitive -7 boolean 1 null 0 10 0 null null null null 1 13 YES null null null null NO
-null PartsSupplier System.Elements IsSigned -7 boolean 1 null 0 10 0 null null null null 1 14 YES null null null null NO
-null PartsSupplier System.Elements IsCurrency -7 boolean 1 null 0 10 0 null null null null 1 15 YES null null null null NO
-null PartsSupplier System.Elements IsAutoIncremented -7 boolean 1 null 0 10 0 null null null null 1 16 YES null null null null NO
-null PartsSupplier System.Elements NullType 12 string 20 null 0 10 0 null null null null 20 17 YES null null null null NO
-null PartsSupplier System.Elements MinRange 12 string 50 null 0 10 1 null null null null 50 18 NO null null null null NO
-null PartsSupplier System.Elements MaxRange 12 string 50 null 0 10 1 null null null null 50 19 NO null null null null NO
-null PartsSupplier System.Elements SearchType 12 string 20 null 0 10 0 null null null null 20 20 YES null null null null NO
-null PartsSupplier System.Elements Format 12 string 255 null 0 10 1 null null null null 255 21 NO null null null null NO
-null PartsSupplier System.Elements DefaultValue 12 string 255 null 0 10 1 null null null null 255 22 NO null null null null NO
-null PartsSupplier System.Elements JavaClass 12 string 500 null 0 10 0 null null null null 500 23 YES null null null null NO
-null PartsSupplier System.Elements Precision 4 integer 10 null 0 10 0 null null null null 10 24 YES null null null null NO
-null PartsSupplier System.Elements CharOctetLength 4 integer 10 null 0 10 1 null null null null 10 25 NO null null null null NO
-null PartsSupplier System.Elements Radix 4 integer 10 null 0 10 0 null null null null 10 26 YES null null null null NO
-null PartsSupplier System.Elements GroupUpperName 12 string 255 null 0 10 0 null null null null 255 27 YES null null null null NO
-null PartsSupplier System.Elements UpperName 12 string 255 null 0 10 0 null null null null 255 28 YES null null null null NO
-null PartsSupplier System.Elements UID 12 string 50 null 0 10 0 null null null null 50 29 YES null null null null NO
-null PartsSupplier System.Elements Description 12 string 255 null 0 10 1 null null null null 255 30 NO null null null null NO
-null PartsSupplier System.GroupProperties ModelName 12 string 255 null 0 10 0 null null null null 255 1 YES null null null null NO
-null PartsSupplier System.GroupProperties GroupFullName 12 string 2048 null 0 10 0 null null null null 2048 2 YES null null null null NO
-null PartsSupplier System.GroupProperties Name 12 string 255 null 0 10 0 null null null null 255 3 YES null null null null NO
-null PartsSupplier System.GroupProperties Value 12 string 255 null 0 10 0 null null null null 255 4 YES null null null null NO
-null PartsSupplier System.GroupProperties GroupName 12 string 255 null 0 10 0 null null null null 255 5 YES null null null null NO
-null PartsSupplier System.GroupProperties GroupUpperName 12 string 255 null 0 10 0 null null null null 255 6 YES null null null null NO
-null PartsSupplier System.GroupProperties UID 12 string 50 null 0 10 0 null null null null 50 7 YES null null null null NO
-null PartsSupplier System.Groups ModelName 12 string 255 null 0 10 0 null null null null 255 1 YES null null null null NO
-null PartsSupplier System.Groups FullName 12 string 2048 null 0 10 0 null null null null 2048 2 YES null null null null NO
-null PartsSupplier System.Groups Name 12 string 255 null 0 10 0 null null null null 255 3 YES null null null null NO
-null PartsSupplier System.Groups Type 12 string 20 null 0 10 0 null null null null 20 4 YES null null null null NO
-null PartsSupplier System.Groups NameInSource 12 string 255 null 0 10 1 null null null null 255 5 NO null null null null NO
-null PartsSupplier System.Groups IsPhysical -7 boolean 1 null 0 10 0 null null null null 1 6 YES null null null null NO
-null PartsSupplier System.Groups UpperName 12 string 255 null 0 10 0 null null null null 255 7 YES null null null null NO
-null PartsSupplier System.Groups SupportsUpdates -7 boolean 1 null 0 10 0 null null null null 1 8 YES null null null null NO
-null PartsSupplier System.Groups UID 12 string 50 null 0 10 0 null null null null 50 9 YES null null null null NO
-null PartsSupplier System.Groups Cardinality 4 integer 10 null 0 10 0 null null null null 10 10 YES null null null null NO
-null PartsSupplier System.Groups Description 12 string 255 null 0 10 1 null null null null 255 11 NO null null null null NO
-null PartsSupplier System.Groups IsSystem -7 boolean 1 null 0 10 1 null null null null 1 12 NO null null null null NO
-null PartsSupplier System.Groups IsMaterialized -7 boolean 1 null 0 10 0 null null null null 0 13 YES null null null null NO
-null PartsSupplier System.JDBC.ReferenceKeyColumns PKTABLE_CAT 12 string 1 null 0 10 1 null null null null 1 1 NO null null null null NO
-null PartsSupplier System.JDBC.ReferenceKeyColumns PKTABLE_SCHEM 12 string 255 null 0 10 1 null null null null 255 2 NO null null null null NO
-null PartsSupplier System.JDBC.ReferenceKeyColumns PKTABLE_NAME 12 string 255 null 0 10 1 null null null null 255 3 NO null null null null NO
-null PartsSupplier System.JDBC.ReferenceKeyColumns PKCOLUMN_NAME 12 string 255 null 0 10 1 null null null null 255 4 NO null null null null NO
-null PartsSupplier System.JDBC.ReferenceKeyColumns FKTABLE_CAT 12 string 1 null 0 10 1 null null null null 1 5 NO null null null null NO
-null PartsSupplier System.JDBC.ReferenceKeyColumns FKTABLE_SCHEM 12 string 255 null 0 10 1 null null null null 255 6 NO null null null null NO
-null PartsSupplier System.JDBC.ReferenceKeyColumns FKTABLE_NAME 12 string 255 null 0 10 1 null null null null 255 7 NO null null null null NO
-null PartsSupplier System.JDBC.ReferenceKeyColumns FKCOLUMN_NAME 12 string 255 null 0 10 1 null null null null 255 8 NO null null null null NO
-null PartsSupplier System.JDBC.ReferenceKeyColumns KEY_SEQ 5 short 5 null 0 10 1 null null null null 5 9 NO null null null null NO
-null PartsSupplier System.JDBC.ReferenceKeyColumns UPDATE_RULE 4 integer 10 null 0 10 1 null null null null 10 10 NO null null null null NO
-null PartsSupplier System.JDBC.ReferenceKeyColumns DELETE_RULE 4 integer 10 null 0 10 1 null null null null 10 11 NO null null null null NO
-null PartsSupplier System.JDBC.ReferenceKeyColumns FK_NAME 12 string 255 null 0 10 1 null null null null 255 12 NO null null null null NO
-null PartsSupplier System.JDBC.ReferenceKeyColumns PK_NAME 12 string 255 null 0 10 1 null null null null 255 13 NO null null null null NO
-null PartsSupplier System.JDBC.ReferenceKeyColumns DEFERRABILITY 4 integer 10 null 0 10 1 null null null null 10 14 NO null null null null NO
-null PartsSupplier System.KeyElements ModelName 12 string 255 null 0 10 0 null null null null 255 1 YES null null null null NO
-null PartsSupplier System.KeyElements GroupFullName 12 string 2048 null 0 10 0 null null null null 2048 2 YES null null null null NO
-null PartsSupplier System.KeyElements Name 12 string 255 null 0 10 0 null null null null 255 3 YES null null null null NO
-null PartsSupplier System.KeyElements KeyName 12 string 255 null 0 10 1 null null null null 255 4 NO null null null null NO
-null PartsSupplier System.KeyElements KeyType 12 string 20 null 0 10 0 null null null null 20 5 YES null null null null NO
-null PartsSupplier System.KeyElements GroupName 12 string 255 null 0 10 0 null null null null 255 6 YES null null null null NO
-null PartsSupplier System.KeyElements GroupUpperName 12 string 255 null 0 10 0 null null null null 255 7 YES null null null null NO
-null PartsSupplier System.KeyElements RefKeyUID 12 string 50 null 0 10 1 null null null null 50 8 NO null null null null NO
-null PartsSupplier System.KeyElements UID 12 string 50 null 0 10 0 null null null null 50 9 YES null null null null NO
-null PartsSupplier System.KeyElements Position 4 integer 10 null 0 10 1 null null null null 10 10 NO null null null null NO
-null PartsSupplier System.KeyProperties ModelName 12 string 255 null 0 10 0 null null null null 255 1 YES null null null null NO
-null PartsSupplier System.KeyProperties GroupFullName 12 string 2048 null 0 10 0 null null null null 2048 2 YES null null null null NO
-null PartsSupplier System.KeyProperties KeyName 12 string 255 null 0 10 1 null null null null 255 3 NO null null null null NO
-null PartsSupplier System.KeyProperties Name 12 string 255 null 0 10 1 null null null null 255 4 NO null null null null NO
-null PartsSupplier System.KeyProperties Value 12 string 255 null 0 10 1 null null null null 255 5 NO null null null null NO
-null PartsSupplier System.KeyProperties GroupName 12 string 255 null 0 10 0 null null null null 255 6 YES null null null null NO
-null PartsSupplier System.KeyProperties GroupUpperName 12 string 255 null 0 10 0 null null null null 255 7 YES null null null null NO
-null PartsSupplier System.KeyProperties UID 12 string 50 null 0 10 0 null null null null 50 8 YES null null null null NO
-null PartsSupplier System.Keys ModelName 12 string 255 null 0 10 0 null null null null 255 1 YES null null null null NO
-null PartsSupplier System.Keys GroupFullName 12 string 2048 null 0 10 0 null null null null 2048 2 YES null null null null NO
-null PartsSupplier System.Keys Name 12 string 255 null 0 10 0 null null null null 255 3 YES null null null null NO
-null PartsSupplier System.Keys Description 12 string 255 null 0 10 1 null null null null 255 4 NO null null null null NO
-null PartsSupplier System.Keys NameInSource 12 string 255 null 0 10 1 null null null null 255 5 NO null null null null NO
-null PartsSupplier System.Keys Type 12 string 20 null 0 10 0 null null null null 20 6 YES null null null null NO
-null PartsSupplier System.Keys IsIndexed -7 boolean 1 null 0 10 0 null null null null 1 7 YES null null null null NO
-null PartsSupplier System.Keys GroupName 12 string 255 null 0 10 0 null null null null 255 8 YES null null null null NO
-null PartsSupplier System.Keys GroupUpperName 12 string 255 null 0 10 0 null null null null 255 9 YES null null null null NO
-null PartsSupplier System.Keys RefKeyUID 12 string 50 null 0 10 1 null null null null 50 10 NO null null null null NO
-null PartsSupplier System.Keys UID 12 string 50 null 0 10 0 null null null null 50 11 YES null null null null NO
-null PartsSupplier System.ModelProperties ModelName 12 string 255 null 0 10 0 null null null null 255 1 YES null null null null NO
-null PartsSupplier System.ModelProperties Name 12 string 255 null 0 10 0 null null null null 255 2 YES null null null null NO
-null PartsSupplier System.ModelProperties Value 12 string 255 null 0 10 0 null null null null 255 3 YES null null null null NO
-null PartsSupplier System.ModelProperties UID 12 string 50 null 0 10 0 null null null null 50 4 YES null null null null NO
-null PartsSupplier System.Models Name 12 string 255 null 0 10 0 null null null null 255 1 YES null null null null NO
-null PartsSupplier System.Models IsPhysical -7 boolean 1 null 0 10 0 null null null null 1 2 YES null null null null NO
-null PartsSupplier System.Models SupportsWhereAll -7 boolean 1 null 0 10 0 null null null null 1 3 YES null null null null NO
-null PartsSupplier System.Models SupportsOrderBy -7 boolean 1 null 0 10 0 null null null null 1 4 YES null null null null NO
-null PartsSupplier System.Models SupportsJoin -7 boolean 1 null 0 10 0 null null null null 1 5 YES null null null null NO
-null PartsSupplier System.Models SupportsDistinct -7 boolean 1 null 0 10 0 null null null null 1 6 YES null null null null NO
-null PartsSupplier System.Models SupportsOuterJoin -7 boolean 1 null 0 10 0 null null null null 1 7 YES null null null null NO
-null PartsSupplier System.Models MaxSetSize 4 integer 10 null 0 10 0 null null null null 10 8 YES null null null null NO
-null PartsSupplier System.Models UID 12 string 50 null 0 10 0 null null null null 50 9 YES null null null null NO
-null PartsSupplier System.Models Description 12 string 255 null 0 10 1 null null null null 255 10 NO null null null null NO
-null PartsSupplier System.Models PrimaryMetamodelURI 12 string 255 null 0 10 0 null null null null 255 11 YES null null null null NO
-null PartsSupplier System.ODBC.OA_COLUMNS TABLE_QUALIFIER 12 string 128 null 0 10 1 null null null null 128 1 NO null null null null NO
-null PartsSupplier System.ODBC.OA_COLUMNS TABLE_OWNER 12 string 128 null 0 10 1 null null null null 128 2 NO null null null null NO
-null PartsSupplier System.ODBC.OA_COLUMNS TABLE_NAME 12 string 128 null 0 10 1 null null null null 128 3 NO null null null null NO
-null PartsSupplier System.ODBC.OA_COLUMNS COLUMN_NAME 12 string 128 null 0 10 1 null null null null 128 4 NO null null null null NO
-null PartsSupplier System.ODBC.OA_COLUMNS DATA_TYPE 5 short 5 null 0 10 1 null null null null 5 5 NO null null null null NO
-null PartsSupplier System.ODBC.OA_COLUMNS TYPE_NAME 12 string 100 null 0 10 1 null null null null 100 6 NO null null null null NO
-null PartsSupplier System.ODBC.OA_COLUMNS OA_LENGTH 4 integer 10 null 0 10 1 null null null null 10 7 NO null null null null NO
-null PartsSupplier System.ODBC.OA_COLUMNS OA_PRECISION 4 integer 10 null 0 10 1 null null null null 10 8 NO null null null null NO
-null PartsSupplier System.ODBC.OA_COLUMNS OA_SCALE 4 integer 10 null 0 10 1 null null null null 10 9 NO null null null null NO
-null PartsSupplier System.ODBC.OA_COLUMNS OA_RADIX 4 integer 10 null 0 10 1 null null null null 10 10 NO null null null null NO
-null PartsSupplier System.ODBC.OA_COLUMNS OA_NULLABLE 5 short 5 null 0 10 1 null null null null 5 11 NO null null null null NO
-null PartsSupplier System.ODBC.OA_COLUMNS OA_SCOPE 5 short 5 null 0 10 1 null null null null 5 12 NO null null null null NO
-null PartsSupplier System.ODBC.OA_COLUMNS PSEUDO_COLUMN 5 short 5 null 0 10 1 null null null null 5 13 NO null null null null NO
-null PartsSupplier System.ODBC.OA_COLUMNS OA_COLUMNTYPE 5 short 5 null 0 10 1 null null null null 5 14 NO null null null null NO
-null PartsSupplier System.ODBC.OA_COLUMNS REMARKS 12 string 254 null 0 10 1 null null null null 254 15 NO null null null null NO
-null PartsSupplier System.ODBC.OA_FKEYS PKTABLE_QUALIFIER 12 string 128 null 0 10 1 null null null null 128 1 NO null null null null NO
-null PartsSupplier System.ODBC.OA_FKEYS PKTABLE_OWNER 12 string 128 null 0 10 1 null null null null 128 2 NO null null null null NO
-null PartsSupplier System.ODBC.OA_FKEYS PKTABLE_NAME 12 string 128 null 0 10 1 null null null null 128 3 NO null null null null NO
-null PartsSupplier System.ODBC.OA_FKEYS PKCOLUMN_NAME 12 string 128 null 0 10 1 null null null null 128 4 NO null null null null NO
-null PartsSupplier System.ODBC.OA_FKEYS FKTABLE_QUALIFIER 12 string 128 null 0 10 1 null null null null 128 5 NO null null null null NO
-null PartsSupplier System.ODBC.OA_FKEYS FKTABLE_OWNER 12 string 128 null 0 10 1 null null null null 128 6 NO null null null null NO
-null PartsSupplier System.ODBC.OA_FKEYS FKTABLE_NAME 12 string 128 null 0 10 1 null null null null 128 7 NO null null null null NO
-null PartsSupplier System.ODBC.OA_FKEYS FKCOLUMN_NAME 12 string 128 null 0 10 1 null null null null 128 8 NO null null null null NO
-null PartsSupplier System.ODBC.OA_FKEYS KEY_SEQ 5 short 5 null 0 10 1 null null null null 5 9 NO null null null null NO
-null PartsSupplier System.ODBC.OA_FKEYS UPDATE_RULE 5 short 5 null 0 10 1 null null null null 5 10 NO null null null null NO
-null PartsSupplier System.ODBC.OA_FKEYS DELETE_RULE 5 short 5 null 0 10 1 null null null null 5 11 NO null null null null NO
-null PartsSupplier System.ODBC.OA_FKEYS FK_NAME 12 string 128 null 0 10 1 null null null null 128 12 NO null null null null NO
-null PartsSupplier System.ODBC.OA_FKEYS PK_NAME 12 string 128 null 0 10 1 null null null null 128 13 NO null null null null NO
-null PartsSupplier System.ODBC.OA_PROC OA_QUALIFIER 12 string 128 null 0 10 1 null null null null 128 1 NO null null null null NO
-null PartsSupplier System.ODBC.OA_PROC OA_OWNER 12 string 128 null 0 10 1 null null null null 128 2 NO null null null null NO
-null PartsSupplier System.ODBC.OA_PROC OA_NAME 12 string 128 null 0 10 1 null null null null 128 3 NO null null null null NO
-null PartsSupplier System.ODBC.OA_PROC NUM_INPUT_PARAMS 4 integer 10 null 0 10 1 null null null null 10 4 NO null null null null NO
-null PartsSupplier System.ODBC.OA_PROC NUM_OUTPUT_PARAMS 4 integer 10 null 0 10 1 null null null null 10 5 NO null null null null NO
-null PartsSupplier System.ODBC.OA_PROC NUM_RESULT_SETS 4 integer 10 null 0 10 1 null null null null 10 6 NO null null null null NO
-null PartsSupplier System.ODBC.OA_PROC REMARKS 12 string 254 null 0 10 1 null null null null 254 7 NO null null null null NO
-null PartsSupplier System.ODBC.OA_PROC PROCEDURE_TYPE 5 short 5 null 0 10 1 null null null null 5 8 NO null null null null NO
-null PartsSupplier System.ODBC.OA_PROCCOLUMNS OA_QUALIFIER 12 string 128 null 0 10 1 null null null null 128 1 NO null null null null NO
-null PartsSupplier System.ODBC.OA_PROCCOLUMNS OA_OWNER 12 string 128 null 0 10 1 null null null null 128 2 NO null null null null NO
-null PartsSupplier System.ODBC.OA_PROCCOLUMNS OA_NAME 12 string 128 null 0 10 1 null null null null 128 3 NO null null null null NO
-null PartsSupplier System.ODBC.OA_PROCCOLUMNS COLUMN_NAME 12 string 128 null 0 10 1 null null null null 128 4 NO null null null null NO
-null PartsSupplier System.ODBC.OA_PROCCOLUMNS OA_COLUMNTYPE 5 short 5 null 0 10 1 null null null null 5 5 NO null null null null NO
-null PartsSupplier System.ODBC.OA_PROCCOLUMNS DATA_TYPE 5 short 5 null 0 10 1 null null null null 5 6 NO null null null null NO
-null PartsSupplier System.ODBC.OA_PROCCOLUMNS TYPE_NAME 12 string 100 null 0 10 1 null null null null 100 7 NO null null null null NO
-null PartsSupplier System.ODBC.OA_PROCCOLUMNS OA_PRECISION 4 integer 10 null 0 10 1 null null null null 10 8 NO null null null null NO
-null PartsSupplier System.ODBC.OA_PROCCOLUMNS OA_LENGTH 4 integer 10 null 0 10 1 null null null null 10 9 NO null null null null NO
-null PartsSupplier System.ODBC.OA_PROCCOLUMNS OA_RADIX 4 integer 10 null 0 10 1 null null null null 10 10 NO null null null null NO
-null PartsSupplier System.ODBC.OA_PROCCOLUMNS OA_SCALE 4 integer 10 null 0 10 1 null null null null 10 11 NO null null null null NO
-null PartsSupplier System.ODBC.OA_PROCCOLUMNS OA_NULLABLE 5 short 5 null 0 10 1 null null null null 5 12 NO null null null null NO
-null PartsSupplier System.ODBC.OA_PROCCOLUMNS OA_SCOPE 5 short 5 null 0 10 1 null null null null 5 13 NO null null null null NO
-null PartsSupplier System.ODBC.OA_PROCCOLUMNS REMARKS 12 string 254 null 0 10 1 null null null null 254 14 NO null null null null NO
-null PartsSupplier System.ODBC.OA_STATISTICS TABLE_QUALIFIER 12 string 128 null 0 10 1 null null null null 128 1 NO null null null null NO
-null PartsSupplier System.ODBC.OA_STATISTICS TABLE_OWNER 12 string 128 null 0 10 1 null null null null 128 2 NO null null null null NO
-null PartsSupplier System.ODBC.OA_STATISTICS TABLE_NAME 12 string 128 null 0 10 1 null null null null 128 3 NO null null null null NO
-null PartsSupplier System.ODBC.OA_STATISTICS NON_UNIQUE 5 short 5 null 0 10 1 null null null null 5 4 NO null null null null NO
-null PartsSupplier System.ODBC.OA_STATISTICS INDEX_QUALIFIER 12 string 128 null 0 10 1 null null null null 128 5 NO null null null null NO
-null PartsSupplier System.ODBC.OA_STATISTICS INDEX_NAME 12 string 128 null 0 10 1 null null null null 128 6 NO null null null null NO
-null PartsSupplier System.ODBC.OA_STATISTICS OA_TYPE 5 short 5 null 0 10 1 null null null null 5 7 NO null null null null NO
-null PartsSupplier System.ODBC.OA_STATISTICS SEQ_IN_INDEX 5 short 5 null 0 10 1 null null null null 5 8 NO null null null null NO
-null PartsSupplier System.ODBC.OA_STATISTICS COLUMN_NAME 12 string 128 null 0 10 1 null null null null 128 9 NO null null null null NO
-null PartsSupplier System.ODBC.OA_STATISTICS OA_COLLATION 12 string 128 null 0 10 1 null null null null 128 10 NO null null null null NO
-null PartsSupplier System.ODBC.OA_STATISTICS OA_CARDINALITY 12 string 10 null 0 10 1 null null null null 10 11 NO null null null null NO
-null PartsSupplier System.ODBC.OA_STATISTICS OA_PAGES 12 string 10 null 0 10 1 null null null null 10 12 NO null null null null NO
-null PartsSupplier System.ODBC.OA_STATISTICS FILTER_CONDITIONS 12 string 128 null 0 10 1 null null null null 128 13 NO null null null null NO
-null PartsSupplier System.ODBC.OA_TABLES TABLE_QUALIFIER 12 string 128 null 0 10 1 null null null null 128 1 NO null null null null NO
-null PartsSupplier System.ODBC.OA_TABLES TABLE_OWNER 12 string 128 null 0 10 1 null null null null 128 2 NO null null null null NO
-null PartsSupplier System.ODBC.OA_TABLES TABLE_NAME 12 string 128 null 0 10 1 null null null null 128 3 NO null null null null NO
-null PartsSupplier System.ODBC.OA_TABLES TABLE_TYPE 12 string 128 null 0 10 1 null null null null 128 4 NO null null null null NO
-null PartsSupplier System.ODBC.OA_TABLES REMARKS 12 string 254 null 0 10 1 null null null null 254 5 NO null null null null NO
-null PartsSupplier System.ODBC.OA_TYPES TYPE_NAME 12 string 100 null 0 10 1 null null null null 100 1 NO null null null null NO
-null PartsSupplier System.ODBC.OA_TYPES DATA_TYPE 5 short 5 null 0 10 1 null null null null 5 2 NO null null null null NO
-null PartsSupplier System.ODBC.OA_TYPES OA_PRECISION 4 integer 10 null 0 10 1 null null null null 10 3 NO null null null null NO
-null PartsSupplier System.ODBC.OA_TYPES LITERAL_PREFIX 12 string 10 null 0 10 1 null null null null 10 4 NO null null null null NO
-null PartsSupplier System.ODBC.OA_TYPES LITERAL_SUFFIX 12 string 10 null 0 10 1 null null null null 10 5 NO null null null null NO
-null PartsSupplier System.ODBC.OA_TYPES CREATE_PARAMS 12 string 10 null 0 10 1 null null null null 10 6 NO null null null null NO
-null PartsSupplier System.ODBC.OA_TYPES OA_NULLABLE 5 short 5 null 0 10 1 null null null null 5 7 NO null null null null NO
-null PartsSupplier System.ODBC.OA_TYPES CASE_SENSITIVE 5 short 5 null 0 10 1 null null null null 5 8 NO null null null null NO
-null PartsSupplier System.ODBC.OA_TYPES OA_SEARCHABLE 5 short 5 null 0 10 1 null null null null 5 9 NO null null null null NO
-null PartsSupplier System.ODBC.OA_TYPES UNSIGNED_ATTRIB 5 short 5 null 0 10 1 null null null null 5 10 NO null null null null NO
-null PartsSupplier System.ODBC.OA_TYPES OA_MONEY 5 short 5 null 0 10 1 null null null null 5 11 NO null null null null NO
-null PartsSupplier System.ODBC.OA_TYPES AUTO_INCREMENT 5 short 5 null 0 10 1 null null null null 5 12 NO null null null null NO
-null PartsSupplier System.ODBC.OA_TYPES MINIMUM_SCALE 5 short 5 null 0 10 1 null null null null 5 13 NO null null null null NO
-null PartsSupplier System.ODBC.OA_TYPES MAXIMUM_SCALE 5 short 5 null 0 10 1 null null null null 5 14 NO null null null null NO
-null PartsSupplier System.ODBC.OA_TYPES LOCAL_TYPE_NAME 12 string 128 null 0 10 1 null null null null 128 15 NO null null null null NO
-null PartsSupplier System.ProcedureParams ModelName 12 string 255 null 0 10 0 null null null null 255 1 YES null null null null NO
-null PartsSupplier System.ProcedureParams ProcedureName 12 string 255 null 0 10 0 null null null null 255 2 YES null null null null NO
-null PartsSupplier System.ProcedureParams Name 12 string 255 null 0 10 0 null null null null 255 3 YES null null null null NO
-null PartsSupplier System.ProcedureParams DataType 12 string 25 null 0 10 0 null null null null 25 4 YES null null null null NO
-null PartsSupplier System.ProcedureParams Position 4 integer 10 null 0 10 0 null null null null 10 5 YES null null null null NO
-null PartsSupplier System.ProcedureParams Type 12 string 100 null 0 10 0 null null null null 100 6 YES null null null null NO
-null PartsSupplier System.ProcedureParams Optional -7 boolean 1 null 0 10 0 null null null null 1 7 YES null null null null NO
-null PartsSupplier System.ProcedureParams Precision 4 integer 10 null 0 10 0 null null null null 10 8 YES null null null null NO
-null PartsSupplier System.ProcedureParams TypeLength 4 integer 10 null 0 10 0 null (0) null null 10 9 YES null null null null NO
-null PartsSupplier System.ProcedureParams Scale 4 integer 10 null 0 10 0 null (0) null null 10 10 YES null null null null NO
-null PartsSupplier System.ProcedureParams Radix 4 integer 10 null 0 10 0 null null null null 10 11 YES null null null null NO
-null PartsSupplier System.ProcedureParams NullType 12 string 10 null 0 10 0 null null null null 10 12 YES null null null null NO
-null PartsSupplier System.ProcedureProperties ModelName 12 string 255 null 0 10 0 null null null null 255 1 YES null null null null NO
-null PartsSupplier System.ProcedureProperties ProcedureName 12 string 255 null 0 10 0 null null null null 255 2 YES null null null null NO
-null PartsSupplier System.ProcedureProperties Name 12 string 255 null 0 10 0 null null null null 255 3 YES null null null null NO
-null PartsSupplier System.ProcedureProperties Value 12 string 255 null 0 10 0 null null null null 255 4 YES null null null null NO
-null PartsSupplier System.ProcedureProperties UID 12 string 50 null 0 10 0 null null null null 50 5 YES null null null null NO
-null PartsSupplier System.Procedures ModelName 12 string 255 null 0 10 0 null null null null 255 1 YES null null null null NO
-null PartsSupplier System.Procedures Name 12 string 255 null 0 10 0 null null null null 255 2 YES null null null null NO
-null PartsSupplier System.Procedures NameInSource 12 string 255 null 0 10 1 null null null null 255 3 NO null null null null NO
-null PartsSupplier System.Procedures ReturnsResults -7 boolean 1 null 0 10 0 null null null null 1 4 YES null null null null NO
-null PartsSupplier System.Procedures ModelUID 12 string 50 null 0 10 0 null null null null 50 5 YES null null null null NO
-null PartsSupplier System.Procedures UID 12 string 50 null 0 10 0 null null null null 50 6 YES null null null null NO
-null PartsSupplier System.Procedures Description 12 string 255 null 0 10 1 null null null null 255 7 NO null null null null NO
-null PartsSupplier System.Procedures FullName 12 string 2048 null 0 10 0 null null null null 2048 8 YES null null null null NO
-null PartsSupplier System.VirtualDatabases Name 12 string 255 null 0 10 0 null null null null 255 1 YES null null null null NO
-null PartsSupplier System.VirtualDatabases Version 12 string 50 null 0 10 0 null null null null 50 2 YES null null null null NO
+PartsSupplier System Columns VDBName 12 string 255 null 0 10 0 null null null null 255 1 YES null null null null NO
+PartsSupplier System Columns SchemaName 12 string 255 null 0 10 1 null null null null 255 2 NO null null null null NO
+PartsSupplier System Columns TableName 12 string 255 null 0 10 0 null null null null 255 3 YES null null null null NO
+PartsSupplier System Columns Name 12 string 255 null 0 10 0 null null null null 255 4 YES null null null null NO
+PartsSupplier System Columns Position 4 integer 10 null 0 10 0 null null null null 10 5 YES null null null null NO
+PartsSupplier System Columns NameInSource 12 string 255 null 0 10 1 null null null null 255 6 NO null null null null NO
+PartsSupplier System Columns DataType 12 string 100 null 0 10 0 null null null null 100 7 YES null null null null NO
+PartsSupplier System Columns Scale 4 integer 10 null 0 10 0 null null null null 10 8 YES null null null null NO
+PartsSupplier System Columns ElementLength 4 integer 10 null 0 10 0 null null null null 10 9 YES null null null null NO
+PartsSupplier System Columns IsLengthFixed -7 boolean 1 null 0 10 0 null null null null 1 10 YES null null null null NO
+PartsSupplier System Columns SupportsSelect -7 boolean 1 null 0 10 0 null null null null 1 11 YES null null null null NO
+PartsSupplier System Columns SupportsUpdates -7 boolean 1 null 0 10 0 null null null null 1 12 YES null null null null NO
+PartsSupplier System Columns IsCaseSensitive -7 boolean 1 null 0 10 0 null null null null 1 13 YES null null null null NO
+PartsSupplier System Columns IsSigned -7 boolean 1 null 0 10 0 null null null null 1 14 YES null null null null NO
+PartsSupplier System Columns IsCurrency -7 boolean 1 null 0 10 0 null null null null 1 15 YES null null null null NO
+PartsSupplier System Columns IsAutoIncremented -7 boolean 1 null 0 10 0 null null null null 1 16 YES null null null null NO
+PartsSupplier System Columns NullType 12 string 20 null 0 10 0 null null null null 20 17 YES null null null null NO
+PartsSupplier System Columns MinRange 12 string 50 null 0 10 1 null null null null 50 18 NO null null null null NO
+PartsSupplier System Columns MaxRange 12 string 50 null 0 10 1 null null null null 50 19 NO null null null null NO
+PartsSupplier System Columns SearchType 12 string 20 null 0 10 0 null null null null 20 20 YES null null null null NO
+PartsSupplier System Columns Format 12 string 255 null 0 10 1 null null null null 255 21 NO null null null null NO
+PartsSupplier System Columns DefaultValue 12 string 255 null 0 10 1 null null null null 255 22 NO null null null null NO
+PartsSupplier System Columns JavaClass 12 string 500 null 0 10 0 null null null null 500 23 YES null null null null NO
+PartsSupplier System Columns Precision 4 integer 10 null 0 10 0 null null null null 10 24 YES null null null null NO
+PartsSupplier System Columns CharOctetLength 4 integer 10 null 0 10 1 null null null null 10 25 NO null null null null NO
+PartsSupplier System Columns Radix 4 integer 10 null 0 10 0 null null null null 10 26 YES null null null null NO
+PartsSupplier System Columns UID 12 string 50 null 0 10 0 null null null null 50 27 YES null null null null NO
+PartsSupplier System Columns Description 12 string 255 null 0 10 1 null null null null 255 28 NO null null null null NO
+PartsSupplier System DataTypes Name 12 string 100 null 0 10 0 null null null null 100 1 YES null null null null NO
+PartsSupplier System DataTypes IsStandard -7 boolean 1 null 0 10 1 null null null null 1 2 NO null null null null NO
+PartsSupplier System DataTypes IsPhysical -7 boolean 1 null 0 10 1 null null null null 1 3 NO null null null null NO
+PartsSupplier System DataTypes TypeName 12 string 100 null 0 10 0 null null null null 100 4 YES null null null null NO
+PartsSupplier System DataTypes JavaClass 12 string 500 null 0 10 0 null null null null 500 5 YES null null null null NO
+PartsSupplier System DataTypes Scale 4 integer 10 null 0 10 1 null (0) null null 10 6 NO null null null null NO
+PartsSupplier System DataTypes TypeLength 4 integer 10 null 0 10 0 null (0) null null 10 7 YES null null null null NO
+PartsSupplier System DataTypes NullType 12 string 20 null 0 10 0 null null null null 20 8 YES null null null null NO
+PartsSupplier System DataTypes IsSigned -7 boolean 1 null 0 10 0 null ('0') null null 1 9 YES null null null null NO
+PartsSupplier System DataTypes IsAutoIncremented -7 boolean 1 null 0 10 0 null ('0') null null 1 10 YES null null null null NO
+PartsSupplier System DataTypes IsCaseSensitive -7 boolean 1 null 0 10 0 null ('0') null null 1 11 YES null null null null NO
+PartsSupplier System DataTypes Precision 4 integer 10 null 0 10 0 null null null null 10 12 YES null null null null NO
+PartsSupplier System DataTypes Radix 4 integer 10 null 0 10 1 null null null null 10 13 NO null null null null NO
+PartsSupplier System DataTypes SearchType 12 string 20 null 0 10 0 null null null null 20 14 YES null null null null NO
+PartsSupplier System DataTypes UID 12 string 50 null 0 10 0 null null null null 50 15 YES null null null null NO
+PartsSupplier System DataTypes RuntimeType 12 string 64 null 0 10 1 null null null null 64 16 NO null null null null NO
+PartsSupplier System DataTypes BaseType 12 string 64 null 0 10 1 null null null null 64 17 NO null null null null NO
+PartsSupplier System DataTypes Description 12 string 255 null 0 10 1 null null null null 255 18 NO null null null null NO
+PartsSupplier System KeyColumns VDBName 12 string 255 null 0 10 0 null null null null 255 1 YES null null null null NO
+PartsSupplier System KeyColumns SchemaName 12 string 255 null 0 10 1 null null null null 255 2 NO null null null null NO
+PartsSupplier System KeyColumns TableName 12 string 2048 null 0 10 0 null null null null 2048 3 YES null null null null NO
+PartsSupplier System KeyColumns Name 12 string 255 null 0 10 0 null null null null 255 4 YES null null null null NO
+PartsSupplier System KeyColumns KeyName 12 string 255 null 0 10 1 null null null null 255 5 NO null null null null NO
+PartsSupplier System KeyColumns KeyType 12 string 20 null 0 10 0 null null null null 20 6 YES null null null null NO
+PartsSupplier System KeyColumns RefKeyUID 12 string 50 null 0 10 1 null null null null 50 7 NO null null null null NO
+PartsSupplier System KeyColumns UID 12 string 50 null 0 10 0 null null null null 50 8 YES null null null null NO
+PartsSupplier System KeyColumns Position 4 integer 10 null 0 10 1 null null null null 10 9 NO null null null null NO
+PartsSupplier System Keys VDBName 12 string 255 null 0 10 0 null null null null 255 1 YES null null null null NO
+PartsSupplier System Keys SchemaName 12 string 255 null 0 10 1 null null null null 255 2 NO null null null null NO
+PartsSupplier System Keys TableName 12 string 2048 null 0 10 0 null null null null 2048 3 YES null null null null NO
+PartsSupplier System Keys Name 12 string 255 null 0 10 0 null null null null 255 4 YES null null null null NO
+PartsSupplier System Keys Description 12 string 255 null 0 10 1 null null null null 255 5 NO null null null null NO
+PartsSupplier System Keys NameInSource 12 string 255 null 0 10 1 null null null null 255 6 NO null null null null NO
+PartsSupplier System Keys Type 12 string 20 null 0 10 0 null null null null 20 7 YES null null null null NO
+PartsSupplier System Keys IsIndexed -7 boolean 1 null 0 10 0 null null null null 1 8 YES null null null null NO
+PartsSupplier System Keys RefKeyUID 12 string 50 null 0 10 1 null null null null 50 9 NO null null null null NO
+PartsSupplier System Keys UID 12 string 50 null 0 10 0 null null null null 50 10 YES null null null null NO
+PartsSupplier PartsSupplier PARTSSUPPLIER.PARTS PART_ID 12 string 4 null 0 10 0 null null null null 4 1 YES null null null null NO
+PartsSupplier PartsSupplier PARTSSUPPLIER.PARTS PART_NAME 12 string 255 null 0 10 1 null null null null 255 2 NO null null null null NO
+PartsSupplier PartsSupplier PARTSSUPPLIER.PARTS PART_COLOR 12 string 30 null 0 10 1 null null null null 30 3 NO null null null null NO
+PartsSupplier PartsSupplier PARTSSUPPLIER.PARTS PART_WEIGHT 12 string 255 null 0 10 1 null null null null 255 4 NO null null null null NO
+PartsSupplier PartsSupplier PARTSSUPPLIER.SHIP_VIA SHIPPER_ID 5 short 2 null 0 10 0 null null null null 0 1 YES null null null null NO
+PartsSupplier PartsSupplier PARTSSUPPLIER.SHIP_VIA SHIPPER_NAME 12 string 30 null 0 10 1 null null null null 30 2 NO null null null null NO
+PartsSupplier PartsSupplier PARTSSUPPLIER.STATUS STATUS_ID 5 short 2 null 0 10 0 null null null null 0 1 YES null null null null NO
+PartsSupplier PartsSupplier PARTSSUPPLIER.STATUS STATUS_NAME 12 string 30 null 0 10 1 null null null null 30 2 NO null null null null NO
+PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER SUPPLIER_ID 12 string 10 null 0 10 0 null null null null 10 1 YES null null null null NO
+PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER SUPPLIER_NAME 12 string 30 null 0 10 1 null null null null 30 2 NO null null null null NO
+PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER SUPPLIER_STATUS 5 short 2 null 0 10 1 null null null null 0 3 NO null null null null NO
+PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER SUPPLIER_CITY 12 string 30 null 0 10 1 null null null null 30 4 NO null null null null NO
+PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER SUPPLIER_STATE 12 string 2 null 0 10 1 null null null null 2 5 NO null null null null NO
+PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS SUPPLIER_ID 12 string 10 null 0 10 0 null null null null 10 1 YES null null null null NO
+PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS PART_ID 12 string 4 null 0 10 0 null null null null 4 2 YES null null null null NO
+PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS QUANTITY 5 short 3 null 0 10 1 null null null null 0 3 NO null null null null NO
+PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS SHIPPER_ID 5 short 2 null 0 10 1 null null null null 0 4 NO null null null null NO
+PartsSupplier System ProcedureParams VDBName 12 string 255 null 0 10 0 null null null null 255 1 YES null null null null NO
+PartsSupplier System ProcedureParams SchemaName 12 string 255 null 0 10 1 null null null null 255 2 NO null null null null NO
+PartsSupplier System ProcedureParams ProcedureName 12 string 255 null 0 10 0 null null null null 255 3 YES null null null null NO
+PartsSupplier System ProcedureParams Name 12 string 255 null 0 10 0 null null null null 255 4 YES null null null null NO
+PartsSupplier System ProcedureParams DataType 12 string 25 null 0 10 0 null null null null 25 5 YES null null null null NO
+PartsSupplier System ProcedureParams Position 4 integer 10 null 0 10 0 null null null null 10 6 YES null null null null NO
+PartsSupplier System ProcedureParams Type 12 string 100 null 0 10 0 null null null null 100 7 YES null null null null NO
+PartsSupplier System ProcedureParams Optional -7 boolean 1 null 0 10 0 null null null null 1 8 YES null null null null NO
+PartsSupplier System ProcedureParams Precision 4 integer 10 null 0 10 0 null null null null 10 9 YES null null null null NO
+PartsSupplier System ProcedureParams TypeLength 4 integer 10 null 0 10 0 null (0) null null 10 10 YES null null null null NO
+PartsSupplier System ProcedureParams Scale 4 integer 10 null 0 10 0 null (0) null null 10 11 YES null null null null NO
+PartsSupplier System ProcedureParams Radix 4 integer 10 null 0 10 0 null null null null 10 12 YES null null null null NO
+PartsSupplier System ProcedureParams NullType 12 string 10 null 0 10 0 null null null null 10 13 YES null null null null NO
+PartsSupplier System ProcedureParams UID 12 string 50 null 0 10 1 null null null null 50 14 NO null null null null NO
+PartsSupplier System Procedures VDBName 12 string 255 null 0 10 0 null null null null 255 1 YES null null null null NO
+PartsSupplier System Procedures SchemaName 12 string 255 null 0 10 1 null null null null 255 2 NO null null null null NO
+PartsSupplier System Procedures Name 12 string 255 null 0 10 0 null null null null 255 3 YES null null null null NO
+PartsSupplier System Procedures NameInSource 12 string 255 null 0 10 1 null null null null 255 4 NO null null null null NO
+PartsSupplier System Procedures ReturnsResults -7 boolean 1 null 0 10 0 null null null null 1 5 YES null null null null NO
+PartsSupplier System Procedures UID 12 string 50 null 0 10 0 null null null null 50 6 YES null null null null NO
+PartsSupplier System Procedures Description 12 string 255 null 0 10 1 null null null null 255 7 NO null null null null NO
+PartsSupplier System Properties Name 12 string 255 null 0 10 0 null null null null 255 1 YES null null null null NO
+PartsSupplier System Properties Value 12 string 255 null 0 10 0 null null null null 255 2 YES null null null null NO
+PartsSupplier System Properties UID 12 string 50 null 0 10 0 null null null null 50 3 YES null null null null NO
+PartsSupplier System ReferenceKeyColumns PKTABLE_CAT 12 string 255 null 0 10 1 null null null null 255 1 NO null null null null NO
+PartsSupplier System ReferenceKeyColumns PKTABLE_SCHEM 12 string 255 null 0 10 1 null null null null 255 2 NO null null null null NO
+PartsSupplier System ReferenceKeyColumns PKTABLE_NAME 12 string 255 null 0 10 1 null null null null 255 3 NO null null null null NO
+PartsSupplier System ReferenceKeyColumns PKCOLUMN_NAME 12 string 255 null 0 10 1 null null null null 255 4 NO null null null null NO
+PartsSupplier System ReferenceKeyColumns FKTABLE_CAT 12 string 255 null 0 10 1 null null null null 255 5 NO null null null null NO
+PartsSupplier System ReferenceKeyColumns FKTABLE_SCHEM 12 string 255 null 0 10 1 null null null null 255 6 NO null null null null NO
+PartsSupplier System ReferenceKeyColumns FKTABLE_NAME 12 string 255 null 0 10 1 null null null null 255 7 NO null null null null NO
+PartsSupplier System ReferenceKeyColumns FKCOLUMN_NAME 12 string 255 null 0 10 1 null null null null 255 8 NO null null null null NO
+PartsSupplier System ReferenceKeyColumns KEY_SEQ 5 short 5 null 0 10 1 null null null null 5 9 NO null null null null NO
+PartsSupplier System ReferenceKeyColumns UPDATE_RULE 4 integer 10 null 0 10 1 null null null null 10 10 NO null null null null NO
+PartsSupplier System ReferenceKeyColumns DELETE_RULE 4 integer 10 null 0 10 1 null null null null 10 11 NO null null null null NO
+PartsSupplier System ReferenceKeyColumns FK_NAME 12 string 255 null 0 10 1 null null null null 255 12 NO null null null null NO
+PartsSupplier System ReferenceKeyColumns PK_NAME 12 string 255 null 0 10 1 null null null null 255 13 NO null null null null NO
+PartsSupplier System ReferenceKeyColumns DEFERRABILITY 4 integer 10 null 0 10 1 null null null null 10 14 NO null null null null NO
+PartsSupplier System Schemas VDBName 12 string 255 null 0 10 1 null null null null 255 1 NO null null null null NO
+PartsSupplier System Schemas Name 12 string 255 null 0 10 1 null null null null 255 2 NO null null null null NO
+PartsSupplier System Schemas IsPhysical -7 boolean 1 null 0 10 0 null null null null 1 3 YES null null null null NO
+PartsSupplier System Schemas UID 12 string 50 null 0 10 0 null null null null 50 4 YES null null null null NO
+PartsSupplier System Schemas Description 12 string 255 null 0 10 1 null null null null 255 5 NO null null null null NO
+PartsSupplier System Schemas PrimaryMetamodelURI 12 string 255 null 0 10 0 null null null null 255 6 YES null null null null NO
+PartsSupplier System Tables VDBName 12 string 255 null 0 10 1 null null null null 255 1 NO null null null null NO
+PartsSupplier System Tables SchemaName 12 string 255 null 0 10 1 null null null null 255 2 NO null null null null NO
+PartsSupplier System Tables Name 12 string 255 null 0 10 0 null null null null 255 3 YES null null null null NO
+PartsSupplier System Tables Type 12 string 20 null 0 10 0 null null null null 20 4 YES null null null null NO
+PartsSupplier System Tables NameInSource 12 string 255 null 0 10 1 null null null null 255 5 NO null null null null NO
+PartsSupplier System Tables IsPhysical -7 boolean 1 null 0 10 0 null null null null 1 6 YES null null null null NO
+PartsSupplier System Tables SupportsUpdates -7 boolean 1 null 0 10 0 null null null null 1 7 YES null null null null NO
+PartsSupplier System Tables UID 12 string 50 null 0 10 0 null null null null 50 8 YES null null null null NO
+PartsSupplier System Tables Cardinality 4 integer 10 null 0 10 0 null null null null 10 9 YES null null null null NO
+PartsSupplier System Tables Description 12 string 255 null 0 10 1 null null null null 255 10 NO null null null null NO
+PartsSupplier System Tables IsSystem -7 boolean 1 null 0 10 1 null null null null 1 11 NO null null null null NO
+PartsSupplier System Tables IsMaterialized -7 boolean 1 null 0 10 0 null null null null 0 12 YES null null null null NO
+PartsSupplier System VirtualDatabases Name 12 string 255 null 0 10 0 null null null null 255 1 YES null null null null NO
+PartsSupplier System VirtualDatabases Version 12 string 50 null 0 10 0 null null null null 50 2 YES null null null null NO
Modified: branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/CrossReference.metadata.txt
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/CrossReference.metadata.txt 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/CrossReference.metadata.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,15 +1,15 @@
ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName
-PKTABLE_CAT 12 string java.lang.String 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-PKTABLE_SCHEM 12 string java.lang.String 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-PKTABLE_NAME 12 string java.lang.String 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-PKCOLUMN_NAME 12 string java.lang.String 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-FKTABLE_CAT 12 string java.lang.String 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-FKTABLE_SCHEM 12 string java.lang.String 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-FKTABLE_NAME 12 string java.lang.String 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-FKCOLUMN_NAME 12 string java.lang.String 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-KEY_SEQ 5 short java.lang.Short 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-UPDATE_RULE 4 integer java.lang.Integer 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-DELETE_RULE 4 integer java.lang.Integer 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-FK_NAME 12 string java.lang.String 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-PK_NAME 12 string java.lang.String 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-DEFERRABILITY 4 integer java.lang.Integer 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
+PKTABLE_CAT 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+PKTABLE_SCHEM 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+PKTABLE_NAME 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+PKCOLUMN_NAME 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+FKTABLE_CAT 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+FKTABLE_SCHEM 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+FKTABLE_NAME 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+FKCOLUMN_NAME 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+KEY_SEQ 5 short java.lang.Short 1 ReferenceKeyColumns System PartsSupplier
+UPDATE_RULE 4 integer java.lang.Integer 1 ReferenceKeyColumns System PartsSupplier
+DELETE_RULE 4 integer java.lang.Integer 1 ReferenceKeyColumns System PartsSupplier
+FK_NAME 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+PK_NAME 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+DEFERRABILITY 4 integer java.lang.Integer 1 ReferenceKeyColumns System PartsSupplier
Modified: branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/CrossReference.txt
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/CrossReference.txt 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/CrossReference.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,4 +1,4 @@
-PKTABLE_CAT[string] PKTABLE_SCHEM[string] PKTABLE_NAME[string] PKCOLUMN_NAME[string] FKTABLE_CAT[string] FKTABLE_SCHEM[string] FKTABLE_NAME[string] FKCOLUMN_NAME[string] KEY_SEQ[short] UPDATE_RULE[integer] DELETE_RULE[integer] FK_NAME[string] PK_NAME[string] DEFERRABILITY[integer]
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.STATUS STATUS_ID null PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER SUPPLIER_STATUS 1 3 3 FK_SPLIER_STATS PK_STATUS 5
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.PARTS PART_ID null PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER_PARTS PART_ID 1 3 3 FK_SPLIER_PRTS_PRTS PK_PARTS 5
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER SUPPLIER_ID null PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER_PARTS SUPPLIER_ID 1 3 3 FK_SPLY_PRTS_SPLY PK_SUPPLIER 5
+PKTABLE_CAT[string] PKTABLE_SCHEM[string] PKTABLE_NAME[string] PKCOLUMN_NAME[string] FKTABLE_CAT[string] FKTABLE_SCHEM[string] FKTABLE_NAME[string] FKCOLUMN_NAME[string] KEY_SEQ[short] UPDATE_RULE[integer] DELETE_RULE[integer] FK_NAME[string] PK_NAME[string] DEFERRABILITY[integer]
+PartsSupplier PartsSupplier PARTSSUPPLIER.STATUS STATUS_ID PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER SUPPLIER_STATUS 1 3 3 FK_SPLIER_STATS PK_STATUS 5
+PartsSupplier PartsSupplier PARTSSUPPLIER.PARTS PART_ID PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS PART_ID 1 3 3 FK_SPLIER_PRTS_PRTS PK_PARTS 5
+PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER SUPPLIER_ID PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS SUPPLIER_ID 1 3 3 FK_SPLY_PRTS_SPLY PK_SUPPLIER 5
Modified: branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/ExportedKeys.metadata.txt
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/ExportedKeys.metadata.txt 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/ExportedKeys.metadata.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,15 +1,15 @@
ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName
-PKTABLE_CAT 12 string java.lang.String 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-PKTABLE_SCHEM 12 string java.lang.String 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-PKTABLE_NAME 12 string java.lang.String 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-PKCOLUMN_NAME 12 string java.lang.String 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-FKTABLE_CAT 12 string java.lang.String 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-FKTABLE_SCHEM 12 string java.lang.String 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-FKTABLE_NAME 12 string java.lang.String 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-FKCOLUMN_NAME 12 string java.lang.String 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-KEY_SEQ 5 short java.lang.Short 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-UPDATE_RULE 4 integer java.lang.Integer 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-DELETE_RULE 4 integer java.lang.Integer 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-FK_NAME 12 string java.lang.String 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-PK_NAME 12 string java.lang.String 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-DEFERRABILITY 4 integer java.lang.Integer 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
+PKTABLE_CAT 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+PKTABLE_SCHEM 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+PKTABLE_NAME 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+PKCOLUMN_NAME 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+FKTABLE_CAT 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+FKTABLE_SCHEM 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+FKTABLE_NAME 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+FKCOLUMN_NAME 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+KEY_SEQ 5 short java.lang.Short 1 ReferenceKeyColumns System PartsSupplier
+UPDATE_RULE 4 integer java.lang.Integer 1 ReferenceKeyColumns System PartsSupplier
+DELETE_RULE 4 integer java.lang.Integer 1 ReferenceKeyColumns System PartsSupplier
+FK_NAME 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+PK_NAME 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+DEFERRABILITY 4 integer java.lang.Integer 1 ReferenceKeyColumns System PartsSupplier
Modified: branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/ExportedKeys.txt
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/ExportedKeys.txt 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/ExportedKeys.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,4 +1,4 @@
-PKTABLE_CAT[string] PKTABLE_SCHEM[string] PKTABLE_NAME[string] PKCOLUMN_NAME[string] FKTABLE_CAT[string] FKTABLE_SCHEM[string] FKTABLE_NAME[string] FKCOLUMN_NAME[string] KEY_SEQ[short] UPDATE_RULE[integer] DELETE_RULE[integer] FK_NAME[string] PK_NAME[string] DEFERRABILITY[integer]
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.STATUS STATUS_ID null PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER SUPPLIER_STATUS 1 3 3 FK_SPLIER_STATS PK_STATUS 5
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.PARTS PART_ID null PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER_PARTS PART_ID 1 3 3 FK_SPLIER_PRTS_PRTS PK_PARTS 5
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER SUPPLIER_ID null PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER_PARTS SUPPLIER_ID 1 3 3 FK_SPLY_PRTS_SPLY PK_SUPPLIER 5
+PKTABLE_CAT[string] PKTABLE_SCHEM[string] PKTABLE_NAME[string] PKCOLUMN_NAME[string] FKTABLE_CAT[string] FKTABLE_SCHEM[string] FKTABLE_NAME[string] FKCOLUMN_NAME[string] KEY_SEQ[short] UPDATE_RULE[integer] DELETE_RULE[integer] FK_NAME[string] PK_NAME[string] DEFERRABILITY[integer]
+PartsSupplier PartsSupplier PARTSSUPPLIER.STATUS STATUS_ID PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER SUPPLIER_STATUS 1 3 3 FK_SPLIER_STATS PK_STATUS 5
+PartsSupplier PartsSupplier PARTSSUPPLIER.PARTS PART_ID PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS PART_ID 1 3 3 FK_SPLIER_PRTS_PRTS PK_PARTS 5
+PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER SUPPLIER_ID PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS SUPPLIER_ID 1 3 3 FK_SPLY_PRTS_SPLY PK_SUPPLIER 5
Modified: branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/ImportedKeys.metadata.txt
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/ImportedKeys.metadata.txt 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/ImportedKeys.metadata.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,15 +1,15 @@
ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName
-PKTABLE_CAT 12 string java.lang.String 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-PKTABLE_SCHEM 12 string java.lang.String 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-PKTABLE_NAME 12 string java.lang.String 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-PKCOLUMN_NAME 12 string java.lang.String 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-FKTABLE_CAT 12 string java.lang.String 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-FKTABLE_SCHEM 12 string java.lang.String 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-FKTABLE_NAME 12 string java.lang.String 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-FKCOLUMN_NAME 12 string java.lang.String 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-KEY_SEQ 5 short java.lang.Short 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-UPDATE_RULE 4 integer java.lang.Integer 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-DELETE_RULE 4 integer java.lang.Integer 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-FK_NAME 12 string java.lang.String 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-PK_NAME 12 string java.lang.String 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
-DEFERRABILITY 4 integer java.lang.Integer 1 System.JDBC.ReferenceKeyColumns PartsSupplier null
+PKTABLE_CAT 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+PKTABLE_SCHEM 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+PKTABLE_NAME 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+PKCOLUMN_NAME 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+FKTABLE_CAT 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+FKTABLE_SCHEM 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+FKTABLE_NAME 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+FKCOLUMN_NAME 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+KEY_SEQ 5 short java.lang.Short 1 ReferenceKeyColumns System PartsSupplier
+UPDATE_RULE 4 integer java.lang.Integer 1 ReferenceKeyColumns System PartsSupplier
+DELETE_RULE 4 integer java.lang.Integer 1 ReferenceKeyColumns System PartsSupplier
+FK_NAME 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+PK_NAME 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+DEFERRABILITY 4 integer java.lang.Integer 1 ReferenceKeyColumns System PartsSupplier
Modified: branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/ImportedKeys.txt
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/ImportedKeys.txt 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/ImportedKeys.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,4 +1,4 @@
-PKTABLE_CAT[string] PKTABLE_SCHEM[string] PKTABLE_NAME[string] PKCOLUMN_NAME[string] FKTABLE_CAT[string] FKTABLE_SCHEM[string] FKTABLE_NAME[string] FKCOLUMN_NAME[string] KEY_SEQ[short] UPDATE_RULE[integer] DELETE_RULE[integer] FK_NAME[string] PK_NAME[string] DEFERRABILITY[integer]
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.PARTS PART_ID null PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER_PARTS PART_ID 1 3 3 FK_SPLIER_PRTS_PRTS PK_PARTS 5
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.STATUS STATUS_ID null PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER SUPPLIER_STATUS 1 3 3 FK_SPLIER_STATS PK_STATUS 5
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER SUPPLIER_ID null PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER_PARTS SUPPLIER_ID 1 3 3 FK_SPLY_PRTS_SPLY PK_SUPPLIER 5
\ No newline at end of file
+PKTABLE_CAT[string] PKTABLE_SCHEM[string] PKTABLE_NAME[string] PKCOLUMN_NAME[string] FKTABLE_CAT[string] FKTABLE_SCHEM[string] FKTABLE_NAME[string] FKCOLUMN_NAME[string] KEY_SEQ[short] UPDATE_RULE[integer] DELETE_RULE[integer] FK_NAME[string] PK_NAME[string] DEFERRABILITY[integer]
+PartsSupplier PartsSupplier PARTSSUPPLIER.PARTS PART_ID PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS PART_ID 1 3 3 FK_SPLIER_PRTS_PRTS PK_PARTS 5
+PartsSupplier PartsSupplier PARTSSUPPLIER.STATUS STATUS_ID PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER SUPPLIER_STATUS 1 3 3 FK_SPLIER_STATS PK_STATUS 5
+PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER SUPPLIER_ID PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS SUPPLIER_ID 1 3 3 FK_SPLY_PRTS_SPLY PK_SUPPLIER 5
Modified: branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/IndexInfo.metadata.txt
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/IndexInfo.metadata.txt 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/IndexInfo.metadata.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,14 +1,14 @@
ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName
-TABLE_CAT 12 string java.lang.String 1 null PartsSupplier null
-TABLE_SCHEM 12 string java.lang.String 0 System.VirtualDatabases PartsSupplier null
-TABLE_NAME 12 string java.lang.String 0 System.KeyElements PartsSupplier null
-NON_UNIQUE -7 boolean java.lang.Boolean 1 null PartsSupplier null
-INDEX_QUALIFIER 12 string java.lang.String 1 null PartsSupplier null
-INDEX_NAME 12 string java.lang.String 1 System.KeyElements PartsSupplier null
-TYPE 4 integer java.lang.Integer 1 null PartsSupplier null
-ORDINAL_POSITION 5 short java.lang.Short 1 null PartsSupplier null
-COLUMN_NAME 12 string java.lang.String 0 System.KeyElements PartsSupplier null
-ASC_OR_DESC 12 string java.lang.String 1 null PartsSupplier null
-CARDINALITY 4 integer java.lang.Integer 1 null PartsSupplier null
-PAGES 4 integer java.lang.Integer 1 null PartsSupplier null
-FILTER_CONDITION 12 string java.lang.String 1 null PartsSupplier null
+TABLE_CAT 12 string java.lang.String 0 KeyColumns System PartsSupplier
+TABLE_SCHEM 12 string java.lang.String 1 KeyColumns System PartsSupplier
+TABLE_NAME 12 string java.lang.String 0 KeyColumns System PartsSupplier
+NON_UNIQUE -7 boolean java.lang.Boolean 1 null null PartsSupplier
+INDEX_QUALIFIER 12 string java.lang.String 1 null null PartsSupplier
+INDEX_NAME 12 string java.lang.String 1 KeyColumns System PartsSupplier
+TYPE 4 integer java.lang.Integer 1 null null PartsSupplier
+ORDINAL_POSITION 5 short java.lang.Short 1 null null PartsSupplier
+COLUMN_NAME 12 string java.lang.String 0 KeyColumns System PartsSupplier
+ASC_OR_DESC 12 string java.lang.String 1 null null PartsSupplier
+CARDINALITY 4 integer java.lang.Integer 1 null null PartsSupplier
+PAGES 4 integer java.lang.Integer 1 null null PartsSupplier
+FILTER_CONDITION 12 string java.lang.String 1 null null PartsSupplier
Modified: branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/IndexInfo.txt
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/IndexInfo.txt 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/IndexInfo.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1 +1 @@
-TABLE_CAT[string] TABLE_SCHEM[string] TABLE_NAME[string] NON_UNIQUE[boolean] INDEX_QUALIFIER[string] INDEX_NAME[string] TYPE[integer] ORDINAL_POSITION[short] COLUMN_NAME[string] ASC_OR_DESC[string] CARDINALITY[integer] PAGES[integer] FILTER_CONDITION[string]
+TABLE_CAT[string] TABLE_SCHEM[string] TABLE_NAME[string] NON_UNIQUE[boolean] INDEX_QUALIFIER[string] INDEX_NAME[string] TYPE[integer] ORDINAL_POSITION[short] COLUMN_NAME[string] ASC_OR_DESC[string] CARDINALITY[integer] PAGES[integer] FILTER_CONDITION[string]
Modified: branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/PrimaryKeys.metadata.txt
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/PrimaryKeys.metadata.txt 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/PrimaryKeys.metadata.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,7 +1,7 @@
ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName
-TABLE_CAT 12 string java.lang.String 1 null PartsSupplier null
-TABLE_SCHEM 12 string java.lang.String 0 System.VirtualDatabases PartsSupplier null
-TABLE_NAME 12 string java.lang.String 0 System.KeyElements PartsSupplier null
-COLUMN_NAME 12 string java.lang.String 0 System.KeyElements PartsSupplier null
-KEY_SEQ 5 short java.lang.Short 1 null PartsSupplier null
-PK_NAME 12 string java.lang.String 1 System.KeyElements PartsSupplier null
+TABLE_CAT 12 string java.lang.String 0 KeyColumns System PartsSupplier
+TABLE_SCHEM 12 string java.lang.String 1 KeyColumns System PartsSupplier
+TABLE_NAME 12 string java.lang.String 0 KeyColumns System PartsSupplier
+COLUMN_NAME 12 string java.lang.String 0 KeyColumns System PartsSupplier
+KEY_SEQ 5 short java.lang.Short 1 null null PartsSupplier
+PK_NAME 12 string java.lang.String 1 KeyColumns System PartsSupplier
Modified: branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/PrimaryKeys.txt
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/PrimaryKeys.txt 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/PrimaryKeys.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,7 +1,7 @@
-TABLE_CAT[string] TABLE_SCHEM[string] TABLE_NAME[string] COLUMN_NAME[string] KEY_SEQ[short] PK_NAME[string]
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.PARTS PART_ID 1 PK_PARTS
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER_PARTS PART_ID 2 PK_SUPPLIER_PARTS
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.SHIP_VIA SHIPPER_ID 1 PK_SHIP_VIA
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.STATUS STATUS_ID 1 PK_STATUS
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER SUPPLIER_ID 1 PK_SUPPLIER
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER_PARTS SUPPLIER_ID 1 PK_SUPPLIER_PARTS
+TABLE_CAT[string] TABLE_SCHEM[string] TABLE_NAME[string] COLUMN_NAME[string] KEY_SEQ[short] PK_NAME[string]
+PartsSupplier PartsSupplier PARTSSUPPLIER.PARTS PART_ID 1 PK_PARTS
+PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS PART_ID 2 PK_SUPPLIER_PARTS
+PartsSupplier PartsSupplier PARTSSUPPLIER.SHIP_VIA SHIPPER_ID 1 PK_SHIP_VIA
+PartsSupplier PartsSupplier PARTSSUPPLIER.STATUS STATUS_ID 1 PK_STATUS
+PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS SUPPLIER_ID 1 PK_SUPPLIER_PARTS
+PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER SUPPLIER_ID 1 PK_SUPPLIER
Modified: branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/ProcedureColumns.metadata.txt
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/ProcedureColumns.metadata.txt 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/ProcedureColumns.metadata.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,21 +1,21 @@
-ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName
-PROCEDURE_CAT 12 string java.lang.String 1 null PartsSupplier null
-PROCEDURE_SCHEM 12 string java.lang.String 0 System.VirtualDatabases PartsSupplier null
-PROCEDURE_NAME 12 string java.lang.String 0 System.ProcedureParams PartsSupplier null
-COLUMN_NAME 12 string java.lang.String 0 System.ProcedureParams PartsSupplier null
-COLUMN_TYPE 5 short java.lang.Short 1 null PartsSupplier null
-DATA_TYPE 4 integer java.lang.Integer 1 null PartsSupplier null
-TYPE_NAME 12 string java.lang.String 0 System.ProcedureParams PartsSupplier null
-PRECISION 4 integer java.lang.Integer 1 null PartsSupplier null
-LENGTH 4 integer java.lang.Integer 1 null PartsSupplier null
-SCALE 5 short java.lang.Short 1 null PartsSupplier null
-RADIX 4 integer java.lang.Integer 0 System.ProcedureParams PartsSupplier null
-NULLABLE 4 integer java.lang.Integer 1 null PartsSupplier null
-REMARKS 12 string java.lang.String 1 null PartsSupplier null
-COLUMN_DEF 12 string java.lang.String 1 null PartsSupplier null
-SQL_DATA_TYPE 12 string java.lang.String 1 null PartsSupplier null
-SQL_DATETIME_SUB 12 string java.lang.String 1 null PartsSupplier null
-CHAR_OCTET_LENGTH 12 string java.lang.String 1 null PartsSupplier null
-ORDINAL_POSITION 4 integer java.lang.Integer 0 System.ProcedureParams PartsSupplier null
-IS_NULLABLE 12 string java.lang.String 1 null PartsSupplier null
-SPECIFIC_NAME 12 string java.lang.String 1 null PartsSupplier null
+ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName
+PROCEDURE_CAT 12 string java.lang.String 0 ProcedureParams System PartsSupplier
+PROCEDURE_SCHEM 12 string java.lang.String 1 ProcedureParams System PartsSupplier
+PROCEDURE_NAME 12 string java.lang.String 0 ProcedureParams System PartsSupplier
+COLUMN_NAME 12 string java.lang.String 0 ProcedureParams System PartsSupplier
+COLUMN_TYPE 5 short java.lang.Short 1 null null PartsSupplier
+DATA_TYPE 4 integer java.lang.Integer 1 null null PartsSupplier
+TYPE_NAME 12 string java.lang.String 0 ProcedureParams System PartsSupplier
+PRECISION 4 integer java.lang.Integer 1 null null PartsSupplier
+LENGTH 4 integer java.lang.Integer 1 null null PartsSupplier
+SCALE 5 short java.lang.Short 1 null null PartsSupplier
+RADIX 4 integer java.lang.Integer 0 ProcedureParams System PartsSupplier
+NULLABLE 4 integer java.lang.Integer 1 null null PartsSupplier
+REMARKS 12 string java.lang.String 1 null null PartsSupplier
+COLUMN_DEF 12 string java.lang.String 1 null null PartsSupplier
+SQL_DATA_TYPE 12 string java.lang.String 1 null null PartsSupplier
+SQL_DATETIME_SUB 12 string java.lang.String 1 null null PartsSupplier
+CHAR_OCTET_LENGTH 12 string java.lang.String 1 null null PartsSupplier
+ORDINAL_POSITION 4 integer java.lang.Integer 0 ProcedureParams System PartsSupplier
+IS_NULLABLE 12 string java.lang.String 1 null null PartsSupplier
+SPECIFIC_NAME 12 string java.lang.String 0 ProcedureParams System PartsSupplier
Modified: branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/ProcedureColumns.txt
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/ProcedureColumns.txt 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/ProcedureColumns.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,13 +1,7 @@
PROCEDURE_CAT[string] PROCEDURE_SCHEM[string] PROCEDURE_NAME[string] COLUMN_NAME[string] COLUMN_TYPE[short] DATA_TYPE[integer] TYPE_NAME[string] PRECISION[integer] LENGTH[integer] SCALE[short] RADIX[integer] NULLABLE[integer] REMARKS[string] COLUMN_DEF[string] SQL_DATA_TYPE[string] SQL_DATETIME_SUB[string] CHAR_OCTET_LENGTH[string] ORDINAL_POSITION[integer] IS_NULLABLE[string] SPECIFIC_NAME[string]
-null PartsSupplier System.describe entity 1 12 string 4000 4000 0 10 0 null null null null null 1 NO System.describe.entity
-null PartsSupplier System.describe Description 3 12 string 128 128 0 10 0 null null null null null 1 NO System.describe.Description
-null PartsSupplier System.getBinaryVDBResource resourcePath 1 12 string 50 50 0 10 0 null null null null null 1 NO System.getBinaryVDBResource.resourcePath
-null PartsSupplier System.getBinaryVDBResource VdbResource 3 2004 blob 2147483647 2147483647 0 10 1 null null null null null 1 YES System.getBinaryVDBResource.VdbResource
-null PartsSupplier System.getCharacterVDBResource resourcePath 1 12 string 50 50 0 10 0 null null null null null 1 NO System.getCharacterVDBResource.resourcePath
-null PartsSupplier System.getCharacterVDBResource VdbResource 3 2005 clob 2147483647 2147483647 0 10 1 null null null null null 1 YES System.getCharacterVDBResource.VdbResource
-null PartsSupplier System.getUpdatedCharacterVDBResource resourcePath 1 12 string 50 50 0 10 0 null null null null null 1 NO System.getUpdatedCharacterVDBResource.resourcePath
-null PartsSupplier System.getUpdatedCharacterVDBResource tokens 1 2000 object 2147483647 2147483647 0 10 0 null null null null null 2 NO System.getUpdatedCharacterVDBResource.tokens
-null PartsSupplier System.getUpdatedCharacterVDBResource tokenReplacements 1 2000 object 2147483647 2147483647 0 10 0 null null null null null 3 NO System.getUpdatedCharacterVDBResource.tokenReplacements
-null PartsSupplier System.getUpdatedCharacterVDBResource VdbResource 3 2005 clob 2147483647 2147483647 0 10 1 null null null null null 1 YES System.getUpdatedCharacterVDBResource.VdbResource
-null PartsSupplier System.getVDBResourcePaths ResourcePath 3 12 string 50 50 0 10 1 null null null null null 1 YES System.getVDBResourcePaths.ResourcePath
-null PartsSupplier System.getVDBResourcePaths isBinary 3 -7 boolean 1 1 0 10 1 null null null null null 2 YES System.getVDBResourcePaths.isBinary
+PartsSupplier System getBinaryVDBResource resourcePath 1 12 string 50 50 0 10 0 null null null null null 1 NO getBinaryVDBResource
+PartsSupplier System getBinaryVDBResource VdbResource 3 2004 blob 2147483647 2147483647 0 10 1 null null null null null 1 YES getBinaryVDBResource
+PartsSupplier System getCharacterVDBResource resourcePath 1 12 string 50 50 0 10 0 null null null null null 1 NO getCharacterVDBResource
+PartsSupplier System getCharacterVDBResource VdbResource 3 2005 clob 2147483647 2147483647 0 10 1 null null null null null 1 YES getCharacterVDBResource
+PartsSupplier System getVDBResourcePaths ResourcePath 3 12 string 50 50 0 10 1 null null null null null 1 YES getVDBResourcePaths
+PartsSupplier System getVDBResourcePaths isBinary 3 -7 boolean 1 1 0 10 1 null null null null null 2 YES getVDBResourcePaths
Modified: branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Procedures.metadata.txt
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Procedures.metadata.txt 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Procedures.metadata.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,10 +1,10 @@
ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName
-PROCEDURE_CAT 12 string java.lang.String 1 null PartsSupplier null
-PROCEDURE_SCHEM 12 string java.lang.String 0 System.VirtualDatabases PartsSupplier null
-PROCEDURE_NAME 12 string java.lang.String 0 System.Procedures PartsSupplier null
-RESERVED_1 12 string java.lang.String 1 null PartsSupplier null
-RESERVED_2 12 string java.lang.String 1 null PartsSupplier null
-RESERVED_3 12 string java.lang.String 1 null PartsSupplier null
-REMARKS 12 string java.lang.String 1 System.Procedures PartsSupplier null
-PROCEDURE_TYPE 5 short java.lang.Short 1 null PartsSupplier null
-SPECIFIC_NAME 12 string java.lang.String 0 System.Procedures PartsSupplier null
\ No newline at end of file
+PROCEDURE_CAT 12 string java.lang.String 0 Procedures System PartsSupplier
+PROCEDURE_SCHEM 12 string java.lang.String 1 Procedures System PartsSupplier
+PROCEDURE_NAME 12 string java.lang.String 0 Procedures System PartsSupplier
+RESERVED_1 12 string java.lang.String 1 null null PartsSupplier
+RESERVED_2 12 string java.lang.String 1 null null PartsSupplier
+RESERVED_3 12 string java.lang.String 1 null null PartsSupplier
+REMARKS 12 string java.lang.String 1 Procedures System PartsSupplier
+PROCEDURE_TYPE 5 short java.lang.Short 1 null null PartsSupplier
+SPECIFIC_NAME 12 string java.lang.String 0 Procedures System PartsSupplier
Modified: branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Procedures.txt
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Procedures.txt 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Procedures.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,6 +1,4 @@
PROCEDURE_CAT[string] PROCEDURE_SCHEM[string] PROCEDURE_NAME[string] RESERVED_1[string] RESERVED_2[string] RESERVED_3[string] REMARKS[string] PROCEDURE_TYPE[short] SPECIFIC_NAME[string]
-null PartsSupplier System.describe null null null null 2 System.describe
-null PartsSupplier System.getBinaryVDBResource null null null null 2 System.getBinaryVDBResource
-null PartsSupplier System.getCharacterVDBResource null null null null 2 System.getCharacterVDBResource
-null PartsSupplier System.getUpdatedCharacterVDBResource null null null null 2 System.getUpdatedCharacterVDBResource
-null PartsSupplier System.getVDBResourcePaths null null null null 2 System.getVDBResourcePaths
+PartsSupplier System getBinaryVDBResource null null null null 2 getBinaryVDBResource
+PartsSupplier System getCharacterVDBResource null null null null 2 getCharacterVDBResource
+PartsSupplier System getVDBResourcePaths null null null null 2 getVDBResourcePaths
Modified: branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Schemas.metadata.txt
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Schemas.metadata.txt 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Schemas.metadata.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,3 +1,3 @@
ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName
-TABLE_SCHEM 12 string java.lang.String 0 System.VirtualDatabases PartsSupplier null
-TABLE_CATALOG 12 string java.lang.String 1 null PartsSupplier null
+TABLE_SCHEM 12 string java.lang.String 1 Schemas System PartsSupplier
+TABLE_CATALOG 12 string java.lang.String 1 Schemas System PartsSupplier
Modified: branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Schemas.txt
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Schemas.txt 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Schemas.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,2 +1,3 @@
-TABLE_SCHEM[string] TABLE_CATALOG[string]
-PartsSupplier null
+TABLE_SCHEM[string] TABLE_CATALOG[string]
+PartsSupplier PartsSupplier
+System PartsSupplier
Modified: branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Tables.metadata.txt
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Tables.metadata.txt 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Tables.metadata.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,12 +1,12 @@
ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName
-TABLE_CAT 12 string java.lang.String 1 null PartsSupplier null
-TABLE_SCHEM 12 string java.lang.String 0 System.VirtualDatabases PartsSupplier null
-TABLE_NAME 12 string java.lang.String 0 System.Groups PartsSupplier null
-TABLE_TYPE 12 string java.lang.String 1 null PartsSupplier null
-REMARKS 12 string java.lang.String 1 System.Groups PartsSupplier null
-TYPE_CAT 12 string java.lang.String 1 null PartsSupplier null
-TYPE_SCHEM 12 string java.lang.String 1 null PartsSupplier null
-TYPE_NAME 12 string java.lang.String 1 null PartsSupplier null
-SELF_REFERENCING_COL_NAME 12 string java.lang.String 1 null PartsSupplier null
-REF_GENERATION 12 string java.lang.String 1 null PartsSupplier null
-ISPHYSICAL -7 boolean java.lang.Boolean 0 System.Groups PartsSupplier null
+TABLE_CAT 12 string java.lang.String 1 Tables System PartsSupplier
+TABLE_SCHEM 12 string java.lang.String 1 Tables System PartsSupplier
+TABLE_NAME 12 string java.lang.String 0 Tables System PartsSupplier
+TABLE_TYPE 12 string java.lang.String 1 null null PartsSupplier
+REMARKS 12 string java.lang.String 1 Tables System PartsSupplier
+TYPE_CAT 12 string java.lang.String 1 null null PartsSupplier
+TYPE_SCHEM 12 string java.lang.String 1 null null PartsSupplier
+TYPE_NAME 12 string java.lang.String 1 null null PartsSupplier
+SELF_REFERENCING_COL_NAME 12 string java.lang.String 1 null null PartsSupplier
+REF_GENERATION 12 string java.lang.String 1 null null PartsSupplier
+ISPHYSICAL -7 boolean java.lang.Boolean 0 Tables System PartsSupplier
Modified: branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Tables.txt
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Tables.txt 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/Tables.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,31 +1,17 @@
TABLE_CAT[string] TABLE_SCHEM[string] TABLE_NAME[string] TABLE_TYPE[string] REMARKS[string] TYPE_CAT[string] TYPE_SCHEM[string] TYPE_NAME[string] SELF_REFERENCING_COL_NAME[string] REF_GENERATION[string] ISPHYSICAL[boolean]
-null PartsSupplier System.DataTypeElementProperties SYSTEM TABLE null null null null null null false
-null PartsSupplier System.DataTypeElements SYSTEM TABLE null null null null null null false
-null PartsSupplier System.DataTypeProperties SYSTEM TABLE null null null null null null false
-null PartsSupplier System.DataTypes SYSTEM TABLE null null null null null null false
-null PartsSupplier System.ElementProperties SYSTEM TABLE null null null null null null false
-null PartsSupplier System.Elements SYSTEM TABLE null null null null null null false
-null PartsSupplier System.GroupProperties SYSTEM TABLE null null null null null null false
-null PartsSupplier System.Groups SYSTEM TABLE null null null null null null false
-null PartsSupplier System.JDBC.ReferenceKeyColumns SYSTEM TABLE null null null null null null false
-null PartsSupplier System.KeyElements SYSTEM TABLE null null null null null null false
-null PartsSupplier System.KeyProperties SYSTEM TABLE null null null null null null false
-null PartsSupplier System.Keys SYSTEM TABLE null null null null null null false
-null PartsSupplier System.ModelProperties SYSTEM TABLE null null null null null null false
-null PartsSupplier System.Models SYSTEM TABLE null null null null null null false
-null PartsSupplier System.ODBC.OA_COLUMNS SYSTEM TABLE null null null null null null false
-null PartsSupplier System.ODBC.OA_FKEYS SYSTEM TABLE null null null null null null false
-null PartsSupplier System.ODBC.OA_PROC SYSTEM TABLE null null null null null null false
-null PartsSupplier System.ODBC.OA_PROCCOLUMNS SYSTEM TABLE null null null null null null false
-null PartsSupplier System.ODBC.OA_STATISTICS SYSTEM TABLE null null null null null null false
-null PartsSupplier System.ODBC.OA_TABLES SYSTEM TABLE null null null null null null false
-null PartsSupplier System.ODBC.OA_TYPES SYSTEM TABLE null null null null null null false
-null PartsSupplier System.ProcedureParams SYSTEM TABLE null null null null null null false
-null PartsSupplier System.ProcedureProperties SYSTEM TABLE null null null null null null false
-null PartsSupplier System.Procedures SYSTEM TABLE null null null null null null false
-null PartsSupplier System.VirtualDatabases SYSTEM TABLE null null null null null null false
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.PARTS TABLE null null null null null null true
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.SHIP_VIA TABLE null null null null null null true
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.STATUS TABLE null null null null null null true
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER TABLE null null null null null null true
-null PartsSupplier PartsSupplier.PARTSSUPPLIER.SUPPLIER_PARTS TABLE null null null null null null true
+PartsSupplier System Columns SYSTEM TABLE null null null null null null true
+PartsSupplier System DataTypes SYSTEM TABLE null null null null null null true
+PartsSupplier System KeyColumns SYSTEM TABLE null null null null null null true
+PartsSupplier System Keys SYSTEM TABLE null null null null null null true
+PartsSupplier System ProcedureParams SYSTEM TABLE null null null null null null true
+PartsSupplier System Procedures SYSTEM TABLE null null null null null null true
+PartsSupplier System Properties SYSTEM TABLE null null null null null null true
+PartsSupplier System ReferenceKeyColumns SYSTEM TABLE null null null null null null true
+PartsSupplier System Schemas SYSTEM TABLE null null null null null null true
+PartsSupplier System Tables SYSTEM TABLE null null null null null null true
+PartsSupplier System VirtualDatabases SYSTEM TABLE null null null null null null true
+PartsSupplier PartsSupplier PARTSSUPPLIER.PARTS TABLE null null null null null null true
+PartsSupplier PartsSupplier PARTSSUPPLIER.SHIP_VIA TABLE null null null null null null true
+PartsSupplier PartsSupplier PARTSSUPPLIER.STATUS TABLE null null null null null null true
+PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER TABLE null null null null null null true
+PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS TABLE null null null null null null true
Modified: branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/TypeInfo.metadata.txt
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/TypeInfo.metadata.txt 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/TypeInfo.metadata.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,19 +1,19 @@
ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName
-TYPE_NAME 12 string java.lang.String 0 System.DataTypes PartsSupplier null
-DATA_TYPE 4 integer java.lang.Integer 1 System.DataTypes PartsSupplier null
-PRECISION 4 integer java.lang.Integer 1 System.DataTypes PartsSupplier null
-LITERAL_PREFIX 12 string java.lang.String 1 System.DataTypes PartsSupplier null
-LITERAL_SUFFIX 12 string java.lang.String 1 System.DataTypes PartsSupplier null
-CREATE_PARAMS 12 string java.lang.String 1 System.DataTypes PartsSupplier null
-NULLABLE 5 short java.lang.Short 1 System.DataTypes PartsSupplier null
-CASE_SENSITIVE -7 boolean java.lang.Boolean 0 System.DataTypes PartsSupplier null
-SEARCHABLE 5 short java.lang.Short 1 System.DataTypes PartsSupplier null
-UNSIGNED_ATTRIBUTE -7 boolean java.lang.Boolean 1 System.DataTypes PartsSupplier null
-FIXED_PREC_SCALE -7 boolean java.lang.Boolean 1 System.DataTypes PartsSupplier null
-AUTO_INCREMENT -7 boolean java.lang.Boolean 0 System.DataTypes PartsSupplier null
-LOCAL_TYPE_NAME 12 string java.lang.String 0 System.DataTypes PartsSupplier null
-MINIMUM_SCALE 5 short java.lang.Short 1 System.DataTypes PartsSupplier null
-MAXIMUM_SCALE 5 short java.lang.Short 1 System.DataTypes PartsSupplier null
-SQL_DATA_TYPE 4 integer java.lang.Integer 1 System.DataTypes PartsSupplier null
-SQL_DATETIME_SUB 4 integer java.lang.Integer 1 System.DataTypes PartsSupplier null
-NUM_PREC_RADIX 4 integer java.lang.Integer 1 System.DataTypes PartsSupplier null
+TYPE_NAME 12 string java.lang.String 0 DataTypes System PartsSupplier
+DATA_TYPE 4 integer java.lang.Integer 1 DataTypes System PartsSupplier
+PRECISION 4 integer java.lang.Integer 1 DataTypes System PartsSupplier
+LITERAL_PREFIX 12 string java.lang.String 1 DataTypes System PartsSupplier
+LITERAL_SUFFIX 12 string java.lang.String 1 DataTypes System PartsSupplier
+CREATE_PARAMS 12 string java.lang.String 1 DataTypes System PartsSupplier
+NULLABLE 5 short java.lang.Short 1 DataTypes System PartsSupplier
+CASE_SENSITIVE -7 boolean java.lang.Boolean 0 DataTypes System PartsSupplier
+SEARCHABLE 5 short java.lang.Short 1 DataTypes System PartsSupplier
+UNSIGNED_ATTRIBUTE -7 boolean java.lang.Boolean 1 DataTypes System PartsSupplier
+FIXED_PREC_SCALE -7 boolean java.lang.Boolean 1 DataTypes System PartsSupplier
+AUTO_INCREMENT -7 boolean java.lang.Boolean 0 DataTypes System PartsSupplier
+LOCAL_TYPE_NAME 12 string java.lang.String 0 DataTypes System PartsSupplier
+MINIMUM_SCALE 5 short java.lang.Short 1 DataTypes System PartsSupplier
+MAXIMUM_SCALE 5 short java.lang.Short 1 DataTypes System PartsSupplier
+SQL_DATA_TYPE 4 integer java.lang.Integer 1 DataTypes System PartsSupplier
+SQL_DATETIME_SUB 4 integer java.lang.Integer 1 DataTypes System PartsSupplier
+NUM_PREC_RADIX 4 integer java.lang.Integer 1 DataTypes System PartsSupplier
Modified: branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/TypeInfo.txt
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/TypeInfo.txt 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/TypeInfo.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,4 +1,4 @@
-TYPE_NAME[string] DATA_TYPE[integer] PRECISION[integer] LITERAL_PREFIX[string] LITERAL_SUFFIX[string] CREATE_PARAMS[string] NULLABLE[short] CASE_SENSITIVE[boolean] SEARCHABLE[short] UNSIGNED_ATTRIBUTE[boolean] FIXED_PREC_SCALE[boolean] AUTO_INCREMENT[boolean] LOCAL_TYPE_NAME[string] MINIMUM_SCALE[short] MAXIMUM_SCALE[short] SQL_DATA_TYPE[integer] SQL_DATETIME_SUB[integer] NUM_PREC_RADIX[integer]
+TYPE_NAME[string] DATA_TYPE[integer] PRECISION[integer] LITERAL_PREFIX[string] LITERAL_SUFFIX[string] CREATE_PARAMS[string] NULLABLE[short] CASE_SENSITIVE[boolean] SEARCHABLE[short] UNSIGNED_ATTRIBUTE[boolean] FIXED_PREC_SCALE[boolean] AUTO_INCREMENT[boolean] LOCAL_TYPE_NAME[string] MINIMUM_SCALE[short] MAXIMUM_SCALE[short] SQL_DATA_TYPE[integer] SQL_DATETIME_SUB[integer] NUM_PREC_RADIX[integer]
boolean -7 1 {b' } null 1 false 3 true true false boolean 0 255 null null 0
byte -6 3 null null null 1 false 3 true true false byte 0 255 null null 0
long -5 19 null null null 1 false 3 false false false long 0 255 null null 10
@@ -16,4 +16,4 @@
timestamp 93 29 {ts' } null 1 false 3 true true false timestamp 0 255 null null 0
object 2000 2147483647 null null null 1 false 3 true true false object 0 255 null null 0
blob 2004 2147483647 null null null 1 false 3 true true false blob 0 255 null null 0
-clob 2005 2147483647 null null null 1 false 3 true true false clob 0 255 null null 0
\ No newline at end of file
+clob 2005 2147483647 null null null 1 false 3 true true false clob 0 255 null null 0
Modified: branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/UDTs.metadata.txt
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/UDTs.metadata.txt 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/UDTs.metadata.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,8 +1,8 @@
ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName
-TYPE_CAT 12 string java.lang.String 2 null PartsSupplier null
-TYPE_SCHEM 12 string java.lang.String 2 null PartsSupplier null
-TYPE_NAME 12 string java.lang.String 2 null PartsSupplier null
-CLASS_NAME 12 string java.lang.String 2 null PartsSupplier null
-DATA_TYPE 12 string java.lang.String 2 null PartsSupplier null
-REMARKS 12 string java.lang.String 2 null PartsSupplier null
-BASE_TYPE 5 short java.lang.Short 2 null PartsSupplier null
+TYPE_CAT 12 string java.lang.String 2 null null PartsSupplier
+TYPE_SCHEM 12 string java.lang.String 2 null null PartsSupplier
+TYPE_NAME 12 string java.lang.String 2 null null PartsSupplier
+CLASS_NAME 12 string java.lang.String 2 null null PartsSupplier
+DATA_TYPE 12 string java.lang.String 2 null null PartsSupplier
+REMARKS 12 string java.lang.String 2 null null PartsSupplier
+BASE_TYPE 5 short java.lang.Short 2 null null PartsSupplier
Modified: branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/UDTs.txt
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/UDTs.txt 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/partssupplier/expected/UDTs.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1 +1 @@
-TYPE_CAT[string] TYPE_SCHEM[string] TYPE_NAME[string] CLASS_NAME[string] DATA_TYPE[string] REMARKS[string] BASE_TYPE[short]
+TYPE_CAT[string] TYPE_SCHEM[string] TYPE_NAME[string] CLASS_NAME[string] DATA_TYPE[string] REMARKS[string] BASE_TYPE[short]
Modified: branches/JCA/test-integration/common/src/test/resources/script.txt
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/script.txt 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/common/src/test/resources/script.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -124,29 +124,6 @@
quit
}
-testTabsInResults {
- loadFromScript object.bsh
- select toString from table1;
- result [
-toString
-hey
-result [
-1\t2\n3\t4\n5\t6
- ]
-}
-
-testBracketsInResult {
- loadFromScript object2.bsh
- select toString from table1;
- result [
-toString
-hey
-there
-some data]
-some more data}
- ]
-}
-
testHelp {
help
result [
Copied: branches/JCA/test-integration/common/src/test/resources/system (from rev 1614, trunk/test-integration/common/src/test/resources/system)
Copied: branches/JCA/test-integration/common/src/test/resources/system/expected (from rev 1614, trunk/test-integration/common/src/test/resources/system/expected)
Deleted: branches/JCA/test-integration/common/src/test/resources/system/expected/Columns.metadata.txt
===================================================================
--- trunk/test-integration/common/src/test/resources/system/expected/Columns.metadata.txt 2009-12-01 21:17:40 UTC (rev 1614)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/Columns.metadata.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,29 +0,0 @@
-ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName
-VDBName 12 string java.lang.String 0 Columns System PartsSupplier
-SchemaName 12 string java.lang.String 1 Columns System PartsSupplier
-TableName 12 string java.lang.String 0 Columns System PartsSupplier
-Name 12 string java.lang.String 0 Columns System PartsSupplier
-Position 4 integer java.lang.Integer 0 Columns System PartsSupplier
-NameInSource 12 string java.lang.String 1 Columns System PartsSupplier
-DataType 12 string java.lang.String 0 Columns System PartsSupplier
-Scale 4 integer java.lang.Integer 0 Columns System PartsSupplier
-ElementLength 4 integer java.lang.Integer 0 Columns System PartsSupplier
-IsLengthFixed -7 boolean java.lang.Boolean 0 Columns System PartsSupplier
-SupportsSelect -7 boolean java.lang.Boolean 0 Columns System PartsSupplier
-SupportsUpdates -7 boolean java.lang.Boolean 0 Columns System PartsSupplier
-IsCaseSensitive -7 boolean java.lang.Boolean 0 Columns System PartsSupplier
-IsSigned -7 boolean java.lang.Boolean 0 Columns System PartsSupplier
-IsCurrency -7 boolean java.lang.Boolean 0 Columns System PartsSupplier
-IsAutoIncremented -7 boolean java.lang.Boolean 0 Columns System PartsSupplier
-NullType 12 string java.lang.String 0 Columns System PartsSupplier
-MinRange 12 string java.lang.String 1 Columns System PartsSupplier
-MaxRange 12 string java.lang.String 1 Columns System PartsSupplier
-SearchType 12 string java.lang.String 0 Columns System PartsSupplier
-Format 12 string java.lang.String 1 Columns System PartsSupplier
-DefaultValue 12 string java.lang.String 1 Columns System PartsSupplier
-JavaClass 12 string java.lang.String 0 Columns System PartsSupplier
-Precision 4 integer java.lang.Integer 0 Columns System PartsSupplier
-CharOctetLength 4 integer java.lang.Integer 1 Columns System PartsSupplier
-Radix 4 integer java.lang.Integer 0 Columns System PartsSupplier
-UID 12 string java.lang.String 0 Columns System PartsSupplier
-Description 12 string java.lang.String 1 Columns System PartsSupplier
Copied: branches/JCA/test-integration/common/src/test/resources/system/expected/Columns.metadata.txt (from rev 1614, trunk/test-integration/common/src/test/resources/system/expected/Columns.metadata.txt)
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/system/expected/Columns.metadata.txt (rev 0)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/Columns.metadata.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,29 @@
+ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName
+VDBName 12 string java.lang.String 0 Columns System PartsSupplier
+SchemaName 12 string java.lang.String 1 Columns System PartsSupplier
+TableName 12 string java.lang.String 0 Columns System PartsSupplier
+Name 12 string java.lang.String 0 Columns System PartsSupplier
+Position 4 integer java.lang.Integer 0 Columns System PartsSupplier
+NameInSource 12 string java.lang.String 1 Columns System PartsSupplier
+DataType 12 string java.lang.String 0 Columns System PartsSupplier
+Scale 4 integer java.lang.Integer 0 Columns System PartsSupplier
+ElementLength 4 integer java.lang.Integer 0 Columns System PartsSupplier
+IsLengthFixed -7 boolean java.lang.Boolean 0 Columns System PartsSupplier
+SupportsSelect -7 boolean java.lang.Boolean 0 Columns System PartsSupplier
+SupportsUpdates -7 boolean java.lang.Boolean 0 Columns System PartsSupplier
+IsCaseSensitive -7 boolean java.lang.Boolean 0 Columns System PartsSupplier
+IsSigned -7 boolean java.lang.Boolean 0 Columns System PartsSupplier
+IsCurrency -7 boolean java.lang.Boolean 0 Columns System PartsSupplier
+IsAutoIncremented -7 boolean java.lang.Boolean 0 Columns System PartsSupplier
+NullType 12 string java.lang.String 0 Columns System PartsSupplier
+MinRange 12 string java.lang.String 1 Columns System PartsSupplier
+MaxRange 12 string java.lang.String 1 Columns System PartsSupplier
+SearchType 12 string java.lang.String 0 Columns System PartsSupplier
+Format 12 string java.lang.String 1 Columns System PartsSupplier
+DefaultValue 12 string java.lang.String 1 Columns System PartsSupplier
+JavaClass 12 string java.lang.String 0 Columns System PartsSupplier
+Precision 4 integer java.lang.Integer 0 Columns System PartsSupplier
+CharOctetLength 4 integer java.lang.Integer 1 Columns System PartsSupplier
+Radix 4 integer java.lang.Integer 0 Columns System PartsSupplier
+UID 12 string java.lang.String 0 Columns System PartsSupplier
+Description 12 string java.lang.String 1 Columns System PartsSupplier
Deleted: branches/JCA/test-integration/common/src/test/resources/system/expected/Columns.txt
===================================================================
--- trunk/test-integration/common/src/test/resources/system/expected/Columns.txt 2009-12-01 21:17:40 UTC (rev 1614)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/Columns.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,141 +0,0 @@
-VDBName[string] SchemaName[string] TableName[string] Name[string] Position[integer] NameInSource[string] DataType[string] Scale[integer] ElementLength[integer] IsLengthFixed[boolean] SupportsSelect[boolean] SupportsUpdates[boolean] IsCaseSensitive[boolean] IsSigned[boolean] IsCurrency[boolean] IsAutoIncremented[boolean] NullType[string] MinRange[string] MaxRange[string] SearchType[string] Format[string] DefaultValue[string] JavaClass[string] Precision[integer] CharOctetLength[integer] Radix[integer] UID[string] Description[string]
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System Columns ElementLength 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-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
-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
-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
-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
-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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
-PartsSupplier System 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
Copied: branches/JCA/test-integration/common/src/test/resources/system/expected/Columns.txt (from rev 1614, trunk/test-integration/common/src/test/resources/system/expected/Columns.txt)
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/system/expected/Columns.txt (rev 0)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/Columns.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,141 @@
+VDBName[string] SchemaName[string] TableName[string] Name[string] Position[integer] NameInSource[string] DataType[string] Scale[integer] ElementLength[integer] IsLengthFixed[boolean] SupportsSelect[boolean] SupportsUpdates[boolean] IsCaseSensitive[boolean] IsSigned[boolean] IsCurrency[boolean] IsAutoIncremented[boolean] NullType[string] MinRange[string] MaxRange[string] SearchType[string] Format[string] DefaultValue[string] JavaClass[string] Precision[integer] CharOctetLength[integer] Radix[integer] UID[string] Description[string]
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System Columns ElementLength 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+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
+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
+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
+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
+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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
+PartsSupplier System 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
Deleted: branches/JCA/test-integration/common/src/test/resources/system/expected/DataTypes.metadata.txt
===================================================================
--- trunk/test-integration/common/src/test/resources/system/expected/DataTypes.metadata.txt 2009-12-01 21:17:40 UTC (rev 1614)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/DataTypes.metadata.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,19 +0,0 @@
-ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName
-Name 12 string java.lang.String 0 DataTypes System PartsSupplier
-IsStandard -7 boolean java.lang.Boolean 1 DataTypes System PartsSupplier
-IsPhysical -7 boolean java.lang.Boolean 1 DataTypes System PartsSupplier
-TypeName 12 string java.lang.String 0 DataTypes System PartsSupplier
-JavaClass 12 string java.lang.String 0 DataTypes System PartsSupplier
-Scale 4 integer java.lang.Integer 1 DataTypes System PartsSupplier
-TypeLength 4 integer java.lang.Integer 0 DataTypes System PartsSupplier
-NullType 12 string java.lang.String 0 DataTypes System PartsSupplier
-IsSigned -7 boolean java.lang.Boolean 0 DataTypes System PartsSupplier
-IsAutoIncremented -7 boolean java.lang.Boolean 0 DataTypes System PartsSupplier
-IsCaseSensitive -7 boolean java.lang.Boolean 0 DataTypes System PartsSupplier
-Precision 4 integer java.lang.Integer 0 DataTypes System PartsSupplier
-Radix 4 integer java.lang.Integer 1 DataTypes System PartsSupplier
-SearchType 12 string java.lang.String 0 DataTypes System PartsSupplier
-UID 12 string java.lang.String 0 DataTypes System PartsSupplier
-RuntimeType 12 string java.lang.String 1 DataTypes System PartsSupplier
-BaseType 12 string java.lang.String 1 DataTypes System PartsSupplier
-Description 12 string java.lang.String 1 DataTypes System PartsSupplier
Copied: branches/JCA/test-integration/common/src/test/resources/system/expected/DataTypes.metadata.txt (from rev 1614, trunk/test-integration/common/src/test/resources/system/expected/DataTypes.metadata.txt)
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/system/expected/DataTypes.metadata.txt (rev 0)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/DataTypes.metadata.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,19 @@
+ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName
+Name 12 string java.lang.String 0 DataTypes System PartsSupplier
+IsStandard -7 boolean java.lang.Boolean 1 DataTypes System PartsSupplier
+IsPhysical -7 boolean java.lang.Boolean 1 DataTypes System PartsSupplier
+TypeName 12 string java.lang.String 0 DataTypes System PartsSupplier
+JavaClass 12 string java.lang.String 0 DataTypes System PartsSupplier
+Scale 4 integer java.lang.Integer 1 DataTypes System PartsSupplier
+TypeLength 4 integer java.lang.Integer 0 DataTypes System PartsSupplier
+NullType 12 string java.lang.String 0 DataTypes System PartsSupplier
+IsSigned -7 boolean java.lang.Boolean 0 DataTypes System PartsSupplier
+IsAutoIncremented -7 boolean java.lang.Boolean 0 DataTypes System PartsSupplier
+IsCaseSensitive -7 boolean java.lang.Boolean 0 DataTypes System PartsSupplier
+Precision 4 integer java.lang.Integer 0 DataTypes System PartsSupplier
+Radix 4 integer java.lang.Integer 1 DataTypes System PartsSupplier
+SearchType 12 string java.lang.String 0 DataTypes System PartsSupplier
+UID 12 string java.lang.String 0 DataTypes System PartsSupplier
+RuntimeType 12 string java.lang.String 1 DataTypes System PartsSupplier
+BaseType 12 string java.lang.String 1 DataTypes System PartsSupplier
+Description 12 string java.lang.String 1 DataTypes System PartsSupplier
Deleted: branches/JCA/test-integration/common/src/test/resources/system/expected/DataTypes.txt
===================================================================
--- trunk/test-integration/common/src/test/resources/system/expected/DataTypes.txt 2009-12-01 21:17:40 UTC (rev 1614)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/DataTypes.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,53 +0,0 @@
-Name[string] IsStandard[boolean] IsPhysical[boolean] TypeName[string] JavaClass[string] Scale[integer] TypeLength[integer] NullType[string] IsSigned[boolean] IsAutoIncremented[boolean] IsCaseSensitive[boolean] Precision[integer] Radix[integer] SearchType[string] UID[string] RuntimeType[string] BaseType[string] Description[string]
-ENTITIES false false ENTITIES java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:20360100-e742-1e20-8c26-a038c6ed7576 string ENTITY null
-ENTITY false false ENTITY java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:9fece300-e71a-1e20-8c26-a038c6ed7576 string NCName null
-ID false false ID java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:88b13dc0-e702-1e20-8c26-a038c6ed7576 string NCName null
-IDREF false false IDREF java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:dd33ff40-e6df-1e20-8c26-a038c6ed7576 string NCName null
-IDREFS false false IDREFS java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:3c99f780-e72d-1e20-8c26-a038c6ed7576 string IDREF null
-NCName false false NCName java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:ac00e000-e676-1e20-8c26-a038c6ed7576 string Name null
-NMTOKEN false false NMTOKEN java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:4ca2ae00-3a95-1e20-921b-eeee28353879 string token null
-NMTOKENS false false NMTOKENS java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:4b0f8500-e6a6-1e20-8c26-a038c6ed7576 string NMTOKEN null
-NOTATION false false NOTATION java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:3dcaf900-e8dc-1e2a-b433-fb67ea35c07e string anySimpleType null
-Name false false Name java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:e66c4600-e65b-1e20-8c26-a038c6ed7576 string token null
-QName false false QName java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:eeb5d780-e8c3-1e2a-b433-fb67ea35c07e string anySimpleType null
-XMLLiteral false false XMLLiteral com.metamatrix.common.types.XMLType 0 0 No Nulls false false false 0 0 Searchable mmuuid:43f5274e-55e1-1f87-ba1c-eea49143eb32 xml string null
-anyURI false false anyURI java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:6247ec80-e8a4-1e2a-b433-fb67ea35c07e string anySimpleType null
-base64Binary false false base64Binary java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:b4c99380-ebc6-1e2a-9319-8eaa9b2276c7 string anySimpleType null
-bigdecimal false false bigdecimal java.math.BigDecimal 0 0 No Nulls false false false 0 0 Searchable mmuuid:f2249740-a078-1e26-9b08-d6079ebe1f0d bigdecimal decimal null
-biginteger false false biginteger java.math.BigInteger 0 0 No Nulls false false false 0 0 Searchable mmuuid:822b9a40-a066-1e26-9b08-d6079ebe1f0d biginteger decimal null
-blob false false blob com.metamatrix.common.types.BlobType 0 0 No Nulls false false false 0 0 Searchable mmuuid:5a793100-1836-1ed0-ba0f-f2334f5fbf95 blob base64Binary null
-boolean false false boolean java.lang.Boolean 0 0 No Nulls false false false 0 0 Searchable mmuuid:dc476100-c483-1e24-9b01-c8207cd53eb7 boolean anySimpleType null
-byte false false byte java.lang.Byte 0 0 No Nulls false false false 0 0 Searchable mmuuid:26dc1cc0-b9c8-1e21-b812-969c8fc8b016 byte short null
-char false false char java.lang.Character 0 0 No Nulls false false false 0 0 Searchable mmuuid:62472700-a064-1e26-9b08-d6079ebe1f0d char string null
-clob false false clob com.metamatrix.common.types.ClobType 0 0 No Nulls false false false 0 0 Searchable mmuuid:559646c0-4941-1ece-b22b-f49159d22ad3 clob string null
-date false false date java.sql.Date 0 0 No Nulls false false false 0 0 Searchable mmuuid:65dcde00-c4ab-1e24-9b01-c8207cd53eb7 date anySimpleType null
-dateTime false false dateTime java.sql.Timestamp 0 0 No Nulls false false false 0 0 Searchable mmuuid:5c69dec0-b3ea-1e2a-9a03-beb8638ffd21 timestamp anySimpleType null
-decimal false false decimal java.math.BigDecimal 0 0 No Nulls false false false 0 0 Searchable mmuuid:569dfa00-c456-1e24-9b01-c8207cd53eb7 bigdecimal anySimpleType null
-double false false double java.lang.Double 0 0 No Nulls false false false 0 0 Searchable mmuuid:1f18b140-c4a3-1e24-9b01-c8207cd53eb7 double anySimpleType null
-duration false false duration java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:28d98540-b3e7-1e2a-9a03-beb8638ffd21 string anySimpleType null
-float false false float java.lang.Float 0 0 No Nulls false false false 0 0 Searchable mmuuid:d86b0d00-c48a-1e24-9b01-c8207cd53eb7 float anySimpleType null
-gDay false false gDay java.math.BigInteger 0 0 No Nulls false false false 0 0 Searchable mmuuid:860b7dc0-b3f8-1e2a-9a03-beb8638ffd21 biginteger anySimpleType null
-gMonth false false gMonth java.math.BigInteger 0 0 No Nulls false false false 0 0 Searchable mmuuid:187f5580-b3fb-1e2a-9a03-beb8638ffd21 biginteger anySimpleType null
-gMonthDay false false gMonthDay java.sql.Timestamp 0 0 No Nulls false false false 0 0 Searchable mmuuid:6e604140-b3f5-1e2a-9a03-beb8638ffd21 timestamp anySimpleType null
-gYear false false gYear java.math.BigInteger 0 0 No Nulls false false false 0 0 Searchable mmuuid:b02c7600-b3f2-1e2a-9a03-beb8638ffd21 biginteger anySimpleType null
-gYearMonth false false gYearMonth java.sql.Timestamp 0 0 No Nulls false false false 0 0 Searchable mmuuid:17d08040-b3ed-1e2a-9a03-beb8638ffd21 timestamp anySimpleType null
-hexBinary false false hexBinary java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:d9998500-ebba-1e2a-9319-8eaa9b2276c7 string anySimpleType null
-int false false int java.lang.Integer 0 0 No Nulls false false false 0 0 Searchable mmuuid:33add3c0-b98d-1e21-b812-969c8fc8b016 integer long null
-integer false false integer java.math.BigInteger 0 0 No Nulls false false false 0 0 Searchable mmuuid:45da3500-e78f-1e20-8c26-a038c6ed7576 biginteger decimal null
-language false false language java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:d4d980c0-e623-1e20-8c26-a038c6ed7576 string token null
-long false false long java.lang.Long 0 0 No Nulls false false false 0 0 Searchable mmuuid:8cdee840-b900-1e21-b812-969c8fc8b016 long integer null
-negativeInteger false false negativeInteger java.math.BigInteger 0 0 No Nulls false false false 0 0 Searchable mmuuid:86d29280-b8d3-1e21-b812-969c8fc8b016 biginteger nonPositiveInteger null
-nonNegativeInteger false false nonNegativeInteger java.math.BigInteger 0 0 No Nulls false false false 0 0 Searchable mmuuid:0e081200-b8a4-1e21-b812-969c8fc8b016 biginteger integer null
-nonPositiveInteger false false nonPositiveInteger java.math.BigInteger 0 0 No Nulls false false false 0 0 Searchable mmuuid:cbdd6e40-b9d2-1e21-8c26-a038c6ed7576 biginteger integer null
-normalizedString false false normalizedString java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:4df43700-3b13-1e20-921b-eeee28353879 string string null
-object false false object java.lang.Object 0 0 No Nulls false false false 0 0 Searchable mmuuid:051a0640-b4e8-1e26-9f33-b76fd9d5fa79 object base64Binary null
-positiveInteger false false positiveInteger java.math.BigInteger 0 0 No Nulls false false false 0 0 Searchable mmuuid:1cbbd380-b9ea-1e21-b812-969c8fc8b016 biginteger nonNegativeInteger null
-short false false short java.lang.Short 0 0 No Nulls false false false 0 0 Searchable mmuuid:5bbcf140-b9ae-1e21-b812-969c8fc8b016 short int null
-string false false string java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:bf6c34c0-c442-1e24-9b01-c8207cd53eb7 string anySimpleType null
-time false false time java.sql.Time 0 0 No Nulls false false false 0 0 Searchable mmuuid:3b892180-c4a7-1e24-9b01-c8207cd53eb7 time anySimpleType null
-timestamp false false timestamp java.sql.Timestamp 0 0 No Nulls false false false 0 0 Searchable mmuuid:6d9809c0-a07e-1e26-9b08-d6079ebe1f0d timestamp string null
-token false false token java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:3425cb80-d844-1e20-9027-be6d2c3b8b3a string normalizedString null
-unsignedByte false false unsignedByte java.lang.Short 0 0 No Nulls false false false 0 0 Searchable mmuuid:cff745c0-baa2-1e21-b812-969c8fc8b016 short unsignedShort null
-unsignedInt false false unsignedInt java.lang.Long 0 0 No Nulls false false false 0 0 Searchable mmuuid:badcbd80-ba63-1e21-b812-969c8fc8b016 long unsignedLong null
-unsignedLong false false unsignedLong java.math.BigInteger 0 0 No Nulls false false false 0 0 Searchable mmuuid:54b98780-ba14-1e21-b812-969c8fc8b016 biginteger nonNegativeInteger null
-unsignedShort false false unsignedShort java.lang.Integer 0 0 No Nulls false false false 0 0 Searchable mmuuid:327093c0-ba88-1e21-b812-969c8fc8b016 integer unsignedInt null
Copied: branches/JCA/test-integration/common/src/test/resources/system/expected/DataTypes.txt (from rev 1614, trunk/test-integration/common/src/test/resources/system/expected/DataTypes.txt)
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/system/expected/DataTypes.txt (rev 0)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/DataTypes.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,53 @@
+Name[string] IsStandard[boolean] IsPhysical[boolean] TypeName[string] JavaClass[string] Scale[integer] TypeLength[integer] NullType[string] IsSigned[boolean] IsAutoIncremented[boolean] IsCaseSensitive[boolean] Precision[integer] Radix[integer] SearchType[string] UID[string] RuntimeType[string] BaseType[string] Description[string]
+ENTITIES false false ENTITIES java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:20360100-e742-1e20-8c26-a038c6ed7576 string ENTITY null
+ENTITY false false ENTITY java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:9fece300-e71a-1e20-8c26-a038c6ed7576 string NCName null
+ID false false ID java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:88b13dc0-e702-1e20-8c26-a038c6ed7576 string NCName null
+IDREF false false IDREF java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:dd33ff40-e6df-1e20-8c26-a038c6ed7576 string NCName null
+IDREFS false false IDREFS java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:3c99f780-e72d-1e20-8c26-a038c6ed7576 string IDREF null
+NCName false false NCName java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:ac00e000-e676-1e20-8c26-a038c6ed7576 string Name null
+NMTOKEN false false NMTOKEN java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:4ca2ae00-3a95-1e20-921b-eeee28353879 string token null
+NMTOKENS false false NMTOKENS java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:4b0f8500-e6a6-1e20-8c26-a038c6ed7576 string NMTOKEN null
+NOTATION false false NOTATION java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:3dcaf900-e8dc-1e2a-b433-fb67ea35c07e string anySimpleType null
+Name false false Name java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:e66c4600-e65b-1e20-8c26-a038c6ed7576 string token null
+QName false false QName java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:eeb5d780-e8c3-1e2a-b433-fb67ea35c07e string anySimpleType null
+XMLLiteral false false XMLLiteral com.metamatrix.common.types.XMLType 0 0 No Nulls false false false 0 0 Searchable mmuuid:43f5274e-55e1-1f87-ba1c-eea49143eb32 xml string null
+anyURI false false anyURI java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:6247ec80-e8a4-1e2a-b433-fb67ea35c07e string anySimpleType null
+base64Binary false false base64Binary java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:b4c99380-ebc6-1e2a-9319-8eaa9b2276c7 string anySimpleType null
+bigdecimal false false bigdecimal java.math.BigDecimal 0 0 No Nulls false false false 0 0 Searchable mmuuid:f2249740-a078-1e26-9b08-d6079ebe1f0d bigdecimal decimal null
+biginteger false false biginteger java.math.BigInteger 0 0 No Nulls false false false 0 0 Searchable mmuuid:822b9a40-a066-1e26-9b08-d6079ebe1f0d biginteger decimal null
+blob false false blob com.metamatrix.common.types.BlobType 0 0 No Nulls false false false 0 0 Searchable mmuuid:5a793100-1836-1ed0-ba0f-f2334f5fbf95 blob base64Binary null
+boolean false false boolean java.lang.Boolean 0 0 No Nulls false false false 0 0 Searchable mmuuid:dc476100-c483-1e24-9b01-c8207cd53eb7 boolean anySimpleType null
+byte false false byte java.lang.Byte 0 0 No Nulls false false false 0 0 Searchable mmuuid:26dc1cc0-b9c8-1e21-b812-969c8fc8b016 byte short null
+char false false char java.lang.Character 0 0 No Nulls false false false 0 0 Searchable mmuuid:62472700-a064-1e26-9b08-d6079ebe1f0d char string null
+clob false false clob com.metamatrix.common.types.ClobType 0 0 No Nulls false false false 0 0 Searchable mmuuid:559646c0-4941-1ece-b22b-f49159d22ad3 clob string null
+date false false date java.sql.Date 0 0 No Nulls false false false 0 0 Searchable mmuuid:65dcde00-c4ab-1e24-9b01-c8207cd53eb7 date anySimpleType null
+dateTime false false dateTime java.sql.Timestamp 0 0 No Nulls false false false 0 0 Searchable mmuuid:5c69dec0-b3ea-1e2a-9a03-beb8638ffd21 timestamp anySimpleType null
+decimal false false decimal java.math.BigDecimal 0 0 No Nulls false false false 0 0 Searchable mmuuid:569dfa00-c456-1e24-9b01-c8207cd53eb7 bigdecimal anySimpleType null
+double false false double java.lang.Double 0 0 No Nulls false false false 0 0 Searchable mmuuid:1f18b140-c4a3-1e24-9b01-c8207cd53eb7 double anySimpleType null
+duration false false duration java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:28d98540-b3e7-1e2a-9a03-beb8638ffd21 string anySimpleType null
+float false false float java.lang.Float 0 0 No Nulls false false false 0 0 Searchable mmuuid:d86b0d00-c48a-1e24-9b01-c8207cd53eb7 float anySimpleType null
+gDay false false gDay java.math.BigInteger 0 0 No Nulls false false false 0 0 Searchable mmuuid:860b7dc0-b3f8-1e2a-9a03-beb8638ffd21 biginteger anySimpleType null
+gMonth false false gMonth java.math.BigInteger 0 0 No Nulls false false false 0 0 Searchable mmuuid:187f5580-b3fb-1e2a-9a03-beb8638ffd21 biginteger anySimpleType null
+gMonthDay false false gMonthDay java.sql.Timestamp 0 0 No Nulls false false false 0 0 Searchable mmuuid:6e604140-b3f5-1e2a-9a03-beb8638ffd21 timestamp anySimpleType null
+gYear false false gYear java.math.BigInteger 0 0 No Nulls false false false 0 0 Searchable mmuuid:b02c7600-b3f2-1e2a-9a03-beb8638ffd21 biginteger anySimpleType null
+gYearMonth false false gYearMonth java.sql.Timestamp 0 0 No Nulls false false false 0 0 Searchable mmuuid:17d08040-b3ed-1e2a-9a03-beb8638ffd21 timestamp anySimpleType null
+hexBinary false false hexBinary java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:d9998500-ebba-1e2a-9319-8eaa9b2276c7 string anySimpleType null
+int false false int java.lang.Integer 0 0 No Nulls false false false 0 0 Searchable mmuuid:33add3c0-b98d-1e21-b812-969c8fc8b016 integer long null
+integer false false integer java.math.BigInteger 0 0 No Nulls false false false 0 0 Searchable mmuuid:45da3500-e78f-1e20-8c26-a038c6ed7576 biginteger decimal null
+language false false language java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:d4d980c0-e623-1e20-8c26-a038c6ed7576 string token null
+long false false long java.lang.Long 0 0 No Nulls false false false 0 0 Searchable mmuuid:8cdee840-b900-1e21-b812-969c8fc8b016 long integer null
+negativeInteger false false negativeInteger java.math.BigInteger 0 0 No Nulls false false false 0 0 Searchable mmuuid:86d29280-b8d3-1e21-b812-969c8fc8b016 biginteger nonPositiveInteger null
+nonNegativeInteger false false nonNegativeInteger java.math.BigInteger 0 0 No Nulls false false false 0 0 Searchable mmuuid:0e081200-b8a4-1e21-b812-969c8fc8b016 biginteger integer null
+nonPositiveInteger false false nonPositiveInteger java.math.BigInteger 0 0 No Nulls false false false 0 0 Searchable mmuuid:cbdd6e40-b9d2-1e21-8c26-a038c6ed7576 biginteger integer null
+normalizedString false false normalizedString java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:4df43700-3b13-1e20-921b-eeee28353879 string string null
+object false false object java.lang.Object 0 0 No Nulls false false false 0 0 Searchable mmuuid:051a0640-b4e8-1e26-9f33-b76fd9d5fa79 object base64Binary null
+positiveInteger false false positiveInteger java.math.BigInteger 0 0 No Nulls false false false 0 0 Searchable mmuuid:1cbbd380-b9ea-1e21-b812-969c8fc8b016 biginteger nonNegativeInteger null
+short false false short java.lang.Short 0 0 No Nulls false false false 0 0 Searchable mmuuid:5bbcf140-b9ae-1e21-b812-969c8fc8b016 short int null
+string false false string java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:bf6c34c0-c442-1e24-9b01-c8207cd53eb7 string anySimpleType null
+time false false time java.sql.Time 0 0 No Nulls false false false 0 0 Searchable mmuuid:3b892180-c4a7-1e24-9b01-c8207cd53eb7 time anySimpleType null
+timestamp false false timestamp java.sql.Timestamp 0 0 No Nulls false false false 0 0 Searchable mmuuid:6d9809c0-a07e-1e26-9b08-d6079ebe1f0d timestamp string null
+token false false token java.lang.String 0 0 No Nulls false false false 0 0 Searchable mmuuid:3425cb80-d844-1e20-9027-be6d2c3b8b3a string normalizedString null
+unsignedByte false false unsignedByte java.lang.Short 0 0 No Nulls false false false 0 0 Searchable mmuuid:cff745c0-baa2-1e21-b812-969c8fc8b016 short unsignedShort null
+unsignedInt false false unsignedInt java.lang.Long 0 0 No Nulls false false false 0 0 Searchable mmuuid:badcbd80-ba63-1e21-b812-969c8fc8b016 long unsignedLong null
+unsignedLong false false unsignedLong java.math.BigInteger 0 0 No Nulls false false false 0 0 Searchable mmuuid:54b98780-ba14-1e21-b812-969c8fc8b016 biginteger nonNegativeInteger null
+unsignedShort false false unsignedShort java.lang.Integer 0 0 No Nulls false false false 0 0 Searchable mmuuid:327093c0-ba88-1e21-b812-969c8fc8b016 integer unsignedInt null
Deleted: branches/JCA/test-integration/common/src/test/resources/system/expected/KeyColumns.metadata.txt
===================================================================
--- trunk/test-integration/common/src/test/resources/system/expected/KeyColumns.metadata.txt 2009-12-01 21:17:40 UTC (rev 1614)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/KeyColumns.metadata.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,10 +0,0 @@
-ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName
-VDBName 12 string java.lang.String 0 KeyColumns System PartsSupplier
-SchemaName 12 string java.lang.String 1 KeyColumns System PartsSupplier
-TableName 12 string java.lang.String 0 KeyColumns System PartsSupplier
-Name 12 string java.lang.String 0 KeyColumns System PartsSupplier
-KeyName 12 string java.lang.String 1 KeyColumns System PartsSupplier
-KeyType 12 string java.lang.String 0 KeyColumns System PartsSupplier
-RefKeyUID 12 string java.lang.String 1 KeyColumns System PartsSupplier
-UID 12 string java.lang.String 0 KeyColumns System PartsSupplier
-Position 4 integer java.lang.Integer 1 KeyColumns System PartsSupplier
Copied: branches/JCA/test-integration/common/src/test/resources/system/expected/KeyColumns.metadata.txt (from rev 1614, trunk/test-integration/common/src/test/resources/system/expected/KeyColumns.metadata.txt)
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/system/expected/KeyColumns.metadata.txt (rev 0)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/KeyColumns.metadata.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,10 @@
+ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName
+VDBName 12 string java.lang.String 0 KeyColumns System PartsSupplier
+SchemaName 12 string java.lang.String 1 KeyColumns System PartsSupplier
+TableName 12 string java.lang.String 0 KeyColumns System PartsSupplier
+Name 12 string java.lang.String 0 KeyColumns System PartsSupplier
+KeyName 12 string java.lang.String 1 KeyColumns System PartsSupplier
+KeyType 12 string java.lang.String 0 KeyColumns System PartsSupplier
+RefKeyUID 12 string java.lang.String 1 KeyColumns System PartsSupplier
+UID 12 string java.lang.String 0 KeyColumns System PartsSupplier
+Position 4 integer java.lang.Integer 1 KeyColumns System PartsSupplier
Deleted: branches/JCA/test-integration/common/src/test/resources/system/expected/KeyColumns.txt
===================================================================
--- trunk/test-integration/common/src/test/resources/system/expected/KeyColumns.txt 2009-12-01 21:17:40 UTC (rev 1614)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/KeyColumns.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,10 +0,0 @@
-VDBName[string] SchemaName[string] TableName[string] Name[string] KeyName[string] KeyType[string] RefKeyUID[string] UID[string] Position[integer]
-PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS PART_ID FK_SPLIER_PRTS_PRTS Foreign mmuuid:07db4240-73ff-1edc-a81c-ecf397b10590 mmuuid:66ddc4c0-73ff-1edc-a81c-ecf397b10590 1
-PartsSupplier PartsSupplier PARTSSUPPLIER.PARTS PART_ID PK_PARTS Primary null mmuuid:07db4240-73ff-1edc-a81c-ecf397b10590 1
-PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS PART_ID PK_SUPPLIER_PARTS Primary null mmuuid:455e5440-73ff-1edc-a81c-ecf397b10590 2
-PartsSupplier PartsSupplier PARTSSUPPLIER.SHIP_VIA SHIPPER_ID PK_SHIP_VIA Primary null mmuuid:18aa3cc0-73ff-1edc-a81c-ecf397b10590 1
-PartsSupplier PartsSupplier PARTSSUPPLIER.STATUS STATUS_ID PK_STATUS Primary null mmuuid:25a8a740-73ff-1edc-a81c-ecf397b10590 1
-PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS SUPPLIER_ID FK_SPLY_PRTS_SPLY Foreign mmuuid:375c8380-73ff-1edc-a81c-ecf397b10590 mmuuid:66ddc4c1-73ff-1edc-a81c-ecf397b10590 1
-PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER SUPPLIER_ID PK_SUPPLIER Primary null mmuuid:375c8380-73ff-1edc-a81c-ecf397b10590 1
-PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS SUPPLIER_ID PK_SUPPLIER_PARTS Primary null mmuuid:455e5440-73ff-1edc-a81c-ecf397b10590 1
-PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER SUPPLIER_STATUS FK_SPLIER_STATS Foreign mmuuid:25a8a740-73ff-1edc-a81c-ecf397b10590 mmuuid:5ac43c00-73ff-1edc-a81c-ecf397b10590 1
Copied: branches/JCA/test-integration/common/src/test/resources/system/expected/KeyColumns.txt (from rev 1614, trunk/test-integration/common/src/test/resources/system/expected/KeyColumns.txt)
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/system/expected/KeyColumns.txt (rev 0)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/KeyColumns.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,10 @@
+VDBName[string] SchemaName[string] TableName[string] Name[string] KeyName[string] KeyType[string] RefKeyUID[string] UID[string] Position[integer]
+PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS PART_ID FK_SPLIER_PRTS_PRTS Foreign mmuuid:07db4240-73ff-1edc-a81c-ecf397b10590 mmuuid:66ddc4c0-73ff-1edc-a81c-ecf397b10590 1
+PartsSupplier PartsSupplier PARTSSUPPLIER.PARTS PART_ID PK_PARTS Primary null mmuuid:07db4240-73ff-1edc-a81c-ecf397b10590 1
+PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS PART_ID PK_SUPPLIER_PARTS Primary null mmuuid:455e5440-73ff-1edc-a81c-ecf397b10590 2
+PartsSupplier PartsSupplier PARTSSUPPLIER.SHIP_VIA SHIPPER_ID PK_SHIP_VIA Primary null mmuuid:18aa3cc0-73ff-1edc-a81c-ecf397b10590 1
+PartsSupplier PartsSupplier PARTSSUPPLIER.STATUS STATUS_ID PK_STATUS Primary null mmuuid:25a8a740-73ff-1edc-a81c-ecf397b10590 1
+PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS SUPPLIER_ID FK_SPLY_PRTS_SPLY Foreign mmuuid:375c8380-73ff-1edc-a81c-ecf397b10590 mmuuid:66ddc4c1-73ff-1edc-a81c-ecf397b10590 1
+PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER SUPPLIER_ID PK_SUPPLIER Primary null mmuuid:375c8380-73ff-1edc-a81c-ecf397b10590 1
+PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS SUPPLIER_ID PK_SUPPLIER_PARTS Primary null mmuuid:455e5440-73ff-1edc-a81c-ecf397b10590 1
+PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER SUPPLIER_STATUS FK_SPLIER_STATS Foreign mmuuid:25a8a740-73ff-1edc-a81c-ecf397b10590 mmuuid:5ac43c00-73ff-1edc-a81c-ecf397b10590 1
Deleted: branches/JCA/test-integration/common/src/test/resources/system/expected/Keys.metadata.txt
===================================================================
--- trunk/test-integration/common/src/test/resources/system/expected/Keys.metadata.txt 2009-12-01 21:17:40 UTC (rev 1614)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/Keys.metadata.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,11 +0,0 @@
-ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName
-VDBName 12 string java.lang.String 0 Keys System PartsSupplier
-SchemaName 12 string java.lang.String 1 Keys System PartsSupplier
-TableName 12 string java.lang.String 0 Keys System PartsSupplier
-Name 12 string java.lang.String 0 Keys System PartsSupplier
-Description 12 string java.lang.String 1 Keys System PartsSupplier
-NameInSource 12 string java.lang.String 1 Keys System PartsSupplier
-Type 12 string java.lang.String 0 Keys System PartsSupplier
-IsIndexed -7 boolean java.lang.Boolean 0 Keys System PartsSupplier
-RefKeyUID 12 string java.lang.String 1 Keys System PartsSupplier
-UID 12 string java.lang.String 0 Keys System PartsSupplier
Copied: branches/JCA/test-integration/common/src/test/resources/system/expected/Keys.metadata.txt (from rev 1614, trunk/test-integration/common/src/test/resources/system/expected/Keys.metadata.txt)
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/system/expected/Keys.metadata.txt (rev 0)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/Keys.metadata.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,11 @@
+ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName
+VDBName 12 string java.lang.String 0 Keys System PartsSupplier
+SchemaName 12 string java.lang.String 1 Keys System PartsSupplier
+TableName 12 string java.lang.String 0 Keys System PartsSupplier
+Name 12 string java.lang.String 0 Keys System PartsSupplier
+Description 12 string java.lang.String 1 Keys System PartsSupplier
+NameInSource 12 string java.lang.String 1 Keys System PartsSupplier
+Type 12 string java.lang.String 0 Keys System PartsSupplier
+IsIndexed -7 boolean java.lang.Boolean 0 Keys System PartsSupplier
+RefKeyUID 12 string java.lang.String 1 Keys System PartsSupplier
+UID 12 string java.lang.String 0 Keys System PartsSupplier
Deleted: branches/JCA/test-integration/common/src/test/resources/system/expected/Keys.txt
===================================================================
--- trunk/test-integration/common/src/test/resources/system/expected/Keys.txt 2009-12-01 21:17:40 UTC (rev 1614)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/Keys.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,9 +0,0 @@
-VDBName[string] SchemaName[string] TableName[string] Name[string] Description[string] NameInSource[string] Type[string] IsIndexed[boolean] RefKeyUID[string] UID[string]
-PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS FK_SPLIER_PRTS_PRTS null FK_SPLIER_PRTS_PRTS Foreign false mmuuid:07db4240-73ff-1edc-a81c-ecf397b10590 mmuuid:66ddc4c0-73ff-1edc-a81c-ecf397b10590
-PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER FK_SPLIER_STATS null FK_SPLIER_STATS Foreign false mmuuid:25a8a740-73ff-1edc-a81c-ecf397b10590 mmuuid:5ac43c00-73ff-1edc-a81c-ecf397b10590
-PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS FK_SPLY_PRTS_SPLY null FK_SPLY_PRTS_SPLY Foreign false mmuuid:375c8380-73ff-1edc-a81c-ecf397b10590 mmuuid:66ddc4c1-73ff-1edc-a81c-ecf397b10590
-PartsSupplier PartsSupplier PARTSSUPPLIER.PARTS PK_PARTS null null Primary false null mmuuid:07db4240-73ff-1edc-a81c-ecf397b10590
-PartsSupplier PartsSupplier PARTSSUPPLIER.SHIP_VIA PK_SHIP_VIA null null Primary false null mmuuid:18aa3cc0-73ff-1edc-a81c-ecf397b10590
-PartsSupplier PartsSupplier PARTSSUPPLIER.STATUS PK_STATUS null null Primary false null mmuuid:25a8a740-73ff-1edc-a81c-ecf397b10590
-PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER PK_SUPPLIER null null Primary false null mmuuid:375c8380-73ff-1edc-a81c-ecf397b10590
-PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS PK_SUPPLIER_PARTS null null Primary false null mmuuid:455e5440-73ff-1edc-a81c-ecf397b10590
Copied: branches/JCA/test-integration/common/src/test/resources/system/expected/Keys.txt (from rev 1614, trunk/test-integration/common/src/test/resources/system/expected/Keys.txt)
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/system/expected/Keys.txt (rev 0)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/Keys.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,9 @@
+VDBName[string] SchemaName[string] TableName[string] Name[string] Description[string] NameInSource[string] Type[string] IsIndexed[boolean] RefKeyUID[string] UID[string]
+PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS FK_SPLIER_PRTS_PRTS null FK_SPLIER_PRTS_PRTS Foreign false mmuuid:07db4240-73ff-1edc-a81c-ecf397b10590 mmuuid:66ddc4c0-73ff-1edc-a81c-ecf397b10590
+PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER FK_SPLIER_STATS null FK_SPLIER_STATS Foreign false mmuuid:25a8a740-73ff-1edc-a81c-ecf397b10590 mmuuid:5ac43c00-73ff-1edc-a81c-ecf397b10590
+PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS FK_SPLY_PRTS_SPLY null FK_SPLY_PRTS_SPLY Foreign false mmuuid:375c8380-73ff-1edc-a81c-ecf397b10590 mmuuid:66ddc4c1-73ff-1edc-a81c-ecf397b10590
+PartsSupplier PartsSupplier PARTSSUPPLIER.PARTS PK_PARTS null null Primary false null mmuuid:07db4240-73ff-1edc-a81c-ecf397b10590
+PartsSupplier PartsSupplier PARTSSUPPLIER.SHIP_VIA PK_SHIP_VIA null null Primary false null mmuuid:18aa3cc0-73ff-1edc-a81c-ecf397b10590
+PartsSupplier PartsSupplier PARTSSUPPLIER.STATUS PK_STATUS null null Primary false null mmuuid:25a8a740-73ff-1edc-a81c-ecf397b10590
+PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER PK_SUPPLIER null null Primary false null mmuuid:375c8380-73ff-1edc-a81c-ecf397b10590
+PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS PK_SUPPLIER_PARTS null null Primary false null mmuuid:455e5440-73ff-1edc-a81c-ecf397b10590
Deleted: branches/JCA/test-integration/common/src/test/resources/system/expected/ProcedureParams.metadata.txt
===================================================================
--- trunk/test-integration/common/src/test/resources/system/expected/ProcedureParams.metadata.txt 2009-12-01 21:17:40 UTC (rev 1614)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/ProcedureParams.metadata.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,15 +0,0 @@
-ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName
-VDBName 12 string java.lang.String 0 ProcedureParams System PartsSupplier
-SchemaName 12 string java.lang.String 1 ProcedureParams System PartsSupplier
-ProcedureName 12 string java.lang.String 0 ProcedureParams System PartsSupplier
-Name 12 string java.lang.String 0 ProcedureParams System PartsSupplier
-DataType 12 string java.lang.String 0 ProcedureParams System PartsSupplier
-Position 4 integer java.lang.Integer 0 ProcedureParams System PartsSupplier
-Type 12 string java.lang.String 0 ProcedureParams System PartsSupplier
-Optional -7 boolean java.lang.Boolean 0 ProcedureParams System PartsSupplier
-Precision 4 integer java.lang.Integer 0 ProcedureParams System PartsSupplier
-TypeLength 4 integer java.lang.Integer 0 ProcedureParams System PartsSupplier
-Scale 4 integer java.lang.Integer 0 ProcedureParams System PartsSupplier
-Radix 4 integer java.lang.Integer 0 ProcedureParams System PartsSupplier
-NullType 12 string java.lang.String 0 ProcedureParams System PartsSupplier
-UID 12 string java.lang.String 1 ProcedureParams System PartsSupplier
Copied: branches/JCA/test-integration/common/src/test/resources/system/expected/ProcedureParams.metadata.txt (from rev 1614, trunk/test-integration/common/src/test/resources/system/expected/ProcedureParams.metadata.txt)
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/system/expected/ProcedureParams.metadata.txt (rev 0)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/ProcedureParams.metadata.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,15 @@
+ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName
+VDBName 12 string java.lang.String 0 ProcedureParams System PartsSupplier
+SchemaName 12 string java.lang.String 1 ProcedureParams System PartsSupplier
+ProcedureName 12 string java.lang.String 0 ProcedureParams System PartsSupplier
+Name 12 string java.lang.String 0 ProcedureParams System PartsSupplier
+DataType 12 string java.lang.String 0 ProcedureParams System PartsSupplier
+Position 4 integer java.lang.Integer 0 ProcedureParams System PartsSupplier
+Type 12 string java.lang.String 0 ProcedureParams System PartsSupplier
+Optional -7 boolean java.lang.Boolean 0 ProcedureParams System PartsSupplier
+Precision 4 integer java.lang.Integer 0 ProcedureParams System PartsSupplier
+TypeLength 4 integer java.lang.Integer 0 ProcedureParams System PartsSupplier
+Scale 4 integer java.lang.Integer 0 ProcedureParams System PartsSupplier
+Radix 4 integer java.lang.Integer 0 ProcedureParams System PartsSupplier
+NullType 12 string java.lang.String 0 ProcedureParams System PartsSupplier
+UID 12 string java.lang.String 1 ProcedureParams System PartsSupplier
Deleted: branches/JCA/test-integration/common/src/test/resources/system/expected/ProcedureParams.txt
===================================================================
--- trunk/test-integration/common/src/test/resources/system/expected/ProcedureParams.txt 2009-12-01 21:17:40 UTC (rev 1614)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/ProcedureParams.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,7 +0,0 @@
-VDBName[string] SchemaName[string] ProcedureName[string] Name[string] DataType[string] Position[integer] Type[string] Optional[boolean] Precision[integer] TypeLength[integer] Scale[integer] Radix[integer] NullType[string] UID[string]
-PartsSupplier System getVDBResourcePaths ResourcePath string 1 ResultSet false 50 50 0 10 Nullable mmuuid:ebbffdab-ac7e-41ab-974f-62785b3086f9
-PartsSupplier System getBinaryVDBResource VdbResource blob 1 ResultSet false 0 0 0 10 Nullable mmuuid:90d1f79d-bd98-46f4-ae8f-adacc329cf0b
-PartsSupplier System getCharacterVDBResource VdbResource clob 1 ResultSet false 0 0 0 10 Nullable mmuuid:111f9fa8-74c9-479a-a184-8db64a1eab3c
-PartsSupplier System getVDBResourcePaths isBinary boolean 2 ResultSet false 1 1 0 10 Nullable mmuuid:e8d087da-9833-4422-a255-f0e0fea2cb61
-PartsSupplier System getBinaryVDBResource resourcePath string 1 In false 50 50 0 10 No Nulls mmuuid:25e5065a-454e-4a87-bf71-b6f71b98319f
-PartsSupplier System getCharacterVDBResource resourcePath string 1 In false 50 50 0 10 No Nulls mmuuid:c54e777f-3cd0-45ad-a18b-e4e93532984f
Copied: branches/JCA/test-integration/common/src/test/resources/system/expected/ProcedureParams.txt (from rev 1614, trunk/test-integration/common/src/test/resources/system/expected/ProcedureParams.txt)
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/system/expected/ProcedureParams.txt (rev 0)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/ProcedureParams.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,7 @@
+VDBName[string] SchemaName[string] ProcedureName[string] Name[string] DataType[string] Position[integer] Type[string] Optional[boolean] Precision[integer] TypeLength[integer] Scale[integer] Radix[integer] NullType[string] UID[string]
+PartsSupplier System getVDBResourcePaths ResourcePath string 1 ResultSet false 50 50 0 10 Nullable mmuuid:ebbffdab-ac7e-41ab-974f-62785b3086f9
+PartsSupplier System getBinaryVDBResource VdbResource blob 1 ResultSet false 0 0 0 10 Nullable mmuuid:90d1f79d-bd98-46f4-ae8f-adacc329cf0b
+PartsSupplier System getCharacterVDBResource VdbResource clob 1 ResultSet false 0 0 0 10 Nullable mmuuid:111f9fa8-74c9-479a-a184-8db64a1eab3c
+PartsSupplier System getVDBResourcePaths isBinary boolean 2 ResultSet false 1 1 0 10 Nullable mmuuid:e8d087da-9833-4422-a255-f0e0fea2cb61
+PartsSupplier System getBinaryVDBResource resourcePath string 1 In false 50 50 0 10 No Nulls mmuuid:25e5065a-454e-4a87-bf71-b6f71b98319f
+PartsSupplier System getCharacterVDBResource resourcePath string 1 In false 50 50 0 10 No Nulls mmuuid:c54e777f-3cd0-45ad-a18b-e4e93532984f
Deleted: branches/JCA/test-integration/common/src/test/resources/system/expected/Procedures.metadata.txt
===================================================================
--- trunk/test-integration/common/src/test/resources/system/expected/Procedures.metadata.txt 2009-12-01 21:17:40 UTC (rev 1614)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/Procedures.metadata.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,8 +0,0 @@
-ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName
-VDBName 12 string java.lang.String 0 Procedures System PartsSupplier
-SchemaName 12 string java.lang.String 1 Procedures System PartsSupplier
-Name 12 string java.lang.String 0 Procedures System PartsSupplier
-NameInSource 12 string java.lang.String 1 Procedures System PartsSupplier
-ReturnsResults -7 boolean java.lang.Boolean 0 Procedures System PartsSupplier
-UID 12 string java.lang.String 0 Procedures System PartsSupplier
-Description 12 string java.lang.String 1 Procedures System PartsSupplier
Copied: branches/JCA/test-integration/common/src/test/resources/system/expected/Procedures.metadata.txt (from rev 1614, trunk/test-integration/common/src/test/resources/system/expected/Procedures.metadata.txt)
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/system/expected/Procedures.metadata.txt (rev 0)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/Procedures.metadata.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,8 @@
+ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName
+VDBName 12 string java.lang.String 0 Procedures System PartsSupplier
+SchemaName 12 string java.lang.String 1 Procedures System PartsSupplier
+Name 12 string java.lang.String 0 Procedures System PartsSupplier
+NameInSource 12 string java.lang.String 1 Procedures System PartsSupplier
+ReturnsResults -7 boolean java.lang.Boolean 0 Procedures System PartsSupplier
+UID 12 string java.lang.String 0 Procedures System PartsSupplier
+Description 12 string java.lang.String 1 Procedures System PartsSupplier
Deleted: branches/JCA/test-integration/common/src/test/resources/system/expected/Procedures.txt
===================================================================
--- trunk/test-integration/common/src/test/resources/system/expected/Procedures.txt 2009-12-01 21:17:40 UTC (rev 1614)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/Procedures.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,4 +0,0 @@
-VDBName[string] SchemaName[string] Name[string] NameInSource[string] ReturnsResults[boolean] UID[string] Description[string]
-PartsSupplier System getBinaryVDBResource null true mmuuid:9bc0b701-b36e-4209-a986-9d38420d2c20 null
-PartsSupplier System getCharacterVDBResource null true mmuuid:72464082-00fc-44f0-98b9-8c8f637c6570 null
-PartsSupplier System getVDBResourcePaths null true mmuuid:1204d4b2-6f92-428d-bcc5-7b3a0da9a113 null
Copied: branches/JCA/test-integration/common/src/test/resources/system/expected/Procedures.txt (from rev 1614, trunk/test-integration/common/src/test/resources/system/expected/Procedures.txt)
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/system/expected/Procedures.txt (rev 0)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/Procedures.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,4 @@
+VDBName[string] SchemaName[string] Name[string] NameInSource[string] ReturnsResults[boolean] UID[string] Description[string]
+PartsSupplier System getBinaryVDBResource null true mmuuid:9bc0b701-b36e-4209-a986-9d38420d2c20 null
+PartsSupplier System getCharacterVDBResource null true mmuuid:72464082-00fc-44f0-98b9-8c8f637c6570 null
+PartsSupplier System getVDBResourcePaths null true mmuuid:1204d4b2-6f92-428d-bcc5-7b3a0da9a113 null
Deleted: branches/JCA/test-integration/common/src/test/resources/system/expected/ReferenceKeyColumns.metadata.txt
===================================================================
--- trunk/test-integration/common/src/test/resources/system/expected/ReferenceKeyColumns.metadata.txt 2009-12-01 21:17:40 UTC (rev 1614)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/ReferenceKeyColumns.metadata.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,15 +0,0 @@
-ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName
-PKTABLE_CAT 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
-PKTABLE_SCHEM 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
-PKTABLE_NAME 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
-PKCOLUMN_NAME 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
-FKTABLE_CAT 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
-FKTABLE_SCHEM 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
-FKTABLE_NAME 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
-FKCOLUMN_NAME 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
-KEY_SEQ 5 short java.lang.Short 1 ReferenceKeyColumns System PartsSupplier
-UPDATE_RULE 4 integer java.lang.Integer 1 ReferenceKeyColumns System PartsSupplier
-DELETE_RULE 4 integer java.lang.Integer 1 ReferenceKeyColumns System PartsSupplier
-FK_NAME 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
-PK_NAME 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
-DEFERRABILITY 4 integer java.lang.Integer 1 ReferenceKeyColumns System PartsSupplier
Copied: branches/JCA/test-integration/common/src/test/resources/system/expected/ReferenceKeyColumns.metadata.txt (from rev 1614, trunk/test-integration/common/src/test/resources/system/expected/ReferenceKeyColumns.metadata.txt)
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/system/expected/ReferenceKeyColumns.metadata.txt (rev 0)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/ReferenceKeyColumns.metadata.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,15 @@
+ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName
+PKTABLE_CAT 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+PKTABLE_SCHEM 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+PKTABLE_NAME 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+PKCOLUMN_NAME 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+FKTABLE_CAT 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+FKTABLE_SCHEM 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+FKTABLE_NAME 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+FKCOLUMN_NAME 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+KEY_SEQ 5 short java.lang.Short 1 ReferenceKeyColumns System PartsSupplier
+UPDATE_RULE 4 integer java.lang.Integer 1 ReferenceKeyColumns System PartsSupplier
+DELETE_RULE 4 integer java.lang.Integer 1 ReferenceKeyColumns System PartsSupplier
+FK_NAME 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+PK_NAME 12 string java.lang.String 1 ReferenceKeyColumns System PartsSupplier
+DEFERRABILITY 4 integer java.lang.Integer 1 ReferenceKeyColumns System PartsSupplier
Deleted: branches/JCA/test-integration/common/src/test/resources/system/expected/ReferenceKeyColumns.txt
===================================================================
--- trunk/test-integration/common/src/test/resources/system/expected/ReferenceKeyColumns.txt 2009-12-01 21:17:40 UTC (rev 1614)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/ReferenceKeyColumns.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,4 +0,0 @@
-PKTABLE_CAT[string] PKTABLE_SCHEM[string] PKTABLE_NAME[string] PKCOLUMN_NAME[string] FKTABLE_CAT[string] FKTABLE_SCHEM[string] FKTABLE_NAME[string] FKCOLUMN_NAME[string] KEY_SEQ[short] UPDATE_RULE[integer] DELETE_RULE[integer] FK_NAME[string] PK_NAME[string] DEFERRABILITY[integer]
-PartsSupplier PartsSupplier PARTSSUPPLIER.PARTS PART_ID PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS PART_ID 1 3 3 FK_SPLIER_PRTS_PRTS PK_PARTS 5
-PartsSupplier PartsSupplier PARTSSUPPLIER.STATUS STATUS_ID PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER SUPPLIER_STATUS 1 3 3 FK_SPLIER_STATS PK_STATUS 5
-PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER SUPPLIER_ID PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS SUPPLIER_ID 1 3 3 FK_SPLY_PRTS_SPLY PK_SUPPLIER 5
Copied: branches/JCA/test-integration/common/src/test/resources/system/expected/ReferenceKeyColumns.txt (from rev 1614, trunk/test-integration/common/src/test/resources/system/expected/ReferenceKeyColumns.txt)
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/system/expected/ReferenceKeyColumns.txt (rev 0)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/ReferenceKeyColumns.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,4 @@
+PKTABLE_CAT[string] PKTABLE_SCHEM[string] PKTABLE_NAME[string] PKCOLUMN_NAME[string] FKTABLE_CAT[string] FKTABLE_SCHEM[string] FKTABLE_NAME[string] FKCOLUMN_NAME[string] KEY_SEQ[short] UPDATE_RULE[integer] DELETE_RULE[integer] FK_NAME[string] PK_NAME[string] DEFERRABILITY[integer]
+PartsSupplier PartsSupplier PARTSSUPPLIER.PARTS PART_ID PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS PART_ID 1 3 3 FK_SPLIER_PRTS_PRTS PK_PARTS 5
+PartsSupplier PartsSupplier PARTSSUPPLIER.STATUS STATUS_ID PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER SUPPLIER_STATUS 1 3 3 FK_SPLIER_STATS PK_STATUS 5
+PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER SUPPLIER_ID PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS SUPPLIER_ID 1 3 3 FK_SPLY_PRTS_SPLY PK_SUPPLIER 5
Deleted: branches/JCA/test-integration/common/src/test/resources/system/expected/Schemas.metadata.txt
===================================================================
--- trunk/test-integration/common/src/test/resources/system/expected/Schemas.metadata.txt 2009-12-01 21:17:40 UTC (rev 1614)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/Schemas.metadata.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,7 +0,0 @@
-ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName
-VDBName 12 string java.lang.String 1 Schemas System PartsSupplier
-Name 12 string java.lang.String 1 Schemas System PartsSupplier
-IsPhysical -7 boolean java.lang.Boolean 0 Schemas System PartsSupplier
-UID 12 string java.lang.String 0 Schemas System PartsSupplier
-Description 12 string java.lang.String 1 Schemas System PartsSupplier
-PrimaryMetamodelURI 12 string java.lang.String 0 Schemas System PartsSupplier
Copied: branches/JCA/test-integration/common/src/test/resources/system/expected/Schemas.metadata.txt (from rev 1614, trunk/test-integration/common/src/test/resources/system/expected/Schemas.metadata.txt)
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/system/expected/Schemas.metadata.txt (rev 0)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/Schemas.metadata.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,7 @@
+ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName
+VDBName 12 string java.lang.String 1 Schemas System PartsSupplier
+Name 12 string java.lang.String 1 Schemas System PartsSupplier
+IsPhysical -7 boolean java.lang.Boolean 0 Schemas System PartsSupplier
+UID 12 string java.lang.String 0 Schemas System PartsSupplier
+Description 12 string java.lang.String 1 Schemas System PartsSupplier
+PrimaryMetamodelURI 12 string java.lang.String 0 Schemas System PartsSupplier
Deleted: branches/JCA/test-integration/common/src/test/resources/system/expected/Schemas.txt
===================================================================
--- trunk/test-integration/common/src/test/resources/system/expected/Schemas.txt 2009-12-01 21:17:40 UTC (rev 1614)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/Schemas.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,3 +0,0 @@
-VDBName[string] Name[string] IsPhysical[boolean] UID[string] Description[string] PrimaryMetamodelURI[string]
-PartsSupplier PartsSupplier true mmuuid:19c7f380-73d8-1edc-a81c-ecf397b10590 null http://www.metamatrix.com/metamodels/Relational
-PartsSupplier System true mmuuid:49b9c0f9-2c4c-42d3-9409-2d847d29a1de System http://www.metamatrix.com/metamodels/Relational
Copied: branches/JCA/test-integration/common/src/test/resources/system/expected/Schemas.txt (from rev 1614, trunk/test-integration/common/src/test/resources/system/expected/Schemas.txt)
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/system/expected/Schemas.txt (rev 0)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/Schemas.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,3 @@
+VDBName[string] Name[string] IsPhysical[boolean] UID[string] Description[string] PrimaryMetamodelURI[string]
+PartsSupplier PartsSupplier true mmuuid:19c7f380-73d8-1edc-a81c-ecf397b10590 null http://www.metamatrix.com/metamodels/Relational
+PartsSupplier System true mmuuid:49b9c0f9-2c4c-42d3-9409-2d847d29a1de System http://www.metamatrix.com/metamodels/Relational
Deleted: branches/JCA/test-integration/common/src/test/resources/system/expected/TableIsSystem.metadata.txt
===================================================================
--- trunk/test-integration/common/src/test/resources/system/expected/TableIsSystem.metadata.txt 2009-12-01 21:17:40 UTC (rev 1614)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/TableIsSystem.metadata.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,2 +0,0 @@
-ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName
-Name 12 string java.lang.String 0 Tables System PartsSupplier
Copied: branches/JCA/test-integration/common/src/test/resources/system/expected/TableIsSystem.metadata.txt (from rev 1614, trunk/test-integration/common/src/test/resources/system/expected/TableIsSystem.metadata.txt)
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/system/expected/TableIsSystem.metadata.txt (rev 0)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/TableIsSystem.metadata.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,2 @@
+ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName
+Name 12 string java.lang.String 0 Tables System PartsSupplier
Deleted: branches/JCA/test-integration/common/src/test/resources/system/expected/TableIsSystem.txt
===================================================================
--- trunk/test-integration/common/src/test/resources/system/expected/TableIsSystem.txt 2009-12-01 21:17:40 UTC (rev 1614)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/TableIsSystem.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,6 +0,0 @@
-Name[string]
-PARTSSUPPLIER.PARTS
-PARTSSUPPLIER.SHIP_VIA
-PARTSSUPPLIER.STATUS
-PARTSSUPPLIER.SUPPLIER
-PARTSSUPPLIER.SUPPLIER_PARTS
Copied: branches/JCA/test-integration/common/src/test/resources/system/expected/TableIsSystem.txt (from rev 1614, trunk/test-integration/common/src/test/resources/system/expected/TableIsSystem.txt)
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/system/expected/TableIsSystem.txt (rev 0)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/TableIsSystem.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,6 @@
+Name[string]
+PARTSSUPPLIER.PARTS
+PARTSSUPPLIER.SHIP_VIA
+PARTSSUPPLIER.STATUS
+PARTSSUPPLIER.SUPPLIER
+PARTSSUPPLIER.SUPPLIER_PARTS
Deleted: branches/JCA/test-integration/common/src/test/resources/system/expected/Tables.metadata.txt
===================================================================
--- trunk/test-integration/common/src/test/resources/system/expected/Tables.metadata.txt 2009-12-01 21:17:40 UTC (rev 1614)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/Tables.metadata.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,13 +0,0 @@
-ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName
-VDBName 12 string java.lang.String 1 Tables System PartsSupplier
-SchemaName 12 string java.lang.String 1 Tables System PartsSupplier
-Name 12 string java.lang.String 0 Tables System PartsSupplier
-Type 12 string java.lang.String 0 Tables System PartsSupplier
-NameInSource 12 string java.lang.String 1 Tables System PartsSupplier
-IsPhysical -7 boolean java.lang.Boolean 0 Tables System PartsSupplier
-SupportsUpdates -7 boolean java.lang.Boolean 0 Tables System PartsSupplier
-UID 12 string java.lang.String 0 Tables System PartsSupplier
-Cardinality 4 integer java.lang.Integer 0 Tables System PartsSupplier
-Description 12 string java.lang.String 1 Tables System PartsSupplier
-IsSystem -7 boolean java.lang.Boolean 1 Tables System PartsSupplier
-IsMaterialized -7 boolean java.lang.Boolean 0 Tables System PartsSupplier
Copied: branches/JCA/test-integration/common/src/test/resources/system/expected/Tables.metadata.txt (from rev 1614, trunk/test-integration/common/src/test/resources/system/expected/Tables.metadata.txt)
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/system/expected/Tables.metadata.txt (rev 0)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/Tables.metadata.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,13 @@
+ColumnName ColumnType ColumnTypeName ColumnClassName isNullable TableName SchemaName CatalogName
+VDBName 12 string java.lang.String 1 Tables System PartsSupplier
+SchemaName 12 string java.lang.String 1 Tables System PartsSupplier
+Name 12 string java.lang.String 0 Tables System PartsSupplier
+Type 12 string java.lang.String 0 Tables System PartsSupplier
+NameInSource 12 string java.lang.String 1 Tables System PartsSupplier
+IsPhysical -7 boolean java.lang.Boolean 0 Tables System PartsSupplier
+SupportsUpdates -7 boolean java.lang.Boolean 0 Tables System PartsSupplier
+UID 12 string java.lang.String 0 Tables System PartsSupplier
+Cardinality 4 integer java.lang.Integer 0 Tables System PartsSupplier
+Description 12 string java.lang.String 1 Tables System PartsSupplier
+IsSystem -7 boolean java.lang.Boolean 1 Tables System PartsSupplier
+IsMaterialized -7 boolean java.lang.Boolean 0 Tables System PartsSupplier
Deleted: branches/JCA/test-integration/common/src/test/resources/system/expected/Tables.txt
===================================================================
--- trunk/test-integration/common/src/test/resources/system/expected/Tables.txt 2009-12-01 21:17:40 UTC (rev 1614)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/Tables.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -1,17 +0,0 @@
-VDBName[string] SchemaName[string] Name[string] Type[string] NameInSource[string] IsPhysical[boolean] SupportsUpdates[boolean] UID[string] Cardinality[integer] Description[string] IsSystem[boolean] IsMaterialized[boolean]
-PartsSupplier System Columns Table null true false mmuuid:1c9a5cb2-17b1-4e4a-8b0e-3a42bd052509 0 null true false
-PartsSupplier System DataTypes Table null true false mmuuid:9a8794f9-66f8-49e8-8576-89d212d0f957 0 null true false
-PartsSupplier System KeyColumns Table null true false mmuuid:14946083-3bd5-42d5-8283-1c0694347c29 0 null true false
-PartsSupplier System Keys Table null true false mmuuid:1e5135dc-ce5d-4b25-a8ff-63f5440b3108 0 null true false
-PartsSupplier PartsSupplier PARTSSUPPLIER.PARTS Table PARTS true true mmuuid:f6276601-73fe-1edc-a81c-ecf397b10590 16 null false false
-PartsSupplier PartsSupplier PARTSSUPPLIER.SHIP_VIA Table SHIP_VIA true true mmuuid:0f4e9b80-73ff-1edc-a81c-ecf397b10590 4 null false false
-PartsSupplier PartsSupplier PARTSSUPPLIER.STATUS Table STATUS true true mmuuid:1f297200-73ff-1edc-a81c-ecf397b10590 3 null false false
-PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER Table SUPPLIER true true mmuuid:2c371ec0-73ff-1edc-a81c-ecf397b10590 16 null false false
-PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS Table SUPPLIER_PARTS true true mmuuid:3deafb00-73ff-1edc-a81c-ecf397b10590 227 null false false
-PartsSupplier System ProcedureParams Table null true false mmuuid:a56bd7fe-c87a-411c-8f5d-661975a25626 0 null true false
-PartsSupplier System Procedures Table null true false mmuuid:0bc132a5-9f8d-4a3c-9f5d-98156a98a962 0 null true false
-PartsSupplier System Properties Table null true false mmuuid:7a45e50a-d03f-4548-ba35-761651bbca85 0 null true false
-PartsSupplier System ReferenceKeyColumns Table null true false mmuuid:6a9653e8-a337-41b2-86fa-77b98f409a29 0 null true false
-PartsSupplier System Schemas Table null true false mmuuid:8648a554-b2ad-4e8e-84ca-2ec618b311a9 0 null true false
-PartsSupplier System Tables Table null true false mmuuid:8551b3bd-11cc-4049-9bcf-fe91a0eb7ba7 0 null true false
-PartsSupplier System VirtualDatabases Table null true false mmuuid:47297c72-d621-4f4e-af4e-74060ac5f489 0 null true false
Copied: branches/JCA/test-integration/common/src/test/resources/system/expected/Tables.txt (from rev 1614, trunk/test-integration/common/src/test/resources/system/expected/Tables.txt)
===================================================================
--- branches/JCA/test-integration/common/src/test/resources/system/expected/Tables.txt (rev 0)
+++ branches/JCA/test-integration/common/src/test/resources/system/expected/Tables.txt 2009-12-02 23:40:40 UTC (rev 1616)
@@ -0,0 +1,17 @@
+VDBName[string] SchemaName[string] Name[string] Type[string] NameInSource[string] IsPhysical[boolean] SupportsUpdates[boolean] UID[string] Cardinality[integer] Description[string] IsSystem[boolean] IsMaterialized[boolean]
+PartsSupplier System Columns Table null true false mmuuid:1c9a5cb2-17b1-4e4a-8b0e-3a42bd052509 0 null true false
+PartsSupplier System DataTypes Table null true false mmuuid:9a8794f9-66f8-49e8-8576-89d212d0f957 0 null true false
+PartsSupplier System KeyColumns Table null true false mmuuid:14946083-3bd5-42d5-8283-1c0694347c29 0 null true false
+PartsSupplier System Keys Table null true false mmuuid:1e5135dc-ce5d-4b25-a8ff-63f5440b3108 0 null true false
+PartsSupplier PartsSupplier PARTSSUPPLIER.PARTS Table PARTS true true mmuuid:f6276601-73fe-1edc-a81c-ecf397b10590 16 null false false
+PartsSupplier PartsSupplier PARTSSUPPLIER.SHIP_VIA Table SHIP_VIA true true mmuuid:0f4e9b80-73ff-1edc-a81c-ecf397b10590 4 null false false
+PartsSupplier PartsSupplier PARTSSUPPLIER.STATUS Table STATUS true true mmuuid:1f297200-73ff-1edc-a81c-ecf397b10590 3 null false false
+PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER Table SUPPLIER true true mmuuid:2c371ec0-73ff-1edc-a81c-ecf397b10590 16 null false false
+PartsSupplier PartsSupplier PARTSSUPPLIER.SUPPLIER_PARTS Table SUPPLIER_PARTS true true mmuuid:3deafb00-73ff-1edc-a81c-ecf397b10590 227 null false false
+PartsSupplier System ProcedureParams Table null true false mmuuid:a56bd7fe-c87a-411c-8f5d-661975a25626 0 null true false
+PartsSupplier System Procedures Table null true false mmuuid:0bc132a5-9f8d-4a3c-9f5d-98156a98a962 0 null true false
+PartsSupplier System Properties Table null true false mmuuid:7a45e50a-d03f-4548-ba35-761651bbca85 0 null true false
+PartsSupplier System ReferenceKeyColumns Table null true false mmuuid:6a9653e8-a337-41b2-86fa-77b98f409a29 0 null true false
+PartsSupplier System Schemas Table null true false mmuuid:8648a554-b2ad-4e8e-84ca-2ec618b311a9 0 null true false
+PartsSupplier System Tables Table null true false mmuuid:8551b3bd-11cc-4049-9bcf-fe91a0eb7ba7 0 null true false
+PartsSupplier System VirtualDatabases Table null true false mmuuid:47297c72-d621-4f4e-af4e-74060ac5f489 0 null true false
Modified: branches/JCA/test-integration/pom.xml
===================================================================
--- branches/JCA/test-integration/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/test-integration/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -4,7 +4,7 @@
<parent>
<artifactId>teiid</artifactId>
<groupId>org.jboss.teiid</groupId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>teiid-test-integration</artifactId>
@@ -61,16 +61,6 @@
</dependency>
<dependency>
<groupId>org.jboss.teiid</groupId>
- <artifactId>teiid-connector-metadata</artifactId>
- </dependency>
- <dependency>
- <groupId>org.jboss.teiid</groupId>
- <artifactId>teiid-connector-metadata</artifactId>
- <type>test-jar</type>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.teiid</groupId>
<artifactId>teiid-client-jdbc</artifactId>
<type>test-jar</type>
</dependency>
@@ -96,7 +86,6 @@
<version>${project.version}</version>
<type>test-jar</type>
</dependency>
- <!--
<dependency>
<groupId>org.jboss.teiid.connectors</groupId>
<artifactId>connector-loopback</artifactId>
@@ -113,7 +102,7 @@
<type>test-jar</type>
<version>${project.version}</version>
</dependency>
-
+
<dependency>
<groupId>org.jboss.teiid.connectors</groupId>
<artifactId>connector-jdbc</artifactId>
@@ -125,8 +114,7 @@
<type>test-jar</type>
<version>${project.version}</version>
</dependency>
- -->
-
+
<!-- external dependencies -->
<dependency>
<groupId>org.apache.derby</groupId>
@@ -137,7 +125,6 @@
</dependencies>
<modules>
- <!--module>common</module-->
- <module>db</module>
+ <module>common</module>
</modules>
</project>
\ No newline at end of file
Modified: branches/JCA/txn-jbossts/pom.xml
===================================================================
--- branches/JCA/txn-jbossts/pom.xml 2009-12-02 16:59:47 UTC (rev 1615)
+++ branches/JCA/txn-jbossts/pom.xml 2009-12-02 23:40:40 UTC (rev 1616)
@@ -3,7 +3,7 @@
<parent>
<artifactId>teiid</artifactId>
<groupId>org.jboss.teiid</groupId>
- <version>6.3.0-SNAPSHOT</version>
+ <version>7.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>teiid-txn-jbossts</artifactId>
More information about the teiid-commits
mailing list