EAI Siebel Adapter and Siebel UI may crash or syntax error when search expression contains excessive number of "OR" / "AND" conditions (Doc ID 1311972.1)

Last updated on MARCH 02, 2017

Applies to:

Siebel CRM - Version 7.5.2 [16008] and later
Information in this document applies to any platform.

Symptoms

In Siebel  CRM: If an integration solution, invokes the "Query" method of the "EAI Siebel Adapter" Business Service and provide the "SearchSpec" parameter with expression that includes many (for example example of 192+) "or/and" conditions, then the expression syntax error will be thrown by Business Component API:

TEST-CASE-1(EAI Query): This can be reproduced in BS-Simulator View of Siebel Client, invoking the EAI Siebel Adapter Query with the following input parameters:
  OutputIntObjectName=Internal Account Interface
  SearchSpec= [Account.Id]="1-001"  or [Account.Id]="1-002" ... or [Account.Id]="1-192"
The error will be seen in the popup window and the Siebel Application log will contain following details:

...
ObjMgrBusServiceLog InvokeMethod 4 ... Begin: Business Service 'EAI Siebel Adapter' invoke method: 'Query' ....
...
ObjMgrBusServiceLog InvokeMethod 4 ... Business Service 'EAI Query Spec Service' invoke method 'QuerySpecToSiebelMsg' Execute Time: ...
ObjMgrBusServiceLog InvokeMethod 4 ... End: Business Service 'EAI Query Spec Service' invoke method: 'QuerySpecToSiebelMsg' ...
...
ObjMgrSqlObjLog Search 5 0 ... Begin: SetSearchSpec for SqlObj 'Account' at 1275ef98, Search Spec: '((( ... ([Id] = '1-001') OR ([Id] = '1-002')) OR  ... ([Id] = '1-192'))'

ObjMgrQueryLog Warning 2 0 ... (query.cpp (2486)) SBL-DAT-00501: Invalid search specification '((( ... ([Id] = '1-001') OR ([Id] = '1-002')) OR ... OR ([Id] = '1-192')).
Please continue or ask your systems administrator to check your application configuration if the problem persists.
...
ObjMgrLog Error 1 0 ... (adptutils.cpp (5573)) SBL-EAI-04376: Method 'SetSearchSpec' of business component 'Account' (integration component 'Account') returned the following error:
"Invalid search specification
'((((( ... ([Id] = '1-001') OR ([Id] = '1-002')) OR ... OR ([Id] = '1-192'))'.
...



TEST-CASE-2 (UI Query): Similar error could be reproduced in Siebel UI, when one makes following query in any list applet (example: Account List Applet):

(((... ([Id] = '1-001') OR ([Id] = '1-002')) OR ... OR  ([Id] = '1-192'))


The error in this case will be:

SBL-DAT-00403: ... an invalid character in the field 'Id'. Missing quotes around search criteria or unnecessary punctuation will often cause an error.




TEST-CASE-3 (UI/EAI CRASH): The following Application process CRASH because of stack corruption can be expected, if  the excessive query is provided without nested "(", ")" braces.

.[Id] = '1-001'  OR  [Id] = '1-002'  OR ... OR [Id] = '1-192'


The sample call stack entries will be (examples of "pstack" output from OS Solaris):

 ----------------- lwp# ... / thread# ... --------------------
... __1cMCSSBinOpNodeODoBldQdDueryText6MrnISSstring_rpnPCSSBindVarArray_iiHiipk1_I_ ...
... __1cMCSSQdDueryNodeMBldQdDueryText6MrnISSstring_rpnPCSSBindVarArray_iiHiipk1_I_ ...
... __1cMCSSBinOpNodeODoBldQdDueryText6MrnISSstring_rpnPCSSBindVarArray_iiHiipk1_I_ ...
... __1cMCSSQdDueryNodeMBldQdDueryText6MrnISSstring_rpnPCSSBindVarArray_iiHiipk1_I_ ...
...
... __1cMCSSQdDueryNodeMBldQdDueryText6MrnISSstring_rpnPCSSBindVarArray_iiHiipk1_I_ ...
... __1cMCSSBinOpNodeODoBldQdDueryText6MrnISSstring_rpnPCSSBindVarArray_iiHiipk1_I_ ...
... __1cICSSQdDueryLGetPhysText6MrnISSstring_rpnPCSSBindVarArray_ipnLCSSSqlField__I_ ...
... __1cJCSSSqlObjRAddSqlWhereClause6MrnISSstring_rpnPCSSBindVarArray__I_ ...
... __1cJCSSSqlObjLAddSqlParts6MirnISSstring_2222rpnPCSSBindVarArray_555_I_ ...
... __1cJCSSSqlObjHExecute6Miii_I_ ...
... __1cKCSSBusCompKSqlExecute6Miii_I_ ...
... __1cJCSSBCBaseKSqlExecute6Miii_I_ ...
... __1cTCSSBCServiceRequestKSqlExecute6Miii_I_ ...
... __1cKCSSBusCompHExecute6Miii_I_ ...
...





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