FIX: Data type conversion error due to late evaluation of a filter predicate in a query involving a column store index in SQL Server 2016

Symptoms

You use a database with the compatibility level set to 130 in Microsoft SQL Server 2016.

You execute a query that accesses a column store index and a row store index or a heap, and includes a filter predicate (WHERE clause).

In this scenario, SQL Server will not be able to push the filter predicate closer to the data source operator (table or index scan or seek). This may cause suboptimal query performance.

In addition, if the query uses an expression (such as type conversion) where its correctness depends on filtered data (for example, a char table column is converted to int, but only a subset of values contain a valid int representation, and this subset is identified by the filter predicate), then the query may fail with a data conversion error that resembles one of the following:

Resolution

Note You must enable query optimizer hotfixes in order for this fix to take effect.

You can enable the query optimizer hotfixes by using one of the following options: trace flag 4199, Database Scoped Configuration setting QUERY_OPTIMIZER_HOTFIXES=ON (available in SQL Server 2016 and later), or USE_HINT query option 'ENABLE_QUERY_OPTIMIZER_HOTFIXES' (available in SQL Server 2016 SP1 and later).

Each new cumulative update for SQL Server contains all the hotfixes and all the security fixes that were included with the previous cumulative update. Check out the latest cumulative updates for SQL Server: