home clear 64x64
en blue 200x116 de orange 200x116 info letter User
suche 36x36
Neueste VersionenFixList
11.1.0.7 FixList
10.5.0.9 FixList
10.1.0.6 FixList
9.8.0.5 FixList
9.7.0.11 FixList
9.5.0.10 FixList
9.1.0.12 FixList
Haben Sie Probleme? - Kontaktieren Sie uns.
Kostenlos registrieren anmeldung-x26
Kontaktformular kontakt-x26

DB2 - Problembeschreibung

Problem IC77827 Status: Geschlossen

LINQ EF QUERIES THAT USE CONTAINS, STARTSWITH OR ENDSWITH FUNCTIONS
GENERATE INVALID SQL FOR IDS ON .NET 4.0

Produkt:
DB2 CONNECT / DB2CONNCT / 970 - DB2
Problembeschreibung:
When Contains, StartsWith or EndsWith is used in the Where 
clause of LINQ query, the .NET 4.0 runtime converts it to LIKE 
expression.  Moreover, when a string variable, instead of a 
contant, is used as input to one of those functions, the 
generated LIKE expression contains an ESCAPE clause with the 
default escape character of '\'.  Since '\' is a constant 
expression, the EF providers' SQL Generator converts it to a 
CAST expression of CAST('\' as nvarchar(1)).  However, the IDS 
servers' ESCAPE clause doesn't support cast expressions, thus, a 
syntax error is generated for this SQL. 
From the customer perspective this means that while the 
folllwing LINQ query works fine: 
 
var plans = model.Plans.Where(p => 
p.plan.StartsWith("AND")).Select(p => 
new{p.plan,p.id}).ToList(); 
 
The same query that uses a variable instead of constant fails: 
 
var startsWith = "AND"; 
var plans = model.Plans.Where(p => 
p.plan.StartsWith(startsWith)).Select(p => 
new{p.plan,p.id}).ToList(); 
 
with the following error message:  "ERROR 42000 IBMIDS/UNIX64 A 
syntax error has occurred."
Problem-Zusammenfassung:
**************************************************************** 
* USERS AFFECTED:                                              * 
* .NET 4.0 applications using EF 4.0 against IDS server        * 
**************************************************************** 
* PROBLEM DESCRIPTION:                                         * 
* When Contains, StartsWith or EndsWith is used in the Where   * 
*                                                              * 
* clause of LINQ query, the .NET 4.0 runtime converts it to    * 
* LIKE                                                         * 
* expression.  Moreover, when a string variable, instead of a  * 
*                                                              * 
* contant, is used as input to one of those functions, the     * 
*                                                              * 
* generated LIKE expression contains an ESCAPE clause with the * 
*                                                              * 
* default escape character of '\'.  Since '\' is a constant    * 
*                                                              * 
* expression, the EF providers' SQL Generator converts it to a * 
*                                                              * 
* CAST expression of CAST('\' as nvarchar(1)).  However, the   * 
* IDS                                                          * 
* servers' ESCAPE clause doesn't support cast expressions,     * 
* thus, a                                                      * 
* syntax error is generated for this SQL.                      * 
*                                                              * 
* From the customer perspective this means that while the      * 
*                                                              * 
* folllwing LINQ query works fine:                             * 
*                                                              * 
*                                                              * 
*                                                              * 
* var plans = model.Plans.Where(p =>                           * 
*                                                              * 
* p.plan.StartsWith("AND")).Select(p =>                        * 
*                                                              * 
* new{p.plan,p.id}).ToList();                                  * 
*                                                              * 
*                                                              * 
*                                                              * 
* The same query that uses a variable instead of constant      * 
* fails:                                                       * 
*                                                              * 
*                                                              * 
* var startsWith = "AND";                                      * 
*                                                              * 
* var plans = model.Plans.Where(p =>                           * 
*                                                              * 
* p.plan.StartsWith(startsWith)).Select(p =>                   * 
*                                                              * 
* new{p.plan,p.id}).ToList();                                  * 
*                                                              * 
*                                                              * 
*                                                              * 
* with the following error message:  "ERROR 42000              * 
* IBMIDS/UNIX64 A                                              * 
* syntax error has occurred."                                  * 
**************************************************************** 
* RECOMMENDATION:                                              * 
* Upgrade the client to V9.7 FP5.                              * 
****************************************************************
Local-Fix:
verfügbare FixPacks:
DB2 Version 9.7 Fix Pack 5 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 6 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 7 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 8 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 9 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 9a for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 10 for Linux, UNIX, and Windows

Lösung
Workaround
keiner bekannt / siehe Local-Fix
Weitere Daten
Datum - Problem gemeldet    :
Datum - Problem geschlossen :
Datum - der letzten Änderung:
28.07.2011
07.12.2011
07.12.2011
Problem behoben ab folgender Versionen (IBM BugInfos)
9.7.FP5
Problem behoben lt. FixList in der Version
9.7.0.5 FixList