Here’s my branch that has the required plugin changes. I’ve done PostgresqlPlugIn and DB2PlugIn so far.
https://github.com/nekesto/wonder/tree/SQLExpression_aliasesByRelationshipPath <https://github.com/nekesto/wonder/tree/SQLExpression_aliasesByRelationshipPath> I’ll post my branch with the new ERXQualifierExistsSubquery and changes to ERXExistsQualifier later today, hopefully! Dave > On Apr 25, 2015, at 4:10 PM, David Avendasora <webobje...@avendasora.com> > wrote: > > See below. > > Sent from my iPhone > > On Apr 24, 2015, at 11:52 AM, Paul Hoadley <pa...@logicsquad.net > <mailto:pa...@logicsquad.net>> wrote: > >> Hi Dave, >> >> On 24 Apr 2015, at 7:07 pm, David Avendasora <webobje...@avendasora.com >> <mailto:webobje...@avendasora.com>> wrote: >> >>> I've found several edge cases where the exist qualifier doesn't work >>> because the SQL it generates is invalid - partly because the WebObjects >>> JDBCPlugIn class has a bug that simply sets the table alias to t0 no matter >>> what you do. >>> >>> But there's good news! I've rewritten the qualifier from the ground up and >>> determined the fix for the PlugIn that needs to be implemented in all the >>> JDBCPlugIn plugins. >>> >>> I believe it now works across any number relationships, including flattened >>> and compound PK tables - but it no longer has the option to use IN clause >>> instead of an EXISTS clause. >>> >>> I'll go back to the room and document it a bit better and then release it >>> into the wild. >> >> That sounds great Dave. Some questions: >> >> 1. Are you planning on committing an actual update to ERXExistsQualifier? >> That would certainly be what I'd like to see. I think Wonder has way too >> many deprecated classes (and methods) and class variants—you're not planning >> on adding ERXExistsQualifier2, are you? :-) > > Nope! I was thinking DaveExistsQualifier - I need the validation as I think > I'm the only Dave at wowodc this year! > >> 2. Assuming it's updating the existing class, will it be >> backwards-compatible? I make a reasonable amount of use of >> ERXExistsQualifier—will it just be a drop-in replacement? > > Short answer: > No. > > Long answer: > There are a couple weird things about ERXExistsQualifier: > 1) It can create SQL implementing either "exists" or "in" subqueries. > 2) There was already a pre-existing ERXQualifierInSubquery that also creates > SQL "in" subqueries, but ERXExistsQualifier's "in" subquery feature does not > use it. > > I actually named my qualifier ERXQualifierExistsSubquery as it is a peer of > ERXQualifierInSubquery. My plan is to deprecate ERXExistsQualifier as I think > the re-implementation of the "in" subquery functionality in > ERXExistsQualifier was well-intentioned, but ultimately a mistake. > >> 3. Can you (or anyone) comment on any downside to not being able to >> generate EXISTS-based SQL? (I never use it, just curious.) > > I'm not sure I understand what you are asking here... But I'd say that the > biggest issue is that while the qualifier works just fine to filter arrays of > EOs that are already in memory, it is completely unexpected that in certain > situations it generates either invalid (bad) or valid-but-incorrect (far > worse!) SQL when selecting out of the DB and you'll only find out about it at > runtime. > >> 4. You mention plugin updates being required—how much work will be involved >> there? Have you done any of it? Can we help? Will the changes to the >> plugins be isolated to using this qualifier? That is, is there any risk of >> breaking the plugins? (Personally I only care about PostgreSQL, but every >> plugin has some users.) > > The change is very simple and only risky if anybody depends on all SQL table > aliases being "t0" - which is entirely possible, but would likely be some > hack to work around exactly this issue. A quick review of each plugin for > "t0" Strings should identify any conflicting code. > > _______________________________________________ > Do not post admin requests to the list. They will be ignored. > Webobjects-dev mailing list (Webobjects-dev@lists.apple.com > <mailto:Webobjects-dev@lists.apple.com>) > Help/Unsubscribe/Update your Subscription: > https://lists.apple.com/mailman/options/webobjects-dev/webobjects%40avendasora.com > > <https://lists.apple.com/mailman/options/webobjects-dev/webobjects%40avendasora.com> > > This email sent to webobje...@avendasora.com > <mailto:webobje...@avendasora.com>
_______________________________________________ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com