Teiid 7.7.0.Final Release Notes
Teiid 7.7.0.Final adds performance and integration features.
Overview
Highlights
- Excel JDBC Translator - for use with Excel using the JDBC-ODBC bridge.
- Salesforce Aggregates - salesforce pushdown queries now support GROUP BY, HAVING, and the standard aggregate functions.
- Comparable LOBs - the system property org.teiid.comparableLobs can be set to use CLOB and BLOB values in comparison/sorting/grouping operations.
- Padded String Comparison - the system property org.teiid.padSpace can be set to effectively right pad strings to the same length for comparison.
- TRANSLATE/HAS CRITERIA has been deprecated. INSTEAD OF trigger actions should be used instead.
- 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 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 inlineLobs 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.
from 6.2
- The connector API has changed substantially. Custom connectors need to be retargeted to the new Translator API. See TEIID-1003 and the Developer's Guide for more information.
- Connector bindings are no longer valid. Use the Designer Tooling or see the AdminShell download for a migration utility.
- Calling out to web services and xml processing has been dramatically simplified and improved, but is a breaking change from prior releases.
XML/Relational processing has been replaced by XMLTABLE, retrieving XML from file has been replaced by the File Translator/Resource Adapter, and
web service calls have been replaced by the WS Translator/Resource Adapter. See TEIID-1118, TEIID-1114, and the Reference guide for more information.
- The direct usage of XQuery has been replaced with the XMLQuery function.
- The text connector file processing has been replaced with the TEXTTABLE function. See TEIID-1102 and the Reference guide for more information
- Double quoted values are now parsed as identifiers by default. See TEIID-145 and the Reference guide for more information.
- The system information schema has changed from System to SYS. The tables and table structures have also changed. See TEIID-871 and the Reference guide for more information.
- Client control over query plans has changed. OPTION PLANONLY, DEBUG, and SHOWPLAN are no longer allowed. This behavior should not be controlled by the SET statement, SET SHOWPLAN (ON|OFF|DEBUG) and SET NOEXEC (ON|OFF). Usage of the client PlanNode class will also need to be updated.
- Teiid specific JDBC client interfaces and methods have changed. In general these custom features have mostly been moved to other more standard locations or been removed. See TEIID-1020 and the Client Developers guide for more information.
- Teiid's reserved words have changed. Many of the Teiid specific reserved words have become non-reserved words. All of SQL Foundation and SQL/MED 2003, and SQL/XML from SQL 2006 reserved words have been added as reserved words. It is generally required to double quote all reserved words. It is advisable to double quote all non-reserved words as well. The use of the INPUT qualifier for procedure inputs has been deprecated in favor of INPUTS. The use of the USING qualifier for dynamic SQL inputs has been deprecated in favor of DVARS.
- The AdminApi has been redesigned for use with the new Translator/JCA split and for deployment in JBoss AS.
- The AdminShell is based on Groovy. Most BeanShell syntax is also valid in Groovy, but there are extensive changes in the AdminAPI that may necessitate rewriting scripts.
- OPTION NO CACHE <table list> will now only by-pass cache for the given tables at their immediate view layer. Previously all caches would have transitively been skipped. See TEIID-900 for more information.
- Nan and +-Infinity are no longer allowed as numerical results by default. This may be changed via the system property org.teiid.allowNanInfinity.
- The scale of BigDecimal values is now adjusted to allow for more intuitive results. Conversion from floating numeric types will preserve the approximate scale and division results will allow for additional scale. See TEIID-159 for more information.
- The 7.0 client is not compatible with 6.x or vice versa. It is expected that 7.0 clients will be compatible with 7.x releases for standard JDBC operations.
See the Admin Guide for more on configuration and installation.
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 inlineLobs, memoryBufferSpace, memoryBufferOffHeap, and maxStorageObjectSize.
If you were explicitly setting the value for maxReserveKb, you should consider lowering that value to account for the memory buffer and/or explicitly set the memoryBufferSpace.
from 7.4
- 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.
from 6.2
- A JBoss AS instance is now required. Embedded mode is also currently not supported.
- Engine configuration is now handled through the admin console or deploy/teiid/teiid-jboss-beans.xml
- Logging is now done through the container's log4j instance. Any Teiid specific logging changes, see the conf/jboss-teiid-log4j.xml, need to be incorporated into the master jboss-log4j.xml.
- 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 userRequestSourceConcurrency=1). Usage of Teradata lobs under any other configuration is unlikely to work.
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.
From 6.2
- Start time is now significantly longer due to the container deployment. However many operations can be performed on configruation files that will trigger a redeployment without the need for a restart.
- Inversion of parse, format, and convert system functions is not used if it can be narrowing. In situations where a predicate has the form: parseTime(column, 'format') = {t 'time value'} may lead to reduced performance, since
the parseTime function cannot be pushed down. This should be addressed in future releases.
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.
From 6.2
- Netty was upgraded to 3.1.5
- Saxon was upgraded to 9.1.0.8
- A 5.1 container's version of Arjuna is newer than what was previously included in Teiid 6.x.
- Various other dependencies have been removed as they are no longer needed or now provided by the container.
Detailed Release Notes - Teiid - Version 7.7.0.Final
Bug
- [TEIID-1465] - Join between char and varchar
- [TEIID-1820] - like_regex only matches full string patterns
- [TEIID-1852] - Misc. Salesforce Translator Issues
- [TEIID-1863] - Default Salesforce URL in teiid-connector-salesforce.rar needs update to SF v22
- [TEIID-1864] - TIMESTAMPADD of SQL_TSI_FRAC_SECOND fails for Sybase 15 with JConnect 6.0.5 driver
- [TEIID-1867] - Duplicate metadata for multisource models
- [TEIID-1868] - Internal Materialized View - Load/Refresh and Assertion Failed
- [TEIID-1869] - Simple capabilities with PostgreSQL 8.3 using decodeinteger causes comm failure
- [TEIID-1870] - Querying random number from DB2 v97 does not push down to source
- [TEIID-1871] - Teiid is handling MySQL5.0 returning DAYNAME as a blob
- [TEIID-1872] - Implicit temp table creation fails with insert and explicit columns
- [TEIID-1873] - Security documentation does not provide adequate information to integrate additional domains for authentication
- [TEIID-1876] - Netezza translator using INTNNOT when it should use INT4NOT
- [TEIID-1878] - Problem with accessing custom generated materialized views
- [TEIID-1879] - Teradata Query Testing - Unhandled exception causing SOCKET CLOSED condition
- [TEIID-1882] - EOFException with 7.6 client against a 7.4 server
- [TEIID-1883] - Query timeout is superceded by synch ttl
- [TEIID-1884] - COMMAND Logging incorrectly reporting END USER COMMAND record count in EDS for forward only resultsets
- [TEIID-1893] - TeiidException when executing SELECT subquery with more than 2 UNIONs
- [TEIID-1895] - Properly escape the column references for Excel based data
- [TEIID-1896] - incorrect xml generated from jsontoxml with nested arrays
- [TEIID-1899] - Getting Assertion when running Inner Merge Join query with SELECT COUNT(*) on top
- [TEIID-1904] - Prepared statement for SOURCE_NAME in multi-source mode throws exception Message:Unable to evaluate
- [TEIID-1907] - SQLStringVisitor should create call visitNode on Select
- [TEIID-1912] - large dependent join query produces IOException against PostgreSQL database
- [TEIID-1915] - XMLTableNode streaming processing can hang
- [TEIID-1920] - Dynamic sql using a non-literal requires a keyword
- [TEIID-1921] - Error with embedded Teiid DataSource and transactions
- [TEIID-1922] - BaseDelegateTranslator's start method is being called before the delegate execution factory is set.
- [TEIID-1927] - BLOB/CLOB errors while using teiid 7.6 JDBC
- [TEIID-1929] - inline view support implies column/table alias support
- [TEIID-1931] - buffer setting maxStorageObjectSize is not factored into maxMemoryBlocks
- [TEIID-1933] - 0 size CLOBs in teiid cause unexpected problems
- [TEIID-1934] - Problem connecting to Teiid 7.7 Beta1
- [TEIID-1935] - TransformationMetadata.getXMLSchemas relative paths fail on windows
- [TEIID-1938] - inline lob setting is ignored
- [TEIID-1939] - MultiSource metadata error with TempMetadataIDs
- [TEIID-1946] - After changing model to replace primary key with a unique key, the deployment of the vdb errors saying PrimaryKey does not exist
- [TEIID-1949] - AssertionError with Teiid order by over pushed group by
- [TEIID-1951] - CommandLogging is refers to the old MMx connectorBindingName, when it should refer to it a translator
Enhancement
- [TEIID-1903] - Additional aggregates and grouping should be supported by salesforce
- [TEIID-1932] - Add comparable lob logic to 7.7
- [TEIID-1936] - Make it straight-forward for translators to cache their metadata
Quality Risk
- [TEIID-1829] - Clarify source warnings
- [TEIID-1874] - Add metadata validation for dynamic vdb imported metadata
- [TEIID-1908] - Add standard type names to DatabaseMetadata.getTypeInfo
Task
- [TEIID-1862] - add regression test for nested selects using UNION ALL and multiple aliases of the same column.
- [TEIID-1902] - Update extension metadata property keys
- [TEIID-1926] - Add optional teiid through-put performance tests
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.