Dump in lnxneg() When Running Query (Doc ID 335707.1)

Last updated on JUNE 29, 2017

Applies to:

Oracle Server - Enterprise Edition - Version: 10.2.0.1
This problem can occur on any platform.

Symptoms

Core dump in lnxneg() when running query in 10.2 - the same query does not fail on 10.1.

The stack in the trace file shows:

... lnxneg evaneg evareo expepr qkesEval_Int qkesEvalPred kkoecp kkocptCheckPred kkoopred
kkoopred kkoopred kkoPred kkoqbc apakkoqb apaqbd apadrv opitca kksLoadChild kkslod kglobld
kglobpn kglpim kglpin kxsGetRuntimeLock kksfbc kkspsc0 kksParseCursor opiosq0 kpooprx kpoal8
opiodr ...

The query is built on a table (either explicitly or implicitly via a view) that has a CHECK constraint on a NUMBER column that is included in the WHERE clause. This CHECK constraint enforces a list of allowed values for the column, however the numbers in the list are not ordered and there is a mix of positive and negative values.

The following testcase demonstrates the problem:

SQL> CREATE TABLE FOO (
       ID         NUMBER,
       DATA       NUMBER,
       CONSTRAINT FOO_DATA CHECK (DATA IN (0,1,-2))
     );

SQL> SELECT 1 FROM FOO WHERE DATA = 1;
Note that the list of values (0, 1, -2) is not sorted, and that the column on which the check constraint operates (DATA) is included in the WHERE clause of the query.

 

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms