From: Patrice G. <pa...@ma...> - 2007-04-27 14:55:25
|
The auto-bouncer of the wonder-list list is getting overzealous.. -P > The attached message has been automatically discarded. > From: "Grischa Steffin" <g.s...@gm...> > Date: April 27, 2007 3:17:30 AM PDT > To: <won...@li...> > Subject: ERXInQualifier does not create correct SQL when a single =20 > ERXInQualifier is wrapped in an EOOrQualifier > > > Hello there, > > > > I have a generic qualifier-builder that generates an array of =20 > ERXInQualifiers wrapped into one EOOrQualifier. > > In this case the SQL for the ERXInQualifier-Part is generated =20 > incorrectly as a KeyValue-Qualifier comparing with the array of =20 > values of the In-Qualifier. > > > > When I remove the following line from ERExtensions.java, the =20 > problem disappears. It seems as if Anjo has disabled it before and =20 > re-enabled it in Version 1.100: > > > > EOQualifierSQLGeneration.Support.setSupportForClass(new =20 > ERXInOrQualifierSupport(), EOOrQualifier._CLASS); > > > > > > Example (with simplified attribute and entity names): > > > > The toString()of the qualifier correctly displays the IN-Part of =20 > the ERXInQualifier. > > > > ((attr1 <> 'X') and ((attr2 =3D 'Y=92)) and ((attr3 =3D 'Z')) and =20 > ( <er.extensions.ERXInQualifier key: id > IN '(653521, 653526, =20 > 653591)')) > > > > But the actual generated SQL is incorrect for the =93id=94 attribute. > > > > SELECT DISTINCT t0.attr1, t0.attr2, t0.attr3 FROM SomeEntity t0 =20 > WHERE (t0.attr1 <> ? AND t0. attr2 =3D ? AND t0.attr3 =3D ? AND t0.id =20= > =3D ?) withBindings: 1:"X"(attr1), 2:"Y"(attr2), 3:"Z"(attr3), 4:=20 > (653521, 653526, 653591)(id)>: > > > > Apparently it generates > > =3D ? > > instead of > > IN (?,?,?) > > > > And throws: > > > > =93Next exception:SQL State:S1009 -- error code: 0 -- msg: =20 > Statement parameter 4 not set.=94 > > > > It seems ERXInOrQualifierSupport.sqlStringForSQLExpression seems to =20= > choose the wrong qualifier in this scenario (EOKeyValueQualifier). > > I didn=92t want to mess with that code as I don=92t know the general =20= > idea of it. I hope it can be generally fixed. Otherwise using =20 > ERXInOrQualifierSupport should be made optional with an application =20= > property. > > > > > > Best, > > > > Grischa > |