Skip to main content

Teiid 7.4 Final Released

We are pleased to announce Teiid 7.4 is now available.  Highlights of 7.4 features:
  • Virtual procedure out params - virtual procedures can now have RETURN/OUT/INOUT parameters to return values.
  • OLAP - OLAP translator is now part of the Teiid kit using OLAP4J
  • Multi-source procedures - multi-source handling was expanded to cover stored procedure execution. See the Reference for more.
  • Function Support - additional system functions were made available.
    • uuid was added to generate type 4 UUIDs and the Hibernate dialect was updated to support the GUIDGenerator.
    • array_get was added to extract values from java.sql.Array or java array values.
    • array_length was added to get the length of java.sql.Array or java array values.
  • ARRAYTABLE - the ARRAYTABLE table function was added to simplify array value extraction into a tabular format.
  • Ingres - Ingres database translator is now available to use as supported source under Teiid.
  • Optional Join Enhancements - the optional join hint no longer requires the use of ANSI joins and can will not remove optional bridging tables that are used by two other tables that are required.
  • InterSystems Cache - InterSystems Cache database translator is now available to use as supported source under Teiid.
  • userRequestSourceConcurrency - was added to control the number of concurrent source queries allowed for each user request.
  • Memory Management Improvements - maxReserveBatchColumns and maxProcessingBatchesColumns will by default be determined automatically and will more reliably prevent memory issues. See the admin guide for more.
  • Subquery optimization control - added the MJ and NO_UNNEST hints and the org.teiid.subqueryUnnestDefault system property to control the optimization of subqueries to traditional joins or to a merge join implementation of a semijoin or antijoin.
  • Local connection threads - local connection calling threads will be used to process work rather than using an engine thread. This helps decouple the configuration of maxThreads.
  • Dependent Join Improvements - several major improvements were made to increase performance and develop better plans.
    • Improved Planning - the decision to create a dependent join is now considered earlier in planning and is much more effective for dependent joins involving multiple unrelated independent tables.
    • IN predicate splitting - the planner can now split large dependent IN predicates into multiple IN predicates, which is controlled by the translator property MaxDepdendentInPredicates. This allows for much larger dependent joins to be performed as a single query.
    • Dependent query parallelization - when multiple dependent queries are still required, then they will be run in parallel (up to MaxUserSourceRequestConcurrency), rather than sequentially.
    • Cost based back-off - for cost based dependent joins if the number of independent values is too large, then the join will be performed as normal.
  • Enhanced Sort Join - the partitioned merge join was replaced with an enhanced sort join. The enhanced sort join will use the actual row counts from each side of the relation to perform a index based join if one side is small enough, a partial sort of the larger side and a repeated merge join if the tuples are unbalanced but one side is not small enough to form an index, or a standard sort merge join if the tuples are balanced.
  • JDK1.5 JDBC Client JAR - A retro-translated Teiid client JDBC jar now available to use with JDK 1.5 VM. Note only the JDBC API is supported, not the Admin API, or retrieving query plans as XML.
  • Security Improvements - UDF and pushdown functions can now be protected with data roles. Also the CommandContext can provide the Subject for custom security checks in UDFs.
  • Cache Invalidation - Prepared plan and result set caches have will invalidate entries based upon metadata and data changes respectively. See the cache configuration maxStaleness setting and the Admin and Developer Guides for more.
  • Runtime Updates of Metadata - ALTER statements have been added to change view/procedure/INSTEAD OF trigger (update procedure) definitions. A CREATE TRIGGER statement is also available to add an INSTEAD OF trigger (update procedures) to views. System procedures were added to set extension metadata and stat values. By default all effects of metadata updates happen only on running vdbs across the cluster. To make the changes persistent see the Developers Guide Runtime Updates section.
There were numerous issues addressed as well.  See the release notes for more details.  Download today, give it try, and vote for or log features you want in upcoming releases.

The Teiid Team

Comments

Popular posts from this blog

Teiid 8.11 Beta1 and 8.10.1 Released

Teiid 8.11 Beta1 is now available from the  downloads  and maven.  Feature highlights since Alpha2 include: TEIID-3434 More caching control over ttls in the result set cache down to the schema/table level. TEIID-3412 MS Access support via the UCanAccess driver. The UCanAccess support is necessary for those running on Java 1.8 as the JDBC ODBC bridge has been removed from the JRE. The waiting continues on EAP 6.4 Alpha1 - it still should be available shortly and should be the platform target for Teiid 8.11 Beta2. Of course, let us know if you find any issues with these early releases.  There's still plenty of time to get fixes into the final release. Teiid 8.10.1 is also available.  It addresses 5 important issues discovered since 8.10 was released: [ TEIID-3409 ] - PostgreSQLExecutionFactory TranslatorProperty annotation in wrong place [ TEIID-3437 ] - Inconsistencies with row count handling [ TEIID-3438 ] - Null value returned from BlobImpl

Tech Tip: Teiid SQL Language MAKEDEP Hint Explained

In this article I will explain what a MAKEDEP hint is, how and when, why it should be used in Teiid. What: MAKEDEP is query hint.  When a query hint is defined in the SQL query it influences the Teiid query planner to optimize the query in a way that is driven by the user. MAKEDEP means "make this as a dependent join". What is a Dependent Join? For example if we have query like: SELECT * FROM X INNER JOIN Y ON X.PK = Y.FK Where the data for X, and Y are coming from two different sources like Oracle and WebService in Teiid, so in relational algebra you can represent above query as Here the result tuples from node X and node Y are being simultaneously fetched by Teiid query engine, then it joins the both the results inside Teiid engine based on the specified X.PK = Y.PK condition and returns the filtered resulted to the user. simple.. Now, what if, if X table has 5 rows and Y table has 100K rows? In order to do the JOIN naively Teiid need sto read all the 5

Teiid Spring Boot 1.7.0 Released

Teiid Spring Boot version 1.7.0 to support Teiid 16.0 has been released. This release is mainly to support the Teiid's latest version.  In this release, the support for OpenAPI code generation based on VDB has been removed as there is no community interest and moreover it was at OpenAPI 2.0, and the industry has moved to 3.0 and beyond. There are no plans to further pursue this feature. VDB maven plugin was also removed, which was intended to be a replacement for the VDB importing feature was to be used when working on OpenShift, however, since it requires the Maven repository and does not completely represent the feature as defined on the WildFly based deployments this is also removed. You can still use the VDB import feature with Teiid Spring Boot, simply define the VDB with your "IMPORT DATABASE" statements and provide the additional files along with the main VDB file. During the start of the application, Teiid Spring Boot will load all the necessary DDL files for the