Teiid 8.1.0.Final Release Notes
Teiid 8.1.0.Final adds metadata and integration features.
Overview
Highlights
- TEIID-1366 VDB Reuse a vdb.xml can now declare imported vdbs to reuse metadata.
- TEIID-2061 Comparable Object - the system property org.teiid.comparableObject can be set to use OBJECT values in comparison/sorting/grouping operations. It is expected that the object values correctly implement Comparable.compareTo.
- TEIID-2083 Admin Metadata - you can now retrieve metadata in DDL from the admin api via the getSchema method.
- TEIID-2105 Improved VDB loading - vdb loading logic was refined to make administration easier. ExecutionFactory now has is/setSourceRequiredForMetadata() to indicate whether a source connection is needed for the getMetadata call.
- TEIID-1598 Translator Result Caching - translators can interact with the result set caching facility via a CacheDirective. See the Developer's Guide for more.
- TEIID-2077 Result reuse - the engine will automatically detect if the same source query is used multiple times in a plan and reuse the result rather than issuing another query.
- TEIID-2113 Misc parser improvements - the parser will now accept the LATERAL keyword for defining a LATERAL join (previously we just used the TABLE keyword), unary negation is now supported e.g. -col1, the FOR keyword is optional for TEXTAGG,
and the BNF documentation was dramatically improved.
- TEIID-2036 Dependent Join Array Comparison - platforms supporting array comparisons can have multi-attribute dependent joins pushed down as array comparisons. Oracle, PG, and H2 translators are already marked as supporting array types.
- Support for named parameter syntax using param=value has been deprecated, since it is ambiguous with a comparison predicate boolean value expression. param=>value should be used instead.
- Support for using the FROM clause post item hints MAKEDEP/MAKENOTDEP has been deprecated. Use the pre item comment hint syntax instead, e.g. /*+ MAKEDEP */ tbl
- decodeinteger/decodestring have been deprecated. A CASE expression should be used instead.
from 8.0
- org.teiid.metadata.Schema holds FunctionMethods by uuid rather than name to accommodate overridden method signatures.
- MetadataFactory no longer extends Schema. Use the MetadataFactory.getSchema method to get the target Schema.
- DDL created VIRTUAL pushdown functions should be referenced in the ExecutionFactory.getSupportedFunctions by their full . name.
- DDL functions/procedures defined without the VIRTUAL keyword are by default VIRTUAL. Use the FOREIGN keyword to indicate that they are source specific.
- FunctionMethod.getFullName returns the proper schema, not category qualified name.
- VDB.getUrl has been removed.
- VDB.Status now has four states - LOADING, ACTIVE, FAILED, REMOVED. To check for validity use the isValid method, rather than checking for the VALID state. FAILED deployments will still be accessible via the admin getVDB methods.
- The standalone and cli configuration files specify a setting for the teiid subsystem policy-decider-module. If a module is not specified, then data roles will not be checked.
- local connections specifying a VDB version will wait for their VDB to finish loading before allowing a connection, see the waitForLoad connection property for more.
- jsonToXml document elements will contain xsi:type attribute values of decimal and boolean respectively for number and boolean json values to allow for differentiation from string values.
- Result set cache entries can now have updatable set to false to indicate that updates should not purge the entry.
- Datatype default values have been corrected for Teiid built-in types. All datatypes are now nullable by default, only character string types are case sensitive, numeric types have radix 10, and length/precision/scale have been set appropriately.
- pg catalog and dynamic vdb created metadata will use a generated Teiid id rather than a random UUID.
- transport ssl config no longer uses the enabled attribute. Use mode=disabled to disable the usage of encryption.
- TEIID-2105 If a MetadataRepository throws a RuntimeException during load, that will be treated as a non-recoverable error and the VDB will have a FAILED status.
- TEIID-2105 It was an undocumented behavior that is a source did not specify a jndi connection that "java:/name" would be assumed. That is no longer the case. It the source needs a connection, then one must be specified.
- TEIID-2127 if ExecutionFactory.isSourceRequired returns true (the default) then not obtaining a connection will for an Execution will result in an error. If an ExecutionFactory does not use a source, then no connection-jndi-name should be
specified and isSourceRequired should return false (see setSourceRequired). If isSourceRequired returns false and a connection-jndi-name is specified, then Teiid will still attempt to obtain a connection, but no exception will be thrown if a connection isn't available.
- TEIID-2138 the odbc layer will report standard_conforming_strings as on, rather than off to better reflect the string literal handling of Teiid.
from 7.x
- TRANSLATE/HAS CRITERIA has been removed. INSTEAD OF trigger actions should be used instead. ROWS_UPDATED, INPUTS, and INPUT are no longer procedure reserved words.
- 7.x or earlier VDBs with table cardinalities set the old unknown value 0 will now report that value as -1 via the metadata API or SYS.TABLES.
- Exact fixed point literals, e.g. 1.0, are now parsed as decimal/BigDecimal values as per the ANSI specification, rather than as double values.
Also the AVG aggregate function will return an exact numeric (BigDecimal) value for integral types rather than returning a double value.
Views that were projecting doubles from exact numeric literals or using AVG will need to be updated. There is also a new system property org.teiid.decimalAsDouble to
enable the pre-8.0 behavior. The BigDecimal form of the AVG function now uses the same precision and scale logic as the division system function, rather than using a
fixed scale of 9.
- BigDecimal division that returns a quotient that is equal to zero will have a scale of zero as well. Prior releases would typically return a zero value with a scale of 16.
- The env function no longer returns the value for the session id, the session_id() function should be used instead.
- The CommandContext no longer provides getEnvironmentProperties()
- Unaliased derived columns in the SELECT clause have different default names than prior releases. The name will be exprX where X is the SELECT clause position.
- The translator API facilities for iterator/bulk updates were combined and updated. Multi-valued literals were replaced by the Parameter class with an associated value iterator
available on the BatchedCommand. The IteratorValueSource class was also removed.
- VARBINARY, OPTIONS, and OUT were added as reserved words.
- AbstractMetadataRecord and its sub-classes use a case-insensitive map for properties rather than a LinkedHashMap. Thus, property key lookups are now case-insensitive.
- Removed the unused ExecutionFactory methods supportsBetweenCriteria and supportsCaseExpression.
- allowCreateTemporaryTablesByDefault and allowFunctionCallsByDefault are now set to false. When data roles are in use the user must explicitly grant these options to the user on VDB
from 7.7
- parse/formatdate and parse/formattime are no longer pushdown functions. They are converted into parse/formattimestamp.
- SQLWarning exception chains attached to the ExecutionContext will be returned as a single TeiidSQLWarning rather than as individual TeiidSQLWarnings. See the TeiidSQLWarning javadocs
for how to access the underlying SQLWarning chains.
from 7.5
- Leave was added as a reserved word.
- Lob inlining is incompatible with clients older than 7.6. If a 7.6 server will have older clients that use lobs connect to it, then the BufferService property inline-lobs should be set to false in the teiid-jboss-beans.xml file.
- Oracle translators assume they are using Oracle supplied drivers. If that is not the case, set the Oracle translator execution property oracleSuppliedDriver to false.
- Unordered limits are handled strictly by default. They are longer pushed through conditions, dup removal, or UNION not all - and cannot have conditions pushed through them. Use the NON_STRICT hint to change the behavior to Teiid 7.1 handling.
from 7.4
- OFFSET and LIKE_REGEX were added as reserved words.
- ColumnReference.getName will always return just the element name. Previously it inconsistently returned the qualified and unqualified form depending upon where the ColumnReference appeared.
- As per JDBC4, ResultSetMetadata.getColumnName will return the unaliased column name if available rather than return the alias. Set useJDBC4ColumnNameAndLabelSemantics to false to use the alias name as the column name.
from 7.3
- SYS.PROPERTIES has a new column, ClobValue, to get values exceeding the max string length
- SYS.COLUMNS has two new columns to get statistical information: DistinctCount and NullCount
- ARRAY_AGG is now a reserved word
- The use of an IN procedure parameter with the name "source_name" in a multi-source model, will now be treated the parameter that controls which source
the procedure will execute against.
- Dynamic VDB functions injected via ExecutionFactory.getPushdownFunctions are now scoped to the SYS schema and have a fully qualified name that includes their source type. For example, instead of oracle_model.relate - which was only valid against the oracle_model source, there is now the SYS.oracle_sdo.relate function that is valid for all Oracle sources. Any fully-qualified reference to these functions will need updated.
from 7.2
- The default JDBC credentials are user/user - not admin/teiid
- Unordered limits are no longer pushed through conditions, dup removal, or UNION not all. This prevents the possibility of getting less results than the logical intent of the limit.
from 7.1
- Subqueries are no longer allowed to be SELECT INTO.
- INSERT/UPDATE/DELETE cannot be used to create implicit return cursors in non-update virtual procedures. You can instead use "UPDATE ...; SELECT VARIABLES.ROWCOUNT;".
- The SYSADMIN schema was created to hold procedures and tables that should not be generally accessible. SYS and pg_catalog are now always accessible - permissions do not apply to these schemas. The SYS.getBinaryVDBResource, SYS.getCharacterVDBResource, and SYS.getVDBResourcePaths have been replaced with the
SYSADMIN.VDBResources table. The Matviews table and the refreshMatView/refreshMatViewRow procedures were also moved into SYSADMIN.
- Overwriting an existing VDB will cause old connections to be terminated. Production systems should rely on VDB versioning.
- The jdbc:metamatrix JDBC URL prefix is no longer accepted. Use jdbc:teiid instead.
- Model visibility no longer restricts access to tables and procedures. Setting visible to false will only hide entries from system tables. Data roles should be used to restrict data access.
- Admin API "getWorkManagerStats" methods renamed to "getWorkerPoolStats". Also, "setRuntimeProperty" and "getProcesses" methods were removed.
- By default the "ENV" system function is now turned off. To enable it, edit the teiid-jboss-beans.xml configuration file.
- The use of VARIABLES.ROWCOUNT is now reserved.
- Exec statements of the form "var = EXEC foo()" are only valid if the procedure foo has a return parameter.
- Cache hint now supports "scope" definition. For ex: /* cache(scope:user) */ select * from T1; This hint will override the computed scope based on the query.
from 7.0
- The term data policy was replaced with data role. The AdminAPI methods for adding role mappings have changed from addRoleToDataPolicy and removeRoleFromDataPolicy to addDataRoleMapping and removeDataRoleMapping respectively.
See the Admin Guide for more on configuration and installation.
from 8.0
- teiid-security-users and teiid-security-roles properties files have been moved under the configuration directory of their respective deployment.
from 7.7
- The server is now dependent upon AS 7.x. The old configuration and deployment structure is no longer applicable.
from 7.4
- The configuration for the buffer service now defaults to 256/512 for processor and connector batch sizes respectively. The buffer service also has 4 new properties inline-lobs, memory-buffer-space, memory-buffer-off-heap, and max-storage-object-size.
If you were explicitly setting the value for 'max-reserve-kb', you should consider lowering that value to account for the memory buffer and/or explicitly set the memory-buffer-space.
- The configuration for authorization has been moved off of the RuntimeEngineDeployer bean and onto separate AuthorizationValidator and PolicyDecider beans.
- The configuration for the buffer manager has been simplified to refer to memory sizes in KB, rather than batch columns.
from 7.3
- The default value for the JDBC dynamic vdb importer setting importer.useFullSchemaName is now true, which matches the expected behavior from the documentation.
- The prepared plan cache is now configured via the PreparedPlanCacheConfig bean, rather than through properties on the RuntimeEngineDeployer
- SocketConfiguration.maxSocketThreads will interpret a setting of 0 to mean use the system default of max available processors. Both the ODBC and JDBC transports now default to the 0 setting.
- maxReserveBatchColumns and maxProcessingBatchesColumns will interpret a setting of -1 to mean auto-calculate acceptable values given the max heap and other information. See the admin guide for more.
- The default for org.teiid.useValueCache has changed to false, since typical installations will not greatly benefit from the additional lookup cost.
- The property RuntimeEngineDeployer.allowFunctionCallsByDefault was added so that Teiid 7.4 behavior is compatible with Teiid 7.3. Set this property to false to require permissions for function calls when data roles are enabled.
from 7.2
- Temporary tables can now be restricted by data roles. Use the data-role attribute allow-create-temporary-tables to explicitly enable or disable the usage of temporary tables.
There is also a allowCreateTemporaryTablesByDefault property in the teiid-jboss-beans.xml to control whether usage is allowed by default. For compatibility with prior 7.x releases, the default is to allow
temporary table access.
from 7.1
- Teiid clients now allow the usage of anonymous SSL by default.
This changes allows the admin port (default 31443) to use anonymous SSL by default, rather than just securing login traffic.
Admin clients should therefore use the mms protocol instead of mm. This will encrypt all admin traffic and ensure that any passwords in configuration files will
be encrypted in transit. See the Admin Guide to upgrade from anonymous SSL to 1-way or 2-way authentication.
The config properties sslEnabled and clientEncryptionEnabled for SSLConfiguration beans have been combined to a single property mode, that can have the values disabled|login|enabled.
- Apache CXF is now expected to be used as the web services stack provider through JBossWS-CXF. See the Admin Guide for instructions on
installing CXF for use with Teiid's Salesforce and web service connectors. The WS Resource Adapter's -ds.xml files should no longer use
WSSecurityConfigURL and WSSecurityConfigName, rather they should be ConfigFile and ConfigName respectively. The property values should no longer
refer to jboss-wsse-client.xml, but instead they should reference a CXF Spring configuration file and particular port configuration. See the Admin Guide
for more on using CXF configuration files.
- The default for data role checking is now "true". However only VDBs with data roles will have roles enforced.
- The default prepared plan cache size was increased to 512, since it is targeted by internal plans as well.
from 7.0
- The property to enable data roles in teiid-jboss-beans.xml has changed from useEntitlements to useDataRoles.
- Rar file names no longer contain version numbers. -ds.xml files should be updated from connector-XXX-version.rar to teiid-connector-XXX.rar
- Code table relate configuration properties have been removed. Code tables are now implemented as materialized views.
- TEIID-1170 - correlated subqueries are not allowed in UPDATEs or DELETEs against internal Teiid tables (internal materialized views or temporary tables).
- TEIID-1281 - Negative start indexing is not supported by DB2 and Derby databases. Usage of the Teiid SUBSTRING against these sources should not use negative start values.
- TEIID-1008 - Most versions of Oracle and MySQL do not support deeply nested correlated references. There is currently no workaround for this issue.
- For compatibility with the 7.0 release if a stored procedure parameter list begins with identifier=, then it will be parsed as a named parameter invocation even if the intent was to use a comparison predicate
as the first parameter value. The workaround is to use nesting parens, e.g. call proc((identifier=value), ...), which clarifies that this is positional value. This workaround will not be needed in later releases.
- TEIID-1511 - When a VDB is deployed and undeployed a socket is left open, which may lead to "too manay open files". Check the defect comments for details.
- TEIID-1648 - Teradata lobs can only be consistently read from an embedded client (with the default option to use the calling thread) and in single threaded mode (transactional or thread-count-for-source-concurrency=1). Usage of Teradata lobs under any other configuration is unlikely to work.
- TEIID-2101 - Statement.setMaxRows is not used for cached result sets or when getting a result set from a CallableStatement procedure that returns parameters.
from 7.0
- Fixed xsd type handling for SQL/XML and XML document models. xsd:date, xsd:dateTime, and xsd:time types will now all be displayed using the GMT timezone (Z). SQL types, such as timestamp, used for an XMLTABLE column will now expect their values to be in the form of the corresponding xsd type.
The following components have been updated:
From 7.4
- Saxon was upgraded to 9.2.1.5
- nux 1.6, and xom 1.2 were added.
From 7.1
- json-simple 1.1 was added.
- Netty was upgraded to 3.2.1
From 7.0
- Direct integration of JBossCache jars was removed.
- Netty was upgraded to 3.2.0
- JDOM was removed.
Detailed Release Notes - Teiid - Version 8.1.0.Final
Bug
- [TEIID-1374] - Nested correlated reference issue with rewritten queries
- [TEIID-1911] - Deploy time cached VDB metadata is being deleted during shutdown.
- [TEIID-1956] - WHERE clause throws org.teiid.jdbc.TeiidSQLException: Index: 2, Size: 1
- [TEIID-1977] - Prepared Statements on ODBC ending with failure
- [TEIID-2021] - Fail the VDB deployment when translator is not available
- [TEIID-2023] - prepared metadata fails for JDBC handled statements
- [TEIID-2024] - DataTierManager.could_not_obtain_connector_binding error says it can't find Connection Factory
- [TEIID-2025] - sql/xml type does not work over ODBC
- [TEIID-2026] - Teiid configuration varibles are not writable
- [TEIID-2028] - Previewing data from Designer getting mergeVDB NPE on server
- [TEIID-2031] - Overloaded functions are not supported via ddl / Schema object
- [TEIID-2033] - Use of OPTIONS during the DDL metadata import, overwrites default behavior on the record
- [TEIID-2037] - Security context is not propagated correctly between Teiid engine and data sources
- [TEIID-2038] - Admin module is missing dependency on "org.jboss.as.controller-client"
- [TEIID-2040] - Failed Assertion during org.teiid.query.processor.relational.SortUtility.<init>
- [TEIID-2041] - Regression in RuleCleanCriteria
- [TEIID-2042] - Large query plans may cause OOM error
- [TEIID-2045] - Error with INSERT using a query expression
- [TEIID-2046] - StaxSource is not supported for validation, VDB deployment fails
- [TEIID-2047] - Schema objects were being merged incompletely during the metadata load
- [TEIID-2048] - Error during dependent procedure execution
- [TEIID-2049] - NPE during select call on a materialized table
- [TEIID-2051] - Translator Overrides panel appears to have 2 properties mixed up
- [TEIID-2053] - Various metadata issues
- [TEIID-2054] - Initial SQLWarnings are reported twice
- [TEIID-2055] - Error during using Teiid Local connections.
- [TEIID-2056] - Class cast exception when inserting blob. (java.lang.ClassCastException: org.teiid.core.types.BlobType cannot be cast to oracle.sql.BLOB). When using JPA(Hibernate implementation) in association with Teiid.
- [TEIID-2057] - Problem with dynamic VDB re-deploy when it contains a Virtual Model
- [TEIID-2058] - Optimization places correlated subquery in the on clause, which is not supported by DB2
- [TEIID-2063] - NPE with proc relational query
- [TEIID-2064] - Teradata IN pushdown issues
- [TEIID-2066] - Duplicate Record Exception is occuring during startup
- [TEIID-2069] - Optimze add LIMIT clause to SELECT within a Virtual Procedure using Oracle
- [TEIID-2074] - NPE with multi-column dependent join
- [TEIID-2075] - Value of 'NEW' attribute is not set when an update procedure is executed
- [TEIID-2076] - TEIID30376 The specified change set [...] against an inherently updatable view does not map to a key preserving group
- [TEIID-2081] - Cannot break the continuous execution
- [TEIID-2082] - Enable and document a check for data roles and permissions
- [TEIID-2087] - Order by clause causes org.teiid.core.TeiidException
- [TEIID-2088] - teiid-8.1.0.Alpha2-jdbc-jdk15.jar - java.lang.NoClassDefFoundError: java/sql/RowIdLifetime
- [TEIID-2090] - arraytable fails with a null array
- [TEIID-2094] - Projecting node issue
- [TEIID-2096] - Colons need to be escaped
- [TEIID-2098] - Caching does not interact well with Statement.setMaxRows
- [TEIID-2106] - Getting NullPointer Exception from VDBMetadataParser.marshell() with Teiid 8.0
- [TEIID-2107] - Key usage can convert an outer join into an inner join
- [TEIID-2108] - JDBC socket is not encrypting client messages by default
- [TEIID-2109] - Cannot use deployed WAR with HTTPBasic authentication
- [TEIID-2110] - Error in Documentation: CREATE TRIGGER
- [TEIID-2112] - consistent handling of local timezone on xsd:date, xsd:datetime, and xsd:time values that have no timezone specified.
- [TEIID-2115] - Designer VDB with WebService model failed to deploy
- [TEIID-2120] - BatchIterator can prematurely terminate
- [TEIID-2121] - Getting DuplicateServiceException while creating Dynamic VDB with Teiid 8.1.0 Beta2
- [TEIID-2127] - Regression in File translator
- [TEIID-2130] - DataNotFoundException inconsistency when used with engine
- [TEIID-2136] - All virtual entries on a physical model
- [TEIID-2143] - Cleanup DMR module descriptions
- [TEIID-2146] - Dependent join independent dup removal issue
- [TEIID-2147] - FileInputStreamFactory lobs may be inappropriately inlined
- [TEIID-2151] - Passthrough authentication is not working shows below exception
Enhancement
- [TEIID-1714] - Allow WS calls to set a timeout value
- [TEIID-2013] - Teiid with GSSAPI/kerberos authentication, remove need for jdbc clients to specify -Djava.security.krb5.realm and -Djava.security.krb5.kdc
- [TEIID-2029] - Allow defining multiple dependencies with "lib" property in the vdb.xml
- [TEIID-2032] - Add ability to add OPTIONS on Key types in DDL
- [TEIID-2036] - Use array comparison for dependent join using multiple attributes.
- [TEIID-2050] - Move the default login properties file to "configuration" directory
- [TEIID-2059] - Allow local connections to be used without load issues
- [TEIID-2061] - Allow for object type equality
- [TEIID-2062] - Produce an embeddable Teiid engine
- [TEIID-2077] - Caching improvements
- [TEIID-2078] - Minor metadata enhancements
- [TEIID-2091] - Improve transaction detection logic
- [TEIID-2092] - Allow for streaming processing of json
- [TEIID-2100] - Add support for typed getObject calls
- [TEIID-2102] - Update Quickstart so that the starting of server is specifically identified as a step
- [TEIID-2103] - Replace System VDB with DDL based metadata
- [TEIID-2105] - VDB Status issue with redeploys
- [TEIID-2114] - VDBMetaDataParser has no provision for designer vdb 'entries'
- [TEIID-2117] - Add support for blob/varbinary with xmltable
- [TEIID-2128] - MySQL 5.5 dropped support for SQL_TSI_FRAC_SECOND; now using non-standard MICROSECOND
- [TEIID-2135] - Provide Admin API wrapper based on given AS Controller Client connection
Feature Request
- [TEIID-1366] - Merge VDB action should provide way to persist the results
- [TEIID-1598] - translator scoped result set caching
- [TEIID-1989] - Interval counter
- [TEIID-1993] - Pushdown GROUP BY/DISTINCT over unions in more situations
- [TEIID-2011] - Develope a JPA Translator
- [TEIID-2030] - Enable the availablity of VDB classloader in the ExecutionContext/CommandContext
- [TEIID-2080] - Have teiid support a native postgresql client optional parameter, min_messages
- [TEIID-2083] - Provide a Admin method to read the metadata of a VDB
- [TEIID-2089] - Issue with enhanced merge join
- [TEIID-2097] - issue with continuous queries and plans with final buffers
- [TEIID-2113] - Improve BNF documentation
- [TEIID-2126] - xmltype derserialization fails with jdk1.5 jar
Quality Risk
- [TEIID-1995] - Misleading error message
- [TEIID-2022] - Refine error codes and messages
- [TEIID-2043] - Dedug query plans can be too large
- [TEIID-2104] - Make it easier to detect failure during load
- [TEIID-2116] - Serialized datatype issue
- [TEIID-2144] - Improve error reporting with inherently updatable views
Task
- [TEIID-1814] - Document Use Cases for Teiid Integration with AS 7 Console
- [TEIID-2073] - Move warning handling onto CommandContext
The Teiid community project is hosted on jboss.org.
Documentation and help may be obtained from the local distribution under teiid-docs or the following locations.
Teiid is licensed under the LGPL. The
license texts for Teiid and the thirdparty components it uses may be found in the teiid-docs/licenses
directory of the distribution.
JBoss, a division of Red
Hat, is in the business of
providing
superior technical support to our customers. Our goal is to make
Professional Open Source™ the SAFE
CHOICE
for you. We accomplish this by backing up our open source Java products
with technical support services that are delivered by the core
developers themselves. We can help you to train your staff and provide
you with support at every stage of the application lifecycle - from
development and integration through deployment and maintenance. Visit
the JBoss
Services page for more
information.